#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"
}
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;
}
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;
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;
}
}
-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 );
}
}