27 #include <QPushButton>
32 #define YUILogComponent "qt-ui"
33 #include <yui/YUILog.h>
37 #include "YQMenuButton.h"
38 #include <yui/YEvent.h>
45 const string & label )
46 : QWidget( (QWidget *) parent->widgetRep() )
47 , YMenuButton( parent, label )
51 _qt_button =
new QPushButton( fromUTF8( label ),
this );
52 _qt_button->move( YQButtonBorder, YQButtonBorder );
53 setMinimumSize( _qt_button->minimumSize()
54 + 2 * QSize( YQButtonBorder, YQButtonBorder ) );
67 _qt_button->setText( fromUTF8( label ) );
68 YMenuButton::setLabel( label );
83 if ( _qt_button->menu() )
84 delete _qt_button->menu();
91 QMenu * menu =
new QMenu( _qt_button );
92 YUI_CHECK_NEW( menu );
93 _qt_button->setMenu( menu );
94 menu->setProperty(
"class",
"ymenubutton QMenu" );
96 connect( menu, &pclass(menu)::triggered,
110 for ( YItemIterator it = begin; it != end; ++it )
112 YMenuItem * item =
dynamic_cast<YMenuItem *
>( *it );
113 YUI_CHECK_PTR( item );
116 if ( item->hasIconName() )
119 if ( item->isSeparator() )
121 parentMenu->addSeparator();
123 else if ( item->isMenu() )
125 QMenu * subMenu = parentMenu->addMenu( fromUTF8( item->label() ));
126 item->setUiItem( subMenu );
128 if ( ! icon.isNull() )
129 subMenu->setIcon( icon );
131 connect( subMenu, &pclass(subMenu)::triggered,
134 rebuildMenuTree( subMenu, item->childrenBegin(), item->childrenEnd() );
142 QAction * action = parentMenu->addAction( fromUTF8( item->label() ) );
143 item->setUiItem( action );
144 _actionMap[ action ] = item;
146 if ( ! icon.isNull() )
147 action->setIcon( icon );
156 if ( _actionMap.contains( action ) )
157 _selectedItem = _actionMap[ action ];
174 QTimer::singleShot( 100,
this, SLOT(
returnNow() ) );
178 yuiError() <<
"Unknown action \"" << action->text() <<
"\"" << endl;
197 QObject * qObj =
static_cast<QObject *
>( item->uiItem() );
201 QMenu * menu = qobject_cast<QMenu *>( qObj );
204 menu->setEnabled( enabled );
207 QAction * action = qobject_cast<QAction *>( qObj );
210 action->setEnabled( enabled );
214 YMenuWidget::setItemEnabled( item, enabled );
221 _qt_button->setEnabled( enabled );
222 YWidget::setEnabled( enabled );
228 return 2*YQButtonBorder + _qt_button->sizeHint().width();
234 return 2*YQButtonBorder + _qt_button->sizeHint().height();
241 _qt_button->resize( newWidth - 2 * YQButtonBorder,
242 newHeight - 2 * YQButtonBorder );
243 resize( newWidth, newHeight );
250 _qt_button->setFocus();