diff options
Diffstat (limited to 'kcontrol/konsole/kcmkonsole.cpp')
-rw-r--r-- | kcontrol/konsole/kcmkonsole.cpp | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/kcontrol/konsole/kcmkonsole.cpp b/kcontrol/konsole/kcmkonsole.cpp new file mode 100644 index 000000000..e2b280dfa --- /dev/null +++ b/kcontrol/konsole/kcmkonsole.cpp @@ -0,0 +1,200 @@ +/*************************************************************************** + kcmkonsole.cpp - control module for konsole + ------------------- + begin : mar apr 17 16:44:59 CEST 2001 + copyright : (C) 2001 by Andrea Rizzi + email : [email protected] + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <tqcheckbox.h> +#include <tqlayout.h> +#include <tqstringlist.h> +#include <tqtabwidget.h> + +#include <dcopclient.h> + +#include <tdeaboutdata.h> +#include <tdeconfig.h> +#include <kdebug.h> +#include <tdefontdialog.h> +#include <kgenericfactory.h> +#include <tdemessagebox.h> + +#include "schemaeditor.h" +#include "sessioneditor.h" +#include "kcmkonsole.h" + +typedef KGenericFactory<KCMKonsole, TQWidget> ModuleFactory; +K_EXPORT_COMPONENT_FACTORY( kcm_konsole, ModuleFactory("kcmkonsole") ) + +KCMKonsole::KCMKonsole(TQWidget * parent, const char *name, const TQStringList&) +:TDECModule(ModuleFactory::instance(), parent, name) +{ + + setQuickHelp( i18n("<h1>Konsole</h1> With this module you can configure Konsole, the KDE terminal" + " application. You can configure the generic Konsole options (which can also be " + "configured using the RMB) and you can edit the schemas and sessions " + "available to Konsole.")); + + TQVBoxLayout *topLayout = new TQVBoxLayout(this); + dialog = new KCMKonsoleDialog(this); + dialog->line_spacingSB->setRange(0, 8, 1, false); + dialog->line_spacingSB->setSpecialValueText(i18n("normal line spacing", "Normal")); + dialog->show(); + topLayout->add(dialog); + load(); + + TDEAboutData *ab=new TDEAboutData( "kcmkonsole", I18N_NOOP("KCM Konsole"), + "0.2",I18N_NOOP("KControl module for Konsole configuration"), TDEAboutData::License_GPL, + "(c) 2001, Andrea Rizzi", 0, 0, "[email protected]"); + + ab->addAuthor("Andrea Rizzi",0, "[email protected]"); + setAboutData( ab ); + + connect(dialog->terminalSizeHintCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->warnCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->ctrldragCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->cutToBeginningOfLineCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->allowResizeCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->bidiCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->xonXoffCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->blinkingCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->frameCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->line_spacingSB,TQT_SIGNAL(valueChanged(int)), TQT_SLOT( changed() )); + connect(dialog->matchTabWinTitleCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->tabsCycleWheelCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->menuAcceleratorsCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->metaAsAltModeCB,TQT_SIGNAL(toggled(bool)), TQT_SLOT( changed() )); + connect(dialog->silence_secondsSB,TQT_SIGNAL(valueChanged(int)), TQT_SLOT( changed() )); + connect(dialog->word_connectorLE,TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT( changed() )); + connect(dialog->SchemaEditor1, TQT_SIGNAL(changed()), TQT_SLOT( changed() )); + connect(dialog->SessionEditor1, TQT_SIGNAL(changed()), TQT_SLOT( changed() )); + connect(dialog->SchemaEditor1, TQT_SIGNAL(schemaListChanged(const TQStringList &,const TQStringList &)), + dialog->SessionEditor1, TQT_SLOT(schemaListChanged(const TQStringList &,const TQStringList &))); + connect(dialog->SessionEditor1, TQT_SIGNAL(getList()), dialog->SchemaEditor1, TQT_SLOT(getList())); +} + +void KCMKonsole::load() +{ + load(false); +} + +void KCMKonsole::load(bool useDefaults) +{ + TDEConfig config("konsolerc", true); + config.setDesktopGroup(); + config.setReadDefaults(useDefaults); + + dialog->terminalSizeHintCB->setChecked(config.readBoolEntry("TerminalSizeHint",false)); + bidiOrig = config.readBoolEntry("EnableBidi",false); + dialog->bidiCB->setChecked(bidiOrig); + dialog->matchTabWinTitleCB->setChecked(config.readBoolEntry("MatchTabWinTitle",false)); + dialog->tabsCycleWheelCB->setChecked(config.readBoolEntry("TabsCycleWheel",true)); + dialog->menuAcceleratorsCB->setChecked(config.readBoolEntry("MenuAccelerators",false)); + dialog->warnCB->setChecked(config.readBoolEntry("WarnQuit",true)); + dialog->ctrldragCB->setChecked(config.readBoolEntry("CtrlDrag",true)); + dialog->cutToBeginningOfLineCB->setChecked(config.readBoolEntry("CutToBeginningOfLine",false)); + dialog->allowResizeCB->setChecked(config.readBoolEntry("AllowResize",false)); + xonXoffOrig = config.readBoolEntry("XonXoff",false); + dialog->xonXoffCB->setChecked(xonXoffOrig); + dialog->blinkingCB->setChecked(config.readBoolEntry("BlinkingCursor",false)); + dialog->frameCB->setChecked(config.readBoolEntry("has frame",true)); + dialog->line_spacingSB->setValue(config.readUnsignedNumEntry( "LineSpacing", 0 )); + dialog->silence_secondsSB->setValue(config.readUnsignedNumEntry( "SilenceSeconds", 10 )); + dialog->word_connectorLE->setText(config.readEntry("wordseps",":@-./_~")); + dialog->metaAsAltModeCB->setChecked(config.readBoolEntry("metaAsAltMode",false)); + + dialog->SchemaEditor1->setSchema(config.readEntry("schema")); + + emit changed(useDefaults); +} + +void KCMKonsole::save() +{ + if (dialog->SchemaEditor1->isModified()) + { + dialog->TabWidget2->showPage(dialog->tab_2); + dialog->SchemaEditor1->querySave(); + } + + if (dialog->SessionEditor1->isModified()) + { + dialog->TabWidget2->showPage(dialog->tab_3); + dialog->SessionEditor1->querySave(); + } + + TDEConfig config("konsolerc"); + config.setDesktopGroup(); + + config.writeEntry("TerminalSizeHint", dialog->terminalSizeHintCB->isChecked()); + bool bidiNew = dialog->bidiCB->isChecked(); + config.writeEntry("EnableBidi", bidiNew); + config.writeEntry("MatchTabWinTitle", dialog->matchTabWinTitleCB->isChecked()); + config.writeEntry("TabsCycleWheel", dialog->tabsCycleWheelCB->isChecked()); + config.writeEntry("MenuAccelerators", dialog->menuAcceleratorsCB->isChecked()); + config.writeEntry("WarnQuit", dialog->warnCB->isChecked()); + config.writeEntry("CtrlDrag", dialog->ctrldragCB->isChecked()); + config.writeEntry("CutToBeginningOfLine", dialog->cutToBeginningOfLineCB->isChecked()); + config.writeEntry("AllowResize", dialog->allowResizeCB->isChecked()); + bool xonXoffNew = dialog->xonXoffCB->isChecked(); + config.writeEntry("XonXoff", xonXoffNew); + config.writeEntry("BlinkingCursor", dialog->blinkingCB->isChecked()); + config.writeEntry("has frame", dialog->frameCB->isChecked()); + config.writeEntry("LineSpacing" , dialog->line_spacingSB->value()); + config.writeEntry("SilenceSeconds" , dialog->silence_secondsSB->value()); + config.writeEntry("wordseps", dialog->word_connectorLE->text()); + config.writeEntry("metaAsAltMode", dialog->metaAsAltModeCB->isChecked()); + + config.writeEntry("schema", dialog->SchemaEditor1->schema()); + + config.sync(); + + emit changed(false); + + DCOPClient *dcc = kapp->dcopClient(); + dcc->send("konsole-*", "konsole", "reparseConfiguration()", TQByteArray()); + dcc->send("kdesktop", "default", "configure()", TQByteArray()); + dcc->send("tdelauncher", "tdelauncher", "reparseConfiguration()", TQByteArray()); + + if (xonXoffOrig != xonXoffNew) + { + xonXoffOrig = xonXoffNew; + KMessageBox::information(this, i18n("The Ctrl+S/Ctrl+Q flow control setting will only affect " + "newly started Konsole sessions.\n" + "The 'stty' command can be used to change the flow control " + "settings of existing Konsole sessions.")); + } + + if (bidiNew && !bidiOrig) + { + KMessageBox::information(this, i18n("You have chosen to enable " + "bidirectional text rendering by " + "default.\n" + "Note that bidirectional text may " + "not always be shown correctly, " + "especially when selecting parts of " + "text written right-to-left. This " + "is a known issue which cannot be " + "resolved at the moment due to the " + "nature of text handling in " + "console-based applications.")); + } + bidiOrig = bidiNew; + +} + +void KCMKonsole::defaults() +{ + load(true); +} + +#include "kcmkonsole.moc" |