summaryrefslogtreecommitdiffstats
path: root/lib/kofficeui/kcoloractions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kofficeui/kcoloractions.cpp')
-rw-r--r--lib/kofficeui/kcoloractions.cpp348
1 files changed, 348 insertions, 0 deletions
diff --git a/lib/kofficeui/kcoloractions.cpp b/lib/kofficeui/kcoloractions.cpp
new file mode 100644
index 000000000..a2d707d4a
--- /dev/null
+++ b/lib/kofficeui/kcoloractions.cpp
@@ -0,0 +1,348 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org>
+ Copyright (C) 2002 Werner Trobin <trobin@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library 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 <kcoloractions.h>
+
+#include <qpopupmenu.h>
+#include <qwhatsthis.h>
+#include <qtooltip.h>
+
+#include <kapplication.h>
+#include <ktoolbar.h>
+#include <ktoolbarbutton.h>
+#include <kdebug.h>
+
+KColorAction::KColorAction( const QString& text, int accel,
+ QObject* parent, const char* name )
+ : KAction( text, accel, parent, name )
+{
+ typ = TextColor;
+ init();
+}
+
+KColorAction::KColorAction( const QString& text, int accel,
+ QObject* receiver, const char* slot, QObject* parent,
+ const char* name )
+ : KAction( text, accel, receiver, slot, parent, name )
+{
+ typ = TextColor;
+ init();
+}
+
+KColorAction::KColorAction( const QString& text, Type type, int accel,
+ QObject* parent, const char* name )
+ : KAction( text, accel, parent, name )
+{
+ typ = type;
+ init();
+}
+
+KColorAction::KColorAction( const QString& text, Type type, int accel,
+ QObject* receiver, const char* slot, QObject* parent,
+ const char* name )
+ : KAction( text, accel, receiver, slot, parent, name )
+{
+ typ = type;
+ init();
+}
+
+KColorAction::KColorAction( QObject* parent, const char* name )
+ : KAction( parent, name )
+{
+ typ = TextColor;
+ init();
+}
+
+void KColorAction::setColor( const QColor &c )
+{
+ if ( c == col )
+ return;
+
+ col = c;
+ createPixmap();
+}
+
+QColor KColorAction::color() const
+{
+ return col;
+}
+
+void KColorAction::setType( Type t )
+{
+ if ( t == typ )
+ return;
+
+ typ = t;
+ createPixmap();
+}
+
+KColorAction::Type KColorAction::type() const
+{
+ return typ;
+}
+
+void KColorAction::init()
+{
+ col = Qt::black;
+ createPixmap();
+}
+
+void KColorAction::createPixmap()
+{
+ int r, g, b;
+ QCString pix;
+ QCString line;
+
+ col.rgb( &r, &g, &b );
+
+ pix = "/* XPM */\n";
+
+ pix += "static char * text_xpm[] = {\n";
+
+ switch ( typ ) {
+ case TextColor: {
+ pix += "\"20 20 11 1\",\n";
+ pix += "\"h c #c0c000\",\n";
+ pix += "\"g c #808000\",\n";
+ pix += "\"f c #c0c0ff\",\n";
+ pix += "\"a c #000000\",\n";
+ pix += "\"d c #ff8000\",\n";
+ pix += "\". c none\",\n";
+ pix += "\"e c #0000c0\",\n";
+ pix += "\"i c #ffff00\",\n";
+ line.sprintf( "\"# c #%02X%02X%02X \",\n", r, g, b );
+ pix += line.copy();
+ pix += "\"b c #c00000\",\n";
+ pix += "\"c c #ff0000\",\n";
+ pix += "\"....................\",\n";
+ pix += "\"....................\",\n";
+ pix += "\"....................\",\n";
+ pix += "\"........#...........\",\n";
+ pix += "\"........#a..........\",\n";
+ pix += "\".......###..........\",\n";
+ pix += "\".......###a.........\",\n";
+ pix += "\"......##aa#.........\",\n";
+ pix += "\"......##a.#a........\",\n";
+ pix += "\".....##a...#........\",\n";
+ pix += "\".....#######a.......\",\n";
+ pix += "\"....##aaaaaa#.......\",\n";
+ pix += "\"....##a.....aaaaaaaa\",\n";
+ pix += "\"...####....#abbccdda\",\n";
+ pix += "\"....aaaa....abbccdda\",\n";
+ pix += "\"............aee##ffa\",\n";
+ pix += "\"............aee##ffa\",\n";
+ pix += "\"............agghhiia\",\n";
+ pix += "\"............agghhiia\",\n";
+ pix += "\"............aaaaaaaa\"};\n";
+ } break;
+ case FrameColor: {
+ pix += "\" 20 20 3 1 \",\n";
+
+ pix += "\" c none \",\n";
+ pix += "\"+ c white \",\n";
+ line.sprintf( "\". c #%02X%02X%02X \",\n", r, g, b );
+ pix += line.copy();
+
+ pix += "\" \",\n";
+ pix += "\" \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ...++++++++++... \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" \",\n";
+ pix += "\" \";\n";
+ } break;
+ case BackgroundColor: {
+ pix += "\" 20 20 3 1 \",\n";
+
+ pix += "\" c none \",\n";
+ pix += "\". c red \",\n";
+ line.sprintf( "\"+ c #%02X%02X%02X \",\n", r, g, b );
+ pix += line.copy();
+
+ pix += "\" \",\n";
+ pix += "\" \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ..++++++++++++.. \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" ................ \",\n";
+ pix += "\" \",\n";
+ pix += "\" \";\n";
+ } break;
+ }
+
+ QPixmap pixmap( pix );
+ setIconSet( QIconSet( pixmap ) );
+}
+
+
+KSelectColorAction::KSelectColorAction( const QString& text, Type type,
+ const QObject* receiver, const char* slot,
+ KActionCollection* parent, const char* name ) :
+ KAction( text, KShortcut(), receiver, slot, parent, name ), m_type( type ),
+ m_color( Qt::black )
+{
+}
+
+KSelectColorAction::~KSelectColorAction()
+{
+}
+
+int KSelectColorAction::plug( QWidget* w, int index )
+{
+ if (w == 0) {
+ kdWarning() << "KSelectColorAction::plug called with 0 argument\n";
+ return -1;
+ }
+ if (kapp && !kapp->authorizeKAction(name()))
+ return -1;
+
+ if ( w->inherits("QPopupMenu") )
+ {
+ QPopupMenu* menu = static_cast<QPopupMenu*>( w );
+ int id;
+
+ if ( hasIcon() )
+ {
+ /* ###### CHECK: We're not allowed to specify the instance in iconSet()
+ KInstance *instance;
+ if ( parentCollection() )
+ instance = parentCollection()->instance();
+ else
+ instance = KGlobal::instance();
+ */
+ id = menu->insertItem( iconSet( KIcon::Small, 0 ), text(), this,//dsweet
+ SLOT( slotActivated() ), 0, -1, index );
+ }
+ else
+ id = menu->insertItem( text(), this, SLOT( slotActivated() ), //dsweet
+ 0, -1, index );
+
+ updateShortcut( menu, id );
+
+ // call setItemEnabled only if the item really should be disabled,
+ // because that method is slow and the item is per default enabled
+ if ( !isEnabled() )
+ menu->setItemEnabled( id, false );
+
+ if ( !whatsThis().isEmpty() )
+ menu->setWhatsThis( id, whatsThisWithIcon() );
+
+ addContainer( menu, id );
+ connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) );
+
+ if ( parentCollection() )
+ parentCollection()->connectHighlight( menu, this );
+
+ return containerCount() - 1;
+ }
+ else if ( w->inherits( "KToolBar" ) )
+ {
+ KToolBar *bar = static_cast<KToolBar *>( w );
+
+ int id_ = getToolButtonID();
+ KInstance *instance;
+ if ( parentCollection() )
+ instance = parentCollection()->instance();
+ else
+ instance = KGlobal::instance();
+
+ if ( icon().isEmpty() ) // old code using QIconSet directly
+ {
+ bar->insertButton( iconSet( KIcon::Small ).pixmap(), id_, SIGNAL( clicked() ), this,
+ SLOT( slotActivated() ),
+ isEnabled(), plainText(), index );
+ }
+ else
+ bar->insertButton( icon(), id_, SIGNAL( clicked() ), this,
+ SLOT( slotActivated() ),
+ isEnabled(), plainText(), index, instance );
+
+ bar->getButton( id_ )->setName( QCString("toolbutton_")+name() );
+
+ if ( !whatsThis().isEmpty() )
+ QWhatsThis::add( bar->getButton(id_), whatsThisWithIcon() );
+
+ if ( !toolTip().isEmpty() )
+ QToolTip::add( bar->getButton(id_), toolTip() );
+
+ addContainer( bar, id_ );
+
+ connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) );
+
+ if ( parentCollection() )
+ parentCollection()->connectHighlight( bar, this );
+
+ return containerCount() - 1;
+ }
+
+ return -1;
+}
+
+QColor KSelectColorAction::color() const
+{
+ return m_color;
+}
+
+KSelectColorAction::Type KSelectColorAction::type() const
+{
+ return m_type;
+}
+
+void KSelectColorAction::setColor( const QColor &/*c*/ )
+{
+}
+
+void KSelectColorAction::setType( Type /*t*/ )
+{
+}
+
+QString KSelectColorAction::whatsThisWithIcon() const
+{
+ QString text = whatsThis();
+ if (!icon().isEmpty())
+ return QString::fromLatin1("<img source=\"small|%1\"> %2").arg(icon()).arg(text);
+ return text;
+}
+
+#include <kcoloractions.moc>