summaryrefslogtreecommitdiffstats
path: root/kwin/kcmkwin/kwindecoration
diff options
context:
space:
mode:
Diffstat (limited to 'kwin/kcmkwin/kwindecoration')
-rw-r--r--kwin/kcmkwin/kwindecoration/CMakeLists.txt37
-rw-r--r--kwin/kcmkwin/kwindecoration/Makefile.am18
-rw-r--r--kwin/kcmkwin/kwindecoration/buttons.cpp883
-rw-r--r--kwin/kcmkwin/kwindecoration/buttons.h227
-rw-r--r--kwin/kcmkwin/kwindecoration/kwindecoration.cpp840
-rw-r--r--kwin/kcmkwin/kwindecoration/kwindecoration.desktop231
-rw-r--r--kwin/kcmkwin/kwindecoration/kwindecoration.h148
-rw-r--r--kwin/kcmkwin/kwindecoration/kwindecorationIface.h44
-rw-r--r--kwin/kcmkwin/kwindecoration/pixmaps.h110
-rw-r--r--kwin/kcmkwin/kwindecoration/preview.cpp507
-rw-r--r--kwin/kcmkwin/kwindecoration/preview.h150
11 files changed, 0 insertions, 3195 deletions
diff --git a/kwin/kcmkwin/kwindecoration/CMakeLists.txt b/kwin/kcmkwin/kwindecoration/CMakeLists.txt
deleted file mode 100644
index 5fbdb3653..000000000
--- a/kwin/kcmkwin/kwindecoration/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_SOURCE_DIR}/twin/lib
- ${TDE_INCLUDE_DIR}
- ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
- ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES twindecoration.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
-
-
-##### kcm_twindecoration (module) ###############
-
-tde_add_kpart( kcm_twindecoration AUTOMOC
- SOURCES
- twindecoration.cpp buttons.cpp
- twindecorationIface.skel preview.cpp
- LINK tdecorations-shared tdeui-shared Xext
- DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin/kcmkwin/kwindecoration/Makefile.am b/kwin/kcmkwin/kwindecoration/Makefile.am
deleted file mode 100644
index 021c1ac3e..000000000
--- a/kwin/kcmkwin/kwindecoration/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-INCLUDES = -I$(srcdir)/../../lib $(all_includes)
-
-kde_module_LTLIBRARIES = kcm_twindecoration.la
-
-kcm_twindecoration_la_SOURCES = twindecoration.cpp buttons.cpp twindecorationIface.skel preview.cpp
-noinst_HEADERS = twindecoration.h twindecorationIface.h buttons.h preview.h
-
-kcm_twindecoration_la_LDFLAGS = \
- -module -avoid-version $(all_libraries) -no-undefined
-
-kcm_twindecoration_la_LIBADD = $(LIB_TDEUI) ../../lib/libtdecorations.la
-
-METASOURCES = AUTO
-
-messages:
- $(XGETTEXT) *.cpp -o $(podir)/kcmtwindecoration.pot
-
-xdg_apps_DATA = twindecoration.desktop
diff --git a/kwin/kcmkwin/kwindecoration/buttons.cpp b/kwin/kcmkwin/kwindecoration/buttons.cpp
deleted file mode 100644
index 2c450aed1..000000000
--- a/kwin/kcmkwin/kwindecoration/buttons.cpp
+++ /dev/null
@@ -1,883 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
- Copyright (c) 2001
- Karol Szwed <gallium@kde.org>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#include <tqheader.h>
-#include <tqpainter.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqstyle.h>
-
-#include <kdebug.h>
-
-#include <kdialog.h>
-#include <klocale.h>
-#include <kglobalsettings.h>
-
-#include <kdecorationfactory.h>
-
-#include "buttons.h"
-#include "pixmaps.h"
-
-
-#define BUTTONDRAGMIMETYPE "application/x-kde_twindecoration_buttons"
-ButtonDrag::ButtonDrag( Button btn, TQWidget* parent, const char* name)
- : TQStoredDrag( BUTTONDRAGMIMETYPE, parent, name)
-{
- TQByteArray data;
- TQDataStream stream(data, IO_WriteOnly);
- stream << btn.name;
- stream << btn.icon;
- stream << btn.type.tqunicode();
- stream << (int) btn.duplicate;
- stream << (int) btn.supported;
- setEncodedData( data );
-}
-
-
-bool ButtonDrag::canDecode( TQDropEvent* e )
-{
- return e->provides( BUTTONDRAGMIMETYPE );
-}
-
-bool ButtonDrag::decode( TQDropEvent* e, Button& btn )
-{
- TQByteArray data = e->data( BUTTONDRAGMIMETYPE );
- if ( data.size() )
- {
- e->accept();
- TQDataStream stream(data, IO_ReadOnly);
- stream >> btn.name;
- stream >> btn.icon;
- ushort type;
- stream >> type;
- btn.type = TQChar(type);
- int duplicate;
- stream >> duplicate;
- btn.duplicate = duplicate;
- int supported;
- stream >> supported;
- btn.supported = supported;
- return TRUE;
- }
- return FALSE;
-}
-
-
-Button::Button()
-{
-}
-
-Button::Button(const TQString& n, const TQBitmap& i, TQChar t, bool d, bool s)
- : name(n),
- icon(i),
- type(t),
- duplicate(d),
- supported(s)
-{
-}
-
-Button::~Button()
-{
-}
-
-// helper function to deal with the Button's bitmaps more easily...
-TQPixmap bitmapPixmap(const TQBitmap& bm, const TQColor& color)
-{
- TQPixmap pm(bm.size() );
- pm.setMask(bm);
- TQPainter p(&pm);
- p.setPen(color);
- p.drawPixmap(0,0,bm);
- p.end();
- return pm;
-}
-
-
-ButtonSource::ButtonSource(TQWidget *parent, const char* name)
- : KListView(parent, name)
-{
- tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Expanding);
-
- setResizeMode(TQListView::AllColumns);
- setDragEnabled(true);
- setAcceptDrops(true);
- setDropVisualizer(false);
- setSorting(-1);
- header()->setClickEnabled(false);
- header()->hide();
-
- addColumn(i18n("Buttons") );
-}
-
-ButtonSource::~ButtonSource()
-{
-}
-
-TQSize ButtonSource::tqsizeHint() const
-{
- // make the tqsizeHint height a bit smaller than the one of TQListView...
-
- if ( cachedSizeHint().isValid() )
- return cachedSizeHint();
-
- constPolish();
-
- TQSize s( header()->tqsizeHint() );
-
- if ( verticalScrollBar()->isVisible() )
- s.setWidth( s.width() + tqstyle().tqpixelMetric(TQStyle::PM_ScrollBarExtent) );
- s += TQSize(frameWidth()*2,frameWidth()*2);
-
- // size hint: 4 lines of text...
- s.setHeight( s.height() + fontMetrics().lineSpacing()*3 );
-
- setCachedSizeHint( s );
-
- return s;
-}
-
-void ButtonSource::hideAllButtons()
-{
- TQListViewItemIterator it(this);
- while (it.current() ) {
- it.current()->tqsetVisible(false);
- ++it;
- }
-}
-
-void ButtonSource::showAllButtons()
-{
- TQListViewItemIterator it(this);
- while (it.current() ) {
- it.current()->tqsetVisible(true);
- ++it;
- }
-}
-
-void ButtonSource::showButton( TQChar btn )
-{
- TQListViewItemIterator it(this);
- while (it.current() ) {
- ButtonSourceItem *item = dynamic_cast<ButtonSourceItem*>(it.current() );
- if (item && item->button().type == btn) {
- it.current()->tqsetVisible(true);
- return;
- }
- ++it;
- }
-}
-
-void ButtonSource::hideButton( TQChar btn )
-{
- TQListViewItemIterator it(this);
- while (it.current() ) {
- ButtonSourceItem *item = dynamic_cast<ButtonSourceItem*>(it.current() );
- if (item && item->button().type == btn && !item->button().duplicate) {
- it.current()->tqsetVisible(false);
- return;
- }
- ++it;
- }
-}
-
-bool ButtonSource::acceptDrag(TQDropEvent* e) const
-{
- return acceptDrops() && ButtonDrag::canDecode(e);
-}
-
-TQDragObject *ButtonSource::dragObject()
-{
- ButtonSourceItem *i = dynamic_cast<ButtonSourceItem*>(selectedItem() );
-
- if (i) {
- ButtonDrag *bd = new ButtonDrag(i->button(), viewport(), "button_drag");
- bd->setPixmap(bitmapPixmap(i->button().icon, tqcolorGroup().foreground() ));
- return bd;
- }
-
- return 0;
-}
-
-ButtonDropSiteItem::ButtonDropSiteItem(const Button& btn)
- : m_button(btn)
-{
-}
-
-ButtonDropSiteItem::~ButtonDropSiteItem()
-{
-}
-
-Button ButtonDropSiteItem::button()
-{
- return m_button;
-}
-
-int ButtonDropSiteItem::width()
-{
-// return m_button.icon.width();
- return 20;
-}
-
-int ButtonDropSiteItem::height()
-{
-// return m_button.icon.height();
- return 20;
-}
-
-void ButtonDropSiteItem::draw(TQPainter *p, const TQColorGroup& cg, TQRect r)
-{
-// p->fillRect(r, cg.base() );
- if (m_button.supported)
- p->setPen(cg.foreground() );
- else
- p->setPen(cg.mid() );
- TQBitmap &i = m_button.icon;
- p->drawPixmap(r.left()+(r.width()-i.width())/2, r.top()+(r.height()-i.height())/2, i);
-}
-
-
-ButtonDropSite::ButtonDropSite( TQWidget* parent, const char* name )
- : TQFrame( parent, name ),
- m_selected(0)
-{
- setAcceptDrops( TRUE );
- setFrameShape( WinPanel );
- setFrameShadow( Raised );
- setMinimumHeight( 26 );
- setMaximumHeight( 26 );
- setMinimumWidth( 250 ); // Ensure buttons will fit
-}
-
-ButtonDropSite::~ButtonDropSite()
-{
- clearLeft();
- clearRight();
-}
-
-void ButtonDropSite::clearLeft()
-{
- while (!buttonsLeft.isEmpty() ) {
- ButtonDropSiteItem *item = buttonsLeft.first();
- if (removeButton(item) ) {
- emit buttonRemoved(item->button().type);
- delete item;
- }
- }
-}
-
-void ButtonDropSite::clearRight()
-{
- while (!buttonsRight.isEmpty() ) {
- ButtonDropSiteItem *item = buttonsRight.first();
- if (removeButton(item) ) {
- emit buttonRemoved(item->button().type);
- delete item;
- }
- }
-}
-
-void ButtonDropSite::dragMoveEvent( TQDragMoveEvent* e )
-{
- TQPoint p = e->pos();
- if (leftDropArea().contains(p) || rightDropArea().contains(p) || buttonAt(p) ) {
- e->accept();
-
- // 2 pixel wide drop visualizer...
- TQRect r = contentsRect();
- int x = -1;
- if (leftDropArea().contains(p) ) {
- x = leftDropArea().left();
- } else if (rightDropArea().contains(p) ) {
- x = rightDropArea().right()+1;
- } else {
- ButtonDropSiteItem *item = buttonAt(p);
- if (item) {
- if (p.x() < item->rect.left()+item->rect.width()/2 ) {
- x = item->rect.left();
- } else {
- x = item->rect.right()+1;
- }
- }
- }
- if (x != -1) {
- TQRect tmpRect(x, r.y(), 2, r.height() );
- if (tmpRect != m_oldDropVisualizer) {
- cleanDropVisualizer();
- m_oldDropVisualizer = tmpRect;
- update(tmpRect);
- }
- }
-
- } else {
- e->ignore();
-
- cleanDropVisualizer();
- }
-}
-
-void ButtonDropSite::cleanDropVisualizer()
-{
- if (m_oldDropVisualizer.isValid())
- {
- TQRect rect = m_oldDropVisualizer;
- m_oldDropVisualizer = TQRect(); // rect is invalid
- update(rect);
- }
-}
-
-void ButtonDropSite::dragEnterEvent( TQDragEnterEvent* e )
-{
- if ( ButtonDrag::canDecode( e ) )
- e->accept();
-}
-
-void ButtonDropSite::dragLeaveEvent( TQDragLeaveEvent* /* e */ )
-{
- cleanDropVisualizer();
-}
-
-void ButtonDropSite::dropEvent( TQDropEvent* e )
-{
- cleanDropVisualizer();
-
- TQPoint p = e->pos();
-
- // collect information where to insert the dropped button
- ButtonList *buttonList = 0;
- ButtonList::iterator buttonPosition;
-
- if (leftDropArea().contains(p) ) {
- buttonList = &buttonsLeft;
- buttonPosition = buttonsLeft.end();
- } else if (rightDropArea().contains(p) ) {
- buttonList = &buttonsRight;
- buttonPosition = buttonsRight.begin();
- } else {
- ButtonDropSiteItem *aboveItem = buttonAt(p);
- if (!aboveItem)
- return; // invalid drop. hasn't occured _over_ a button (or left/right dropArea), return...
-
- ButtonList::iterator it;
- if (!getItemIterator(aboveItem, buttonList, it) ) {
- // didn't find the aboveItem. unlikely to happen since buttonAt() already seems to have found
- // something valid. anyway...
- return;
- }
-
- // got the list and the aboveItem position. now determine if the item should be inserted
- // before aboveItem or after aboveItem.
- TQRect aboveItemRect = aboveItem->rect;
- if (!aboveItemRect.isValid() )
- return;
-
- if (p.x() < aboveItemRect.left()+aboveItemRect.width()/2 ) {
- // insert before the item
- buttonPosition = it;
- } else {
- if (it != buttonList->end() )
- buttonPosition = ++it;
- else
- buttonPosition = it; // already at the end(), can't increment the iterator!
- }
- }
-
- // know where to insert the button. now see if we can use an existing item (drag within the widget = move)
- // orneed to create a new one
- ButtonDropSiteItem *buttonItem = 0;
- if (e->source() == this && m_selected) {
- ButtonList *oldList = 0;
- ButtonList::iterator oldPos;
- if (getItemIterator(m_selected, oldList, oldPos) ) {
- if (oldPos == buttonPosition)
- return; // button didn't change its position during the drag...
-
- oldList->remove(oldPos);
- buttonItem = m_selected;
- } else {
- return; // m_selected not found, return...
- }
- } else {
- // create new button from the drop object...
- Button btn;
- if (ButtonDrag::decode(e, btn) ) {
- buttonItem = new ButtonDropSiteItem(btn);
- } else {
- return; // something has gone wrong while we were trying to decode the drop event
- }
- }
-
- // now the item can actually be inserted into the list! :)
- (*buttonList).insert(buttonPosition, buttonItem);
- emit buttonAdded(buttonItem->button().type);
- emit changed();
- recalcItemGeometry();
- update();
-}
-
-bool ButtonDropSite::getItemIterator(ButtonDropSiteItem *item, ButtonList* &list, ButtonList::iterator &iterator)
-{
- if (!item)
- return false;
-
- ButtonList::iterator it = buttonsLeft.find(item); // try the left list first...
- if (it == buttonsLeft.end() ) {
- it = buttonsRight.find(item); // try the right list...
- if (it == buttonsRight.end() ) {
- return false; // item hasn't been found in one of the list, return...
- } else {
- list = &buttonsRight;
- iterator = it;
- }
- } else {
- list = &buttonsLeft;
- iterator = it;
- }
-
- return true;
-}
-
-TQRect ButtonDropSite::leftDropArea()
-{
- // return a 10 pixel drop area...
- TQRect r = contentsRect();
-
- int leftButtonsWidth = calcButtonListWidth(buttonsLeft);
- return TQRect(r.left()+leftButtonsWidth, r.top(), 10, r.height() );
-}
-
-TQRect ButtonDropSite::rightDropArea()
-{
- // return a 10 pixel drop area...
- TQRect r = contentsRect();
-
- int rightButtonsWidth = calcButtonListWidth(buttonsRight);
- return TQRect(r.right()-rightButtonsWidth-10, r.top(), 10, r.height() );
-}
-
-void ButtonDropSite::mousePressEvent( TQMouseEvent* e )
-{
- // TODO: only start the real drag after some drag distance
- m_selected = buttonAt(e->pos() );
- if (m_selected) {
- ButtonDrag *bd = new ButtonDrag(m_selected->button(), this);
- bd->setPixmap(bitmapPixmap(m_selected->button().icon, tqcolorGroup().foreground() ) );
- bd->dragMove();
- }
-}
-
-void ButtonDropSite::resizeEvent(TQResizeEvent*)
-{
- recalcItemGeometry();
-}
-
-void ButtonDropSite::recalcItemGeometry()
-{
- TQRect r = contentsRect();
-
- // update the geometry of the items in the left button list
- int offset = r.left();
- for (ButtonList::const_iterator it = buttonsLeft.begin(); it != buttonsLeft.end(); ++it) {
- int w = (*it)->width();
- (*it)->rect = TQRect(offset, r.top(), w, (*it)->height() );
- offset += w;
- }
-
- // the right button list...
- offset = r.right() - calcButtonListWidth(buttonsRight);
- for (ButtonList::const_iterator it = buttonsRight.begin(); it != buttonsRight.end(); ++it) {
- int w = (*it)->width();
- (*it)->rect = TQRect(offset, r.top(), w, (*it)->height() );
- offset += w;
- }
-}
-
-ButtonDropSiteItem *ButtonDropSite::buttonAt(TQPoint p) {
- // try to find the item in the left button list
- for (ButtonList::const_iterator it = buttonsLeft.begin(); it != buttonsLeft.end(); ++it) {
- if ( (*it)->rect.contains(p) ) {
- return *it;
- }
- }
-
- // try to find the item in the right button list
- for (ButtonList::const_iterator it = buttonsRight.begin(); it != buttonsRight.end(); ++it) {
- if ( (*it)->rect.contains(p) ) {
- return *it;
- }
- }
-
- return 0;
-}
-
-bool ButtonDropSite::removeButton(ButtonDropSiteItem *item) {
- if (!item)
- return false;
-
- // try to remove the item from the left button list
- if (buttonsLeft.remove(item) >= 1) {
- return true;
- }
-
- // try to remove the item from the right button list
- if (buttonsRight.remove(item) >= 1) {
- return true;
- }
-
- return false;
-}
-
-int ButtonDropSite::calcButtonListWidth(const ButtonList& btns)
-{
- int w = 0;
- for (ButtonList::const_iterator it = btns.begin(); it != btns.end(); ++it) {
- w += (*it)->width();
- }
-
- return w;
-}
-
-bool ButtonDropSite::removeSelectedButton()
-{
- bool succ = removeButton(m_selected);
- if (succ) {
- emit buttonRemoved(m_selected->button().type);
- emit changed();
- delete m_selected;
- m_selected = 0;
- recalcItemGeometry();
- update(); // tqrepaint...
- }
-
- return succ;
-}
-
-void ButtonDropSite::drawButtonList(TQPainter *p, const ButtonList& btns, int offset)
-{
- for (ButtonList::const_iterator it = btns.begin(); it != btns.end(); ++it) {
- TQRect tqitemRect = (*it)->rect;
- if (tqitemRect.isValid() ) {
- (*it)->draw(p, tqcolorGroup(), tqitemRect);
- }
- offset += (*it)->width();
- }
-}
-
-void ButtonDropSite::drawContents( TQPainter* p )
-{
- int leftoffset = calcButtonListWidth( buttonsLeft );
- int rightoffset = calcButtonListWidth( buttonsRight );
- int offset = 3;
-
- TQRect r = contentsRect();
-
- // Shrink by 1
- r.moveBy(1 + leftoffset, 1);
- r.setWidth( r.width() - 2 - leftoffset - rightoffset );
- r.setHeight( r.height() - 2 );
-
- drawButtonList( p, buttonsLeft, offset );
-
- TQColor c1( 0x0A, 0x5F, 0x89 ); // KDE 2 titlebar default colour
- p->fillRect( r, c1 );
- p->setPen( Qt::white );
- p->setFont( TQFont( KGlobalSettings::generalFont().family(), 12, TQFont::Bold) );
- p->drawText( r, AlignLeft | AlignVCenter, i18n("KDE") );
-
- offset = geometry().width() - 3 - rightoffset;
- drawButtonList( p, buttonsRight, offset );
-
- if (m_oldDropVisualizer.isValid() )
- {
- p->fillRect(m_oldDropVisualizer, Dense4Pattern);
- }
-}
-
-ButtonSourceItem::ButtonSourceItem(TQListView * parent, const Button& btn)
- : TQListViewItem(parent),
- m_button(btn),
- m_dirty(true)
-{
- setButton(btn);
-}
-
-ButtonSourceItem::~ButtonSourceItem()
-{
-}
-
-void ButtonSourceItem::paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int align)
-{
- // we need the color group cg, so to the work here, not in setButton...
- if (m_dirty) {
- if (m_button.supported) {
- setPixmap(0, bitmapPixmap(m_button.icon, cg.foreground() ) );
- } else {
- setPixmap(0, bitmapPixmap(m_button.icon, cg.mid() ) );
- }
- m_dirty = false;
- }
-
- if (m_button.supported) {
- TQListViewItem::paintCell(p,cg,column,width,align);
- } else {
- // grey out unsupported buttons
- TQColorGroup cg2 = cg;
- cg2.setColor(TQColorGroup::Text, cg.mid() );
- TQListViewItem::paintCell(p,cg2,column,width,align);
- }
-}
-
-void ButtonSourceItem::setButton(const Button& btn)
-{
- m_button = btn;
- m_dirty = true; // update the pixmap when in paintCell()...
- if (btn.supported) {
- setText(0, btn.name);
- } else {
- setText(0, i18n("%1 (unavailable)").arg(btn.name) );
- }
-}
-
-Button ButtonSourceItem::button() const
-{
- return m_button;
-}
-
-
-ButtonPositionWidget::ButtonPositionWidget(TQWidget *parent, const char* name)
- : TQWidget(parent,name),
- m_factory(0)
-{
- TQVBoxLayout *layout = new TQVBoxLayout(this, 0, KDialog::spacingHint() );
- tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Maximum);
-
- TQLabel* label = new TQLabel( this );
- m_dropSite = new ButtonDropSite( this );
- label->tqsetAlignment( int( TQLabel::WordBreak ) );
- label->setText( i18n( "To add or remove titlebar buttons, simply <i>drag</i> items "
- "between the available item list and the titlebar preview. Similarly, "
- "drag items within the titlebar preview to re-position them.") );
- m_buttonSource = new ButtonSource(this, "button_source");
-
- layout->addWidget(label);
- layout->addWidget(m_dropSite);
- layout->addWidget(m_buttonSource);
-
- connect( m_dropSite, TQT_SIGNAL(buttonAdded(TQChar)), m_buttonSource, TQT_SLOT(hideButton(TQChar)) );
- connect( m_dropSite, TQT_SIGNAL(buttonRemoved(TQChar)), m_buttonSource, TQT_SLOT(showButton(TQChar)) );
- connect( m_buttonSource, TQT_SIGNAL(dropped(TQDropEvent*, TQListViewItem*)), m_dropSite, TQT_SLOT(removeSelectedButton()) );
-
- connect( m_dropSite, TQT_SIGNAL(changed()), TQT_SIGNAL(changed()) );
-
- // insert all possible buttons into the source (backwards to keep the preferred order...)
- bool dummy;
- new ButtonSourceItem(m_buttonSource, getButton('R', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('L', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('B', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('F', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('X', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('A', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('I', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('H', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('S', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('M', dummy) );
- new ButtonSourceItem(m_buttonSource, getButton('_', dummy) );
-}
-
-ButtonPositionWidget::~ButtonPositionWidget()
-{
-}
-
-void ButtonPositionWidget::setDecorationFactory(KDecorationFactory *factory)
-{
- if (!factory)
- return;
-
- m_factory = factory;
-
- // get the list of supported buttons
- if (m_factory->supports(KDecorationDefines::AbilityAnnounceButtons) ) {
- TQString supportedButtons;
-
- if (m_factory->supports(KDecorationDefines::AbilityButtonMenu) )
- supportedButtons.append('M');
- if (m_factory->supports(KDecorationDefines::AbilityButtonOnAllDesktops) )
- supportedButtons.append('S');
- if (m_factory->supports(KDecorationDefines::AbilityButtonSpacer) )
- supportedButtons.append('_');
- if (m_factory->supports(KDecorationDefines::AbilityButtonHelp) )
- supportedButtons.append('H');
- if (m_factory->supports(KDecorationDefines::AbilityButtonMinimize) )
- supportedButtons.append('I');
- if (m_factory->supports(KDecorationDefines::AbilityButtonMaximize) )
- supportedButtons.append('A');
- if (m_factory->supports(KDecorationDefines::AbilityButtonClose) )
- supportedButtons.append('X');
- if (m_factory->supports(KDecorationDefines::AbilityButtonAboveOthers) )
- supportedButtons.append('F');
- if (m_factory->supports(KDecorationDefines::AbilityButtonBelowOthers) )
- supportedButtons.append('B');
- if (m_factory->supports(KDecorationDefines::AbilityButtonShade) )
- supportedButtons.append('L');
- if (m_factory->supports(KDecorationDefines::AbilityButtonResize) )
- supportedButtons.append('R');
-
- m_supportedButtons = supportedButtons;
- } else {
- // enable only buttons available before AbilityButton* introduction
- m_supportedButtons = "MSHIAX_";
- }
-
- // update the button lists...
- // 1. set status on the source items...
- TQListViewItemIterator it(m_buttonSource);
- while (it.current() ) {
- ButtonSourceItem *i = dynamic_cast<ButtonSourceItem*>(it.current() );
- if (i) {
- Button b = i->button();
- b.supported = m_supportedButtons.contains(b.type);
- i->setButton(b);
- }
- ++it;
- }
- // 2. rebuild the drop site items...
- setButtonsLeft(buttonsLeft() );
- setButtonsRight(buttonsRight() );
-}
-
-Button ButtonPositionWidget::getButton(TQChar type, bool& success) {
- success = true;
-
- if (type == 'R') {
- TQBitmap bmp(resize_width, resize_height, resize_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Resize"), bmp, 'R', false, m_supportedButtons.contains('R') );
- } else if (type == 'L') {
- TQBitmap bmp(shade_width, shade_height, shade_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Shade"), bmp, 'L', false, m_supportedButtons.contains('L') );
- } else if (type == 'B') {
- TQBitmap bmp(keepbelowothers_width, keepbelowothers_height, keepbelowothers_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Keep Below Others"), bmp, 'B', false, m_supportedButtons.contains('B') );
- } else if (type == 'F') {
- TQBitmap bmp(keepaboveothers_width, keepaboveothers_height, keepaboveothers_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Keep Above Others"), bmp, 'F', false, m_supportedButtons.contains('F') );
- } else if (type == 'X') {
- TQBitmap bmp(close_width, close_height, close_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Close"), bmp, 'X', false, m_supportedButtons.contains('X') );
- } else if (type == 'A') {
- TQBitmap bmp(maximize_width, maximize_height, maximize_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Maximize"), bmp, 'A', false, m_supportedButtons.contains('A') );
- } else if (type == 'I') {
- TQBitmap bmp(minimize_width, minimize_height, minimize_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Minimize"), bmp, 'I', false, m_supportedButtons.contains('I') );
- } else if (type == 'H') {
- TQBitmap bmp(help_width, help_height, help_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Help"), bmp, 'H', false, m_supportedButtons.contains('H') );
- } else if (type == 'S') {
- TQBitmap bmp(onalldesktops_width, onalldesktops_height, onalldesktops_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("On All Desktops"), bmp, 'S', false, m_supportedButtons.contains('S') );
- } else if (type == 'M') {
- TQBitmap bmp(menu_width, menu_height, menu_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("Menu"), bmp, 'M', false, m_supportedButtons.contains('M') );
- } else if (type == '_') {
- TQBitmap bmp(spacer_width, spacer_height, spacer_bits, true);
- bmp.setMask(bmp);
- return Button(i18n("--- spacer ---"), bmp, '_', true, m_supportedButtons.contains('_') );
- } else {
- success = false;
- return Button();
- }
-}
-
-TQString ButtonPositionWidget::buttonsLeft() const
-{
- ButtonList btns = m_dropSite->buttonsLeft;
- TQString btnString = "";
- for (ButtonList::const_iterator it = btns.begin(); it != btns.end(); ++it) {
- btnString.append( (*it)->button().type );
- }
- return btnString;
-}
-
-TQString ButtonPositionWidget::buttonsRight() const
-{
- ButtonList btns = m_dropSite->buttonsRight;
- TQString btnString = "";
- for (ButtonList::const_iterator it = btns.begin(); it != btns.end(); ++it) {
- btnString.append( (*it)->button().type );
- }
- return btnString;
-}
-
-void ButtonPositionWidget::setButtonsLeft(const TQString &buttons)
-{
- // to keep the button lists consistent, first remove all left buttons, then add buttons again...
- m_dropSite->clearLeft();
-
- for (uint i = 0; i < buttons.length(); ++i) {
- bool succ = false;
- Button btn = getButton(buttons[i], succ);
- if (succ) {
- m_dropSite->buttonsLeft.append(new ButtonDropSiteItem(btn) );
- m_buttonSource->hideButton(btn.type);
- }
- }
- m_dropSite->recalcItemGeometry();
- m_dropSite->update();
-}
-
-void ButtonPositionWidget::setButtonsRight(const TQString &buttons)
-{
- // to keep the button lists consistent, first remove all left buttons, then add buttons again...
- m_dropSite->clearRight();
-
- for (uint i = 0; i < buttons.length(); ++i) {
- bool succ = false;
- Button btn = getButton(buttons[i], succ);
- if (succ) {
- m_dropSite->buttonsRight.append(new ButtonDropSiteItem(btn) );
- m_buttonSource->hideButton(btn.type);
- }
- }
- m_dropSite->recalcItemGeometry();
- m_dropSite->update();
-}
-
-#include "buttons.moc"
-// vim: ts=4
-// kate: space-indent off; tab-width 4;
diff --git a/kwin/kcmkwin/kwindecoration/buttons.h b/kwin/kcmkwin/kwindecoration/buttons.h
deleted file mode 100644
index 088d3414d..000000000
--- a/kwin/kcmkwin/kwindecoration/buttons.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
- Copyright (c) 2001
- Karol Szwed <gallium@kde.org>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#ifndef __BUTTONS_H_
-#define __BUTTONS_H_
-
-#include <tqbitmap.h>
-#include <tqevent.h>
-#include <tqdragobject.h>
-#include <tqlistbox.h>
-
-#include <klistview.h>
-
-class KDecorationFactory;
-
-/**
- * This class holds the button data.
- */
-class Button
-{
- public:
- Button();
- Button(const TQString& name, const TQBitmap& icon, TQChar type, bool duplicate, bool supported);
- virtual ~Button();
-
- TQString name;
- TQBitmap icon;
- TQChar type;
- bool duplicate;
- bool supported;
-};
-
-class ButtonDrag : public TQStoredDrag
-{
- public:
- ButtonDrag( Button btn, TQWidget* parent, const char* name=0 );
- ~ButtonDrag() {};
-
- static bool canDecode( TQDropEvent* e );
- static bool decode( TQDropEvent* e, Button& btn );
-};
-
-/**
- * This is plugged into ButtonDropSite
- */
-class ButtonDropSiteItem
-{
- public:
- ButtonDropSiteItem(const Button& btn);
- ~ButtonDropSiteItem();
-
- Button button();
-
- TQRect rect;
- int width();
- int height();
-
- void draw(TQPainter *p, const TQColorGroup& cg, TQRect rect);
-
- private:
- Button m_button;
-};
-
-/**
- * This is plugged into ButtonSource
- */
-class ButtonSourceItem : public TQListViewItem
-{
- public:
- ButtonSourceItem(TQListView * parent, const Button& btn);
- virtual ~ButtonSourceItem();
-
- void paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int align);
-
- void setButton(const Button& btn);
- Button button() const;
- private:
- Button m_button;
- bool m_dirty;
-};
-
-/**
- * Implements the button drag source list view
- */
-class ButtonSource : public KListView
-{
- Q_OBJECT
-
- public:
- ButtonSource(TQWidget *parent = 0, const char* name = 0);
- virtual ~ButtonSource();
-
- TQSize tqsizeHint() const;
-
- void hideAllButtons();
- void showAllButtons();
-
- public slots:
- void hideButton(TQChar btn);
- void showButton(TQChar btn);
-
- protected:
- bool acceptDrag(TQDropEvent* e) const;
- virtual TQDragObject *dragObject();
-};
-
-typedef TQValueList<ButtonDropSiteItem*> ButtonList;
-
-/**
- * This class renders and handles the demo titlebar dropsite
- */
-class ButtonDropSite: public TQFrame
-{
- Q_OBJECT
-
- public:
- ButtonDropSite( TQWidget* parent=0, const char* name=0 );
- ~ButtonDropSite();
-
- // Allow external classes access our buttons - ensure buttons are
- // not duplicated however.
- ButtonList buttonsLeft;
- ButtonList buttonsRight;
- void clearLeft();
- void clearRight();
-
- signals:
- void buttonAdded(TQChar btn);
- void buttonRemoved(TQChar btn);
- void changed();
-
- public slots:
- bool removeSelectedButton(); ///< This slot is called after we drop on the item listbox...
- void recalcItemGeometry(); ///< Call this whenever the item list changes... updates the items' rect property
-
- protected:
- void resizeEvent(TQResizeEvent*);
- void dragEnterEvent( TQDragEnterEvent* e );
- void dragMoveEvent( TQDragMoveEvent* e );
- void dragLeaveEvent( TQDragLeaveEvent* e );
- void dropEvent( TQDropEvent* e );
- void mousePressEvent( TQMouseEvent* e ); ///< Starts dragging a button...
-
- void drawContents( TQPainter* p );
- ButtonDropSiteItem *buttonAt(TQPoint p);
- bool removeButton(ButtonDropSiteItem *item);
- int calcButtonListWidth(const ButtonList& buttons); ///< Computes the total space the buttons will take in the titlebar
- void drawButtonList(TQPainter *p, const ButtonList& buttons, int offset);
-
- TQRect leftDropArea();
- TQRect rightDropArea();
-
- private:
- /**
- * Try to find the item. If found, set its list and iterator and return true, else return false
- */
- bool getItemIterator(ButtonDropSiteItem *item, ButtonList* &list, ButtonList::iterator &iterator);
-
- void cleanDropVisualizer();
- TQRect m_oldDropVisualizer;
-
- ButtonDropSiteItem *m_selected;
-};
-
-class ButtonPositionWidget : public TQWidget
-{
- Q_OBJECT
-
- public:
- ButtonPositionWidget(TQWidget *parent = 0, const char* name = 0);
- ~ButtonPositionWidget();
-
- /**
- * set the factory, so the class e.g. knows which buttons are supported by the client
- */
- void setDecorationFactory(KDecorationFactory *factory);
-
- TQString buttonsLeft() const;
- TQString buttonsRight() const;
- void setButtonsLeft(const TQString &buttons);
- void setButtonsRight(const TQString &buttons);
-
- signals:
- void changed();
-
- private:
- void clearButtonList(const ButtonList& btns);
- Button getButton(TQChar type, bool& success);
-
- ButtonDropSite* m_dropSite;
- ButtonSource *m_buttonSource;
-
- KDecorationFactory *m_factory;
- TQString m_supportedButtons;
-};
-
-
-#endif
-// vim: ts=4
-// kate: space-indent off; tab-width 4;
diff --git a/kwin/kcmkwin/kwindecoration/kwindecoration.cpp b/kwin/kcmkwin/kwindecoration/kwindecoration.cpp
deleted file mode 100644
index 4ef509e5a..000000000
--- a/kwin/kcmkwin/kwindecoration/kwindecoration.cpp
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2001
- Karol Szwed <gallium@kde.org>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#include <assert.h>
-#include <math.h>
-
-#include <tqdir.h>
-#include <tqfileinfo.h>
-#include <tqlayout.h>
-#include <tqwhatsthis.h>
-#include <tqgroupbox.h>
-#include <tqcheckbox.h>
-#include <tqtabwidget.h>
-#include <tqvbox.h>
-#include <tqlabel.h>
-#include <tqfile.h>
-#include <tqslider.h>
-#include <tqspinbox.h>
-
-#include <kapplication.h>
-#include <kcolorbutton.h>
-#include <kcombobox.h>
-#include <kdebug.h>
-#include <kdesktopfile.h>
-#include <kstandarddirs.h>
-#include <kglobal.h>
-#include <klocale.h>
-#include <kdialog.h>
-#include <kgenericfactory.h>
-#include <kaboutdata.h>
-#include <dcopclient.h>
-
-#include "twindecoration.h"
-#include "preview.h"
-#include <kdecoration_plugins_p.h>
-#include <kdecorationfactory.h>
-
-// KCModule plugin interface
-// =========================
-typedef KGenericFactory<KWinDecorationModule, TQWidget> KWinDecoFactory;
-K_EXPORT_COMPONENT_FACTORY( kcm_twindecoration, KWinDecoFactory("kcmtwindecoration") )
-
-KWinDecorationModule::KWinDecorationModule(TQWidget* parent, const char* name, const TQStringList &)
- : DCOPObject("KWinClientDecoration"),
- KCModule(KWinDecoFactory::instance(), parent, name),
- twinConfig("twinrc"),
- pluginObject(0)
-{
- twinConfig.setGroup("Style");
- plugins = new KDecorationPreviewPlugins( &twinConfig );
-
- TQVBoxLayout* layout = new TQVBoxLayout(this, 0, KDialog::spacingHint());
-
-// Save this for later...
-// cbUseMiniWindows = new TQCheckBox( i18n( "Render mini &titlebars for all windows"), checkGroup );
-// TQWhatsThis::add( cbUseMiniWindows, i18n( "Note that this option is not available on all styles yet!" ) );
-
- tabWidget = new TQTabWidget( this );
- layout->addWidget( tabWidget );
-
- // Page 1 (General Options)
- TQWidget *pluginPage = new TQWidget( tabWidget );
-
- TQVBoxLayout* pluginLayout = new TQVBoxLayout(pluginPage, KDialog::marginHint(), KDialog::spacingHint());
-
- // decoration chooser
- decorationList = new KComboBox( pluginPage );
- TQString whatsThis = i18n("Select the window decoration. This is the look and feel of both "
- "the window borders and the window handle.");
- TQWhatsThis::add(decorationList, whatsThis);
- pluginLayout->addWidget(decorationList);
-
- TQGroupBox *pluginSettingsGrp = new TQGroupBox( i18n("Decoration Options"), pluginPage );
- pluginSettingsGrp->setColumnLayout( 0, Qt::Vertical );
- pluginSettingsGrp->setFlat( true );
- pluginSettingsGrp->layout()->setMargin( 0 );
- pluginSettingsGrp->layout()->setSpacing( KDialog::spacingHint() );
- pluginLayout->addWidget( pluginSettingsGrp );
-
- pluginLayout->addStretch();
-
- // Border size chooser
- lBorder = new TQLabel (i18n("B&order size:"), pluginSettingsGrp);
- cBorder = new TQComboBox(pluginSettingsGrp);
- lBorder->setBuddy(cBorder);
- TQWhatsThis::add( cBorder, i18n( "Use this combobox to change the border size of the decoration." ));
- lBorder->hide();
- cBorder->hide();
- TQHBoxLayout *borderSizeLayout = new TQHBoxLayout(pluginSettingsGrp->tqlayout() );
- borderSizeLayout->addWidget(lBorder);
- borderSizeLayout->addWidget(cBorder);
- borderSizeLayout->addStretch();
-
- pluginConfigWidget = new TQVBox(pluginSettingsGrp);
- pluginSettingsGrp->tqlayout()->add( pluginConfigWidget );
-
- // Page 2 (Button Selector)
- TQWidget* buttonPage = new TQWidget( tabWidget );
- TQVBoxLayout* buttonLayout = new TQVBoxLayout(buttonPage, KDialog::marginHint(), KDialog::spacingHint());
-
- cbShowToolTips = new TQCheckBox(
- i18n("&Show window button tooltips"), buttonPage );
- TQWhatsThis::add( cbShowToolTips,
- i18n( "Enabling this checkbox will show window button tooltips. "
- "If this checkbox is off, no window button tooltips will be shown."));
-
- cbUseCustomButtonPositions = new TQCheckBox(
- i18n("Use custom titlebar button &positions"), buttonPage );
- TQWhatsThis::add( cbUseCustomButtonPositions,
- i18n( "The appropriate settings can be found in the \"Buttons\" Tab; "
- "please note that this option is not available on all styles yet." ) );
-
- buttonLayout->addWidget( cbShowToolTips );
- buttonLayout->addWidget( cbUseCustomButtonPositions );
-
- // Add nifty dnd button modification widgets
- buttonPositionWidget = new ButtonPositionWidget(buttonPage, "button_position_widget");
- buttonPositionWidget->setDecorationFactory(plugins->factory() );
- TQHBoxLayout* buttonControlLayout = new TQHBoxLayout(buttonLayout);
- buttonControlLayout->addSpacing(20);
- buttonControlLayout->addWidget(buttonPositionWidget);
-// buttonLayout->addStretch();
-
- // preview
- TQVBoxLayout* previewLayout = new TQVBoxLayout(layout, KDialog::spacingHint() );
- previewLayout->setMargin( KDialog::marginHint() );
-
- preview = new KDecorationPreview( this );
- previewLayout->addWidget(preview);
-
- preview->tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Expanding);
- tabWidget->tqsetSizePolicy(TQSizePolicy::Expanding, TQSizePolicy::Maximum);
-
- // Page 3 (Window Shadows)
- TQHBox *inactiveShadowColourHBox, *shadowColourHBox;
- TQHBox *inactiveShadowOpacityHBox, *shadowOpacityHBox;
- TQHBox *inactiveShadowXOffsetHBox, *shadowXOffsetHBox;
- TQHBox *inactiveShadowYOffsetHBox, *shadowYOffsetHBox;
- TQHBox *inactiveShadowThicknessHBox, *shadowThicknessHBox;
- TQLabel *inactiveShadowColourLabel, *shadowColourLabel;
- TQLabel *inactiveShadowOpacityLabel, *shadowOpacityLabel;
- TQLabel *inactiveShadowXOffsetLabel, *shadowXOffsetLabel;
- TQLabel *inactiveShadowYOffsetLabel, *shadowYOffsetLabel;
- TQLabel *inactiveShadowThicknessLabel, *shadowThicknessLabel;
-
- shadowPage = new TQVBox(tabWidget);
- shadowPage->setSpacing(KDialog::spacingHint());
- shadowPage->setMargin(KDialog::marginHint());
-
- cbWindowShadow = new TQCheckBox(
- i18n("&Draw a drop shadow under windows"), shadowPage);
- TQWhatsThis::add(cbWindowShadow,
- i18n("Enabling this checkbox will allow you to choose a kind of "
- "drop shadow to draw under each window."));
-
- activeShadowSettings = new TQGroupBox(1, Qt::Horizontal,
- i18n("Active Window Shadow"), shadowPage);
- inactiveShadowSettings = new TQGroupBox(1, Qt::Horizontal,
- i18n("Inactive Window Shadows"), shadowPage);
- whichShadowSettings = new TQGroupBox(3, Qt::Horizontal,
- i18n("Draw Shadow Under Normal Windows And..."), shadowPage);
-
- cbShadowDocks = new TQCheckBox(i18n("Docks and &panels"),
- whichShadowSettings);
- connect(cbShadowDocks, TQT_SIGNAL(toggled(bool)),
- TQT_SLOT(slotSelectionChanged()));
- cbShadowOverrides = new TQCheckBox(i18n("O&verride windows"),
- whichShadowSettings);
- connect(cbShadowOverrides, TQT_SIGNAL(toggled(bool)),
- TQT_SLOT(slotSelectionChanged()));
- cbShadowTopMenus = new TQCheckBox(i18n("&Top menu"),
- whichShadowSettings);
- connect(cbShadowTopMenus, TQT_SIGNAL(toggled(bool)),
- TQT_SLOT(slotSelectionChanged()));
- cbInactiveShadow = new TQCheckBox(
- i18n("Draw shadow under &inactive windows"), inactiveShadowSettings);
- connect(cbInactiveShadow, TQT_SIGNAL(toggled(bool)),
- TQT_SLOT(slotSelectionChanged()));
-
- shadowColourHBox = new TQHBox(activeShadowSettings);
- shadowColourHBox->setSpacing(KDialog::spacingHint());
- shadowColourLabel = new TQLabel(i18n("Colour:"), shadowColourHBox);
- shadowColourButton = new KColorButton(shadowColourHBox);
- connect(shadowColourButton, TQT_SIGNAL(changed(const TQColor &)), TQT_SLOT(slotSelectionChanged()));
-
- inactiveShadowColourHBox = new TQHBox(inactiveShadowSettings);
- inactiveShadowColourHBox->setSpacing(KDialog::spacingHint());
- inactiveShadowColourLabel = new TQLabel(i18n("Colour:"), inactiveShadowColourHBox);
- inactiveShadowColourButton = new KColorButton(inactiveShadowColourHBox);
- connect(inactiveShadowColourButton, TQT_SIGNAL(changed(const TQColor &)), TQT_SLOT(slotSelectionChanged()));
-
- shadowOpacityHBox = new TQHBox(activeShadowSettings);
- shadowOpacityHBox->setSpacing(KDialog::spacingHint());
- shadowOpacityLabel = new TQLabel(i18n("Maximum opacity:"), shadowOpacityHBox);
- shadowOpacitySlider = new TQSlider(1, 100, 10, 50, Qt::Horizontal,
- shadowOpacityHBox);
- shadowOpacitySlider->setTickmarks(TQSlider::Below);
- shadowOpacitySlider->setTickInterval(10);
- shadowOpacitySpinBox = new TQSpinBox(1, 100, 1, shadowOpacityHBox);
- shadowOpacitySpinBox->setSuffix(" %");
- connect(shadowOpacitySlider, TQT_SIGNAL(valueChanged(int)), shadowOpacitySpinBox,
- TQT_SLOT(setValue(int)));
- connect(shadowOpacitySpinBox, TQT_SIGNAL(valueChanged(int)), shadowOpacitySlider,
- TQT_SLOT(setValue(int)));
- connect(shadowOpacitySlider, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- inactiveShadowOpacityHBox = new TQHBox(inactiveShadowSettings);
- inactiveShadowOpacityHBox->setSpacing(KDialog::spacingHint());
- inactiveShadowOpacityLabel = new TQLabel(i18n("Maximum opacity:"),
- inactiveShadowOpacityHBox);
- inactiveShadowOpacitySlider = new TQSlider(1, 100, 10, 50, Qt::Horizontal,
- inactiveShadowOpacityHBox);
- inactiveShadowOpacitySlider->setTickmarks(TQSlider::Below);
- inactiveShadowOpacitySlider->setTickInterval(10);
- inactiveShadowOpacitySpinBox = new TQSpinBox(1, 100, 1,
- inactiveShadowOpacityHBox);
- inactiveShadowOpacitySpinBox->setSuffix(" %");
- connect(inactiveShadowOpacitySlider, TQT_SIGNAL(valueChanged(int)),
- inactiveShadowOpacitySpinBox,
- TQT_SLOT(setValue(int)));
- connect(inactiveShadowOpacitySpinBox, TQT_SIGNAL(valueChanged(int)),
- inactiveShadowOpacitySlider,
- TQT_SLOT(setValue(int)));
- connect(inactiveShadowOpacitySlider, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- shadowXOffsetHBox = new TQHBox(activeShadowSettings);
- shadowXOffsetHBox->setSpacing(KDialog::spacingHint());
- shadowXOffsetLabel = new TQLabel(
- i18n("Offset rightward (may be negative):"),
- shadowXOffsetHBox);
- shadowXOffsetSpinBox = new TQSpinBox(-1024, 1024, 1, shadowXOffsetHBox);
- shadowXOffsetSpinBox->setSuffix(i18n(" pixels"));
- connect(shadowXOffsetSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- inactiveShadowXOffsetHBox = new TQHBox(inactiveShadowSettings);
- inactiveShadowXOffsetHBox->setSpacing(KDialog::spacingHint());
- inactiveShadowXOffsetLabel = new TQLabel(
- i18n("Offset rightward (may be negative):"),
- inactiveShadowXOffsetHBox);
- inactiveShadowXOffsetSpinBox = new TQSpinBox(-1024, 1024, 1,
- inactiveShadowXOffsetHBox);
- inactiveShadowXOffsetSpinBox->setSuffix(i18n(" pixels"));
- connect(inactiveShadowXOffsetSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- shadowYOffsetHBox = new TQHBox(activeShadowSettings);
- shadowYOffsetHBox->setSpacing(KDialog::spacingHint());
- shadowYOffsetLabel = new TQLabel(
- i18n("Offset downward (may be negative):"),
- shadowYOffsetHBox);
- shadowYOffsetSpinBox = new TQSpinBox(-1024, 1024, 1, shadowYOffsetHBox);
- shadowYOffsetSpinBox->setSuffix(i18n(" pixels"));
- connect(shadowYOffsetSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- inactiveShadowYOffsetHBox = new TQHBox(inactiveShadowSettings);
- inactiveShadowYOffsetHBox->setSpacing(KDialog::spacingHint());
- inactiveShadowYOffsetLabel = new TQLabel(
- i18n("Offset downward (may be negative):"),
- inactiveShadowYOffsetHBox);
- inactiveShadowYOffsetSpinBox = new TQSpinBox(-1024, 1024, 1,
- inactiveShadowYOffsetHBox);
- inactiveShadowYOffsetSpinBox->setSuffix(i18n(" pixels"));
- connect(inactiveShadowYOffsetSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- shadowThicknessHBox = new TQHBox(activeShadowSettings);
- shadowThicknessHBox->setSpacing(KDialog::spacingHint());
- shadowThicknessLabel = new TQLabel(
- i18n("Thickness to either side of window:"),
- shadowThicknessHBox);
- shadowThicknessSpinBox = new TQSpinBox(1, 100, 1,
- shadowThicknessHBox);
- shadowThicknessSpinBox->setSuffix(i18n(" pixels"));
- connect(shadowThicknessSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- inactiveShadowThicknessHBox = new TQHBox(inactiveShadowSettings);
- inactiveShadowThicknessHBox->setSpacing(KDialog::spacingHint());
- inactiveShadowThicknessLabel = new TQLabel(
- i18n("Thickness to either side of window:"),
- inactiveShadowThicknessHBox);
- inactiveShadowThicknessSpinBox = new TQSpinBox(1, 100, 1,
- inactiveShadowThicknessHBox);
- inactiveShadowThicknessSpinBox->setSuffix(i18n(" pixels"));
- connect(inactiveShadowThicknessSpinBox, TQT_SIGNAL(valueChanged(int)),
- TQT_SLOT(slotSelectionChanged()));
-
- // Load all installed decorations into memory
- // Set up the decoration lists and other UI settings
- findDecorations();
- createDecorationList();
- readConfig( &twinConfig );
- resetPlugin( &twinConfig );
-
- tabWidget->insertTab( pluginPage, i18n("&Window Decoration") );
- tabWidget->insertTab( buttonPage, i18n("&Buttons") );
- tabWidget->insertTab( shadowPage, i18n("&Shadows") );
-
- connect( buttonPositionWidget, TQT_SIGNAL(changed()), this, TQT_SLOT(slotButtonsChanged()) ); // update preview etc.
- connect( buttonPositionWidget, TQT_SIGNAL(changed()), this, TQT_SLOT(slotSelectionChanged()) ); // emit changed()...
- connect( decorationList, TQT_SIGNAL(activated(const TQString&)), TQT_SLOT(slotSelectionChanged()) );
- connect( decorationList, TQT_SIGNAL(activated(const TQString&)),
- TQT_SLOT(slotChangeDecoration(const TQString&)) );
- connect( cbUseCustomButtonPositions, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
- connect(cbUseCustomButtonPositions, TQT_SIGNAL(toggled(bool)), buttonPositionWidget, TQT_SLOT(setEnabled(bool)));
- connect(cbUseCustomButtonPositions, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotButtonsChanged()) );
- connect(cbWindowShadow, TQT_SIGNAL(toggled(bool)), activeShadowSettings, TQT_SLOT(setEnabled(bool)));
- connect(cbWindowShadow, TQT_SIGNAL(toggled(bool)), inactiveShadowSettings, TQT_SLOT(setEnabled(bool)));
- connect(cbWindowShadow, TQT_SIGNAL(toggled(bool)), whichShadowSettings, TQT_SLOT(setEnabled(bool)));
-
- connect( cbShowToolTips, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
- connect( cbWindowShadow, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
- connect( cBorder, TQT_SIGNAL( activated( int )), TQT_SLOT( slotBorderChanged( int )));
-// connect( cbUseMiniWindows, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
-
- // Allow twin dcop signal to update our selection list
- connectDCOPSignal("twin", 0, "dcopResetAllClients()", "dcopUpdateClientList()", false);
-
- KAboutData *about =
- new KAboutData(I18N_NOOP("kcmtwindecoration"),
- I18N_NOOP("Window Decoration Control Module"),
- 0, 0, KAboutData::License_GPL,
- I18N_NOOP("(c) 2001 Karol Szwed"));
- about->addAuthor("Karol Szwed", 0, "gallium@kde.org");
- setAboutData(about);
-}
-
-
-KWinDecorationModule::~KWinDecorationModule()
-{
- delete preview; // needs to be destroyed before plugins
- delete plugins;
-}
-
-
-// Find all theme desktop files in all 'data' dirs owned by twin.
-// And insert these into a DecorationInfo structure
-void KWinDecorationModule::findDecorations()
-{
- TQStringList dirList = KGlobal::dirs()->findDirs("data", "twin");
- TQStringList::ConstIterator it;
-
- for (it = dirList.begin(); it != dirList.end(); it++)
- {
- TQDir d(*it);
- if (d.exists())
- for (TQFileInfoListIterator it(*d.entryInfoList()); it.current(); ++it)
- {
- TQString filename(it.current()->absFilePath());
- if (KDesktopFile::isDesktopFile(filename))
- {
- KDesktopFile desktopFile(filename);
- TQString libName = desktopFile.readEntry("X-KDE-Library");
-
- if (!libName.isEmpty() && libName.startsWith( "twin3_" ))
- {
- DecorationInfo di;
- di.name = desktopFile.readName();
- di.libraryName = libName;
- decorations.append( di );
- }
- }
- }
- }
-}
-
-
-// Fills the decorationList with a list of available twin decorations
-void KWinDecorationModule::createDecorationList()
-{
- TQValueList<DecorationInfo>::ConstIterator it;
-
- // Sync with twin hardcoded KDE2 style which has no desktop item
- TQStringList decorationNames;
- decorationNames.append( i18n("KDE 2") );
- for (it = decorations.begin(); it != decorations.end(); ++it)
- {
- decorationNames.append((*it).name);
- }
- decorationNames.sort();
- decorationList->insertStringList(decorationNames);
-}
-
-
-// Reset the decoration plugin to what the user just selected
-void KWinDecorationModule::slotChangeDecoration( const TQString & text)
-{
- KConfig twinConfig("twinrc");
- twinConfig.setGroup("Style");
-
- // Let the user see config options for the currently selected decoration
- resetPlugin( &twinConfig, text );
-}
-
-
-// This is the selection handler setting
-void KWinDecorationModule::slotSelectionChanged()
-{
- emit KCModule::changed(true);
-}
-
-static const char* const border_names[ KDecorationDefines::BordersCount ] =
- {
- I18N_NOOP( "Tiny" ),
- I18N_NOOP( "Normal" ),
- I18N_NOOP( "Large" ),
- I18N_NOOP( "Very Large" ),
- I18N_NOOP( "Huge" ),
- I18N_NOOP( "Very Huge" ),
- I18N_NOOP( "Oversized" )
- };
-
-int KWinDecorationModule::borderSizeToIndex( BorderSize size, TQValueList< BorderSize > sizes )
-{
- int pos = 0;
- for( TQValueList< BorderSize >::ConstIterator it = sizes.begin();
- it != sizes.end();
- ++it, ++pos )
- if( size <= *it )
- break;
- return pos;
-}
-
-KDecorationDefines::BorderSize KWinDecorationModule::indexToBorderSize( int index,
- TQValueList< BorderSize > sizes )
-{
- TQValueList< BorderSize >::ConstIterator it = sizes.begin();
- for(;
- it != sizes.end();
- ++it, --index )
- if( index == 0 )
- break;
- return *it;
-}
-
-void KWinDecorationModule::slotBorderChanged( int size )
-{
- if( lBorder->isHidden())
- return;
- emit KCModule::changed( true );
- TQValueList< BorderSize > sizes;
- if( plugins->factory() != NULL )
- sizes = plugins->factory()->borderSizes();
- assert( sizes.count() >= 2 );
- border_size = indexToBorderSize( size, sizes );
-
- // update preview
- preview->setTempBorderSize(plugins, border_size);
-}
-
-void KWinDecorationModule::slotButtonsChanged()
-{
- // update preview
- preview->setTempButtons(plugins, cbUseCustomButtonPositions->isChecked(), buttonPositionWidget->buttonsLeft(), buttonPositionWidget->buttonsRight() );
-}
-
-TQString KWinDecorationModule::decorationName( TQString& libName )
-{
- TQString decoName;
-
- TQValueList<DecorationInfo>::Iterator it;
- for( it = decorations.begin(); it != decorations.end(); ++it )
- if ( (*it).libraryName == libName )
- {
- decoName = (*it).name;
- break;
- }
-
- return decoName;
-}
-
-
-TQString KWinDecorationModule::decorationLibName( const TQString& name )
-{
- TQString libName;
-
- // Find the corresponding library name to that of
- // the current plugin name
- TQValueList<DecorationInfo>::Iterator it;
- for( it = decorations.begin(); it != decorations.end(); ++it )
- if ( (*it).name == name )
- {
- libName = (*it).libraryName;
- break;
- }
-
- if (libName.isEmpty())
- libName = "twin_default"; // KDE 2
-
- return libName;
-}
-
-
-// Loads/unloads and inserts the decoration config plugin into the
-// pluginConfigWidget, allowing for dynamic configuration of decorations
-void KWinDecorationModule::resetPlugin( KConfig* conf, const TQString& currentDecoName )
-{
- // Config names are "twin_icewm_config"
- // for "twin3_icewm" twin client
-
- TQString oldName = styleToConfigLib( oldLibraryName );
-
- TQString currentName;
- if (!currentDecoName.isEmpty())
- currentName = decorationLibName( currentDecoName ); // Use what the user selected
- else
- currentName = currentLibraryName; // Use what was read from readConfig()
-
- if( plugins->loadPlugin( currentName )
- && preview->recreateDecoration( plugins ))
- preview->enablePreview();
- else
- preview->disablePreview();
- plugins->destroyPreviousPlugin();
-
- checkSupportedBorderSizes();
-
- // inform buttonPositionWidget about the new factory...
- buttonPositionWidget->setDecorationFactory(plugins->factory() );
-
- currentName = styleToConfigLib( currentName );
-
- // Delete old plugin widget if it exists
- delete pluginObject;
- pluginObject = 0;
-
- // Use klibloader for library manipulation
- KLibLoader* loader = KLibLoader::self();
-
- // Free the old library if possible
- if (!oldLibraryName.isNull())
- loader->unloadLibrary( TQFile::encodeName(oldName) );
-
- KLibrary* library = loader->library( TQFile::encodeName(currentName) );
- if (library != NULL)
- {
- void* alloc_ptr = library->symbol("allocate_config");
-
- if (alloc_ptr != NULL)
- {
- allocatePlugin = (TQObject* (*)(KConfig* conf, TQWidget* parent))alloc_ptr;
- pluginObject = (TQObject*)(allocatePlugin( conf, pluginConfigWidget ));
-
- // connect required signals and slots together...
- connect( pluginObject, TQT_SIGNAL(changed()), this, TQT_SLOT(slotSelectionChanged()) );
- connect( this, TQT_SIGNAL(pluginLoad(KConfig*)), pluginObject, TQT_SLOT(load(KConfig*)) );
- connect( this, TQT_SIGNAL(pluginSave(KConfig*)), pluginObject, TQT_SLOT(save(KConfig*)) );
- connect( this, TQT_SIGNAL(pluginDefaults()), pluginObject, TQT_SLOT(defaults()) );
- pluginConfigWidget->show();
- return;
- }
- }
-
- pluginConfigWidget->hide();
-}
-
-
-// Reads the twin config settings, and sets all UI controls to those settings
-// Updating the config plugin if required
-void KWinDecorationModule::readConfig( KConfig* conf )
-{
- // General tab
- // ============
- cbShowToolTips->setChecked( conf->readBoolEntry("ShowToolTips", true ));
-// cbUseMiniWindows->setChecked( conf->readBoolEntry("MiniWindowBorders", false));
-
- // Find the corresponding decoration name to that of
- // the current plugin library name
-
- oldLibraryName = currentLibraryName;
- currentLibraryName = conf->readEntry("PluginLib",
- ((TQPixmap::defaultDepth() > 8) ? "twin_plastik" : "twin_quartz"));
- TQString decoName = decorationName( currentLibraryName );
-
- // If we are using the "default" kde client, use the "default" entry.
- if (decoName.isEmpty())
- decoName = i18n("KDE 2");
-
- int numDecos = decorationList->count();
- for (int i = 0; i < numDecos; ++i)
- {
- if (decorationList->text(i) == decoName)
- {
- decorationList->setCurrentItem(i);
- break;
- }
- }
-
- // Buttons tab
- // ============
- bool customPositions = conf->readBoolEntry("CustomButtonPositions", false);
- cbUseCustomButtonPositions->setChecked( customPositions );
- buttonPositionWidget->setEnabled( customPositions );
- // Menu and onAllDesktops buttons are default on LHS
- buttonPositionWidget->setButtonsLeft( conf->readEntry("ButtonsOnLeft", "MS") );
- // Help, Minimize, Maximize and Close are default on RHS
- buttonPositionWidget->setButtonsRight( conf->readEntry("ButtonsOnRight", "HIAX") );
-
- int bsize = conf->readNumEntry( "BorderSize", BorderNormal );
- if( bsize >= BorderTiny && bsize < BordersCount )
- border_size = static_cast< BorderSize >( bsize );
- else
- border_size = BorderNormal;
- checkSupportedBorderSizes();
-
- // Shadows tab
- // ===========
- bool shadowEnabled = conf->readBoolEntry("ShadowEnabled", false);
- cbWindowShadow->setChecked(shadowEnabled);
- activeShadowSettings->setEnabled(shadowEnabled);
- inactiveShadowSettings->setEnabled(shadowEnabled);
- whichShadowSettings->setEnabled(shadowEnabled);
- shadowColourButton->setColor(conf->readColorEntry("ShadowColour", &TQt::black));
- shadowOpacitySlider->setValue((int)ceil(conf->readDoubleNumEntry("ShadowOpacity", 0.70) * 100));
- shadowXOffsetSpinBox->setValue(conf->readNumEntry("ShadowXOffset", 0));
- shadowYOffsetSpinBox->setValue(conf->readNumEntry("ShadowYOffset", 10));
- cbShadowDocks->setChecked(conf->readBoolEntry("ShadowDocks", false));
- cbShadowOverrides->setChecked(conf->readBoolEntry("ShadowOverrides", false));
- cbShadowTopMenus->setChecked(conf->readBoolEntry("ShadowTopMenus", false));
- shadowThicknessSpinBox->setValue(conf->readNumEntry("ShadowThickness", 10));
- cbInactiveShadow->setChecked(conf->readBoolEntry("InactiveShadowEnabled", false));
- inactiveShadowColourButton->setColor(conf->readColorEntry("InactiveShadowColour", &TQt::black));
- inactiveShadowOpacitySlider->setValue((int)ceil(conf->readDoubleNumEntry("InactiveShadowOpacity", 0.70) * 100));
- inactiveShadowXOffsetSpinBox->setValue(conf->readNumEntry("InactiveShadowXOffset", 0));
- inactiveShadowYOffsetSpinBox->setValue(conf->readNumEntry("InactiveShadowYOffset", 5));
- inactiveShadowThicknessSpinBox->setValue(conf->readNumEntry("InactiveShadowThickness", 5));
-
- emit KCModule::changed(false);
-}
-
-
-// Writes the selected user configuration to the twin config file
-void KWinDecorationModule::writeConfig( KConfig* conf )
-{
- TQString name = decorationList->currentText();
- TQString libName = decorationLibName( name );
-
- KConfig twinConfig("twinrc");
- twinConfig.setGroup("Style");
-
- // General settings
- conf->writeEntry("PluginLib", libName);
- conf->writeEntry("CustomButtonPositions", cbUseCustomButtonPositions->isChecked());
- conf->writeEntry("ShowToolTips", cbShowToolTips->isChecked());
-// conf->writeEntry("MiniWindowBorders", cbUseMiniWindows->isChecked());
-
- // Button settings
- conf->writeEntry("ButtonsOnLeft", buttonPositionWidget->buttonsLeft() );
- conf->writeEntry("ButtonsOnRight", buttonPositionWidget->buttonsRight() );
- conf->writeEntry("BorderSize", border_size );
-
- // Shadow settings
- conf->writeEntry("ShadowEnabled", cbWindowShadow->isChecked());
- conf->writeEntry("ShadowColour", shadowColourButton->color());
- conf->writeEntry("ShadowOpacity", shadowOpacitySlider->value() / 100.0);
- conf->writeEntry("ShadowXOffset", shadowXOffsetSpinBox->value());
- conf->writeEntry("ShadowYOffset", shadowYOffsetSpinBox->value());
- conf->writeEntry("ShadowThickness", shadowThicknessSpinBox->value());
- conf->writeEntry("ShadowDocks", cbShadowDocks->isChecked());
- conf->writeEntry("ShadowOverrides", cbShadowOverrides->isChecked());
- conf->writeEntry("ShadowTopMenus", cbShadowTopMenus->isChecked());
- conf->writeEntry("InactiveShadowEnabled", cbInactiveShadow->isChecked());
- conf->writeEntry("InactiveShadowColour", inactiveShadowColourButton->color());
- conf->writeEntry("InactiveShadowOpacity",
- inactiveShadowOpacitySlider->value() / 100.0);
- conf->writeEntry("InactiveShadowXOffset",
- inactiveShadowXOffsetSpinBox->value());
- conf->writeEntry("InactiveShadowYOffset",
- inactiveShadowYOffsetSpinBox->value());
- conf->writeEntry("InactiveShadowThickness",
- inactiveShadowThicknessSpinBox->value());
-
- oldLibraryName = currentLibraryName;
- currentLibraryName = libName;
-
- // We saved, so tell kcmodule that there have been no new user changes made.
- emit KCModule::changed(false);
-}
-
-
-void KWinDecorationModule::dcopUpdateClientList()
-{
- // Changes the current active ListBox item, and
- // Loads a new plugin configuration tab if required.
- KConfig twinConfig("twinrc");
- twinConfig.setGroup("Style");
-
- readConfig( &twinConfig );
- resetPlugin( &twinConfig );
-}
-
-
-// Virutal functions required by KCModule
-void KWinDecorationModule::load()
-{
- KConfig twinConfig("twinrc");
- twinConfig.setGroup("Style");
-
- // Reset by re-reading the config
- readConfig( &twinConfig );
- resetPlugin( &twinConfig );
-}
-
-
-void KWinDecorationModule::save()
-{
- KConfig twinConfig("twinrc");
- twinConfig.setGroup("Style");
-
- writeConfig( &twinConfig );
- emit pluginSave( &twinConfig );
-
- twinConfig.sync();
- resetKWin();
- // resetPlugin() will get called via the above DCOP function
-}
-
-
-void KWinDecorationModule::defaults()
-{
- // Set the KDE defaults
- cbUseCustomButtonPositions->setChecked( false );
- buttonPositionWidget->setEnabled( false );
- cbShowToolTips->setChecked( true );
- cbWindowShadow->setChecked( false );
-// cbUseMiniWindows->setChecked( false);
-// Don't set default for now
-// decorationList->setSelected(
-// decorationList->findItem( i18n("KDE 2") ), true ); // KDE classic client
-
- buttonPositionWidget->setButtonsLeft("MS");
- buttonPositionWidget->setButtonsRight("HIAX");
-
- border_size = BorderNormal;
- checkSupportedBorderSizes();
-
- shadowColourButton->setColor(Qt::black);
- shadowOpacitySlider->setValue(70);
- shadowXOffsetSpinBox->setValue(0);
- shadowYOffsetSpinBox->setValue(10);
- shadowThicknessSpinBox->setValue(10);
- cbShadowDocks->setChecked(false);
- cbShadowOverrides->setChecked(false);
- cbShadowTopMenus->setChecked(false);
- cbInactiveShadow->setChecked(false);
- inactiveShadowColourButton->setColor(Qt::black);
- inactiveShadowOpacitySlider->setValue(70);
- inactiveShadowXOffsetSpinBox->setValue(0);
- inactiveShadowYOffsetSpinBox->setValue(5);
- inactiveShadowThicknessSpinBox->setValue(5);
-
- // Set plugin defaults
- emit pluginDefaults();
-}
-
-void KWinDecorationModule::checkSupportedBorderSizes()
-{
- TQValueList< BorderSize > sizes;
- if( plugins->factory() != NULL )
- sizes = plugins->factory()->borderSizes();
- if( sizes.count() < 2 ) {
- lBorder->hide();
- cBorder->hide();
- } else {
- cBorder->clear();
- for (TQValueList<BorderSize>::const_iterator it = sizes.begin(); it != sizes.end(); ++it) {
- BorderSize size = *it;
- cBorder->insertItem(i18n(border_names[size]), borderSizeToIndex(size,sizes) );
- }
- int pos = borderSizeToIndex( border_size, sizes );
- lBorder->show();
- cBorder->show();
- cBorder->setCurrentItem(pos);
- slotBorderChanged( pos );
- }
-}
-
-TQString KWinDecorationModule::styleToConfigLib( TQString& styleLib )
-{
- if( styleLib.startsWith( "twin3_" ))
- return "twin_" + styleLib.mid( 6 ) + "_config";
- else
- return styleLib + "_config";
-}
-
-TQString KWinDecorationModule::quickHelp() const
-{
- return i18n( "<h1>Window Manager Decoration</h1>"
- "<p>This module allows you to choose the window border decorations, "
- "as well as titlebar button positions and custom decoration options.</p>"
- "To choose a theme for your window decoration click on its name and apply your choice by clicking the \"Apply\" button below."
- " If you do not want to apply your choice you can click the \"Reset\" button to discard your changes."
- "<p>You can configure each theme in the \"Configure [...]\" tab. There are different options specific for each theme.</p>"
- "<p>In \"General Options (if available)\" you can activate the \"Buttons\" tab by checking the \"Use custom titlebar button positions\" box."
- " In the \"Buttons\" tab you can change the positions of the buttons to your liking.</p>" );
-}
-
-
-void KWinDecorationModule::resetKWin()
-{
- bool ok = kapp->dcopClient()->send("twin*", "KWinInterface",
- "reconfigure()", TQByteArray());
- if (!ok)
- kdDebug() << "kcmtwindecoration: Could not reconfigure twin" << endl;
-}
-
-#include "twindecoration.moc"
-// vim: ts=4
-// kate: space-indent off; tab-width 4;
-
diff --git a/kwin/kcmkwin/kwindecoration/kwindecoration.desktop b/kwin/kcmkwin/kwindecoration/kwindecoration.desktop
deleted file mode 100644
index dc1e55ef6..000000000
--- a/kwin/kcmkwin/kwindecoration/kwindecoration.desktop
+++ /dev/null
@@ -1,231 +0,0 @@
-[Desktop Entry]
-Exec=kcmshell twindecoration
-Icon=kcmkwm
-Type=Application
-DocPath=kcontrol/twindecoration/index.html
-
-X-KDE-ModuleType=Library
-X-KDE-Library=twindecoration
-X-KDE-FactoryName=twindecoration
-
-Name=Window Decorations
-Name[af]=Venster Versierings
-Name[ar]=زخرفة النافذة
-Name[be]=Дэкарацыі вокнаў
-Name[bg]=Декорация
-Name[bn]=উইণ্ডো সাজসজ্জা
-Name[br]=Kinkladur ar prenester
-Name[bs]=Ukrasi prozora
-Name[ca]=Decoració de les finestres
-Name[cs]=Dekorace oken
-Name[csb]=Dekòracëje òkna
-Name[cy]=Addurniadau Ffenestr
-Name[da]=Vinduesdekorationer
-Name[de]=Fensterdekorationen
-Name[el]=Διακοσμήσεις παραθύρων
-Name[eo]=Fenestro-ornamaĵo
-Name[es]=Decoración de ventanas
-Name[et]=Akna dekoratsioonid
-Name[eu]=Leihoaren dekorazioak
-Name[fa]=تزئینات پنجره
-Name[fi]=Ikkunoiden kehykset
-Name[fr]=Décoration des fenêtres
-Name[fy]=Finsterdekoraasjes
-Name[gl]=Decoracións das Fiestras
-Name[he]=קישוטי חלונות
-Name[hi]=विंडो सजावट
-Name[hr]=Ukrasi prozora
-Name[hu]=Ablakkeret-stílus
-Name[id]=Dekorasi Jendela
-Name[is]=Gluggaskreytingar
-Name[it]=Decorazioni finestra
-Name[ja]=ウィンドウ装飾
-Name[ka]=ფანჯრის დეკორაცია
-Name[kk]=Терезе безендіруі
-Name[km]=ការ​តុបតែង​បង្អួច
-Name[ko]=창 종료 도구
-Name[lo]=ການຕົກແຕ່ງຫນ້າຕ່າງ
-Name[lt]=Langų išvaizda
-Name[lv]=Loga Dekorācijas
-Name[mk]=Декорации на прозорците
-Name[mn]=Цонхны засал
-Name[mt]=Dekorazzjoni tal-Windows
-Name[nb]=Vinduspynt
-Name[nds]=Finsterdekoratschoon
-Name[ne]=सञ्झ्याल सजावट
-Name[nl]=Vensterdecoraties
-Name[nn]=Vindaugsdekorasjonar
-Name[nso]=Dikgabiso tsa Window
-Name[pa]=ਝਰੋਖਾ ਸਜਾਵਟ
-Name[pl]=Dekoracje okna
-Name[pt]=Decorações das Janelas
-Name[pt_BR]=Decorações da Janela
-Name[ro]=Decorări
-Name[ru]=Декорации окон
-Name[rw]=Imitako y'Idirishya
-Name[se]=Lásehearvvat
-Name[sk]=Dekorácie okien
-Name[sl]=Okraski oken
-Name[sr]=Декорација прозора
-Name[sr@Latn]=Dekoracija prozora
-Name[ss]=Kuhlotjiswa kweliwindi
-Name[sv]=Fönsterdekoration
-Name[ta]=சாளர அலங்கரிப்புகள்
-Name[tg]=Декоратсияҳои тиреза
-Name[th]=ตกแต่งหน้าต่าง
-Name[tr]=Pencere Dekorasyonları
-Name[tt]=Täräzä Bizäge
-Name[uk]=Обрамлення вікон
-Name[uz]=Oynaning bezaklari
-Name[uz@cyrillic]=Ойнанинг безаклари
-Name[ven]=U khavhisedza ha windo
-Name[vi]=Trang trí Cửa sổ
-Name[wa]=Gåliotaedjes des purneas
-Name[xh]=Izihombiso zeWindow
-Name[zh_CN]=窗口装饰
-Name[zh_TW]=視窗裝飾
-Name[zu]=Imihlobiso ye-window
-
-Comment=Configure the look and feel of window titles
-Comment[af]=Stel die uitdrukking en gevoek van venster titels op
-Comment[ar]=إعداد شكل و ملمس عنوان النافذة
-Comment[be]=Настаўленні вонкавага выгляду загалоўкаў вокнаў
-Comment[bg]=Настройване външния вид на прозорците
-Comment[bn]=উইণ্ডো শিরোনামের চেহারা কনফিগার করুন
-Comment[br]=Kefluniañ neuz ha feson titloù ar prenester
-Comment[bs]=Ovdje možete podesiti izgled i ponašanje naslova prozora
-Comment[ca]=Configura l'aspecte i efecte dels títols de la finestra
-Comment[cs]=Nastavení vzhledu a dekorací oken
-Comment[csb]=Kònfigùracëjô wëzdrzatkù ë ùchòwaniô titlowi lëstwë òknów
-Comment[cy]=Ffurfweddu golwg a theimlad teitlau ffenestri
-Comment[da]=Indstil udseendet af vinduestitler
-Comment[de]=Das Erscheinungsbild von Fenstertiteln festlegen
-Comment[el]=Ρυθμίστε την εμφάνιση και την αίσθηση των τίτλων παραθύρου
-Comment[eo]=Agordu la fenestrajn titolojn
-Comment[es]=Configuración del aspecto y comportamiento de los títulos de las ventanas
-Comment[et]=Akna tiitliribade välimuse ja tunnetuse seadistamine
-Comment[eu]=Konfiguratu leihoaren izenburuen itxura
-Comment[fa]=پیکربندی ظاهر و احساس عنوان پنجره‌ها
-Comment[fi]=Muokkaa ikkunoiden kehysten ulkonäköä
-Comment[fr]=Configuration de l'apparence du titre des fenêtres
-Comment[fy]=Hjir kinne jo it uterlik en gedrach fan finstertitels ynstelle
-Comment[gl]=Configurar a apariencia dos títulos das fiestras
-Comment[he]=שינוי הגדרות המראה והתחושה של כותרות חלונות
-Comment[hi]=विंडो शीर्षकों के रूप आकार को कॉन्फ़िगर करें
-Comment[hr]=Konfiguriranje izgleda naslova prozora
-Comment[hu]=Az ablakok címsorának megjelenési beállításai
-Comment[is]=Stilla viðmót gluggatitla
-Comment[it]=Configura l'aspetto e il comportamento dei titoli delle finestre
-Comment[ja]=ウィンドウのタイトルバーの外観を設定
-Comment[ka]=ფანჯრის სათაურის იერსახის კონფიგურაცია
-Comment[kk]=Терезе айдарының безендіруін баптау
-Comment[km]=កំណត់​រចនាសម្ព័ន្ធ​រូបរាង​របស់​ចំណងជើង​បង្អួច
-Comment[ko]=창 제목 표시줄의 모습과 느낌 설정
-Comment[lo]=ປັດແຕ່ງລັກສະນະແລະຄວາມຮູ້ສືກໃນການໃຊ້ງານຂອງບາວເຊີ Konqueror
-Comment[lt]=Konfigūruoti langų antraščių išvaizdą ir elgseną
-Comment[lv]=Konfigurē loga virsrakstu izskatu un izturēšanos
-Comment[mk]=Конфигурирајте го изгледот и чувството на насловите на прозорците
-Comment[mn]=Цонхны толгойн харагдалтыг тохируулах
-Comment[mt]=Ikkonfigura d-dehra u l-użu tat-titli tal-windows
-Comment[nb]=Her kan du sette opp hvordan nettleseren Konqueror skal virke og se ut
-Comment[nds]=Dat Utsehn vun de Finstertiteln instellen
-Comment[ne]=सञ्झ्याल शीर्षकहरूको हेराइ र बुझाइ कन्फिगर गर्नुहोस्
-Comment[nl]=Hier kunt u het uiterlijk en gedrag van venstertitels instellen
-Comment[nn]=Set opp utsjånaden på vindaugstitlar
-Comment[nso]=Beakanya pogego le maikutlo a maina a window
-Comment[pa]=ਝਰੋਖਾ ਸਿਰਲੇਖਾਂ ਦੇ ਰੰਗ-ਰੂਪ ਦੀ ਸੰਰਚਨਾ
-Comment[pl]=Konfiguracja wyglądu i zachowania belek tytułowych okien
-Comment[pt]=Configuração da aparência e comportamento dos títulos das janelas
-Comment[pt_BR]=Configura a aparência dos títulos de janelas
-Comment[ro]=Configurează aspectul titlului ferestrelor
-Comment[ru]=Настройка внешнего вида заголовков окон
-Comment[rw]=Kuboneza imboneko n'ukumva kw'imitwe y'idirishya
-Comment[se]=Heivet lásenamahusaid fárdda
-Comment[sk]=Nastavenie vzhľadu titulkov okien
-Comment[sl]=Nastavite videz in delovanje naslovnih vrstic okna.
-Comment[sr]=Подешавање изгледа и осећаја насловних линија прозора
-Comment[sr@Latn]=Podešavanje izgleda i osećaja naslovnih linija prozora
-Comment[sv]=Anpassa namnlisternas utseende och känsla
-Comment[ta]=சாளரம் மற்றும் தலைப்பின் காட்சிவகையை மாற்று
-Comment[tg]=Танзими намо ва ҳиси унвони тиреза
-Comment[th]=ปรับแต่งลักษณะรูปแบบและสัมผัสสึกของแถบหัวเรื่องหน้าต่าง
-Comment[tr]=Pencere başlıklarını görünümlerini yapılandır
-Comment[tt]=Täräzä başlığınıñ küreneşen caylaw
-Comment[uk]=Налаштування вигляду та поведінки заголовків вікон
-Comment[uz]=Oyna sarlavhasining tashqi koʻrinishini moslash
-Comment[uz@cyrillic]=Ойна сарлавҳасининг ташқи кўринишини мослаш
-Comment[ven]=Dzudzanyani mbonalelo na zwipfi zwa buronza ya inithanete ino pfi Konqueror
-Comment[vi]=Cấu hình cảm nhận cho tên cửa sổ
-Comment[wa]=Apontyî li rivnance eyet l' dujhance des tites des purneas
-Comment[xh]=Qwalasela inkangeleko nemvakalelo yezihloko zeWindow
-Comment[zh_CN]=配置窗口标题的观感
-Comment[zh_TW]=設定視窗標題列的外觀與感覺
-Comment[zu]=Hlanganisela ukubona kanye nokuzwa kwezihloko zama-window
-
-Keywords=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
-Keywords[ar]=twin,نافذة,مسيير,الحافة,الشكل,سمة,مظهر,ملمس,تصميم,زر,معامل,مدبر,kwm,زخرفات
-Keywords[az]=twin,pəncərə,idarəçi,kənar,tərz,örtü,görünüş,toxuma,yer,düymə,applet,kənar,kwm,dekorasiya,bəzək
-Keywords[be]=Акно,Кіраўнік,Мяжа,Стыль,Тэма,Вонкавы выгляд,Кнопкі,Апрацоўшчык,Край,Дэкарацыя,twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
-Keywords[bg]=прозорец, декорация, заглавие, бутони, меню, twin, window, manager, border, style, theme, look, feel, layout, button, handle, edge, kwm, decoration
-Keywords[ca]=twin,finestra,gestor,vora,estil,tema,aspecte,comportament,disposició,botó,nansa,marges,kwm,decoració
-Keywords[cs]=twin,okno,správce,okraj,styl,motiv,vzhled,rozvržení,tlačítko,úchytka,hrana,kwm,dekorace
-Keywords[csb]=twin,òkno,menedżer,zberk,sztél,téma,wëzdrzatk,ùchòwanié,ùstôw,knąpa,ùchwët,rańt,kwm,dekòracëjô
-Keywords[cy]=twin,ffenestr,trefnydd,ymyl,arddull,thema,golwg,teimlad,haenlun,botwm,carn,kwm,addurniad
-Keywords[da]=twin,vindue,håndtering,kant,stil,tema,udseende,fornemmelse,layout,knap,håndtag,kant,kwm,dekoration
-Keywords[de]=KWin,Kwm,Fenster,Manager,Rahmen,Design,Stile,Themes,Optik,Erscheinungsbild,Layout,Knöpfe,Ränder,Dekorationen
-Keywords[el]=twin,παράθυρο,διαχειριστής,περίγραμμα,στυλ,θέμα,εμφάνιση,αίσθηση,διάταξη,κουμπί,χειρισμός,άκρο,kwm,διακόσμηση
-Keywords[eo]=twin,fenestro,administrilo,rando,stilo,etoso,aspekto,konduto,aranĝo,butono,eĝo,kwm,ornamo
-Keywords[es]=twin,ventana,gestor,borde,estilo,tema,aspecto,comportamiento,disposición,botón,asa,esquina,kwm,decoración
-Keywords[et]=twin,aken,haldur,piire,stiil,teema,välimus,kasutamine,nupud,serv,kwm,dekoratsioon
-Keywords[eu]=twin,leihoa,kudeatzailea,ertza,estiloa,gaia,itxura,antolaketa,botoia, maneiatzailea,ertzea,kwm,dekorazioa
-Keywords[fa]=twin، پنجره، مدیر، لبه، سبک، چهره، ظاهر، احساس، طرح‌بندی، دکمه، گرداندن، لبه، kwm، تزئین
-Keywords[fi]=twin,ikkuna,ikkunaohjelma,ikkunoinnin hallintaohjelma,tausta,tyyli,teema,ulkonäkö,tuntuma,ulkoasu,painike,kahva,kulma,kwm,kehys
-Keywords[fr]=twin,fenêtre,gestionnaire,bordure,style,thème,apparence,ergonomie,disposition,bouton,poignée,bord,kwm,décoration
-Keywords[fy]=twin,window,manager,rand,stijl,theme,tema,look,uiterlijk,gedrag,feel,layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer,finster,râne,kader,styltema,uterlik,gedrach,finsterbehear
-Keywords[ga]=twin,fuinneog,bainisteoir,imlíne,stíl,téama,leagan amach,cnaipe,hanla,ciumhais,kwm,maisiúchán
-Keywords[gl]=twin,fiestra,xestor,beira,estilo,tema,apariencia,formato,botón,xestión,esquina,kwm,decoración
-Keywords[he]=מנהל חלונות,חלונות,מנהל,גבול,מסגרת,סגנון,ערכה,ערכת נושא,מראה,תחושה,פריסה,תצוגה,כפתור,ידית,קצה,קישוט, twin,window,manager,border,style,theme,look,feel,layout,button,handle, edge,kwm,decoration
-Keywords[hi]=के-विन,विंडो,प्रबंधक,बार्डर,शैली,प्रसंग,रूप,अनुभव,ले-आउट,बटन,हैंडल,किनारा,केडबल्यूएम,सजावट
-Keywords[hr]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,upravljanje,obrub,stil,tema,izgled,raspored,gumb,rukovanje,rub,ukras
-Keywords[hu]=KWin,ablak,kezelő,szegély,stílus,téma,kinézet,megjelenés,elrendezés,nyomógomb,fogantyú,perem,kwm,ablakstílus
-Keywords[is]=twin,gluggi,gluggastjóri,gluggar,kantar,rammi,skreyting,þema,stíll,útlit,takki,kwm,skraut
-Keywords[it]=twin,finestra,window manager,bordo,stile,tema,aspetto,pulsante,maniglia,bordo,kwm,decorazione
-Keywords[ja]=twin,ウィンドウ,マネージャ,枠,スタイル,テーマ,ルック,外観,レイアウト,ボタン,ハンドル,エッジ,kwm,装飾
-Keywords[km]=twin,បង្អួច,កម្មវិធី​គ្រប់គ្រង,ស៊ុម,រចនាប័ទ្ម,ស្បែក,មុខងារ,ប្លង់,ប៊ូតុង,ការ​ប្រើ,គែម,kwm,ការ​តុបតែង
-Keywords[lt]=twin,window,manager,border,style,theme,look,feel,layout,buttons,handle,edge,kwm,decoration,langas,tvarkyklė,rėmelis,stilius,tema,žiūrėti,jausti,išdėstymas,mygtukai,kraštas,dekoracija
-Keywords[lv]=twin, logs, menedžeris, rāmis, stils, tēma, skats, gars, izkārtojums, poga, rokturis, stūris, kwm, dekorācija
-Keywords[mk]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозорец,менаџер,граница,стил,тема,изглед,чувство,распоред,копче,рачка,раб,декорација
-Keywords[mn]=KWin,Kwm,Цонх,Manager,Хүрээ,Design,Хэлбэр,Загвар, Optik,Харагдалт,Layout,Товч,Өнцөг,Засал
-Keywords[mt]=twin, window, manager, border, bordura, stil, tema, apparenza, style, theme, look, feel, layout, tqassim, użu, button, handle, edge, kwm, decoration
-Keywords[nb]=twin,vindu,vindusstyring,styrer,ramme,stil,tema,utseende,layout,knapp,kant,kwm,pynt,dekorasjon
-Keywords[nds]=twin,Finster,Finsterpleger,manager,Rahmen,Stil,Muster,look,feel,layout,Knoop,Greep,Rand,kwm,Dekoratschoon
-Keywords[ne]=के विन,सञ्झ्याल, प्रबन्धक, किनारा, शैली, विषयवस्तु, हेराइ, बुझाइ, सजावट, बटन, ह्यान्डल, छेउ,kwm, सजावट
-Keywords[nl]=twin,window,manager,rand,stijl,theme,thema,look,uiterlijk,gedrag,feel, layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer
-Keywords[nn]=twin,vindauge,kant,bord,stil,tema,utsjånad,bunad,knapp,handtak,kwm,dekorasjon
-Keywords[nso]=twin,window,molaodi,mollwane,mokgwa,molaetsa,tebelego,maikutlo,peakanyo,setobetswa,moswaro,nthla,kwm,kgabiso
-Keywords[pa]=twin,handle,edge,kwm,decoration,ਝਰੋਖਾ,ਮੈਨੇਜਰ,ਹਾਸ਼ੀਆ,ਸ਼ੈਲੀ,ਸਰੂਪ,ਦਿੱਖ,ਖਾਕਾ,ਬਟਨ,ਹੈਂਡਲ,ਸਜਾਵਟ
-Keywords[pl]=twin,okno,menedżer,brzeg,styl,motyw,wygląd,zachowanie,układ,przycisk,uchwyt,krawędź,kwm,dekoracja
-Keywords[pt]=twin,janela,gestor,contorno,estilo,tema,aparência,comportamento,visual,botão,pega,extremo,kwm,decoração
-Keywords[pt_BR]=twin,janela,gerenciador,borda,estilo,tema,aparência,aparência,botão, gerenciador,borda,kwm,decoração
-Keywords[ro]=twin,fereastră,manager,margine,stil,tematică,aspect,comportament,format,buton,kwm,decorare
-Keywords[rw]=twin,idirishya,muyobozi,impera,imisusire,insanganyamatsiko,imboneko,kumva,imigaragarire,buto,ikirindi,impera,kwm,ugutaaka
-Keywords[se]=twin,láse,gieđahalli,ravda,stiila,fáddá,fárda,dovdu,hápmi,boallu,geavja,ravda,kwm,hearva
-Keywords[sk]=twin,okno,správa,okraj,štýl,téma,vzhľad,rozloženie,tlačidlo,hrana,kwm,dekorácia,oblasť
-Keywords[sl]=twin,okno,upravitelj,rob,meja,slog,stil,tema,pogled,občutek,gumb,ročaj,rob,kwm,okrasek
-Keywords[sr]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозор,менаџер,оквир,стил,тема,изглед,дугме,хватаљка,декорација
-Keywords[sr@Latn]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,menadžer,okvir,stil,tema,izgled,dugme,hvataljka,dekoracija
-Keywords[sv]=twin,fönster,hanterare,kant,stil,tema,utseende,känsla,layout,knapp,hantera,kant,kwm,dekoration
-Keywords[ta]=twin,சாளரம்,மேலாளர்,விளிம்பு,பாணி,தலைப்பு,பார்வை,உணர்தல்,உருவரை,விசை,கையாள்,முனை,kwm,அலங்கரிப்பு
-Keywords[th]=twin,หน้าต่าง,ตัวจัดการ,กรอบ,ลักษณะ,ชุดตกแต่ง,มองเห็น,รู้สึก,การจัดวาง,ปุ่ม,ที่จับ,ขอบ,kwm,การตกแต่ง
-Keywords[tr]=twin,pencere,yönetici,kenar,stil,tema,görünüş,doku,yerleşim,düğme,tutamaç,kenar,kwm,dekorasyon
-Keywords[uk]=twin,вікно,менеджер,границя,стиль,тема,вигляд,поведінка,розклад,кнопка,handle,край,kwm,обрамлення
-Keywords[uz]=twin,kwm,bezak,oyna,boshqaruvchi,usul,tashqi koʻrinish
-Keywords[uz@cyrillic]=twin,kwm,безак,ойна,бошқарувчи,усул,ташқи кўриниш
-Keywords[ven]=twin,windo,mulanguli,mukanoni,tshitaela,thero,sedza,upfa,vhuvha,bathene,fara,mafhedziselo,kwn,u khavhisedza
-Keywords[vi]=twin,cửa sổ,quản lý,bờ,kiểu,sắc thái,ngoại hình,cảm nhận,sắp xếp,nút,điều khiển,cạnh,kwm,trang trí
-Keywords[wa]=twin,kpurnea,purnea,manaedjeu,boird,stîle,tinme,rivnance,layout;loukance,boton,apougnî,costé,kwm,gåliotaedje
-Keywords[xh]=twin,window,umphathi,umda,uhlobo,umxholo wokuxoxwa,jonga,yiva,beka,iqhosha,umqheba,umda,kwm,uhombiso
-Keywords[zh_CN]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,窗口,管理器,边框,样式,主题,观感,布局,按钮,处理,边缘,装饰
-Keywords[zh_TW]=twin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,視窗,管理員,邊框,風格,佈景主題,外觀,感覺,佈局,按鈕,邊緣,裝飾
-Keywords[zu]=twin,i-window,imenenja,umngcele,isitayela,bona,izwa, isendlalelo,inkinobho,isibambo,unqenqema,kwm,umhlobiso
-Categories=Qt;KDE;X-KDE-settings-looknfeel;
diff --git a/kwin/kcmkwin/kwindecoration/kwindecoration.h b/kwin/kcmkwin/kwindecoration/kwindecoration.h
deleted file mode 100644
index f6b535024..000000000
--- a/kwin/kcmkwin/kwindecoration/kwindecoration.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2001
- Karol Szwed <gallium@kde.org>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#ifndef KWINDECORATION_H
-#define KWINDECORATION_H
-
-#include <kcmodule.h>
-#include <dcopobject.h>
-#include <buttons.h>
-#include <kconfig.h>
-#include <klibloader.h>
-
-#include <kdecoration.h>
-
-#include "twindecorationIface.h"
-
-class KComboBox;
-class TQCheckBox;
-class TQLabel;
-class TQTabWidget;
-class TQVBox;
-class TQSlider;
-
-class KDecorationPlugins;
-class KDecorationPreview;
-
-// Stores themeName and its corresponding library Name
-struct DecorationInfo
-{
- TQString name;
- TQString libraryName;
-};
-
-
-class KWinDecorationModule : public KCModule, virtual public KWinDecorationIface, public KDecorationDefines
-{
- Q_OBJECT
-
- public:
- KWinDecorationModule(TQWidget* parent, const char* name, const TQStringList &);
- ~KWinDecorationModule();
-
- virtual void load();
- virtual void save();
- virtual void defaults();
-
- TQString quickHelp() const;
-
- virtual void dcopUpdateClientList();
-
- signals:
- void pluginLoad( KConfig* conf );
- void pluginSave( KConfig* conf );
- void pluginDefaults();
-
- protected slots:
- // Allows us to turn "save" on
- void slotSelectionChanged();
- void slotChangeDecoration( const TQString & );
- void slotBorderChanged( int );
- void slotButtonsChanged();
-
- private:
- void readConfig( KConfig* conf );
- void writeConfig( KConfig* conf );
- void findDecorations();
- void createDecorationList();
- void updateSelection();
- TQString decorationLibName( const TQString& name );
- TQString decorationName ( TQString& libName );
- static TQString styleToConfigLib( TQString& styleLib );
- void resetPlugin( KConfig* conf, const TQString& currentDecoName = TQString::null );
- void resetKWin();
- void checkSupportedBorderSizes();
- static int borderSizeToIndex( BorderSize size, TQValueList< BorderSize > sizes );
- static BorderSize indexToBorderSize( int index, TQValueList< BorderSize > sizes );
-
- TQTabWidget* tabWidget;
-
- // Page 1
- KComboBox* decorationList;
- TQValueList<DecorationInfo> decorations;
-
- KDecorationPreview* preview;
- KDecorationPlugins* plugins;
- KConfig twinConfig;
-
- TQCheckBox* cbUseCustomButtonPositions;
- // TQCheckBox* cbUseMiniWindows;
- TQCheckBox* cbShowToolTips;
- TQLabel* lBorder;
- TQComboBox* cBorder;
- BorderSize border_size;
-
- TQObject* pluginObject;
- TQWidget* pluginConfigWidget;
- TQString currentLibraryName;
- TQString oldLibraryName;
- TQObject* (*allocatePlugin)( KConfig* conf, TQWidget* parent );
-
- // Page 2
- ButtonPositionWidget *buttonPositionWidget;
- TQVBox* buttonPage;
-
- // Page 3
- TQVBox *shadowPage;
- KColorButton *inactiveShadowColourButton, *shadowColourButton;
- TQCheckBox *cbShadowDocks, *cbShadowOverrides, *cbShadowTopMenus;
- TQCheckBox *cbInactiveShadow, *cbWindowShadow;
- TQGroupBox *activeShadowSettings, *inactiveShadowSettings;
- TQGroupBox *whichShadowSettings;
- TQSlider *inactiveShadowOpacitySlider, *shadowOpacitySlider;
- TQSpinBox *inactiveShadowOpacitySpinBox, *shadowOpacitySpinBox;
- TQSpinBox *inactiveShadowXOffsetSpinBox, *shadowXOffsetSpinBox;
- TQSpinBox *inactiveShadowYOffsetSpinBox, *shadowYOffsetSpinBox;
- TQSpinBox *inactiveShadowThicknessSpinBox, *shadowThicknessSpinBox;
-};
-
-
-#endif
-// vim: ts=4
-// kate: space-indent off; tab-width 4;
diff --git a/kwin/kcmkwin/kwindecoration/kwindecorationIface.h b/kwin/kcmkwin/kwindecoration/kwindecorationIface.h
deleted file mode 100644
index f50082648..000000000
--- a/kwin/kcmkwin/kwindecoration/kwindecorationIface.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2001
- Karol Szwed (gallium) <karlmail@usa.net>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#ifndef __KWINDECORATIONIFACE_H
-#define __KWINDECORATIONIFACE_H
-
-#include <dcopobject.h>
-
-class KWinDecorationIface: virtual public DCOPObject
-{
- K_DCOP
- public:
-
- k_dcop:
- virtual void dcopUpdateClientList()=0;
-};
-
-#endif
diff --git a/kwin/kcmkwin/kwindecoration/pixmaps.h b/kwin/kcmkwin/kwindecoration/pixmaps.h
deleted file mode 100644
index 710e01425..000000000
--- a/kwin/kcmkwin/kwindecoration/pixmaps.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- This is the new twindecoration kcontrol module
-
- Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
- Copyright (c) 2001
- Karol Szwed <gallium@kde.org>
- http://gallium.n3.net/
-
- Supports new twin configuration plugins, and titlebar button position
- modification via dnd interface.
-
- Based on original "twintheme" (Window Borders)
- Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-// Button icon bitmap data which is hopefully generic enough to be recognized by everyone.
-
-// close.xbm:
-#define close_width 12
-#define close_height 12
-static unsigned char close_bits[] = {
- 0x00, 0x00, 0x06, 0x06, 0x0e, 0x07, 0x9c, 0x03, 0xf8, 0x01, 0xf0, 0x00,
- 0xf0, 0x00, 0xf8, 0x01, 0x9c, 0x03, 0x0e, 0x07, 0x06, 0x06, 0x00, 0x00 };
-
-// help.xbm:
-#define help_width 12
-#define help_height 12
-static unsigned char help_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x8c, 0x01, 0xc0, 0x01,
- 0xe0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00 };
-
-// keepaboveothers.xbm:
-#define keepaboveothers_width 12
-#define keepaboveothers_height 12
-static unsigned char keepaboveothers_bits[] = {
- 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0x60, 0x00, 0xfe, 0x07,
- 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
-// keepbelowothers.xbm:
-#define keepbelowothers_width 12
-#define keepbelowothers_height 12
-static unsigned char keepbelowothers_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07,
- 0xfe, 0x07, 0x60, 0x00, 0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00 };
-
-// maximize.xbm:
-#define maximize_width 12
-#define maximize_height 12
-static unsigned char maximize_bits[] = {
- 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04,
- 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00 };
-
-// menu.xbm:
-#define menu_width 12
-#define menu_height 12
-static unsigned char menu_bits[] = {
- 0x00, 0x00, 0xfc, 0x03, 0xf4, 0x02, 0x04, 0x02, 0xf4, 0x02, 0x04, 0x02,
- 0xf4, 0x02, 0x04, 0x02, 0xf4, 0x02, 0x04, 0x02, 0xfc, 0x03, 0x00, 0x00 };
-
-// minimize.xbm:
-#define minimize_width 12
-#define minimize_height 12
-static unsigned char minimize_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00 };
-
-// onalldesktops.xbm:
-#define onalldesktops_width 12
-#define onalldesktops_height 12
-static unsigned char onalldesktops_bits[] = {
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xfe, 0x07,
- 0xfe, 0x07, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00 };
-
-// resize.xbm:
-#define resize_width 12
-#define resize_height 12
-static unsigned char resize_bits[] = {
- 0x00, 0x00, 0xfe, 0x07, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04,
- 0x7e, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00 };
-
-// shade.xbm:
-#define shade_width 12
-#define shade_height 12
-static unsigned char shade_bits[] = {
- 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
-// spacer.xbm:
-#define spacer_width 12
-#define spacer_height 12
-static unsigned char spacer_bits[] = {
- 0x00, 0x00, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x54, 0x03,
- 0xac, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x00, 0x00 };
-
-// vim: ts=4
diff --git a/kwin/kcmkwin/kwindecoration/preview.cpp b/kwin/kcmkwin/kwindecoration/preview.cpp
deleted file mode 100644
index ee8c59c75..000000000
--- a/kwin/kcmkwin/kwindecoration/preview.cpp
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- *
- * Copyright (c) 2003 Lubos Lunak <l.lunak@kde.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include "preview.h"
-
-#include <kapplication.h>
-#include <klocale.h>
-#include <kconfig.h>
-#include <kglobal.h>
-#include <tqlabel.h>
-#include <tqstyle.h>
-#include <kiconloader.h>
-
-#include <X11/Xlib.h>
-#include <X11/extensions/shape.h>
-
-#include <kdecorationfactory.h>
-#include <kdecoration_plugins_p.h>
-
-// FRAME the preview doesn't update to reflect the changes done in the kcm
-
-KDecorationPreview::KDecorationPreview( TQWidget* parent, const char* name )
- : TQWidget( parent, name )
- {
- options = new KDecorationPreviewOptions;
-
- bridge[Active] = new KDecorationPreviewBridge( this, true );
- bridge[Inactive] = new KDecorationPreviewBridge( this, false );
-
- deco[Active] = deco[Inactive] = NULL;
-
- no_preview = new TQLabel( i18n( "No preview available.\n"
- "Most probably there\n"
- "was a problem loading the plugin." ), this );
-
- no_preview->tqsetAlignment( AlignCenter );
-
- setMinimumSize( 100, 100 );
- no_preview->resize( size());
- }
-
-KDecorationPreview::~KDecorationPreview()
- {
- for ( int i = 0; i < NumWindows; i++ )
- {
- delete deco[i];
- delete bridge[i];
- }
- delete options;
- }
-
-bool KDecorationPreview::recreateDecoration( KDecorationPlugins* plugins )
- {
- for ( int i = 0; i < NumWindows; i++ )
- {
- delete deco[i]; // deletes also window
- deco[i] = plugins->createDecoration( bridge[i] );
- deco[i]->init();
- }
-
- if( deco[Active] == NULL || deco[Inactive] == NULL )
- {
- return false;
- }
-
- positionPreviews();
- deco[Inactive]->widget()->show();
- deco[Active]->widget()->show();
-
- return true;
- }
-
-void KDecorationPreview::enablePreview()
- {
- no_preview->hide();
- }
-
-void KDecorationPreview::disablePreview()
- {
- delete deco[Active];
- delete deco[Inactive];
- deco[Active] = deco[Inactive] = NULL;
- no_preview->show();
- }
-
-void KDecorationPreview::resizeEvent( TQResizeEvent* e )
- {
- TQWidget::resizeEvent( e );
- positionPreviews();
- }
-
-void KDecorationPreview::positionPreviews()
- {
- int titleBarHeight, leftBorder, rightBorder, xoffset,
- dummy1, dummy2, dummy3;
- TQRect geometry;
- TQSize size;
-
- no_preview->resize( this->size() );
-
- if ( !deco[Active] || !deco[Inactive] )
- return;
-
- // don't have more than one reference to the same dummy variable in one borders() call.
- deco[Active]->borders( dummy1, dummy2, titleBarHeight, dummy3 );
- deco[Inactive]->borders( leftBorder, rightBorder, dummy1, dummy2 );
-
- titleBarHeight = kMin( int( titleBarHeight * .9 ), 30 );
- xoffset = kMin( kMax( 10, TQApplication::reverseLayout()
- ? leftBorder : rightBorder ), 30 );
-
- // Resize the active window
- size = TQSize( width() - xoffset, height() - titleBarHeight )
- .expandedTo( deco[Active]->tqminimumSize() );
- geometry = TQRect( TQPoint( 0, titleBarHeight ), size );
- deco[Active]->widget()->setGeometry( TQStyle::tqvisualRect( geometry, this ) );
-
- // Resize the inactive window
- size = TQSize( width() - xoffset, height() - titleBarHeight )
- .expandedTo( deco[Inactive]->tqminimumSize() );
- geometry = TQRect( TQPoint( xoffset, 0 ), size );
- deco[Inactive]->widget()->setGeometry( TQStyle::tqvisualRect( geometry, this ) );
- }
-
-void KDecorationPreview::setPreviewMask( const TQRegion& reg, int mode, bool active )
- {
- TQWidget *widget = active ? deco[Active]->widget() : deco[Inactive]->widget();
-
- // FRAME duped from client.cpp
- if( mode == Unsorted )
- {
- XShapeCombineRegion( qt_xdisplay(), widget->winId(), ShapeBounding, 0, 0,
- reg.handle(), ShapeSet );
- }
- else
- {
- TQMemArray< TQRect > rects = reg.tqrects();
- XRectangle* xrects = new XRectangle[ rects.count() ];
- for( unsigned int i = 0;
- i < rects.count();
- ++i )
- {
- xrects[ i ].x = rects[ i ].x();
- xrects[ i ].y = rects[ i ].y();
- xrects[ i ].width = rects[ i ].width();
- xrects[ i ].height = rects[ i ].height();
- }
- XShapeCombineRectangles( qt_xdisplay(), widget->winId(), ShapeBounding, 0, 0,
- xrects, rects.count(), ShapeSet, mode );
- delete[] xrects;
- }
- if( active )
- mask = reg; // keep tqshape of the active window for unobscuredRegion()
- }
-
-TQRect KDecorationPreview::windowGeometry( bool active ) const
- {
- TQWidget *widget = active ? deco[Active]->widget() : deco[Inactive]->widget();
- return widget->geometry();
- }
-
-void KDecorationPreview::setTempBorderSize(KDecorationPlugins* plugin, KDecorationDefines::BorderSize size)
- {
- options->setCustomBorderSize(size);
- if (plugin->factory()->reset(KDecorationDefines::SettingBorder) )
- {
- // can't handle the change, recreate decorations then
- recreateDecoration(plugin);
- }
- else
- {
- // handles the update, only update position...
- positionPreviews();
- }
- }
-
-void KDecorationPreview::setTempButtons(KDecorationPlugins* plugin, bool customEnabled, const TQString &left, const TQString &right)
- {
- options->setCustomTitleButtonsEnabled(customEnabled);
- options->setCustomTitleButtons(left, right);
- if (plugin->factory()->reset(KDecorationDefines::SettingButtons) )
- {
- // can't handle the change, recreate decorations then
- recreateDecoration(plugin);
- }
- else
- {
- // handles the update, only update position...
- positionPreviews();
- }
- }
-
-TQRegion KDecorationPreview::unobscuredRegion( bool active, const TQRegion& r ) const
- {
- if( active ) // this one is not obscured
- return r;
- else
- {
- // copied from KWin core's code
- TQRegion ret = r;
- TQRegion r2 = mask;
- if( r2.isEmpty())
- r2 = TQRegion( windowGeometry( true ));
- r2.translate( windowGeometry( true ).x() - windowGeometry( false ).x(),
- windowGeometry( true ).y() - windowGeometry( false ).y());
- ret -= r2;
- return ret;
- }
- }
-
-KDecorationPreviewBridge::KDecorationPreviewBridge( KDecorationPreview* p, bool a )
- : preview( p ), active( a )
- {
- }
-
-TQWidget* KDecorationPreviewBridge::initialParentWidget() const
- {
- return preview;
- }
-
-Qt::WFlags KDecorationPreviewBridge::initialWFlags() const
- {
- return 0;
- }
-
-bool KDecorationPreviewBridge::isActive() const
- {
- return active;
- }
-
-bool KDecorationPreviewBridge::isCloseable() const
- {
- return true;
- }
-
-bool KDecorationPreviewBridge::isMaximizable() const
- {
- return true;
- }
-
-KDecoration::MaximizeMode KDecorationPreviewBridge::maximizeMode() const
- {
- return KDecoration::MaximizeRestore;
- }
-
-bool KDecorationPreviewBridge::isMinimizable() const
- {
- return true;
- }
-
-bool KDecorationPreviewBridge::providesContextHelp() const
- {
- return true;
- }
-
-int KDecorationPreviewBridge::desktop() const
- {
- return 1;
- }
-
-bool KDecorationPreviewBridge::isModal() const
- {
- return false;
- }
-
-bool KDecorationPreviewBridge::isShadeable() const
- {
- return true;
- }
-
-bool KDecorationPreviewBridge::isShade() const
- {
- return false;
- }
-
-bool KDecorationPreviewBridge::isSetShade() const
- {
- return false;
- }
-
-bool KDecorationPreviewBridge::keepAbove() const
- {
- return false;
- }
-
-bool KDecorationPreviewBridge::keepBelow() const
- {
- return false;
- }
-
-bool KDecorationPreviewBridge::isMovable() const
- {
- return true;
- }
-
-bool KDecorationPreviewBridge::isResizable() const
- {
- return true;
- }
-
-NET::WindowType KDecorationPreviewBridge::windowType( unsigned long ) const
- {
- return NET::Normal;
- }
-
-TQIconSet KDecorationPreviewBridge::icon() const
- {
- return TQIconSet( KGlobal::iconLoader()->loadIcon( "xapp", KIcon::NoGroup, 16 ),
- KGlobal::iconLoader()->loadIcon( "xapp", KIcon::NoGroup, 32 ));
- }
-
-TQString KDecorationPreviewBridge::caption() const
- {
- return active ? i18n( "Active Window" ) : i18n( "Inactive Window" );
- }
-
-void KDecorationPreviewBridge::processMousePressEvent( TQMouseEvent* )
- {
- }
-
-void KDecorationPreviewBridge::showWindowMenu( const TQRect &)
- {
- }
-
-void KDecorationPreviewBridge::showWindowMenu( TQPoint )
- {
- }
-
-void KDecorationPreviewBridge::performWindowOperation( WindowOperation )
- {
- }
-
-void KDecorationPreviewBridge::setMask( const TQRegion& reg, int mode )
- {
- preview->setPreviewMask( reg, mode, active );
- }
-
-bool KDecorationPreviewBridge::isPreview() const
- {
- return true;
- }
-
-TQRect KDecorationPreviewBridge::geometry() const
- {
- return preview->windowGeometry( active );
- }
-
-TQRect KDecorationPreviewBridge::iconGeometry() const
- {
- return TQRect();
- }
-
-TQRegion KDecorationPreviewBridge::unobscuredRegion( const TQRegion& r ) const
- {
- return preview->unobscuredRegion( active, r );
- }
-
-TQWidget* KDecorationPreviewBridge::workspaceWidget() const
- {
- return preview;
- }
-
-WId KDecorationPreviewBridge::windowId() const
- {
- return 0; // no decorated window
- }
-
-void KDecorationPreviewBridge::closeWindow()
- {
- }
-
-void KDecorationPreviewBridge::maximize( MaximizeMode )
- {
- }
-
-void KDecorationPreviewBridge::minimize()
- {
- }
-
-void KDecorationPreviewBridge::showContextHelp()
- {
- }
-
-void KDecorationPreviewBridge::setDesktop( int )
- {
- }
-
-void KDecorationPreviewBridge::titlebarDblClickOperation()
- {
- }
-
-void KDecorationPreviewBridge::titlebarMouseWheelOperation( int )
- {
- }
-
-void KDecorationPreviewBridge::setShade( bool )
- {
- }
-
-void KDecorationPreviewBridge::setKeepAbove( bool )
- {
- }
-
-void KDecorationPreviewBridge::setKeepBelow( bool )
- {
- }
-
-int KDecorationPreviewBridge::currentDesktop() const
- {
- return 1;
- }
-
-void KDecorationPreviewBridge::helperShowHide( bool )
- {
- }
-
-void KDecorationPreviewBridge::grabXServer( bool )
- {
- }
-
-KDecorationPreviewOptions::KDecorationPreviewOptions()
- {
- customBorderSize = BordersCount; // invalid
- customButtonsChanged = false; // invalid
- customButtons = true;
- customTitleButtonsLeft = TQString::null; // invalid
- customTitleButtonsRight = TQString::null; // invalid
-
- d = new KDecorationOptionsPrivate;
- d->defaultKWinSettings();
- updateSettings();
- }
-
-KDecorationPreviewOptions::~KDecorationPreviewOptions()
- {
- delete d;
- }
-
-unsigned long KDecorationPreviewOptions::updateSettings()
- {
- KConfig cfg( "twinrc", true );
- unsigned long changed = 0;
- changed |= d->updateKWinSettings( &cfg );
-
- // set custom border size/buttons
- if (customBorderSize != BordersCount)
- d->border_size = customBorderSize;
- if (customButtonsChanged)
- d->custom_button_positions = customButtons;
- if (customButtons) {
- if (!customTitleButtonsLeft.isNull() )
- d->title_buttons_left = customTitleButtonsLeft;
- if (!customTitleButtonsRight.isNull() )
- d->title_buttons_right = customTitleButtonsRight;
- } else {
- d->title_buttons_left = "MS";
- d->title_buttons_right = "HIAX";
- }
-
- return changed;
- }
-
-void KDecorationPreviewOptions::setCustomBorderSize(BorderSize size)
- {
- customBorderSize = size;
-
- updateSettings();
- }
-
-void KDecorationPreviewOptions::setCustomTitleButtonsEnabled(bool enabled)
-{
- customButtonsChanged = true;
- customButtons = enabled;
-
- updateSettings();
-}
-
-void KDecorationPreviewOptions::setCustomTitleButtons(const TQString &left, const TQString &right)
- {
- customTitleButtonsLeft = left;
- customTitleButtonsRight = right;
-
- updateSettings();
- }
-
-bool KDecorationPreviewPlugins::provides( Requirement )
- {
- return false;
- }
-
-#include "preview.moc"
diff --git a/kwin/kcmkwin/kwindecoration/preview.h b/kwin/kcmkwin/kwindecoration/preview.h
deleted file mode 100644
index 2a753db69..000000000
--- a/kwin/kcmkwin/kwindecoration/preview.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- *
- * Copyright (c) 2003 Lubos Lunak <l.lunak@kde.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef KWINDECORATION_PREVIEW_H
-#define KWINDECORATION_PREVIEW_H
-
-#include <tqwidget.h>
-#include <kdecoration_p.h>
-#include <kdecoration_plugins_p.h>
-
-class TQLabel;
-
-class KDecorationPreviewBridge;
-class KDecorationPreviewOptions;
-
-class KDecorationPreview
- : public TQWidget
- {
- Q_OBJECT
- public:
- // Note: Windows can't be added or removed without making changes to
- // the code, since parts of it assume there's just an active
- // and an inactive window.
- enum Windows { Inactive = 0, Active, NumWindows };
-
- KDecorationPreview( TQWidget* parent = NULL, const char* name = NULL );
- virtual ~KDecorationPreview();
- bool recreateDecoration( KDecorationPlugins* plugin );
- void enablePreview();
- void disablePreview();
- void setPreviewMask( const TQRegion&, int, bool );
- TQRegion unobscuredRegion( bool, const TQRegion& ) const;
- TQRect windowGeometry( bool ) const;
- void setTempBorderSize(KDecorationPlugins* plugin, KDecorationDefines::BorderSize size);
- void setTempButtons(KDecorationPlugins* plugin, bool customEnabled, const TQString &left, const TQString &right);
- protected:
- virtual void resizeEvent( TQResizeEvent* );
- private:
- void positionPreviews();
- KDecorationPreviewOptions* options;
- KDecorationPreviewBridge* bridge[NumWindows];
- KDecoration* deco[NumWindows];
- TQLabel* no_preview;
- TQRegion mask;
- };
-
-class KDecorationPreviewBridge
- : public KDecorationBridge
- {
- public:
- KDecorationPreviewBridge( KDecorationPreview* preview, bool active );
- virtual bool isActive() const;
- virtual bool isCloseable() const;
- virtual bool isMaximizable() const;
- virtual MaximizeMode maximizeMode() const;
- virtual bool isMinimizable() const;
- virtual bool providesContextHelp() const;
- virtual int desktop() const;
- virtual bool isModal() const;
- virtual bool isShadeable() const;
- virtual bool isShade() const;
- virtual bool isSetShade() const;
- virtual bool keepAbove() const;
- virtual bool keepBelow() const;
- virtual bool isMovable() const;
- virtual bool isResizable() const;
- virtual NET::WindowType windowType( unsigned long supported_types ) const;
- virtual TQIconSet icon() const;
- virtual TQString caption() const;
- virtual void processMousePressEvent( TQMouseEvent* );
- virtual void showWindowMenu( const TQRect &);
- virtual void showWindowMenu( TQPoint );
- virtual void performWindowOperation( WindowOperation );
- virtual void setMask( const TQRegion&, int );
- virtual bool isPreview() const;
- virtual TQRect geometry() const;
- virtual TQRect iconGeometry() const;
- virtual TQRegion unobscuredRegion( const TQRegion& r ) const;
- virtual TQWidget* workspaceWidget() const;
- virtual WId windowId() const;
- virtual void closeWindow();
- virtual void maximize( MaximizeMode mode );
- virtual void minimize();
- virtual void showContextHelp();
- virtual void setDesktop( int desktop );
- virtual void titlebarDblClickOperation();
- virtual void titlebarMouseWheelOperation( int delta );
- virtual void setShade( bool set );
- virtual void setKeepAbove( bool );
- virtual void setKeepBelow( bool );
- virtual int currentDesktop() const;
- virtual TQWidget* initialParentWidget() const;
- virtual Qt::WFlags initialWFlags() const;
- virtual void helperShowHide( bool show );
- virtual void grabXServer( bool grab );
- private:
- KDecorationPreview* preview;
- bool active;
- };
-
-class KDecorationPreviewOptions
- : public KDecorationOptions
- {
- public:
- KDecorationPreviewOptions();
- virtual ~KDecorationPreviewOptions();
- virtual unsigned long updateSettings();
-
- void setCustomBorderSize(BorderSize size);
- void setCustomTitleButtonsEnabled(bool enabled);
- void setCustomTitleButtons(const TQString &left, const TQString &right);
-
- private:
- BorderSize customBorderSize;
- bool customButtonsChanged;
- bool customButtons;
- TQString customTitleButtonsLeft;
- TQString customTitleButtonsRight;
- };
-
-class KDecorationPreviewPlugins
- : public KDecorationPlugins
- {
- public:
- KDecorationPreviewPlugins( KConfig* cfg );
- virtual bool provides( Requirement );
- };
-
-inline KDecorationPreviewPlugins::KDecorationPreviewPlugins( KConfig* cfg )
- : KDecorationPlugins( cfg )
- {
- }
-
-#endif