23#include <tdeapplication.h>
25#include <tdeglobalsettings.h>
26#include <tdetoolbar.h>
29#include "symbolaction.h"
35KFORMULA_NAMESPACE_BEGIN
37class SymbolComboItem :
public TQListBoxItem
40 SymbolComboItem(
const TQString&,
const TQFont& , TQChar, TQComboBox* combo );
41 virtual ~SymbolComboItem();
43 virtual int width(
const TQListBox* )
const;
44 virtual int height(
const TQListBox* )
const;
47 virtual void paint( TQPainter *p );
58int SymbolComboItem::widest = 0;
60SymbolComboItem::SymbolComboItem(
const TQString &name,
const TQFont& font,
61 TQChar symbol, TQComboBox *combo )
62 : TQListBoxItem( combo->listBox() ),
69 int charWidth = TQFontMetrics( m_font ).width( TQChar( m_symbol ) );
70 widest = TQMAX( widest, charWidth );
73SymbolComboItem::~SymbolComboItem()
77int SymbolComboItem::width(
const TQListBox * )
const
79 return widest + TQFontMetrics( TDEGlobalSettings::generalFont() ).width( text() ) + 12;
82int SymbolComboItem::height(
const TQListBox * )
const
84 int generalHeight = TQFontMetrics( TDEGlobalSettings::generalFont() ).lineSpacing();
85 int fontHeight = TQFontMetrics( m_font ).lineSpacing();
86 return TQMAX( generalHeight, fontHeight ) + 2;
89void SymbolComboItem::paint( TQPainter *p )
92 TQFontMetrics fm( p->fontMetrics() );
93 p->drawText( 3, fm.ascent() + fm.leading() / 2,
94 TQString(
"%1" ).arg( TQChar( m_symbol ) ) );
96 p->setFont( TDEGlobalSettings::generalFont() );
97 fm = p->fontMetrics();
98 p->drawText( widest + 6, height( m_combo->listBox() ) / 2 + fm.strikeOutPos(), m_name );
104SymbolAction::SymbolAction( TQObject* parent,
const char* name )
107 setEditable(
false );
110SymbolAction::SymbolAction(
const TQString& text,
const TDEShortcut& cut,
111 const TQObject* receiver,
const char* slot,
112 TQObject* parent,
const char* name )
115 setEditable(
false );
118int SymbolAction::plug( TQWidget* w,
int index )
120 if (kapp && !kapp->authorizeTDEAction(
name()))
122 if ( w->inherits(
"TDEToolBar" ) )
124 TDEToolBar* bar =
static_cast<TDEToolBar*
>( w );
126 KComboBox *cb =
new KComboBox( bar );
127 connect( cb, TQ_SIGNAL(
activated(
const TQString & ) ),
128 TQ_SLOT( slotActivated(
const TQString & ) ) );
131 cb->setMinimumWidth( cb->sizeHint().width() );
133 addContainer( bar, id_ );
135 connect( bar, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotDestroyed() ) );
137 updateItems( containerCount() - 1 );
139 return containerCount() - 1;
144void SymbolAction::setSymbols(
const TQStringList &names,
146 const TQMemArray<TQChar>& chars )
152 int len = containerCount();
153 for (
int i = 0; i < len; ++i )
157void SymbolAction::updateItems(
int id )
159 TQWidget *w = container(
id );
160 if ( w->inherits(
"TDEToolBar" ) ) {
161 TQWidget *r =
static_cast<TDEToolBar*
>( w )->getWidget( itemId(
id ) );
162 if ( r->inherits(
"TQComboBox" ) ) {
163 TQComboBox *cb =
static_cast<TQComboBox*
>( r );
166 for( uint i = 0; i <
items().count(); ++i ) {
167 new SymbolComboItem( *
items().at( i ), m_font, m_chars.at( i ), cb );
169 cb->setMinimumWidth( cb->sizeHint().width() );
174KFORMULA_NAMESPACE_END
virtual bool isEnabled() const
static int getToolButtonID()
virtual int comboWidth() const
virtual TQStringList items() const
virtual void setItems(const TQStringList &lst)
virtual int plug(TQWidget *widget, int index=-1)
TDEAction * cut(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name=0)
const char * name(StdAction id)