summaryrefslogtreecommitdiffstats
path: root/kwin/kcmkwin/kwinoptions/windows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kwin/kcmkwin/kwinoptions/windows.cpp')
-rw-r--r--kwin/kcmkwin/kwinoptions/windows.cpp1712
1 files changed, 0 insertions, 1712 deletions
diff --git a/kwin/kcmkwin/kwinoptions/windows.cpp b/kwin/kcmkwin/kwinoptions/windows.cpp
deleted file mode 100644
index 80185a427..000000000
--- a/kwin/kcmkwin/kwinoptions/windows.cpp
+++ /dev/null
@@ -1,1712 +0,0 @@
-/*
- * windows.cpp
- *
- * Copyright (c) 1997 Patrick Dowler dowler@morgul.fsh.uvic.ca
- * Copyright (c) 2001 Waldo Bastian bastian@kde.org
- *
- * 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 <config.h>
-
-#include <tqdir.h>
-#include <tqlayout.h>
-#include <tqslider.h>
-#include <tqwhatsthis.h>
-#include <tqvbuttongroup.h>
-#include <tqcheckbox.h>
-#include <tqradiobutton.h>
-#include <tqlabel.h>
-#include <tqcombobox.h>
-#include <kmessagebox.h>
-
-#include <kactivelabel.h>
-#include <klocale.h>
-#include <kcolorbutton.h>
-#include <kconfig.h>
-#include <knuminput.h>
-#include <kapplication.h>
-#include <kdialog.h>
-#include <dcopclient.h>
-#include <kglobal.h>
-#include <kprocess.h>
-#include <tqtabwidget.h>
-
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include "windows.h"
-
-
-// twin config keywords
-#define KWIN_FOCUS "FocusPolicy"
-#define KWIN_PLACEMENT "Placement"
-#define KWIN_MOVE "MoveMode"
-#define KWIN_MINIMIZE_ANIM "AnimateMinimize"
-#define KWIN_MINIMIZE_ANIM_SPEED "AnimateMinimizeSpeed"
-#define KWIN_RESIZE_OPAQUE "ResizeMode"
-#define KWIN_GEOMETRY "GeometryTip"
-#define KWIN_AUTORAISE_INTERVAL "AutoRaiseInterval"
-#define KWIN_AUTORAISE "AutoRaise"
-#define KWIN_DELAYFOCUS_INTERVAL "DelayFocusInterval"
-#define KWIN_DELAYFOCUS "DelayFocus"
-#define KWIN_CLICKRAISE "ClickRaise"
-#define KWIN_ANIMSHADE "AnimateShade"
-#define KWIN_MOVE_RESIZE_MAXIMIZED "MoveResizeMaximizedWindows"
-#define KWIN_ALTTABMODE "AltTabStyle"
-#define KWIN_TRAVERSE_ALL "TraverseAll"
-#define KWIN_SHOW_POPUP "ShowPopup"
-#define KWIN_ROLL_OVER_DESKTOPS "RollOverDesktops"
-#define KWIN_SHADEHOVER "ShadeHover"
-#define KWIN_SHADEHOVER_INTERVAL "ShadeHoverInterval"
-#define KWIN_FOCUS_STEALING "FocusStealingPreventionLevel"
-#define KWIN_HIDE_UTILITY "HideUtilityWindowsForInactive"
-#define KWIN_SEPARATE_SCREEN_FOCUS "SeparateScreenFocus"
-#define KWIN_ACTIVE_MOUSE_SCREEN "ActiveMouseScreen"
-
-// kwm config keywords
-#define KWM_ELECTRIC_BORDER "ElectricBorders"
-#define KWM_ELECTRIC_BORDER_DELAY "ElectricBorderDelay"
-
-//CT 15mar 98 - magics
-#define KWM_BRDR_SNAP_ZONE "BorderSnapZone"
-#define KWM_BRDR_SNAP_ZONE_DEFAULT 10
-#define KWM_WNDW_SNAP_ZONE "WindowSnapZone"
-#define KWM_WNDW_SNAP_ZONE_DEFAULT 10
-
-#define MAX_BRDR_SNAP 100
-#define MAX_WNDW_SNAP 100
-#define MAX_EDGE_RES 1000
-
-
-KFocusConfig::~KFocusConfig ()
-{
- if (standAlone)
- delete config;
-}
-
-// removed the LCD display over the slider - this is not good GUI design :) RNolden 051701
-KFocusConfig::KFocusConfig (bool _standAlone, KConfig *_config, TQWidget * parent, const char *)
- : KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
-{
- TQString wtstr;
- TQBoxLayout *lay = new TQVBoxLayout (this, 0, KDialog::spacingHint());
-
- //iTLabel = new TQLabel(i18n(" Allowed overlap:\n"
- // "(% of desktop space)"),
- // plcBox);
- //iTLabel->tqsetAlignment(AlignTop|AlignHCenter);
- //pLay->addWidget(iTLabel,1,1);
-
- //interactiveTrigger = new TQSpinBox(0, 500, 1, plcBox);
- //pLay->addWidget(interactiveTrigger,1,2);
-
- //pLay->addRowSpacing(2,KDialog::spacingHint());
-
- //lay->addWidget(plcBox);
-
- // focus policy
- fcsBox = new TQButtonGroup(i18n("Focus"),this);
- fcsBox->setColumnLayout( 0, Qt::Horizontal );
-
- TQBoxLayout *fLay = new TQVBoxLayout(fcsBox->tqlayout(),
- KDialog::spacingHint());
-
- TQBoxLayout *cLay = new TQHBoxLayout(fLay);
- TQLabel *fLabel = new TQLabel(i18n("&Policy:"), fcsBox);
- cLay->addWidget(fLabel, 0);
- focusCombo = new TQComboBox(false, fcsBox);
- focusCombo->insertItem(i18n("Click to Focus"), CLICK_TO_FOCUS);
- focusCombo->insertItem(i18n("Focus Follows Mouse"), FOCUS_FOLLOWS_MOUSE);
- focusCombo->insertItem(i18n("Focus Under Mouse"), FOCUS_UNDER_MOUSE);
- focusCombo->insertItem(i18n("Focus Strictly Under Mouse"), FOCUS_STRICTLY_UNDER_MOUSE);
- cLay->addWidget(focusCombo,1 ,Qt::AlignLeft);
- fLabel->setBuddy(focusCombo);
-
- // FIXME, when more policies have been added to KWin
- wtstr = i18n("The focus policy is used to determine the active window, i.e."
- " the window you can work in. <ul>"
- " <li><em>Click to focus:</em> A window becomes active when you click into it."
- " This is the behavior you might know from other operating systems.</li>"
- " <li><em>Focus follows mouse:</em> Moving the mouse pointer actively on to a"
- " normal window activates it. New windows will receive the focus,"
- " without you having to point the mouse at them explicitly."
- " Very practical if you are using the mouse a lot.</li>"
- " <li><em>Focus under mouse:</em> The window that happens to be under the"
- " mouse pointer is active. If the mouse points nowhere, the last window"
- " that was under the mouse has focus."
- " New windows will not automatically receive the focus.</li>"
- " <li><em>Focus strictly under mouse:</em> Only the window under the mouse pointer is"
- " active. If the mouse points nowhere, nothing has focus."
- " </ul>"
- "Note that 'Focus under mouse' and 'Focus strictly under mouse' prevent certain"
- " features such as the Alt+Tab walk through windows dialog in the KDE mode"
- " from working properly."
- );
- TQWhatsThis::add( focusCombo, wtstr);
- TQWhatsThis::add(fLabel, wtstr);
-
- connect(focusCombo, TQT_SIGNAL(activated(int)), this, TQT_SLOT(setAutoRaiseEnabled()) );
-
- // autoraise delay
- autoRaiseOn = new TQCheckBox(i18n("Auto &raise"), fcsBox);
- fLay->addWidget(autoRaiseOn);
- connect(autoRaiseOn,TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(autoRaiseOnTog(bool)));
-
- autoRaise = new KIntNumInput(500, fcsBox);
- autoRaise->setLabel(i18n("Dela&y:"), Qt::AlignVCenter|Qt::AlignLeft);
- autoRaise->setRange(0, 3000, 100, true);
- autoRaise->setSteps(100,100);
- autoRaise->setSuffix(i18n(" msec"));
- fLay->addWidget(autoRaise);
-
- connect(focusCombo, TQT_SIGNAL(activated(int)), this, TQT_SLOT(setDelayFocusEnabled()) );
-
- delayFocusOn = new TQCheckBox(i18n("Delay focus"), fcsBox);
- fLay->addWidget(delayFocusOn);
- connect(delayFocusOn,TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(delayFocusOnTog(bool)));
-
- delayFocus = new KIntNumInput(500, fcsBox);
- delayFocus->setLabel(i18n("Dela&y:"), Qt::AlignVCenter|Qt::AlignLeft);
- delayFocus->setRange(0, 3000, 100, true);
- delayFocus->setSteps(100,100);
- delayFocus->setSuffix(i18n(" msec"));
- fLay->addWidget(delayFocus);
-
- clickRaiseOn = new TQCheckBox(i18n("C&lick raise active window"), fcsBox);
- connect(clickRaiseOn,TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(clickRaiseOnTog(bool)));
- fLay->addWidget(clickRaiseOn);
-
-// fLay->addColSpacing(0,QMAX(autoRaiseOn->tqsizeHint().width(),
-// clickRaiseOn->tqsizeHint().width()) + 15);
-
- TQWhatsThis::add( autoRaiseOn, i18n("When this option is enabled, a window in the background will automatically"
- " come to the front when the mouse pointer has been over it for some time.") );
- wtstr = i18n("This is the delay after which the window that the mouse pointer is over will automatically"
- " come to the front.");
- TQWhatsThis::add( autoRaise, wtstr );
-
- TQWhatsThis::add( clickRaiseOn, i18n("When this option is enabled, the active window will be brought to the"
- " front when you click somewhere into the window contents. To change"
- " it for inactive windows, you need to change the settings"
- " in the Actions tab.") );
-
- TQWhatsThis::add( delayFocusOn, i18n("When this option is enabled, there will be a delay after which the"
- " window the mouse pointer is over will become active (receive focus).") );
- TQWhatsThis::add( delayFocus, i18n("This is the delay after which the window the mouse pointer is over"
- " will automatically receive focus.") );
-
- separateScreenFocus = new TQCheckBox( i18n( "S&eparate screen focus" ), fcsBox );
- fLay->addWidget( separateScreenFocus );
- wtstr = i18n( "When this option is enabled, focus operations are limited only to the active Xinerama screen" );
- TQWhatsThis::add( separateScreenFocus, wtstr );
-
- activeMouseScreen = new TQCheckBox( i18n( "Active &mouse screen" ), fcsBox );
- fLay->addWidget( activeMouseScreen );
- wtstr = i18n( "When this option is enabled, active Xinerama screen (where for example new windows appear)"
- " is the screen with the mouse pointer. When disabled, the active Xinerama screen is the screen"
- " with the focused window. This option is by default disabled for Click to focus and"
- " enabled for other focus policies." );
- TQWhatsThis::add( activeMouseScreen, wtstr );
- connect(focusCombo, TQT_SIGNAL(activated(int)), this, TQT_SLOT(updateActiveMouseScreen()));
-
- if (!TQApplication::desktop()->isVirtualDesktop() ||
- TQApplication::desktop()->numScreens() == 1) // No Ximerama
- {
- separateScreenFocus->hide();
- activeMouseScreen->hide();
- }
-
- lay->addWidget(fcsBox);
-
- kbdBox = new TQButtonGroup(i18n("Navigation"), this);
- kbdBox->setColumnLayout( 0, Qt::Horizontal );
- TQVBoxLayout *kLay = new TQVBoxLayout(kbdBox->tqlayout(), KDialog::spacingHint());
-
- altTabPopup = new TQCheckBox( i18n("Show window list while switching windows"), kbdBox );
- kLay->addWidget( altTabPopup );
-
- wtstr = i18n("Hold down the Alt key and press the Tab key repeatedly to walk"
- " through the windows on the current desktop (the Alt+Tab"
- " combination can be reconfigured).\n\n"
- "If this checkbox is checked"
- " a popup widget is shown, displaying the icons of all windows to"
- " walk through and the title of the currently selected one.\n\n"
- "Otherwise, the focus is passed to a new window each time Tab"
- " is pressed, with no popup widget. In addition, the previously"
- " activated window will be sent to the back in this mode.");
- TQWhatsThis::add( altTabPopup, wtstr );
- connect(focusCombo, TQT_SIGNAL(activated(int)), this, TQT_SLOT(updateAltTabMode()));
-
- traverseAll = new TQCheckBox( i18n( "&Traverse windows on all desktops" ), kbdBox );
- kLay->addWidget( traverseAll );
-
- wtstr = i18n( "Leave this option disabled if you want to limit walking through"
- " windows to the current desktop." );
- TQWhatsThis::add( traverseAll, wtstr );
-
- rollOverDesktops = new TQCheckBox( i18n("Desktop navi&gation wraps around"), kbdBox );
- kLay->addWidget(rollOverDesktops);
-
- wtstr = i18n( "Enable this option if you want keyboard or active desktop border navigation beyond"
- " the edge of a desktop to take you to the opposite edge of the new desktop." );
- TQWhatsThis::add( rollOverDesktops, wtstr );
-
- showPopupinfo = new TQCheckBox( i18n("Popup desktop name on desktop &switch"), kbdBox );
- kLay->addWidget(showPopupinfo);
-
- wtstr = i18n( "Enable this option if you wish to see the current desktop"
- " name popup whenever the current desktop is changed." );
- TQWhatsThis::add( showPopupinfo, wtstr );
-
- lay->addWidget(kbdBox);
-
- lay->addStretch();
-
- // Any changes goes to slotChanged()
- connect(focusCombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- connect(fcsBox, TQT_SIGNAL(clicked(int)), TQT_SLOT(changed()));
- connect(autoRaise, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(delayFocus, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(separateScreenFocus, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect(activeMouseScreen, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect(altTabPopup, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect(traverseAll, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect(rollOverDesktops, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect(showPopupinfo, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
-
- load();
-}
-
-
-int KFocusConfig::getFocus()
-{
- return focusCombo->currentItem();
-}
-
-void KFocusConfig::setFocus(int foc)
-{
- focusCombo->setCurrentItem(foc);
-
- // this will disable/hide the auto raise delay widget if focus==click
- setAutoRaiseEnabled();
- updateAltTabMode();
-}
-
-void KFocusConfig::updateAltTabMode()
-{
- // not KDE-style Alt+Tab with unreasonable focus policies
- altTabPopup->setEnabled( focusCombo->currentItem() == 0 || focusCombo->currentItem() == 1 );
-}
-
-void KFocusConfig::setAutoRaiseInterval(int tb)
-{
- autoRaise->setValue(tb);
-}
-
-void KFocusConfig::setDelayFocusInterval(int tb)
-{
- delayFocus->setValue(tb);
-}
-
-int KFocusConfig::getAutoRaiseInterval()
-{
- return autoRaise->value();
-}
-
-int KFocusConfig::getDelayFocusInterval()
-{
- return delayFocus->value();
-}
-
-void KFocusConfig::setAutoRaise(bool on)
-{
- autoRaiseOn->setChecked(on);
-}
-
-void KFocusConfig::setDelayFocus(bool on)
-{
- delayFocusOn->setChecked(on);
-}
-
-void KFocusConfig::setClickRaise(bool on)
-{
- clickRaiseOn->setChecked(on);
-}
-
-void KFocusConfig::setAutoRaiseEnabled()
-{
- // the auto raise related widgets are: autoRaise
- if ( focusCombo->currentItem() != CLICK_TO_FOCUS )
- {
- autoRaiseOn->setEnabled(true);
- autoRaiseOnTog(autoRaiseOn->isChecked());
- }
- else
- {
- autoRaiseOn->setEnabled(false);
- autoRaiseOnTog(false);
- }
-}
-
-void KFocusConfig::setDelayFocusEnabled()
-{
- // the delayed focus related widgets are: delayFocus
- if ( focusCombo->currentItem() != CLICK_TO_FOCUS )
- {
- delayFocusOn->setEnabled(true);
- delayFocusOnTog(delayFocusOn->isChecked());
- }
- else
- {
- delayFocusOn->setEnabled(false);
- delayFocusOnTog(false);
- }
-}
-
-void KFocusConfig::autoRaiseOnTog(bool a) {
- autoRaise->setEnabled(a);
- clickRaiseOn->setEnabled( !a );
-}
-
-void KFocusConfig::delayFocusOnTog(bool a) {
- delayFocus->setEnabled(a);
-}
-
-void KFocusConfig::clickRaiseOnTog(bool ) {
-}
-
-void KFocusConfig::setSeparateScreenFocus(bool s) {
- separateScreenFocus->setChecked(s);
-}
-
-void KFocusConfig::setActiveMouseScreen(bool a) {
- activeMouseScreen->setChecked(a);
-}
-
-void KFocusConfig::updateActiveMouseScreen()
-{
- // on by default for non click to focus policies
- KConfigGroup cfg( config, "Windows" );
- if( !cfg.hasKey( KWIN_ACTIVE_MOUSE_SCREEN ))
- setActiveMouseScreen( focusCombo->currentItem() != 0 );
-}
-
-void KFocusConfig::setAltTabMode(bool a) {
- altTabPopup->setChecked(a);
-}
-
-void KFocusConfig::setTraverseAll(bool a) {
- traverseAll->setChecked(a);
-}
-
-void KFocusConfig::setRollOverDesktops(bool a) {
- rollOverDesktops->setChecked(a);
-}
-
-void KFocusConfig::setShowPopupinfo(bool a) {
- showPopupinfo->setChecked(a);
-}
-
-void KFocusConfig::load( void )
-{
- TQString key;
-
- config->setGroup( "Windows" );
-
- key = config->readEntry(KWIN_FOCUS);
- if( key == "ClickToFocus")
- setFocus(CLICK_TO_FOCUS);
- else if( key == "FocusFollowsMouse")
- setFocus(FOCUS_FOLLOWS_MOUSE);
- else if(key == "FocusUnderMouse")
- setFocus(FOCUS_UNDER_MOUSE);
- else if(key == "FocusStrictlyUnderMouse")
- setFocus(FOCUS_STRICTLY_UNDER_MOUSE);
-
- int k = config->readNumEntry(KWIN_AUTORAISE_INTERVAL,750);
- setAutoRaiseInterval(k);
-
- k = config->readNumEntry(KWIN_DELAYFOCUS_INTERVAL,750);
- setDelayFocusInterval(k);
-
- key = config->readEntry(KWIN_AUTORAISE);
- setAutoRaise(key == "on");
- key = config->readEntry(KWIN_DELAYFOCUS);
- setDelayFocus(key == "on");
- key = config->readEntry(KWIN_CLICKRAISE);
- setClickRaise(key != "off");
- setAutoRaiseEnabled(); // this will disable/hide the auto raise delay widget if focus==click
- setDelayFocusEnabled();
-
- setSeparateScreenFocus( config->readBoolEntry(KWIN_SEPARATE_SCREEN_FOCUS, false));
- // on by default for non click to focus policies
- setActiveMouseScreen( config->readBoolEntry(KWIN_ACTIVE_MOUSE_SCREEN, focusCombo->currentItem() != 0 ));
-
- key = config->readEntry(KWIN_ALTTABMODE, "KDE");
- setAltTabMode(key == "KDE");
-
- setRollOverDesktops( config->readBoolEntry(KWIN_ROLL_OVER_DESKTOPS, true ));
-
- config->setGroup( "PopupInfo" );
- setShowPopupinfo( config->readBoolEntry(KWIN_SHOW_POPUP, false ));
-
- config->setGroup( "TabBox" );
- setTraverseAll( config->readBoolEntry(KWIN_TRAVERSE_ALL, false ));
-
- config->setGroup("Desktops");
- emit KCModule::changed(false);
-}
-
-void KFocusConfig::save( void )
-{
- int v;
-
- config->setGroup( "Windows" );
-
- v = getFocus();
- if (v == CLICK_TO_FOCUS)
- config->writeEntry(KWIN_FOCUS,"ClickToFocus");
- else if (v == FOCUS_UNDER_MOUSE)
- config->writeEntry(KWIN_FOCUS,"FocusUnderMouse");
- else if (v == FOCUS_STRICTLY_UNDER_MOUSE)
- config->writeEntry(KWIN_FOCUS,"FocusStrictlyUnderMouse");
- else
- config->writeEntry(KWIN_FOCUS,"FocusFollowsMouse");
-
- v = getAutoRaiseInterval();
- if (v <0) v = 0;
- config->writeEntry(KWIN_AUTORAISE_INTERVAL,v);
-
- v = getDelayFocusInterval();
- if (v <0) v = 0;
- config->writeEntry(KWIN_DELAYFOCUS_INTERVAL,v);
-
- if (autoRaiseOn->isChecked())
- config->writeEntry(KWIN_AUTORAISE, "on");
- else
- config->writeEntry(KWIN_AUTORAISE, "off");
-
- if (delayFocusOn->isChecked())
- config->writeEntry(KWIN_DELAYFOCUS, "on");
- else
- config->writeEntry(KWIN_DELAYFOCUS, "off");
-
- if (clickRaiseOn->isChecked())
- config->writeEntry(KWIN_CLICKRAISE, "on");
- else
- config->writeEntry(KWIN_CLICKRAISE, "off");
-
- config->writeEntry(KWIN_SEPARATE_SCREEN_FOCUS, separateScreenFocus->isChecked());
- config->writeEntry(KWIN_ACTIVE_MOUSE_SCREEN, activeMouseScreen->isChecked());
-
- if (altTabPopup->isChecked())
- config->writeEntry(KWIN_ALTTABMODE, "KDE");
- else
- config->writeEntry(KWIN_ALTTABMODE, "CDE");
-
- config->writeEntry( KWIN_ROLL_OVER_DESKTOPS, rollOverDesktops->isChecked());
-
- config->setGroup( "PopupInfo" );
- config->writeEntry( KWIN_SHOW_POPUP, showPopupinfo->isChecked());
-
- config->setGroup( "TabBox" );
- config->writeEntry( KWIN_TRAVERSE_ALL , traverseAll->isChecked());
-
- config->setGroup("Desktops");
-
- if (standAlone)
- {
- config->sync();
- if ( !kapp->dcopClient()->isAttached() )
- kapp->dcopClient()->attach();
- kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
- }
- emit KCModule::changed(false);
-}
-
-void KFocusConfig::defaults()
-{
- setAutoRaiseInterval(0);
- setDelayFocusInterval(0);
- setFocus(CLICK_TO_FOCUS);
- setAutoRaise(false);
- setDelayFocus(false);
- setClickRaise(true);
- setSeparateScreenFocus( false );
- // on by default for non click to focus policies
- setActiveMouseScreen( focusCombo->currentItem() != 0 );
- setAltTabMode(true);
- setTraverseAll( false );
- setRollOverDesktops(true);
- setShowPopupinfo(false);
- emit KCModule::changed(true);
-}
-
-KAdvancedConfig::~KAdvancedConfig ()
-{
- if (standAlone)
- delete config;
-}
-
-KAdvancedConfig::KAdvancedConfig (bool _standAlone, KConfig *_config, TQWidget *parent, const char *)
- : KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
-{
- TQString wtstr;
- TQBoxLayout *lay = new TQVBoxLayout (this, 0, KDialog::spacingHint());
-
- //iTLabel = new TQLabel(i18n(" Allowed overlap:\n"
- // "(% of desktop space)"),
- // plcBox);
- //iTLabel->tqsetAlignment(AlignTop|AlignHCenter);
- //pLay->addWidget(iTLabel,1,1);
-
- //interactiveTrigger = new TQSpinBox(0, 500, 1, plcBox);
- //pLay->addWidget(interactiveTrigger,1,2);
-
- //pLay->addRowSpacing(2,KDialog::spacingHint());
-
- //lay->addWidget(plcBox);
-
- shBox = new TQVButtonGroup(i18n("Shading"), this);
-
- animateShade = new TQCheckBox(i18n("Anima&te"), shBox);
- TQWhatsThis::add(animateShade, i18n("Animate the action of reducing the window to its titlebar (shading)"
- " as well as the expansion of a shaded window") );
-
- shadeHoverOn = new TQCheckBox(i18n("&Enable hover"), shBox);
-
- connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(shadeHoverChanged(bool)));
-
- shadeHover = new KIntNumInput(500, shBox);
- shadeHover->setLabel(i18n("Dela&y:"), Qt::AlignVCenter|Qt::AlignLeft);
- shadeHover->setRange(0, 3000, 100, true);
- shadeHover->setSteps(100, 100);
- shadeHover->setSuffix(i18n(" msec"));
-
- TQWhatsThis::add(shadeHoverOn, i18n("If Shade Hover is enabled, a shaded window will un-shade automatically "
- "when the mouse pointer has been over the title bar for some time."));
-
- wtstr = i18n("Sets the time in milliseconds before the window unshades "
- "when the mouse pointer goes over the shaded window.");
- TQWhatsThis::add(shadeHover, wtstr);
-
- lay->addWidget(shBox);
-
- // Any changes goes to slotChanged()
- connect(animateShade, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(shadeHover, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
-
- electricBox = new TQVButtonGroup(i18n("Active Desktop Borders"), this);
- electricBox->setMargin(15);
-
- TQWhatsThis::add( electricBox, i18n("If this option is enabled, moving the mouse to a screen border"
- " will change your desktop. This is e.g. useful if you want to drag windows from one desktop"
- " to the other.") );
- active_disable = new TQRadioButton(i18n("D&isabled"), electricBox);
- active_move = new TQRadioButton(i18n("Only &when moving windows"), electricBox);
- active_always = new TQRadioButton(i18n("A&lways enabled"), electricBox);
-
- delays = new KIntNumInput(10, electricBox);
- delays->setRange(0, MAX_EDGE_RES, 50, true);
- delays->setSuffix(i18n(" msec"));
- delays->setLabel(i18n("Desktop &switch delay:"));
- TQWhatsThis::add( delays, i18n("Here you can set a delay for switching desktops using the active"
- " borders feature. Desktops will be switched after the mouse has been pushed against a screen border"
- " for the specified number of milliseconds.") );
-
- connect( electricBox, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(setEBorders()));
-
- // Any changes goes to slotChanged()
- connect(electricBox, TQT_SIGNAL(clicked(int)), TQT_SLOT(changed()));
- connect(delays, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
-
- lay->addWidget(electricBox);
-
- TQHBoxLayout* focusStealingLayout = new TQHBoxLayout( lay,KDialog::spacingHint());
- TQLabel* focusStealingLabel = new TQLabel( i18n( "Focus stealing prevention level:" ), this );
- focusStealing = new TQComboBox( this );
- focusStealing->insertItem( i18n( "Focus Stealing Prevention Level", "None" ));
- focusStealing->insertItem( i18n( "Focus Stealing Prevention Level", "Low" ));
- focusStealing->insertItem( i18n( "Focus Stealing Prevention Level", "Normal" ));
- focusStealing->insertItem( i18n( "Focus Stealing Prevention Level", "High" ));
- focusStealing->insertItem( i18n( "Focus Stealing Prevention Level", "Extreme" ));
- focusStealingLabel->setBuddy( focusStealing );
- focusStealingLayout->addWidget( focusStealingLabel );
- focusStealingLayout->addWidget( focusStealing, AlignLeft );
- wtstr = i18n( "<p>This option specifies how much KWin will try to prevent unwanted focus stealing "
- "caused by unexpected activation of new windows. (Note: This feature does not "
- "work with the Focus Under Mouse or Focus Strictly Under Mouse focus policies.)"
- "<ul>"
- "<li><em>None:</em> Prevention is turned off "
- "and new windows always become activated.</li>"
- "<li><em>Low:</em> Prevention is enabled; when some window does not have support "
- "for the underlying mechanism and KWin cannot reliably decide whether to "
- "activate the window or not, it will be activated. This setting may have both "
- "worse and better results than normal level, depending on the applications.</li>"
- "<li><em>Normal:</em> Prevention is enabled.</li>"
- "<li><em>High:</em> New windows get activated only if no window is currently active "
- "or if they belong to the currently active application. This setting is probably "
- "not really usable when not using mouse focus policy.</li>"
- "<li><em>Extreme:</em> All windows must be explicitly activated by the user.</li>"
- "</ul></p>"
- "<p>Windows that are prevented from stealing focus are marked as demanding attention, "
- "which by default means their taskbar entry will be highlighted. This can be changed "
- "in the Notifications control module.</p>" );
- TQWhatsThis::add( focusStealing, wtstr );
- TQWhatsThis::add( focusStealingLabel, wtstr );
- connect(focusStealing, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
-
- hideUtilityWindowsForInactive = new TQCheckBox( i18n( "Hide utility windows for inactive applications" ), this );
- TQWhatsThis::add( hideUtilityWindowsForInactive,
- i18n( "When turned on, utility windows (tool windows, torn-off menus,...) of inactive applications will be"
- " hidden and will be shown only when the application becomes active. Note that applications"
- " have to mark the windows with the proper window type for this feature to work." ));
- connect(hideUtilityWindowsForInactive, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- lay->addWidget( hideUtilityWindowsForInactive );
-
- lay->addStretch();
- load();
-
-}
-
-void KAdvancedConfig::setShadeHover(bool on) {
- shadeHoverOn->setChecked(on);
- shadeHover->setEnabled(on);
-}
-
-void KAdvancedConfig::setShadeHoverInterval(int k) {
- shadeHover->setValue(k);
-}
-
-int KAdvancedConfig::getShadeHoverInterval() {
-
- return shadeHover->value();
-}
-
-void KAdvancedConfig::shadeHoverChanged(bool a) {
- shadeHover->setEnabled(a);
-}
-
-void KAdvancedConfig::setAnimateShade(bool a) {
- animateShade->setChecked(a);
-}
-
-void KAdvancedConfig::setFocusStealing(int l) {
- l = KMAX( 0, KMIN( 4, l ));
- focusStealing->setCurrentItem(l);
-}
-
-void KAdvancedConfig::setHideUtilityWindowsForInactive(bool s) {
- hideUtilityWindowsForInactive->setChecked( s );
-}
-
-void KAdvancedConfig::load( void )
-{
- config->setGroup( "Windows" );
-
- setAnimateShade(config->readBoolEntry(KWIN_ANIMSHADE, true));
- setShadeHover(config->readBoolEntry(KWIN_SHADEHOVER, false));
- setShadeHoverInterval(config->readNumEntry(KWIN_SHADEHOVER_INTERVAL, 250));
-
- setElectricBorders(config->readNumEntry(KWM_ELECTRIC_BORDER, 0));
- setElectricBorderDelay(config->readNumEntry(KWM_ELECTRIC_BORDER_DELAY, 150));
-
-// setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 2 ));
- // TODO default to low for now
- setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 1 ));
- setHideUtilityWindowsForInactive( config->readBoolEntry( KWIN_HIDE_UTILITY, true ));
-
- emit KCModule::changed(false);
-}
-
-void KAdvancedConfig::save( void )
-{
- int v;
-
- config->setGroup( "Windows" );
- config->writeEntry(KWIN_ANIMSHADE, animateShade->isChecked());
- if (shadeHoverOn->isChecked())
- config->writeEntry(KWIN_SHADEHOVER, "on");
- else
- config->writeEntry(KWIN_SHADEHOVER, "off");
-
- v = getShadeHoverInterval();
- if (v<0) v = 0;
- config->writeEntry(KWIN_SHADEHOVER_INTERVAL, v);
-
- config->writeEntry(KWM_ELECTRIC_BORDER, getElectricBorders());
- config->writeEntry(KWM_ELECTRIC_BORDER_DELAY,getElectricBorderDelay());
-
- config->writeEntry(KWIN_FOCUS_STEALING, focusStealing->currentItem());
- config->writeEntry(KWIN_HIDE_UTILITY, hideUtilityWindowsForInactive->isChecked());
-
- if (standAlone)
- {
- config->sync();
- if ( !kapp->dcopClient()->isAttached() )
- kapp->dcopClient()->attach();
- kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
- }
- emit KCModule::changed(false);
-}
-
-void KAdvancedConfig::defaults()
-{
- setAnimateShade(true);
- setShadeHover(false);
- setShadeHoverInterval(250);
- setElectricBorders(0);
- setElectricBorderDelay(150);
-// setFocusStealing(2);
- // TODO default to low for now
- setFocusStealing(1);
- setHideUtilityWindowsForInactive( true );
- emit KCModule::changed(true);
-}
-
-void KAdvancedConfig::setEBorders()
-{
- delays->setEnabled(!active_disable->isChecked());
-}
-
-int KAdvancedConfig::getElectricBorders()
-{
- if (active_move->isChecked())
- return 1;
- if (active_always->isChecked())
- return 2;
- return 0;
-}
-
-int KAdvancedConfig::getElectricBorderDelay()
-{
- return delays->value();
-}
-
-void KAdvancedConfig::setElectricBorders(int i){
- switch(i)
- {
- case 1: active_move->setChecked(true); break;
- case 2: active_always->setChecked(true); break;
- default: active_disable->setChecked(true); break;
- }
- setEBorders();
-}
-
-void KAdvancedConfig::setElectricBorderDelay(int delay)
-{
- delays->setValue(delay);
-}
-
-
-KMovingConfig::~KMovingConfig ()
-{
- if (standAlone)
- delete config;
-}
-
-KMovingConfig::KMovingConfig (bool _standAlone, KConfig *_config, TQWidget *parent, const char *)
- : KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
-{
- TQString wtstr;
- TQBoxLayout *lay = new TQVBoxLayout (this, 0, KDialog::spacingHint());
-
- windowsBox = new TQButtonGroup(i18n("Windows"), this);
- windowsBox->setColumnLayout( 0, Qt::Horizontal );
-
- TQBoxLayout *wLay = new TQVBoxLayout (windowsBox->tqlayout(), KDialog::spacingHint());
-
- TQBoxLayout *bLay = new TQVBoxLayout;
- wLay->addLayout(bLay);
-
- opaque = new TQCheckBox(i18n("Di&splay content in moving windows"), windowsBox);
- bLay->addWidget(opaque);
- TQWhatsThis::add( opaque, i18n("Enable this option if you want a window's content to be fully shown"
- " while moving it, instead of just showing a window 'skeleton'. The result may not be satisfying"
- " on slow machines without graphic acceleration.") );
-
- resizeOpaqueOn = new TQCheckBox(i18n("Display content in &resizing windows"), windowsBox);
- bLay->addWidget(resizeOpaqueOn);
- TQWhatsThis::add( resizeOpaqueOn, i18n("Enable this option if you want a window's content to be shown"
- " while resizing it, instead of just showing a window 'skeleton'. The result may not be satisfying"
- " on slow machines.") );
-
- geometryTipOn = new TQCheckBox(i18n("Display window &geometry when moving or resizing"), windowsBox);
- bLay->addWidget(geometryTipOn);
- TQWhatsThis::add(geometryTipOn, i18n("Enable this option if you want a window's geometry to be displayed"
- " while it is being moved or resized. The window position relative"
- " to the top-left corner of the screen is displayed together with"
- " its size."));
-
- TQGridLayout *rLay = new TQGridLayout(2,3);
- bLay->addLayout(TQT_TQLAYOUT(rLay));
- rLay->setColStretch(0,0);
- rLay->setColStretch(1,1);
-
- minimizeAnimOn = new TQCheckBox(i18n("Animate minimi&ze and restore"),
- windowsBox);
- TQWhatsThis::add( minimizeAnimOn, i18n("Enable this option if you want an animation shown when"
- " windows are minimized or restored." ) );
- rLay->addWidget(minimizeAnimOn,0,0);
-
- minimizeAnimSlider = new TQSlider(0,10,10,0,Qt::Horizontal, windowsBox);
- minimizeAnimSlider->setSteps(1, 1);
- // TQSlider::Below clashes with a X11/X.h #define
- #undef Below
- minimizeAnimSlider->setTickmarks(TQSlider::Below);
- rLay->addMultiCellWidget(minimizeAnimSlider,0,0,1,2);
-
- connect(minimizeAnimOn, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(setMinimizeAnim(bool)));
- connect(minimizeAnimSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(setMinimizeAnimSpeed(int)));
-
- minimizeAnimSlowLabel= new TQLabel(i18n("Slow"),windowsBox);
- minimizeAnimSlowLabel->tqsetAlignment(Qt::AlignTop|Qt::AlignLeft);
- rLay->addWidget(minimizeAnimSlowLabel,1,1);
-
- minimizeAnimFastLabel= new TQLabel(i18n("Fast"),windowsBox);
- minimizeAnimFastLabel->tqsetAlignment(Qt::AlignTop|Qt::AlignRight);
- rLay->addWidget(minimizeAnimFastLabel,1,2);
-
- wtstr = i18n("Here you can set the speed of the animation shown when windows are"
- " minimized and restored. ");
- TQWhatsThis::add( minimizeAnimSlider, wtstr );
- TQWhatsThis::add( minimizeAnimSlowLabel, wtstr );
- TQWhatsThis::add( minimizeAnimFastLabel, wtstr );
-
- moveResizeMaximized = new TQCheckBox( i18n("Allow moving and resizing o&f maximized windows"), windowsBox);
- bLay->addWidget(moveResizeMaximized);
- TQWhatsThis::add(moveResizeMaximized, i18n("When enabled, this feature activates the border of maximized windows"
- " and allows you to move or resize them,"
- " just like for normal windows"));
-
- TQBoxLayout *vLay = new TQHBoxLayout(bLay);
-
- TQLabel *plcLabel = new TQLabel(i18n("&Placement:"),windowsBox);
-
- placementCombo = new TQComboBox(false, windowsBox);
- placementCombo->insertItem(i18n("Smart"), SMART_PLACEMENT);
- placementCombo->insertItem(i18n("Maximizing"), MAXIMIZING_PLACEMENT);
- placementCombo->insertItem(i18n("Cascade"), CASCADE_PLACEMENT);
- placementCombo->insertItem(i18n("Random"), RANDOM_PLACEMENT);
- placementCombo->insertItem(i18n("Centered"), CENTERED_PLACEMENT);
- placementCombo->insertItem(i18n("Zero-Cornered"), ZEROCORNERED_PLACEMENT);
- // CT: disabling is needed as long as functionality misses in twin
- //placementCombo->insertItem(i18n("Interactive"), INTERACTIVE_PLACEMENT);
- //placementCombo->insertItem(i18n("Manual"), MANUAL_PLACEMENT);
- placementCombo->setCurrentItem(SMART_PLACEMENT);
-
- // FIXME, when more policies have been added to KWin
- wtstr = i18n("The placement policy determines where a new window"
- " will appear on the desktop."
- " <ul>"
- " <li><em>Smart</em> will try to achieve a minimum overlap of windows</li>"
- " <li><em>Maximizing</em> will try to maximize every window to fill the whole screen."
- " It might be useful to selectively affect placement of some windows using"
- " the window-specific settings.</li>"
- " <li><em>Cascade</em> will cascade the windows</li>"
- " <li><em>Random</em> will use a random position</li>"
- " <li><em>Centered</em> will place the window centered</li>"
- " <li><em>Zero-Cornered</em> will place the window in the top-left corner</li>"
- "</ul>") ;
-
- TQWhatsThis::add( plcLabel, wtstr);
- TQWhatsThis::add( placementCombo, wtstr);
-
- plcLabel->setBuddy(placementCombo);
- vLay->addWidget(plcLabel, 0);
- vLay->addWidget(placementCombo, 1, Qt::AlignLeft);
-
- bLay->addSpacing(10);
-
- lay->addWidget(windowsBox);
-
- //iTLabel = new TQLabel(i18n(" Allowed overlap:\n"
- // "(% of desktop space)"),
- // plcBox);
- //iTLabel->tqsetAlignment(AlignTop|AlignHCenter);
- //pLay->addWidget(iTLabel,1,1);
-
- //interactiveTrigger = new TQSpinBox(0, 500, 1, plcBox);
- //pLay->addWidget(interactiveTrigger,1,2);
-
- //pLay->addRowSpacing(2,KDialog::spacingHint());
-
- //lay->addWidget(plcBox);
-
-
- //CT 15mar98 - add EdgeResistance, BorderAttractor, WindowsAttractor config
- MagicBox = new TQVButtonGroup(i18n("Snap Zones"), this);
- MagicBox->setMargin(15);
-
- BrdrSnap = new KIntNumInput(10, MagicBox);
- BrdrSnap->setSpecialValueText( i18n("none") );
- BrdrSnap->setRange( 0, MAX_BRDR_SNAP);
- BrdrSnap->setLabel(i18n("&Border snap zone:"));
- BrdrSnap->setSteps(1,10);
- TQWhatsThis::add( BrdrSnap, i18n("Here you can set the snap zone for screen borders, i.e."
- " the 'strength' of the magnetic field which will make windows snap to the border when"
- " moved near it.") );
-
- WndwSnap = new KIntNumInput(10, MagicBox);
- WndwSnap->setSpecialValueText( i18n("none") );
- WndwSnap->setRange( 0, MAX_WNDW_SNAP);
- WndwSnap->setLabel(i18n("&Window snap zone:"));
- BrdrSnap->setSteps(1,10);
- TQWhatsThis::add( WndwSnap, i18n("Here you can set the snap zone for windows, i.e."
- " the 'strength' of the magnetic field which will make windows snap to each other when"
- " they're moved near another window.") );
-
- OverlapSnap=new TQCheckBox(i18n("Snap windows onl&y when overlapping"),MagicBox);
- TQWhatsThis::add( OverlapSnap, i18n("Here you can set that windows will be only"
- " snapped if you try to overlap them, i.e. they will not be snapped if the windows"
- " comes only near another window or border.") );
-
- lay->addWidget(MagicBox);
- lay->addStretch();
-
- load();
-
- // Any changes goes to slotChanged()
- connect( opaque, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect( resizeOpaqueOn, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect( geometryTipOn, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
- connect( minimizeAnimOn, TQT_SIGNAL(clicked() ), TQT_SLOT(changed()));
- connect( minimizeAnimSlider, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect( moveResizeMaximized, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect( placementCombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- connect( BrdrSnap, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect( BrdrSnap, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotBrdrSnapChanged(int)));
- connect( WndwSnap, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect( WndwSnap, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotWndwSnapChanged(int)));
- connect( OverlapSnap, TQT_SIGNAL(clicked()), TQT_SLOT(changed()));
-
- // To get suffix to BrdrSnap and WndwSnap inputs with default values.
- slotBrdrSnapChanged(BrdrSnap->value());
- slotWndwSnapChanged(WndwSnap->value());
-}
-
-int KMovingConfig::getMove()
-{
- return (opaque->isChecked())? OPAQUE : TRANSPARENT;
-}
-
-void KMovingConfig::setMove(int trans)
-{
- opaque->setChecked(trans == OPAQUE);
-}
-
-void KMovingConfig::setGeometryTip(bool showGeometryTip)
-{
- geometryTipOn->setChecked(showGeometryTip);
-}
-
-bool KMovingConfig::getGeometryTip()
-{
- return geometryTipOn->isChecked();
-}
-
-// placement policy --- CT 31jan98 ---
-int KMovingConfig::getPlacement()
-{
- return placementCombo->currentItem();
-}
-
-void KMovingConfig::setPlacement(int plac)
-{
- placementCombo->setCurrentItem(plac);
-}
-
-bool KMovingConfig::getMinimizeAnim()
-{
- return minimizeAnimOn->isChecked();
-}
-
-int KMovingConfig::getMinimizeAnimSpeed()
-{
- return minimizeAnimSlider->value();
-}
-
-void KMovingConfig::setMinimizeAnim(bool anim)
-{
- minimizeAnimOn->setChecked( anim );
- minimizeAnimSlider->setEnabled( anim );
- minimizeAnimSlowLabel->setEnabled( anim );
- minimizeAnimFastLabel->setEnabled( anim );
-}
-
-void KMovingConfig::setMinimizeAnimSpeed(int speed)
-{
- minimizeAnimSlider->setValue(speed);
-}
-
-int KMovingConfig::getResizeOpaque()
-{
- return (resizeOpaqueOn->isChecked())? RESIZE_OPAQUE : RESIZE_TRANSPARENT;
-}
-
-void KMovingConfig::setResizeOpaque(int opaque)
-{
- resizeOpaqueOn->setChecked(opaque == RESIZE_OPAQUE);
-}
-
-void KMovingConfig::setMoveResizeMaximized(bool a) {
- moveResizeMaximized->setChecked(a);
-}
-
-void KMovingConfig::slotBrdrSnapChanged(int value) {
- BrdrSnap->setSuffix(i18n(" pixel", " pixels", value));
-}
-
-void KMovingConfig::slotWndwSnapChanged(int value) {
- WndwSnap->setSuffix(i18n(" pixel", " pixels", value));
-}
-
-void KMovingConfig::load( void )
-{
- TQString key;
-
- config->setGroup( "Windows" );
-
- key = config->readEntry(KWIN_MOVE, "Opaque");
- if( key == "Transparent")
- setMove(TRANSPARENT);
- else if( key == "Opaque")
- setMove(OPAQUE);
-
- //CT 17Jun1998 - variable animation speed from 0 (none!!) to 10 (max)
- bool anim = config->readBoolEntry(KWIN_MINIMIZE_ANIM, true );
- int animSpeed = config->readNumEntry(KWIN_MINIMIZE_ANIM_SPEED, 5);
- if( animSpeed < 1 ) animSpeed = 0;
- if( animSpeed > 10 ) animSpeed = 10;
- setMinimizeAnim( anim );
- setMinimizeAnimSpeed( animSpeed );
-
- // DF: please keep the default consistent with twin (options.cpp line 145)
- key = config->readEntry(KWIN_RESIZE_OPAQUE, "Opaque");
- if( key == "Opaque")
- setResizeOpaque(RESIZE_OPAQUE);
- else if ( key == "Transparent")
- setResizeOpaque(RESIZE_TRANSPARENT);
-
- //KS 10Jan2003 - Geometry Tip during window move/resize
- bool showGeomTip = config->readBoolEntry(KWIN_GEOMETRY, false);
- setGeometryTip( showGeomTip );
-
- // placement policy --- CT 19jan98 ---
- key = config->readEntry(KWIN_PLACEMENT);
- //CT 13mar98 interactive placement
-// if( key.left(11) == "interactive") {
-// setPlacement(INTERACTIVE_PLACEMENT);
-// int comma_pos = key.find(',');
-// if (comma_pos < 0)
-// interactiveTrigger->setValue(0);
-// else
-// interactiveTrigger->setValue (key.right(key.length()
-// - comma_pos).toUInt(0));
-// iTLabel->setEnabled(true);
-// interactiveTrigger->show();
-// }
-// else {
-// interactiveTrigger->setValue(0);
-// iTLabel->setEnabled(false);
-// interactiveTrigger->hide();
- if( key == "Random")
- setPlacement(RANDOM_PLACEMENT);
- else if( key == "Cascade")
- setPlacement(CASCADE_PLACEMENT); //CT 31jan98
- //CT 31mar98 manual placement
- else if( key == "manual")
- setPlacement(MANUAL_PLACEMENT);
- else if( key == "Centered")
- setPlacement(CENTERED_PLACEMENT);
- else if( key == "ZeroCornered")
- setPlacement(ZEROCORNERED_PLACEMENT);
- else if( key == "Maximizing")
- setPlacement(MAXIMIZING_PLACEMENT);
- else
- setPlacement(SMART_PLACEMENT);
-// }
-
- setMoveResizeMaximized(config->readBoolEntry(KWIN_MOVE_RESIZE_MAXIMIZED, false));
-
- int v;
-
- v = config->readNumEntry(KWM_BRDR_SNAP_ZONE, KWM_BRDR_SNAP_ZONE_DEFAULT);
- if (v > MAX_BRDR_SNAP) setBorderSnapZone(MAX_BRDR_SNAP);
- else if (v < 0) setBorderSnapZone (0);
- else setBorderSnapZone(v);
-
- v = config->readNumEntry(KWM_WNDW_SNAP_ZONE, KWM_WNDW_SNAP_ZONE_DEFAULT);
- if (v > MAX_WNDW_SNAP) setWindowSnapZone(MAX_WNDW_SNAP);
- else if (v < 0) setWindowSnapZone (0);
- else setWindowSnapZone(v);
-
- OverlapSnap->setChecked(config->readBoolEntry("SnapOnlyWhenOverlapping",false));
- emit KCModule::changed(false);
-}
-
-void KMovingConfig::save( void )
-{
- int v;
-
- config->setGroup( "Windows" );
-
- v = getMove();
- if (v == TRANSPARENT)
- config->writeEntry(KWIN_MOVE,"Transparent");
- else
- config->writeEntry(KWIN_MOVE,"Opaque");
-
- config->writeEntry(KWIN_GEOMETRY, getGeometryTip());
-
- // placement policy --- CT 31jan98 ---
- v =getPlacement();
- if (v == RANDOM_PLACEMENT)
- config->writeEntry(KWIN_PLACEMENT, "Random");
- else if (v == CASCADE_PLACEMENT)
- config->writeEntry(KWIN_PLACEMENT, "Cascade");
- else if (v == CENTERED_PLACEMENT)
- config->writeEntry(KWIN_PLACEMENT, "Centered");
- else if (v == ZEROCORNERED_PLACEMENT)
- config->writeEntry(KWIN_PLACEMENT, "ZeroCornered");
- else if (v == MAXIMIZING_PLACEMENT)
- config->writeEntry(KWIN_PLACEMENT, "Maximizing");
-//CT 13mar98 manual and interactive placement
-// else if (v == MANUAL_PLACEMENT)
-// config->writeEntry(KWIN_PLACEMENT, "Manual");
-// else if (v == INTERACTIVE_PLACEMENT) {
-// TQString tmpstr = TQString("Interactive,%1").arg(interactiveTrigger->value());
-// config->writeEntry(KWIN_PLACEMENT, tmpstr);
-// }
- else
- config->writeEntry(KWIN_PLACEMENT, "Smart");
-
- config->writeEntry(KWIN_MINIMIZE_ANIM, getMinimizeAnim());
- config->writeEntry(KWIN_MINIMIZE_ANIM_SPEED, getMinimizeAnimSpeed());
-
- v = getResizeOpaque();
- if (v == RESIZE_OPAQUE)
- config->writeEntry(KWIN_RESIZE_OPAQUE, "Opaque");
- else
- config->writeEntry(KWIN_RESIZE_OPAQUE, "Transparent");
-
- config->writeEntry(KWIN_MOVE_RESIZE_MAXIMIZED, moveResizeMaximized->isChecked());
-
-
- config->writeEntry(KWM_BRDR_SNAP_ZONE,getBorderSnapZone());
- config->writeEntry(KWM_WNDW_SNAP_ZONE,getWindowSnapZone());
- config->writeEntry("SnapOnlyWhenOverlapping",OverlapSnap->isChecked());
-
- if (standAlone)
- {
- config->sync();
- if ( !kapp->dcopClient()->isAttached() )
- kapp->dcopClient()->attach();
- kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
- }
- emit KCModule::changed(false);
-}
-
-void KMovingConfig::defaults()
-{
- setMove(OPAQUE);
- setResizeOpaque(RESIZE_TRANSPARENT);
- setGeometryTip(false);
- setPlacement(SMART_PLACEMENT);
- setMoveResizeMaximized(false);
-
- //copied from kcontrol/konq/twindesktop, aleXXX
- setWindowSnapZone(KWM_WNDW_SNAP_ZONE_DEFAULT);
- setBorderSnapZone(KWM_BRDR_SNAP_ZONE_DEFAULT);
- OverlapSnap->setChecked(false);
-
- setMinimizeAnim( true );
- setMinimizeAnimSpeed( 5 );
- emit KCModule::changed(true);
-}
-
-int KMovingConfig::getBorderSnapZone() {
- return BrdrSnap->value();
-}
-
-void KMovingConfig::setBorderSnapZone(int pxls) {
- BrdrSnap->setValue(pxls);
-}
-
-int KMovingConfig::getWindowSnapZone() {
- return WndwSnap->value();
-}
-
-void KMovingConfig::setWindowSnapZone(int pxls) {
- WndwSnap->setValue(pxls);
-}
-
-KTranslucencyConfig::~KTranslucencyConfig ()
-{
- if (standAlone)
- delete config;
- if (kompmgr)
- kompmgr->detach();
-}
-
-KTranslucencyConfig::KTranslucencyConfig (bool _standAlone, KConfig *_config, TQWidget *parent, const char *)
- : KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
-{
- kompmgr = 0L;
- resetKompmgr_ = FALSE;
- TQVBoxLayout *lay = new TQVBoxLayout (this);
- kompmgrAvailable_ = kompmgrAvailable();
- if (!kompmgrAvailable_){
- KActiveLabel *label = new KActiveLabel(i18n("<qt><b>It seems that alpha channel support is not available.</b><br><br>"
- "Please make sure you have "
- "<a href=\"http://www.freedesktop.org/\">Xorg &ge; 6.8</a>,"
- " and installed the kompmgr that came with twin.<br>"
- "Also, make sure you have the following entries in your XConfig (e.g. /etc/X11/xorg.conf):<br><br>"
- "<i>Section \"Extensions\"<br>"
- "Option \"Composite\" \"Enable\"<br>"
- "EndSection</i><br><br>"
- "And if your GPU provides hardware-accelerated Xrender support (mainly nVidia cards):<br><br>"
- "<i>Option \"RenderAccel\" \"true\"</i><br>"
- "In <i>Section \"Device\"</i></qt>"), this);
- lay->addWidget(label);
- }
- else
- {
- TQTabWidget *tabW = new TQTabWidget(this);
- TQWidget *tGroup = new TQWidget(tabW);
- TQVBoxLayout *vLay = new TQVBoxLayout (tGroup,KDialog::marginHint(), KDialog::spacingHint());
- vLay->addSpacing(11); // to get the proper gb top offset
-
- onlyDecoTranslucent = new TQCheckBox(i18n("Apply translucency only to decoration"),tGroup);
- vLay->addWidget(onlyDecoTranslucent);
-
- vLay->addSpacing(11);
-
- TQGridLayout *gLay = new TQGridLayout(vLay,4,2,KDialog::spacingHint());
- gLay->setColStretch(1,1);
-
- activeWindowTransparency = new TQCheckBox(i18n("Active windows:"),tGroup);
- gLay->addWidget(activeWindowTransparency,0,0);
- activeWindowOpacity = new KIntNumInput(100, tGroup);
- activeWindowOpacity->setRange(0,100);
- activeWindowOpacity->setSuffix("%");
- gLay->addWidget(activeWindowOpacity,0,1);
-
- inactiveWindowTransparency = new TQCheckBox(i18n("Inactive windows:"),tGroup);
- gLay->addWidget(inactiveWindowTransparency,1,0);
- inactiveWindowOpacity = new KIntNumInput(100, tGroup);
- inactiveWindowOpacity->setRange(0,100);
- inactiveWindowOpacity->setSuffix("%");
- gLay->addWidget(inactiveWindowOpacity,1,1);
-
- movingWindowTransparency = new TQCheckBox(i18n("Moving windows:"),tGroup);
- gLay->addWidget(movingWindowTransparency,2,0);
- movingWindowOpacity = new KIntNumInput(100, tGroup);
- movingWindowOpacity->setRange(0,100);
- movingWindowOpacity->setSuffix("%");
- gLay->addWidget(movingWindowOpacity,2,1);
-
- dockWindowTransparency = new TQCheckBox(i18n("Dock windows:"),tGroup);
- gLay->addWidget(dockWindowTransparency,3,0);
- dockWindowOpacity = new KIntNumInput(100, tGroup);
- dockWindowOpacity->setRange(0,100);
- dockWindowOpacity->setSuffix("%");
- gLay->addWidget(dockWindowOpacity,3,1);
-
- vLay->addSpacing(11);
-
- keepAboveAsActive = new TQCheckBox(i18n("Treat 'keep above' windows as active ones"),tGroup);
- vLay->addWidget(keepAboveAsActive);
-
- disableARGB = new TQCheckBox(i18n("Disable ARGB windows (ignores window alpha maps, fixes gtk1 apps)"),tGroup);
- vLay->addWidget(disableARGB);
-
- vLay->addStretch();
- tabW->addTab(tGroup, i18n("Opacity"));
-
- TQWidget *sGroup = new TQWidget(tabW);
-// sGroup->setCheckable(TRUE);
- TQVBoxLayout *vLay2 = new TQVBoxLayout (sGroup,11,6);
- vLay2->addSpacing(11); // to get the proper gb top offset
- useShadows = new TQCheckBox(i18n("Use shadows (standard effects should be disabled in the Styles module if this is checked)"),sGroup);
- vLay2->addWidget(useShadows);
-
- vLay2->addSpacing(11);
-
- TQGridLayout *gLay2 = new TQGridLayout(vLay2,6,2);
- gLay2->setColStretch(1,1);
-
- TQLabel *label2 = new TQLabel(i18n("Base shadow size:"),sGroup);
- gLay2->addWidget(label2,0,0);
- inactiveWindowShadowSize = new KIntNumInput(6,sGroup);
- inactiveWindowShadowSize->setRange(0,32);
-// inactiveWindowShadowSize->setSuffix("px");
- gLay2->addWidget(inactiveWindowShadowSize,0,1);
-
- TQLabel *label1 = new TQLabel(i18n("Active window shadow size multiplier:"),sGroup);
- gLay2->addWidget(label1,1,0);
- activeWindowShadowSize = new KIntNumInput(12,sGroup);
- activeWindowShadowSize->setRange(0,32);
-// activeWindowShadowSize->setSuffix("px");
- gLay2->addWidget(activeWindowShadowSize,1,1);
-
- TQLabel *label3 = new TQLabel(i18n("Dock shadow size multiplier:"),sGroup);
- gLay2->addWidget(label3,2,0);
- dockWindowShadowSize = new KIntNumInput(6,sGroup);
- dockWindowShadowSize->setRange(0,32);
-// dockWindowShadowSize->setSuffix("px");
- gLay2->addWidget(dockWindowShadowSize,2,1);
-
- TQLabel *label3a = new TQLabel(i18n("Menu shadow size multiplier:"),sGroup);
- gLay2->addWidget(label3a,3,0);
- menuWindowShadowSize = new KIntNumInput(6,sGroup);
- menuWindowShadowSize->setRange(0,32);
-// menuWindowShadowSize->setSuffix("px");
- gLay2->addWidget(menuWindowShadowSize,3,1);
-
- // Menu shadow settings don't work
- label3a->hide();
- menuWindowShadowSize->hide();
-
- TQLabel *label4 = new TQLabel(i18n("Vertical offset:"),sGroup);
- gLay2->addWidget(label4,4,0);
- shadowTopOffset = new KIntNumInput(80,sGroup);
- shadowTopOffset->setSuffix("%");
- shadowTopOffset->setRange(-200,200);
- gLay2->addWidget(shadowTopOffset,4,1);
-
- TQLabel *label5 = new TQLabel(i18n("Horizontal offset:"),sGroup);
- gLay2->addWidget(label5,5,0);
- shadowLeftOffset = new KIntNumInput(0,sGroup);
- shadowLeftOffset->setSuffix("%");
- shadowLeftOffset->setRange(-200,200);
- gLay2->addWidget(shadowLeftOffset,5,1);
-
- TQLabel *label6 = new TQLabel(i18n("Shadow color:"),sGroup);
- gLay2->addWidget(label6,5,0);
- shadowColor = new KColorButton(Qt::black,sGroup);
- gLay2->addWidget(shadowColor,6,1);
- gLay2->setColStretch(1,1);
- vLay2->addSpacing(11);
- removeShadowsOnMove = new TQCheckBox(i18n("Remove shadows on move"),sGroup);
- vLay2->addWidget(removeShadowsOnMove);
- removeShadowsOnResize = new TQCheckBox(i18n("Remove shadows on resize"),sGroup);
- vLay2->addWidget(removeShadowsOnResize);
- vLay2->addStretch();
- tabW->addTab(sGroup, i18n("Shadows"));
-
- TQWidget *eGroup = new TQWidget(this);
- TQVBoxLayout *vLay3 = new TQVBoxLayout (eGroup,11,6);
-
- fadeInWindows = new TQCheckBox(i18n("Fade-in windows (including popups)"),eGroup);
- fadeInMenuWindows = new TQCheckBox(i18n("Fade-in menus (requires menu fade effect to be disabled in the Styles module)"),eGroup);
- fadeOnOpacityChange = new TQCheckBox(i18n("Fade between opacity changes"),eGroup);
- fadeInSpeed = new KIntNumInput(100, eGroup);
- fadeInSpeed->setRange(1,100);
- fadeInSpeed->setLabel(i18n("Fade-in speed:"));
- fadeOutSpeed = new KIntNumInput(100, eGroup);
- fadeOutSpeed->setRange(1,100);
- fadeOutSpeed->setLabel(i18n("Fade-out speed:"));
- vLay3->addWidget(fadeInWindows);
- vLay3->addWidget(fadeInMenuWindows);
- vLay3->addWidget(fadeOnOpacityChange);
- vLay3->addWidget(fadeInSpeed);
- vLay3->addWidget(fadeOutSpeed);
- vLay3->addStretch();
-
- tabW->addTab(eGroup, i18n("Effects"));
-
- useTranslucency = new TQCheckBox(i18n("Enable the Trinity window composition manager"),this);
- lay->addWidget(useTranslucency);
- lay->addWidget(tabW);
-
- connect(useTranslucency, TQT_SIGNAL(toggled(bool)), tabW, TQT_SLOT(setEnabled(bool)));
-
- connect(activeWindowTransparency, TQT_SIGNAL(toggled(bool)), activeWindowOpacity, TQT_SLOT(setEnabled(bool)));
- connect(inactiveWindowTransparency, TQT_SIGNAL(toggled(bool)), inactiveWindowOpacity, TQT_SLOT(setEnabled(bool)));
- connect(movingWindowTransparency, TQT_SIGNAL(toggled(bool)), movingWindowOpacity, TQT_SLOT(setEnabled(bool)));
- connect(dockWindowTransparency, TQT_SIGNAL(toggled(bool)), dockWindowOpacity, TQT_SLOT(setEnabled(bool)));
-
- connect(useTranslucency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(onlyDecoTranslucent, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(activeWindowTransparency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(inactiveWindowTransparency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(movingWindowTransparency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(dockWindowTransparency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(keepAboveAsActive, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(disableARGB, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(removeShadowsOnResize, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(removeShadowsOnMove, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
-
- connect(activeWindowOpacity, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(inactiveWindowOpacity, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(movingWindowOpacity, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(dockWindowOpacity, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(dockWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(menuWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(activeWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(changed()));
- connect(fadeInWindows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(fadeInMenuWindows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(fadeOnOpacityChange, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
- connect(fadeInSpeed, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
- connect(fadeOutSpeed, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
-
- connect(useShadows, TQT_SIGNAL(toggled(bool)), dockWindowShadowSize, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), menuWindowShadowSize, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), activeWindowShadowSize, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), inactiveWindowShadowSize, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowTopOffset, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowLeftOffset, TQT_SLOT(setEnabled(bool)));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowColor, TQT_SLOT(setEnabled(bool)));
-
- load();
-
- tabW->setEnabled(useTranslucency->isChecked());
-
- connect(useTranslucency, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(showWarning(bool)));
-
- // handle kompmgr restarts if necessary
- connect(useTranslucency, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(disableARGB, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(useShadows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
- connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
- connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
- connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(resetKompmgr()));
- connect(fadeInWindows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(fadeInMenuWindows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(fadeOnOpacityChange, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
- connect(fadeInSpeed, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
- connect(fadeOutSpeed, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
-
- }
-}
-
-void KTranslucencyConfig::resetKompmgr()
-{
- resetKompmgr_ = TRUE;
-}
-void KTranslucencyConfig::load( void )
-{
-
- if (!kompmgrAvailable_)
- return;
- config->setGroup( "Notification Messages" );
- useTranslucency->setChecked(config->readBoolEntry("UseTranslucency",false));
-
- config->setGroup( "Translucency" );
- activeWindowTransparency->setChecked(config->readBoolEntry("TranslucentActiveWindows",false));
- inactiveWindowTransparency->setChecked(config->readBoolEntry("TranslucentInactiveWindows",false));
- movingWindowTransparency->setChecked(config->readBoolEntry("TranslucentMovingWindows",false));
- removeShadowsOnMove->setChecked(config->readBoolEntry("RemoveShadowsOnMove",false));
- removeShadowsOnResize->setChecked(config->readBoolEntry("RemoveShadowsOnResize",false));
- dockWindowTransparency->setChecked(config->readBoolEntry("TranslucentDocks",false));
- keepAboveAsActive->setChecked(config->readBoolEntry("TreatKeepAboveAsActive",true));
- onlyDecoTranslucent->setChecked(config->readBoolEntry("OnlyDecoTranslucent",false));
-
- activeWindowOpacity->setValue(config->readNumEntry("ActiveWindowOpacity",100));
- inactiveWindowOpacity->setValue(config->readNumEntry("InactiveWindowOpacity",75));
- movingWindowOpacity->setValue(config->readNumEntry("MovingWindowOpacity",25));
- dockWindowOpacity->setValue(config->readNumEntry("DockOpacity",80));
-
- int ass, iss, dss, mss;
- dss = config->readNumEntry("DockShadowSize", 33);
- mss = config->readNumEntry("MenuShadowSize", 33);
- ass = config->readNumEntry("ActiveWindowShadowSize", 133);
- iss = config->readNumEntry("InactiveWindowShadowSize", 67);
-
- activeWindowOpacity->setEnabled(activeWindowTransparency->isChecked());
- inactiveWindowOpacity->setEnabled(inactiveWindowTransparency->isChecked());
- movingWindowOpacity->setEnabled(movingWindowTransparency->isChecked());
- dockWindowOpacity->setEnabled(dockWindowTransparency->isChecked());
-
- KConfig conf_(TQDir::homeDirPath() + "/.xcompmgrrc");
- conf_.setGroup("xcompmgr");
-
- disableARGB->setChecked(conf_.readBoolEntry("DisableARGB",FALSE));
-
- useShadows->setChecked(conf_.readEntry("Compmode","").compare("CompClientShadows") == 0);
- shadowTopOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetY",-80)));
- shadowLeftOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetX",0)));
-
- int ss = conf_.readNumEntry("ShadowRadius",6);
- dockWindowShadowSize->setValue((int)(dss*ss/100.0));
- menuWindowShadowSize->setValue((int)(mss*ss/100.0));
- activeWindowShadowSize->setValue((int)(ass*ss/100.0));
- inactiveWindowShadowSize->setValue((int)(iss*ss/100.0));
-
- TQString hex = conf_.readEntry("ShadowColor","#000000");
- uint r, g, b;
- r = g = b = 256;
-
- if (sscanf(hex.latin1(), "0x%02x%02x%02x", &r, &g, &b)!=3 || r > 255 || g > 255 || b > 255)
- shadowColor->setColor(Qt::black);
- else
- shadowColor->setColor(TQColor(r,g,b));
-
- fadeInWindows->setChecked(conf_.readBoolEntry("FadeWindows",FALSE));
- fadeInMenuWindows->setChecked(conf_.readBoolEntry("FadeMenuWindows",FALSE));
- fadeOnOpacityChange->setChecked(conf_.readBoolEntry("FadeTrans",FALSE));
- fadeInSpeed->setValue((int)(conf_.readDoubleNumEntry("FadeInStep",0.070)*1000.0));
- fadeOutSpeed->setValue((int)(conf_.readDoubleNumEntry("FadeOutStep",0.070)*1000.0));
-
- emit KCModule::changed(false);
-}
-
-void KTranslucencyConfig::save( void )
-{
- if (!kompmgrAvailable_)
- return;
- config->setGroup( "Notification Messages" );
- config->writeEntry("UseTranslucency",useTranslucency->isChecked());
-
- config->setGroup( "Translucency" );
- config->writeEntry("TranslucentActiveWindows",activeWindowTransparency->isChecked());
- config->writeEntry("TranslucentInactiveWindows",inactiveWindowTransparency->isChecked());
- config->writeEntry("TranslucentMovingWindows",movingWindowTransparency->isChecked());
- config->writeEntry("TranslucentDocks",dockWindowTransparency->isChecked());
- config->writeEntry("TreatKeepAboveAsActive",keepAboveAsActive->isChecked());
- config->writeEntry("ActiveWindowOpacity",activeWindowOpacity->value());
- config->writeEntry("InactiveWindowOpacity",inactiveWindowOpacity->value());
- config->writeEntry("MovingWindowOpacity",movingWindowOpacity->value());
- config->writeEntry("DockOpacity",dockWindowOpacity->value());
- // for simplification:
- // xcompmgr supports a general shadow radius and additionally lets external apps set a multiplicator for each window
- // (speed reasons, so the shadow matrix hasn't to be recreated for every window)
- // we set inactive windows to 100%, the radius to the inactive window value and adjust the multiplicators for docks and active windows
- // this way the user can set the three values without caring about the radius/multiplicator stuff
- // additionally we find a value between big and small values to have a more smooth appereance
- config->writeEntry("DockShadowSize",(int)(200.0 * dockWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value())));
- config->writeEntry("MenuShadowSize",(int)(200.0 * menuWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value())));
- config->writeEntry("ActiveWindowShadowSize",(int)(200.0 * activeWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value())));
- config->writeEntry("InactiveWindowShadowSize",(int)(200.0 * inactiveWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value())));
-
- config->writeEntry("RemoveShadowsOnMove",removeShadowsOnMove->isChecked());
- config->writeEntry("RemoveShadowsOnResize",removeShadowsOnResize->isChecked());
- config->writeEntry("OnlyDecoTranslucent", onlyDecoTranslucent->isChecked());
- config->writeEntry("ResetKompmgr",resetKompmgr_);
-
- KConfig *conf_ = new KConfig(TQDir::homeDirPath() + "/.xcompmgrrc");
- conf_->setGroup("xcompmgr");
-
- conf_->writeEntry("Compmode",useShadows->isChecked()?"CompClientShadows":"");
- conf_->writeEntry("DisableARGB",disableARGB->isChecked());
- conf_->writeEntry("ShadowOffsetY",-1*shadowTopOffset->value());
- conf_->writeEntry("ShadowOffsetX",-1*shadowLeftOffset->value());
-
-
- int r, g, b;
- shadowColor->color().rgb( &r, &g, &b );
- TQString hex;
- hex.sprintf("0x%02X%02X%02X", r,g,b);
- conf_->writeEntry("ShadowColor",hex);
- conf_->writeEntry("ShadowRadius",(activeWindowShadowSize->value() + inactiveWindowShadowSize->value()) / 2);
- conf_->writeEntry("FadeWindows",fadeInWindows->isChecked());
- conf_->writeEntry("FadeMenuWindows",fadeInMenuWindows->isChecked());
- conf_->writeEntry("FadeTrans",fadeOnOpacityChange->isChecked());
- conf_->writeEntry("FadeInStep",fadeInSpeed->value()/1000.0);
- conf_->writeEntry("FadeOutStep",fadeOutSpeed->value()/1000.0);
-
- delete conf_;
-
- if (standAlone)
- {
- config->sync();
- if ( !kapp->dcopClient()->isAttached() )
- kapp->dcopClient()->attach();
- kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
- }
- if (useTranslucency->isChecked())
- startKompmgr();
- emit KCModule::changed(false);
-}
-
-void KTranslucencyConfig::defaults()
-{
- if (!kompmgrAvailable_)
- return;
- useTranslucency->setChecked(false);
- onlyDecoTranslucent->setChecked(false);
- activeWindowTransparency->setChecked(false);
- inactiveWindowTransparency->setChecked(false);
- movingWindowTransparency->setChecked(false);
- dockWindowTransparency->setChecked(false);
- keepAboveAsActive->setChecked(true);
- disableARGB->setChecked(false);
-
- activeWindowOpacity->setValue(100);
- inactiveWindowOpacity->setValue(75);
- movingWindowOpacity->setValue(25);
- dockWindowOpacity->setValue(80);
-
- dockWindowShadowSize->setValue(6);
- menuWindowShadowSize->setValue(6);
- activeWindowShadowSize->setValue(12);
- inactiveWindowShadowSize->setValue(6);
- shadowTopOffset->setValue(80);
- shadowLeftOffset->setValue(0);
-
- activeWindowOpacity->setEnabled(false);
- inactiveWindowOpacity->setEnabled(false);
- movingWindowOpacity->setEnabled(false);
- dockWindowOpacity->setEnabled(false);
- useShadows->setChecked(FALSE);
- removeShadowsOnMove->setChecked(FALSE);
- removeShadowsOnResize->setChecked(FALSE);
- shadowColor->setColor(Qt::black);
- fadeInWindows->setChecked(FALSE);
- fadeInMenuWindows->setChecked(FALSE);
- fadeOnOpacityChange->setChecked(FALSE);
- fadeInSpeed->setValue(70);
- fadeOutSpeed->setValue(70);
- emit KCModule::changed(true);
-}
-
-
-bool KTranslucencyConfig::kompmgrAvailable()
-{
- bool ret;
- KProcess proc;
- proc << "kompmgr" << "-v";
- ret = proc.start(KProcess::DontCare, KProcess::AllOutput);
- proc.detach();
- return ret;
-}
-
-void KTranslucencyConfig::startKompmgr()
-{
- bool ret;
- KProcess proc;
- proc << "kompmgr";
- ret = proc.start(KProcess::DontCare);
-}
-
-void KTranslucencyConfig::showWarning(bool alphaActivated)
-{
-// if (alphaActivated)
-// KMessageBox::information(this, i18n("<qt>Translucency support is new and may cause problems<br> including crashes (sometimes the translucency engine, seldom even X).</qt>"), i18n("Warning"));
-}
-
-#include "windows.moc"