Download | Plain Text | Line Numbers
--- kdebase-3.5.10.orig/konsole/konsole/konsole.h 2007-10-08 11:51:33.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/konsole.h 2011-05-10 01:25:27.000000000 +0200
@@ -389,6 +389,7 @@
QString s_schema;
QString s_kconfigSchema;
QString s_word_seps; // characters that are considered part of a word
+ QString s_printer_path;
QString pmPath; // pixmap path
QString dropText;
QFont defaultFont;
--- kdebase-3.5.10.orig/konsole/konsole/konsole_part.h 2006-10-01 19:32:08.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/konsole_part.h 2011-05-10 01:26:23.000000000 +0200
@@ -172,6 +172,7 @@
QString s_schema;
QString s_kconfigSchema;
QString s_word_seps; // characters that are considered part of a word
+ QString s_printer_path; // characters that are considered part of a word
bool b_framevis:1;
bool b_histEnabled:1;
--- kdebase-3.5.10.orig/konsole/konsole/session.h 2006-10-01 19:32:08.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/session.h 2011-05-10 01:53:43.000000000 +0200
@@ -89,6 +89,7 @@
void setIconText(const QString& _iconText);
void setAddToUtmp(bool);
void setXonXoff(bool);
+ void setPrinterPath(const QString& _printer_path);
bool testAndSetStateIconName (const QString& newname);
bool sendSignal(int signal);
--- kdebase-3.5.10.orig/konsole/konsole/TEmulation.h 2006-10-01 19:32:08.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/TEmulation.h 2011-05-10 01:55:37.000000000 +0200
@@ -108,6 +108,7 @@
virtual void clearEntireScreen() =0;
virtual void reset() =0;
+ virtual void setPrinterPath(const QString &_printer_path) = 0;
protected:
--- kdebase-3.5.10.orig/konsole/konsole/TEmuVt102.h 2006-10-01 19:32:08.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/TEmuVt102.h 2011-05-10 14:28:16.000000000 +0200
@@ -24,6 +24,8 @@
#include "TEWidget.h"
#include "TEScreen.h"
#include "TEmulation.h"
+#include <kprocess.h>
+#include <qvaluelist.h>
#include <stdio.h>
//
@@ -73,10 +75,12 @@
void clearEntireScreen();
void reset();
+ void setPrinterPath(const QString &_printer_path);
void onRcvChar(int cc);
public slots:
void sendString(const char *);
+ void wroteStdin(KProcess *proc);
public:
@@ -135,12 +139,16 @@
void restoreCursor();
void resetCharset(int scrno);
void setMargins(int t, int b);
+ void doPrint();
CharCodes charset[2];
DECpar currParm;
DECpar saveParm;
bool holdScreen;
+ bool capture;
+ QString captured;
+ QString printer_path;
};
#endif // ifndef ANSIEMU_H
--- kdebase-3.5.10.orig/kcontrol/konsole/kcmkonsoledialog.ui 2005-09-10 10:25:12.000000000 +0200
+++ kdebase-3.5.10/kcontrol/konsole/kcmkonsoledialog.ui 2011-05-10 01:17:29.000000000 +0200
@@ -62,6 +62,43 @@
</size>
</property>
</spacer>
+ <widget class="QGroupBox" row="1" column="1">
+ <property name="name">
+ <cstring>GroupBox4</cstring>
+ </property>
+ <property name="title">
+ <string>xterm Print</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1_3</cstring>
+ </property>
+ <property name="text">
+ <string>Path to printer:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>printer_path</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="1" column="0">
+ <property name="name">
+ <cstring>printer_path</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </grid>
+ </widget>
<widget class="QGroupBox" row="1" column="0">
<property name="name">
<cstring>GroupBox3</cstring>
@@ -99,7 +136,7 @@
</widget>
</grid>
</widget>
- <widget class="QGroupBox" row="0" column="0">
+ <widget class="QGroupBox" row="0" column="0" colspan="2">
<property name="name">
<cstring>GroupBox2</cstring>
</property>
--- kdebase-3.5.10.orig/kcontrol/konsole/kcmkonsole.cpp 2005-09-10 10:25:12.000000000 +0200
+++ kdebase-3.5.10/kcontrol/konsole/kcmkonsole.cpp 2011-05-10 01:22:21.000000000 +0200
@@ -73,6 +73,7 @@
connect(dialog->matchTabWinTitleCB,SIGNAL(toggled(bool)), SLOT( changed() ));
connect(dialog->silence_secondsSB,SIGNAL(valueChanged(int)), SLOT( changed() ));
connect(dialog->word_connectorLE,SIGNAL(textChanged(const QString &)), SLOT( changed() ));
+ connect(dialog->printer_path,SIGNAL(textChanged(const QString &)), SLOT( changed() ));
connect(dialog->SchemaEditor1, SIGNAL(changed()), SLOT( changed() ));
connect(dialog->SessionEditor1, SIGNAL(changed()), SLOT( changed() ));
connect(dialog->SchemaEditor1, SIGNAL(schemaListChanged(const QStringList &,const QStringList &)),
@@ -106,6 +107,7 @@
dialog->line_spacingSB->setValue(config.readUnsignedNumEntry( "LineSpacing", 0 ));
dialog->silence_secondsSB->setValue(config.readUnsignedNumEntry( "SilenceSeconds", 10 ));
dialog->word_connectorLE->setText(config.readEntry("wordseps",":@-./_~"));
+ dialog->printer_path->setText(config.readEntry("printer_path",""));
dialog->SchemaEditor1->setSchema(config.readEntry("schema"));
@@ -144,6 +146,7 @@
config.writeEntry("LineSpacing" , dialog->line_spacingSB->value());
config.writeEntry("SilenceSeconds" , dialog->silence_secondsSB->value());
config.writeEntry("wordseps", dialog->word_connectorLE->text());
+ config.writeEntry("printer_path", dialog->printer_path->text());
config.writeEntry("schema", dialog->SchemaEditor1->schema());
--- kdebase-3.5.10.orig/kcontrol/konsole/kcmkonsole.cpp 2005-09-10 10:25:12.000000000 +0200
+++ kdebase-3.5.10/kcontrol/konsole/kcmkonsole.cpp 2011-05-10 01:22:21.000000000 +0200
@@ -73,6 +73,7 @@
connect(dialog->matchTabWinTitleCB,SIGNAL(toggled(bool)), SLOT( changed() ));
connect(dialog->silence_secondsSB,SIGNAL(valueChanged(int)), SLOT( changed() ));
connect(dialog->word_connectorLE,SIGNAL(textChanged(const QString &)), SLOT( changed() ));
+ connect(dialog->printer_path,SIGNAL(textChanged(const QString &)), SLOT( changed() ));
connect(dialog->SchemaEditor1, SIGNAL(changed()), SLOT( changed() ));
connect(dialog->SessionEditor1, SIGNAL(changed()), SLOT( changed() ));
connect(dialog->SchemaEditor1, SIGNAL(schemaListChanged(const QStringList &,const QStringList &)),
@@ -106,6 +107,7 @@
dialog->line_spacingSB->setValue(config.readUnsignedNumEntry( "LineSpacing", 0 ));
dialog->silence_secondsSB->setValue(config.readUnsignedNumEntry( "SilenceSeconds", 10 ));
dialog->word_connectorLE->setText(config.readEntry("wordseps",":@-./_~"));
+ dialog->printer_path->setText(config.readEntry("printer_path",""));
dialog->SchemaEditor1->setSchema(config.readEntry("schema"));
@@ -144,6 +146,7 @@
config.writeEntry("LineSpacing" , dialog->line_spacingSB->value());
config.writeEntry("SilenceSeconds" , dialog->silence_secondsSB->value());
config.writeEntry("wordseps", dialog->word_connectorLE->text());
+ config.writeEntry("printer_path", dialog->printer_path->text());
config.writeEntry("schema", dialog->SchemaEditor1->schema());
--- kdebase-3.5.10.orig/konsole/konsole/konsole.cpp 2007-01-15 12:32:17.000000000 +0100
+++ kdebase-3.5.10/konsole/konsole/konsole.cpp 2011-05-10 01:37:34.000000000 +0200
@@ -1573,6 +1573,7 @@
for (TESession *ses = sessions.first(); ses; ses = sessions.next())
ses->setMonitorSilenceSeconds(monitorSilenceSeconds);
+ s_printer_path = config->readEntry("printer_path","");
b_xonXoff = config->readBoolEntry("XonXoff",false);
b_matchTabWinTitle = config->readBoolEntry("MatchTabWinTitle",false);
config->setGroup("UTMP");
@@ -2924,6 +2925,7 @@
s->setIconName(icon);
s->setAddToUtmp(b_addToUtmp);
s->setXonXoff(b_xonXoff);
+ s->setPrinterPath(s_printer_path);
if (b_histEnabled && m_histSize)
s->setHistory(HistoryTypeBuffer(m_histSize));
--- kdebase-3.5.10.orig/konsole/konsole/konsole_part.cpp 2007-05-14 09:55:49.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/konsole_part.cpp 2011-05-10 01:37:53.000000000 +0200
@@ -522,6 +522,7 @@
else
se->setHistory( HistoryTypeNone() );
se->setKeymapNo( n_keytab );
+ se->setPrinterPath( s_printer_path );
// FIXME: Move this somewhere else...
KConfig* config = new KConfig("konsolerc",true);
@@ -566,6 +567,7 @@
n_scroll = QMIN(config->readUnsignedNumEntry("scrollbar",TEWidget::SCRRIGHT),2);
m_histSize = config->readNumEntry("history",DEFAULT_HISTORY_SIZE);
s_word_seps= config->readEntry("wordseps",":@-./_~");
+ s_printer_path = config->readEntry("s_printer_path","");
n_encoding = config->readNumEntry("encoding",0);
@@ -635,6 +637,7 @@
config->writeEntry("schema",s_kconfigSchema);
config->writeEntry("scrollbar",n_scroll);
config->writeEntry("wordseps",s_word_seps);
+ config->writeEntry("printer_path",s_printer_path);
config->writeEntry("encoding",n_encoding);
config->writeEntry("use_konsole_settings",m_useKonsoleSettings->isChecked());
}
--- kdebase-3.5.10.orig/konsole/konsole/session.cpp 2007-05-14 09:55:49.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/session.cpp 2011-05-10 01:54:04.000000000 +0200
@@ -595,6 +595,11 @@
xon_xoff = set;
}
+void TESession::setPrinterPath(const QString& _printer_path)
+{
+ em->setPrinterPath(_printer_path);
+}
+
void TESession::slotZModemDetected()
{
if (!zmodemBusy)
--- kdebase-3.5.10.orig/konsole/konsole/TEmuVt102.cpp 2006-10-01 19:32:08.000000000 +0200
+++ kdebase-3.5.10/konsole/konsole/TEmuVt102.cpp 2011-05-10 14:37:10.000000000 +0200
@@ -78,7 +78,8 @@
/*!
*/
-TEmuVt102::TEmuVt102(TEWidget* gui) : TEmulation(gui)
+TEmuVt102::TEmuVt102(TEWidget* gui) : TEmulation(gui),
+ capture(false)
{
//kdDebug(1211)<<"TEmuVt102 ctor() connecting"<<endl;
QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)),
@@ -146,6 +147,11 @@
//kdDebug(1211)<<"TEmuVt102::reset() done"<<endl;
}
+void TEmuVt102::setPrinterPath(const QString &_printer_path)
+{
+ printer_path = _printer_path;
+}
+
/* ------------------------------------------------------------------------- */
/* */
/* Processing the incoming byte stream */
@@ -443,6 +449,37 @@
}
#endif
+ if (token == TY_CSI_PS('i', 4))
+ capture = false;
+ if (capture)
+ {
+ switch(token)
+ {
+ case TY_CHR():
+ captured.append(p);
+ break;
+ case TY_CTL('H'):
+ if (captured.length() > 0)
+ captured.truncate(captured.length() - 1);
+ break;
+ case TY_CTL('I'):
+ captured.append('\t');
+ break;
+ case TY_CTL('J'):
+ captured.append('\n');
+ break;
+ case TY_CTL('K'):
+ captured.append('\n');
+ break;
+ case TY_CTL('L'):
+ captured.append('\n');
+ break;
+ default:
+ break;
+ }
+ return;
+ }
+
switch (token)
{
@@ -544,6 +581,13 @@
case TY_CSI_PS('h', 4) : scr-> setMode (MODE_Insert ); break;
case TY_CSI_PS('h', 20) : setMode (MODE_NewLine ); break;
case TY_CSI_PS('i', 0) : /* IGNORE: attached printer */ break; //VT100
+ case TY_CSI_PS('i', 5) :
+ captured.truncate(0);
+ capture = true;
+ break; //VT100
+ case TY_CSI_PS('i', 4) :
+ doPrint();
+ break; //VT100
case TY_CSI_PS('l', 4) : scr-> resetMode (MODE_Insert ); break;
case TY_CSI_PS('l', 20) : resetMode (MODE_NewLine ); break;
case TY_CSI_PS('s', 0) : saveCursor ( ); break;
@@ -1085,6 +1129,30 @@
screen[1]->setMargins(t, b);
}
+void TEmuVt102::doPrint()
+{
+ if (printer_path.isEmpty())
+ return;
+
+ KProcess *proc = new KProcess;
+ *proc << printer_path;
+ if (proc->start(KProcess::NotifyOnExit, (KProcess::Communication) (KProcess::Stdin)) == false)
+ {
+ qWarning("Unable to execute printer: %s\n", printer_path.latin1());
+ return;
+ }
+ connect(proc, SIGNAL(wroteStdin(KProcess *)), this, SLOT(wroteStdin(KProcess *)));
+ proc->writeStdin(captured.latin1(), captured.length());
+}
+
+void TEmuVt102::wroteStdin(KProcess *proc)
+{
+ proc->closeAll();
+ proc->wait();
+ delete proc;
+ captured.truncate(0);
+}
+
/*! Save the cursor position and the rendition attribute settings. */
void TEmuVt102::saveCursor()