From 65bb5f5c17d3d8173cb454a8daeb7a6d68059811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Mon, 6 Sep 2010 16:48:31 +0000 Subject: [PATCH] Dump the kwmtheme decoration. It hasn't compiled in ages, hasn't seen any activity for even longer. svn path=/trunk/KDE/kdebase/workspace/; revision=1172182 --- clients/kwmtheme/CMakeLists.txt | 25 - clients/kwmtheme/cli_installer/CMakeLists.txt | 14 - clients/kwmtheme/cli_installer/main.cpp | 178 ---- clients/kwmtheme/kwmtheme.desktop | 89 -- clients/kwmtheme/kwmthemeclient.cpp | 951 ------------------ clients/kwmtheme/kwmthemeclient.h | 88 -- clients/kwmtheme/pics/CMakeLists.txt | 3 - clients/kwmtheme/pics/bluesun.png | Bin 1127 -> 0 bytes clients/kwmtheme/pics/close.png | Bin 285 -> 0 bytes clients/kwmtheme/pics/fog-grey.png | Bin 2922 -> 0 bytes clients/kwmtheme/pics/fog.png | Bin 2760 -> 0 bytes clients/kwmtheme/pics/greenie.dim.png | Bin 3892 -> 0 bytes clients/kwmtheme/pics/greenie.light.png | Bin 3837 -> 0 bytes clients/kwmtheme/pics/iconify.png | Bin 262 -> 0 bytes clients/kwmtheme/pics/maximize.png | Bin 269 -> 0 bytes clients/kwmtheme/pics/maximizedown.png | Bin 269 -> 0 bytes clients/kwmtheme/pics/menu.png | Bin 263 -> 0 bytes clients/kwmtheme/pics/pindown.png | Bin 297 -> 0 bytes clients/kwmtheme/pics/pinup.png | Bin 295 -> 0 bytes clients/kwmtheme/pics/unknown.png | Bin 454 -> 0 bytes 20 files changed, 1348 deletions(-) delete mode 100644 clients/kwmtheme/CMakeLists.txt delete mode 100644 clients/kwmtheme/cli_installer/CMakeLists.txt delete mode 100644 clients/kwmtheme/cli_installer/main.cpp delete mode 100644 clients/kwmtheme/kwmtheme.desktop delete mode 100644 clients/kwmtheme/kwmthemeclient.cpp delete mode 100644 clients/kwmtheme/kwmthemeclient.h delete mode 100644 clients/kwmtheme/pics/CMakeLists.txt delete mode 100644 clients/kwmtheme/pics/bluesun.png delete mode 100644 clients/kwmtheme/pics/close.png delete mode 100644 clients/kwmtheme/pics/fog-grey.png delete mode 100644 clients/kwmtheme/pics/fog.png delete mode 100644 clients/kwmtheme/pics/greenie.dim.png delete mode 100644 clients/kwmtheme/pics/greenie.light.png delete mode 100644 clients/kwmtheme/pics/iconify.png delete mode 100644 clients/kwmtheme/pics/maximize.png delete mode 100644 clients/kwmtheme/pics/maximizedown.png delete mode 100644 clients/kwmtheme/pics/menu.png delete mode 100644 clients/kwmtheme/pics/pindown.png delete mode 100644 clients/kwmtheme/pics/pinup.png delete mode 100644 clients/kwmtheme/pics/unknown.png diff --git a/clients/kwmtheme/CMakeLists.txt b/clients/kwmtheme/CMakeLists.txt deleted file mode 100644 index 8b601112a7..0000000000 --- a/clients/kwmtheme/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ - -add_subdirectory( cli_installer ) -add_subdirectory( pics ) - - - - -########### next target ############### - -set(kwin3_kwmtheme_PART_SRCS kwmthemeclient.cpp ) - - -kde4_add_plugin(kwin3_kwmtheme ${kwin3_kwmtheme_PART_SRCS}) - - - -target_link_libraries(kwin3_kwmtheme ${KDE4_KDECORE_LIBS} kdecorations ) - -install(TARGETS kwin3_kwmtheme DESTINATION ${PLUGIN_INSTALL_DIR} ) - - -########### install files ############### - -install( FILES kwmtheme.desktop DESTINATION ${DATA_INSTALL_DIR}/kwin ) - diff --git a/clients/kwmtheme/cli_installer/CMakeLists.txt b/clients/kwmtheme/cli_installer/CMakeLists.txt deleted file mode 100644 index 96116a8da7..0000000000 --- a/clients/kwmtheme/cli_installer/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ - - - -########### next target ############### - -set(kwmtheme_SRCS main.cpp ) - - -kde4_add_executable(kwmtheme ${kwmtheme_SRCS}) - -target_link_libraries(kwmtheme ${KDE4_KDECORE_LIBS} ) - -install(TARGETS kwmtheme ${INSTALL_TARGETS_DEFAULT_ARGS}) - diff --git a/clients/kwmtheme/cli_installer/main.cpp b/clients/kwmtheme/cli_installer/main.cpp deleted file mode 100644 index 58f7f245be..0000000000 --- a/clients/kwmtheme/cli_installer/main.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************** -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, see . -*********************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static const char description[] = - I18N_NOOP("Installs a KWM theme"); - -void copy(const QString &src, const QString &dest) -{ - QFile copyInput(src); - QFile copyOutput(dest); - if(!copyInput.open(QIODevice::ReadOnly)){ - kWarning(1212) << "Couldn't open " << src ; - return; - } - if(!copyOutput.open(QIODevice::WriteOnly)){ - kWarning(1212) << "Couldn't open " << dest ; - copyInput.close(); - return; - } - while(!copyInput.atEnd()){ - copyOutput.putch(copyInput.getch()); - } - copyInput.close(); - copyOutput.close(); -} - -int main(int argc, char **argv) -{ - KCmdLineArgs::init(argc, argv, "kwmtheme", description, "0.1"); - - KCmdLineOptions options; - options.add("+[file]", ki18n("Path to a theme config file")); - KCmdLineArgs::addCmdLineOptions( options ); - KApplication app(argc, argv); - KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); - if(!args->count()){ - kWarning(1212) << "You need to specify the path to a theme config file!" ; - return(1); - } - - QString srcStr = QString(args->arg(0)); - QFile f(srcStr); - QString tmpStr; - - if(!f.exists()){ - kWarning(1212) << "Specified theme config file doesn't exist!" ; - return(2); - } - - QStringList appDirs = KGlobal::dirs()->findDirs("data", "kwin"); - QString localDirStr = *(appDirs.end()); - if(localDirStr.isEmpty()){ - localDirStr = KGlobal::dirs()->saveLocation("data", "kwin"); - } - localDirStr += "/pics/"; - if(!QFile::exists(localDirStr)) - QDir().mkdir(localDirStr); - - QFileInfo fi(f); - KSimpleConfig input(fi.absoluteFilePath()); - srcStr = fi.dirPath(true) + '/'; - KSharedConfig::Ptr output = KGlobal::config(); - input.setGroup("Window Border"); - output->setGroup("General"); - - tmpStr = input.readEntry("shapePixmapTop"); - if(!tmpStr.isEmpty()){ - copy(srcStr+tmpStr, localDirStr+tmpStr); - } - output->writeEntry("wm_top", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapBottom"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_bottom", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapLeft"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_left", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapRight"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_right", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapTopLeft"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_topleft", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapTopRight"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_topright", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapBottomLeft"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_bottomleft", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("shapePixmapBottomRight"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("wm_bottomright", tmpStr, KConfig::Normal|KConfig::Global); - - - input.setGroup("Window Titlebar"); - output->writeEntry("TitleAlignment", input.readEntry("TitleAlignment"), KConfig::Normal|KConfig::Global); - output->writeEntry("PixmapUnderTitleText", input.readEntry("PixmapUnderTitleText"), KConfig::Normal|KConfig::Global); - output->writeEntry("TitleFrameShaded", input.readEntry("TitleFrameShaded"), KConfig::Normal|KConfig::Global); - - tmpStr = input.readEntry("MenuButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("menu", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("PinUpButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("pinup", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("PinDownButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("pindown", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("CloseButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("close", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("MaximizeButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("maximize", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("MaximizeDownButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("maximizedown", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("MinimizeButton"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("iconify", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("TitlebarPixmapActive"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("TitlebarPixmapActive", tmpStr, KConfig::Normal|KConfig::Global); - tmpStr = input.readEntry("TitlebarPixmapInactive"); - if(!tmpStr.isEmpty()) - copy(srcStr+tmpStr, localDirStr+tmpStr); - output->writeEntry("TitlebarPixmapInactive", tmpStr, KConfig::Normal|KConfig::Global); - - input.setGroup("Window Button Layout"); - output->setGroup("Buttons"); - output->writeEntry("ButtonA", input.readEntry("ButtonA"), KConfig::Normal|KConfig::Global); - output->writeEntry("ButtonB", input.readEntry("ButtonB"), KConfig::Normal|KConfig::Global); - output->writeEntry("ButtonC", input.readEntry("ButtonC"), KConfig::Normal|KConfig::Global); - output->writeEntry("ButtonD", input.readEntry("ButtonD"), KConfig::Normal|KConfig::Global); - output->writeEntry("ButtonE", input.readEntry("ButtonE"), KConfig::Normal|KConfig::Global); - output->writeEntry("ButtonF", input.readEntry("ButtonF"), KConfig::Normal|KConfig::Global); - - output->sync(); - - return(0); -} - diff --git a/clients/kwmtheme/kwmtheme.desktop b/clients/kwmtheme/kwmtheme.desktop deleted file mode 100644 index a7d71c7712..0000000000 --- a/clients/kwmtheme/kwmtheme.desktop +++ /dev/null @@ -1,89 +0,0 @@ -[Desktop Entry] -Name=KWM Theme -Name[af]=KWM Tema -Name[ar]=سمة KWM -Name[be]=Тэма KWM -Name[be@latin]=Matyŭ „KWM” -Name[bg]=Тема KWM -Name[bn]=KWM থীম -Name[bn_IN]=KWM থিম -Name[br]=Gwiskad KWM -Name[ca]=Tema KWM -Name[ca@valencia]=Tema KWM -Name[cs]=Téma KWM -Name[csb]=Témë KWM -Name[cy]=Thema KWM -Name[da]=KWM-tema -Name[de]=KWM-Design -Name[el]=Θέμα KWM -Name[en_GB]=KWM Theme -Name[eo]=KWM-etoso -Name[es]=Tema de KWM -Name[et]=KWM teema -Name[eu]=KWM gaia -Name[fa]=چهره KWM -Name[fi]=KWM-teema -Name[fr]=Thème KWM -Name[fy]=KWM-tema -Name[ga]=Téama KWM -Name[gl]=Tema do KWM -Name[gu]=KWM થીમ -Name[he]=ערכת KWM -Name[hi]=केडबल्यूएम प्रसंग -Name[hne]=केडबल्यूएम प्रसंग -Name[hr]=KWM tema -Name[hsb]=KWM-tema -Name[hu]=KWM téma -Name[ia]=Thema KWM -Name[id]=Tema KWM -Name[is]=KWM þema -Name[it]=Tema KWM -Name[ja]=KWM テーマ -Name[ka]=KWM სტილი -Name[kk]=KWM нақышы -Name[km]=ស្បែក KWM -Name[kn]=KWM ಪರಿಸರವಿನ್ಯಾಸ (ಥೀಮ್) -Name[ko]=KWM 테마 -Name[ku]=Dirbê KWM -Name[lt]=KWM tema -Name[lv]=KWM tēma -Name[mai]=केडबल्यूएम प्रसंग -Name[mk]=KWM тема -Name[ml]=കെഡബ്ല്യൂഎം പ്രമേയം -Name[mr]=केडबल्यूएम सुत्रयोजना -Name[ms]=Temas KWM -Name[nb]=KWM-tema -Name[nds]=KWM-Muster -Name[ne]=KWM विषयवस्तु -Name[nl]=KWM-thema -Name[nn]=KWM-tema -Name[pa]=KWM ਥੀਮ -Name[pl]=Motyw KWM -Name[pt]=Tema KWM -Name[pt_BR]=Tema KWM -Name[ro]=Tematică KWM -Name[ru]=Стиль KWM -Name[se]=KWM-fáddá -Name[si]=KWM තේමාව -Name[sk]=Téma KWM -Name[sl]=Tema KWM -Name[sr]=КВМ‑ова тема -Name[sr@ijekavian]=КВМ‑ова тема -Name[sr@ijekavianlatin]=KWM‑ova tema -Name[sr@latin]=KWM‑ova tema -Name[sv]=KWM-tema -Name[ta]=KWM தலைப்பு -Name[te]=KWM థీమ్ -Name[tg]=Мавзӯъи KWM -Name[th]=รูปแบบชุดตกแต่ง KWM -Name[tr]=KWM Teması -Name[uk]=Тема KWM -Name[uz]=KWM mavzusi -Name[uz@cyrillic]=KWM мавзуси -Name[vi]=Sắc thái KWM -Name[wa]=Tinme KWM -Name[xh]=Umxholo we KWM -Name[x-test]=xxKWM Themexx -Name[zh_CN]=KWM 主题 -Name[zh_TW]=KWM 主題 -X-KDE-Library=kwin3_kwmtheme diff --git a/clients/kwmtheme/kwmthemeclient.cpp b/clients/kwmtheme/kwmthemeclient.cpp deleted file mode 100644 index 7b120a54c7..0000000000 --- a/clients/kwmtheme/kwmthemeclient.cpp +++ /dev/null @@ -1,951 +0,0 @@ -/******************************************************************** -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, see . -*********************************************************************/ - -#include "kwmthemeclient.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -namespace KWMTheme { - - -/* static QPixmap stretchPixmap(QPixmap& src, bool stretchVert){ - QPixmap dest; - QBitmap *srcMask, *destMask; - int w, h, w2, h2; - QPainter p; - - if (src.isNull()) return src; - - w = src.width(); - h = src.height(); - - if (stretchVert){ - w2 = w; - for (h2=h; h2<100; h2=h2<<1) - ; - } - else{ - h2 = h; - for (w2=w; w2<100; w2=w2<<1) - ; - } - if (w2==w && h2==h) return src; - - dest = src; - dest.resize(w2, h2); - - p.begin(&dest); - p.drawTiledPixmap(0, 0, w2, h2, src); - p.end(); - - srcMask = (QBitmap*)src.mask(); - if (srcMask){ - destMask = (QBitmap*)dest.mask(); - p.begin(destMask); - p.drawTiledPixmap(0, 0, w2, h2, *srcMask); - p.end(); - } - return dest; -} */ - - -inline const KDecorationOptions* options() { return KDecoration::options(); } - -enum FramePixmap{FrameTop=0, FrameBottom, FrameLeft, FrameRight, FrameTopLeft, - FrameTopRight, FrameBottomLeft, FrameBottomRight}; - -static QPixmap *framePixmaps[8]; -static QPixmap *menuPix, *iconifyPix, *closePix, *maxPix, *minmaxPix, - *pinupPix, *pindownPix; -static QPixmap *aTitlePix = 0; -static QPixmap *iTitlePix = 0; -static KPixmapEffect::GradientType grType; -static int maxExtent, titleAlign; -static bool titleGradient = true; -static bool pixmaps_created = false; -static bool titleSunken = false; -static bool titleTransparent; - -static void create_pixmaps() -{ - const char * const keys[] = {"wm_top", "wm_bottom", "wm_left", "wm_right", - "wm_topleft", "wm_topright", "wm_bottomleft", "wm_bottomright"}; - - if(pixmaps_created) - return; - pixmaps_created = true; - - KSharedConfig::Ptr _config = KGlobal::config(); - KConfigGroup config(_config, "General"); - - QString tmpStr; - - for(int i=0; i < 8; ++i) - { - framePixmaps[i] = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry(keys[i], " "))); - if(framePixmaps[i]->isNull()) - kWarning(1212) << "Unable to load frame pixmap for " << keys[i] ; - } -/* - *framePixmaps[FrameTop] = stretchPixmap(*framePixmaps[FrameTop], false); - *framePixmaps[FrameBottom] = stretchPixmap(*framePixmaps[FrameBottom], false); - *framePixmaps[FrameLeft] = stretchPixmap(*framePixmaps[FrameLeft], true); - *framePixmaps[FrameRight] = stretchPixmap(*framePixmaps[FrameRight], true); -*/ - maxExtent = framePixmaps[FrameTop]->height(); - if(framePixmaps[FrameBottom]->height() > maxExtent) - maxExtent = framePixmaps[FrameBottom]->height(); - if(framePixmaps[FrameLeft]->width() > maxExtent) - maxExtent = framePixmaps[FrameLeft]->width(); - if(framePixmaps[FrameRight]->width() > maxExtent) - maxExtent = framePixmaps[FrameRight]->width(); - - maxExtent++; - - menuPix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("menu", " "))); - iconifyPix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("iconify", " "))); - maxPix = new QPixmap(locate("appdata", - "pics/"+config.readEntry("maximize", " "))); - minmaxPix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("maximizedown", " "))); - closePix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("close", " "))); - pinupPix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("pinup", " "))); - pindownPix = new QPixmap(locate("data", - "kwin/pics/"+config.readEntry("pindown", " "))); - if(menuPix->isNull()) - menuPix->load(locate("data", "kwin/pics/menu.png")); - if(iconifyPix->isNull()) - iconifyPix->load(locate("data", "kwin/pics/iconify.png")); - if(maxPix->isNull()) - maxPix->load(locate("data", "kwin/pics/maximize.png")); - if(minmaxPix->isNull()) - minmaxPix->load(locate("data", "kwin/pics/maximizedown.png")); - if(closePix->isNull()) - closePix->load(locate("data", "kwin/pics/close.png")); - if(pinupPix->isNull()) - pinupPix->load(locate("data", "kwin/pics/pinup.png")); - if(pindownPix->isNull()) - pindownPix->load(locate("data", "kwin/pics/pindown.png")); - - tmpStr = config.readEntry("TitleAlignment"); - if(tmpStr == "right") - titleAlign = Qt::AlignRight | Qt::AlignVCenter; - else if(tmpStr == "middle") - titleAlign = Qt::AlignCenter; - else - titleAlign = Qt::AlignLeft | Qt::AlignVCenter; - titleSunken = config.readEntry("TitleFrameShaded", true ); - // titleSunken = true; // is this fixed? - titleTransparent = config.readEntry("PixmapUnderTitleText", true); - - tmpStr = config.readEntry("TitlebarLook"); - if(tmpStr == "shadedVertical"){ - aTitlePix = new QPixmap; - aTitlePix->resize(32, 20); - KPixmapEffect::gradient(*aTitlePix, - options()->color(KDecorationOptions::ColorTitleBar, true), - options()->color(KDecorationOptions::ColorTitleBlend, true), - KPixmapEffect::VerticalGradient); - iTitlePix = new QPixmap; - iTitlePix->resize(32, 20); - KPixmapEffect::gradient(*iTitlePix, - options()->color(KDecorationOptions::ColorTitleBar, false), - options()->color(KDecorationOptions::ColorTitleBlend, false), - KPixmapEffect::VerticalGradient); - titleGradient = false; // we can just tile this - - } - else if(tmpStr == "shadedHorizontal") - grType = KPixmapEffect::HorizontalGradient; - else if(tmpStr == "shadedDiagonal") - grType = KPixmapEffect::DiagonalGradient; - else if(tmpStr == "shadedCrossDiagonal") - grType = KPixmapEffect::CrossDiagonalGradient; - else if(tmpStr == "shadedPyramid") - grType = KPixmapEffect::PyramidGradient; - else if(tmpStr == "shadedRectangle") - grType = KPixmapEffect::RectangleGradient; - else if(tmpStr == "shadedPipeCross") - grType = KPixmapEffect::PipeCrossGradient; - else if(tmpStr == "shadedElliptic") - grType = KPixmapEffect::EllipticGradient; - else{ - titleGradient = false; - tmpStr = config.readEntry("TitlebarPixmapActive", ""); - if(!tmpStr.isEmpty()){ - aTitlePix = new QPixmap; - aTitlePix->load(locate("data", "kwin/pics/" + tmpStr)); - } - else - aTitlePix = NULL; - tmpStr = config.readEntry("TitlebarPixmapInactive", ""); - if(!tmpStr.isEmpty()){ - iTitlePix = new QPixmap; - iTitlePix->load(locate("data", "kwin/pics/" + tmpStr)); - } - else - iTitlePix = NULL; - } -} - -static void delete_pixmaps() -{ - for(int i=0; i < 8; ++i) - delete framePixmaps[i]; - - delete menuPix; - delete iconifyPix; - delete closePix; - delete maxPix; - delete minmaxPix; - delete pinupPix; - delete pindownPix; - delete aTitlePix; - aTitlePix = 0; - delete iTitlePix; - iTitlePix = 0; - - titleGradient = true; - pixmaps_created = false; - titleSunken = false; -} - -void MyButton::drawButtonLabel(QPainter *p) -{ - if(pixmap()){ - // If we have a theme who's button covers the entire width or - // entire height, we shift down/right by 1 pixel so we have - // some visual notification of button presses. i.e. for MGBriezh - int offset = (isDown() && ((pixmap()->width() >= width()) || - (pixmap()->height() >= height()))) ? 1 : 0; - style().drawItem(p, QRect( offset, offset, width(), height() ), - AlignCenter, colorGroup(), - true, pixmap(), QString()); - } -} - -KWMThemeClient::KWMThemeClient( KDecorationBridge* b, KDecorationFactory* f ) - : KDecoration( b, f ) -{ -} - -void KWMThemeClient::init() -{ - createMainWidget( WResizeNoErase | WStaticContents ); - widget()->installEventFilter( this ); - - stickyBtn = maxBtn = mnuBtn = 0; - layout = new QGridLayout(widget()); - layout->addColSpacing(0, maxExtent); - layout->addColSpacing(2, maxExtent); - - layout->addRowSpacing(0, maxExtent); - - layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Fixed, - QSizePolicy::Expanding)); - - if( isPreview()) - layout->addWidget( new QLabel( i18n( "
KWMTheme
" ), widget()), 2, 1); - else - layout->addItem( new QSpacerItem( 0, 0 ), 2, 1); - - // Without the next line, shading flickers - layout->addItem( new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding) ); - layout->addRowSpacing(3, maxExtent); - layout->setRowStretch(2, 10); - layout->setColumnStretch(1, 10); - - QBoxLayout* hb = new QBoxLayout(0, QBoxLayout::LeftToRight, 0, 0, 0); - layout->addLayout( hb, 1, 1 ); - - KSharedConfig::Ptr _config = KGlobal::config(); - KConfigGroup config(_config, "Buttons"); - QString val; - MyButton *btn; - int i; - static const char * const defaultButtons[]={"Menu","Sticky","Off","Iconify", - "Maximize","Close"}; - static const char keyOffsets[]={"ABCDEF"}; - for(i=0; i < 6; ++i){ - if(i == 3){ - titlebar = new QSpacerItem(10, 20, QSizePolicy::Expanding, - QSizePolicy::Minimum ); - hb->addItem( titlebar ); - } - QString key("Button"); - key += QChar(keyOffsets[i]); - val = config.readEntry(key, defaultButtons[i]); - if(val == "Menu"){ - mnuBtn = new MyButton(widget(), "menu"); - mnuBtn->setToolTip( i18n("Menu")); - iconChange(); - hb->addWidget(mnuBtn); - mnuBtn->setFixedSize(20, 20); - connect(mnuBtn, SIGNAL(pressed()), this, - SLOT(menuButtonPressed())); - } - else if(val == "Sticky"){ - stickyBtn = new MyButton(widget(), "sticky"); - stickyBtn->setToolTip( i18n("Sticky")); - if (isOnAllDesktops()) - stickyBtn->setPixmap(*pindownPix); - else - stickyBtn->setPixmap(*pinupPix); - connect(stickyBtn, SIGNAL( clicked() ), this, SLOT(toggleOnAllDesktops())); - hb->addWidget(stickyBtn); - stickyBtn->setFixedSize(20, 20); - } - else if((val == "Iconify") && isMinimizable()){ - btn = new MyButton(widget(), "iconify"); - btn->setToolTip( i18n("Minimize")); - btn->setPixmap(*iconifyPix); - connect(btn, SIGNAL(clicked()), this, SLOT(minimize())); - hb->addWidget(btn); - btn->setFixedSize(20, 20); - } - else if((val == "Maximize") && isMaximizable()){ - maxBtn = new MyButton(widget(), "max"); - maxBtn->setToolTip( i18n("Maximize")); - maxBtn->setPixmap(*maxPix); - connect(maxBtn, SIGNAL(clicked()), this, SLOT(maximize())); - hb->addWidget(maxBtn); - maxBtn->setFixedSize(20, 20); - } - else if((val == "Close") && isCloseable()){ - btn = new MyButton(widget(), "close"); - btn->setToolTip( i18n("Close")); - btn->setPixmap(*closePix); - connect(btn, SIGNAL(clicked()), this, SLOT(closeWindow())); - hb->addWidget(btn); - btn->setFixedSize(20, 20); - } - else{ - if((val != "Off") && - ((val == "Iconify") && !isMinimizable()) && - ((val == "Maximize") && !isMaximizable())) - kWarning(1212) << "KWin: Unrecognized button value: " << val ; - - } - } - if(titleGradient){ - aGradient = new QPixmap; - iGradient = new QPixmap; - } - else{ - aGradient = 0; - iGradient = 0; - } - widget()->setBackgroundMode(NoBackground); -} - -void KWMThemeClient::drawTitle(QPainter &dest) -{ - QRect titleRect = titlebar->geometry(); - QRect r(0, 0, titleRect.width(), titleRect.height()); - QPixmap buffer; - - if(buffer.width() == r.width()) - return; - - buffer.resize(r.size()); - QPainter p; - p.begin(&buffer); - - if(titleSunken){ - qDrawShadeRect(&p, r, options()->palette(KDecorationOptions::ColorFrame, isActive()).active(), - true, 1, 0); - r.setRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2); - } - - QPixmap *fill = isActive() ? aTitlePix : iTitlePix; - if(fill) - p.drawTiledPixmap(r, *fill); - else if(titleGradient){ - fill = isActive() ? aGradient : iGradient; - if(fill->width() != r.width()){ - fill->resize(r.width(), 20); - KPixmapEffect::gradient(*fill, - options()->color(KDecorationOptions::ColorTitleBar, isActive()), - options()->color(KDecorationOptions::ColorTitleBlend, isActive()), - grType); - } - p.drawTiledPixmap(r, *fill); - } - else{ - p.fillRect(r, options()->palette(KDecorationOptions::ColorTitleBar, isActive()).active(). - brush(QPalette::Button)); - } - p.setFont(options()->font(isActive())); - p.setPen(options()->color(KDecorationOptions::ColorFont, isActive())); - // Add left & right margin - r.setLeft(r.left()+5); - r.setRight(r.right()-5); - p.drawText(r, titleAlign, caption()); - p.end(); - - dest.drawPixmap(titleRect.x(), titleRect.y(), buffer); -} - - -void KWMThemeClient::resizeEvent( QResizeEvent* ) -{ - doShape(); - widget()->repaint(); -} - -void KWMThemeClient::captionChange() -{ - widget()->repaint( titlebar->geometry(), false ); -} - -void KWMThemeClient::paintEvent( QPaintEvent *) -{ - QPainter p; - p.begin(widget()); - int x,y; - // first the corners - int w1 = framePixmaps[FrameTopLeft]->width(); - int h1 = framePixmaps[FrameTopLeft]->height(); - if (w1 > width()/2) w1 = width()/2; - if (h1 > height()/2) h1 = height()/2; - p.drawPixmap(0,0,*framePixmaps[FrameTopLeft], - 0,0,w1, h1); - int w2 = framePixmaps[FrameTopRight]->width(); - int h2 = framePixmaps[FrameTopRight]->height(); - if (w2 > width()/2) w2 = width()/2; - if (h2 > height()/2) h2 = height()/2; - p.drawPixmap(width()-w2,0,*framePixmaps[FrameTopRight], - framePixmaps[FrameTopRight]->width()-w2,0,w2, h2); - - int w3 = framePixmaps[FrameBottomLeft]->width(); - int h3 = framePixmaps[FrameBottomLeft]->height(); - if (w3 > width()/2) w3 = width()/2; - if (h3 > height()/2) h3 = height()/2; - p.drawPixmap(0,height()-h3,*framePixmaps[FrameBottomLeft], - 0,framePixmaps[FrameBottomLeft]->height()-h3,w3, h3); - - int w4 = framePixmaps[FrameBottomRight]->width(); - int h4 = framePixmaps[FrameBottomRight]->height(); - if (w4 > width()/2) w4 = width()/2; - if (h4 > height()/2) h4 = height()/2; - p.drawPixmap(width()-w4,height()-h4,*(framePixmaps[FrameBottomRight]), - framePixmaps[FrameBottomRight]->width()-w4, - framePixmaps[FrameBottomRight]->height()-h4, - w4, h4); - - QPixmap pm; - QMatrix m; - int n,s,w; - //top - pm = *framePixmaps[FrameTop]; - - if (pm.width() > 0){ - s = width()-w2-w1; - n = s/pm.width(); - w = n>0?s/n:s; - m.reset(); - m.scale(w/(float)pm.width(), 1); - pm = pm.transformed(m); - - x = w1; - while (1){ - if (pm.width() < width()-w2-x){ - p.drawPixmap(x,maxExtent-pm.height()-1, - pm); - x += pm.width(); - } - else { - p.drawPixmap(x,maxExtent-pm.height()-1, - pm, - 0,0,width()-w2-x,pm.height()); - break; - } - } - } - - //bottom - pm = *framePixmaps[FrameBottom]; - - if (pm.width() > 0){ - s = width()-w4-w3; - n = s/pm.width(); - w = n>0?s/n:s; - m.reset(); - m.scale(w/(float)pm.width(), 1); - pm = pm.transformed(m); - - x = w3; - while (1){ - if (pm.width() < width()-w4-x){ - p.drawPixmap(x,height()-maxExtent+1,pm); - x += pm.width(); - } - else { - p.drawPixmap(x,height()-maxExtent+1,pm, - 0,0,width()-w4-x,pm.height()); - break; - } - } - } - - //left - pm = *framePixmaps[FrameLeft]; - - if (pm.height() > 0){ - s = height()-h3-h1; - n = s/pm.height(); - w = n>0?s/n:s; - m.reset(); - m.scale(1, w/(float)pm.height()); - pm = pm.transformed(m); - - y = h1; - while (1){ - if (pm.height() < height()-h3-y){ - p.drawPixmap(maxExtent-pm.width()-1, y, - pm); - y += pm.height(); - } - else { - p.drawPixmap(maxExtent-pm.width()-1, y, - pm, - 0,0, pm.width(), - height()-h3-y); - break; - } - } - } - - //right - pm = *framePixmaps[FrameRight]; - - if (pm.height() > 0){ - s = height()-h4-h2; - n = s/pm.height(); - w = n>0?s/n:s; - m.reset(); - m.scale(1, w/(float)pm.height()); - pm = pm.transformed(m); - - y = h2; - while (1){ - if (pm.height() < height()-h4-y){ - p.drawPixmap(width()-maxExtent+1, y, - pm); - y += pm.height(); - } - else { - p.drawPixmap(width()-maxExtent+1, y, - pm, - 0,0, pm.width(), - height()-h4-y); - break; - } - } - } - drawTitle(p); - - QColor c = widget()->colorGroup().background(); - - // KWM evidently had a 1 pixel border around the client window. We - // emulate it here, but should be removed at some point in order to - // seamlessly mesh widget themes - p.setPen(c); - p.drawRect(maxExtent-1, maxExtent-1, width()-(maxExtent-1)*2, - height()-(maxExtent-1)*2); - - // We fill the area behind the wrapped widget to ensure that - // shading animation is drawn as smoothly as possible - QRect r(layout->cellGeometry(2, 1)); - p.fillRect( r.x(), r.y(), r.width(), r.height(), c); - p.end(); -} - -void KWMThemeClient::doShape() -{ - - QBitmap shapemask(width(), height()); - shapemask.fill(color0); - QPainter p; - p.begin(&shapemask); - p.setBrush(color1); - p.setPen(color1); - int x,y; - // first the corners - int w1 = framePixmaps[FrameTopLeft]->width(); - int h1 = framePixmaps[FrameTopLeft]->height(); - if (w1 > width()/2) w1 = width()/2; - if (h1 > height()/2) h1 = height()/2; - if (framePixmaps[FrameTopLeft]->mask()) - p.drawPixmap(0,0,*framePixmaps[FrameTopLeft]->mask(), - 0,0,w1, h1); - else - p.fillRect(0,0,w1,h1,color1); - int w2 = framePixmaps[FrameTopRight]->width(); - int h2 = framePixmaps[FrameTopRight]->height(); - if (w2 > width()/2) w2 = width()/2; - if (h2 > height()/2) h2 = height()/2; - if (framePixmaps[FrameTopRight]->mask()) - p.drawPixmap(width()-w2,0,*framePixmaps[FrameTopRight]->mask(), - framePixmaps[FrameTopRight]->width()-w2,0,w2, h2); - else - p.fillRect(width()-w2,0,w2, h2,color1); - - int w3 = framePixmaps[FrameBottomLeft]->width(); - int h3 = framePixmaps[FrameBottomLeft]->height(); - if (w3 > width()/2) w3 = width()/2; - if (h3 > height()/2) h3 = height()/2; - if (framePixmaps[FrameBottomLeft]->mask()) - p.drawPixmap(0,height()-h3,*framePixmaps[FrameBottomLeft]->mask(), - 0,framePixmaps[FrameBottomLeft]->height()-h3,w3, h3); - else - p.fillRect(0,height()-h3,w3,h3,color1); - - int w4 = framePixmaps[FrameBottomRight]->width(); - int h4 = framePixmaps[FrameBottomRight]->height(); - if (w4 > width()/2) w4 = width()/2; - if (h4 > height()/2) h4 = height()/2; - if (framePixmaps[FrameBottomRight]->mask()) - p.drawPixmap(width()-w4,height()-h4,*framePixmaps[FrameBottomRight]->mask(), - framePixmaps[FrameBottomRight]->width()-w4, - framePixmaps[FrameBottomRight]->height()-h4, - w4, h4); - else - p.fillRect(width()-w4,height()-h4,w4,h4,color1); - - QPixmap pm; - QMatrix m; - int n,s,w; - //top - if (framePixmaps[FrameTop]->mask()) - { - pm = *framePixmaps[FrameTop]->mask(); - - s = width()-w2-w1; - n = s/pm.width(); - w = n>0?s/n:s; - m.reset(); - m.scale(w/(float)pm.width(), 1); - pm = pm.transformed(m); - - x = w1; - while (1){ - if (pm.width() < width()-w2-x){ - p.drawPixmap(x,maxExtent-pm.height()-1, - pm); - x += pm.width(); - } - else { - p.drawPixmap(x,maxExtent-pm.height()-1, - pm, - 0,0,width()-w2-x,pm.height()); - break; - } - } - } - - //bottom - if (framePixmaps[FrameBottom]->mask()) - { - pm = *framePixmaps[FrameBottom]->mask(); - - s = width()-w4-w3; - n = s/pm.width(); - w = n>0?s/n:s; - m.reset(); - m.scale(w/(float)pm.width(), 1); - pm = pm.transformed(m); - - x = w3; - while (1){ - if (pm.width() < width()-w4-x){ - p.drawPixmap(x,height()-maxExtent+1,pm); - x += pm.width(); - } - else { - p.drawPixmap(x,height()-maxExtent+1,pm, - 0,0,width()-w4-x,pm.height()); - break; - } - } - } - - //left - if (framePixmaps[FrameLeft]->mask()) - { - pm = *framePixmaps[FrameLeft]->mask(); - - s = height()-h3-h1; - n = s/pm.height(); - w = n>0?s/n:s; - m.reset(); - m.scale(1, w/(float)pm.height()); - pm = pm.transformed(m); - - y = h1; - while (1){ - if (pm.height() < height()-h3-y){ - p.drawPixmap(maxExtent-pm.width()-1, y, - pm); - y += pm.height(); - } - else { - p.drawPixmap(maxExtent-pm.width()-1, y, - pm, - 0,0, pm.width(), - height()-h3-y); - break; - } - } - } - - //right - if (framePixmaps[FrameRight]->mask()) - { - pm = *framePixmaps[FrameRight]->mask(); - - s = height()-h4-h2; - n = s/pm.height(); - w = n>0?s/n:s; - m.reset(); - m.scale(1, w/(float)pm.height()); - pm = pm.transformed(m); - - y = h2; - while (1){ - if (pm.height() < height()-h4-y){ - p.drawPixmap(width()-maxExtent+1, y, - pm); - y += pm.height(); - } - else { - p.drawPixmap(width()-maxExtent+1, y, - pm, - 0,0, pm.width(), - height()-h4-y); - break; - } - } - } - p.fillRect(maxExtent-1, maxExtent-1, width()-2*maxExtent+2, height()-2*maxExtent+2, color1); - setMask(shapemask); -} - - -void KWMThemeClient::showEvent(QShowEvent *) -{ - doShape(); - widget()->repaint(false); -} - -void KWMThemeClient::mouseDoubleClickEvent( QMouseEvent * e ) -{ - if (e->button() == LeftButton && titlebar->geometry().contains( e->pos() ) ) - titlebarDblClickOperation(); -} - -void KWMThemeClient::desktopChange() -{ - if (stickyBtn) { - bool on = isOnAllDesktops(); - stickyBtn->setPixmap(on ? *pindownPix : *pinupPix); - stickyBtn->setToolTip( on ? i18n("Unsticky") : i18n("Sticky") ); - } -} - -void KWMThemeClient::maximizeChange() -{ - if (maxBtn) { - bool m = maximizeMode() == MaximizeFull; - maxBtn->setPixmap(m ? *minmaxPix : *maxPix); - maxBtn->setToolTip( m ? i18n("Restore") : i18n("Maximize")); - } -} - -void KWMThemeClient::slotMaximize() -{ - maximize( maximizeMode() == MaximizeFull ? MaximizeRestore : MaximizeFull ); -} - -void KWMThemeClient::activeChange() -{ - widget()->update(); -} - -KDecoration::Position KWMThemeClient::mousePosition(const QPoint &p) const -{ - Position m = KDecoration::mousePosition(p); - // corners - if(p.y() < framePixmaps[FrameTop]->height() && - p.x() < framePixmaps[FrameLeft]->width()){ - m = PositionTopLeft; - } - else if(p.y() < framePixmaps[FrameTop]->height() && - p.x() > width()-framePixmaps[FrameRight]->width()){ - m = PositionTopRight; - } - else if(p.y() > height()-framePixmaps[FrameBottom]->height() && - p.x() < framePixmaps[FrameLeft]->width()){ - m = PositionBottomLeft; - } - else if(p.y() > height()-framePixmaps[FrameBottom]->height() && - p.x() > width()-framePixmaps[FrameRight]->width()){ - m = PositionBottomRight; - } // edges - else if(p.y() < framePixmaps[FrameTop]->height()) - m = PositionTop; - else if(p.y() > height()-framePixmaps[FrameBottom]->height()) - m = PositionBottom; - else if(p.x() < framePixmaps[FrameLeft]->width()) - m = PositionLeft; - else if(p.x() > width()-framePixmaps[FrameRight]->width()) - m = PositionRight; - return(m); -} - -void KWMThemeClient::menuButtonPressed() -{ - mnuBtn->setDown(false); // will stay down if I don't do this - QPoint pos = mnuBtn->mapToGlobal(mnuBtn->rect().bottomLeft()); - showWindowMenu( pos ); -} - -void KWMThemeClient::iconChange() -{ - if(mnuBtn){ - if( icon().pixmap( QIcon::Small, QIcon::Normal ).isNull()){ - mnuBtn->setPixmap(*menuPix); - } - else{ - mnuBtn->setPixmap(icon().pixmap( QIcon::Small, QIcon::Normal )); - } - } -} - -bool KWMThemeClient::eventFilter( QObject* o, QEvent* e ) -{ - if ( o != widget() ) - return false; - - switch ( e->type() ) - { - case QEvent::Resize: - resizeEvent( static_cast< QResizeEvent* >( e ) ); - return true; - - case QEvent::Paint: - paintEvent( static_cast< QPaintEvent* >( e ) ); - return true; - - case QEvent::MouseButtonDblClick: - mouseDoubleClickEvent( static_cast< QMouseEvent* >( e ) ); - return true; - - case QEvent::MouseButtonPress: - processMousePressEvent( static_cast< QMouseEvent* >( e ) ); - return true; - - case QEvent::Show: - showEvent( static_cast< QShowEvent* >( e ) ); - return true; - - default: - return false; - } -} - -QSize KWMThemeClient::minimumSize() const -{ - return widget()->minimumSize().expandedTo( QSize( 100, 50 )); -} - -void KWMThemeClient::resize( const QSize& s ) -{ - widget()->resize( s ); -} - -void KWMThemeClient::borders( int& left, int& right, int& top, int& bottom ) const -{ - left = - right = - top = - bottom = - -TODO -} - -KWMThemeFactory::KWMThemeFactory() -{ - create_pixmaps(); -} - -KWMThemeFactory::~KWMThemeFactory() -{ - delete_pixmaps(); -} - -KDecoration* KWMThemeFactory::createDecoration( KDecorationBridge* b ) -{ - return new KWMThemeClient( b, this ); -} - -bool KWMThemeFactory::reset( unsigned long mask ) -{ - bool needHardReset = false; - -TODO - - // doesn't obey the Border size setting - if( mask & ( SettingFont | SettingButtons )) - needHardReset = true; - - if( mask & ( SettingFont | SettingColors )) { - KWMTheme::delete_pixmaps(); - KWMTheme::create_pixmaps(); - } - - if( !needHardReset ) - resetDecorations( mask ); - return needHardReset; -} - -} - -extern "C" -{ - KDE_EXPORT KDecorationFactory *create_factory() - { - return new KWMTheme::KWMThemeFactory(); - } -} - -#include "kwmthemeclient.moc" diff --git a/clients/kwmtheme/kwmthemeclient.h b/clients/kwmtheme/kwmthemeclient.h deleted file mode 100644 index 69e6d3844b..0000000000 --- a/clients/kwmtheme/kwmthemeclient.h +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************** -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, see . -*********************************************************************/ - -#ifndef __KWMTHEMECLIENT_H -#define __KWMTHEMECLIENT_H - -#include -#include -#include -#include -#include - -class QSpacerItem; -class QGridLayout; - -namespace KWMTheme { - -class MyButton : public QToolButton -{ -public: - explicit MyButton(QWidget *parent=0, const char *name=0) - : QToolButton(parent, name){setAutoRaise(true);setCursor( arrowCursor ); } -protected: - void drawButtonLabel(QPainter *p); -}; - -class KWMThemeClient : public KDecoration -{ - Q_OBJECT -public: - KWMThemeClient( KDecorationBridge* b, KDecorationFactory* f ); - ~KWMThemeClient(){;} - void init(); - void resize( const QSize& s ); - QSize minimumSize() const; - void borders( int& left, int& right, int& top, int& bottom ) const; -protected: - void doShape(); - void drawTitle(QPainter &p); - void resizeEvent( QResizeEvent* ); - void paintEvent( QPaintEvent* ); - void showEvent( QShowEvent* ); - void mouseDoubleClickEvent( QMouseEvent * ); - bool eventFilter( QObject* o, QEvent* e ); - void captionChange(); - void desktopChange(); - void maximizeChange(); - void iconChange(); - void activeChange(); - void shadeChange() {}; - Position mousePosition(const QPoint &) const; -protected slots: - //void slotReset(); - void menuButtonPressed(); - void slotMaximize(); -private: - QPixmap buffer; - KPixmap *aGradient, *iGradient; - MyButton *maxBtn, *stickyBtn, *mnuBtn; - QSpacerItem *titlebar; - QGridLayout* layout; -}; - -class KWMThemeFactory : public KDecorationFactory -{ -public: - KWMThemeFactory(); - ~KWMThemeFactory(); - KDecoration* createDecoration( KDecorationBridge* b ); - bool reset( unsigned long mask ); -}; - -} - -#endif - diff --git a/clients/kwmtheme/pics/CMakeLists.txt b/clients/kwmtheme/pics/CMakeLists.txt deleted file mode 100644 index cd0e702950..0000000000 --- a/clients/kwmtheme/pics/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ - -install( FILES close.png maximize.png maximizedown.png menu.png iconify.png pindown.png pinup.png unknown.png fog.png fog-grey.png bluesun.png greenie.light.png greenie.dim.png DESTINATION ${DATA_INSTALL_DIR}/kwin/pics ) - diff --git a/clients/kwmtheme/pics/bluesun.png b/clients/kwmtheme/pics/bluesun.png deleted file mode 100644 index bcd8c091ff2e38740cdb77d3e91b6c6dfd5e7ba3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 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 dc|+iiyDOIv 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 U_=~Zav8{GM^`N^qP?+cb3;v*f&j0`b diff --git a/clients/kwmtheme/pics/greenie.light.png b/clients/kwmtheme/pics/greenie.light.png deleted file mode 100644 index 44fadcae0b72a1261bab43676321281b47a2d8ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3837 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 diff --git a/clients/kwmtheme/pics/maximize.png b/clients/kwmtheme/pics/maximize.png deleted file mode 100644 index ff96561bbfb6a215582c5d72695842b2c087de60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc@shmVT^RPt z$G%|(@)SK?977~7CnqQ{{c⪙lL-L1z)*3k_(H(7FK2vx{J;A8ocB2wW^mE?l5yCEEmzD9u9_Q!c<7zd z(OX$^Vy%weNuO)py4Solbx)kvzUY1KJS)SOLZQZ72~TC9xyE2~Gt=`DOG+UIdmDM1 z7;ZQ5HQVfC=56d_xN(btzu#7aO$M8NOuY=veV7>fzjJIhPUJWQ)Xw1P>gTe~DWM4f DkoH){ diff --git a/clients/kwmtheme/pics/maximizedown.png b/clients/kwmtheme/pics/maximizedown.png deleted file mode 100644 index 089c679204c8f7c0722b0e21675274ac9c683384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc@shmVT^RPt z$G%|(@)SK?977~7CnqQ{i6}6HJg}EJz#s zR+gMttD|?)=bE?fHE&Jb6X&%rdY?Pb%J8L7s4-WEmy*T?^>ug`g(b72M-jV~F8ZP;?f+~BIYL5PRmDIL9)B`4PE z=$-Vr=B<0pTT}PMdF_kd=gzY-d?^%a%$4v|2AXROHa9apFR`Q)VzBYX4F(%b%)O1x w49zx}82T7)HSqND-eR)R#LvudlZQ7OLv25Ya zZb)PIc;oQ$&?3Gay1zc`;lfi(4<=~V(syAP{?rCq@KjEvOgiFypW_#X4cN8|PQkoJh zaFrn@>f8>&Z)|(^{{Og?`^Y1m#``SHoj_xJszM@4g7ec#$`gxH85k;V6<-Lr_T`MP zkN;O+pYuNF!VE4NUosBcu;q%m!BumE5D&dmI(jQhPOR0@JLz-HTlbo`rtXRJ+84dg zoo8kEQYh4zE8(dOG}jnxZf1I3Vo52)U}NvC1_qvfz9xnne7p?}&5aE_jSNjTZZR-2 f^E5LxH)Le!ZsOqlW8bq7sGY&n)z4*}Q$iB}LF8w| diff --git a/clients/kwmtheme/pics/unknown.png b/clients/kwmtheme/pics/unknown.png deleted file mode 100644 index 48601d1c6736cca23590ea4780b9e7c55fe0b298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy5&=FTu0R?H92^`1E2m{nTi4Lg zaNxj!|Ns9-yuVfrlwd3g@(X5gcy=QV#7XjYcVXyYmGuB}c6hothE&|D?RVrmpuoW* z%JT33<6VMHy0>gSF3r@v#V2{j=9X>GA5EFe`kfN1ULUc@4cvV4%C#A8PZPGeaZGi0 zT4BRlTfB%r{qm*u)MneXq8F3%V!Y*(AOF2@{1>Bq41X=hYwn7-%Ndq_F;s9-vHWEh zB#^6QW!YFMZ>>?0f6H0$eej%rT>(da?^CMOxcPkMlXW?@O%H4~zi