summaryrefslogtreecommitdiffstats
path: root/kcontrol/keys/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/keys/main.cpp')
-rw-r--r--kcontrol/keys/main.cpp220
1 files changed, 220 insertions, 0 deletions
diff --git a/kcontrol/keys/main.cpp b/kcontrol/keys/main.cpp
new file mode 100644
index 000000000..d002b667f
--- /dev/null
+++ b/kcontrol/keys/main.cpp
@@ -0,0 +1,220 @@
+/*
+ * main.cpp
+ *
+ * Copyright (c) 1999 Matthias Hoelzer-Kluepfel <[email protected]>
+ *
+ * Requires the Qt widget libraries, available at no cost at
+ * http://www.troll.no/
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqlayout.h>
+
+#include <kdebug.h>
+#include <tdelocale.h>
+#include <ksimpleconfig.h>
+
+#include "commandShortcuts.h"
+#include "main.h"
+#include "modifiers.h"
+#include "shortcuts.h"
+#include "khotkeys.h"
+
+/*
+| Shortcut Schemes | Modifier Keys |
+
+o Current scheme o New scheme o Pre-set scheme
+| TDE Traditional |v|| <Save Scheme...> <Remove Scheme>
+[] Prefer 4-modifier defaults
+
+o Current scheme
+o New scheme <Save Scheme>
+o Pre-set scheme <Remove Scheme>
+ | TDE Traditional |v||
+[] Prefer 4-modifier defaults
+
+Global Shortcuts
+*/
+KeyModule::KeyModule( TQWidget *parent, const char *name )
+: TDECModule( parent, name )
+{
+ setQuickHelp( i18n("<h1>Keyboard Shortcuts</h1> Using shortcuts you can configure certain actions to be"
+ " triggered when you press a key or a combination of keys, e.g. Ctrl+C is normally bound to"
+ " 'Copy'. TDE allows you to store more than one 'scheme' of shortcuts, so you might want"
+ " to experiment a little setting up your own scheme, although you can still change back to the"
+ " TDE defaults.<p> In the 'Global Shortcuts' tab you can configure non-application-specific"
+ " bindings, like how to switch desktops or maximize a window; in the 'Application Shortcuts' tab"
+ " you will find bindings typically used in applications, such as copy and paste."));
+
+ initGUI();
+}
+
+KeyModule::~KeyModule()
+{
+ KHotKeys::cleanup();
+}
+
+void KeyModule::initGUI()
+{
+ m_pTab = new TQTabWidget( this );
+ TQVBoxLayout *l = new TQVBoxLayout(this);
+ l->addWidget(m_pTab);
+
+ m_pShortcuts = new ShortcutsModule( this );
+ m_pTab->addTab( m_pShortcuts, i18n("Shortcut Schemes") );
+ connect( m_pShortcuts, TQT_SIGNAL(changed(bool)), TQT_SIGNAL(changed(bool)) );
+
+ m_pCommandShortcuts = new CommandShortcutsModule ( this );
+ m_pTab->addTab( m_pCommandShortcuts, i18n("Command Shortcuts") );
+ connect( m_pCommandShortcuts, TQT_SIGNAL(changed(bool)), TQT_SIGNAL(changed(bool)) );
+ connect( m_pTab, TQT_SIGNAL(currentChanged(TQWidget*)), m_pCommandShortcuts, TQT_SLOT(showing(TQWidget*)) );
+
+ m_pModifiers = new ModifiersModule( this );
+ m_pTab->addTab( m_pModifiers, i18n("Modifier Keys") );
+ connect( m_pModifiers, TQT_SIGNAL(changed(bool)), TQT_SIGNAL(changed(bool)) );
+}
+
+void KeyModule::load()
+{
+ load( false );
+}
+
+// Called when [Reset] is pressed
+void KeyModule::load( bool useDefaults )
+{
+ kdDebug(125) << "KeyModule::load()" << endl;
+ m_pShortcuts->load();
+ m_pCommandShortcuts->load();
+ m_pModifiers->load( useDefaults );
+
+ emit changed( useDefaults );
+}
+
+// When [Apply] or [OK] are clicked.
+void KeyModule::save()
+{
+ kdDebug(125) << "KeyModule::save()" << endl;
+ m_pShortcuts->save();
+ m_pCommandShortcuts->save();
+ m_pModifiers->save();
+}
+
+void KeyModule::defaults()
+{
+ kdDebug(125) << "KeyModule::defaults()" << endl;
+ m_pShortcuts->defaults();
+ m_pCommandShortcuts->defaults();
+ m_pModifiers->defaults();
+}
+
+void KeyModule::resizeEvent( TQResizeEvent * )
+{
+ m_pTab->setGeometry( 0, 0, width(), height() );
+}
+
+TQString KeyModule::handbookSection() const
+{
+ int index = m_pTab->currentPageIndex();
+ if (index == 0) {
+ return "key-bindings-intro";
+ }
+ else if (index == 1) {
+ return "key-bindings-shortcuts";
+ }
+ else if (index == 2) {
+ return "key-bindings-modifiers";
+ }
+ else {
+ return TQString::null;
+ }
+}
+
+//----------------------------------------------------
+
+extern "C"
+{
+ KDE_EXPORT TDECModule *create_keys(TQWidget *parent, const char * /*name*/)
+ {
+ // What does this do? Why not insert klipper and kxkb, too? --ellis, 2002/01/15
+ TDEGlobal::locale()->insertCatalogue("twin");
+ TDEGlobal::locale()->insertCatalogue("kdesktop");
+ TDEGlobal::locale()->insertCatalogue("kicker");
+ return new KeyModule(parent, "kcmkeys");
+ }
+
+ KDE_EXPORT void initModifiers()
+ {
+ kdDebug(125) << "KeyModule::initModifiers()" << endl;
+
+ TDEConfigGroupSaver cgs( TDEGlobal::config(), "Keyboard" );
+ bool bMacSwap = TDEGlobal::config()->readBoolEntry( "Mac Modifier Swap", false );
+ if( bMacSwap )
+ ModifiersModule::setupMacModifierKeys();
+ }
+
+ KDE_EXPORT void init_keys()
+ {
+ kdDebug(125) << "KeyModule::init()\n";
+
+ /*kdDebug(125) << "KKeyModule::init() - Initialize # Modifier Keys Settings\n";
+ TDEConfigGroupSaver cgs( TDEGlobal::config(), "Keyboard" );
+ TQString fourMods = TDEGlobal::config()->readEntry( "Use Four Modifier Keys", TDEAccel::keyboardHasMetaKey() ? "true" : "false" );
+ TDEAccel::useFourModifierKeys( fourMods == "true" );
+ bool bUseFourModifierKeys = TDEAccel::useFourModifierKeys();
+ TDEGlobal::config()->writeEntry( "User Four Modifier Keys", bUseFourModifierKeys ? "true" : "false", true, true );
+ */
+ TDEAccelActions* keys = new TDEAccelActions();
+
+ kdDebug(125) << "KeyModule::init() - Load Included Bindings\n";
+// this should match the included files above
+#define NOSLOTS
+#define SHIFT Qt::SHIFT
+#define CTRL Qt::CTRL
+#define ALT Qt::ALT
+#include "../../klipper/klipperbindings.cpp"
+#include "../../twin/twinbindings.cpp"
+#define KICKER_ALL_BINDINGS
+#include "../../kicker/kicker/core/kickerbindings.cpp"
+#include "../../kicker/taskbar/taskbarbindings.cpp"
+#include "../../kdesktop/kdesktopbindings.cpp"
+#include "../../kxkb/kxkbbindings.cpp"
+
+ // Write all the global keys to kdeglobals.
+ // This is needed to be able to check for conflicts with global keys in app's keyconfig
+ // dialogs, kdeglobals is empty as long as you don't apply any change in controlcenter/keys.
+ // However, avoid writing at every KDE startup, just update them after every rebuild of this file.
+ TDEConfigGroup group( TDEGlobal::config(), "Global Shortcuts" );
+ if( group.readEntry( "Defaults timestamp" ) != __DATE__ __TIME__ ) {
+ kdDebug(125) << "KeyModule::init() - Read Config Bindings\n";
+ // Check for old group,
+ if( TDEGlobal::config()->hasGroup( "Global Keys" ) ) {
+ keys->readActions( "Global Keys" );
+ TDEGlobal::config()->deleteGroup( "Global Keys", true, true );
+ }
+ keys->readActions( "Global Shortcuts" );
+ TDEGlobal::config()->deleteGroup( "Global Shortcuts", true, true );
+
+ kdDebug(125) << "KeyModule::init() - Write Config Bindings\n";
+ keys->writeActions( "Global Shortcuts", 0, true, true );
+ group.writeEntry( "Defaults timestamp", __DATE__ __TIME__, true, true );
+ }
+ delete keys;
+
+ initModifiers();
+ }
+}
+
+#include "main.moc"