Split the actions tab into two.

svn path=/trunk/KDE/kdebase/kwin/; revision=409955
icc-effect-5.14.5
Luboš Luňák 2005-05-06 08:47:48 +00:00
parent cc7ab636af
commit 68cde4a2ef
4 changed files with 353 additions and 180 deletions

View File

@ -48,8 +48,7 @@ extern "C"
{
//CT there's need for decision: kwm or kwin?
KGlobal::locale()->insertCatalogue("kcmkwm");
KConfig *c = new KConfig("kwinrc", false, true);
return new KActionsConfig(true, c, parent, name);
return new KActionsOptions( parent, name);
}
KDE_EXPORT KCModule *create_kwinmoving(QWidget *parent, const char *name)
@ -98,10 +97,15 @@ KWinOptions::KWinOptions(QWidget *parent, const char *name)
tab->addTab(mFocus, i18n("&Focus"));
connect(mFocus, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
mActions = new KActionsConfig(false, mConfig, this, "KWin Actions");
mActions->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mActions, i18n("Actio&ns"));
connect(mActions, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
mTitleBarActions = new KTitleBarActionsConfig(false, mConfig, this, "KWin TitleBar Actions");
mTitleBarActions->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mTitleBarActions, i18n("&Titlebar Actions"));
connect(mTitleBarActions, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
mWindowActions = new KWindowActionsConfig(false, mConfig, this, "KWin Window Actions");
mWindowActions->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mWindowActions, i18n("Window Actio&ns"));
connect(mWindowActions, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
mMoving = new KMovingConfig(false, mConfig, this, "KWin Moving");
mMoving->layout()->setMargin( KDialog::marginHint() );
@ -144,7 +148,8 @@ void KWinOptions::load()
{
mConfig->reparseConfiguration();
mFocus->load();
mActions->load();
mTitleBarActions->load();
mWindowActions->load();
mMoving->load();
mAdvanced->load();
mTranslucency->load();
@ -155,7 +160,8 @@ void KWinOptions::load()
void KWinOptions::save()
{
mFocus->save();
mActions->save();
mTitleBarActions->save();
mWindowActions->save();
mMoving->save();
mAdvanced->save();
mTranslucency->save();
@ -172,7 +178,8 @@ void KWinOptions::save()
void KWinOptions::defaults()
{
mFocus->defaults();
mActions->defaults();
mTitleBarActions->defaults();
mWindowActions->defaults();
mMoving->defaults();
mAdvanced->defaults();
mTranslucency->defaults();
@ -194,4 +201,62 @@ void KWinOptions::moduleChanged(bool state)
}
KActionsOptions::KActionsOptions(QWidget *parent, const char *name)
: KCModule(parent, name)
{
mConfig = new KConfig("kwinrc", false, true);
QVBoxLayout *layout = new QVBoxLayout(this);
tab = new QTabWidget(this);
layout->addWidget(tab);
mTitleBarActions = new KTitleBarActionsConfig(false, mConfig, this, "KWin TitleBar Actions");
mTitleBarActions->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mTitleBarActions, i18n("&Titlebar Actions"));
connect(mTitleBarActions, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
mWindowActions = new KWindowActionsConfig(false, mConfig, this, "KWin Window Actions");
mWindowActions->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mWindowActions, i18n("Window Actio&ns"));
connect(mWindowActions, SIGNAL(changed(bool)), this, SLOT(moduleChanged(bool)));
}
KActionsOptions::~KActionsOptions()
{
delete mConfig;
}
void KActionsOptions::load()
{
mTitleBarActions->load();
mWindowActions->load();
emit KCModule::changed( false );
}
void KActionsOptions::save()
{
mTitleBarActions->save();
mWindowActions->save();
emit KCModule::changed( false );
// Send signal to kwin
mConfig->sync();
if ( !kapp->dcopClient()->isAttached() )
kapp->dcopClient()->attach();
kapp->dcopClient()->send("kwin*", "", "reconfigure()", "");
}
void KActionsOptions::defaults()
{
mTitleBarActions->defaults();
mWindowActions->defaults();
}
void KActionsOptions::moduleChanged(bool state)
{
emit KCModule::changed(state);
}
#include "main.moc"

View File

@ -30,7 +30,8 @@
class KConfig;
class KFocusConfig;
class KActionsConfig;
class KTitleBarActionsConfig;
class KWindowActionsConfig;
class KAdvancedConfig;
class KTranslucencyConfig;
@ -59,7 +60,8 @@ private:
QTabWidget *tab;
KFocusConfig *mFocus;
KActionsConfig *mActions;
KTitleBarActionsConfig *mTitleBarActions;
KWindowActionsConfig *mWindowActions;
KMovingConfig *mMoving;
KAdvancedConfig *mAdvanced;
KTranslucencyConfig *mTranslucency;
@ -67,4 +69,32 @@ private:
KConfig *mConfig;
};
class KActionsOptions : public KCModule
{
Q_OBJECT
public:
KActionsOptions(QWidget *parent, const char *name);
virtual ~KActionsOptions();
void load();
void save();
void defaults();
protected slots:
void moduleChanged(bool state);
private:
QTabWidget *tab;
KTitleBarActionsConfig *mTitleBarActions;
KWindowActionsConfig *mWindowActions;
KConfig *mConfig;
};
#endif

View File

@ -123,7 +123,7 @@ void createMaxButtonPixmaps()
} // namespace
void KActionsConfig::paletteChanged()
void KTitleBarActionsConfig::paletteChanged()
{
createMaxButtonPixmaps();
for (int b = 0; b < 3; ++b)
@ -132,7 +132,7 @@ void KActionsConfig::paletteChanged()
}
KActionsConfig::KActionsConfig (bool _standAlone, KConfig *_config, QWidget * parent, const char *)
KTitleBarActionsConfig::KTitleBarActionsConfig (bool _standAlone, KConfig *_config, QWidget * parent, const char *)
: KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
{
QString strWin1, strWin2, strWin3, strAllKey, strAll1, strAll2, strAll3;
@ -344,6 +344,205 @@ KActionsConfig::KActionsConfig (bool _standAlone, KConfig *_config, QWidget * pa
connect(kapp, SIGNAL(kdisplayPaletteChanged()), SLOT(paletteChanged()));
layout->addStretch();
load();
}
KTitleBarActionsConfig::~KTitleBarActionsConfig()
{
if (standAlone)
delete config;
}
// do NOT change the texts below, they are written to config file
// and are not shown in the GUI
// they have to match the order of items in GUI elements though
const char* const tbl_TiDbl[] = {
"Maximize",
"Maximize (vertical only)",
"Maximize (horizontal only)",
"Minimize",
"Shade",
"Lower",
"OnAllDesktops",
"Nothing",
"" };
const char* const tbl_TiAc[] = {
"Raise",
"Lower",
"Operations menu",
"Toggle raise and lower",
"Nothing",
"Shade",
"" };
const char* const tbl_TiInAc[] = {
"Activate and raise",
"Activate and lower",
"Activate",
"Shade",
"Operations menu",
"Raise",
"Lower",
"Nothing",
"" };
const char* const tbl_Win[] = {
"Activate, raise and pass click",
"Activate and pass click",
"Activate",
"Activate and raise",
"" };
const char* const tbl_AllKey[] = {
"Meta",
"Alt",
"" };
const char* const tbl_All[] = {
"Move",
"Activate, raise and move",
"Toggle raise and lower",
"Resize",
"Raise",
"Lower",
"Minimize",
"Nothing",
"" };
static const char* tbl_num_lookup( const char* const arr[], int pos )
{
for( int i = 0;
arr[ i ][ 0 ] != '\0' && pos >= 0;
++i )
{
if( pos == 0 )
return arr[ i ];
--pos;
}
abort(); // should never happen this way
}
static int tbl_txt_lookup( const char* const arr[], const char* txt )
{
int pos = 0;
for( int i = 0;
arr[ i ][ 0 ] != '\0';
++i )
{
if( qstricmp( txt, arr[ i ] ) == 0 )
return pos;
++pos;
}
return 0;
}
void KTitleBarActionsConfig::setComboText( QComboBox* combo, const char*txt )
{
if( combo == coTiDbl )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiDbl, txt ));
else if( combo == coTiAct1 || combo == coTiAct2 || combo == coTiAct3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiAc, txt ));
else if( combo == coTiInAct1 || combo == coTiInAct2 || combo == coTiInAct3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiInAc, txt ));
else if( combo == coMax[0] || combo == coMax[1] || combo == coMax[2] )
{
combo->setCurrentItem( tbl_txt_lookup( tbl_Max, txt ));
static_cast<ToolTipComboBox *>(combo)->changed();
}
else
abort();
}
const char* KTitleBarActionsConfig::functionTiDbl( int i )
{
return tbl_num_lookup( tbl_TiDbl, i );
}
const char* KTitleBarActionsConfig::functionTiAc( int i )
{
return tbl_num_lookup( tbl_TiAc, i );
}
const char* KTitleBarActionsConfig::functionTiInAc( int i )
{
return tbl_num_lookup( tbl_TiInAc, i );
}
const char* KTitleBarActionsConfig::functionMax( int i )
{
return tbl_num_lookup( tbl_Max, i );
}
void KTitleBarActionsConfig::load()
{
config->setGroup("Windows");
setComboText(coTiDbl, config->readEntry("TitlebarDoubleClickCommand","Shade").ascii());
for (int t = 0; t < 3; ++t)
setComboText(coMax[t],config->readEntry(cnf_Max[t], tbl_Max[t]).ascii());
config->setGroup( "MouseBindings");
setComboText(coTiAct1,config->readEntry("CommandActiveTitlebar1","Raise").ascii());
setComboText(coTiAct2,config->readEntry("CommandActiveTitlebar2","Lower").ascii());
setComboText(coTiAct3,config->readEntry("CommandActiveTitlebar3","Operations menu").ascii());
setComboText(coTiInAct1,config->readEntry("CommandInactiveTitlebar1","Activate and raise").ascii());
setComboText(coTiInAct2,config->readEntry("CommandInactiveTitlebar2","Activate and lower").ascii());
setComboText(coTiInAct3,config->readEntry("CommandInactiveTitlebar3","Operations menu").ascii());
}
void KTitleBarActionsConfig::save()
{
config->setGroup("Windows");
config->writeEntry("TitlebarDoubleClickCommand", functionTiDbl( coTiDbl->currentItem() ) );
for (int t = 0; t < 3; ++t)
config->writeEntry(cnf_Max[t], functionMax(coMax[t]->currentItem()));
config->setGroup("MouseBindings");
config->writeEntry("CommandActiveTitlebar1", functionTiAc(coTiAct1->currentItem()));
config->writeEntry("CommandActiveTitlebar2", functionTiAc(coTiAct2->currentItem()));
config->writeEntry("CommandActiveTitlebar3", functionTiAc(coTiAct3->currentItem()));
config->writeEntry("CommandInactiveTitlebar1", functionTiInAc(coTiInAct1->currentItem()));
config->writeEntry("CommandInactiveTitlebar2", functionTiInAc(coTiInAct2->currentItem()));
config->writeEntry("CommandInactiveTitlebar3", functionTiInAc(coTiInAct3->currentItem()));
if (standAlone)
{
config->sync();
if ( !kapp->dcopClient()->isAttached() )
kapp->dcopClient()->attach();
kapp->dcopClient()->send("kwin*", "", "reconfigure()", "");
}
}
void KTitleBarActionsConfig::defaults()
{
setComboText(coTiDbl, "Shade");
setComboText(coTiAct1,"Raise");
setComboText(coTiAct2,"Lower");
setComboText(coTiAct3,"Operations menu");
setComboText(coTiInAct1,"Activate and raise");
setComboText(coTiInAct2,"Activate and lower");
setComboText(coTiInAct3,"Operations menu");
for (int t = 0; t < 3; ++t)
setComboText(coMax[t], tbl_Max[t]);
}
KWindowActionsConfig::KWindowActionsConfig (bool _standAlone, KConfig *_config, QWidget * parent, const char *)
: KCModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
{
QString strWin1, strWin2, strWin3, strAllKey, strAll1, strAll2, strAll3;
QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialog::spacingHint());
QGrid *grid;
QGroupBox *box;
QLabel *label;
QString strMouseButton1, strMouseButton3;
QString txtButton1, txtButton3;
QStringList items;
bool leftHandedMouse = ( KGlobalSettings::mouseSettings().handed == KGlobalSettings::KMouseSettings::LeftHanded);
/** Inactive inner window ******************/
box = new QVGroupBox(i18n("Inactive Inner Window"), this, "Inactive Inner Window");
@ -395,7 +594,7 @@ KActionsConfig::KActionsConfig (bool _standAlone, KConfig *_config, QWidget * pa
<< i18n("Activate")
<< i18n("Activate & Raise");
combo = new QComboBox(grid);
QComboBox* combo = new QComboBox(grid);
combo->insertStringList(items);
connect(combo, SIGNAL(activated(int)), SLOT(changed()));
coWin1 = combo;
@ -499,168 +698,42 @@ KActionsConfig::KActionsConfig (bool _standAlone, KConfig *_config, QWidget * pa
load();
}
KActionsConfig::~KActionsConfig()
KWindowActionsConfig::~KWindowActionsConfig()
{
if (standAlone)
delete config;
}
// do NOT change the texts below, they are written to config file
// and are not shown in the GUI
// they have to match the order of items in GUI elements though
const char* const tbl_TiDbl[] = {
"Maximize",
"Maximize (vertical only)",
"Maximize (horizontal only)",
"Minimize",
"Shade",
"Lower",
"OnAllDesktops",
"Nothing",
"" };
const char* const tbl_TiAc[] = {
"Raise",
"Lower",
"Operations menu",
"Toggle raise and lower",
"Nothing",
"Shade",
"" };
const char* const tbl_TiInAc[] = {
"Activate and raise",
"Activate and lower",
"Activate",
"Shade",
"Operations menu",
"Raise",
"Lower",
"Nothing",
"" };
const char* const tbl_Win[] = {
"Activate, raise and pass click",
"Activate and pass click",
"Activate",
"Activate and raise",
"" };
const char* const tbl_AllKey[] = {
"Meta",
"Alt",
"" };
const char* const tbl_All[] = {
"Move",
"Activate, raise and move",
"Toggle raise and lower",
"Resize",
"Raise",
"Lower",
"Minimize",
"Nothing",
"" };
static const char* tbl_num_lookup( const char* const arr[], int pos )
void KWindowActionsConfig::setComboText( QComboBox* combo, const char*txt )
{
for( int i = 0;
arr[ i ][ 0 ] != '\0' && pos >= 0;
++i )
{
if( pos == 0 )
return arr[ i ];
--pos;
}
abort(); // should never happen this way
}
static int tbl_txt_lookup( const char* const arr[], const char* txt )
{
int pos = 0;
for( int i = 0;
arr[ i ][ 0 ] != '\0';
++i )
{
if( qstricmp( txt, arr[ i ] ) == 0 )
return pos;
++pos;
}
return 0;
}
void KActionsConfig::setComboText( QComboBox* combo, const char*txt )
{
if( combo == coTiDbl )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiDbl, txt ));
else if( combo == coTiAct1 || combo == coTiAct2 || combo == coTiAct3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiAc, txt ));
else if( combo == coTiInAct1 || combo == coTiInAct2 || combo == coTiInAct3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_TiInAc, txt ));
else if( combo == coWin1 || combo == coWin2 || combo == coWin3 )
if( combo == coWin1 || combo == coWin2 || combo == coWin3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_Win, txt ));
else if( combo == coAllKey )
combo->setCurrentItem( tbl_txt_lookup( tbl_AllKey, txt ));
else if( combo == coAll1 || combo == coAll2 || combo == coAll3 )
combo->setCurrentItem( tbl_txt_lookup( tbl_All, txt ));
else if( combo == coMax[0] || combo == coMax[1] || combo == coMax[2] )
{
combo->setCurrentItem( tbl_txt_lookup( tbl_Max, txt ));
static_cast<ToolTipComboBox *>(combo)->changed();
}
else
abort();
}
const char* KActionsConfig::functionTiDbl( int i )
{
return tbl_num_lookup( tbl_TiDbl, i );
}
const char* KActionsConfig::functionTiAc( int i )
{
return tbl_num_lookup( tbl_TiAc, i );
}
const char* KActionsConfig::functionTiInAc( int i )
{
return tbl_num_lookup( tbl_TiInAc, i );
}
const char* KActionsConfig::functionWin( int i )
const char* KWindowActionsConfig::functionWin( int i )
{
return tbl_num_lookup( tbl_Win, i );
}
const char* KActionsConfig::functionAllKey( int i )
const char* KWindowActionsConfig::functionAllKey( int i )
{
return tbl_num_lookup( tbl_AllKey, i );
}
const char* KActionsConfig::functionAll( int i )
const char* KWindowActionsConfig::functionAll( int i )
{
return tbl_num_lookup( tbl_All, i );
}
const char* KActionsConfig::functionMax( int i )
void KWindowActionsConfig::load()
{
return tbl_num_lookup( tbl_Max, i );
}
void KActionsConfig::load()
{
config->setGroup("Windows");
setComboText(coTiDbl, config->readEntry("TitlebarDoubleClickCommand","Shade").ascii());
for (int t = 0; t < 3; ++t)
setComboText(coMax[t],config->readEntry(cnf_Max[t], tbl_Max[t]).ascii());
config->setGroup( "MouseBindings");
setComboText(coTiAct1,config->readEntry("CommandActiveTitlebar1","Raise").ascii());
setComboText(coTiAct2,config->readEntry("CommandActiveTitlebar2","Lower").ascii());
setComboText(coTiAct3,config->readEntry("CommandActiveTitlebar3","Operations menu").ascii());
setComboText(coTiInAct1,config->readEntry("CommandInactiveTitlebar1","Activate and raise").ascii());
setComboText(coTiInAct2,config->readEntry("CommandInactiveTitlebar2","Activate and lower").ascii());
setComboText(coTiInAct3,config->readEntry("CommandInactiveTitlebar3","Operations menu").ascii());
setComboText(coWin1,config->readEntry("CommandWindow1","Activate, raise and pass click").ascii());
setComboText(coWin2,config->readEntry("CommandWindow2","Activate and pass click").ascii());
setComboText(coWin3,config->readEntry("CommandWindow3","Activate and pass click").ascii());
@ -670,20 +743,9 @@ void KActionsConfig::load()
setComboText(coAll3,config->readEntry("CommandAll3","Resize").ascii());
}
void KActionsConfig::save()
void KWindowActionsConfig::save()
{
config->setGroup("Windows");
config->writeEntry("TitlebarDoubleClickCommand", functionTiDbl( coTiDbl->currentItem() ) );
for (int t = 0; t < 3; ++t)
config->writeEntry(cnf_Max[t], functionMax(coMax[t]->currentItem()));
config->setGroup("MouseBindings");
config->writeEntry("CommandActiveTitlebar1", functionTiAc(coTiAct1->currentItem()));
config->writeEntry("CommandActiveTitlebar2", functionTiAc(coTiAct2->currentItem()));
config->writeEntry("CommandActiveTitlebar3", functionTiAc(coTiAct3->currentItem()));
config->writeEntry("CommandInactiveTitlebar1", functionTiInAc(coTiInAct1->currentItem()));
config->writeEntry("CommandInactiveTitlebar2", functionTiInAc(coTiInAct2->currentItem()));
config->writeEntry("CommandInactiveTitlebar3", functionTiInAc(coTiInAct3->currentItem()));
config->writeEntry("CommandWindow1", functionWin(coWin1->currentItem()));
config->writeEntry("CommandWindow2", functionWin(coWin2->currentItem()));
config->writeEntry("CommandWindow3", functionWin(coWin3->currentItem()));
@ -701,15 +763,8 @@ void KActionsConfig::save()
}
}
void KActionsConfig::defaults()
void KWindowActionsConfig::defaults()
{
setComboText(coTiDbl, "Shade");
setComboText(coTiAct1,"Raise");
setComboText(coTiAct2,"Lower");
setComboText(coTiAct3,"Operations menu");
setComboText(coTiInAct1,"Activate and raise");
setComboText(coTiInAct2,"Activate and lower");
setComboText(coTiInAct3,"Operations menu");
setComboText(coWin1,"Activate, raise and pass click");
setComboText(coWin2,"Activate and pass click");
setComboText(coWin3,"Activate and pass click");
@ -717,6 +772,4 @@ void KActionsConfig::defaults()
setComboText (coAll1,"Move");
setComboText(coAll2,"Toggle raise and lower");
setComboText(coAll3,"Resize");
for (int t = 0; t < 3; ++t)
setComboText(coMax[t], tbl_Max[t]);
}

View File

@ -48,14 +48,14 @@ protected:
class KActionsConfig : public KCModule
class KTitleBarActionsConfig : public KCModule
{
Q_OBJECT
public:
KActionsConfig( bool _standAlone, KConfig *_config, QWidget *parent=0, const char* name=0 );
~KActionsConfig( );
KTitleBarActionsConfig( bool _standAlone, KConfig *_config, QWidget *parent=0, const char* name=0 );
~KTitleBarActionsConfig( );
void load();
void save();
@ -76,6 +76,39 @@ private:
ToolTipComboBox * coMax[3];
KConfig *config;
bool standAlone;
const char* functionTiDbl(int);
const char* functionTiAc(int);
const char* functionTiInAc(int);
const char* functionMax(int);
void setComboText(QComboBox* combo, const char* text);
const char* fixup( const char* s );
private slots:
void paletteChanged();
};
class KWindowActionsConfig : public KCModule
{
Q_OBJECT
public:
KWindowActionsConfig( bool _standAlone, KConfig *_config, QWidget *parent=0, const char* name=0 );
~KWindowActionsConfig( );
void load();
void save();
void defaults();
public slots:
void changed() { emit KCModule::changed(true); }
private:
QComboBox* coWin1;
QComboBox* coWin2;
QComboBox* coWin3;
@ -88,20 +121,12 @@ private:
KConfig *config;
bool standAlone;
const char* functionTiDbl(int);
const char* functionTiAc(int);
const char* functionTiInAc(int);
const char* functionWin(int);
const char* functionAllKey(int);
const char* functionAll(int);
const char* functionMax(int);
void setComboText(QComboBox* combo, const char* text);
const char* fixup( const char* s );
private slots:
void paletteChanged();
};
#endif