28 #define YUILogComponent "qt-ui"
29 #include <yui/YUILog.h>
33 #include "YQMenuBar.h"
34 #include "YQSignalBlocker.h"
35 #include <yui/YEvent.h>
42 : QMenuBar( (QWidget *) parent->widgetRep() )
73 for ( YItemIterator it = itemsBegin(); it != itemsEnd(); ++it )
75 YMenuItem * item =
dynamic_cast<YMenuItem *
>( *it );
76 YUI_CHECK_PTR( item );
78 if ( ! item->isMenu() )
79 YUI_THROW( YUIException(
"YQMenuBar: Only menus allowed on toplevel." ) );
81 QMenu * menu = QMenuBar::addMenu( fromUTF8( item->label() ));
82 item->setUiItem( menu );
84 connect( menu, &pclass(menu)::triggered,
96 for ( YItemIterator it = begin; it != end; ++it )
98 YMenuItem * item =
dynamic_cast<YMenuItem *
>( *it );
99 YUI_CHECK_PTR( item );
102 if ( item->hasIconName() )
105 if ( item->isSeparator() )
107 parentMenu->addSeparator();
109 else if ( item->isMenu() )
111 QMenu * subMenu = parentMenu->addMenu( fromUTF8( item->label() ));
112 item->setUiItem( subMenu );
113 subMenu->setEnabled( item->isEnabled() );
120 if ( ! icon.isNull() )
121 subMenu->setIcon( icon );
123 connect( subMenu, &pclass(subMenu)::triggered,
126 rebuildMenuTree( subMenu, item->childrenBegin(), item->childrenEnd() );
130 QAction * action = parentMenu->addAction( fromUTF8( item->label() ) );
131 item->setUiItem( action );
132 _actionMap[ action ] = item;
133 action->setEnabled( item->isEnabled() );
134 action->setVisible( item->isVisible() );
136 if ( ! icon.isNull() )
137 action->setIcon( icon );
146 if ( _actionMap.contains( action ) )
147 _selectedItem = _actionMap[ action ];
164 QTimer::singleShot( 100,
this, SLOT(
returnNow() ) );
168 yuiError() <<
"Unknown action \"" << action->text() <<
"\"" << endl;
187 QObject * qObj =
static_cast<QObject *
>( item->uiItem() );
191 QMenu * menu = qobject_cast<QMenu *>( qObj );
194 menu->setEnabled( enabled );
197 QAction * action = qobject_cast<QAction *>( qObj );
200 action->setEnabled( enabled );
204 YMenuWidget::setItemEnabled( item, enabled );
211 QObject * qObj =
static_cast<QObject *
>( item->uiItem() );
215 QMenu * menu = qobject_cast<QMenu *>( qObj );
218 menu->menuAction()->setVisible( visible );
221 QAction * action = qobject_cast<QAction *>( qObj );
224 action->setVisible( visible );
228 YMenuWidget::setItemVisible( item, visible );
235 YWidget::setEnabled( enabled );
241 return sizeHint().width();
247 return sizeHint().height();
254 QWidget::resize( newWidth, newHeight );