diff options
Diffstat (limited to 'lib/kofficeui/tktoolbarbutton.h')
-rw-r--r-- | lib/kofficeui/tktoolbarbutton.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/lib/kofficeui/tktoolbarbutton.h b/lib/kofficeui/tktoolbarbutton.h new file mode 100644 index 00000000..a4724672 --- /dev/null +++ b/lib/kofficeui/tktoolbarbutton.h @@ -0,0 +1,227 @@ +/* + * Kivio - Visual Modelling and Flowcharting + * Copyright (C) 2000 theKompany.com + * + * 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 TKTOOLBARBUTTON_H +#define TKTOOLBARBUTTON_H + +#include <tkaction.h> + +#include <qpixmap.h> +#include <qtoolbutton.h> +#include <kglobal.h> + +class KToolBar; +class KInstance; +class QPopupMenu; +class QPainter; + +class TKToolBarButton : public QToolButton +{ Q_OBJECT +public: + TKToolBarButton(const QString& icon, const QString& txt, + QWidget* parent = 0, const char *name=0L, + KInstance *_instance = KGlobal::instance()); + + TKToolBarButton(const QPixmap&, const QString&, QWidget* parent=0, const char* name=0); + ~TKToolBarButton(); + + void setIconMode(TK::IconMode); + void setRaised(bool); + void setAutoRaised(bool); + + /** + * Enable/Disable this button + * + * @param enable Defaults to true + */ + void setEnabled(bool enable = true); + + /** + * Set the pixmap directly for this button. This pixmap should be + * the active one... the dimmed and disabled pixmaps are constructed + * based on this one. However, don't use this function unless you + * are positive that you don't want to use @ref setIcon. + * + * @param pixmap The active pixmap + */ + virtual void setPixmap(const QPixmap &pixmap); + + /** + * Set the pixmap directly for this button. This pixmap should be + * the active one.. however, the disabled and default pixmaps will + * only be constructed if @ref #generate is true. In any event, + * don't use this function unless you are positive that you don't + * want to use @ref setIcon. + * + * @param pixmap The active pixmap + * @param generate If true, then the other pixmaps will be + * automatically generated using configurable effects + */ + virtual void setPixmap(const QPixmap &pixmap, bool generate); + + /** + * Force the button to use this pixmap as the default one rather + * then generating it using effects. + * + * @param pixmap The pixmap to use as the default (normal) one + */ + virtual void setDefaultPixmap(const QPixmap& pixmap); + + /** + * Force the button to use this pixmap when disabled one rather then + * generating it using effects. + * + * @param pixmap The pixmap to use when disabled + */ + virtual void setDisabledPixmap(const QPixmap& pixmap); + + /** + * Set the text for this button. The text will be either used as a + * tooltip (IconOnly) or will be along side the icon + * + * @param text The button (or tooltip) text + */ + virtual void setText(const QString &text); + QString text(); + + /** + * Set the icon for this button. This icon should be the active + * one... the dimmed and disabled icons are constructed based on + * this one. The actual pixmap will be loaded internally. This + * function is preferred over @ref setPixmap + * + * @param icon The name of the active pixmap + */ + virtual void setIcon(const QString &icon); + + /** + * Force the button to use this icon as the default one rather + * then generating it using effects. + * + * @param icon The icon to use as the default (normal) one + */ + virtual void setDefaultIcon(const QString& icon); + + /** + * Force the button to use this icon when disabled one rather then + * generating it using effects. + * + * @param icon The icon to use when disabled + */ + virtual void setDisabledIcon(const QString& icon); + + /** + * Turn this button on or off + * + * @param flag true or false + */ + void on(bool flag = true); + + /** + * Toggle this button + */ + void toggle(); + + /** + * Turn this button into a toggle button or disable the toggle + * aspects of it. This does not toggle the button itself. Use @ref + * toggle for that. + * + * @param toggle true or false + */ + void setToggle(bool toggle = true); + + /** + * Return a pointer to this button's popup menu (if it exists) + */ + QPopupMenu *popup(); + + /** + * Give this button a popup menu. There will not be a delay when + * you press the button. Use @ref setDelayedPopup if you want that + * behavior + * + * @param p The new popup menu + */ + void setPopup (QPopupMenu *p); + + /** + * Gives this button a delayed popup menu. + * + * This function allows you to add a delayed popup menu to the button. + * The popup menu is then only displayed when the button is pressed and + * held down for about half a second. You can also make the poup-menu + * "sticky", i.e. visible until a selection is made or the mouse is + * clikced elsewhere, by simply setting the second argument to true. + * This "sticky" button feature allows you to make a selection without + * having to press and hold down the mouse while making a selection. + * + * @param p the new popup menu + * @param toggle if true, makes the button "sticky" (toggled) + */ + void setDelayedPopup(QPopupMenu *p, bool toggle = false); + + QPixmap getActivePixmap() const; + + virtual QSize sizeHint() const; + virtual QSize minimumSizeHint() const; + +signals: + void buttonClicked(); + void buttonPressed(); + void buttonReleased(); + void buttonToggled(); + +public slots: + void modeChange(); + +protected: + void paletteChange(const QPalette &); + void leaveEvent(QEvent *e); + void enterEvent(QEvent *e); + void drawButton(QPainter *p); + bool eventFilter (QObject *o, QEvent *e); + void showMenu(); + + void makeDefaultPixmap(); + void makeDisabledPixmap(); + bool arrowPressed( const QPoint& pos ) { + int x = pos.x(); + int y = pos.y(); + return (x > width() - 12 && x <= width() && y > 0 && y < height()); + } + +private: + QPixmap defaultPixmap; + QPixmap activePixmap; + QPixmap disabledPixmap; + virtual void setIcon(const QPixmap &p) { QButton::setIcon(p); } + class TKToolBarButtonPrivate; + TKToolBarButtonPrivate *d; + + +protected slots: + void slotClicked(); + void slotPressed(); + void slotReleased(); + void slotToggled(); + void slotDelayTimeout(); +}; + +#endif |