X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fpluginmenu.cpp;h=8155d0a92d7d7bbe01c011111d9a9260c0854860;hb=7717adff6294ba4f080b217eb2c4089b64985187;hp=d3c1519d4d6cc1962f0954e7e767e7d930379f44;hpb=e2b92e121264da56e42426150f338c6e2220fc09;p=xonotic%2Fnetradiant.git diff --git a/radiant/pluginmenu.cpp b/radiant/pluginmenu.cpp index d3c1519d..8155d0a9 100644 --- a/radiant/pluginmenu.cpp +++ b/radiant/pluginmenu.cpp @@ -21,6 +21,8 @@ #include "pluginmenu.h" +#include + #include "stream/textstream.h" #include "gtkutil/pointer.h" @@ -40,19 +42,19 @@ void plugin_activated( ui::Widget widget, gpointer data ){ #include -void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){ - ui::Widget item, parent; - ui::Menu menu{nullptr}, subMenu{nullptr}; +void PlugInMenu_Add( ui::Menu plugin_menu, IPlugIn* pPlugIn ){ + ui::Widget item{ui::null}, parent{ui::null}; + ui::Menu menu{ui::null}, subMenu{ui::null}; const char *menuText, *menuCommand; std::stack menuStack; parent = ui::MenuItem( pPlugIn->getMenuName() ); parent.show(); - gtk_container_add( GTK_CONTAINER( plugin_menu ), parent ); + plugin_menu.add(parent); 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 ); } @@ -63,7 +65,7 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){ 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, ">" ) ) { @@ -76,9 +78,9 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){ item = ui::MenuItem( menuText ); item.show(); - gtk_container_add( GTK_CONTAINER( menu ), item ); + 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; @@ -99,10 +101,10 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){ { item = ui::MenuItem( menuText ); g_object_set_data( G_OBJECT( item ),"command", const_cast( static_cast( 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(); - gtk_container_add( GTK_CONTAINER( menu ), item ); + menu.add(item); pPlugIn->addMenuID( m_nNextPlugInID++ ); } } @@ -122,15 +124,15 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){ } } -GtkMenu* g_plugins_menu = 0; -GtkMenuItem* g_plugins_menu_separator = 0; +ui::Menu g_plugins_menu{ui::null}; +ui::MenuItem g_plugins_menu_separator{ui::null}; void PluginsMenu_populate(){ class PluginsMenuConstructor : public PluginsVisitor { - GtkMenu* m_menu; + ui::Menu m_menu; public: - PluginsMenuConstructor( GtkMenu* menu ) : m_menu( menu ){ + PluginsMenuConstructor( ui::Menu menu ) : m_menu( menu ){ } void visit( IPlugIn& plugin ){ PlugInMenu_Add( m_menu, &plugin ); @@ -144,18 +146,18 @@ public: 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 ); } } -GtkMenuItem* create_plugins_menu(){ +ui::MenuItem create_plugins_menu(){ // Plugins menu - GtkMenuItem* 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 plugins_menu_item = new_sub_menu_item_with_mnemonic( "_Plugins" ); + auto menu = ui::Menu::from( gtk_menu_item_get_submenu( plugins_menu_item ) ); if ( g_Layout_enableDetachableMenus.m_value ) { menu_tearoff( menu ); } @@ -164,7 +166,7 @@ GtkMenuItem* create_plugins_menu(){ //TODO: some modules/plugins do not yet support refresh #if 0 - create_menu_item_with_mnemonic( menu, "Refresh", FreeCaller() ); + 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 );