summaryrefslogtreecommitdiffstats
path: root/tdeiconedit/palettetoolbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeiconedit/palettetoolbar.cpp')
-rw-r--r--tdeiconedit/palettetoolbar.cpp178
1 files changed, 178 insertions, 0 deletions
diff --git a/tdeiconedit/palettetoolbar.cpp b/tdeiconedit/palettetoolbar.cpp
new file mode 100644
index 00000000..5e61cb48
--- /dev/null
+++ b/tdeiconedit/palettetoolbar.cpp
@@ -0,0 +1,178 @@
+/*
+ tdeiconedit - a small graphics drawing program for the KDE
+ Copyright ( C ) 1998 Thomas Tanghus ( tanghus@kde.org )
+ Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqwhatsthis.h>
+#include <tqpainter.h>
+
+#include <tdelocale.h>
+#include <kdebug.h>
+
+#include "tdeiconcolors.h"
+#include "palettetoolbar.h"
+
+PaletteToolBar::PaletteToolBar( TQWidget *parent, const char *name )
+ : TDEToolBar( parent, name )
+{
+ TQWidget *base = new TQWidget( this );
+
+ TQBoxLayout::Direction d = orientation() == Qt::Horizontal?
+ TQBoxLayout::LeftToRight : TQBoxLayout::TopToBottom;
+ m_layout = new TQBoxLayout( base, d, 2, 6 );
+
+ m_lblPreview = new TQLabel( base );
+ m_lblPreview->setFrameStyle( TQFrame::Panel|TQFrame::Sunken );
+ m_lblPreview->setFixedHeight( 64 );
+ m_lblPreview->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter );
+ TQWhatsThis::add(m_lblPreview, i18n( "Preview\n\nThis is a 1:1 preview"
+ " of the current icon" ) );
+ m_layout->addWidget( m_lblPreview );
+
+ m_currentColorView = new TQLabel( base );
+ m_currentColorView->setFrameStyle( TQFrame::Panel|TQFrame::Sunken );
+ m_currentColorView->setFixedHeight( 24 );
+ m_currentColorView->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter );
+ TQWhatsThis::add(m_currentColorView, i18n( "Current color\n\nThis is the currently selected color" ) );
+ m_layout->addWidget( m_currentColorView );
+
+ TQVBoxLayout *vlayout = new TQVBoxLayout( m_layout, 0 );
+ TQLabel *l = new TQLabel( i18n( "System colors:" ), base );
+ vlayout->addWidget( l );
+ m_sysColors = new KSysColors( base );
+ TQWhatsThis::add(m_sysColors, i18n( "System colors\n\nHere you can select"
+ " colors from the TDE icon palette" ) );
+
+ vlayout->addWidget( m_sysColors );
+
+ connect( m_sysColors, TQT_SIGNAL( newColor(uint) ),
+ TQT_SIGNAL( newColor(uint) ) );
+
+ vlayout = new TQVBoxLayout( m_layout, 0 );
+ l = new TQLabel( i18n( "Custom colors:" ), base );
+ vlayout->addWidget( l );
+ m_customColors = new KCustomColors( base );
+ TQWhatsThis::add(m_customColors, i18n( "Custom colors\n\nHere you can"
+ " build a palette of custom colors.\nDouble-click on a box to edit"
+ " the color" ) );
+
+ vlayout->addWidget( m_customColors );
+
+ connect( m_customColors, TQT_SIGNAL( newColor(uint) ),
+ TQT_SIGNAL( newColor(uint) ) );
+ connect( this, TQT_SIGNAL( newColor(uint)),
+ this, TQT_SLOT(currentColorChanged(uint)));
+ currentColorChanged(OPAQUE_MASK|0);
+
+ setEnableContextMenu( false );
+ setMovingEnabled( false );
+}
+
+void PaletteToolBar::setOrientation( Qt::Orientation o )
+{
+ if( barPos() == Floating )
+ o = o == Qt::Vertical ? Qt::Horizontal : Qt::Vertical;
+
+ TQBoxLayout::Direction d = o == Qt::Horizontal? TQBoxLayout::LeftToRight
+ : TQBoxLayout::TopToBottom;
+ m_layout->setDirection( d );
+
+ TQDockWindow::setOrientation( o );
+}
+
+void PaletteToolBar::previewChanged( const TQPixmap &p )
+{
+ m_lblPreview->setPixmap( p );
+}
+
+void PaletteToolBar::addColors( uint n, uint *c )
+{
+ m_customColors->clear();
+ for( uint i = 0; i < n; i++ )
+ addColor( c[ i ] );
+}
+
+void PaletteToolBar::addColor( uint color )
+{
+ if( !m_sysColors->contains( color ) )
+ m_customColors->addColor( color );
+}
+
+void PaletteToolBar::setPreviewBackground( TQPixmap pixmap )
+{
+ m_lblPreview->setBackgroundPixmap(pixmap);
+}
+
+void PaletteToolBar::setPreviewBackground( const TQColor& colour )
+{
+ m_lblPreview->setBackgroundColor(colour);
+}
+
+void PaletteToolBar::currentColorChanged(uint color)
+{
+ if(tqAlpha(color) == 255)
+ {
+ m_currentColorView->setBackgroundColor(color);
+ }
+ else
+ {
+ // Show the colour as if drawn over a checkerboard pattern
+ const int squareWidth = 8;
+ const uint lightColour = tqRgb(255, 255, 255);
+ const uint darkColour = tqRgb(127, 127, 127);
+
+ TQPixmap pm(2 * squareWidth, 2 * squareWidth);
+ TQPainter p(&pm);
+
+ double alpha = tqAlpha(color) / 255.0;
+
+ int r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(lightColour) + 0.5);
+ int g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(lightColour) + 0.5);
+ int b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(lightColour) + 0.5);
+
+ uint squareColour = tqRgb(r, g, b);
+
+ p.setPen(TQt::NoPen);
+ p.setBrush(TQColor(squareColour));
+ p.drawRect(0, 0, squareWidth, squareWidth);
+ p.drawRect(squareWidth, squareWidth, squareWidth, squareWidth);
+
+ r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(darkColour) + 0.5);
+ g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(darkColour) + 0.5);
+ b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(darkColour) + 0.5);
+
+ squareColour = tqRgb(r, g, b);
+
+ p.setBrush(TQColor(squareColour));
+ p.drawRect(squareWidth, 0, squareWidth, squareWidth);
+ p.drawRect(0, squareWidth, squareWidth, squareWidth);
+
+ p.end();
+
+ m_currentColorView->setBackgroundPixmap(pm);
+ }
+}
+
+#include "palettetoolbar.moc"
+
+/* vim: et sw=2 ts=2
+*/
+