#include <stack>
void PlugInMenu_Add( ui::Menu plugin_menu, IPlugIn* pPlugIn ){
- ui::Widget item, parent;
- ui::Menu menu{nullptr}, subMenu{nullptr};
+ ui::Widget item{ui::null}, parent{ui::null};
+ ui::Menu menu{ui::null}, subMenu{ui::null};
const char *menuText, *menuCommand;
std::stack<ui::Menu> menuStack;
std::size_t nCount = pPlugIn->getCommandCount();
if ( nCount > 0 ) {
- menu = ui::Menu();
+ menu = ui::Menu(ui::New);
if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( menu );
}
if ( menuText != 0 && strlen( menuText ) > 0 ) {
if ( !strcmp( menuText, "-" ) ) {
- item = ui::Widget(gtk_menu_item_new());
+ item = ui::Widget::from(gtk_menu_item_new());
gtk_widget_set_sensitive( item, FALSE );
}
else if ( !strcmp( menuText, ">" ) ) {
item.show();
menu.add(item);
- subMenu = ui::Menu();
+ subMenu = ui::Menu(ui::New);
gtk_menu_item_set_submenu( GTK_MENU_ITEM( item ), subMenu );
menuStack.push( menu );
menu = subMenu;
{
item = ui::MenuItem( menuText );
g_object_set_data( G_OBJECT( item ),"command", const_cast<gpointer>( static_cast<const void*>( menuCommand ) ) );
- g_signal_connect( G_OBJECT( item ), "activate", G_CALLBACK( plugin_activated ), gint_to_pointer( m_nNextPlugInID ) );
+ item.connect( "activate", G_CALLBACK( plugin_activated ), gint_to_pointer( m_nNextPlugInID ) );
}
item.show();
menu.add(item);
}
ui::Menu g_plugins_menu{ui::null};
-GtkMenuItem* g_plugins_menu_separator = 0;
+ui::MenuItem g_plugins_menu_separator{ui::null};
void PluginsMenu_populate(){
class PluginsMenuConstructor : public PluginsVisitor
void PluginsMenu_clear(){
m_nNextPlugInID = 0;
- GList* lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), GTK_WIDGET( g_plugins_menu_separator ) );
+ GList* lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), g_plugins_menu_separator._handle );
while ( lst->next )
{
- gtk_container_remove( GTK_CONTAINER( g_plugins_menu ), GTK_WIDGET( lst->next->data ) );
- lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), GTK_WIDGET( g_plugins_menu_separator ) );
+ g_plugins_menu.remove(ui::Widget::from(lst->next->data));
+ lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), g_plugins_menu_separator._handle );
}
}
ui::MenuItem create_plugins_menu(){
// Plugins menu
auto plugins_menu_item = new_sub_menu_item_with_mnemonic( "_Plugins" );
- auto menu = ui::Menu(GTK_MENU( gtk_menu_item_get_submenu( plugins_menu_item ) ));
+ auto menu = ui::Menu::from( gtk_menu_item_get_submenu( plugins_menu_item ) );
if ( g_Layout_enableDetachableMenus.m_value ) {
menu_tearoff( menu );
}
//TODO: some modules/plugins do not yet support refresh
#if 0
- create_menu_item_with_mnemonic( menu, "Refresh", FreeCaller<Restart>() );
+ create_menu_item_with_mnemonic( menu, "Refresh", makeCallbackF(Restart) );
// NOTE: the seperator is used when doing a refresh of the list, everything past the seperator is removed
g_plugins_menu_separator = menu_separator( menu );