summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/.MachBuntButton.cpp.swpbin0 -> 16384 bytes
-rw-r--r--src/.cvsignore33
-rw-r--r--src/MachBunt.cpp890
-rw-r--r--src/MachBunt.desktop3
-rw-r--r--src/MachBunt.h173
-rw-r--r--src/MachBunt.kcsrc22
-rw-r--r--src/MachBuntButton.cpp228
-rw-r--r--src/Makefile.am30
-rw-r--r--src/Makefile.in953
-rw-r--r--src/bar.xpm137
-rw-r--r--src/buttons.h130
-rw-r--r--src/kroete.xcfbin0 -> 2602 bytes
-rw-r--r--src/kroete.xpm248
-rw-r--r--src/kwinMachBuntrc5
-rw-r--r--src/left.xpm137
-rw-r--r--src/middle.xcfbin0 -> 2093 bytes
-rw-r--r--src/middle.xpm55
-rw-r--r--src/middle_button.xpm76
-rw-r--r--src/middle_button_left.xpm144
-rw-r--r--src/middle_button_right.xpm144
-rw-r--r--src/middle_button_side.xcfbin0 -> 3427 bytes
-rw-r--r--src/pixmaps.h11
-rw-r--r--src/right.xpm140
-rw-r--r--src/side.xcfbin0 -> 1571 bytes
24 files changed, 3559 insertions, 0 deletions
diff --git a/src/.MachBuntButton.cpp.swp b/src/.MachBuntButton.cpp.swp
new file mode 100644
index 0000000..5c21b2a
--- /dev/null
+++ b/src/.MachBuntButton.cpp.swp
Binary files differ
diff --git a/src/.cvsignore b/src/.cvsignore
new file mode 100644
index 0000000..facb647
--- /dev/null
+++ b/src/.cvsignore
@@ -0,0 +1,33 @@
+Makefile
+Makefile.in
+libkwinSuSE_la_meta_unload.lo
+.deps
+.libs
+MachBuntButtonLower.lo
+MachBuntButtonSticky.moc
+MachBuntButtonHelp.moc
+MachBuntButtonMenu.moc
+MachBuntButtonMaximize.lo
+MachBuntButtonClose.lo
+MachBuntButtonMaximize.moc
+MachBunt.moc
+MachBuntButtonMenu.lo
+MachBuntButton.lo
+libkwinSuSE_la_meta_unload.cpp
+MachBunt.lo
+kwin3_SuSE.la
+MachBuntButtonHelp.lo
+MachBuntButtonLower.moc
+MachBuntButton.moc
+MachBuntButtonIconify.moc
+libkwinSuSE.la.closure
+MachBuntButtonSticky.lo
+MachBuntButtonClose.moc
+MachBuntButtonIconify.lo
+kwin_SuSE.la
+kwin_SuSE.la.closure
+kwin_SuSE_la_meta_unload.cpp
+kwin_SuSE_la_meta_unload.lo
+*.lo
+*_closure.cpp
+
diff --git a/src/MachBunt.cpp b/src/MachBunt.cpp
new file mode 100644
index 0000000..b20706b
--- /dev/null
+++ b/src/MachBunt.cpp
@@ -0,0 +1,890 @@
+/*
+ * SuSE window decoration for SuSE 9.1
+ * written by Adrian Schroeter <[email protected]>
+ *
+ * copyright 2002 SuSE AG, GPL License
+ *
+ */
+
+#include "MachBunt.h"
+#include <kpixmapeffect.h>
+#include <kimageeffect.h>
+#include <kiconeffect.h>
+#include <kdrawutil.h>
+#include <klocale.h>
+#include <kconfig.h>
+#include <kstandarddirs.h>
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qdrawutil.h>
+#include <qdatetime.h>
+#include <qcursor.h>
+#include <qbitmap.h>
+#include <qimage.h>
+
+extern "C"
+{
+ KDecorationFactory *create_factory()
+ {
+ return new SuSEMachBunt::BuntFactory();
+ }
+}
+
+namespace SuSEMachBunt {
+
+#include "pixmaps.h"
+
+// [button number][inactive/active][std/mouseOver/buttonPressed][miniIcon]
+KPixmap buttonPixmap[BtnCount][2][3][2];
+bool titlebarResize, titlebarPlain,
+ titlebarLogo, titlebarSidebar,
+ titlebarNoPlainButtons;
+double titlebarLenseButtonFlare;
+
+static bool pixmaps_created = false;
+static QImage left_img[2][2];
+static QImage middle_img[2][2];
+static QImage right_img[2][2];
+static QImage text_img[2][2];
+static QImage bar_img[2][2];
+static QImage kroete_img[2][2];
+static QImage button_img[2][2];
+static QImage button_l_img[2][2];
+static QImage button_r_img[2][2];
+
+extern QColor *btnForeground;
+extern QPixmap *defaultPixmap;
+
+static QImage colorize(QImage img, const QColor &col1, const QColor &col2, float bright, float contrast )
+{
+ int rval, gval, bval, val, val2, i;
+ int pixels = (img.depth() > 8) ? img.width()*img.height()
+ : img.numColors();
+ unsigned int *data = img.depth() > 8 ? (unsigned int *) img.bits()
+ : (unsigned int *) img.colorTable();
+
+ for (i=0; i<pixels; i++)
+ {
+ val = static_cast<int>(qBlue(data[i]) * contrast);
+ val2 = static_cast<int>(qGreen(data[i]) * contrast);
+
+ rval = static_cast<int>( (val2*255*3 + (255-val2)*col2.red())/255 );
+ gval = static_cast<int>( (val2*255*3 + (255-val2)*col2.green())/255 );
+ bval = static_cast<int>( (val2*255*3 + (255-val2)*col2.blue())/255 );
+ rval = static_cast<int>( (val *rval + (255-val)*col1.red())/255 );
+ gval = static_cast<int>( (val *gval + (255-val)*col1.green())/255 );
+ bval = static_cast<int>( (val *bval + (255-val)*col1.blue())/255 );
+
+ if ( 255 < rval+qRed(data[i]) ) rval = 255;
+ else rval += qRed(data[i]);
+ if ( 255 < gval+qRed(data[i]) ) gval = 255;
+ else gval += qRed(data[i]);
+ if ( 255 < bval+qRed(data[i]) ) bval = 255;
+ else bval += qRed(data[i]);
+
+ if (bright != 1.0)
+ {
+ rval = static_cast<int>(bright*rval);
+ gval = static_cast<int>(bright*gval);
+ bval = static_cast<int>(bright*bval);
+ }
+
+ data[i] = qRgba(rval, gval, bval, qAlpha(data[i]));
+ }
+
+ return img;
+}
+
+KPixmap create_buttonPixmap( int x, int y, QPixmap _pix, QPixmap bg, int active, int mouse )
+{
+ QImage i;
+ KPixmap _p(QPixmap(x,y));
+ QPixmap t, pix;
+ QPainter p;
+
+ if ( _pix.isNull() )
+ pix = QPixmap(kdelogo);
+ else
+ pix = _pix;
+
+ p.begin(&_p);
+
+ if ( x != pix.width() || y != pix.height() ){
+ p.drawImage( 0, 0, bg.convertToImage().smoothScale(x,y) );
+ p.drawPixmap((x-pix.width())/2, (y-pix.height())/2, pix );
+ }else{
+ p.drawTiledPixmap(0, 0, x, y, bg );
+ p.drawPixmap(0, (y-pix.height())/2, pix );
+ }
+
+ p.end();
+
+ if ( !(mouse == 1 && titlebarPlain) && !(mouse == 0 && !titlebarPlain) ){ // not standard
+ i=_p;
+ if ( (mouse == 0 && titlebarPlain) || (mouse == 1 && !titlebarPlain) ){ // mouse over
+ _p.convertFromImage(KImageEffect::blend(Qt::white, i, 0.25 ));
+ }else{ // pressed
+ _p.convertFromImage(KImageEffect::blend(Qt::black, i, 0.25 ));
+ }
+
+ if ( mouse == 2 ) { // pressed
+ i=_p;
+ p.begin(&_p);
+ p.drawImage( 0, 2, i, 0, 0, i.width(), i.height()-2 );
+ p.end();
+ }
+ }
+
+ return _p;
+}
+
+QImage image_convert( const char **b, int h){
+ QPixmap p(b);
+ QImage i;
+ i = p.convertToImage();
+ if ( p.height()!=h )
+ i = i.smoothScale((p.width()*h)/p.height(),h);
+ return i;
+}
+
+static void create_pixmaps( )
+{
+ if(pixmaps_created)
+ return;
+
+ pixmaps_created = true;
+
+ for ( int m=0; m<2; m++ )
+ for ( int i=0; i<2; i++){
+ QColor ctb = KDecoration::options()->color(KDecoration::ColorTitleBar,i);
+ QColor ctbB = KDecoration::options()->color(KDecoration::ColorTitleBlend,i);
+ left_img[i][m] = colorize(image_convert(left_xpm, m ? 12 : PIX_HEIGHT) , ctb,
+ ctbB, 0.75 , 0.75 );
+ right_img[i][m] = colorize(image_convert(right_xpm, m ? 12 : PIX_HEIGHT) , ctb,
+ ctbB, 1.0 , 1.0 );
+ middle_img[i][m] = colorize(image_convert(middle_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ text_img[i][m] = colorize(image_convert(middle_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 0.75 , 0.75 );
+ kroete_img[i][m] = colorize(image_convert(kroete_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ bar_img[i][m] = colorize(image_convert(bar_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ button_img[i][m] = colorize(image_convert(middle_button_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ button_l_img[i][m] = colorize(image_convert(middle_button_left_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ button_r_img[i][m] = colorize(image_convert(middle_button_right_xpm, m ? 12 : PIX_HEIGHT), ctb,
+ ctbB, 1.0 , 1.0 );
+ }
+
+ for ( int m=0; m<2; m++ )
+ for ( int M=0; M<3; M++ )
+ for ( int a=0; a<2; a++ ){
+ buttonPixmap[0][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(kdelogo), button_img[a][m], a, M );
+ buttonPixmap[1][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(sticky_xpm), button_img[a][m], a, M );
+ buttonPixmap[2][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(question_xpm), button_img[a][m], a, M );
+ buttonPixmap[3][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(iconify_xpm), button_img[a][m], a, M );
+ buttonPixmap[4][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(maximze_xpm), button_img[a][m], a, M );
+ QPixmap i(button_img[a][m]);
+ QPainter p(&i);
+ p.drawPixmap(button_img[a][m].width()-right_img[a][m].width()+BORDER_RIGHT, 0, right_img[a][m]);
+ p.end();
+ buttonPixmap[5][a][M][m] = create_buttonPixmap( m ? 12 : PIX_HEIGHT, m ? 12 : PIX_HEIGHT, QPixmap(close_xpm), i, a, M );
+ }
+
+ // Make sure button pixmaps contrast with the current colour scheme.
+ if(qGray(KDecoration::options()->color(KDecoration::ColorTitleBar,true).rgb()) > 127)
+ btnForeground = new QColor(Qt::black);
+ else
+ btnForeground = new QColor(Qt::white);
+}
+
+void delete_pixmaps()
+{
+ delete btnForeground;
+
+ pixmaps_created = false;
+}
+
+MachBunt::MachBunt(KDecorationBridge* bridge, KDecorationFactory* factory)
+ : KDecoration(bridge, factory), windowLayout(0)
+{
+
+ lastButtonWidth = 0;
+ buttonPressedPosition.setX( -1 );
+ for ( int i=0; i < BtnCount; i++ )
+ button[i]=0;
+
+ hiddenItems = false;
+}
+
+MachBunt::~MachBunt()
+{
+}
+
+void MachBunt::init()
+{
+ if ( isTool() ) {
+ titleHeight = 12;
+ smallButtons = true;
+ } else {
+ titleHeight = PIX_HEIGHT;
+ smallButtons = false;
+ }
+
+ createMainWidget(WNoAutoErase);
+ widget()->installEventFilter( this );
+ widget()->setBackgroundMode(NoBackground);
+
+ KConfig c("kwinMachBuntrc");
+ c.setGroup("General");
+ titlebarResize = c.readBoolEntry("TitleBarResize", true);
+ titlebarLogo = c.readBoolEntry("TitleBarLogo", true);
+ titlebarPlain = c.readBoolEntry("TitleBarPlain", true);
+ titlebarNoPlainButtons = c.readBoolEntry("TitleBarNoPlainButtons", false);
+ titlebarSidebar = c.readBoolEntry("TitleBarSideBar", false);
+ titlebarLenseButtonFlare = c.readDoubleNumEntry("titlebarLenseButtonFlare", 1.7);
+ defaultPixmap = new QPixmap(kdelogo);
+ create_pixmaps();
+ createButtons();
+
+ doLayout();
+}
+
+void MachBunt::createButtons()
+{
+ if ( !button[BtnMenu] )
+ button[BtnMenu] = new MachBuntButton(this, "menu", BtnMenu, text_img[0][smallButtons], text_img[1][smallButtons], smallButtons, i18n("Menu"));
+// if ( !button[BtnSticky] )
+// button[BtnSticky] = new MachBuntButton(this, "sticky", BtnSticky, middle_img[0][smallButtons], middle_img[1][smallButtons], smallButtons, i18n("Sticky"));
+ if ( !button[BtnHelp] )
+ button[BtnHelp]= new MachBuntButton(this, "help", BtnHelp, middle_img[0][smallButtons], middle_img[1][smallButtons], smallButtons, i18n("Help"));
+ if ( !button[BtnIconify] )
+ button[BtnIconify] = new MachBuntButton(this, "iconify", BtnIconify, middle_img[0][smallButtons], middle_img[1][smallButtons], smallButtons, i18n("Minimize"));
+ if ( !button[BtnMax] )
+ button[BtnMax] = new MachBuntButton(this, "maximize", BtnMax, middle_img[0][smallButtons], middle_img[1][smallButtons], smallButtons, i18n("Maximize"));
+ if ( !button[BtnClose] )
+ button[BtnClose] = new MachBuntButton(this, "close", BtnClose, middle_img[0][smallButtons], middle_img[1][smallButtons], smallButtons, i18n("Close"));
+
+ // Connect required stuff together
+ connect( button[BtnMenu], SIGNAL(pressed()), this, SLOT( menuButtonPressed() ));
+ connect( button[BtnClose], SIGNAL( clicked() ), this, SLOT( closeWindow() ));
+ connect( button[BtnIconify], SIGNAL( clicked() ), this, SLOT( minimize() ));
+ connect( button[BtnMax], SIGNAL( clicked() ), this, SLOT( slotMaximize() ));
+ for ( int i=0; i < BtnCount; i++ )
+ if ( button[i] ){
+ connect( button[i], SIGNAL(shapeMe(int)),this, SLOT(doShape(int)));
+ connect( button[i], SIGNAL(pressed()),this, SLOT(buttonPressed()));
+ connect( button[i], SIGNAL(released()),this, SLOT(buttonReleased()));
+ connect( button[i], SIGNAL(mousePressedMove(QMouseEvent*)),this, SLOT(mouseMoveOnButtonPressed(QMouseEvent*)));
+ }
+
+ connect( button[BtnHelp], SIGNAL( clicked() ), this, SLOT( showContextHelp() ));
+
+ // Hide buttons which are not required
+ // We can un-hide them if required later
+ if ( !isMinimizable() )
+ button[BtnIconify]->hide();
+ if ( !isMaximizable() )
+ button[BtnMax]->hide();
+ if ( !providesContextHelp())
+ button[BtnHelp]->hide();
+
+ // Make sure that the menu button uses the correct mini-icon
+ iconChange();
+ maximizeChange();
+ desktopChange();
+}
+
+void MachBunt::reset( unsigned long changed )
+{
+ for(int i = 0; i < BtnCount; i++)
+ if(button[i])
+ button[i]->reset( changed );
+ widget()->repaint();
+}
+
+int MachBunt::mapButton( const QChar &c)
+{
+ switch (c.latin1())
+ {
+ case 'M':
+ return BtnMenu;
+ case 'S':
+ return BtnSticky;
+ case 'H': // Help
+ return BtnHelp;
+ case 'I': // Minimize
+ return BtnIconify;
+ case 'A': // Maximize
+ return BtnMax;
+ case 'X': // Close
+ return BtnClose;
+ }
+ // something went wrong
+ qDebug("unknown Button to map \"%c\"", c.latin1() );
+ return -1;
+}
+
+void MachBunt::doLayout()
+{
+ delete windowLayout;
+
+ windowLayout = new QVBoxLayout(widget(), 0, 0);
+ titlebar = new QSpacerItem ( 0, titleHeight, QSizePolicy::Expanding,
+ QSizePolicy::Fixed);
+ QBoxLayout *topLayout = new QBoxLayout(windowLayout, QBoxLayout::LeftToRight, 0, 0);
+#if 0
+ bool first_left = true;
+ for ( unsigned int i = 0; i <options()->titleButtonsLeft().length(); i++)
+ {
+ int b = mapButton(options()->titleButtonsLeft()[i]);
+ if ( b>=0 ){
+ topLayout->addWidget(button[b], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[b], 0);
+ button[b]->setFixedSize(titleHeight, titleHeight);
+ if( first_left )
+ {
+ first_left = false;
+ button[b]->setPosition( ButtonLeft );
+ }
+ }
+ }
+
+ topLayout->addItem(titlebar);
+
+#else
+ topLayout->addWidget(button[BtnMenu], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[BtnMenu], 0);
+ button[BtnMenu]->setFixedSize(titleHeight, titleHeight);
+ button[BtnMenu]->setPosition( ButtonLeft );
+
+ topLayout->addItem(titlebar);
+
+ topLayout->addWidget(button[BtnHelp], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[BtnHelp], 0);
+ button[BtnHelp]->setFixedSize(titleHeight, titleHeight);
+
+ topLayout->addWidget(button[BtnIconify], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[BtnIconify], 0);
+ button[BtnIconify]->setFixedSize(titleHeight, titleHeight);
+
+ topLayout->addWidget(button[BtnMax], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[BtnMax], 0);
+ button[BtnMax]->setFixedSize(titleHeight, titleHeight);
+
+ topLayout->addWidget(button[BtnClose], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[BtnClose], 0);
+ button[BtnClose]->setFixedSize(titleHeight, titleHeight);
+ button[BtnClose]->setPosition( ButtonRight );
+
+ if ( !isMinimizable() )
+ button[BtnIconify]->hide();
+ if ( !isMaximizable() )
+ button[BtnMax]->hide();
+#endif
+#if 0
+ MachBuntButton* last_right = NULL;
+ for ( unsigned int i = 0; i <options()->titleButtonsRight().length(); i++)
+ {
+ int b = mapButton(options()->titleButtonsRight()[i]);
+ if ( b>=0 ){
+ topLayout->addWidget(button[b], Qt::AlignVCenter);
+ topLayout->setStretchFactor(button[b], 0);
+ button[b]->setFixedSize(titleHeight, titleHeight);
+ last_right = button[b];
+ }
+ }
+ if( last_right )
+ last_right->setPosition( ButtonRight );
+#endif
+
+ QHBoxLayout * midLayout = new QHBoxLayout(windowLayout, 0, 0);
+ midLayout->addSpacing(BORDER_LEFT);
+ if( isPreview())
+ midLayout->addWidget(new QLabel( i18n( "<center><b>MachBunt</b></center>" ), widget()));
+ else
+ midLayout->addItem( new QSpacerItem( 0, 0 )); // no widget in the middle
+ midLayout->addSpacing(BORDER_RIGHT);
+
+ windowLayout->addSpacing(BORDER_BOTTOM);
+ windowLayout->setStretchFactor(topLayout, 0);
+ windowLayout->setStretchFactor(midLayout, 1);
+}
+
+void MachBunt::borders(int& left, int& right, int& top, int& bottom) const
+{
+ left = BORDER_LEFT;
+ right = BORDER_RIGHT;
+ top = titleHeight;
+ bottom = BORDER_BOTTOM;
+}
+
+void MachBunt::mouseMoveOnButtonPressed( QMouseEvent *e )
+{
+#if 0
+ if ( buttonPressedPosition.x() >= 0 ){
+ QPoint p( buttonPressedPosition.x() - geometry().x(),
+ buttonPressedPosition.y() - geometry().y());
+
+ if ( mousePosition(p) == KDecoration::TopLeft ||
+ mousePosition(p) == KDecoration::TopRight )
+ performMouseCommand(Options::MouseResize, QCursor::pos());
+ else if ( mousePosition(p) == KDecoration::Top ){
+ QPoint m(geometry().x()+geometry().width()/2, geometry().y());
+ performMouseCommand(Options::MouseResize, m );
+ }
+ buttonPressedPosition.setX( -1 );
+ }
+
+ KDecoration::mouseMoveEvent(e);
+#endif
+}
+
+void MachBunt::buttonPressed()
+{
+ QPoint p( QCursor::pos().x() - geometry().x(),
+ QCursor::pos().y() - geometry().y());
+
+ if ( mousePosition(p) == KDecorationDefines::PositionTopLeft ||
+ mousePosition(p) == KDecorationDefines::PositionTopRight ||
+ mousePosition(p) == KDecorationDefines::PositionTop )
+ buttonPressedPosition = QCursor::pos();
+}
+
+void MachBunt::buttonReleased()
+{
+ buttonPressedPosition.setX( -1 );
+// keyPressEvent( Key_Escape );
+}
+
+ KDecoration::Position
+MachBunt::mousePosition(const QPoint & p) const
+{
+ int x = p.x();
+ int y = p.y();
+
+ if ( y < titleHeight ){
+ if ( x < BUTTON_RESIZE_SIZE )
+ return KDecorationDefines::PositionTopLeft;
+ if ( x > width() - 1 - BUTTON_RESIZE_SIZE )
+ return KDecorationDefines::PositionTopRight;
+ }
+
+ if ( titlebarResize ){
+ if ( ( ! (x < BUTTON_RESIZE_SIZE || x > width() - 1 - BUTTON_RESIZE_SIZE) )
+ && (y < TOP_RESIZE_HEIGHT ))
+ {
+ if ( titlebarResize==true )
+ return KDecorationDefines::PositionTop;
+ else
+ return KDecorationDefines::PositionCenter;
+ }
+ }
+ return KDecoration::mousePosition(p);
+}
+
+void MachBunt::slotMaximize()
+{
+ if ( button[BtnMax]->last_button == MidButton )
+ maximize(maximizeMode() ^ MaximizeVertical );
+ else if ( button[BtnMax]->last_button == RightButton )
+ maximize(maximizeMode() ^ MaximizeHorizontal );
+ else
+ maximize(maximizeMode() == MaximizeFull ? MaximizeRestore : MaximizeFull);
+}
+
+void MachBunt::resize( const QSize& s )
+{
+ widget()->resize( s );
+}
+
+QSize MachBunt::minimumSize() const
+{
+ return QSize( 200, 50 );
+}
+
+const int SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | NET::DesktopMask | NET::DockMask
+ | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask
+ | NET::UtilityMask | NET::SplashMask;
+
+bool MachBunt::isTool()
+{
+ NET::WindowType type = windowType( SUPPORTED_WINDOW_TYPES_MASK );
+ return ((type==NET::Toolbar)||(type==NET::NET::Utility)||(type==NET::Menu));
+}
+
+bool MachBunt::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;
+ default:
+ break;
+ }
+ return false;
+}
+
+void MachBunt::desktopChange()
+{
+ emit(oadChange(isOnAllDesktops()));
+}
+
+KDecoration* BuntFactory::createDecoration( KDecorationBridge* b )
+{
+ return(new MachBunt(b, this));
+}
+
+bool BuntFactory::reset(unsigned long changed)
+{
+ // Do we need to "hit the wooden hammer" ?
+ bool needHardReset = false;
+ if (changed & (SettingDecoration | SettingFont | SettingButtons | SettingBorder))
+ {
+ needHardReset = true;
+ }
+ if( changed & SettingColors )
+ { // pixmaps need to be recreated
+ delete_pixmaps();
+ create_pixmaps();
+ }
+
+ if (needHardReset) {
+ return true;
+ } else {
+ resetDecorations(changed);
+ return false;
+ }
+}
+
+QValueList< BuntFactory::BorderSize > BuntFactory::borderSizes() const
+{ // the list must be sorted
+ return QValueList< BorderSize >() << BorderNormal;
+ // TODO << BorderLarge << BorderVeryLarge << BorderHuge << BorderVeryHuge << BorderOversized;
+}
+
+void MachBunt::resizeEvent( QResizeEvent*)
+{
+ doShape();
+
+ calcHiddenButtons();
+ widget()->repaint();
+#if 0
+ for ( int i=0; i < BtnCount; i++ )
+ if ( button[i] )
+ button[i]->reset(0);
+
+ if (isVisibleToTLW())
+ {
+ update(rect());
+ int dx = 0;
+ int dy = 0;
+
+ if ( e->oldSize().width() != width() )
+ dx = 32 + QABS( e->oldSize().width() - width() );
+
+ if ( e->oldSize().height() != height() )
+ dy = 8 + QABS( e->oldSize().height() - height() );
+
+ if ( dy )
+ update( 0, height() - dy + 1, width(), dy );
+
+ if ( dx )
+ {
+ update( width() - dx + 1, 0, dx, height() );
+ update( QRect( QPoint(4,4), titlebar->geometry().bottomLeft() - QPoint(1,0) ) );
+ update( QRect( titlebar->geometry().topRight(), QPoint( width() - 4, titlebar->geometry().bottom() ) ) );
+ // Titlebar needs no paint event
+ QApplication::postEvent( widget(), new QPaintEvent( titlebar->geometry(), FALSE ) );
+ }
+ }
+#endif
+}
+
+
+void MachBunt::captionChange()
+{
+ widget()->repaint( titlebar->geometry(), false );
+}
+
+void MachBunt::iconChange()
+{
+ button[BtnMenu]->setPixmap( icon().pixmap( QIconSet::Small, QIconSet::Normal ));
+
+ if (button[BtnMenu]->isVisible())
+ button[BtnMenu]->repaint(false);
+}
+
+
+void MachBunt::paintEvent( QPaintEvent *pe )
+{
+// bool hicolor = QPixmap::defaultDepth() > 8;
+ int fontoffset = 1;
+
+ QPainter p(widget());
+ p.setClipRegion(pe->region());
+
+ // Obtain widget bounds.
+ QRect r(widget()->rect());
+ int i;
+ int x = r.x();
+ int y = r.y();
+ int x2 = r.width()-1;
+ int y2 = r.height()-1;
+ int w = r.width();
+ int ps = smallButtons ? PIX_SIDE/2 : PIX_SIDE;
+
+ QColorGroup g = options()->colorGroup(KDecorationDefines::ColorFrame, isActive());
+
+ p.setPen( g.dark() );
+ // the dark outer drawings
+ p.drawLine(x, y+PIX_CORNER_RADIUS+2*BORDER_LEFT, x, y2);
+ p.drawLine(x2, y+PIX_CORNER_RADIUS+2*BORDER_LEFT, x2, y2);
+ p.drawLine(x, y2 , x2, y2);
+ // the dark diagonals beside titlebar
+ p.drawLine(x, y+PIX_CORNER_RADIUS+2*BORDER_LEFT, x+BORDER_LEFT, y+PIX_CORNER_RADIUS+BORDER_LEFT);
+ p.drawLine(x2, y+PIX_CORNER_RADIUS+2*BORDER_LEFT, x2-BORDER_LEFT, y+PIX_CORNER_RADIUS+BORDER_LEFT);
+ p.setPen( g.light() );
+ if ( titlebarSidebar ){
+ for ( i=1; i<BORDER_LEFT; i++)
+ p.drawLine(x+i, y+PIX_CORNER_RADIUS+2*BORDER_LEFT-i+1, x+i, y2-1);
+ for ( i=1; i<BORDER_RIGHT; i++)
+ p.drawLine(x2-i, y+PIX_CORNER_RADIUS+2*BORDER_LEFT-i+1, x2-i, y2-1);
+ }else{
+ for ( i=1; i<BORDER_LEFT; i++)
+ p.drawLine(x+i, titleHeight, x+i, y2-1);
+ for ( i=1; i<BORDER_RIGHT; i++)
+ p.drawLine(x2-i, titleHeight, x2-i, y2-1);
+ }
+ for ( i=1; i<BORDER_BOTTOM; i++)
+ p.drawLine(x+1,y2-i, w-2, y2-i);
+
+ // draw the title bar.
+ r = titlebar->geometry();
+// QFontMetrics fm(options()->font(true));
+
+ KPixmap titleBuffer;
+ if ( titlebarSidebar )
+ titleBuffer.resize(w-BORDER_LEFT-BORDER_RIGHT, titleHeight);
+ else
+ titleBuffer.resize(w, titleHeight);
+ KIconEffect kie;
+
+ QPainter p2( &titleBuffer, widget());
+
+ p2.drawTiledPixmap( ps, 0, titleBuffer.width()-2*ps, titleHeight, middle_img[isActive()][smallButtons]);
+ p2.drawTiledPixmap( 0, 0, ps, titleHeight, left_img[isActive()][smallButtons]);
+ p2.drawTiledPixmap( titleBuffer.width()-ps, 0, ps, titleHeight, right_img[isActive()][smallButtons]);
+
+ int l;
+ if ( button[BtnHelp] && button[BtnHelp]->isShown() )
+ l=button[BtnHelp]->x();
+ else if ( button[BtnIconify]->isShown() )
+ l=button[BtnIconify]->x();
+ else if ( button[BtnMax]->isShown() )
+ l=button[BtnMax]->x();
+ else if ( button[BtnClose]->isShown() )
+ l=button[BtnClose]->x();
+ else
+ l=0;
+
+ p2.drawTiledPixmap(l-titleHeight/2, 0, titleHeight-(titleHeight/2), titleHeight, button_img[isActive()][smallButtons], titleHeight/2, 0);
+
+ // Reduce the font size and weight for toolwindows.
+ QFont font = options()->font(true);
+ if ( smallButtons )
+ {
+ font.setPointSize( font.pointSize() - 2 );
+ font.setWeight( QFont::Normal );
+ fontoffset = 0;
+ }
+ p2.setFont( font );
+ p2.setPen( options()->color(KDecorationDefines::ColorFont, isActive() ));
+ w = p2.fontMetrics().width(caption())+2*TEXT_BORDER;
+ if ( w > r.width()-3-button_l_img[0][smallButtons].width()-bar_img[0][smallButtons].width() ) w=r.width()-3-button_l_img[0][smallButtons].width()-bar_img[0][smallButtons].width();
+ p2.drawTiledPixmap( r.x()-TEXT_BORDER-ps, 0, w+ps+2*TEXT_BORDER+3, titleHeight , text_img[isActive()][smallButtons]);
+ p2.drawPixmap(r.x()+w+TEXT_BORDER, 0, bar_img[isActive()][smallButtons]);
+ if ( titlebarLogo && isActive() && r.x()+w+kroete_img[0][smallButtons].width() < r.width() )
+ p2.drawTiledPixmap( r.x()+w+bar_img[0][smallButtons].width(), 0, kroete_img[0][smallButtons].width(), titleHeight, kroete_img[isActive()][smallButtons]);
+ p2.drawText( r.x(), fontoffset, w+TEXT_BORDER, r.height()-1, AlignLeft | AlignVCenter, caption() );
+
+ p2.end();
+
+ if ( titlebarSidebar )
+ p.drawPixmap( BORDER_LEFT, 0, titleBuffer );
+ else
+ p.drawPixmap( 0, 0, titleBuffer );
+}
+
+void MachBunt::showEvent(QShowEvent *)
+{
+ doShape();
+ widget()->repaint();
+}
+
+void MachBunt::mouseDoubleClickEvent( QMouseEvent * e )
+{
+ if (titlebar->geometry().contains( e->pos() ) )
+ titlebarDblClickOperation();
+}
+
+
+void MachBunt::maximizeChange()
+{
+// button[BtnMax]->setBitmap(m ? minmax_bits : maximize_bits);
+ button[BtnMax]->setTipText( (maximizeMode()==MaximizeFull) ? i18n("Restore") : i18n("Maximize"));
+}
+
+
+void MachBunt::activeChange()
+{
+ for(int i=0; i < BtnCount; i++)
+ {
+ if(button[i])
+ button[i]->repaint();
+ }
+
+ widget()->repaint();
+}
+
+
+void MachBunt::calcHiddenButtons()
+{
+ // order of hiding is help, maximize, minimize, close, then menu;
+ int minWidth = 32 + titleHeight*4 + (providesContextHelp() ? titleHeight*2 : titleHeight );
+
+ if(lastButtonWidth > width()) // Shrinking
+ {
+ lastButtonWidth = width();
+ if(width() < minWidth)
+ {
+ hiddenItems = true;
+
+ for(int i = 0; i < BtnCount; i++)
+ {
+ if(button[i])
+ {
+ if( !button[i]->isHidden() )
+ {
+ button[i]->hide();
+ }
+ minWidth -= button[i]->sizeHint().width();
+ if(width() >= minWidth)
+ return;
+ }
+ }
+ }
+ }
+ else
+ if(hiddenItems) // Expanding
+ {
+ lastButtonWidth = width();
+ int totalSize = titleHeight*3;
+
+ for(int i = BtnCount - 1; i >= 0; i--)
+ {
+ if(button[i])
+ {
+ if(button[i]->sizeHint().width() + totalSize <= width())
+ {
+ totalSize += button[i]->sizeHint().width();
+ button[i]->resize(button[i]->sizeHint());
+ button[i]->show();
+ }
+ else
+ return;
+ }
+ }
+
+ // all items shown now
+ hiddenItems = false;
+ }
+ else
+ lastButtonWidth = width();
+}
+
+void MachBunt::menuButtonPressed()
+{
+ // KS - move the menu left by 3 pixels, and down 2 pixels.
+ QPoint menupoint ( button[BtnMenu]->rect().bottomLeft().x()-3,
+ button[BtnMenu]->rect().bottomLeft().y()+2 );
+ KDecorationFactory* f = factory();
+ showWindowMenu( button[BtnMenu]->mapToGlobal( menupoint ));
+ if( !f->exists( this )) // 'this' was destroyed
+ return;
+ button[BtnMenu]->setDown(false);
+}
+
+void MachBunt::doShape(int x)
+{
+ QRegion mask(0, 0, width(), height());
+
+ int bWidth = smallButtons ? 12 : PIX_HEIGHT;
+ int i, bl=0, br=0, p=0;
+ int r(width());
+ if ( titlebarSidebar ){
+ bl=BORDER_LEFT;
+ br=BORDER_RIGHT;
+ // is the right button pressed ?
+ if ( x >= (r - br - bWidth) )
+ p=2;
+ }
+
+ mask -= QRegion(0, 0, bl+3, 1);
+ mask -= QRegion(0, 1, bl+1, 1);
+
+ // Remove top-right corner.
+ if ( smallButtons ){
+ mask -= QRegion(r-3-br, 0, 3+br, 1+p);
+ mask -= QRegion(r-2-br, 1, 2+br, 1+p);
+ mask -= QRegion(r-1-br, 2, 1+br, 1+p);
+ }else{
+ mask -= QRegion(r-7-br, 0, 7+br, 1+p);
+ mask -= QRegion(r-5-br, 1, 5+br, 1+p);
+ mask -= QRegion(r-4-br, 2, 4+br, 1+p);
+ mask -= QRegion(r-3-br, 3, 3+br, 1+p);
+ mask -= QRegion(r-2-br, 4, 2+br, 1+p);
+ mask -= QRegion(r-1-br, 5, 1+br, 2+p);
+ }
+ for ( i=0; i<br; i++)
+ mask -= QRegion(r-i-1, 0, 1, PIX_CORNER_RADIUS+bl+br-i);
+
+ // the buttons
+ for ( i=0; i<BtnCount; i++){
+ if ( button[i] && button[i]->isShown() ){
+ // top left corner of this button and right part of the button before
+ mask -= QRegion( button[i]->x() - 3, 0, 4, 1 );
+ mask -= QRegion( button[i]->x() - 1, 0, 1, 2 );
+ }
+ }
+
+ // the pressed button
+ if ( x != 0 ){
+ mask -= QRegion( x, 0, bWidth, 2 );
+ mask -= QRegion( x, 0, 1, 3 );
+ mask -= QRegion( x + bWidth -3 , 0, 3, 3 );
+ mask -= QRegion( x + bWidth -1 , 0, 1, 4 );
+ }
+
+ setMask(mask);
+}
+
+}
+
+#include "MachBunt.moc"
+// vim: ts=4
diff --git a/src/MachBunt.desktop b/src/MachBunt.desktop
new file mode 100644
index 0000000..bdf0712
--- /dev/null
+++ b/src/MachBunt.desktop
@@ -0,0 +1,3 @@
+[Desktop Entry]
+Name=MachBunt
+X-KDE-Library=kwin3_MachBunt
diff --git a/src/MachBunt.h b/src/MachBunt.h
new file mode 100644
index 0000000..fa60f54
--- /dev/null
+++ b/src/MachBunt.h
@@ -0,0 +1,173 @@
+/*
+ * $Id: MachBunt.h,v 1.23 2004/03/23 15:34:45 llunak Exp $
+ *
+ */
+
+#ifndef __KDE_SuSE_H
+#define __KDE_SuSE_H
+
+#include <qvariant.h>
+#include <qlayout.h>
+#include <qbutton.h>
+#include <qbitmap.h>
+#include <qimage.h>
+#include <kpixmap.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+class QLabel;
+class QSpacerItem;
+class QHBoxLayout;
+
+#define USE_BUT 1
+#define PIX_HEIGHT 24
+#define PIX_SIDE 8
+#define PIX_CORNER_RADIUS 7
+#define TOP_RESIZE_HEIGHT 6
+#define BUTTON_RESIZE_SIZE 5
+#define BORDER_LEFT 2
+#define BORDER_RIGHT 2
+#define BORDER_BOTTOM 6
+#define TEXT_BORDER 3
+
+namespace SuSEMachBunt
+{
+
+enum Buttons{ BtnMenu=0, BtnSticky, BtnHelp, BtnIconify, BtnMax,
+ BtnClose, BtnCount };
+
+enum ButtonPos { ButtonLeft, ButtonMiddle, ButtonRight };
+
+// [button number][inactive/active][std/mouseOver/buttonPressed][miniIcon]
+extern KPixmap buttonPixmap[BtnCount][2][3][2];
+extern bool titlebarResize, titlebarPlain, titlebarLogo, titlebarSidebar, titlebarNoPlainButtons;
+extern double titlebarLenseButtonFlare;
+
+KPixmap create_buttonPixmap( int x, int y, QPixmap pix, QPixmap bg, int active, int mouse );
+
+class MachBunt;
+
+class MachBuntButton : public QButton
+{
+ Q_OBJECT
+
+ public:
+ MachBuntButton(MachBunt *client, const char *name,
+ int button, QPixmap bgI, QPixmap bgA, bool isMini=false,
+ const QString& tip=NULL);
+ virtual ~MachBuntButton();
+ virtual void reset( unsigned long changed );
+ void setBitmap(const unsigned char *bitmap);
+ void setPixmap(const QPixmap &p);
+ void setTipText(const QString &tip);
+ void setPosition(ButtonPos pos);
+
+ virtual QSize sizeHint() const;
+ int last_button;
+ KPixmap menuButtonPixmap[BtnCount][2][3][2];
+
+ signals:
+ void shapeMe(int);
+ void mousePressedMove(QMouseEvent*);
+
+ protected:
+ void mousePressEvent(QMouseEvent* e);
+ void mouseReleaseEvent(QMouseEvent* e);
+ virtual void drawButton(QPainter *p);
+ void drawButtonLabel(QPainter *){;}
+ void enterEvent(QEvent *);
+ void leaveEvent(QEvent *);
+ void mouseMoveEvent( QMouseEvent *e );
+
+ bool resizePosition( QPoint pos );
+
+ QBitmap deco;
+ QPixmap pix;
+ QPixmap menuPixmap;
+ QPixmap bg[2];
+ bool menuBtn;
+ bool miniBtn;
+ bool pressed;
+ int button;
+ int state;
+ ButtonPos position;
+
+ private:
+ KDecoration *client;
+};
+
+class MachBunt : public KDecoration
+{
+ Q_OBJECT
+
+ public:
+ MachBunt(KDecorationBridge* bridge, KDecorationFactory* factory);
+ virtual ~MachBunt();
+ virtual void init();
+ virtual void resize(const QSize&);
+ virtual bool eventFilter( QObject* o, QEvent* e );
+
+ protected:
+ virtual void reset( unsigned long changed );
+ virtual void resizeEvent( QResizeEvent* );
+ virtual void paintEvent( QPaintEvent* );
+ virtual void showEvent( QShowEvent* );
+ virtual void mouseDoubleClickEvent( QMouseEvent * );
+ virtual Position mousePosition( const QPoint& ) const;
+ virtual void captionChange();
+ virtual void desktopChange();
+ virtual void shadeChange() {};
+ virtual void maximizeChange();
+ virtual void activeChange();
+ virtual void iconChange();
+ virtual void calcHiddenButtons();
+ virtual void borders(int&, int&, int&, int&) const;
+ virtual QSize minimumSize() const;
+ virtual int mapButton( const QChar &c );
+ virtual void doLayout();
+ virtual void createButtons();
+
+ signals:
+ void oadChange(bool);
+ void maxChange(bool);
+
+ protected slots:
+ void buttonPressed();
+ void buttonReleased();
+ void slotMaximize();
+ void menuButtonPressed();
+ void doShape(int x=0);
+ void mouseMoveOnButtonPressed(QMouseEvent*);
+
+ private:
+ bool isTool();
+
+ MachBuntButton* button[ BtnCount ];
+ QPoint buttonPressedPosition;
+ int lastButtonWidth;
+ int titleHeight;
+ QSpacerItem* titlebar;
+ bool hiddenItems;
+ QVBoxLayout* windowLayout;
+ QBoxLayout* topLayout;
+ bool smallButtons;
+ bool mouseOverButton;
+};
+
+
+class BuntFactory : public QObject, public KDecorationFactory
+{
+ Q_OBJECT
+
+ public:
+
+ BuntFactory() {};
+ virtual ~BuntFactory() {};
+ virtual KDecoration* createDecoration( KDecorationBridge* );
+ virtual bool reset( unsigned long changed );
+ virtual QValueList< BorderSize > borderSizes() const;
+};
+
+};
+
+#endif
+// vim: ts=4
diff --git a/src/MachBunt.kcsrc b/src/MachBunt.kcsrc
new file mode 100644
index 0000000..f23e984
--- /dev/null
+++ b/src/MachBunt.kcsrc
@@ -0,0 +1,22 @@
+[Color Scheme]
+Name=MachBunt
+activeBackground=59,80,138
+activeBlend=171,212,255
+activeForeground=255,255,255
+activeTitleBtnBg=220,220,220
+alternateBackground=238,246,255
+background=238,234,238
+buttonBackground=230,240,249
+buttonForeground=0,0,0
+contrast=7
+foreground=0,0,0
+inactiveBackground=110,110,110
+inactiveBlend=148,148,148
+inactiveForeground=255,255,255
+inactiveTitleBtnBg=73,73,73
+linkColor=83,83,120
+selectBackground=68,123,205
+selectForeground=255,255,255
+visitedLinkColor=0,64,0
+windowBackground=255,255,255
+windowForeground=0,0,0
diff --git a/src/MachBuntButton.cpp b/src/MachBuntButton.cpp
new file mode 100644
index 0000000..82f1b14
--- /dev/null
+++ b/src/MachBuntButton.cpp
@@ -0,0 +1,228 @@
+/*
+ * $Id: MachBuntButton.cpp,v 1.34 2004/03/23 15:34:45 llunak Exp $
+ *
+ */
+
+#include "MachBunt.h"
+#include <kpixmapeffect.h>
+#include <kimageeffect.h>
+#include <kiconeffect.h>
+#include <kdrawutil.h>
+#include <klocale.h>
+
+#include <qlayout.h>
+#include <qdrawutil.h>
+#include <qtooltip.h>
+#include <qdatetime.h>
+#include <qbitmap.h>
+#include <qimage.h>
+#include <qcursor.h>
+
+namespace SuSEMachBunt {
+
+// the titlebar buttons
+extern bool pixmaps_created;
+
+QPixmap *defaultPixmap;
+QColor *btnForeground;
+
+MachBuntButton::MachBuntButton(MachBunt * c, const char *name,
+ int _button, QPixmap bgI, QPixmap bgA,
+ bool isMini,
+ const QString &tip)
+ : QButton (c->widget(), name), position( ButtonMiddle ), client( c )
+{
+ setTipText(tip);
+ setMouseTracking( true );
+ setCursor( arrowCursor );
+
+ // Eliminate background flicker
+ setBackgroundMode( QWidget::NoBackground );
+
+ menuBtn = _button == BtnMenu;
+ miniBtn = isMini;
+ button = _button;
+ state = 0;
+ pressed = 0;
+ bg[0] = bgI;
+ bg[1] = bgA;
+
+ // Use larger button for the menu, or mini-buttons for toolwindows.
+ if ( isMini ) {
+ setFixedSize(12, 12);
+ resize(12, 12);
+ } else{
+ setFixedSize(PIX_HEIGHT, PIX_HEIGHT);
+ resize(PIX_HEIGHT, PIX_HEIGHT);
+ }
+}
+
+MachBuntButton::~MachBuntButton()
+{
+};
+
+QSize MachBuntButton::sizeHint() const
+{
+ if ( miniBtn )
+ return(QSize(12, 12));
+ else
+ return(QSize(PIX_HEIGHT, PIX_HEIGHT));
+}
+
+
+void MachBuntButton::reset(unsigned long changes)
+{
+ repaint(false);
+ if (!menuBtn){
+ emit ( shapeMe(0) );
+ state=0;
+ pressed = 0;
+ }
+}
+
+
+void MachBuntButton::setBitmap(const unsigned char *bitmap)
+{
+ repaint( false );
+}
+
+
+void MachBuntButton::setPixmap( const QPixmap &_p )
+{
+ QPixmap p;
+
+ if ( _p.isNull() )
+ p = *defaultPixmap;
+ else
+ p = _p;
+
+ if ( miniBtn ){
+ menuPixmap.convertFromImage( p.convertToImage().smoothScale(8,8) );
+ }else
+ menuPixmap = p;
+
+
+ for ( int m=0; m<2; m++ )
+ for ( int M=0; M<3; M++ )
+ for ( int a=0; a<2; a++ )
+ if (menuBtn)
+ menuButtonPixmap[button][m][M][a].resize(0,0);
+ else
+ buttonPixmap[button][m][M][a].resize(0,0);
+
+ repaint( false );
+}
+
+void MachBuntButton::enterEvent( QEvent *e )
+{
+ if (pressed){
+ state = 2;
+ emit ( shapeMe(this->x()) );
+ }else
+ state = 1;
+ repaint();
+ QButton::enterEvent(e);
+}
+
+void MachBuntButton::leaveEvent( QEvent *e )
+{
+ if (pressed)
+ emit ( shapeMe(0) );
+ state = 0;
+ repaint();
+ QButton::leaveEvent(e);
+}
+
+void MachBuntButton::setPosition( ButtonPos pos )
+{
+ position = pos;
+}
+
+bool MachBuntButton::resizePosition( QPoint pos )
+{
+ if( pos.y() < BUTTON_RESIZE_SIZE )
+ return true;
+ if( position == ButtonLeft && pos.x() < BUTTON_RESIZE_SIZE )
+ return true;
+ if( position == ButtonRight && pos.x() > width() - 1 - BUTTON_RESIZE_SIZE )
+ return true;
+ return false;
+}
+
+void MachBuntButton::mouseMoveEvent( QMouseEvent* e )
+{
+ if( resizePosition( e->pos()))
+ {
+ e->ignore();
+ unsetCursor(); // use cursor set according to mousePosition()
+ return;
+ }
+ if ( pressed == 1 )
+ emit( mousePressedMove(e) );
+ e->ignore(); // so that dragging works, even when moving more inside the button
+ setCursor( arrowCursor );
+}
+
+void MachBuntButton::mousePressEvent( QMouseEvent* e )
+{
+ if( resizePosition( e->pos()))
+ {
+ e->ignore();
+ return;
+ }
+ if (!menuBtn){
+ state = 2;
+ pressed = 1;
+ emit ( shapeMe(this->x()) );
+ }
+
+ last_button = e->button();
+ QMouseEvent me ( e->type(), e->pos(), e->globalPos(),
+ LeftButton, e->state() );
+ QButton::mousePressEvent( &me );
+}
+
+void MachBuntButton::mouseReleaseEvent( QMouseEvent* e )
+{
+ if (!menuBtn){
+ emit ( shapeMe(0) );
+ if (state==2)
+ state=1;
+ pressed = 0;
+ }
+ if( resizePosition( e->pos()))
+ {
+ e->ignore();
+ return;
+ }
+ last_button = e->button();
+ QMouseEvent me ( e->type(), e->pos(), e->globalPos(),
+ LeftButton, e->state() );
+ QButton::mouseReleaseEvent( &me );
+}
+
+void MachBuntButton::drawButton(QPainter *p)
+{
+ bool a = client->isActive();
+ QPixmap *P;
+ if (menuBtn)
+ P = &menuButtonPixmap[button][a][state][miniBtn];
+ else
+ P = &buttonPixmap[button][a][state][miniBtn];
+
+ if ( P->isNull() )
+ *P = create_buttonPixmap( miniBtn ? 12 : PIX_HEIGHT, miniBtn ? 12 : PIX_HEIGHT, menuPixmap, bg[a], a, state );
+
+ p->drawPixmap( 0, 0, *P );
+}
+
+void MachBuntButton::setTipText(const QString &tip) {
+ if(KDecoration::options()->showTooltips()) {
+ QToolTip::remove(this );
+ QToolTip::add(this, tip );
+ }
+}
+
+}
+
+// vim: ts=4
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..ebf6b6f
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,30 @@
+INCLUDES = -I$(top_srcdir) $(all_includes)
+
+SUBDIRS = .
+
+kde_module_LTLIBRARIES = kwin3_MachBunt.la
+
+kwin3_MachBunt_la_SOURCES = \
+ MachBunt.cpp \
+ MachBuntButton.cpp
+
+noinst_HEADERS = \
+ MachBunt.h \
+ pixmaps.h
+
+kwin3_MachBunt_la_LIBADD = $(LIB_KDEUI) -lkdecorations
+kwin3_MachBunt_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module
+METASOURCES = AUTO
+
+linkdir = $(kde_datadir)/kwin/
+link_DATA = MachBunt.desktop
+
+kdisplay_colorscheme_DATA = MachBunt.kcsrc
+kdisplay_colorschemedir = $(kde_datadir)/kdisplay/color-schemes
+
+
+EXTRA_DIST = $(link_DATA) $(kdisplay_colorscheme_DATA)
+
+confdir = $(kde_confdir)
+conf_DATA = kwinMachBuntrc
+
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..79768b9
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,953 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 483858 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = src
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(kde_moduledir)" "$(DESTDIR)$(confdir)" \
+ "$(DESTDIR)$(kdisplay_colorschemedir)" "$(DESTDIR)$(linkdir)"
+kde_moduleLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(kde_module_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+kwin3_MachBunt_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_kwin3_MachBunt_la_OBJECTS = MachBunt.lo MachBuntButton.lo
+#>- kwin3_MachBunt_la_OBJECTS = $(am_kwin3_MachBunt_la_OBJECTS)
+#>+ 4
+kwin3_MachBunt_la_final_OBJECTS = kwin3_MachBunt_la.all_cpp.lo
+kwin3_MachBunt_la_nofinal_OBJECTS = MachBunt.lo MachBuntButton.lo
+@KDE_USE_FINAL_FALSE@kwin3_MachBunt_la_OBJECTS = $(kwin3_MachBunt_la_nofinal_OBJECTS)
+@KDE_USE_FINAL_TRUE@kwin3_MachBunt_la_OBJECTS = $(kwin3_MachBunt_la_final_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
+am__depfiles_maybe = depfiles
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+#>- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+#>- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(KDE_CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(kwin3_MachBunt_la_SOURCES)
+DIST_SOURCES = $(kwin3_MachBunt_la_SOURCES)
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-exec-recursive install-info-recursive \
+#>- install-recursive installcheck-recursive installdirs-recursive \
+#>- pdf-recursive ps-recursive uninstall-info-recursive \
+#>- uninstall-recursive
+#>+ 6
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive nmcheck-recursive bcheck-recursive
+confDATA_INSTALL = $(INSTALL_DATA)
+kdisplay_colorschemeDATA_INSTALL = $(INSTALL_DATA)
+linkDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(conf_DATA) $(kdisplay_colorscheme_DATA) $(link_DATA)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_PERMISSIVE_FLAG = @ENABLE_PERMISSIVE_FLAG@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GMSGFMT = @GMSGFMT@
+HAVE_GCC_VISIBILITY = @HAVE_GCC_VISIBILITY@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_CHECK_PLUGIN = @KDE_CHECK_PLUGIN@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_FPIE = @KDE_USE_FPIE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+KDE_USE_PIE = @KDE_USE_PIE@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_AS_NEEDED = @LDFLAGS_AS_NEEDED@
+LDFLAGS_NEW_DTAGS = @LDFLAGS_NEW_DTAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDED = @LIB_KDED@
+LIB_KDEPIM = @LIB_KDEPIM@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KDNSSD = @LIB_KDNSSD@
+LIB_KFILE = @LIB_KFILE@
+LIB_KFM = @LIB_KFM@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIMPROXY = @LIB_KIMPROXY@
+LIB_KIO = @LIB_KIO@
+LIB_KJS = @LIB_KJS@
+LIB_KNEWSTUFF = @LIB_KNEWSTUFF@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_KUNITTEST = @LIB_KUNITTEST@
+LIB_KUTILS = @LIB_KUTILS@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LIB_XRENDER = @LIB_XRENDER@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_RPATH = @X_RPATH@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+include_ARTS_FALSE = @include_ARTS_FALSE@
+include_ARTS_TRUE = @include_ARTS_TRUE@
+include_x11_FALSE = @include_x11_FALSE@
+include_x11_TRUE = @include_x11_TRUE@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+kdeinitdir = @kdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+unsermake_enable_pch_FALSE = @unsermake_enable_pch_FALSE@
+unsermake_enable_pch_TRUE = @unsermake_enable_pch_TRUE@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+INCLUDES = -I$(top_srcdir) $(all_includes)
+SUBDIRS = .
+kde_module_LTLIBRARIES = kwin3_MachBunt.la
+kwin3_MachBunt_la_SOURCES = \
+ MachBunt.cpp \
+ MachBuntButton.cpp
+
+noinst_HEADERS = \
+ MachBunt.h \
+ pixmaps.h
+
+kwin3_MachBunt_la_LIBADD = $(LIB_KDEUI) -lkdecorations
+kwin3_MachBunt_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module
+#>- METASOURCES = AUTO
+linkdir = $(kde_datadir)/kwin/
+link_DATA = MachBunt.desktop
+kdisplay_colorscheme_DATA = MachBunt.kcsrc
+kdisplay_colorschemedir = $(kde_datadir)/kdisplay/color-schemes
+EXTRA_DIST = $(link_DATA) $(kdisplay_colorscheme_DATA)
+confdir = $(kde_confdir)
+conf_DATA = kwinMachBuntrc
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu src/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+ cd $(top_srcdir) && perl admin/am_edit src/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-kde_moduleLTLIBRARIES: $(kde_module_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(kde_moduledir)" || $(mkdir_p) "$(DESTDIR)$(kde_moduledir)"
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(kde_moduledir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(kde_moduledir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-kde_moduleLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(kde_moduledir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(kde_moduledir)/$$p"; \
+ done
+
+clean-kde_moduleLTLIBRARIES:
+ -test -z "$(kde_module_LTLIBRARIES)" || rm -f $(kde_module_LTLIBRARIES)
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+#>- kwin3_MachBunt.la: $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_DEPENDENCIES)
+#>+ 2
+@KDE_USE_CLOSURE_TRUE@kwin3_MachBunt.la: kwin3_MachBunt.la.closure $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_DEPENDENCIES)
+@KDE_USE_CLOSURE_FALSE@kwin3_MachBunt.la: $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(kde_moduledir) $(kwin3_MachBunt_la_LDFLAGS) $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MachBunt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MachBuntButton.Plo@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-confDATA: $(conf_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(confdir)" || $(mkdir_p) "$(DESTDIR)$(confdir)"
+ @list='$(conf_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(confDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(confdir)/$$f'"; \
+ $(confDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(confdir)/$$f"; \
+ done
+
+uninstall-confDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(conf_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(confdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(confdir)/$$f"; \
+ done
+install-kdisplay_colorschemeDATA: $(kdisplay_colorscheme_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(kdisplay_colorschemedir)" || $(mkdir_p) "$(DESTDIR)$(kdisplay_colorschemedir)"
+ @list='$(kdisplay_colorscheme_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(kdisplay_colorschemeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(kdisplay_colorschemedir)/$$f'"; \
+ $(kdisplay_colorschemeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(kdisplay_colorschemedir)/$$f"; \
+ done
+
+uninstall-kdisplay_colorschemeDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(kdisplay_colorscheme_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(kdisplay_colorschemedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(kdisplay_colorschemedir)/$$f"; \
+ done
+install-linkDATA: $(link_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(linkdir)" || $(mkdir_p) "$(DESTDIR)$(linkdir)"
+ @list='$(link_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(linkDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(linkdir)/$$f'"; \
+ $(linkDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(linkdir)/$$f"; \
+ done
+
+uninstall-linkDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(link_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(linkdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(linkdir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(kde_moduledir)" "$(DESTDIR)$(confdir)" "$(DESTDIR)$(kdisplay_colorschemedir)" "$(DESTDIR)$(linkdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+#>- mostlyclean-am
+#>+ 2
+clean-am: clean-metasources clean-closures clean-bcheck clean-final clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am: install-confDATA install-kde_moduleLTLIBRARIES \
+#>- install-kdisplay_colorschemeDATA install-linkDATA
+#>+ 2
+install-data-am: install-confDATA \
+ install-kdisplay_colorschemeDATA install-linkDATA
+
+#>- install-exec-am:
+#>+ 1
+install-exec-am: install-kde_moduleLTLIBRARIES
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-confDATA uninstall-info-am \
+ uninstall-kde_moduleLTLIBRARIES \
+ uninstall-kdisplay_colorschemeDATA uninstall-linkDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+ clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-confDATA \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-kde_moduleLTLIBRARIES \
+ install-kdisplay_colorschemeDATA install-linkDATA install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-confDATA uninstall-info-am \
+ uninstall-kde_moduleLTLIBRARIES \
+ uninstall-kdisplay_colorschemeDATA uninstall-linkDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 8
+kwin3_MachBunt.la.closure: $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_DEPENDENCIES)
+ @echo "int main() {return 0;}" > kwin3_MachBunt_la_closure.cpp
+ @$(LTCXXCOMPILE) -c kwin3_MachBunt_la_closure.cpp
+ $(CXXLINK) kwin3_MachBunt_la_closure.lo $(kwin3_MachBunt_la_LDFLAGS) $(kwin3_MachBunt_la_OBJECTS) $(kwin3_MachBunt_la_LIBADD) $(LIBS)
+ @rm -f kwin3_MachBunt_la_closure.* kwin3_MachBunt.la.closure
+ @echo "timestamp" > kwin3_MachBunt.la.closure
+
+
+#>+ 3
+MachBunt.moc: $(srcdir)/MachBunt.h
+ $(MOC) $(srcdir)/MachBunt.h -o MachBunt.moc
+
+#>+ 2
+mocs: MachBunt.moc
+
+#>+ 3
+clean-metasources:
+ -rm -f MachBunt.moc
+
+#>+ 2
+KDE_DIST=middle_button_left.xpm Makefile.in MachBunt.kcsrc kwinMachBuntrc buttons.h middle.xcf middle_button.xpm middle_button_right.xpm kroete.xcf middle.xpm kroete.xpm middle_button_side.xcf right.xpm MachBunt.desktop left.xpm bar.xpm Makefile.am side.xcf
+
+#>+ 3
+clean-closures:
+ -rm -f kwin3_MachBunt.la.closure
+
+#>+ 2
+docs-am:
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+ cd $(top_srcdir) && perl admin/am_edit src/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXXCOMPILE) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 11
+kwin3_MachBunt_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/MachBunt.cpp $(srcdir)/MachBuntButton.cpp MachBunt.moc
+ @echo 'creating kwin3_MachBunt_la.all_cpp.cpp ...'; \
+ rm -f kwin3_MachBunt_la.all_cpp.files kwin3_MachBunt_la.all_cpp.final; \
+ echo "#define KDE_USE_FINAL 1" >> kwin3_MachBunt_la.all_cpp.final; \
+ for file in MachBunt.cpp MachBuntButton.cpp ; do \
+ echo "#include \"$$file\"" >> kwin3_MachBunt_la.all_cpp.files; \
+ test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> kwin3_MachBunt_la.all_cpp.final; \
+ done; \
+ cat kwin3_MachBunt_la.all_cpp.final kwin3_MachBunt_la.all_cpp.files > kwin3_MachBunt_la.all_cpp.cpp; \
+ rm -f kwin3_MachBunt_la.all_cpp.final kwin3_MachBunt_la.all_cpp.files
+
+#>+ 3
+clean-final:
+ -rm -f kwin3_MachBunt_la.all_cpp.cpp
+
+#>+ 3
+final:
+ $(MAKE) kwin3_MachBunt_la_OBJECTS="$(kwin3_MachBunt_la_final_OBJECTS)" all-am
+
+#>+ 3
+final-install:
+ $(MAKE) kwin3_MachBunt_la_OBJECTS="$(kwin3_MachBunt_la_final_OBJECTS)" install-am
+
+#>+ 3
+no-final:
+ $(MAKE) kwin3_MachBunt_la_OBJECTS="$(kwin3_MachBunt_la_nofinal_OBJECTS)" all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) kwin3_MachBunt_la_OBJECTS="$(kwin3_MachBunt_la_nofinal_OBJECTS)" install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 5
+nmcheck:
+nmcheck-am: nmcheck
+MachBunt.o: MachBunt.moc
+MachBunt.lo: MachBunt.moc
diff --git a/src/bar.xpm b/src/bar.xpm
new file mode 100644
index 0000000..f20e390
--- /dev/null
+++ b/src/bar.xpm
@@ -0,0 +1,137 @@
+/* XPM */
+static const char * bar_xpm[] = {
+"8 24 110 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #001609",
+"# c #003417",
+"$ c #007F39",
+"% c #00B04F",
+"& c #00120E",
+"* c #00241C",
+"= c #006C54",
+"- c #006F57",
+"; c #000F14",
+"> c #001014",
+", c #00313E",
+"' c #004051",
+") c #000D1A",
+"! c #000E1B",
+"~ c #001F3E",
+"{ c #00203F",
+"] c #00081A",
+"^ c #00091D",
+"/ c #000A1F",
+"( c #000B21",
+"_ c #000C24",
+": c #000D27",
+"< c #00061D",
+"[ c #000721",
+"} c #000726",
+"| c #00082A",
+"1 c #00092E",
+"2 c #000A32",
+"3 c #000421",
+"4 c #000427",
+"5 c #00052C",
+"6 c #000632",
+"7 c #000638",
+"8 c #00073E",
+"9 c #000223",
+"0 c #00022B",
+"a c #000332",
+"b c #00033A",
+"c c #000442",
+"d c #00054A",
+"e c #000126",
+"f c #00012F",
+"g c #000139",
+"h c #000143",
+"i c #00024D",
+"j c #000259",
+"k c #000029",
+"l c #000033",
+"m c #00003E",
+"n c #00004A",
+"o c #000057",
+"p c #000067",
+"q c #00002B",
+"r c #000037",
+"s c #000043",
+"t c #000051",
+"u c #000062",
+"v c #000076",
+"w c #00002C",
+"x c #000039",
+"y c #000048",
+"z c #000058",
+"A c #00006C",
+"B c #000085",
+"C c #00003B",
+"D c #000049",
+"E c #00006A",
+"F c #000081",
+"G c #00009A",
+"H c #00007B",
+"I c #000092",
+"J c #0000AD",
+"K c #000059",
+"L c #000089",
+"M c #0000A1",
+"N c #0000BC",
+"O c #000054",
+"P c #000073",
+"Q c #000087",
+"R c #0000BD",
+"S c #000041",
+"T c #000052",
+"U c #000064",
+"V c #00007C",
+"W c #000096",
+"X c #0000B7",
+"Y c #00002E",
+"Z c #00003D",
+"` c #00004F",
+" . c #00007F",
+".. c #00009D",
+"+. c #00002D",
+"@. c #00005C",
+"#. c #000072",
+"$. c #00008B",
+"%. c #00002A",
+"&. c #000035",
+"*. c #000040",
+"=. c #00004D",
+"-. c #00005B",
+";. c #000026",
+">. c #000034",
+",. c #00004B",
+"'. c #000046",
+"). c #000053",
+"!. c #000060",
+"~. c #00006D",
+" . . . . . ",
+" + + + + + + + ",
+"@ @ @ # $ % % % ",
+"& & * = - - - - ",
+"; > , ' ' ' ' ' ",
+") ! ~ { { { { { ",
+"] ^ / ( _ : : : ",
+"< [ } | 1 2 2 2 ",
+"3 4 5 6 7 8 8 8 ",
+"9 0 a b c d d d ",
+"e f g h i j j j ",
+"k l m n o p p p ",
+"q r s t u v v v ",
+"w x y z A B B B ",
+"C D o E F G G G ",
+"n z p H I J J J ",
+"K p v L M N N N ",
+"O u P Q M R R R ",
+"S T U V W X X X ",
+"Y Z ` U .......",
+"+.C n @.#.$.$.$.",
+"%.&.*.=.-.A A A ",
+";.+.>.C s ,.,.,.",
+"w x '.).!.~.~.~."};
diff --git a/src/buttons.h b/src/buttons.h
new file mode 100644
index 0000000..79fd729
--- /dev/null
+++ b/src/buttons.h
@@ -0,0 +1,130 @@
+static const char *kdelogo[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 8 1",
+" c None",
+". c #000000",
+"+ c #A0A0A4",
+"@ c #FFFFFF",
+"# c #585858",
+"$ c #C0C0C0",
+"% c #808080",
+"& c #DCDCDC",
+" ",
+" .. .. ",
+" .+@. .@#. ",
+" .@@@. .@@@# ",
+" .@@@..$@@$. ",
+" .@@@.@@@$. ",
+" .@@@%@@$. ",
+" .@@@&@@. ",
+" .@@@@@@. ",
+" .@@@$@@&. ",
+" .@@@.@@@. ",
+" .@@@.+@@@. ",
+" .@@@..$@@&. ",
+" .@@%. .@@@. ",
+" .... ... ",
+" "};
+
+
+/* XPM */
+static const char *question_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 14 2 1",
+" c black",
+". c None",
+/* pixels */
+"................",
+"..... .....",
+".... ....",
+".... .... ....",
+".... .... ....",
+"......... .....",
+"........ .....",
+"........ ......",
+"....... .......",
+"....... .......",
+"....... .......",
+"................",
+"....... .......",
+"....... ......."
+};
+/* XPM */
+static const char * sticky_xpm[] = {
+"16 14 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" .... ",
+" .. .. ",
+" .. ",
+" .. ",
+" .. ",
+" ",
+" .. ",
+" .. ",
+" ",
+" ",
+" "};
+
+/* XPM */
+static const char * iconify_xpm[] = {
+"16 14 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .......... ",
+" .......... "};
+
+/* XPM */
+static const char * maximze_xpm[] = {
+"16 14 2 1",
+" c None",
+". c #000000",
+" ",
+" ............. ",
+" ............. ",
+" ............. ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" ............. "};
+/* XPM */
+static const char * close_xpm[] = {
+"16 14 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ..... ",
+" ... ",
+" ..... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" "};
+
diff --git a/src/kroete.xcf b/src/kroete.xcf
new file mode 100644
index 0000000..306588e
--- /dev/null
+++ b/src/kroete.xcf
Binary files differ
diff --git a/src/kroete.xpm b/src/kroete.xpm
new file mode 100644
index 0000000..f5673f9
--- /dev/null
+++ b/src/kroete.xpm
@@ -0,0 +1,248 @@
+/* XPM */
+static const char * kroete_xpm[] = {
+"25 24 221 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #00B04F",
+"# c #308B45",
+"$ c #CE1C2A",
+"% c #E70F26",
+"& c #E11227",
+"* c #BF282D",
+"= c #845137",
+"- c #2F8C45",
+"; c #006F57",
+"> c #2A5B4D",
+", c #3B5349",
+"' c #3A5349",
+") c #5E4442",
+"! c #A42534",
+"~ c #F40324",
+"{ c #B71D30",
+"] c #295B4D",
+"^ c #004051",
+"/ c #293448",
+"( c #72223B",
+"_ c #811E38",
+": c #4B2B42",
+"< c #20374A",
+"[ c #AD1330",
+"} c #F30224",
+"| c #5A283F",
+"1 c #00203F",
+"2 c #621333",
+"3 c #F60023",
+"4 c #A40A2C",
+"5 c #810F30",
+"6 c #CE0527",
+"7 c #AE092B",
+"8 c #071E3E",
+"9 c #810F2F",
+"0 c #FA0023",
+"a c #5C1333",
+"b c #000D27",
+"c c #0D0C26",
+"d c #F00023",
+"e c #580825",
+"f c #510825",
+"g c #8B0524",
+"h c #3B0925",
+"i c #B80324",
+"j c #740624",
+"k c #000C26",
+"l c #8C0524",
+"m c #F50023",
+"n c #2C0A25",
+"o c #000A32",
+"p c #42072D",
+"q c #CF0125",
+"r c #47072D",
+"s c #B90226",
+"t c #DC0124",
+"u c #39072D",
+"v c #040931",
+"w c #C40226",
+"x c #BD0226",
+"y c #00073E",
+"z c #4E0435",
+"A c #AF022A",
+"B c #7E032F",
+"C c #A2022C",
+"D c #0A063C",
+"E c #EA0024",
+"F c #1A063A",
+"G c #E40023",
+"H c #2E0538",
+"I c #FB0023",
+"J c #330537",
+"K c #00054A",
+"L c #2C0442",
+"M c #DD0027",
+"N c #2B0442",
+"O c #E10026",
+"P c #D00029",
+"Q c #B0012E",
+"R c #46033D",
+"S c #BE012C",
+"T c #A50130",
+"U c #860234",
+"V c #000259",
+"W c #000158",
+"X c #C3002E",
+"Y c #7F003C",
+"Z c #100154",
+"` c #38014C",
+" . c #1D0151",
+".. c #CD002C",
+"+. c #4B0147",
+"@. c #36014C",
+"#. c #BC0030",
+"$. c #000067",
+"%. c #6C0048",
+"&. c #59004D",
+"*. c #090063",
+"=. c #1D005E",
+"-. c #CD002F",
+";. c #CE002E",
+">. c #AC0037",
+",. c #E10029",
+"'. c #6E0047",
+"). c #040065",
+"!. c #BB0032",
+"~. c #000076",
+"{. c #000077",
+"]. c #C10035",
+"^. c #FE0023",
+"/. c #E90029",
+"(. c #82004A",
+"_. c #1B006C",
+":. c #020075",
+"<. c #390062",
+"[. c #4E005C",
+"}. c #17006E",
+"|. c #110070",
+"1. c #6C0051",
+"2. c #D8002D",
+"3. c #D7002F",
+"4. c #000085",
+"5. c #010084",
+"6. c #2E0071",
+"7. c #94004A",
+"8. c #F10027",
+"9. c #F90024",
+"0. c #AE0040",
+"a. c #580060",
+"b. c #1B0079",
+"c. c #070081",
+"d. c #11007C",
+"e. c #560060",
+"f. c #63005B",
+"g. c #AD0040",
+"h. c #F40026",
+"i. c #EE0028",
+"j. c #920049",
+"k. c #B6003B",
+"l. c #00009A",
+"m. c #130090",
+"n. c #720062",
+"o. c #D10035",
+"p. c #FD0023",
+"q. c #F70026",
+"r. c #F60025",
+"s. c #BB0040",
+"t. c #0F0091",
+"u. c #530070",
+"v. c #860059",
+"w. c #0000AD",
+"x. c #2B0091",
+"y. c #0000AC",
+"z. c #290094",
+"A. c #600075",
+"B. c #70006E",
+"C. c #620074",
+"D. c #3D0088",
+"E. c #0F00A3",
+"F. c #0700A7",
+"G. c #D20038",
+"H. c #34008E",
+"I. c #0000BC",
+"J. c #500087",
+"K. c #1C00A9",
+"L. c #8E0062",
+"M. c #BC0048",
+"N. c #0000BD",
+"O. c #0400B9",
+"P. c #9B005A",
+"Q. c #1900AB",
+"R. c #720075",
+"S. c #F40027",
+"T. c #2C00A0",
+"U. c #0000B7",
+"V. c #1D00A4",
+"W. c #C30040",
+"X. c #3D0090",
+"Y. c #0500B3",
+"Z. c #890063",
+"`. c #FB0024",
+" + c #5B007E",
+".+ c #00009D",
+"++ c #23008A",
+"@+ c #CF0037",
+"#+ c #9D004F",
+"$+ c #250089",
+"%+ c #360081",
+"&+ c #C7003B",
+"*+ c #F50027",
+"=+ c #59006F",
+"-+ c #00008B",
+";+ c #00008C",
+">+ c #0B0086",
+",+ c #850053",
+"'+ c #BB003C",
+")+ c #6F005B",
+"!+ c #3D0070",
+"~+ c #250079",
+"{+ c #300076",
+"]+ c #630061",
+"^+ c #BA003D",
+"/+ c #FC0023",
+"(+ c #B6003F",
+"_+ c #2A0079",
+":+ c #00006C",
+"<+ c #00006D",
+"[+ c #00006E",
+"}+ c #140066",
+"|+ c #6B004C",
+"1+ c #AE0039",
+"2+ c #D6002D",
+"3+ c #EA0028",
+"4+ c #DF002A",
+"5+ c #BE0034",
+"6+ c #830046",
+"7+ c #30005E",
+"8+ c #00004B",
+". . . . . . . . . . . . . . . . . . . . . . . . . ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + ",
+"@ @ @ @ @ @ @ @ @ # $ % & * = - @ @ @ @ @ @ @ @ @ ",
+"; ; ; ; ; ; ; ; ; ; > , ' ) ! ~ { ] ; ; ; ; ; ; ; ",
+"^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( _ : < [ } | ^ ^ ^ ^ ^ ^ ",
+"1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 0 a 1 1 1 1 1 ",
+"b b b b b b b b b c d e f g h i j k l m n b b b b ",
+"o o o o o o o o o p q r d s t u q o v w x o o o o ",
+"y y y y y y y y y z A B C D E F G y y H I J y y y ",
+"K K K K K K K K K L M N O P Q R S K K K T U K K K ",
+"V V V V V V V V V W X Y Z ` ...+.V V V @.#.V V V ",
+"$.$.$.$.$.%.&.*.$.$.=.-.;.>.,.'.$.$.$.$.).!.$.$.$.",
+"~.~.~.~.{.].^./.(._.{.:.<.[.}.{.{.{.|.1.2.3.{.{.{.",
+"4.4.4.4.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.4.4.4.",
+"l.l.l.l.l.l.l.l.m.n.o.p.p.q.0 ^.r.s.l.t.u.v.l.l.l.",
+"w.w.x.w.w.w.w.w.w.w.y.z.A.B.C.D.E.w.w.F.G.H.w.w.w.",
+"I.I.J.K.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.L.M.I.I.I.I.",
+"N.N.O.P.Q.N.N.N.N.N.N.N.N.N.N.N.N.N.R.S.T.N.N.N.N.",
+"U.U.U.V.W.X.U.U.U.U.U.U.U.U.U.U.Y.Z.`. +U.U.U.U.U.",
+".+.+.+.+++@+#+$+.+.+.+.+.+.+.+%+&+*+=+.+.+.+.+.+.+",
+"-+-+-+;+;+>+,+8.'+)+!+~+{+]+^+/+(+_+;+;+;+;+;+;+;+",
+":+:+:+<+[+[+[+}+|+1+2+3+4+5+6+7+[+[+[+[+[+[+[+[+[+",
+"8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8+",
+"<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+<+"};
diff --git a/src/kwinMachBuntrc b/src/kwinMachBuntrc
new file mode 100644
index 0000000..80b188e
--- /dev/null
+++ b/src/kwinMachBuntrc
@@ -0,0 +1,5 @@
+[General]
+TitleBarResize=true
+TitleBarLogo=true
+TitleBarPlain=false
+
diff --git a/src/left.xpm b/src/left.xpm
new file mode 100644
index 0000000..9003099
--- /dev/null
+++ b/src/left.xpm
@@ -0,0 +1,137 @@
+/* XPM */
+static const char * left_xpm[] = {
+"8 24 110 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #001609",
+"# c #003417",
+"$ c #007F39",
+"% c #00B04F",
+"& c #00120E",
+"* c #00241C",
+"= c #006C54",
+"- c #006F57",
+"; c #000F14",
+"> c #001014",
+", c #00313E",
+"' c #004051",
+") c #000D1A",
+"! c #000E1B",
+"~ c #001F3E",
+"{ c #00203F",
+"] c #00081A",
+"^ c #00091D",
+"/ c #000A1F",
+"( c #000B21",
+"_ c #000C24",
+": c #000D27",
+"< c #00061D",
+"[ c #000721",
+"} c #000726",
+"| c #00082A",
+"1 c #00092E",
+"2 c #000A32",
+"3 c #000421",
+"4 c #000427",
+"5 c #00052C",
+"6 c #000632",
+"7 c #000638",
+"8 c #00073E",
+"9 c #000223",
+"0 c #00022B",
+"a c #000332",
+"b c #00033A",
+"c c #000442",
+"d c #00054A",
+"e c #000126",
+"f c #00012F",
+"g c #000139",
+"h c #000143",
+"i c #00024D",
+"j c #000259",
+"k c #000029",
+"l c #000033",
+"m c #00003E",
+"n c #00004A",
+"o c #000057",
+"p c #000067",
+"q c #00002B",
+"r c #000037",
+"s c #000043",
+"t c #000051",
+"u c #000062",
+"v c #000076",
+"w c #00002C",
+"x c #000039",
+"y c #000048",
+"z c #000058",
+"A c #00006C",
+"B c #000085",
+"C c #00003B",
+"D c #000049",
+"E c #00006A",
+"F c #000081",
+"G c #00009A",
+"H c #00007B",
+"I c #000092",
+"J c #0000AD",
+"K c #000059",
+"L c #000089",
+"M c #0000A1",
+"N c #0000BC",
+"O c #000054",
+"P c #000073",
+"Q c #000087",
+"R c #0000BD",
+"S c #000041",
+"T c #000052",
+"U c #000064",
+"V c #00007C",
+"W c #000096",
+"X c #0000B7",
+"Y c #00002E",
+"Z c #00003D",
+"` c #00004F",
+" . c #00007F",
+".. c #00009D",
+"+. c #00002D",
+"@. c #00005C",
+"#. c #000072",
+"$. c #00008B",
+"%. c #00002A",
+"&. c #000035",
+"*. c #000040",
+"=. c #00004D",
+"-. c #00005B",
+";. c #000026",
+">. c #000034",
+",. c #00004B",
+"'. c #000046",
+"). c #000053",
+"!. c #000060",
+"~. c #00006D",
+" . . . . . ",
+" + + + + + + + ",
+"@ @ @ # $ % % % ",
+"& & * = - - - - ",
+"; > , ' ' ' ' ' ",
+") ! ~ { { { { { ",
+"] ^ / ( _ : : : ",
+"< [ } | 1 2 2 2 ",
+"3 4 5 6 7 8 8 8 ",
+"9 0 a b c d d d ",
+"e f g h i j j j ",
+"k l m n o p p p ",
+"q r s t u v v v ",
+"w x y z A B B B ",
+"C D o E F G G G ",
+"n z p H I J J J ",
+"K p v L M N N N ",
+"O u P Q M R R R ",
+"S T U V W X X X ",
+"Y Z ` U .......",
+"+.C n @.#.$.$.$.",
+"%.&.*.=.-.A A A ",
+";.+.>.C s ,.,.,.",
+"w x '.).!.~.~.~."};
diff --git a/src/middle.xcf b/src/middle.xcf
new file mode 100644
index 0000000..2138e3e
--- /dev/null
+++ b/src/middle.xcf
Binary files differ
diff --git a/src/middle.xpm b/src/middle.xpm
new file mode 100644
index 0000000..f8397c6
--- /dev/null
+++ b/src/middle.xpm
@@ -0,0 +1,55 @@
+/* XPM */
+static const char * middle_xpm[] = {
+"16 24 28 1",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #00B04F",
+"# c #006F57",
+"$ c #004051",
+"% c #00203F",
+"& c #000D27",
+"* c #000A32",
+"= c #00073E",
+"- c #00054A",
+"; c #000259",
+"> c #000067",
+", c #000076",
+"' c #000077",
+") c #000085",
+"! c #00009A",
+"~ c #0000AD",
+"{ c #0000BC",
+"] c #0000BD",
+"^ c #0000B7",
+"/ c #00009D",
+"( c #00008B",
+"_ c #00008C",
+": c #00006C",
+"< c #00006E",
+"[ c #00004B",
+"} c #00006D",
+"................",
+"++++++++++++++++",
+"@@@@@@@@@@@@@@@@",
+"################",
+"$$$$$$$$$$$$$$$$",
+"%%%%%%%%%%%%%%%%",
+"&&&&&&&&&&&&&&&&",
+"****************",
+"================",
+"----------------",
+";;;;;;;;;;;;;;;;",
+">>>>>>>>>>>>>>>>",
+",,,,''''''''''''",
+"))))))))))))))))",
+"!!!!!!!!!!!!!!!!",
+"~~~~~~~~~~~~~~~~",
+"{{{{{{{{{{{{{{{{",
+"]]]]]]]]]]]]]]]]",
+"^^^^^^^^^^^^^^^^",
+"////////////////",
+"((((____________",
+"::::<<<<<<<<<<<<",
+"[[[[[[[[[[[[[[[[",
+"}}}}}}}}}}}}}}}}"};
diff --git a/src/middle_button.xpm b/src/middle_button.xpm
new file mode 100644
index 0000000..0819cf7
--- /dev/null
+++ b/src/middle_button.xpm
@@ -0,0 +1,76 @@
+/* XPM */
+static const char * middle_button_xpm[] = {
+"24 24 49 1",
+" c None",
+". c #000000",
+"+ c #002000",
+"@ c #001A05",
+"# c #001609",
+"$ c #00B04F",
+"% c #00893D",
+"& c #00BF40",
+"* c #006F57",
+"= c #005140",
+"- c #00110E",
+"; c #009531",
+"> c #004051",
+", c #000E11",
+"' c #00203F",
+") c #000A15",
+"! c #000035",
+"~ c #000D27",
+"{ c #000718",
+"] c #00003D",
+"^ c #000A32",
+"/ c #00051A",
+"( c #000046",
+"_ c #00073E",
+": c #00031C",
+"< c #000050",
+"[ c #00054A",
+"} c #00021D",
+"| c #00005C",
+"1 c #000259",
+"2 c #00001F",
+"3 c #000068",
+"4 c #000067",
+"5 c #000076",
+"6 c #000077",
+"7 c #000020",
+"8 c #000085",
+"9 c #00009A",
+"0 c #0000AD",
+"a c #0000BC",
+"b c #0000BD",
+"c c #0000B7",
+"d c #00009D",
+"e c #00008B",
+"f c #00008C",
+"g c #00006C",
+"h c #00006D",
+"i c #00006E",
+"j c #00004B",
+".++++++++++++++++++++...",
+"@@@@@@@@@@@@@@@@@@@@@@@.",
+"#$$$$$$$$$$$$$$$$$$$$%##",
+"&*********************=-",
+";>>>>>>>>>>>>>>>>>>>>>>,",
+";'''''''''''''''''''''')",
+";!~~~~~~~~~~~~~~~~~~~~~{",
+";]^^^^^^^^^^^^^^^^^^^^^/",
+";(_____________________:",
+";<[[[[[[[[[[[[[[[[[[[[[}",
+";|1111111111111111111112",
+";34444444444444444444442",
+";55555566666666666666667",
+";88888888888888888888887",
+";99999999999999999999997",
+";00000000000000000000007",
+";aaaaaaaaaaaaaaaaaaaaaa7",
+";bbbbbbbbbbbbbbbbbbbbbb7",
+";cccccccccccccccccccccc7",
+";dddddddddddddddddddddd7",
+";eeeeefffffffffffffffff7",
+";ggggghiiiiiiiiiiiiiiii7",
+";jjjjjjjjjjjjjjjjjjjjjj7",
+";hhhhhhhhhhhhhhhhhhhhhh7"};
diff --git a/src/middle_button_left.xpm b/src/middle_button_left.xpm
new file mode 100644
index 0000000..81efdc3
--- /dev/null
+++ b/src/middle_button_left.xpm
@@ -0,0 +1,144 @@
+/* XPM */
+static const char * middle_button_left_xpm[] = {
+"24 24 117 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #00B04F",
+"# c #001609",
+"$ c #003417",
+"% c #007F39",
+"& c #006F57",
+"* c #00120E",
+"= c #00241C",
+"- c #006C54",
+"; c #004051",
+"> c #000F12",
+", c #000F13",
+"' c #000F14",
+") c #001014",
+"! c #00313E",
+"~ c #00203F",
+"{ c #000C17",
+"] c #000C19",
+"^ c #000D1A",
+"/ c #000E1B",
+"( c #001F3E",
+"_ c #00081A",
+": c #00091D",
+"< c #000A1F",
+"[ c #000B21",
+"} c #000C24",
+"| c #000D27",
+"1 c #00061D",
+"2 c #000721",
+"3 c #000726",
+"4 c #00082A",
+"5 c #00092E",
+"6 c #000A32",
+"7 c #000421",
+"8 c #000427",
+"9 c #00052C",
+"0 c #000632",
+"a c #000638",
+"b c #00073E",
+"c c #000223",
+"d c #00022B",
+"e c #000332",
+"f c #00033A",
+"g c #000442",
+"h c #00054A",
+"i c #000126",
+"j c #00012F",
+"k c #000139",
+"l c #000143",
+"m c #00024D",
+"n c #000259",
+"o c #000029",
+"p c #000033",
+"q c #00003E",
+"r c #00004A",
+"s c #000057",
+"t c #000067",
+"u c #00002B",
+"v c #000037",
+"w c #000043",
+"x c #000051",
+"y c #000062",
+"z c #000076",
+"A c #000077",
+"B c #00002C",
+"C c #000039",
+"D c #000048",
+"E c #000058",
+"F c #00006C",
+"G c #000085",
+"H c #00003B",
+"I c #000049",
+"J c #00006A",
+"K c #000081",
+"L c #00009A",
+"M c #00007B",
+"N c #000092",
+"O c #0000AD",
+"P c #000059",
+"Q c #000089",
+"R c #0000A1",
+"S c #0000BC",
+"T c #000054",
+"U c #000073",
+"V c #000087",
+"W c #0000BD",
+"X c #000041",
+"Y c #000052",
+"Z c #000064",
+"` c #00007C",
+" . c #000096",
+".. c #0000B7",
+"+. c #00002E",
+"@. c #00003D",
+"#. c #00004F",
+"$. c #00007F",
+"%. c #00009D",
+"&. c #00002D",
+"*. c #00005C",
+"=. c #000072",
+"-. c #00008B",
+";. c #00008C",
+">. c #00002A",
+",. c #000035",
+"'. c #000040",
+"). c #00004D",
+"!. c #00005B",
+"~. c #00006E",
+"{. c #000026",
+"]. c #000034",
+"^. c #00004B",
+"/. c #000046",
+"(. c #000053",
+"_. c #000060",
+":. c #00006D",
+". . . . . . . . . . . . . . . . . . . . . . . . ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + ",
+"@ @ @ # # # $ % @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ",
+"& & * * * = - & & & & & & & & & & & & & & & & & ",
+"; > , ' ) ! ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ",
+"~ { ] ^ / ( ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ",
+"_ : < [ } | | | | | | | | | | | | | | | | | | | ",
+"1 2 3 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ",
+"7 8 9 0 a b b b b b b b b b b b b b b b b b b b ",
+"c d e f g h h h h h h h h h h h h h h h h h h h ",
+"i j k l m n n n n n n n n n n n n n n n n n n n ",
+"o p q r s t t t t t t t t t t t t t t t t t t t ",
+"u v w x y z z z A A A A A A A A A A A A A A A A ",
+"B C D E F G G G G G G G G G G G G G G G G G G G ",
+"H I s J K L L L L L L L L L L L L L L L L L L L ",
+"r E t M N O O O O O O O O O O O O O O O O O O O ",
+"P t z Q R S S S S S S S S S S S S S S S S S S S ",
+"T y U V R W W W W W W W W W W W W W W W W W W W ",
+"X Y Z ` .......................................",
+"+.@.#.Z $.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.",
+"&.H r *.=.-.-.-.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+">.,.'.).!.F F F ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.",
+"{.&.].H w ^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.",
+"B C /.(._.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:."};
diff --git a/src/middle_button_right.xpm b/src/middle_button_right.xpm
new file mode 100644
index 0000000..8a65452
--- /dev/null
+++ b/src/middle_button_right.xpm
@@ -0,0 +1,144 @@
+/* XPM */
+static const char * middle_button_right_xpm[] = {
+"24 24 117 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #00B04F",
+"# c #007F39",
+"$ c #003417",
+"% c #001609",
+"& c #006F57",
+"* c #006C54",
+"= c #00241C",
+"- c #00120E",
+"; c #004051",
+"> c #00313E",
+", c #001014",
+"' c #000F14",
+") c #000F13",
+"! c #000F12",
+"~ c #00203F",
+"{ c #001F3E",
+"] c #000E1B",
+"^ c #000D1A",
+"/ c #000C19",
+"( c #000C17",
+"_ c #000D27",
+": c #000C24",
+"< c #000B21",
+"[ c #000A1F",
+"} c #00091D",
+"| c #00081A",
+"1 c #000A32",
+"2 c #00092E",
+"3 c #00082A",
+"4 c #000726",
+"5 c #000721",
+"6 c #00061D",
+"7 c #00073E",
+"8 c #000638",
+"9 c #000632",
+"0 c #00052C",
+"a c #000427",
+"b c #000421",
+"c c #00054A",
+"d c #000442",
+"e c #00033A",
+"f c #000332",
+"g c #00022B",
+"h c #000223",
+"i c #000259",
+"j c #00024D",
+"k c #000143",
+"l c #000139",
+"m c #00012F",
+"n c #000126",
+"o c #000067",
+"p c #000057",
+"q c #00004A",
+"r c #00003E",
+"s c #000033",
+"t c #000029",
+"u c #000076",
+"v c #000077",
+"w c #000062",
+"x c #000051",
+"y c #000043",
+"z c #000037",
+"A c #00002B",
+"B c #000085",
+"C c #00006C",
+"D c #000058",
+"E c #000048",
+"F c #000039",
+"G c #00002C",
+"H c #00009A",
+"I c #000081",
+"J c #00006A",
+"K c #000049",
+"L c #00003B",
+"M c #0000AD",
+"N c #000092",
+"O c #00007B",
+"P c #0000BC",
+"Q c #0000A1",
+"R c #000089",
+"S c #000059",
+"T c #0000BD",
+"U c #000087",
+"V c #000073",
+"W c #000054",
+"X c #0000B7",
+"Y c #000096",
+"Z c #00007C",
+"` c #000064",
+" . c #000052",
+".. c #000041",
+"+. c #00009D",
+"@. c #00007F",
+"#. c #00004F",
+"$. c #00003D",
+"%. c #00002E",
+"&. c #00008B",
+"*. c #00008C",
+"=. c #000072",
+"-. c #00005C",
+";. c #00002D",
+">. c #00006D",
+",. c #00006E",
+"'. c #00005B",
+"). c #00004D",
+"!. c #000040",
+"~. c #000035",
+"{. c #00002A",
+"]. c #00004B",
+"^. c #000034",
+"/. c #000026",
+"(. c #000060",
+"_. c #000053",
+":. c #000046",
+". . . . . . . . . . . . . . . . . . . . . . . . ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ % % % @ @ @ ",
+"& & & & & & & & & & & & & & & & & * = - - - & & ",
+"; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > , ' ) ! ; ",
+"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ { ] ^ / ( ~ ",
+"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ : < [ } | ",
+"1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 ",
+"7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 9 0 a b ",
+"c c c c c c c c c c c c c c c c c c c d e f g h ",
+"i i i i i i i i i i i i i i i i i i i j k l m n ",
+"o o o o o o o o o o o o o o o o o o o p q r s t ",
+"u u u u u u u v v v v v v v v v u u u w x y z A ",
+"B B B B B B B B B B B B B B B B B B B C D E F G ",
+"H H H H H H H H H H H H H H H H H H H I J p K L ",
+"M M M M M M M M M M M M M M M M M M M N O o D q ",
+"P P P P P P P P P P P P P P P P P P P Q R u o S ",
+"T T T T T T T T T T T T T T T T T T T Q U V w W ",
+"X X X X X X X X X X X X X X X X X X X Y Z ` ...",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.@.` #.$.%.",
+"&.&.&.&.&.&.*.*.*.*.*.*.*.*.*.*.&.&.&.=.-.q L ;.",
+"C C C C C C >.,.,.,.,.,.,.,.,.,.C C C '.).!.~.{.",
+"].].].].].].].].].].].].].].].].].].].y L ^.;./.",
+">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.(._.:.F G "};
diff --git a/src/middle_button_side.xcf b/src/middle_button_side.xcf
new file mode 100644
index 0000000..33163d7
--- /dev/null
+++ b/src/middle_button_side.xcf
Binary files differ
diff --git a/src/pixmaps.h b/src/pixmaps.h
new file mode 100644
index 0000000..d8a9645
--- /dev/null
+++ b/src/pixmaps.h
@@ -0,0 +1,11 @@
+
+#include "buttons.h"
+#include "middle.xpm"
+#include "left.xpm"
+#include "right.xpm"
+#include "bar.xpm"
+#include "kroete.xpm"
+#include "middle_button.xpm"
+#include "middle_button_left.xpm"
+#include "middle_button_right.xpm"
+
diff --git a/src/right.xpm b/src/right.xpm
new file mode 100644
index 0000000..2567618
--- /dev/null
+++ b/src/right.xpm
@@ -0,0 +1,140 @@
+/* XPM */
+static const char * right_xpm[] = {
+"8 24 113 2",
+" c None",
+". c #002000",
+"+ c #001A05",
+"@ c #007F39",
+"# c #003417",
+"$ c #001609",
+"% c #006F57",
+"& c #006C54",
+"* c #00241C",
+"= c #00120E",
+"- c #004051",
+"; c #00313E",
+"> c #001014",
+", c #000F14",
+"' c #000F13",
+") c #000F12",
+"! c #00203F",
+"~ c #001F3E",
+"{ c #000E1B",
+"] c #000D1A",
+"^ c #000C19",
+"/ c #000C17",
+"( c #000D27",
+"_ c #000C24",
+": c #000B21",
+"< c #000A1F",
+"[ c #00091D",
+"} c #00081A",
+"| c #000A32",
+"1 c #00092E",
+"2 c #00082A",
+"3 c #000726",
+"4 c #000721",
+"5 c #00061D",
+"6 c #00073E",
+"7 c #000638",
+"8 c #000632",
+"9 c #00052C",
+"0 c #000427",
+"a c #000421",
+"b c #00054A",
+"c c #000442",
+"d c #00033A",
+"e c #000332",
+"f c #00022B",
+"g c #000223",
+"h c #000259",
+"i c #00024D",
+"j c #000143",
+"k c #000139",
+"l c #00012F",
+"m c #000126",
+"n c #000067",
+"o c #000057",
+"p c #00004A",
+"q c #00003E",
+"r c #000033",
+"s c #000029",
+"t c #000076",
+"u c #000062",
+"v c #000051",
+"w c #000043",
+"x c #000037",
+"y c #00002B",
+"z c #000085",
+"A c #00006C",
+"B c #000058",
+"C c #000048",
+"D c #000039",
+"E c #00002C",
+"F c #00009A",
+"G c #000081",
+"H c #00006A",
+"I c #000049",
+"J c #00003B",
+"K c #0000AD",
+"L c #000092",
+"M c #00007B",
+"N c #0000BC",
+"O c #0000A1",
+"P c #000089",
+"Q c #000059",
+"R c #0000BD",
+"S c #000087",
+"T c #000073",
+"U c #000054",
+"V c #0000B7",
+"W c #000096",
+"X c #00007C",
+"Y c #000064",
+"Z c #000052",
+"` c #000041",
+" . c #00009D",
+".. c #00007F",
+"+. c #00004F",
+"@. c #00003D",
+"#. c #00002E",
+"$. c #00008B",
+"%. c #000072",
+"&. c #00005C",
+"*. c #00002D",
+"=. c #00005B",
+"-. c #00004D",
+";. c #000040",
+">. c #000035",
+",. c #00002A",
+"'. c #00004B",
+"). c #000034",
+"!. c #000026",
+"~. c #00006D",
+"{. c #000060",
+"]. c #000053",
+"^. c #000046",
+". . ",
+"+ + + + ",
+"@ # $ $ $ ",
+"% & * = = = ",
+"- - ; > , ' ) ",
+"! ! ~ { ] ^ / ",
+"( ( ( _ : < [ } ",
+"| | | 1 2 3 4 5 ",
+"6 6 6 7 8 9 0 a ",
+"b b b c d e f g ",
+"h h h i j k l m ",
+"n n n o p q r s ",
+"t t t u v w x y ",
+"z z z A B C D E ",
+"F F F G H o I J ",
+"K K K L M n B p ",
+"N N N O P t n Q ",
+"R R R O S T u U ",
+"V V V W X Y Z ` ",
+" . . ...Y +.@.#.",
+"$.$.$.%.&.p J *.",
+"A A A =.-.;.>.,.",
+"'.'.'.w J ).*.!.",
+"~.~.~.{.].^.D E "};
diff --git a/src/side.xcf b/src/side.xcf
new file mode 100644
index 0000000..8a6517c
--- /dev/null
+++ b/src/side.xcf
Binary files differ