X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fviewmenu.c;h=99fa0ab850fcc3a477c1636cd14555617db34ad2;hb=add152ddb851575c885208c12b008887e68b9f48;hp=30248779d338f1f9dd213c949cb73d28fd65bf60;hpb=bd0627548f7258b54a615787d0515d3e2bde648e;p=emu8051.git diff --git a/src/viewmenu.c b/src/viewmenu.c index 3024877..99fa0ab 100644 --- a/src/viewmenu.c +++ b/src/viewmenu.c @@ -46,6 +46,43 @@ void toggle_layout(GtkWidget *widget, gpointer data) } } +void toggle_bits_per_row(GtkWidget *widget, gpointer data) +{ + int bits_per_row; + + bits_per_row = GPOINTER_TO_UINT(data); + + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { + log_info(" Bits per row = %d", bits_per_row); + cfg->bits_per_row = bits_per_row; + emugtk_restart_gui(); + } +} + +void toggle_int_memory(GtkWidget *widget, gpointer data) +{ + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { + log_info(" View internal memory"); + cfg->view_int_memory = 1; + } else { + cfg->view_int_memory = 0; + } + + emugtk_restart_gui(); +} + +void toggle_ext_memory(GtkWidget *widget, gpointer data) +{ + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { + log_info(" View external memory"); + cfg->view_ext_memory = 1; + } else { + cfg->view_ext_memory = 0; + } + + emugtk_restart_gui(); +} + void view_add_layout_submenu(GtkWidget *parent) { @@ -79,6 +116,39 @@ view_add_layout_submenu(GtkWidget *parent) gtk_menu_shell_append(GTK_MENU_SHELL(parent), layout); } +void +view_add_bits_per_row_submenu(GtkWidget *parent) +{ + GtkWidget *submenu; + GtkWidget *item; + GtkWidget *item1; + GtkWidget *item2; + GSList *group = NULL; + + submenu = gtk_menu_new(); + + item = gtk_menu_item_new_with_label("Bits per row"); + + item1 = gtk_radio_menu_item_new_with_label(group, "8"); + group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item1)); + item2 = gtk_radio_menu_item_new_with_label(group, "16"); + + if (cfg->bits_per_row == 8) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item1), TRUE); + else + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item2), TRUE); + + g_signal_connect(G_OBJECT(item1), "activate", + G_CALLBACK(toggle_bits_per_row), (gpointer) 8); + g_signal_connect(G_OBJECT(item2), "activate", + G_CALLBACK(toggle_bits_per_row), (gpointer) 16); + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item1); + gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item2); + gtk_menu_shell_append(GTK_MENU_SHELL(parent), item); +} + void ViewAddMenu(GtkWidget *menu_bar) { @@ -90,17 +160,30 @@ ViewAddMenu(GtkWidget *menu_bar) view = gtk_menu_item_new_with_label("View"); - item = gtk_menu_item_new_with_label("Internal Memory"); + item = gtk_check_menu_item_new_with_label("Internal Memory"); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), + cfg->view_int_memory); + g_signal_connect(G_OBJECT(item), "activate", + G_CALLBACK(toggle_int_memory), NULL); - item = gtk_menu_item_new_with_label("External Memory"); + item = gtk_check_menu_item_new_with_label("External Memory"); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), + cfg->view_ext_memory); + g_signal_connect(G_OBJECT(item), "activate", + G_CALLBACK(toggle_ext_memory), NULL); AddMenuSeparator(menu); /* Add layout submenu */ view_add_layout_submenu(menu); + AddMenuSeparator(menu); + + /* Add bits per row submenu */ + view_add_bits_per_row_submenu(menu); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), menu); gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), view); }