summaryrefslogtreecommitdiffstats
path: root/konsole/konsole/konsole_part.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'konsole/konsole/konsole_part.cpp')
-rw-r--r--konsole/konsole/konsole_part.cpp89
1 files changed, 81 insertions, 8 deletions
diff --git a/konsole/konsole/konsole_part.cpp b/konsole/konsole/konsole_part.cpp
index 1c0067bb9..64fdfb700 100644
--- a/konsole/konsole/konsole_part.cpp
+++ b/konsole/konsole/konsole_part.cpp
@@ -78,10 +78,18 @@ konsoleFactory::~konsoleFactory()
KParts::Part *konsoleFactory::createPartObject(TQWidget *parentWidget, const char *widgetName,
TQObject *parent, const char *name, const char *classname,
- const TQStringList&)
+ const TQStringList &args)
{
// kdDebug(1211) << "konsoleFactory::createPart parentWidget=" << parentWidget << " parent=" << parent << endl;
- KParts::Part *obj = new konsolePart(parentWidget, widgetName, parent, name, classname);
+ KParts::Part *obj;
+ if (args.count() > 0)
+ {
+ obj = new konsolePart(parentWidget, widgetName, parent, name, classname, args[0]);
+ }
+ else
+ {
+ obj = new konsolePart(parentWidget, widgetName, parent, name, classname);
+ }
return obj;
}
@@ -97,7 +105,8 @@ TDEInstance *konsoleFactory::instance()
#define DEFAULT_HISTORY_SIZE 1000
-konsolePart::konsolePart(TQWidget *_parentWidget, const char *widgetName, TQObject *parent, const char *name, const char *classname)
+konsolePart::konsolePart(TQWidget *_parentWidget, const char *widgetName, TQObject *parent, const char *name,
+ const char *classname, const TQString &title)
: KParts::ReadOnlyPart(parent, name)
,te(0)
,se(0)
@@ -115,6 +124,7 @@ konsolePart::konsolePart(TQWidget *_parentWidget, const char *widgetName, TQObje
,m_signals(0)
,m_options(0)
,m_popupMenu(0)
+,s_title(title)
,b_useKonsoleSettings(false)
,b_autoDestroy(true)
,b_autoStartShell(true)
@@ -899,19 +909,24 @@ void konsolePart::slotSelectBell() {
void konsolePart::slotSetEncoding()
{
+ setEncoding(selectSetEncoding->currentText());
+ n_encoding = selectSetEncoding->currentItem();
+ se->setEncodingNo(selectSetEncoding->currentItem());
+}
+
+void konsolePart::setEncoding(const TQString &encoding)
+{
if (!se) return;
bool found;
- TQString enc = TDEGlobal::charsets()->encodingForName(selectSetEncoding->currentText());
+ TQString enc = TDEGlobal::charsets()->encodingForName(encoding);
TQTextCodec * qtc = TDEGlobal::charsets()->codecForName(enc, found);
if(!found)
{
- kdDebug() << "Codec " << selectSetEncoding->currentText() << " not found!" << endl;
+ kdDebug() << "Codec " << encoding << " not found!" << endl;
qtc = TQTextCodec::codecForLocale();
}
- n_encoding = selectSetEncoding->currentItem();
- se->setEncodingNo(selectSetEncoding->currentItem());
se->getEmulation()->setCodec(qtc);
}
@@ -1105,7 +1120,14 @@ bool konsolePart::setPtyFd( int master_pty )
void konsolePart::newSession()
{
if ( se ) delete se;
- se = new TESession(te, "xterm", parentWidget->winId());
+ if (!s_title.isEmpty())
+ {
+ se = new TESession(te, "xterm", parentWidget->winId(), s_title);
+ }
+ else
+ {
+ se = new TESession(te, "xterm", parentWidget->winId());
+ }
connect( se,TQT_SIGNAL(done(TESession*)),
this,TQT_SLOT(doneSession(TESession*)) );
connect( se,TQT_SIGNAL(openURLRequest(const TQString &)),
@@ -1120,6 +1142,14 @@ void konsolePart::newSession()
this, TQT_SIGNAL( receivedData( const TQString& ) ) );
connect( se, TQT_SIGNAL( forkedChild() ),
this, TQT_SIGNAL( forkedChild() ));
+ connect( se, TQT_SIGNAL(getSessionSchema(TESession*, TQString &)),
+ this, TQT_SLOT(slotGetSessionSchema(TESession*, TQString &)));
+ connect( se, TQT_SIGNAL(setSessionSchema(TESession*, const TQString &)),
+ this, TQT_SLOT(slotSetSessionSchema(TESession*, const TQString &)));
+ connect( se, TQT_SIGNAL(setSessionEncoding(TESession*, const TQString &)),
+ this, TQT_SLOT(slotSetSessionEncoding(TESession*, const TQString &)));
+ connect( se, TQT_SIGNAL(updateSessionKeytab(TESession *, const TQString &)),
+ this, TQT_SLOT(slotUpdateSessionKeytab(TESession *, const TQString &)));
// We ignore the following signals
//connect( se, TQT_SIGNAL(renameSession(TESession*,const TQString&)),
@@ -1168,4 +1198,47 @@ void konsolePart::sendInput( const TQString& text )
te->emitText( text );
}
+void konsolePart::slotGetSessionSchema(TESession *session, TQString &schema)
+{
+ int no = session->schemaNo();
+ ColorSchema* s = colors->find( no );
+ schema = s->relPath();
+}
+
+void konsolePart::slotSetSessionSchema(TESession *session, const TQString &schema)
+{
+ ColorSchema* s = colors->find( schema );
+ setSchema(s);
+}
+
+void konsolePart::slotSetSessionEncoding(TESession *session, const TQString &encoding)
+{
+ setEncoding(encoding);
+ const TQStringList &items = selectSetEncoding->items();
+ int index = items.findIndex(encoding);
+ if (index < 0)
+ {
+ TQString descriptiveEncoding = TDEGlobal::charsets()->descriptiveNameForEncoding(encoding.lower());
+ if (!descriptiveEncoding.isEmpty())
+ {
+ index = items.findIndex(descriptiveEncoding);
+ }
+ if (index < 0)
+ {
+ if (encoding == TQTextCodec::codecForLocale()->name())
+ {
+ index = 0;
+ }
+ }
+ }
+ selectSetEncoding->setCurrentItem(index);
+ n_encoding = index;
+ se->setEncodingNo(index);
+}
+
+void konsolePart::slotUpdateSessionKeytab(TESession *, const TQString &)
+{
+ updateKeytabMenu();
+}
+
#include "konsole_part.moc"