/*************************************************************************** * Copyright (C) 2004 by Thomas Lübking * * thomas@home * * * * 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., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include //#include // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "tdestyle_baghira_config.h" #include "pixmaps.h" #include "colordialog.h" #include "colorpicker.h" #include "config.h" //#define VERSION "0.7" #ifndef TDE_VERSION_STRING #define TDE_VERSION_STRING "error" #endif #ifndef TQT_BUILD_KEY #define TQT_BUILD_KEY "error error error error" #endif #define CLAMP(x,l,u) x < l ? l :\ x > u ? u :\ x #define SATURATION_COLOR(R,G,B) \ grey = (299 * R + 587 * G + 114 * B) / 1000; \ delta = 255 - grey; \ grey = (grey *(10 - 5)) / 10; \ iGrey = 255 - grey;\ destR = (iGrey * (srcR - delta) + grey * R) / 255; \ destG = (iGrey * (srcG - delta) + grey * G) / 255; \ destB = (iGrey * (srcB - delta) + grey * B) / 255; #define SATURATION_COLOR2(S,R,G,B) \ int max = (int)(255+0.65*(100-S)); \ destR = CLAMP((srcR + R - 128), 0, max); \ destG = CLAMP((srcG + G - 128), 0, max); \ destB = CLAMP((srcB + B - 128), 0, max); \ destR = (S*destR + (100-S)*R)/100; \ destG = (S*destG + (100-S)*G)/100; \ destB = (S*destB + (100-S)*B)/100; #define COLOR_SPACE(R,G,B) \ if ( R < 0 ) R = 0; else if ( R > 255 ) R = 255; \ if ( G < 0 ) G = 0; else if ( G > 255 ) G = 255; \ if ( B < 0 ) B = 0; else if ( B > 255 ) B = 255; void tdestyle_baghira_config::openHtml1() { TQStringList args; args << "exec" << "http://baghira.sf.net/"; kapp->tdeinitExec("kfmclient", args); } void tdestyle_baghira_config::openHtml2() { TQStringList args; args << "exec" << "http://www.sf.net/projects/baghira/files/"; kapp->tdeinitExec("kfmclient", args); } void tdestyle_baghira_config::startBab() { kapp->tdeinitExec("bab"); } void tdestyle_baghira_config::startKRuler() { kapp->tdeinitExec("kruler"); } TQImage* tdestyle_baghira_config::tintButton(TQImage &src, TQColor c) { TQImage *dest = new TQImage( src.width(), src.height(), 32, 0 ); dest->setAlphaBuffer( true ); unsigned int *data = ( unsigned int * ) src.bits(); unsigned int *destData = ( unsigned int* ) dest->bits(); int total = src.width() * src.height(); int red, green, blue; int destR, destG, destB, alpha; int srcR = c.red(); int srcG = c.green(); int srcB = c.blue(); int hue, s, v; c.getHsv( &hue, &s, &v ); int sq = CLAMP((int)((45.0/128.0)*s+55),0,100); // float srcPercent, destPercent; for ( int current = 0 ; current < total ; ++current ) { alpha = tqAlpha( data[ current ] ); blue = tqBlue( data[ current ] ); red = tqRed( data[ current ] ); green = tqGreen( data[ current ] ); SATURATION_COLOR2(sq, red, green, blue); // force back to valid colorspace ! COLOR_SPACE(destR, destG, destB); destData[ current ] = tqRgba( destR, destG, destB, alpha ); } return ( dest ); } TQImage* tdestyle_baghira_config::tintBrush( TQImage &img, TQColor c) { TQImage *dest = new TQImage( img.width(), img.height(), 32, 0 ); unsigned int *data = ( unsigned int * ) img.bits(); unsigned int *destData = ( unsigned int* ) dest->bits(); int total = img.width() * img.height(); int current; int delta; int red, green, blue, grey, iGrey; int destR, destG, destB, alpha; int srcR = c.red(); int srcG = c.green(); int srcB = c.blue(); // float srcPercent, destPercent; for ( current = 0 ; current < total ; ++current ) { alpha = tqAlpha( data[ current ] ); blue = tqBlue( data[ current ] ); red = tqRed( data[ current ] ); green = tqGreen( data[ current ] ); SATURATION_COLOR(red, green, blue); // force back to valid colorspace ! COLOR_SPACE(destR, destG, destB); destData[ current ] = tqRgba( destR, destG, destB, alpha ); } return ( dest ); } void tdestyle_baghira_config::sliderButtonRedChanged(int value) { sliderButtonRedValue = value; dialog_->valueButtonRed->setNum(value); dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, TQColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue))); dialog_->pixmapButtonPreview->repaint(false); configChanged(); } void tdestyle_baghira_config::sliderButtonGreenChanged(int value) { sliderButtonGreenValue = value; dialog_->valueButtonGreen->setNum(value); dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, TQColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue))); dialog_->pixmapButtonPreview->repaint(false); configChanged(); } void tdestyle_baghira_config::sliderButtonBlueChanged(int value) { sliderButtonBlueValue = value; dialog_->valueButtonBlue->setNum(value); dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, TQColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue))); dialog_->pixmapButtonPreview->repaint(false); configChanged(); } void tdestyle_baghira_config::sliderBrushRedChanged(int value) { sliderBrushRedValue = value; dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, TQColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue))); dialog_->pixmapBrushPreview->repaint(false); configChanged(); } void tdestyle_baghira_config::sliderBrushGreenChanged(int value) { sliderBrushGreenValue = value; dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, TQColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue))); dialog_->pixmapBrushPreview->repaint(false); configChanged(); } void tdestyle_baghira_config::sliderBrushBlueChanged(int value) { sliderBrushBlueValue = value; dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, TQColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue))); dialog_->pixmapBrushPreview->repaint(false); configChanged(); } // void tdestyle_baghira_config::sliderBrushSaturationChanged(int value) // { // sliderBrushSaturationValue = value; // dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, TQColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue), sliderBrushSaturationValue)); // dialog_->pixmapBrushPreview->repaint(false); // emit changed(true); // } // button color preset table - internal only, AND DON'T CHANGE ONLY ONE! enum ColorPreset {Aqua = 0, Graphite, GraphiteDark, Orange, Lime, Black, Smoke, Girlie, Smaragd, Emerald, Yellow, DeepBlueSea, Blood, Turquoise, Lilac, NUMBEROFCOLORS}; const char * presetColorName[NUMBEROFCOLORS] = { "Aqua", "Graphite", "Graphite (Dark)", "Orange", "Lime", "Black", "Smoke", "Girlie", "Smaragd", "Emerald", "Yellow", "Deep Blue Sea", "Blood", "Turquoise", "Lilac" }; int presetColor[NUMBEROFCOLORS][3] = {{84,144,218},{130,170,190},{103,118,134},{200,130,30},{130,180,80},{0,0,0},{106,110,120},{255,130,200},{100,160,75},{255,100,90},{160,160,70},{50,100,200},{150,25,25},{60,170,190},{150,130,220}}; // -------------------------------- typedef KGenericFactory tdestyle_baghira_configFactory; K_EXPORT_COMPONENT_FACTORY( tdecm_tdestyle_baghira_config, tdestyle_baghira_configFactory("tdecmtdestyle_baghira_config")) //extern TQImage uic_findImage(const TQString& name); //extern void qInitImages_baghira(); //extern void qCleanupImages_baghira(); void tdestyle_baghira_config::updateCR() { if (!about_->isShown()) { timer->stop(); return; } if (crCurrent < 2) crCurrent++; else crCurrent = 0; about_->crLabel->setText(crNotes[crCurrent]); } void tdestyle_baghira_config::showAbout() { crCurrent = 0; about_->crLabel->setText(crNotes[0]); timer->start( 4000 ); about_->exec(); } tdestyle_baghira_config::tdestyle_baghira_config(TQWidget *parent, const char *name, const TQStringList&) : TQWidget(parent, name )//, myAboutData(0) { loadDone = false; if (parent) parent->setCaption("Configure Your Cat"); TQVBoxLayout *layout = new TQVBoxLayout(this); dialog_ = new Config(this); for (int i = 0; i < NUMBEROFCOLORS; i++) dialog_->colorPresets->insertItem ( presetColorName[i], i ); TQWidget *rulesWidget = new TQWidget(dialog_->tabWidget); TQHBoxLayout *rwlh = new TQHBoxLayout(rulesWidget); applist = new TDEListView(rulesWidget); applist->setFullWidth(true); #if KDE_IS_VERSION(3,3,91) applist->setShadeSortColumn(false); #endif applist->setAllColumnsShowFocus( true ); applist->setSelectionMode(TQListView::Single); applist->addColumn ( i18n("Name") ); applist->addColumn ( i18n("Links to") ); TQDir d( TQDir::homeDirPath() + "/.baghira", 0L, TQDir::Name | TQDir::IgnoreCase, TQDir::Files | TQDir::Readable | TQDir::Writable ); if (!d.exists()) d.mkdir(TQDir::homeDirPath() + "/.baghira"); else { for ( uint i = 0; i < d.count(); i++ ) { TQFileInfo FI = TQFileInfo(d, d[i]); if (FI.isSymLink()) applist->insertItem(new TDEListViewItem(applist, d[i], FI.readLink().section('/',-1,-1))); else applist->insertItem(new TDEListViewItem(applist, d[i])); } } rwlh->addWidget(applist); // rwlh->addLayout(rwlv); TQVBoxLayout *rwlv = new TQVBoxLayout(rwlh); rwlv->addStretch(); TQPushButton *btnNew = new TQPushButton("New...", rulesWidget); TQPushButton *btnEdit = new TQPushButton("Edit...", rulesWidget); TQPushButton *btnDel = new TQPushButton("Remove", rulesWidget); TQPushButton *btnDet = new TQPushButton("Detect", rulesWidget); rwlv->addWidget(btnNew); rwlv->addWidget(btnEdit); rwlv->addWidget(btnDel); rwlv->addSpacing( 5 ); rwlv->addWidget(btnDet); rwlv->addStretch(); dialog_->tabWidget->addTab( rulesWidget, TQString("Rules") ); appsetter = new AppSetter(this); connect(btnNew, SIGNAL(clicked()), appsetter, SLOT(show())); connect(btnEdit, SIGNAL(clicked()), this, SLOT(editApp())); connect(this, SIGNAL(editApp(TQString, TQString)), appsetter, SLOT(show(TQString, TQString))); connect(btnDel, SIGNAL(clicked()), this, SLOT(removeApp())); connect(btnDet, SIGNAL(clicked()), this, SLOT(selectWindow())); connect(appsetter, SIGNAL(addApp(TQString, TQString)), this, SLOT(addApp(TQString, TQString))); connect(appsetter, SIGNAL(removeApp(TQString)), this, SLOT(removeApp(TQString))); // preview stuff baseImage = uic_findImage("button-base"); layout->addWidget(dialog_); dialog_->show(); help_ = new Help(dialog_); about_ = new About(dialog_); about_->versionLabel->setText(VERSION); about_->kdeLabel->setText(TDE_VERSION_STRING); crCurrent = 0; crNotes[0] = "© 2003-2005 by Thomas Lübking
http://baghira.SourceForge.net
"; crNotes[1] = "© \"Design\" 2001-2005 by Apple inc.
http://www.apple.com"; crNotes[2] = "© \"Milk\" 2002-2005 by Max Rudberg
http://www.maxthemes.com
"; timer = new TQTimer(); connect( timer, SIGNAL(timeout()), this, SLOT(updateCR()) ); TQString tmpString(TQT_BUILD_KEY); about_->systemLabel->setText(tmpString.section(' ',1,1)); about_->cpuLabel->setText(tmpString.section(' ',0,0)); about_->setFixedSize (380, 430); // connections // buttons connect(dialog_->buttonHelp, SIGNAL(clicked()), help_, SLOT(exec())); connect(dialog_->buttonAbout, SIGNAL(clicked()), this, SLOT(showAbout())); connect(about_->buttonInfo, SIGNAL(clicked()), this, SLOT(openHtml1())); connect(about_->buttonDownload, SIGNAL(clicked()), this, SLOT(openHtml2())); connect(help_->startBAB, SIGNAL(clicked()), this, SLOT(startBab())); connect(dialog_->startKRuler, SIGNAL(clicked()), this, SLOT(startKRuler())); connect(dialog_->buttonLoad, SIGNAL(clicked()), this, SLOT(buttonLoadAction())); connect(dialog_->buttonSaveAs, SIGNAL(clicked()), this, SLOT(buttonSaveAsAction())); connect(dialog_->colorPresets, SIGNAL(activated(int)), this, SLOT(setPresetColor(int))); // changes connect(dialog_->defaultStyle, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->buttonStyle, SIGNAL(activated(int)), this, SLOT(handleButtonStyles(int))); connect(dialog_->toolbuttonStyle, SIGNAL(activated(int)), this, SLOT(handleButtonStyles(int))); connect(dialog_->animateButtons, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->stippleBackground, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->bevelHighlights, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->stippleContrast, SIGNAL(valueChanged (int)), this, SLOT(configChanged())); connect(dialog_->shadowGroups, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->shadowIntensity, SIGNAL(valueChanged (int)), this, SLOT(configChanged())); connect(dialog_->centerTabs, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->colorMode, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->inactiveColorType, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->animateSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->shadowSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->squeezeSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->unhoveredToolButtons, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->aquaTabs, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->brushedTabs, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->drawTreeLines, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->useCustomExpanderColor, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->treeLineMode, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->expanderMode, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->useCustomExpanderColor, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->useRectLVH, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->removeKickerBevel, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->replaceMenubar, SIGNAL(toggled(bool)), this, SLOT(menuToggled(bool))); connect(dialog_->roundTasks, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->showProgressValue, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->progressType, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->menuBackground, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->menuOpacity, SIGNAL(valueChanged (int)), this, SLOT(configChanged())); connect(dialog_->shadowMenuText, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->menuColorMode, SIGNAL(activated(int)), this, SLOT(configChanged())); connect(dialog_->useCustomColors, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->drawMenuStripe, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->glossyMenus, SIGNAL(stateChanged(int)), this, SLOT(configChanged())); connect(dialog_->customInactiveColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->toolbuttonHighColor, SIGNAL(changed(const TQColor &)), this, SLOT(changeTooluttonHighlightColor(const TQColor &))); connect(dialog_->treeLineColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->customExpanderColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuTextColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuTextColorHigh, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuColorHigh, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuColor2, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->radioOffColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->radioOnColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->checkOffColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->checkOnColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->sliderColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->hoverSliderColorColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->pressedSliderColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->inactiveTabColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->activeTabColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->menuStripeColor, SIGNAL(changed(const TQColor &)), this, SLOT(configChanged())); connect(dialog_->sliderButtonRed, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonRedChanged(int))); connect(dialog_->sliderButtonGreen, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonGreenChanged(int))); connect(dialog_->sliderButtonBlue, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonBlueChanged(int))); connect(dialog_->sliderBrushRed, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushRedChanged(int))); connect(dialog_->sliderBrushGreen, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushGreenChanged(int))); connect(dialog_->sliderBrushBlue, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushBlueChanged(int))); // GUI connect (dialog_->defaultStyle, SIGNAL(activated(int)), this, SLOT(setDesign(int))); connect (dialog_->inactiveColorType, SIGNAL(activated(int)), this, SLOT(enableInButtonColor(int))); connect (dialog_->drawTreeLines, SIGNAL(toggled(bool)), dialog_->treeLineMode, SLOT(setEnabled(bool))); connect (dialog_->drawTreeLines, SIGNAL(toggled(bool)), dialog_->treeLineColor, SLOT(setEnabled(bool))); connect (dialog_->useCustomExpanderColor, SIGNAL(toggled(bool)), dialog_->customExpanderColor, SLOT(setEnabled(bool))); connect (dialog_->menuColorMode, SIGNAL(activated(int)), this, SLOT(enableMenuColorStuff(int))); connect (dialog_->menuBackground, SIGNAL(activated(int)), this, SLOT(enableMenuColorStuff(int))); connect (dialog_->drawMenuStripe, SIGNAL(toggled(bool)), dialog_->menuStripeColor, SLOT(setEnabled(bool))); // connect (dialog_->tintBrush, SIGNAL(toggled(bool)), dialog_->brushBox, SLOT(setEnabled(bool))); connect (dialog_->useCustomColors, SIGNAL(toggled(bool)), dialog_->colorFrame, SLOT(setEnabled(bool))); // load settings load(); loadDone = true; dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, TQColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue))); }; tdestyle_baghira_config::~tdestyle_baghira_config() { if (timer) delete timer; } void tdestyle_baghira_config::setPresetColor(int i) { dialog_->sliderButtonRed->setValue(presetColor[i][0]); dialog_->sliderButtonGreen->setValue(presetColor[i][1]); dialog_->sliderButtonBlue->setValue(presetColor[i][2]); } void tdestyle_baghira_config::load() { TQString tmpString = TQDir::homeDirPath() + "/.qt/baghirarc"; load (tmpString); } void tdestyle_baghira_config::load(TQString &fileName) { TDEConfig *config = new TDEConfig(fileName); // TQSettings config; config->setGroup("BAB"); // general Design dialog_->defaultStyle->setCurrentItem(config->readNumEntry("defaultState", 0 )); // config->endGroup(); config->setGroup("Style"); dialog_->buttonStyle->setCurrentItem(config->readNumEntry("Special_ButtonStyle", 1 )); dialog_->toolbuttonStyle->setCurrentItem(config->readNumEntry("Special_ToolbuttonStyle", 1 )); dialog_->stippleBackground->setChecked( config->readBoolEntry( "Design_StippleBackground", true)); dialog_->animateButtons->setChecked( config->readBoolEntry( "Design_AnimateButtons", true)); dialog_->stippleContrast->setValue( config->readNumEntry( "Design_StippleContrast", 3)); dialog_->shadowGroups->setChecked( config->readBoolEntry( "Design_ShadowGroupBoxes", true)); dialog_->shadowIntensity->setValue( config->readNumEntry( "Design_GroupBoxeShadowDarkness", 6)); dialog_->bevelHighlights->setChecked( config->readBoolEntry( "Design_BevelAsHighlight", true)); dialog_->colorMode->setCurrentItem(config->readNumEntry("Design_ButtonStyle", 0)); dialog_->inactiveColorType->setCurrentItem(config->readNumEntry( "Design_InactiveButtonStyle", 1)); dialog_->customInactiveColor->setColor(TQColor(config->readNumEntry("Design_InactiveButtonColor",(int)colorGroup().background().rgb()))); dialog_->centerTabs->setChecked( config->readBoolEntry( "Design_CenterTabs", true)); // button color stuff TQColor tmpColor = TQColor(config->readNumEntry("Design_ButtonColor",(int)colorGroup().button().rgb())); dialog_->sliderButtonRed->setValue(sliderButtonRedValue = tmpColor.red()); dialog_->sliderButtonGreen->setValue(sliderButtonGreenValue = tmpColor.green()); dialog_->sliderButtonBlue->setValue(sliderButtonBlueValue = tmpColor.blue()); dialog_->valueButtonRed->setNum(sliderButtonRedValue); dialog_->valueButtonGreen->setNum(sliderButtonGreenValue); dialog_->valueButtonBlue->setNum(sliderButtonBlueValue); // special Widgets //ListViews dialog_->useRectLVH->setChecked( config->readBoolEntry( "Special_UseFlatLVH", false)); dialog_->drawTreeLines->setChecked( config->readBoolEntry( "Special_DrawTreeLines", false)); dialog_->treeLineMode->setCurrentItem(config->readNumEntry( "Special_TreelineStyle", 0)); dialog_->treeLineColor->setColor( TQColor( config->readNumEntry( "Special_TreelineColor", (int) colorGroup().mid().rgb()))); dialog_->expanderMode->setCurrentItem(config->readNumEntry( "Special_ExpanderStyle", 0)); dialog_->useCustomExpanderColor->setChecked( config->readBoolEntry( "Special_CustomExpanderColor", false)); dialog_->customExpanderColor->setColor( TQColor( config->readNumEntry( "Special_ExpanderColor", (int) colorGroup().text().rgb()))); //Kicker dialog_->removeKickerBevel->setChecked( config->readBoolEntry( "Special_RemoveKickerBevel", true)); dialog_->roundTasks->setChecked( config->readBoolEntry( "Special_RoundTaskbuttons", false)); TQFile file(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker/applets/menuapplet.desktop"); dialog_->replaceMenubar->setChecked( menuReplaced = file.exists() ); //Scrollbars dialog_->animateSlider->setChecked( config->readBoolEntry( "Special_AnimateSlider", true)); dialog_->shadowSlider->setChecked( config->readBoolEntry( "Special_ShadowSlider", false)); dialog_->squeezeSlider->setChecked( config->readBoolEntry( "Special_SqueezeSlider", false)); //Progress dialog_->progressType->setCurrentItem( config->readNumEntry( "Special_ProgressStyle", 0)); dialog_->showProgressValue->setChecked( config->readBoolEntry( "Special_ShowProgressValue", false)); //Toolbars dialog_->unhoveredToolButtons->setCurrentItem(config->readNumEntry( "Special_UnhoveredToolButtons", 2)); //Tabs dialog_->aquaTabs->setCurrentItem(config->readNumEntry("Design_TabStyleAqua", 0 )); dialog_->brushedTabs->setCurrentItem(config->readNumEntry("Design_TabStyleBrushed", 1 )); // menus dialog_->menuBackground->setCurrentItem( config->readNumEntry( "Menu_Background", 0)); dialog_->menuOpacity->setValue( config->readNumEntry( "Menu_Opacity", 70)); //Look dialog_->shadowMenuText->setChecked( config->readBoolEntry( "Menu_ShadowText", true)); dialog_->menuColorMode->setCurrentItem(config->readNumEntry("Menu_ColorStyle")); dialog_->menuTextColor->setColor( TQColor( config->readNumEntry( "Menu_TextColor", (int) colorGroup().text().rgb()))); dialog_->menuTextColorHigh->setColor( TQColor( config->readNumEntry( "Menu_TextColorHighlight", (int) colorGroup().highlightedText().rgb()))); dialog_->menuColor->setColor( TQColor( config->readNumEntry( "Menu_Color1", (int) colorGroup().background().rgb()))); dialog_->menuColor2->setColor( TQColor( config->readNumEntry( "Menu_Color2", (int) colorGroup().background().dark(130).rgb()))); dialog_->menuColorHigh->setColor( TQColor( config->readNumEntry( "Menu_ColorHighlight", (int) colorGroup().highlight().rgb()))); dialog_->drawMenuStripe->setChecked(config->readBoolEntry( "Menu_DrawMenuStripe", false)); dialog_->glossyMenus->setChecked(config->readBoolEntry( "Menu_Glossy", true)); dialog_->menuStripeColor->setColor( TQColor( config->readNumEntry( "Menu_StripeColor", (int) TQt::white.rgb()))); // custom colors dialog_->useCustomColors->setChecked( config->readBoolEntry( "Colors_UseCustomColors", false)); dialog_->radioOffColor->setColor( TQColor( config->readNumEntry( "Colors_RadioOff", ( int ) colorGroup().background().rgb()))); dialog_->radioOnColor->setColor( TQColor( config->readNumEntry( "Colors_RadioOn", ( int ) colorGroup().button().rgb()))); dialog_->checkOffColor->setColor( TQColor( config->readNumEntry( "Colors_CheckOff", ( int ) colorGroup().background().rgb()))); dialog_->checkOnColor->setColor( TQColor( config->readNumEntry( "Colors_CheckOn", ( int ) colorGroup().button().rgb()))); dialog_->sliderColor->setColor( TQColor( config->readNumEntry( "Colors_Slider", ( int ) colorGroup().button().rgb()))); dialog_->hoverSliderColorColor->setColor(TQColor(config->readNumEntry("Colors_SliderHovered",(int)colorGroup().button().rgb()))); dialog_->pressedSliderColor->setColor(TQColor(config->readNumEntry("Colors_SliderPressed",(int) colorGroup().button().dark(110).rgb()))); dialog_->sliderGrooveColor->setColor(TQColor(config->readNumEntry("Colors_SliderGroove",(int)colorGroup().background().rgb()))); dialog_->inactiveTabColor->setColor(TQColor(config->readNumEntry("Colors_TabInactive",(int) colorGroup().background().rgb()))); dialog_->activeTabColor->setColor(TQColor(config->readNumEntry("Colors_TabActive",(int)colorGroup().button().rgb()))); dialog_->tintBrush->setChecked( config->readBoolEntry( "Colors_TintBrushedMetal", false)); brushTint = TQColor(config->readNumEntry("Colors_BrushTint",(int)colorGroup().background().rgb())); // dialog_->brushTintSaturaion->setValue(settings.readNumEntry( "/qt/Baghira/brushTintSaturation", 3)); baseImage2 = uic_findImage("brush-me"); dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, brushTint)); dialog_->sliderBrushRed->setValue(sliderBrushRedValue = brushTint.red()); dialog_->sliderBrushGreen->setValue(sliderBrushGreenValue = brushTint.green()); dialog_->sliderBrushBlue->setValue(sliderBrushBlueValue = brushTint.blue()); config->setGroup("Menubar"); dialog_->menuMaxWidth->setValue(config->readNumEntry("Width", TQDesktopWidget().availableGeometry().width())); config->setGroup("Sidebar"); delete config; config = new TDEConfig("kdeglobals"); config->setGroup( "Toolbar style" ); dialog_->toolbuttonHighColor->setColor(config->readColorEntry("HighlightColor", new TQColor(103,141,178)) ); delete config; } void tdestyle_baghira_config::defaults() { dialog_->defaultStyle->setCurrentItem(0); dialog_->buttonStyle->setCurrentItem(1); dialog_->toolbuttonStyle->setCurrentItem(1); dialog_->animateButtons->setChecked( true); dialog_->stippleBackground->setChecked( true); dialog_->stippleContrast->setValue( 30); dialog_->shadowGroups->setChecked( true); dialog_->shadowIntensity->setValue( 50); dialog_->bevelHighlights->setChecked( true ); dialog_->centerTabs->setChecked( true); dialog_->colorMode->setCurrentItem(0); dialog_->inactiveColorType->setCurrentItem(1); dialog_->customInactiveColor->setColor(colorGroup().background().rgb()); // button color stuff dialog_->sliderButtonRed->setValue(sliderButtonRedValue = colorGroup().button().red()); dialog_->sliderButtonGreen->setValue(sliderButtonGreenValue = colorGroup().button().green()); dialog_->sliderButtonBlue->setValue(sliderButtonBlueValue = colorGroup().button().blue()); dialog_->valueButtonRed->setNum(sliderButtonRedValue); dialog_->valueButtonGreen->setNum(sliderButtonGreenValue); dialog_->valueButtonBlue->setNum(sliderButtonBlueValue); // special Widgets // dialog_->animateSlider; dialog_->shadowSlider->setChecked( false); dialog_->squeezeSlider->setChecked( false); dialog_->unhoveredToolButtons->setCurrentItem(2); dialog_->toolbuttonHighColor->setColor( TQColor(103,141,178) ); dialog_->drawTreeLines->setChecked( false); dialog_->useCustomExpanderColor->setChecked( false); dialog_->treeLineMode->setCurrentItem(0); dialog_->treeLineColor->setColor( colorGroup().mid().rgb()); dialog_->expanderMode->setCurrentItem(0); dialog_->customExpanderColor->setColor( colorGroup().text().rgb()); dialog_->useRectLVH->setChecked( false); dialog_->removeKickerBevel->setChecked( true); dialog_->roundTasks->setChecked( false); dialog_->showProgressValue->setChecked( false); dialog_->progressType->setCurrentItem( 0); dialog_->aquaTabs->setCurrentItem( 0 ); dialog_->brushedTabs->setCurrentItem(1); // menus // dialog_->transGroup; dialog_->menuBackground->setCurrentItem(0); dialog_->menuOpacity->setValue( 70); dialog_->shadowMenuText->setChecked( true); dialog_->menuColorMode->setCurrentItem(0); dialog_->menuTextColor->setColor( colorGroup().text().rgb()); dialog_->menuTextColorHigh->setColor( colorGroup().highlightedText().rgb()); dialog_->menuColor->setColor( colorGroup().background().rgb()); dialog_->menuColor2->setColor( colorGroup().background().dark(130).rgb()); dialog_->menuColorHigh->setColor( colorGroup().highlight().rgb()); dialog_->drawMenuStripe->setChecked(false); dialog_->glossyMenus->setChecked(true); dialog_->menuStripeColor->setColor( TQt::white.rgb()); // custom colors dialog_->useCustomColors->setChecked( false); dialog_->radioOffColor->setColor( colorGroup().background().rgb()); dialog_->radioOnColor->setColor( colorGroup().button().rgb()); dialog_->checkOffColor->setColor( colorGroup().background().rgb()); dialog_->checkOnColor->setColor( colorGroup().button().rgb()); dialog_->sliderColor->setColor( colorGroup().button().rgb()); dialog_->hoverSliderColorColor->setColor(colorGroup().button().rgb()); dialog_->pressedSliderColor->setColor(colorGroup().button().dark(110).rgb()); dialog_->sliderGrooveColor->setColor(colorGroup().background().rgb()); dialog_->inactiveTabColor->setColor(colorGroup().background().rgb()); dialog_->activeTabColor->setColor(colorGroup().button().rgb()); dialog_->tintBrush->setChecked( false); emit changed(true); } void tdestyle_baghira_config::save() { TQString tmpString = TQDir::homeDirPath() + "/.qt/baghirarc"; save(tmpString); // emit changed(true); } void tdestyle_baghira_config::changeTooluttonHighlightColor(const TQColor & color) { TDEConfig *config = new TDEConfig("kdeglobals"); config->setGroup( "Toolbar style" ); config->writeEntry("HighlightColor", color); delete config; } void tdestyle_baghira_config::handleButtonStyles(int i) { if (i != 2 && sender() == dialog_->buttonStyle && dialog_->toolbuttonStyle->currentItem() != 2) dialog_->toolbuttonStyle->setCurrentItem(i); else if (i != 2 && sender() == dialog_->toolbuttonStyle && dialog_->buttonStyle->currentItem() != 2) dialog_->buttonStyle->setCurrentItem(i); configChanged(); } void tdestyle_baghira_config::save(TQString &fileName) { // TQSettings *config = new TQSettings; TDEConfig *config = new TDEConfig(fileName); config->setGroup("BAB"); //General Design config->writeEntry("defaultState", dialog_->defaultStyle->currentItem()); // config->endGroup(); config->setGroup("Style"); config->writeEntry("Special_ButtonStyle", dialog_->buttonStyle->currentItem()); config->writeEntry("Special_ToolbuttonStyle", dialog_->toolbuttonStyle->currentItem()); config->writeEntry("Design_AnimateButtons", dialog_->animateButtons->isOn()); config->writeEntry("Design_Default", dialog_->defaultStyle->currentItem()); config->writeEntry("Design_StippleBackground", dialog_->stippleBackground->isOn()); config->writeEntry("Design_StippleContrast", dialog_->stippleContrast->value()); config->writeEntry("Design_ShadowGroupBoxes", dialog_->shadowGroups->isOn()); config->writeEntry("Design_GroupBoxeShadowDarkness", dialog_->shadowIntensity->value()); config->writeEntry("Design_BevelAsHighlight", dialog_->bevelHighlights->isOn()); config->writeEntry("Design_ButtonStyle", dialog_->colorMode->currentItem()); config->writeEntry("Design_InactiveButtonStyle", dialog_->inactiveColorType->currentItem()); config->writeEntry("Design_InactiveButtonColor", (int)dialog_->customInactiveColor->color().rgb()); config->writeEntry("Design_CenterTabs", dialog_->centerTabs->isOn()); //button color stuff config->writeEntry("Design_ButtonColor", (int)(TQColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue).rgb())); // special Widgets //listviews // dialog_->animateSlider; config->writeEntry("Special_UseFlatLVH", dialog_->useRectLVH->isOn()); config->writeEntry("Special_DrawTreeLines", dialog_->drawTreeLines->isOn()); config->writeEntry("Special_TreelineStyle", dialog_->treeLineMode->currentItem()); config->writeEntry("Special_TreelineColor", (int)dialog_->treeLineColor->color().rgb()); config->writeEntry("Special_ExpanderStyle", dialog_->expanderMode->currentItem()); config->writeEntry("Special_CustomExpanderColor", dialog_->useCustomExpanderColor->isOn()); config->writeEntry("Special_ExpanderColor", (int)dialog_->customExpanderColor->color().rgb()); //Kicker config->writeEntry("Special_RemoveKickerBevel", dialog_->removeKickerBevel->isOn()); config->writeEntry("Special_RoundTaskbuttons", dialog_->roundTasks->isOn()); TQDir tmpDir(TDEGlobal::dirs()->localtdedir()); if (!tmpDir.exists()) tmpDir.mkdir(TDEGlobal::dirs()->localtdedir()); tmpDir.setPath(TDEGlobal::dirs()->localtdedir() + "share"); if (!tmpDir.exists()) tmpDir.mkdir(TDEGlobal::dirs()->localtdedir() + "share"); tmpDir.setPath(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data")); if (!tmpDir.exists()) tmpDir.mkdir(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data")); tmpDir.setPath(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker"); if (!tmpDir.exists()) tmpDir.mkdir(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker"); tmpDir.setPath(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker/applets"); if (!tmpDir.exists()) tmpDir.mkdir(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker/applets"); TQFile file(TDEGlobal::dirs()->localtdedir() + TDEStandardDirs::kde_default("data") + "kicker/applets/menuapplet.desktop"); if (dialog_->replaceMenubar->isOn()) { file.open(IO_WriteOnly); const char *msg = "[Desktop Entry]\n\ Hidden=true\n\ Type=Plugin\n\ Encoding=UTF-8\n\ Name=BaghiraMenu\n\ X-TDE-Library=b_menu_panelapplet\n\ X-TDE-UniqueApplet=true\n"; file.writeBlock( msg, tqstrlen(msg) ); file.close(); } else file.remove(); if (dialog_->replaceMenubar->isOn() != menuReplaced) TDEApplication::dcopClient()->send("kicker", "default", "restart()", ""); //Srollbars config->writeEntry("Special_AnimateSlider", dialog_->animateSlider->isOn()); config->writeEntry("Special_ShadowSlider", dialog_->shadowSlider->isOn()); config->writeEntry("Special_SqueezeSlider", dialog_->squeezeSlider->isOn()); //Progress config->writeEntry("Special_ProgressStyle", dialog_->progressType->currentItem()); config->writeEntry("Special_ShowProgressValue", dialog_->showProgressValue->isOn()); //Toolbars config->writeEntry("Special_UnhoveredToolButtons", dialog_->unhoveredToolButtons->currentItem()); //Tabs config->writeEntry("Design_TabStyleAqua", dialog_->aquaTabs->currentItem() ); config->writeEntry("Design_TabStyleBrushed", dialog_->brushedTabs->currentItem() ); // menus config->writeEntry("Menu_Background", dialog_->menuBackground->currentItem()); config->writeEntry("Menu_Opacity", dialog_->menuOpacity->value()); //Look config->writeEntry("Menu_ShadowText", dialog_->shadowMenuText->isOn()); config->writeEntry("Menu_ColorStyle", dialog_->menuColorMode->currentItem()); config->writeEntry("Menu_TextColor", (int)dialog_->menuTextColor->color().rgb()); config->writeEntry("Menu_TextColorHighlight", (int)dialog_->menuTextColorHigh->color().rgb()); config->writeEntry("Menu_Color1", (int)dialog_->menuColor->color().rgb()); config->writeEntry("Menu_Color2", (int)dialog_->menuColor2->color().rgb()); config->writeEntry("Menu_ColorHighlight", (int)dialog_->menuColorHigh->color().rgb()); config->writeEntry("Menu_DrawMenuStripe", dialog_->drawMenuStripe->isOn()); config->writeEntry("Menu_Glossy", dialog_->glossyMenus->isOn()); config->writeEntry("Menu_StripeColor", (int)dialog_->menuStripeColor->color().rgb()); // custom colors config->writeEntry("Colors_UseCustomColors", dialog_->useCustomColors->isOn()); config->writeEntry("Colors_RadioOff", (int)dialog_->radioOffColor->color().rgb()); config->writeEntry("Colors_RadioOn", (int)dialog_->radioOnColor->color().rgb()); config->writeEntry("Colors_CheckOff",(int) dialog_->checkOffColor->color().rgb()); config->writeEntry("Colors_CheckOn", (int)dialog_->checkOnColor->color().rgb()); config->writeEntry("Colors_Slider",(int) dialog_->sliderColor->color().rgb()); config->writeEntry("Colors_SliderHovered", (int)dialog_->hoverSliderColorColor->color().rgb()); config->writeEntry("Colors_SliderPressed", (int)dialog_->pressedSliderColor->color().rgb()); config->writeEntry("Colors_SliderGroove",(int) dialog_->sliderGrooveColor->color().rgb()); config->writeEntry("Colors_TabInactive",(int) dialog_->inactiveTabColor->color().rgb()); config->writeEntry("Colors_TabActive", (int)dialog_->activeTabColor->color().rgb()); config->writeEntry("Colors_TintBrushedMetal", dialog_->tintBrush->isOn()); config->writeEntry("Colors_BrushTint",(int)tqRgb(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue)); config->setGroup("Menubar"); config->writeEntry("Width", dialog_->menuMaxWidth->value()); config->sync(); // config->endGroup(); delete config; } void tdestyle_baghira_config::configChanged() { if (loadDone) { dialog_->statusWarning->setText("Config changed"); emit changed(true); } } TQString tdestyle_baghira_config::quickHelp() const { return i18n("Configure Your Cat"); } void tdestyle_baghira_config::setDesign(int d) { bool b = (d == 0); dialog_->stippleBackground->setEnabled(b); dialog_->stippleContrast->setEnabled(b); dialog_->shadowGroups->setEnabled(b); dialog_->shadowIntensity->setEnabled(b); } void tdestyle_baghira_config::enableInButtonColor(int d) { dialog_->customInactiveColor->setEnabled(d == 3); } void tdestyle_baghira_config::enableMenuColorStuff(int d) { bool b = (d == 2); dialog_->menuTextColor->setEnabled(b); dialog_->menuColor->setEnabled(b && dialog_->menuBackground->currentItem() > 0); dialog_->menuColor2->setEnabled(b && dialog_->menuBackground->currentItem() > 1); } void tdestyle_baghira_config::buttonLoadAction() { TQString tmpString = KFileDialog::getOpenFileName(TQDir::homeDirPath(), "*", this, "Select a Baghira config file"); if (!tmpString.isEmpty()) load(tmpString); } void tdestyle_baghira_config::buttonSaveAsAction() { TQString tmpString = KFileDialog::getSaveFileName(TQDir::homeDirPath(), "*", this, "Save current Baghira configuration as"); save(tmpString); } void tdestyle_baghira_config::editApp() { emit editApp(applist->currentItem()->text(0), applist->currentItem()->text(1)); } void tdestyle_baghira_config::removeApp() { TQString string = TQDir::homeDirPath() + "/.baghira/" + applist->currentItem()->text(0); TQFile::remove(string); applist->takeItem(applist->currentItem()); } void tdestyle_baghira_config::removeApp(TQString name) { TQString string = TQDir::homeDirPath() + "/.baghira/" + name; TQFile::remove(string); applist->takeItem(applist->findItem(name, 0, TQt::ExactMatch)); } void tdestyle_baghira_config::addApp(TQString string, TQString linkString) { applist->insertItem(new TDEListViewItem(applist, string, linkString)); applist->sort(); } void tdestyle_baghira_config::selectWindow() // taken from kcmkwin { // use a dialog, so that all user input is blocked // use WX11BypassWM and moving away so that it's not actually visible // grab only mouse, so that keyboard can be used e.g. for switching windows grabber = new TQDialog( NULL, NULL, true, WX11BypassWM ); grabber->move( -1000, -1000 ); grabber->show(); grabber->grabMouse( crossCursor ); grabber->installEventFilter( this ); } Atom wm_state = XInternAtom( tqt_xdisplay(), "WM_STATE", False ); // Atom wm_state = XInternAtom( tqt_xdisplay(), "WM_COMMAND", False ); bool tdestyle_baghira_config::eventFilter( TQObject* o, TQEvent* e ) // adapted from kcmkwin... again ;) { if( o != grabber ) return false; if( e->type() != TQEvent::MouseButtonRelease ) return false; delete grabber; grabber = NULL; if( static_cast< TQMouseEvent* >( e )->button() != LeftButton ) return true; WId winId = findWindow(); XClassHint classHint; if (XGetClassHint(tqt_xdisplay(), winId, &classHint)) { TQString tmpString = TQString( classHint.res_class ).lower() + " (uncertain)"; appsetter->show(tmpString, TQString()); // tqWarning("class: %s",TQString( classHint.res_class ).lower().ascii()); XFree( classHint.res_name ); XFree( classHint.res_class ); } return true; } WId tdestyle_baghira_config::findWindow() // taken from kcmkwin... as well =) { Window root; Window child; uint mask; int rootX, rootY, x, y; Window parent = tqt_xrootwin(); // Atom wm_state = XInternAtom( tqt_xdisplay(), "WM_STATE", False ); for( int i = 0; i < 10; ++i ) { XQueryPointer( tqt_xdisplay(), parent, &root, &child, &rootX, &rootY, &x, &y, &mask ); if( child == None ) return 0; Atom type; int format; unsigned long nitems, after; unsigned char* prop; if( XGetWindowProperty( tqt_xdisplay(), child, wm_state, 0, 0, False, AnyPropertyType, &type, &format, &nitems, &after, &prop ) == Success ) { if( prop != NULL ) XFree( prop ); if( type != None ) return child; } parent = child; } return 0; } void tdestyle_baghira_config::menuToggled(bool active) { if (!active || !loadDone) return; TDEConfigGroup menuConfig(TDEGlobal::config(), "KDE"); if (!menuConfig.readBoolEntry("macStyle", false)) if (KMessageBox::questionYesNo(0, i18n("You just selected to replace kickers menu applet for the Mac like Menubar on top of the screen, but the Mac like style isn't selected anyway
Do you want to activate it now?
"), 0L, KStdGuiItem::yes(), KStdGuiItem::no()) == KMessageBox::Yes) { TDEProcess proc; proc << "tdecmshell" << "desktopbehavior"; proc.start(TDEProcess::DontCare); proc.detach(); } configChanged(); } ////////////////////////////////////////////////////////////////////////////// // Plugin Stuff // ////////////////////////////////////////////////////////////////////////////// extern "C" { TQWidget* allocate_tdestyle_config(TQWidget* parent){ return(new tdestyle_baghira_config(parent, "BaghiraConfig")); } } AppSetter::AppSetter(TQWidget *parent, const char *name) : TQWidget(parent, name, TQt::WType_Dialog | TQt::WShowModal ) { isEdit = FALSE; TQLabel *label1 = new TQLabel(i18n("Application Name"), this); command = new TQLineEdit(this); TQLabel *linkTo = new TQLabel(i18n("Just like"),this); link = new TQComboBox(this); box = new TQGroupBox(2,TQt::Horizontal,i18n("Custom Settings"),this); box->setCheckable( true ); new TQLabel(i18n("Style"), box); new TQLabel("Deco", box); style = new TQComboBox(box); style->insertItem(i18n("Don't set")); style->insertItem("Jaguar"); style->insertItem("Panther"); style->insertItem("Brushed Metal"); style->insertItem("Tiger"); style->insertItem("Milk"); deco = new TQComboBox(box); deco->insertItem(i18n("Don't set")); deco->insertItem("Jaguar"); deco->insertItem("Panther"); deco->insertItem("Brushed Metal"); deco->insertItem("Tiger"); deco->insertItem("Milk"); new TQLabel(i18n("Buttons"), box); new TQLabel(i18n("Toolbuttons"), box); buttons = new TQComboBox(box); buttons->insertItem("Jaguar"); buttons->insertItem("Panther"); buttons->insertItem("iTunes"); buttons->insertItem("Tiger"); buttons->insertItem("Milk"); toolButtons = new TQComboBox(box); toolButtons->insertItem("Jaguar"); toolButtons->insertItem("Panther"); toolButtons->insertItem("iTunes"); toolButtons->insertItem("Tiger"); toolButtons->insertItem("Milk"); new TQLabel(i18n("Tab vs. Chooser"), box); new TQLabel(i18n("Inactive Button"), box); tabs = new TQComboBox(box); tabs->insertItem(i18n("Don't set")); tabs->insertItem("Tabs"); tabs->insertItem("Adaptive"); tabs->insertItem("Choosers"); inbutton = new TQComboBox(box); inbutton->insertItem("Fixed"); inbutton->insertItem("Background"); inbutton->insertItem("Active Button"); scanlines = new TQCheckBox("Show scanlines", box); TQWidget *dumb = new TQWidget(box); customColors = new TQCheckBox(dumb); buttonColors = new TQPushButton("Custom Colors", dumb); TQHBoxLayout *clh = new TQHBoxLayout(dumb); clh->addWidget(customColors); clh->addWidget(buttonColors); TQVBoxLayout *lv = new TQVBoxLayout(this,11,6); lv->addWidget(label1); lv->addWidget(command); TQHBoxLayout *lh0 = new TQHBoxLayout(lv); lh0->addWidget(linkTo); lh0->addWidget(link); lv->addWidget(box); TQHBoxLayout *lh = new TQHBoxLayout(lv); TQPushButton *cancel = new TQPushButton("Cancel",this); lh->addWidget(cancel); TQPushButton *ok = new TQPushButton("Ok",this); lh->addWidget(ok); colorDialog = new ColorDialog(this); connect(box, SIGNAL(toggled( bool )), link, SLOT(setDisabled(bool))); connect(box, SIGNAL(toggled( bool )), linkTo, SLOT(setDisabled(bool))); connect(style, SIGNAL(activated( int )), this, SLOT(handler(int))); connect(buttons, SIGNAL(activated( int )), this, SLOT(handleButtonStyles(int))); connect(toolButtons, SIGNAL(activated( int )), this, SLOT(handleButtonStyles(int))); connect(cancel, SIGNAL(clicked()), this, SLOT(reset())); connect(ok, SIGNAL(clicked()), this, SLOT(save())); connect(customColors, SIGNAL(toggled( bool )), buttonColors, SLOT(setEnabled(bool))); connect(buttonColors, SIGNAL(clicked()), colorDialog, SLOT(exec())); connect(colorDialog->buttonOk, SIGNAL(clicked()), this, SLOT(updateColors())); connect(colorDialog->buttonCancel, SIGNAL(clicked()), this, SLOT(resetColorPicker())); reset(); } AppSetter::~AppSetter() { } void AppSetter::handleButtonStyles(int i) { if (i != 2 && sender() == buttons && toolButtons->currentItem() != 2) toolButtons->setCurrentItem(i); else if (i != 2 && sender() == toolButtons && buttons->currentItem() != 2) buttons->setCurrentItem(i); } void AppSetter::handler(int i) { scanlines->setEnabled(i != 3); } void AppSetter::updateColors() { for (int i = 0; i < 8; i++) colors[i] = (int)colorDialog->picker[i]->color().rgb(); } void AppSetter::show() { link->clear(); TQDir d( TQDir::homeDirPath() + "/.baghira", 0L, TQDir::Name | TQDir::IgnoreCase, TQDir::Files | TQDir::NoSymLinks | TQDir::Readable | TQDir::Writable ); for ( uint i = 0; i < d.count(); i++ ) link->insertItem(d[i]); TQWidget::show(); } void AppSetter::show(TQString appName, TQString linkString) { isEdit = true; oldName = appName; oldLink = linkString; command->setText(appName); FILE *file = NULL; TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + appName; if( (file = fopen(tmpString.latin1(), "r")) != NULL ) { uint s, d, b, t, tc, sc, ib; s = d = 4; b = t = sc = 2; tc = 3; for (int i = 0; i < 8; i++) colors[i] = -1; fscanf(file,"%u\n%u\n%u\n%u\n%u\n%u\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",&s,&d,&b,&t,&tc,&sc,&colors[0],&colors[1],&colors[2],&colors[3],&colors[4],&colors[5],&colors[6],&colors[7],&ib); fclose(file); if (s < 5) style->setCurrentItem(s+1); if (d < 5) deco->setCurrentItem(d+1); if (b < 5) buttons->setCurrentItem(b); if (t < 5) toolButtons->setCurrentItem(t); if (tc < 3) tabs->setCurrentItem(tc+1); if (ib < 3) inbutton->setCurrentItem(ib); scanlines->setChecked(sc < 2 ? sc : true); scanlines->setEnabled(s != 2); customColors->setChecked(colors[0] != -1); buttonColors->setEnabled(customColors->isChecked()); resetColorPicker(); } show(); if (!linkString.isNull()) { for (int i = 0; i < link->count(); i++) { if (link->text(i) == linkString) { link->setCurrentItem(i); break; } } } else { box->setChecked(true); } } void AppSetter::resetColorPicker() { if (colors[0] != -1) { for (int i = 0; i < 8; i++) { colorDialog->picker[i]->blockSignals(true); colorDialog->picker[i]->setColor(TQColor(colors[i])); colorDialog->picker[i]->blockSignals(false); } ((TQWidget*)colorDialog->demo)->repaint(false); } else { for (int i = 0; i < 8; i++) colorDialog->picker[i]->blockSignals(true); colorDialog->picker[Back]->setColor(colorGroup().background()); colorDialog->picker[Button]->setColor(colorGroup().button()); colorDialog->picker[Base]->setColor(colorGroup().base()); colorDialog->picker[Text]->setColor(colorGroup().text()); colorDialog->picker[High]->setColor(colorGroup().highlight()); colorDialog->picker[HighText]->setColor(colorGroup().highlightedText()); colorDialog->picker[ButText]->setColor(colorGroup().buttonText ()); colorDialog->picker[Alternate]->setColor(TDEGlobalSettings::alternateBackgroundColor()); for (int i = 0; i < 8; i++) colorDialog->picker[i]->blockSignals(false); ((TQWidget*)colorDialog->demo)->repaint(false); } } void AppSetter::save() { if (command->text() != "" && (!box->isChecked() || (style->currentItem() != 0 && deco->currentItem() != 0))) { if (!isEdit) emit addApp(command->text(), box->isChecked() ? TQString() : link->currentText()); else if (command->text() != oldName || link->currentText() != oldLink) { emit removeApp(oldName); emit addApp(command->text(), box->isChecked() ? TQString() : link->currentText()); } if (!customColors->isChecked()) { for (int i = 0; i < 8; i++) colors[i] = -1; } FILE *file = NULL; TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + command->text(); if (box->isChecked()) // custom settings { if( (file = fopen(tmpString.latin1(), "w")) != NULL ) { fprintf(file,"%u\n%u\n%u\n%u\n%u\n%u\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",style->currentItem()-1, deco->currentItem()-1, buttons->currentItem(), toolButtons->currentItem(), tabs->currentItem()-1, scanlines->isChecked(), colors[0], colors[1], colors[2], colors[3], colors[4], colors[5], colors[6], colors[7], inbutton->currentItem()); fclose(file); } } else // just link { TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/" + link->currentText(); TQFile::remove(tmpString); // just to be sure ;) symlink (tmpString2.latin1(), tmpString.latin1()); } } reset(); } void AppSetter::reset() { hide(); isEdit = false; style->setCurrentItem(0); deco->setCurrentItem(0); buttons->setCurrentItem(1); inbutton->setCurrentItem(0); toolButtons->setCurrentItem(1); tabs->setCurrentItem(0); scanlines->setChecked(false); command->clear(); customColors->setChecked(false); for (int i = 0; i < 8; i++) colors[i] = -1; box->setChecked ( false ); } #include "tdestyle_baghira_config.moc"