summaryrefslogtreecommitdiffstats
path: root/twin-styles/icewm/config
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-07 21:50:31 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-07 21:50:31 -0600
commite35f3fe53cd8df85d4fd04e49dfffbaeac971cdf (patch)
tree95836fc22de909b3b20dbf3fc3dea230e5e58e3b /twin-styles/icewm/config
parenta5355f151396be579eba5838c7d8d93a43362cd7 (diff)
downloadtdeartwork-e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf.tar.gz
tdeartwork-e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf.zip
Rename kwin to twin (Part 2 of 2)
Diffstat (limited to 'twin-styles/icewm/config')
-rw-r--r--twin-styles/icewm/config/CMakeLists.txt28
-rw-r--r--twin-styles/icewm/config/Makefile.am16
-rw-r--r--twin-styles/icewm/config/config.cpp271
-rw-r--r--twin-styles/icewm/config/config.h77
4 files changed, 392 insertions, 0 deletions
diff --git a/twin-styles/icewm/config/CMakeLists.txt b/twin-styles/icewm/config/CMakeLists.txt
new file mode 100644
index 00000000..9e2e118d
--- /dev/null
+++ b/twin-styles/icewm/config/CMakeLists.txt
@@ -0,0 +1,28 @@
+#################################################
+#
+# (C) 2011 Golubev Alexander
+# fatzer2 (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+##### twin_icewm_config (module) ################
+
+tde_add_kpart( twin_icewm_config AUTOMOC
+ SOURCES config.cpp
+ LINK tdeui-shared kio-shared
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/icewm/config/Makefile.am b/twin-styles/icewm/config/Makefile.am
new file mode 100644
index 00000000..ca2d2552
--- /dev/null
+++ b/twin-styles/icewm/config/Makefile.am
@@ -0,0 +1,16 @@
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = twin_icewm_config.la
+
+twin_icewm_config_la_SOURCES = config.cpp
+twin_icewm_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin_icewm_config_la_LIBADD = $(LIB_TDEUI) $(LIB_KIO)
+
+METASOURCES = AUTO
+noinst_HEADERS = config.h
+
+lnkdir = $(kde_datadir)/twin/
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/icewm/config/config.cpp b/twin-styles/icewm/config/config.cpp
new file mode 100644
index 00000000..a0a2a8db
--- /dev/null
+++ b/twin-styles/icewm/config/config.cpp
@@ -0,0 +1,271 @@
+/*
+ * $Id$
+ *
+ * This file contains the IceWM configuration widget
+ *
+ * Copyright (c) 2001
+ * Karol Szwed <gallium@kde.org>
+ * http://gallium.n3.net/
+ *
+ * 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; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include <tqdir.h>
+#include <tqregexp.h>
+#include <tqvbox.h>
+#include <tqwhatsthis.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <kdialog.h>
+#include <kdirwatch.h>
+#include <kapplication.h>
+
+
+extern "C"
+{
+ KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
+ {
+ return(new IceWMConfig(conf, parent));
+ }
+}
+
+
+// NOTE:
+// ==========================================================================
+// 'conf' is a pointer to the twindecoration modules open twin config,
+// and is by default set to the "Style" group.
+//
+// 'parent' is the parent of the TQObject, which is a VBox inside the
+// Configure tab in twindecoration
+// ==========================================================================
+
+IceWMConfig::IceWMConfig( KConfig* conf, TQWidget* parent )
+ : TQObject( parent )
+{
+ icewmConfig = new KConfig("twinicewmrc");
+ KGlobal::locale()->insertCatalogue("twin_art_clients");
+
+ mainWidget = new TQVBox( parent );
+ mainWidget->setSpacing( KDialog::spacingHint() );
+
+ themeListBox = new TQListBox( mainWidget );
+ TQWhatsThis::add( themeListBox,
+ i18n("Make your IceWM selection by clicking on a theme here. ") );
+
+ cbThemeTitleTextColors = new TQCheckBox(
+ i18n("Use theme &title text colors"), mainWidget );
+
+ TQWhatsThis::add( cbThemeTitleTextColors,
+ i18n("When selected, titlebar colors will follow those set "
+ "in the IceWM theme. If not selected, the current KDE "
+ "titlebar colors will be used instead.") );
+
+ cbTitleBarOnTop = new TQCheckBox(
+ i18n("&Show title bar on top of windows"), mainWidget );
+
+ TQWhatsThis::add( cbTitleBarOnTop,
+ i18n("When selected, all window titlebars will be shown "
+ "at the top of each window, otherwise they will be "
+ "shown at the bottom.") );
+
+ cbShowMenuButtonIcon = new TQCheckBox(
+ i18n("&Menu button always shows application mini icon"), mainWidget );
+
+ TQWhatsThis::add( cbShowMenuButtonIcon,
+ i18n("When selected, all titlebar menu buttons will have "
+ "the application icon shown. If not selected, the current "
+ "theme's defaults are used instead.") );
+
+ urlLabel = new KURLLabel( mainWidget );
+ urlLabel->setText( i18n("Open KDE's IceWM theme folder") );
+
+ themeLabel = new TQLabel(
+ i18n("Clicking on the link above will cause a window to appear "
+ "showing the KDE IceWM theme folder. You can "
+ "add or remove native IceWM themes by "
+ "uncompressing <b>http://icewm.themes.org/</b> theme files "
+ "into this folder, or by creating folder symlinks to "
+ "existing IceWM themes on your system."), mainWidget );
+
+ // Load configuration options
+ load( conf );
+
+ // Ensure we track user changes properly
+ connect( themeListBox, TQT_SIGNAL(selectionChanged()),
+ this, TQT_SLOT(slotSelectionChanged()) );
+
+ connect( urlLabel, TQT_SIGNAL(leftClickedURL(const TQString&)),
+ this, TQT_SLOT(callURL(const TQString&)));
+
+ connect( cbThemeTitleTextColors, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(slotSelectionChanged()) );
+
+ connect( cbTitleBarOnTop, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(slotSelectionChanged()) );
+
+ connect( cbShowMenuButtonIcon, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(slotSelectionChanged()) );
+
+ // Create the theme directory (if not found) ... and obtain the path as we do so.
+ localThemeString = KGlobal::dirs()->saveLocation("data", "twin");
+ localThemeString += "/icewm-themes";
+ if (!TQFile::exists(localThemeString))
+ TQDir().mkdir(localThemeString);
+
+ // Watch the icewm theme directory for theme additions/removals
+ KDirWatch::self()->addDir(localThemeString);
+ connect( KDirWatch::self(), TQT_SIGNAL(dirty(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+ connect( KDirWatch::self(), TQT_SIGNAL(created(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+ connect( KDirWatch::self(), TQT_SIGNAL(deleted(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+
+ // Set the konqui link url
+ TQString urlThemeString = TQString("file://") + localThemeString;
+ urlThemeString.replace( TQRegExp("~"), "$HOME" );
+ urlLabel->setURL( urlThemeString );
+
+ // Make the widgets visible in twindecoration
+ mainWidget->show();
+
+ KDirWatch::self()->startScan();
+}
+
+
+IceWMConfig::~IceWMConfig()
+{
+ KDirWatch::self()->removeDir(localThemeString);
+ KDirWatch::self()->stopScan();
+ delete icewmConfig;
+ delete mainWidget;
+}
+
+
+// Searches for all installed IceWM themes, and adds them to the listBox.
+void IceWMConfig::findIceWMThemes()
+{
+ TQStringList dirList = KGlobal::dirs()->findDirs("data", "twin/icewm-themes");
+ TQStringList::ConstIterator it;
+
+ // Remove any old themes in the list (if any)
+ themeListBox->clear();
+ themeListBox->insertItem( i18n("Infadel #2 (default)") );
+
+ // Step through all twin/icewm-themes directories...
+ for( it = dirList.begin(); it != dirList.end(); it++)
+ {
+ // List all directory names only...
+ TQDir d(*it, TQString("*"), TQDir::Unsorted, TQDir::Dirs | TQDir::Readable );
+ if (d.exists())
+ {
+ TQFileInfoListIterator it2( *d.entryInfoList() );
+ TQFileInfo* finfo;
+
+ // Step through all directories within the twin/icewm-themes directory
+ while( (finfo = it2.current()) )
+ {
+ // Ignore . and .. directories
+ if ( (finfo->fileName() == ".") || (finfo->fileName() == "..") )
+ {
+ ++it2;
+ continue;
+ }
+
+ if ( !themeListBox->findItem( finfo->fileName()) )
+ themeListBox->insertItem( finfo->fileName() );
+
+ ++it2;
+ }
+ }
+ }
+
+ // Sort the items
+ themeListBox->sort();
+
+ // Select the currently used IceWM theme
+ TQString themeName = icewmConfig->readEntry("CurrentTheme");
+
+ // Provide a theme alias
+ if (themeName == "default")
+ themeName = "";
+
+ if (themeName.isEmpty())
+ themeListBox->setCurrentItem(
+ themeListBox->findItem( i18n("Infadel #2 (default)") ) );
+ else
+ themeListBox->setCurrentItem( themeListBox->findItem(themeName) );
+}
+
+
+void IceWMConfig::callURL( const TQString& s )
+{
+ kapp->invokeBrowser( s );
+}
+
+
+void IceWMConfig::slotSelectionChanged()
+{
+ emit changed();
+}
+
+
+// Loads the configurable options from the twinicewmrc config file
+void IceWMConfig::load( KConfig* )
+{
+ icewmConfig->setGroup("General");
+
+ bool override = icewmConfig->readBoolEntry( "ThemeTitleTextColors", true );
+ cbThemeTitleTextColors->setChecked( override );
+
+ override = icewmConfig->readBoolEntry( "TitleBarOnTop", true );
+ cbTitleBarOnTop->setChecked( override );
+
+ override = icewmConfig->readBoolEntry( "ShowMenuButtonIcon", false );
+ cbShowMenuButtonIcon->setChecked( override );
+
+ findIceWMThemes();
+}
+
+
+// Saves the configurable options to the twinicewmrc config file
+void IceWMConfig::save( KConfig* )
+{
+ icewmConfig->setGroup("General");
+ icewmConfig->writeEntry( "ThemeTitleTextColors", cbThemeTitleTextColors->isChecked() );
+ icewmConfig->writeEntry( "TitleBarOnTop", cbTitleBarOnTop->isChecked() );
+ icewmConfig->writeEntry( "ShowMenuButtonIcon", cbShowMenuButtonIcon->isChecked() );
+
+ if (themeListBox->currentText() == i18n("Infadel #2 (default)"))
+ icewmConfig->writeEntry("CurrentTheme", "default");
+ else
+ icewmConfig->writeEntry("CurrentTheme", themeListBox->currentText() );
+
+ icewmConfig->sync();
+}
+
+
+// Sets UI widget defaults which must correspond to config defaults
+void IceWMConfig::defaults()
+{
+ cbThemeTitleTextColors->setChecked( true );
+ cbTitleBarOnTop->setChecked( true );
+ cbShowMenuButtonIcon->setChecked( false );
+ themeListBox->setCurrentItem( themeListBox->findItem(i18n("Infadel #2 (default)")) );
+}
+
+#include "config.moc"
+// vim: ts=4
diff --git a/twin-styles/icewm/config/config.h b/twin-styles/icewm/config/config.h
new file mode 100644
index 00000000..c9c5b2d0
--- /dev/null
+++ b/twin-styles/icewm/config/config.h
@@ -0,0 +1,77 @@
+/*
+ * $Id$
+ *
+ * This file contains the IceWM configuration widget
+ *
+ * Copyright (c) 2001
+ * Karol Szwed <gallium@kde.org>
+ * http://gallium.n3.net/
+ *
+ * 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; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _ICEWMCONFIG_H
+#define _ICEWMCONFIG_H
+
+#include <tqwidget.h>
+#include <tqcheckbox.h>
+#include <tqgroupbox.h>
+#include <tqlistbox.h>
+#include <tqlabel.h>
+#include <kurllabel.h>
+#include <kconfig.h>
+
+class TQVBox;
+
+class IceWMConfig: public TQObject
+{
+ Q_OBJECT
+ TQ_OBJECT
+
+ public:
+ IceWMConfig( KConfig* conf, TQWidget* parent );
+ ~IceWMConfig();
+
+ // These public signals/slots work similar to KCM modules
+ signals:
+ void changed();
+
+ public slots:
+ void load( KConfig* conf );
+ void save( KConfig* conf );
+ void defaults();
+
+ protected slots:
+ void slotSelectionChanged(); // Internal use
+ void callURL( const TQString& s );
+ void findIceWMThemes();
+
+ private:
+ KConfig* icewmConfig;
+ TQCheckBox* cbThemeTitleTextColors;
+ TQCheckBox* cbTitleBarOnTop;
+ TQCheckBox* cbShowMenuButtonIcon;
+ TQListBox* themeListBox;
+ TQLabel* themeLabel;
+ KURLLabel* urlLabel;
+ TQString localThemeString;
+ TQVBox* mainWidget;
+};
+
+
+#endif
+// vim: ts=4