diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-07 21:50:31 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-07 21:50:31 -0600 |
commit | e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf (patch) | |
tree | 95836fc22de909b3b20dbf3fc3dea230e5e58e3b /twin-styles/icewm/config | |
parent | a5355f151396be579eba5838c7d8d93a43362cd7 (diff) | |
download | tdeartwork-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.txt | 28 | ||||
-rw-r--r-- | twin-styles/icewm/config/Makefile.am | 16 | ||||
-rw-r--r-- | twin-styles/icewm/config/config.cpp | 271 | ||||
-rw-r--r-- | twin-styles/icewm/config/config.h | 77 |
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 |