/* This file is part of the KDE project Copyright (C) 2005 Jaroslaw Staniek This program 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 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "kexismalltoolbutton.h" #include #include #include #include #include #include KexiSmallToolButton::KexiSmallToolButton(TQWidget* parent, const TQString& text, const TQString& icon, const char* name) : TQToolButton(parent, name) { init(); update(text, SmallIconSet(icon)); } KexiSmallToolButton::KexiSmallToolButton(TQWidget* parent, const TQString& text, const TQIconSet& iconSet, const char* name) : TQToolButton(parent, name) { init(); update(text, iconSet); } KexiSmallToolButton::KexiSmallToolButton(TQWidget* parent, KAction* action) : TQToolButton(parent, action->name()) , m_action(action) { init(); connect(this, TQT_SIGNAL(clicked()), action, TQT_SLOT(activate())); connect(action, TQT_SIGNAL(enabled(bool)), this, TQT_SLOT(setEnabled(bool))); updateAction(); } KexiSmallToolButton::~KexiSmallToolButton() { } void KexiSmallToolButton::updateAction() { if (!m_action) return; update(m_action->text(), m_action->iconSet(KIcon::Small)); setAccel(m_action->shortcut()); TQToolTip::add(this, m_action->toolTip()); TQWhatsThis::add(this, m_action->whatsThis()); } void KexiSmallToolButton::init() { setPaletteBackgroundColor(palette().active().background()); setSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Preferred); TQFont f(KGlobalSettings::toolBarFont()); f.setPixelSize(Kexi::smallFont().pixelSize()); setFont(f); setAutoRaise(true); } void KexiSmallToolButton::update(const TQString& text, const TQIconSet& iconSet, bool tipToo) { int width = 0; if (text.isEmpty()) { width = 10; setUsesTextLabel(false); } else { width += TQFontMetrics(font()).width(text+" "); setUsesTextLabel(true); setTextPosition(TQToolButton::Right); TQToolButton::setTextLabel(text, tipToo); } if (!iconSet.isNull()) { width += IconSize(KIcon::Small); TQToolButton::setIconSet(iconSet); } setFixedWidth( width ); } void KexiSmallToolButton::setIconSet( const TQIconSet& iconSet ) { update(textLabel(), iconSet); } void KexiSmallToolButton::setIconSet( const TQString& icon ) { setIconSet( SmallIconSet(icon) ); } void KexiSmallToolButton::setTextLabel( const TQString & newLabel, bool tipToo ) { Q_UNUSED( tipToo ); update(newLabel, iconSet()); } void KexiSmallToolButton::drawButton( TQPainter *_painter ) { TQToolButton::drawButton(_painter); if (TQToolButton::popup()) { TQStyle::SFlags arrowFlags = TQStyle::Style_Default; if (isDown()) arrowFlags |= TQStyle::Style_Down; if (isEnabled()) arrowFlags |= TQStyle::Style_Enabled; tqstyle().tqdrawPrimitive(TQStyle::PE_ArrowDown, _painter, TQRect(width()-7, height()-7, 5, 5), colorGroup(), arrowFlags, TQStyleOption() ); } } #include "kexismalltoolbutton.moc"