[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kolourpaint] /: code cleanup/refactoring kpToolAction, etc.
From: Martin Koller <kollix () aon ! at>
Date: 2011-09-02 18:04:04
Message-ID: 20110902180404.3941EA6078 () git ! kde ! org
[Download RAW message or body]
Git commit 5026c383037b3a338ba5446732e3b613cafb57af by Martin Koller.
Committed on 02/09/2011 at 20:03.
Pushed by mkoller into branch 'master'.
code cleanup/refactoring kpToolAction, etc.
M +0 -9 mainWindow/kpMainWindow_Settings.cpp
M +11 -36 tools/kpTool.h
M +51 -59 tools/flow/kpToolFlowBase.h
M +29 -90 tools/kpTool.cpp
M +11 -33 mainWindow/kpMainWindow_Tools.cpp
M +7 -23 widgets/toolbars/kpToolToolBar.h
M +18 -81 tools/kpToolAction.cpp
M +6 -8 tools/kpToolZoom.cpp
M +87 -169 widgets/toolbars/kpToolToolBar.cpp
M +0 -16 tools/kpTool_OtherEvents.cpp
M +10 -37 tools/kpToolAction.h
M +7 -15 mainWindow/kpMainWindow.cpp
M +0 -2 tools/kpToolZoom.h
http://commits.kde.org/kolourpaint/5026c383037b3a338ba5446732e3b613cafb57af
diff --git a/mainWindow/kpMainWindow.cpp b/mainWindow/kpMainWindow.cpp
index 79517ca..58b29b4 100644
--- a/mainWindow/kpMainWindow.cpp
+++ b/mainWindow/kpMainWindow.cpp
@@ -299,25 +299,17 @@ void kpMainWindow::init ()
setAutoSaveSettings ();
- // Put our non-XMLGUI toolbars in a sane place, the first time around
- // (have to do this _after_ setAutoSaveSettings as that applies default
- // (i.e. random) settings to the toolbars)
+ // our non-XMLGUI tools-toolbar will get initially the toolButtonStyle as
+ // all other toolbars, but we want to show only icons for the tools by default
+ // (have to do this _after_ setAutoSaveSettings as that applies the default \
settings) if (d->configFirstTime)
{
- #if DEBUG_KP_MAIN_WINDOW
- kDebug () << "\tfirstTime: positioning toolbars";
- #endif
-
- // Not needed due to above toolbar HACK.
- #if 0
- addToolBar (Qt::LeftToolBarArea, d->toolToolBar);
- addToolBar (Qt::BottomToolBarArea, d->colorToolBar);
- #endif
+ d->toolToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly);
- KConfigGroup cfg (KGlobal::config (), kpSettingsGroupGeneral);
+ KConfigGroup cfg(KGlobal::config(), kpSettingsGroupGeneral);
- cfg.writeEntry (kpSettingFirstTime, d->configFirstTime = false);
- cfg.sync ();
+ cfg.writeEntry(kpSettingFirstTime, d->configFirstTime = false);
+ cfg.sync();
}
diff --git a/mainWindow/kpMainWindow_Settings.cpp \
b/mainWindow/kpMainWindow_Settings.cpp index f6f0fac..889306f 100644
--- a/mainWindow/kpMainWindow_Settings.cpp
+++ b/mainWindow/kpMainWindow_Settings.cpp
@@ -132,22 +132,13 @@ void kpMainWindow::slotShowPathToggled ()
// private slot
void kpMainWindow::slotKeyBindings ()
{
-#if DEBUG_KP_MAIN_WINDOW
- kDebug () << "kpMainWindow::slotKeyBindings()";
-#endif
-
toolEndShape ();
if (KShortcutsDialog::configure (actionCollection (),
KShortcutsEditor::LetterShortcutsAllowed,
this))
{
- #if DEBUG_KP_MAIN_WINDOW
- kDebug () << "\tdialog accepted";
- #endif
// TODO: PROPAGATE: thru mainWindow's and interprocess
-
- kpToolAction::updateAllActionsToolTips (actionCollection ());
}
}
diff --git a/mainWindow/kpMainWindow_Tools.cpp b/mainWindow/kpMainWindow_Tools.cpp
index 854349e..109da78 100644
--- a/mainWindow/kpMainWindow_Tools.cpp
+++ b/mainWindow/kpMainWindow_Tools.cpp
@@ -1,6 +1,6 @@
-
/*
Copyright (c) 2003-2007 Clarence Dang <dang@kde.org>
+ Copyright (c) 2011 Martin Koller <kollix@aon.at>
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -178,10 +178,8 @@ void kpMainWindow::setupToolActions ()
// private
void kpMainWindow::createToolBox ()
{
- d->toolToolBar = new kpToolToolBar (i18n ("Tool Box"), 2/*columns/rows*/, this);
-
- // (needed for QMainWindow::saveState())
- d->toolToolBar->setObjectName ( QLatin1String("Tool Box" ));
+ d->toolToolBar = new kpToolToolBar(QLatin1String("Tool Box"), 2/*columns/rows*/, \
this); + d->toolToolBar->setWindowTitle(i18n("Tool Box"));
connect (d->toolToolBar, SIGNAL (sigToolSelected (kpTool *)),
this, SLOT (slotToolSelected (kpTool *)));
@@ -193,13 +191,8 @@ void kpMainWindow::createToolBox ()
SLOT (updateActionDrawOpaqueChecked ()));
updateActionDrawOpaqueChecked ();
- for (QList <kpTool *>::const_iterator it = d->tools.constBegin ();
- it != d->tools.constEnd ();
- ++it)
- {
- d->toolToolBar->registerTool (*it);
- }
-
+ foreach (kpTool *tool, d->tools)
+ d->toolToolBar->registerTool(tool);
// (from config file)
readLastTool ();
@@ -234,7 +227,7 @@ void kpMainWindow::enableToolsDocumentActions (bool enable)
}
else if (!enable && d->toolToolBar->isEnabled ())
{
- // don't have a disabled Tool Box with an enabled Tool
+ // don't have a disabled Tool Box with a checked Tool
d->toolToolBar->selectTool (0);
}
@@ -242,28 +235,13 @@ void kpMainWindow::enableToolsDocumentActions (bool enable)
d->toolToolBar->setEnabled (enable);
- for (QList <kpTool *>::const_iterator it = d->tools.constBegin ();
- it != d->tools.constEnd ();
- ++it)
+ foreach (kpTool *tool, d->tools)
{
- kpToolAction *action = (*it)->action ();
- if (action)
- {
- #if DEBUG_KP_MAIN_WINDOW
- kDebug () << "\tchanging enabled state of " << (*it)->objectName ();
- #endif
-
- if (!enable && action->isChecked ())
- action->setChecked (false);
+ kpToolAction *action = tool->action();
+ if (!enable && action->isChecked())
+ action->setChecked(false);
- action->setEnabled (enable);
- }
- else
- {
- #if DEBUG_KP_MAIN_WINDOW
- kDebug () << "\tno action for " << (*it)->objectName ();
- #endif
- }
+ action->setEnabled(enable);
}
diff --git a/tools/flow/kpToolFlowBase.h b/tools/flow/kpToolFlowBase.h
index d5be4dc..79d6350 100644
--- a/tools/flow/kpToolFlowBase.h
+++ b/tools/flow/kpToolFlowBase.h
@@ -1,6 +1,6 @@
/*
- Copyright (c) 2003-2007 Clarence Dang <dang@kde.org>
+ Copyright(c) 2003-2007 Clarence Dang <dang@kde.org>
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -17,7 +17,7 @@
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@@ -30,8 +30,6 @@
#define KP_TOOL_FLOW_BASE_H
-#include <qlist.h>
-#include <qpixmap.h>
#include <qrect.h>
#include <kpTempImage.h>
@@ -47,80 +45,74 @@ class kpToolFlowCommand;
class kpToolFlowBase : public kpTool
{
-Q_OBJECT
+ Q_OBJECT
-public:
- kpToolFlowBase (const QString &text, const QString &description,
- int key,
- kpToolEnvironment *environ, QObject *parent, const QString &name);
- virtual ~kpToolFlowBase ();
+ public:
+ kpToolFlowBase(const QString &text, const QString &description,
+ int key,
+ kpToolEnvironment *environ, QObject *parent, const QString \
&name);
-private:
- void clearBrushCursorData ();
+ virtual ~kpToolFlowBase();
-protected:
- virtual QString haventBegunDrawUserMessage () const = 0;
-
- virtual bool haveSquareBrushes () const { return false; }
- virtual bool haveDiverseBrushes () const { return false; }
- bool haveAnyBrushes () const
- {
- return (haveSquareBrushes () || haveDiverseBrushes ());
- }
-
- virtual bool colorsAreSwapped () const { return false; }
+ // Returns the dirty rectangle for drawing a brush(of size
+ // <brushWidth>x<brushHeight>) at <mousePoint>. <mousePoint> will end
+ // up being the midpoint of the returned rectangle(subject to integer
+ // precision).
+ static QRect hotRectForMousePointAndBrushWidthHeight(
+ const QPoint &mousePoint,
+ int brushWidth, int brushHeight);
-public:
- virtual void begin ();
- virtual void end ();
+ virtual void begin();
+ virtual void end();
- virtual void beginDraw ();
- virtual void hover (const QPoint &point);
+ virtual void beginDraw();
+ virtual void hover(const QPoint &point);
// drawPoint() normally calls drawLine(point,point). Override drawPoint()
// if you think you can be more efficient.
- virtual QRect drawPoint (const QPoint &point);
- virtual QRect drawLine (const QPoint &thisPoint, const QPoint &lastPoint) = 0;
+ virtual QRect drawPoint(const QPoint &point);
+ virtual QRect drawLine(const QPoint &thisPoint, const QPoint &lastPoint) = 0;
- virtual bool drawShouldProceed (const QPoint & /*thisPoint*/, const QPoint & \
/*lastPoint*/, const QRect & /*normalizedRect*/) { return true; }
- virtual void draw (const QPoint &thisPoint, const QPoint &lastPoint, const QRect \
&normalizedRect);
- virtual void cancelShape ();
- virtual void releasedAllButtons ();
- virtual void endDraw (const QPoint &, const QRect &);
+ virtual bool drawShouldProceed(const QPoint & /*thisPoint*/, const QPoint & \
/*lastPoint*/, const QRect & /*normalizedRect*/) { return true; } + virtual void \
draw(const QPoint &thisPoint, const QPoint &lastPoint, const QRect &normalizedRect); \
+ virtual void cancelShape(); + virtual void releasedAllButtons();
+ virtual void endDraw(const QPoint &, const QRect &);
-protected:
- kpTempImage::UserFunctionType brushDrawFunction () const;
- void *brushDrawFunctionData () const;
+ protected:
+ virtual QString haventBegunDrawUserMessage() const = 0;
- int brushWidth () const;
- int brushHeight () const;
+ virtual bool haveSquareBrushes() const { return false; }
+ virtual bool haveDiverseBrushes() const { return false; }
+ bool haveAnyBrushes() const
+ {
+ return(haveSquareBrushes() || haveDiverseBrushes());
+ }
- bool brushIsDiagonalLine () const;
+ virtual bool colorsAreSwapped() const { return false; }
- kpToolFlowCommand *currentCommand () const;
+ kpTempImage::UserFunctionType brushDrawFunction() const;
+ void *brushDrawFunctionData() const;
-protected slots:
- void updateBrushAndCursor ();
+ int brushWidth() const;
+ int brushHeight() const;
- virtual void slotForegroundColorChanged (const kpColor &col);
- virtual void slotBackgroundColorChanged (const kpColor &col);
+ bool brushIsDiagonalLine() const;
-protected:
- virtual kpColor color (int which);
+ kpToolFlowCommand *currentCommand() const;
+ virtual kpColor color(int which);
+ QRect hotRect() const;
-public:
- // Returns the dirty rectangle for drawing a brush (of size
- // <brushWidth>x<brushHeight>) at <mousePoint>. <mousePoint> will end
- // up being the midpoint of the returned rectangle (subject to integer
- // precision).
- static QRect hotRectForMousePointAndBrushWidthHeight (
- const QPoint &mousePoint,
- int brushWidth, int brushHeight);
-protected:
- QRect hotRect () const;
+ protected slots:
+ void updateBrushAndCursor();
+
+ virtual void slotForegroundColorChanged(const kpColor &col);
+ virtual void slotBackgroundColorChanged(const kpColor &col);
+ private:
+ void clearBrushCursorData();
-private:
+ private:
struct kpToolFlowBasePrivate *d;
};
diff --git a/tools/kpTool.cpp b/tools/kpTool.cpp
index a1e8555..802ee0b 100644
--- a/tools/kpTool.cpp
+++ b/tools/kpTool.cpp
@@ -53,19 +53,19 @@
//---------------------------------------------------------------------
-kpTool::kpTool (const QString &text, const QString &description,
- int key,
- kpToolEnvironment *environ,
- QObject *parent, const QString &name)
- : QObject (parent),
- d (new kpToolPrivate ())
+kpTool::kpTool(const QString &text, const QString &description,
+ int key,
+ kpToolEnvironment *environ,
+ QObject *parent, const QString &name)
+ : QObject(parent),
+ d(new kpToolPrivate())
{
d->key = key;
d->action = 0;
d->ignoreColorSignals = 0;
d->shiftPressed = false, d->controlPressed = false, d->altPressed = false; // \
set in beginInternal() d->beganDraw = false;
- d->text = text, d->description = description; setObjectName (name);
+ d->text = text, d->description = description;
d->began = false;
d->viewUnderStartPoint = 0;
d->userShapeStartPoint = KP_INVALID_POINT;
@@ -74,7 +74,8 @@ kpTool::kpTool (const QString &text, const QString &description,
d->environ = environ;
- initAction ();
+ setObjectName(name);
+ initAction();
}
//---------------------------------------------------------------------
@@ -95,30 +96,24 @@ kpTool::~kpTool ()
// private
void kpTool::initAction ()
{
-#if DEBUG_KP_TOOL && 0
- kDebug () << "kpTool(" << objectName () << "::initAction()";
-#endif
-
KActionCollection *ac = d->environ->actionCollection ();
Q_ASSERT (ac);
-
- d->action = new kpToolAction (text (), iconName (), shortcutForKey (d->key),
- this, SLOT (slotActionActivated ()),
- ac, objectName ());
+ d->action = new kpToolAction(text(), objectName(), shortcutForKey(d->key),
+ this, SIGNAL(actionActivated()),
+ ac, objectName());
// Make tools mutually exclusive by placing them in the same group.
- d->action->setActionGroup (d->environ->toolsActionGroup ());
+ d->action->setActionGroup(d->environ->toolsActionGroup ());
- d->action->setWhatsThis (description ());
+ d->action->setWhatsThis(d->description);
- connect (d->action, SIGNAL (toolTipChanged (const QString &)),
- this, SLOT (slotActionToolTipChanged (const QString &)));
+ connect(d->action, SIGNAL(changed()), this, SIGNAL (actionToolTipChanged()));
}
//---------------------------------------------------------------------
-
// public
+
QString kpTool::text () const
{
return d->text;
@@ -126,16 +121,6 @@ QString kpTool::text () const
//---------------------------------------------------------------------
-// public
-void kpTool::setText (const QString &text)
-{
- d->text = text;
-
- d->action->setText (d->text);
-}
-
-//---------------------------------------------------------------------
-
static bool KeyIsText (int key)
{
// TODO: should work like !QKeyEvent::text().isEmpty()
@@ -160,35 +145,14 @@ QString kpTool::toolTipForTextAndShortcut (const QString &text,
//---------------------------------------------------------------------
-// public static
QString kpTool::toolTip () const
{
- return toolTipForTextAndShortcut (text (), shortcut ());
+ return toolTipForTextAndShortcut(d->text, d->action->shortcut());
}
//---------------------------------------------------------------------
-
-
-// public
-int kpTool::key () const
-{
- return d->key;
-}
-
-//---------------------------------------------------------------------
-
-// public
-void kpTool::setKey (int key)
-{
- d->key = key;
-
- // TODO: this probably not wise since it nukes the user's settings
- d->action->setShortcut (shortcutForKey (d->key));
-}
-
-//---------------------------------------------------------------------
-
// public static
+
KShortcut kpTool::shortcutForKey (int key)
{
KShortcut shortcut;
@@ -205,42 +169,8 @@ KShortcut kpTool::shortcutForKey (int key)
}
//---------------------------------------------------------------------
-
// public
-KShortcut kpTool::shortcut () const
-{
- return d->action->shortcut ();
-}
-//---------------------------------------------------------------------
-
-// public
-QString kpTool::description () const
-{
- return d->description;
-}
-
-//---------------------------------------------------------------------
-
-// public
-void kpTool::setDescription (const QString &description)
-{
- d->description = description;
-
- d->action->setWhatsThis (d->description);
-}
-
-//---------------------------------------------------------------------
-
-// public virtual
-QString kpTool::iconName () const
-{
- return objectName ();
-}
-
-//---------------------------------------------------------------------
-
-// public
kpToolAction *kpTool::action () const
{
return d->action;
@@ -248,38 +178,47 @@ kpToolAction *kpTool::action () const
//---------------------------------------------------------------------
-// REFACTOR: need to add access specifier comments (like "public virtual [base \
AmOverridingThisClass'Method]") not just in kpTool but all over \
KolourPaint source.
-
kpDocument *kpTool::document () const
{
return d->environ->document ();
}
+//---------------------------------------------------------------------
+
kpViewManager *kpTool::viewManager () const
{
return d->environ->viewManager ();
}
+//---------------------------------------------------------------------
+
kpToolToolBar *kpTool::toolToolBar () const
{
return d->environ->toolToolBar ();
}
+//---------------------------------------------------------------------
+
kpColor kpTool::color (int which) const
{
return d->environ->color (which);
}
+//---------------------------------------------------------------------
+
kpColor kpTool::foregroundColor () const
{
return color (0);
}
+//---------------------------------------------------------------------
+
kpColor kpTool::backgroundColor () const
{
return color (1);
}
+//---------------------------------------------------------------------
// TODO: Some of these might not be common enough.
// Just put in kpToolEnvironment?
diff --git a/tools/kpTool.h b/tools/kpTool.h
index ad5f8aa..fd836e6 100644
--- a/tools/kpTool.h
+++ b/tools/kpTool.h
@@ -86,36 +86,17 @@ public:
QObject *parent, const QString &name);
virtual ~kpTool ();
-private:
- // Only called by ctor to create action().
- void initAction ();
-
-signals:
- void actionToolTipChanged (const QString &string);
-
-protected slots:
- void slotActionToolTipChanged (const QString &string);
+ kpToolAction *action () const;
-public:
QString text () const;
- void setText (const QString &text);
- static QString toolTipForTextAndShortcut (const QString &text,
- const KShortcut &shortcut);
+ static QString toolTipForTextAndShortcut (const QString &text, const KShortcut \
&shortcut); QString toolTip () const;
- QString description () const;
- void setDescription (const QString &description);
-
- int key () const;
- void setKey (int key);
-
// Given a single <key>, returns a shortcut with <key>
// (disabled when the user is editing text) and as an alternate,
// <some modifiers>+<key>.
static KShortcut shortcutForKey (int key);
- KShortcut shortcut () const;
-
static QRect neededRect (const QRect &rect, int lineWidth);
static QImage neededPixmap (const QImage &image, const QRect &boundingRect);
@@ -139,6 +120,13 @@ public:
// outside of the document/view.
QPoint calculateCurrentPoint (bool zoomToDoc = true) const;
+private:
+ // Only called by ctor to create action().
+ void initAction ();
+
+signals:
+ void actionToolTipChanged();
+
public slots:
// Call this when something below the mouse cursor may have changed
// and/or if the view has moved relative to the cursor (as opposed to
@@ -175,10 +163,10 @@ protected:
public: // for kpMainWindow
kpView *viewUnderStartPoint () const;
+
protected:
kpView *viewUnderCursor () const;
-
public:
// Called when the tool is selected.
virtual void begin ();
@@ -218,21 +206,9 @@ signals:
// emitted after cancelShape() has been called
void cancelledShape (const QPoint &point);
-
-public:
- // Override this to use an icon whose name is not the same as the tool's
- // <name> as passed to the constructor.
- virtual QString iconName () const;
-
- kpToolAction *action () const;
-
signals:
// User clicked on the tool's action - i.e. select this tool
- void actionActivated ();
-
-protected slots:
- void slotActionActivated ();
-
+ void actionActivated();
protected:
// (this method is called by kpTool just as it is needed - its value
@@ -282,7 +258,6 @@ protected:
kpColor color (int which) const;
- // TODO: does anyone actually use these?
kpColor foregroundColor () const;
kpColor backgroundColor () const;
diff --git a/tools/kpToolAction.cpp b/tools/kpToolAction.cpp
index e4da6f1..41c395e 100644
--- a/tools/kpToolAction.cpp
+++ b/tools/kpToolAction.cpp
@@ -1,6 +1,6 @@
-
/*
- Copyright (c) 2003-2007 Clarence Dang <dang@kde.org>
+ Copyright(c) 2003-2007 Clarence Dang <dang@kde.org>
+ Copyright(c) 2011 Martin Koller <kollix@aon.at>
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -17,7 +17,7 @@
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@@ -25,107 +25,44 @@
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define DEBUG_KP_TOOL_ACTION 0
-
-
#include <kpToolAction.h>
#include <kactioncollection.h>
-#include <kdebug.h>
#include <kicon.h>
#include <kpTool.h>
+//---------------------------------------------------------------------
-kpToolAction::kpToolAction (const QString &text,
+kpToolAction::kpToolAction(const QString &text,
const QString &pic, const KShortcut &shortcut,
const QObject *receiver, const char *slot,
KActionCollection *ac, const QString &name)
- : KToggleAction (KIcon (pic), text, ac)
+ : KToggleAction(KIcon(pic), text, ac)
{
-#if DEBUG_KP_TOOL_ACTION
- kDebug () << "kpToolAction<" << name << ">::kpToolAction(shortcut="
- << shortcut.toString () << ")" << endl;
-#endif
-
- KToggleAction::setShortcut (shortcut);
+ KToggleAction::setShortcut(shortcut);
- if (receiver && slot)
- connect (this, SIGNAL (triggered (bool)), receiver, slot);
+ if ( receiver && slot )
+ connect(this, SIGNAL(triggered(bool)), receiver, slot);
- updateToolTip ();
+ updateToolTip();
+ connect(this, SIGNAL(changed()), this, SLOT(updateToolTip()));
- ac->addAction (name, this);
+ ac->addAction(name, this);
}
//---------------------------------------------------------------------
// protected
-void kpToolAction::updateToolTip ()
-{
- const QString newToolTip =
- kpTool::toolTipForTextAndShortcut (text (), shortcut ());
-#if DEBUG_KP_TOOL_ACTION
- kDebug () << "\tkpToolAction<" << objectName () << ">::updateToolTip()"
- << " text='" << text () << "' shortcut=" << shortcut ().toString ()
- << " oldToolTip=" << toolTip () << " newToolTip=" << newToolTip
- << endl;
-#endif
- if (newToolTip == toolTip ())
- return;
-
- setToolTip (newToolTip);
- emit toolTipChanged (newToolTip);
-}
-
-//---------------------------------------------------------------------
-
-// public static
-void kpToolAction::updateAllActionsToolTips (KActionCollection *ac)
+void kpToolAction::updateToolTip()
{
-#if DEBUG_KP_TOOL_ACTION
- kDebug () << "kpToolAction::updateAllActionsToolTips()";
-#endif
-
- foreach (QAction *action, ac->actions ())
- {
- kpToolAction *toolAction = qobject_cast <kpToolAction *> (action);
- if (!toolAction)
- continue;
-
- toolAction->updateToolTip ();
- }
-}
-
-//---------------------------------------------------------------------
-//
-// KToggleAction overrides
-//
-
-// public
-void kpToolAction::setText (const QString &text)
-{
-#if DEBUG_KP_TOOL_ACTION
- kDebug () << "kpToolAction<" << objectName ()
- << ">::setText(" << text << ")" << endl;
-#endif
+ const QString newToolTip =
+ kpTool::toolTipForTextAndShortcut(text(), shortcut());
- KToggleAction::setText (text);
- updateToolTip ();
-}
-
-//---------------------------------------------------------------------
-
-// public
-void kpToolAction::setShortcut (const KShortcut &shortcut)
-{
-#if DEBUG_KP_TOOL_ACTION
- kDebug () << "kpToolAction<" << objectName ()
- << ">::setShortcut(" << shortcut.toString () << ")" << endl;
-#endif
+ if ( newToolTip == toolTip() )
+ return;
- KToggleAction::setShortcut (shortcut);
- updateToolTip ();
+ setToolTip(newToolTip);
}
//---------------------------------------------------------------------
diff --git a/tools/kpToolAction.h b/tools/kpToolAction.h
index b4c8dfa..c02285c 100644
--- a/tools/kpToolAction.h
+++ b/tools/kpToolAction.h
@@ -1,6 +1,6 @@
-
/*
Copyright (c) 2003-2007 Clarence Dang <dang@kde.org>
+ Copyright (c) 2011 Martin Koller <kollix@aon.at>
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -29,51 +29,24 @@
#ifndef KP_TOOL_ACTION_H
#define KP_TOOL_ACTION_H
-
#include <ktoggleaction.h>
-
class KActionCollection;
-
// Same as KToggleAction but shows the first single key trigger in the tooltip.
-// REFACTOR: Either push into kdelibs 4.x or make setText() and setShortcut()
-// virtual in KDE 5.x, to allow us to remove updateAllActionsToolTips()
-// hack.
+
class kpToolAction : public KToggleAction
{
-Q_OBJECT
-
-public:
- kpToolAction (const QString &text,
- const QString &pic, const KShortcut &shortcut,
- const QObject *receiver, const char *slot,
- KActionCollection *ac, const QString &name);
-
-signals:
- // Not emitted when toolTip is manually overridden by setToolTip()
- void toolTipChanged (const QString &string);
-
-protected:
- void updateToolTip ();
-
-public:
- // For all kpToolAction's in <ac>, calls updateToolTip().
- //
- // Call this e.g. after shortcuts have been changed but
- // kpToolAction::setShortcut() did not find out (since it's not
- // virtual).
- static void updateAllActionsToolTips (KActionCollection *ac);
-
+ Q_OBJECT
- //
- // KToggleAction overrides
- //
+ public:
+ kpToolAction(const QString &text,
+ const QString &pic, const KShortcut &shortcut,
+ const QObject *receiver, const char *slot,
+ KActionCollection *ac, const QString &name);
- // WARNING: The KToggleAction base does not have these as virtual.
-public:
- void setText (const QString &text);
- void setShortcut (const KShortcut &shortcut);
+ private slots:
+ void updateToolTip();
};
diff --git a/tools/kpToolZoom.cpp b/tools/kpToolZoom.cpp
index 35d7305..541c032 100644
--- a/tools/kpToolZoom.cpp
+++ b/tools/kpToolZoom.cpp
@@ -42,6 +42,7 @@
#include <kpSetOverrideCursorSaver.h>
#include <kpTempImage.h>
#include <kpToolEnvironment.h>
+#include <kpToolAction.h>
#include <kpViewManager.h>
@@ -75,23 +76,20 @@ kpToolZoom::kpToolZoom (kpToolEnvironment *environ, QWidget \
*parent) environ, parent, "tool_zoom"),
d (new kpToolZoomPrivate ())
{
+ // different from objectName()
+ action()->setIcon(KIcon("zoom-original"));
}
+//---------------------------------------------------------------------
+
kpToolZoom::~kpToolZoom ()
{
delete d;
}
-
+//---------------------------------------------------------------------
// public virtual [base kpTool]
-QString kpToolZoom::iconName () const
-{
- // Standard KDE action icon.
- return QString ("zoom-original");
-}
-
-// public virtual [base kpTool]
bool kpToolZoom::returnToPreviousToolAfterEndDraw () const
{
// If the user clicks to zoom in or out, s/he generally wants to click
diff --git a/tools/kpToolZoom.h b/tools/kpToolZoom.h
index e4b6858..6d24c60 100644
--- a/tools/kpToolZoom.h
+++ b/tools/kpToolZoom.h
@@ -41,8 +41,6 @@ public:
kpToolZoom (kpToolEnvironment *environ, QWidget *parent);
virtual ~kpToolZoom ();
- virtual QString iconName () const;
-
virtual bool returnToPreviousToolAfterEndDraw () const;
private:
diff --git a/tools/kpTool_OtherEvents.cpp b/tools/kpTool_OtherEvents.cpp
index 7cd0cd3..2ccd54e 100644
--- a/tools/kpTool_OtherEvents.cpp
+++ b/tools/kpTool_OtherEvents.cpp
@@ -164,19 +164,3 @@ void kpTool::slotColorSimilarityChangedInternal (double \
similarity, int processe }
//---------------------------------------------------------------------
-
-// protected slot
-void kpTool::slotActionToolTipChanged (const QString &string)
-{
- emit actionToolTipChanged (string);
-}
-
-//---------------------------------------------------------------------
-
-// protected slots
-void kpTool::slotActionActivated ()
-{
- emit actionActivated ();
-}
-
-//---------------------------------------------------------------------
diff --git a/widgets/toolbars/kpToolToolBar.cpp b/widgets/toolbars/kpToolToolBar.cpp
index 61f540f..d262dab 100644
--- a/widgets/toolbars/kpToolToolBar.cpp
+++ b/widgets/toolbars/kpToolToolBar.cpp
@@ -34,16 +34,10 @@
#include <qboxlayout.h>
#include <qgridlayout.h>
#include <qbuttongroup.h>
-#include <qdatetime.h>
#include <qevent.h>
#include <qtoolbutton.h>
-#include <QMainWindow>
-#include <kconfiggroup.h>
#include <kdebug.h>
-#include <kglobal.h>
-#include <kglobalsettings.h>
-#include <KIconLoader>
#include <kpDefs.h>
#include <kpTool.h>
@@ -66,6 +60,8 @@ public:
{
}
+ kpTool *tool() const { return m_tool; }
+
protected:
virtual void mouseDoubleClickEvent(QMouseEvent *e)
{
@@ -78,8 +74,8 @@ protected:
//---------------------------------------------------------------------
-kpToolToolBar::kpToolToolBar(const QString &label, int colsOrRows, QWidget *parent)
- : KToolBar(label, parent),
+kpToolToolBar::kpToolToolBar(const QString &name, int colsOrRows, QMainWindow \
*parent) + : KToolBar(name, parent, Qt::LeftToolBarArea),
m_vertCols (colsOrRows),
m_buttonGroup (0),
m_baseWidget (0),
@@ -87,9 +83,7 @@ kpToolToolBar::kpToolToolBar(const QString &label, int colsOrRows, \
QWidget *pare m_toolLayout (0),
m_previousTool (0), m_currentTool (0)
{
- setWindowTitle(label);
-
- m_baseWidget = new QWidget (this);
+ m_baseWidget = new QWidget(this);
m_toolWidgets.append (m_toolWidgetBrush =
new kpToolWidgetBrush (m_baseWidget, "Tool Widget Brush"));
@@ -104,12 +98,10 @@ kpToolToolBar::kpToolToolBar(const QString &label, int \
colsOrRows, QWidget *pare m_toolWidgets.append (m_toolWidgetSpraycanSize =
new kpToolWidgetSpraycanSize (m_baseWidget, "Tool Widget Spraycan Size"));
- for (QList <kpToolWidgetBase *>::const_iterator it = m_toolWidgets.constBegin \
();
- it != m_toolWidgets.constEnd ();
- ++it)
+ foreach(kpToolWidgetBase *w, m_toolWidgets)
{
- connect (*it, SIGNAL (optionSelected (int, int)),
- this, SIGNAL (toolWidgetOptionSelected ()));
+ connect(w, SIGNAL(optionSelected(int, int)),
+ this, SIGNAL(toolWidgetOptionSelected()));
}
adjustToOrientation(orientation());
@@ -125,13 +117,17 @@ kpToolToolBar::kpToolToolBar(const QString &label, int \
colsOrRows, QWidget *pare
connect(this, SIGNAL(iconSizeChanged(const QSize &)),
this, SLOT(slotIconSizeChanged(const QSize &)));
+
+ connect(this, SIGNAL(toolButtonStyleChanged(Qt::ToolButtonStyle)),
+ this, SLOT(slotToolButtonStyleChanged(Qt::ToolButtonStyle)));
}
//---------------------------------------------------------------------
-kpToolToolBar::~kpToolToolBar ()
+kpToolToolBar::~kpToolToolBar()
{
- unregisterAllTools ();
+ while ( !m_toolButtons.isEmpty() )
+ delete m_toolButtons.takeFirst();
}
//---------------------------------------------------------------------
@@ -139,79 +135,54 @@ kpToolToolBar::~kpToolToolBar ()
// public
void kpToolToolBar::registerTool (kpTool *tool)
{
- for (QList <kpButtonToolPair>::const_iterator it = m_buttonToolPairs.constBegin \
();
- it != m_buttonToolPairs.constEnd ();
- ++it)
+ foreach (const kpToolButton *b, m_toolButtons)
{
- if ((*it).m_tool == tool)
- return;
+ if ( b->tool() == tool ) // already given
+ return;
}
- int num = m_buttonToolPairs.count ();
- QToolButton *b = new kpToolButton (tool, m_baseWidget);
- b->setAutoRaise (true);
+ kpToolButton *b = new kpToolButton(tool, m_baseWidget);
+
+ b->setToolButtonStyle(toolButtonStyle());
b->setIconSize(iconSize());
+ b->setAutoRaise(true);
- b->setToolButtonStyle(Qt::ToolButtonIconOnly);
- b->setCheckable(true);
+ // tell layout to make all with equal width (much better when text-below-icon)
+ b->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- b->setText(tool->text ());
- b->setIcon(KIcon(tool->iconName()));
- b->setToolTip(tool->toolTip ());
- b->setWhatsThis(tool->description ());
+ b->setDefaultAction(tool->action());
- m_buttonGroup->addButton (b);
- addButton(b, orientation(), num);
+ m_buttonGroup->addButton(b);
+ addButton(b, orientation(), m_toolButtons.count());
- m_buttonToolPairs.append (kpButtonToolPair (b, tool));
+ m_toolButtons.append(b);
connect (tool, SIGNAL (actionActivated ()),
this, SLOT (slotToolActionActivated ()));
- connect (tool, SIGNAL (actionToolTipChanged (const QString &)),
- this, SLOT (slotToolActionToolTipChanged ()));
-}
-
-//---------------------------------------------------------------------
-// public
-void kpToolToolBar::unregisterTool (kpTool *tool)
-{
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
- {
- if ((*it).m_tool == tool)
- {
- delete ((*it).m_button);
- m_buttonToolPairs.erase (it);
-
- disconnect (tool, SIGNAL (actionActivated ()),
- this, SLOT (slotToolActionActivated ()));
- disconnect (tool, SIGNAL (actionToolTipChanged (const QString &)),
- this, SLOT (slotToolActionToolTipChanged ()));
- break;
- }
- }
+ adjustSizeConstraint();
}
//---------------------------------------------------------------------
-
// public
-void kpToolToolBar::unregisterAllTools ()
+
+void kpToolToolBar::unregisterTool(kpTool *tool)
{
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
+ for (int i = 0; i < m_toolButtons.count(); i++)
{
- delete ((*it).m_button);
+ if ( m_toolButtons[i]->tool() == tool )
+ {
+ delete m_toolButtons.takeAt(i);
+ disconnect(tool, SIGNAL(actionActivated()),
+ this, SLOT(slotToolActionActivated()));
+ return;
+ }
}
-
- m_buttonToolPairs.clear ();
}
//---------------------------------------------------------------------
-
// public
+
kpTool *kpToolToolBar::tool () const
{
return m_currentTool;
@@ -233,24 +204,12 @@ void kpToolToolBar::selectTool (const kpTool *tool, bool \
reselectIfSameTool)
if (tool)
{
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
- {
- if ((*it).m_tool == tool)
- {
- (*it).m_button->setChecked (true);
- slotToolButtonClicked ();
- break;
- }
- }
+ tool->action()->setChecked(true);
+ slotToolButtonClicked();
}
else
{
QAbstractButton *b = m_buttonGroup->checkedButton();
- #if DEBUG_KP_TOOL_TOOL_BAR
- kDebug () << "\twant to select no tool - button selected=" << b;
- #endif
if (b)
{
// HACK: qbuttongroup.html says the following about exclusive
@@ -291,12 +250,8 @@ void kpToolToolBar::selectPreviousTool ()
// public
void kpToolToolBar::hideAllToolWidgets ()
{
- for (QList <kpToolWidgetBase *>::const_iterator it = m_toolWidgets.constBegin \
();
- it != m_toolWidgets.constEnd ();
- ++it)
- {
- (*it)->hide ();
- }
+ foreach(kpToolWidgetBase *w, m_toolWidgets)
+ w->hide ();
}
//---------------------------------------------------------------------
@@ -306,14 +261,12 @@ kpToolWidgetBase *kpToolToolBar::shownToolWidget (int which) \
const {
int uptoVisibleWidget = 0;
- for (QList <kpToolWidgetBase *>::const_iterator it = m_toolWidgets.constBegin \
();
- it != m_toolWidgets.constEnd ();
- ++it)
+ foreach(kpToolWidgetBase *w, m_toolWidgets)
{
- if (!(*it)->isHidden ())
+ if ( !w->isHidden() )
{
if (which == uptoVisibleWidget)
- return *it;
+ return w;
uptoVisibleWidget++;
}
@@ -334,15 +287,13 @@ void kpToolToolBar::slotToolButtonClicked ()
#endif
kpTool *tool = 0;
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
+ foreach (const kpToolButton *button, m_toolButtons)
{
- if ((*it).m_button == b)
- {
- tool = (*it).m_tool;
- break;
- }
+ if ( button == b )
+ {
+ tool = button->tool();
+ break;
+ }
}
#if DEBUG_KP_TOOL_TOOL_BAR
@@ -392,51 +343,11 @@ void kpToolToolBar::slotToolActionActivated ()
<< endl;
#endif
- if (m_currentTool)
- {
- // If the user clicks on the same KToggleAction, it unchecks it
- // - this is inconsistent with the Tool Box so always make sure it's
- // checked.
- kpToolAction *action = m_currentTool->action ();
- if (action)
- {
- action->setChecked (true);
- }
- }
-
selectTool (tool, true/*reselect if same tool*/);
}
//---------------------------------------------------------------------
-// private slot
-void kpToolToolBar::slotToolActionToolTipChanged ()
-{
- const kpTool *tool = dynamic_cast<const kpTool *>(sender());
-
-#if DEBUG_KP_TOOL_TOOL_BAR
- kDebug () << "kpToolToolBar::slotToolActionToolTipChanged() tool="
- << (tool ? tool->objectName () : "null")
- << endl;
-#endif
-
- if (!tool)
- return;
-
- for (QList <kpButtonToolPair>::const_iterator it = m_buttonToolPairs.constBegin \
();
- it != m_buttonToolPairs.constEnd ();
- ++it)
- {
- if (tool == (*it).m_tool)
- {
- (*it).m_button->setToolTip (tool->toolTip ());
- return;
- }
- }
-}
-
-//---------------------------------------------------------------------
-
// public
void kpToolToolBar::adjustToOrientation(Qt::Orientation o)
{
@@ -456,35 +367,27 @@ void kpToolToolBar::adjustToOrientation(Qt::Orientation o)
m_baseLayout = new QBoxLayout (QBoxLayout::LeftToRight, m_baseWidget);
}
m_baseLayout->setSizeConstraint(QLayout::SetFixedSize);
- m_baseLayout->setSpacing (10);
- m_baseLayout->setMargin (5);
+ m_baseLayout->setContentsMargins(0, 0, 0, 0);
+
+ m_toolLayout = new QGridLayout();
+ m_toolLayout->setContentsMargins(0, 0, 0, 0);
- m_toolLayout = new QGridLayout ();
- m_toolLayout->setMargin (0);
- m_toolLayout->setSpacing (0);
// (ownership is transferred to m_baseLayout)
m_baseLayout->addItem (m_toolLayout);
int num = 0;
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
+ foreach (kpToolButton *b, m_toolButtons)
{
- addButton ((*it).m_button, o, num);
- num++;
+ addButton(b, o, num);
+ num++;
}
- for (QList <kpToolWidgetBase *>::const_iterator it = m_toolWidgets.constBegin \
();
- it != m_toolWidgets.constEnd ();
- ++it)
+ foreach(kpToolWidgetBase *w, m_toolWidgets)
{
- if (*it)
- {
- m_baseLayout->addWidget (*it,
- 0/*stretch*/,
- o == Qt::Vertical ? Qt::AlignHCenter : Qt::AlignVCenter);
- }
+ m_baseLayout->addWidget(w,
+ 0/*stretch*/,
+ o == Qt::Vertical ? Qt::AlignHCenter : Qt::AlignVCenter);
}
adjustSizeConstraint();
@@ -499,15 +402,23 @@ void kpToolToolBar::adjustSizeConstraint()
setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
if ( orientation() == Qt::Vertical )
- setFixedWidth(m_baseLayout->sizeHint().width());
+ {
+ setFixedWidth(m_baseLayout->sizeHint().width() +
+ layout()->contentsMargins().left() +
+ layout()->contentsMargins().right());
+ }
else
- setFixedHeight(m_baseLayout->sizeHint().height());
+ {
+ setFixedHeight(m_baseLayout->sizeHint().height() +
+ layout()->contentsMargins().top() +
+ layout()->contentsMargins().bottom());
+ }
}
//---------------------------------------------------------------------
// private
-void kpToolToolBar::addButton (QAbstractButton *button, Qt::Orientation o, int num)
+void kpToolToolBar::addButton(QAbstractButton *button, Qt::Orientation o, int num)
{
if (o == Qt::Vertical)
m_toolLayout->addWidget (button, num / m_vertCols, num % m_vertCols);
@@ -523,12 +434,19 @@ void kpToolToolBar::addButton (QAbstractButton *button, \
Qt::Orientation o, int n
void kpToolToolBar::slotIconSizeChanged(const QSize &size)
{
- for (QList <kpButtonToolPair>::iterator it = m_buttonToolPairs.begin ();
- it != m_buttonToolPairs.end ();
- ++it)
- {
- (*it).m_button->setIconSize(size);
- }
+ foreach (kpToolButton *b, m_toolButtons)
+ b->setIconSize(size);
+
+ m_baseLayout->activate();
+ adjustSizeConstraint();
+}
+
+//---------------------------------------------------------------------
+
+void kpToolToolBar::slotToolButtonStyleChanged(Qt::ToolButtonStyle style)
+{
+ foreach (kpToolButton *b, m_toolButtons)
+ b->setToolButtonStyle(style);
m_baseLayout->activate();
adjustSizeConstraint();
diff --git a/widgets/toolbars/kpToolToolBar.h b/widgets/toolbars/kpToolToolBar.h
index 21e2856..d693487 100644
--- a/widgets/toolbars/kpToolToolBar.h
+++ b/widgets/toolbars/kpToolToolBar.h
@@ -43,6 +43,7 @@ class QGridLayout;
class QWidget;
class kpTool;
+class kpToolButton;
class kpToolWidgetBase;
class kpToolWidgetBrush;
@@ -57,12 +58,11 @@ class kpToolToolBar : public KToolBar
Q_OBJECT
public:
- kpToolToolBar (const QString &label, int colsOrRows, QWidget *parent);
+ kpToolToolBar (const QString &name, int colsOrRows, QMainWindow *parent);
virtual ~kpToolToolBar ();
- void registerTool (kpTool *tool);
- void unregisterTool (kpTool *tool);
- void unregisterAllTools ();
+ void registerTool(kpTool *tool);
+ void unregisterTool(kpTool *tool);
kpTool *tool () const;
void selectTool (const kpTool *tool, bool reselectIfSameTool = false);
@@ -89,10 +89,10 @@ private slots:
void slotToolButtonClicked ();
void slotToolActionActivated ();
- void slotToolActionToolTipChanged ();
void adjustToOrientation(Qt::Orientation o);
void slotIconSizeChanged(const QSize &);
+ void slotToolButtonStyleChanged(Qt::ToolButtonStyle style);
private:
void addButton (QAbstractButton *button, Qt::Orientation o, int num);
@@ -112,25 +112,9 @@ private:
kpToolWidgetOpaqueOrTransparent *m_toolWidgetOpaqueOrTransparent;
kpToolWidgetSpraycanSize *m_toolWidgetSpraycanSize;
- QList <kpToolWidgetBase *> m_toolWidgets;
+ QList<kpToolWidgetBase *> m_toolWidgets;
- struct kpButtonToolPair
- {
- kpButtonToolPair (QAbstractButton *button, kpTool *tool)
- : m_button (button), m_tool (tool)
- {
- }
-
- kpButtonToolPair ()
- : m_button (0), m_tool (0)
- {
- }
-
- QAbstractButton *m_button;
- kpTool *m_tool;
- };
-
- QList <kpButtonToolPair> m_buttonToolPairs;
+ QList<kpToolButton *> m_toolButtons;
kpTool *m_previousTool, *m_currentTool;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic