summaryrefslogtreecommitdiffstats
path: root/kdeui/kbuttonbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kbuttonbox.cpp')
-rw-r--r--kdeui/kbuttonbox.cpp377
1 files changed, 0 insertions, 377 deletions
diff --git a/kdeui/kbuttonbox.cpp b/kdeui/kbuttonbox.cpp
deleted file mode 100644
index 25bd6c71b..000000000
--- a/kdeui/kbuttonbox.cpp
+++ /dev/null
@@ -1,377 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 1997 Mario Weilguni (mweilguni@sime.com)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- 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.
-*/
-
-/*
- * KButtonBox class
- *
- * A container widget for buttons. Uses Qt layout control to place the
- * buttons, can handle both vertical and horizontal button placement.
-*
- * HISTORY
- *
- * 05/11/2004 Andrew Coles <andrew_coles@yahoo.co.uk>
- * Now uses QPtrListIterators instead of indexing through data->buttons
- * Item.button and data are now const pointers, set in the relevant constructors
- *
- * 03/08/2000 Mario Weilguni <mweilguni@kde.org>
- * Removed all those long outdated Motif stuff
- * Improved and clarified some if conditions (easier to understand)
- *
- * 11/13/98 Reginald Stadlbauer <reggie@kde.org>
- * Now in Qt 1.4x motif default buttons have no extra width/height anymore.
- * So the KButtonBox doesn't add this width/height to default buttons anymore
- * which makes the buttons look better.
- *
- * 01/17/98 Mario Weilguni <mweilguni@sime.com>
- * Fixed a bug in tqsizeHint()
- * Improved the handling of Motif default buttons
- *
- * 01/09/98 Mario Weilguni <mweilguni@sime.com>
- * The last button was to far right away from the right/bottom border.
- * Fixed this. Removed old code. Buttons get now a minimum width.
- * Programmer may now override minimum width and height of a button.
- *
- */
-
-#include "kbuttonbox.moc"
-#include <kglobalsettings.h>
-#include <kguiitem.h>
-#include <kpushbutton.h>
-#include <tqptrlist.h>
-#include <assert.h>
-
-#define minButtonWidth 50
-
-class KButtonBox::Item {
-public:
- KPushButton* const button;
- bool noexpand;
- unsigned short stretch;
- unsigned short actual_size;
-
- Item(KPushButton* const _button) : button(_button) {}
-};
-
-template class TQPtrList<KButtonBox::Item>;
-
-class KButtonBoxPrivate {
-public:
- unsigned short border;
- unsigned short autoborder;
- unsigned short orientation;
- bool activated;
- TQPtrList<KButtonBox::Item> buttons;
-};
-
-KButtonBox::KButtonBox(TQWidget *parent, Orientation _orientation,
- int border, int autoborder)
- : TQWidget(parent), data(new KButtonBoxPrivate)
-{
- assert(data);
-
- data->orientation = _orientation;
- data->border = border;
- data->autoborder = autoborder < 0 ? border : autoborder;
- data->buttons.setAutoDelete(true);
-}
-
-KButtonBox::~KButtonBox() {
- delete data;
-}
-
-TQPushButton *KButtonBox::addButton(const TQString& text, bool noexpand) {
- Item* const item = new Item(new KPushButton(text, this));
-
- item->noexpand = noexpand;
- data->buttons.append(item);
- item->button->adjustSize();
-
- this->updateGeometry();
-
- return item->button;
-}
-
-TQPushButton *KButtonBox::addButton(const KGuiItem& guiitem, bool noexpand) {
- Item* const item = new Item(new KPushButton(guiitem, this));
-
- item->noexpand = noexpand;
- data->buttons.append(item);
- item->button->adjustSize();
-
- this->updateGeometry();
-
- return item->button;
-}
-
- TQPushButton *
-KButtonBox::addButton(
- const TQString & text,
- TQObject * receiver,
- const char * slot,
- bool noexpand
-)
-{
- TQPushButton * pb = addButton(text, noexpand);
-
- if ((0 != receiver) && (0 != slot))
- TQObject::connect(pb, TQT_SIGNAL(clicked()), receiver, slot);
-
- return pb;
-}
-
- TQPushButton *
-KButtonBox::addButton(
- const KGuiItem& guiitem,
- TQObject * receiver,
- const char * slot,
- bool noexpand
-)
-{
- TQPushButton * pb = addButton(guiitem, noexpand);
-
- if ((0 != receiver) && (0 != slot))
- TQObject::connect(pb, TQT_SIGNAL(clicked()), receiver, slot);
-
- return pb;
-}
-
-void KButtonBox::addStretch(int scale) {
- if(scale > 0) {
- Item* const item = new Item(0);
- item->noexpand = false;
- item->stretch = scale;
- data->buttons.append(item);
- }
-}
-
-void KButtonBox::layout() {
- // resize all buttons
- const TQSize bs = bestButtonSize();
-
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item* item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
- if(b) {
- if(item->noexpand)
- b->setFixedSize(buttonSizeHint(b));
- else
- b->setFixedSize(bs);
- }
- ++itr;
- }
-
- setMinimumSize(tqsizeHint());
-}
-
-void KButtonBox::placeButtons() {
-
- if(data->orientation == Qt::Horizontal) {
- // calculate free size and stretches
- int fs = width() - 2 * data->border;
- int stretch = 0;
- {
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
- if(b) {
- fs -= b->width();
-
- // Last button?
- if(!itr.atLast())
- fs -= data->autoborder;
- } else {
- stretch +=item->stretch;
- }
-
- ++itr;
- }
- }
-
- // distribute buttons
- int x_pos = data->border;
- {
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
- if(b) {
- b->move(x_pos, (height() - b->height()) / 2);
-
- x_pos += b->width() + data->autoborder;
- } else {
- x_pos += (int)((((double)fs) * item->stretch) / stretch);
- }
-
- ++itr;
- }
- }
-
- } else { // VERTICAL
- // calcualte free size and stretches
- int fs = height() - 2 * data->border;
- int stretch = 0;
- {
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
- if(b)
- fs -= b->height() + data->autoborder;
- else
- stretch +=item->stretch;
-
- ++itr;
- }
-
- }
-
- // distribute buttons
- int y_pos = data->border;
- {
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
- if(b) {
- b->move((width() - b->width()) / 2, y_pos);
-
- y_pos += b->height() + data->autoborder;
- } else {
- y_pos += (int)((((double)fs) * item->stretch) / stretch);
- }
-
- ++itr;
- }
- }
- }
-}
-
-void KButtonBox::resizeEvent(TQResizeEvent *) {
- placeButtons();
-}
-
-TQSize KButtonBox::bestButtonSize() const {
- TQSize s(0, 0);
-
- // calculate optimal size
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
-
- if(b && !item->noexpand) {
- const TQSize bs = buttonSizeHint(b);
-
- const int bsWidth = bs.width();
- const int bsHeight = bs.height();
-
- if(bsWidth > s.width())
- s.setWidth(bsWidth);
- if(bsHeight > s.height())
- s.setHeight(bsHeight);
- }
- ++itr;
- }
-
- return s;
-}
-
-TQSize KButtonBox::tqsizeHint() const {
- unsigned int dw;
-
- if(data->buttons.isEmpty())
- return TQSize(0, 0);
- else {
- dw = 2 * data->border;
-
- const TQSize bs = bestButtonSize();
-
- TQPtrListIterator<KButtonBox::Item> itr(data->buttons);
- Item *item;
-
- while ( (item = itr.current()) != 0 ) {
- TQPushButton* const b = item->button;
-
- if(b) {
- TQSize s;
- if(item->noexpand)
- s = buttonSizeHint(b);
- else
- s = bs;
-
- if(data->orientation == Qt::Horizontal)
- dw += s.width();
- else
- dw += s.height();
-
- if( !itr.atLast() )
- dw += data->autoborder;
- }
-
- ++itr;
- }
-
- if(data->orientation == Qt::Horizontal)
- return TQSize(dw, bs.height() + 2 * data->border);
- else
- return TQSize(bs.width() + 2 * data->border, dw);
- }
-}
-
-TQSizePolicy KButtonBox::sizePolicy() const
-{
- return data->orientation == Qt::Horizontal?
- TQSizePolicy( TQSizePolicy::Minimum, TQSizePolicy::Fixed ) :
- TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Minimum );
-}
-
-/*
- * Returns the best size for a button. If a button is less than
- * minButtonWidth pixels wide, return minButtonWidth pixels
- * as minimum width
- */
-TQSize KButtonBox::buttonSizeHint(TQPushButton *b) const {
- TQSize s = b->tqsizeHint();
- const TQSize ms = b->tqminimumSize();
- if(s.width() < minButtonWidth)
- s.setWidth(minButtonWidth);
-
- // allows the programmer to override the settings
- const int msWidth = ms.width();
- const int msHeight = ms.height();
-
- if(msWidth > s.width())
- s.setWidth(msWidth);
- if(msHeight > s.height())
- s.setHeight(msHeight);
-
- return s;
-}
-
-void KButtonBox::virtual_hook( int, void* )
-{ /*BASE::virtual_hook( id, data );*/ }
-