]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/gtkutil/menu.cpp
Wrap GTK
[xonotic/netradiant.git] / libs / gtkutil / menu.cpp
index cbb07df8fef5518fbee2238258c9c05cb9b1d451..7ef18911942a0aec9b3d6ec410d52fe69b9227d3 100644 (file)
 #include "menu.h"
 
 #include <ctype.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenubar.h>
-#include <gtk/gtkradiomenuitem.h>
-#include <gtk/gtktearoffmenuitem.h>
-#include <gtk/gtkaccellabel.h>
+#include <gtk/gtk.h>
+#include <uilib/uilib.h>
+#include <debugging/debugging.h>
 
 #include "generic/callback.h"
 
@@ -56,10 +54,10 @@ GtkTearoffMenuItem* menu_tearoff( GtkMenu* menu ){
 }
 
 GtkMenuItem* new_sub_menu_item_with_mnemonic( const char* mnemonic ){
-       GtkMenuItem* item = GTK_MENU_ITEM( gtk_menu_item_new_with_mnemonic( mnemonic ) );
+       GtkMenuItem* item = ui::MenuItem( mnemonic, true );
        gtk_widget_show( GTK_WIDGET( item ) );
 
-       GtkWidget* sub_menu = gtk_menu_new();
+       GtkWidget* sub_menu = ui::Menu();
        gtk_menu_item_set_submenu( item, sub_menu );
 
        return item;
@@ -102,7 +100,7 @@ guint check_menu_item_connect_callback( GtkCheckMenuItem* item, const Callback&
 }
 
 GtkMenuItem* new_menu_item_with_mnemonic( const char *mnemonic, const Callback& callback ){
-       GtkMenuItem* item = GTK_MENU_ITEM( gtk_menu_item_new_with_mnemonic( mnemonic ) );
+       GtkMenuItem* item = ui::MenuItem( mnemonic, true );
        gtk_widget_show( GTK_WIDGET( item ) );
        menu_item_connect_callback( item, callback );
        return item;
@@ -130,9 +128,9 @@ GtkCheckMenuItem* create_check_menu_item_with_mnemonic( GtkMenu* menu, const cha
 GtkRadioMenuItem* new_radio_menu_item_with_mnemonic( GSList** group, const char* mnemonic, const Callback& callback ){
        GtkRadioMenuItem* item = GTK_RADIO_MENU_ITEM( gtk_radio_menu_item_new_with_mnemonic( *group, mnemonic ) );
        if ( *group == 0 ) {
-               gtk_check_menu_item_set_state( GTK_CHECK_MENU_ITEM( item ), TRUE );
+               gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( item ), TRUE );
        }
-       *group = gtk_radio_menu_item_group( item );
+       *group = gtk_radio_menu_item_get_group( item );
        gtk_widget_show( GTK_WIDGET( item ) );
        check_menu_item_connect_callback( GTK_CHECK_MENU_ITEM( item ), callback );
        return item;
@@ -226,38 +224,11 @@ void accelerator_name( const Accelerator& accelerator, GString* gstring ){
        }
 }
 
-void menu_item_set_accelerator( GtkMenuItem* item, Accelerator accelerator ){
-       GtkAccelLabel* accel_label = GTK_ACCEL_LABEL( gtk_bin_get_child( GTK_BIN( item ) ) );
-
-       g_free( accel_label->accel_string );
-       accel_label->accel_string = 0;
-
-       GString* gstring = g_string_new( accel_label->accel_string );
-       g_string_append( gstring, "   " );
-
-       accelerator_name( accelerator, gstring );
-
-       g_free( accel_label->accel_string );
-       accel_label->accel_string = gstring->str;
-       g_string_free( gstring, FALSE );
-
-       if ( !accel_label->accel_string ) {
-               accel_label->accel_string = g_strdup( "" );
-       }
-
-       gtk_widget_queue_resize( GTK_WIDGET( accel_label ) );
-}
-
 void menu_item_add_accelerator( GtkMenuItem* item, Accelerator accelerator ){
        if ( accelerator.key != 0 ) {
                GClosure* closure = global_accel_group_find( accelerator );
-               if ( closure != 0 ) {
-                       menu_item_set_accelerator( item, closure );
-               }
-               else
-               {
-                       menu_item_set_accelerator( item, accelerator );
-               }
+               ASSERT_NOTNULL(closure);
+               menu_item_set_accelerator( item, closure );
        }
 }