20#include "ttdeaction.h"
21#include "ttdetoolbarbutton.h"
22#include "tkcombobox.h"
27#include <tdetoolbar.h>
28#include <kiconloader.h>
30#define SET_FOR_ALL_CONTAINER(WIDGET_TYPE,METHOD_NAME,VALUE) \
31 for( int id = 0; id < containerCount(); ++id ) { \
32 TQWidget* w = container(id); \
33 if ( w->inherits("TDEToolBar") ) { \
34 TQWidget* r = static_cast<TDEToolBar*>(w)->getWidget(itemId(id)); \
35 if (qstrcmp(r->name(),"KTToolBarLayout")==0) \
36 r = (TQWidget*)r->child("widget"); \
37 if ( r && r->inherits(#WIDGET_TYPE) ) { \
38 WIDGET_TYPE* b = static_cast<WIDGET_TYPE*>(r); \
39 b->METHOD_NAME(VALUE); \
44TTDEAction::TTDEAction(TQObject* parent,
const char* name)
47 m_imode = TK::IconOnly;
50TTDEAction::~TTDEAction()
54int TTDEAction::plug(TQWidget* widget,
int index)
56 if ( widget->inherits(
"TDEToolBar") ) {
57 TDEToolBar* bar =
static_cast<TDEToolBar*
>(widget);
59 TDEInstance *instance;
61 if ( parentCollection() )
62 instance = parentCollection()->instance();
64 instance = TDEGlobal::instance();
66 TTDEToolBarButton* b =
new TTDEToolBarButton(icon(),plainText(),bar,
name(),instance);
69 b->setIconMode(m_imode);
73 addContainer(bar,id_);
74 connect( bar, TQ_SIGNAL(destroyed()),
this, TQ_SLOT(slotDestroyed()) );
76 return containerCount() - 1;
81void TTDEAction::initToolBarButton(TTDEToolBarButton* button)
83 connect(button,TQ_SIGNAL(buttonClicked()),TQ_SLOT(slotActivated()));
86TK::IconMode TTDEAction::iconMode()
91void TTDEAction::setIconMode(TK::IconMode mode)
94 SET_FOR_ALL_CONTAINER(TTDEToolBarButton,setIconMode,mode)
97void TTDEAction::setText(
const TQString& text)
103void TTDEAction::setIcon(
const TQString& icon)
105 TDEAction::setIcon(icon);
109void TTDEAction::updateLayout()
111 int len = containerCount();
112 for(
int id = 0;
id < len; ++id ) {
113 TQWidget* w = container(
id );
114 if (w->inherits(
"TDEToolBar")) {
115 TQWidget* r =
static_cast<TDEToolBar*
>(w)->getWidget(itemId(
id));
116 if (qstrcmp(r->name(),
"KTToolBarLayout")==0) {
123TQWidget* TTDEAction::createLayout(TQWidget* parent, TQWidget* children)
125 TQWidget* base =
new TQWidget(parent,
"KTToolBarLayout");
126 TQLabel* textLabel =
new TQLabel(base,
"text");
127 textLabel->setMinimumHeight(1);
128 TQLabel* pixLabel =
new TQLabel(base,
"pixmap");
129 children->reparent(base,TQPoint(0,0));
130 children->setName(
"widget");
131 TQHBoxLayout* layout =
new TQHBoxLayout(base,0,3);
132 layout->setResizeMode(TQLayout::Minimum);
133 layout->addWidget(textLabel);
134 layout->addWidget(pixLabel);
135 layout->addWidget(children,1);
141void TTDEAction::updateLayout(TQWidget* base)
143 TQLabel* textLabel = (TQLabel*)base->child(
"text");
144 TQLabel* pixLabel = (TQLabel*)base->child(
"pixmap");
145 TQWidget* w = (TQWidget*)base->child(
"widget");
147 if (!textLabel || !pixLabel || !w)
150 if (!
text().isEmpty() && m_imode != TK::IconOnly ) {
151 textLabel->setText(
text());
158 pix =
iconSet(TDEIcon::Small).pixmap();
160 if (!icon().isEmpty())
161 pix = BarIcon(icon());
163 if (!pix.isNull() && m_imode != TK::TextOnly) {
164 pixLabel->setPixmap(pix);
169 base->setFixedWidth( w->sizeHint().width() +
170 (textLabel->isVisible() ? textLabel->sizeHint().width():0) +
171 (pixLabel->isVisible() ? pixLabel->sizeHint().width():0) );
174TKBaseSelectAction::TKBaseSelectAction( TQObject* parent,
const char* name )
175: TTDEAction(parent,
name)
181TKBaseSelectAction::~TKBaseSelectAction()
185int TKBaseSelectAction::plug(TQWidget* widget,
int index)
187 if ( widget->inherits(
"TDEToolBar") )
189 TDEToolBar* bar =
static_cast<TDEToolBar*
>( widget );
192 TKComboBox* cb =
new TKComboBox(m_editable,bar);
194 cb->setMinimumWidth( cb->sizeHint().width() );
195 TQWidget* base = createLayout(bar,cb);
198 addContainer( bar, id_ );
200 connect( bar, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotDestroyed() ) );
202 setCurrentItem(currentItem());
204 return containerCount() - 1;
209int TKBaseSelectAction::currentItem()
214void TKBaseSelectAction::initComboBox(TKComboBox* cb)
216 connect(cb,TQ_SIGNAL(
activated(
int)),TQ_SLOT(slotActivated(
int)));
219void TKBaseSelectAction::setEditable(
bool editable)
221 m_editable = editable;
222 SET_FOR_ALL_CONTAINER(TKComboBox,setEditable,editable)
225bool TKBaseSelectAction::isEditable()
230void TKBaseSelectAction::setCurrentItem(
int index)
233 SET_FOR_ALL_CONTAINER(TKComboBox,setCurrentItem,index)
236void TKBaseSelectAction::slotActivated(
int id)
238 if ( m_current ==
id )
251TTDESelectAction::TTDESelectAction( TQObject* parent,
const char* name )
252: TKBaseSelectAction(parent,
name)
256TTDESelectAction::~TTDESelectAction()
260void TTDESelectAction::initComboBox(TKComboBox* cb)
262 TKBaseSelectAction::initComboBox(cb);
263 connect(cb,TQ_SIGNAL(
activated(
const TQString&)),TQ_SLOT(slotActivated(
const TQString&)));
264 cb->insertStringList(items());
267void TTDESelectAction::slotActivated(
const TQString& text)
272void TTDESelectAction::setItems(
const TQStringList& lst )
277 SET_FOR_ALL_CONTAINER(TKComboBox,clear, )
278 SET_FOR_ALL_CONTAINER(TKComboBox,insertStringList,lst)
284TQStringList TTDESelectAction::items()
const
289void TTDESelectAction::clear()
291 SET_FOR_ALL_CONTAINER(TKComboBox,clear, )
294void TTDESelectAction::setEditText(
const TQString&
text)
296 SET_FOR_ALL_CONTAINER(TKComboBox,setEditText,
text)
299#undef SET_FOR_ALL_CONTAINER
300#include "ttdeaction.moc"
TQIconSet iconSet() const
virtual void setEnabled(bool enable)
virtual TQString text() const
virtual void setText(const TQString &text)
virtual int plug(TQWidget *widget, int index=-1)
static int getToolButtonID()
const char * name(StdAction id)