diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 2bda8f7717adf28da4af0d34fb82f63d2868c31d (patch) | |
tree | 8d927b7b47a90c4adb646482a52613f58acd6f8c /kcalc/kcalc_button.h | |
download | tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.tar.gz tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kcalc/kcalc_button.h')
-rw-r--r-- | kcalc/kcalc_button.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/kcalc/kcalc_button.h b/kcalc/kcalc_button.h new file mode 100644 index 0000000..0998b5f --- /dev/null +++ b/kcalc/kcalc_button.h @@ -0,0 +1,105 @@ +/* + KCalc, a scientific calculator for the X window system using the + Qt widget libraries, available at no cost at http://www.troll.no + + Copyright (C) 1996 Bernd Johannes Wuebben + wuebben@math.cornell.edu + + 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 _KCALC_BUTTON_H +#define _KCALC_BUTTON_H + +#include <kpushbutton.h> + +// The class KCalcButton is an overriden KPushButton. It offers extra +// functionality e.g. labels can be richtext or the accels can be +// shown in the label, but the most important thing is that the button +// may have several modes with corresponding labels. When one switches +// modes, the corresponding label is displayed. + + +enum ButtonModeFlags {ModeNormal = 0, ModeInverse = 1, ModeHyperbolic = 2}; + +class QDomNode; + +// Each kcalc button can be in one of several modes. +// The following class describes label, tooltip etc. for each mode... +class ButtonMode +{ +public: + ButtonMode(void) {}; + ButtonMode(QString &label, QString &tooltip, bool is_label_richtext) + : is_label_richtext(is_label_richtext), tooltip(tooltip) + { + if (is_label_richtext) + this->label = "<qt type=\"page\"><center>" + label + "</center></qt>"; + else + this->label = label; + }; + + QString label; + bool is_label_richtext; + QString tooltip; +}; + + +class KCalcButton : public KPushButton +{ +Q_OBJECT + +public: + KCalcButton(QWidget *parent, const char * name = 0); + KCalcButton(const QString &label, QWidget *parent, const char * name = 0, + const QString &tooltip = QString()); + + void addMode(ButtonModeFlags mode, QString label, QString tooltip, bool is_label_richtext = false); + +public slots: + void slotSetMode(ButtonModeFlags mode, bool flag); + void slotSetAccelDisplayMode(bool flag); + +protected: + virtual void drawButtonLabel(QPainter *paint); + void paintLabel(QPainter *paint); + +protected: + bool _show_accel_mode; + QString _label; + + ButtonModeFlags _mode_flags; + + QMap<ButtonModeFlags, ButtonMode> _mode; +}; + +class KSquareButton : public KCalcButton +{ +Q_OBJECT + +public: + KSquareButton(QWidget *parent, const char * name = 0) + : KCalcButton(parent, name) { }; + KSquareButton(const QString &label, QWidget *parent, const char * name = 0, + const QString &tooltip = QString()) + : KCalcButton(label, parent, name, tooltip) { }; + +protected: + virtual void drawButtonLabel(QPainter *paint); + void paintLabel(QPainter *paint); +}; + +#endif // _KCALC_BUTTON_H |