Diff for /np2/x11/gtk2/gtk_menu.c between versions 1.11 and 1.14

version 1.11, 2007/08/22 15:20:31 version 1.14, 2008/04/03 13:53:25
Line 60 Line 60
 #include "gtk2/gtk_menu.h"  #include "gtk2/gtk_menu.h"
 #include "gtk2/gtk_keyboard.h"  #include "gtk2/gtk_keyboard.h"
   
   #ifndef NSTATSAVE
   #define NSTATSAVE       10
   #endif
   
 /* normal */  /* normal */
 static void cb_bmpsave(GtkAction *action, gpointer user_data);  static void cb_bmpsave(GtkAction *action, gpointer user_data);
Line 79  static void cb_reset(GtkAction *action,  Line 82  static void cb_reset(GtkAction *action, 
 static void cb_sasiopen(GtkAction *action, gpointer user_data);  static void cb_sasiopen(GtkAction *action, gpointer user_data);
 static void cb_sasiremove(GtkAction *action, gpointer user_data);  static void cb_sasiremove(GtkAction *action, gpointer user_data);
 #endif  #endif
   #if defined(SUPPORT_STATSAVE)
   static void cb_statsave(GtkAction *action, gpointer user_data);
   static void cb_statload(GtkAction *action, gpointer user_data);
   #endif
   
 static void cb_dialog(GtkAction *action, gpointer user_data);  static void cb_dialog(GtkAction *action, gpointer user_data);
 static void cb_radio(GtkRadioAction *action, GtkRadioAction *current, gpointer user_data);  static void cb_radio(GtkRadioAction *action, GtkRadioAction *current, gpointer user_data);
Line 91  static GtkActionEntry menu_entries[] = { Line 98  static GtkActionEntry menu_entries[] = {
 { "ScreenMenu",   NULL, "Screen",   NULL, NULL, NULL },  { "ScreenMenu",   NULL, "Screen",   NULL, NULL, NULL },
 { "DeviceMenu",   NULL, "Device",   NULL, NULL, NULL },  { "DeviceMenu",   NULL, "Device",   NULL, NULL, NULL },
 { "OtherMenu",    NULL, "Other",    NULL, NULL, NULL },  { "OtherMenu",    NULL, "Other",    NULL, NULL, NULL },
   { "StatMenu",     NULL, "Stat",     NULL, NULL, NULL },
   
 /* Submenu */  /* Submenu */
 { "Drive1Menu",   NULL, "Drive_1",   NULL, NULL, NULL },  { "Drive1Menu",   NULL, "Drive_1",   NULL, NULL, NULL },
Line 147  static GtkActionEntry menu_entries[] = { Line 155  static GtkActionEntry menu_entries[] = {
 { "serialopt",   NULL, "Se_rial option...", NULL, NULL, G_CALLBACK(cb_dialog) },  { "serialopt",   NULL, "Se_rial option...", NULL, NULL, G_CALLBACK(cb_dialog) },
 { "soundopt",    NULL, "So_und option...",  NULL, NULL, G_CALLBACK(cb_dialog) },  { "soundopt",    NULL, "So_und option...",  NULL, NULL, G_CALLBACK(cb_dialog) },
 { "reset",       NULL, "_Reset",            NULL, NULL, G_CALLBACK(cb_reset) },  { "reset",       NULL, "_Reset",            NULL, NULL, G_CALLBACK(cb_reset) },
   #if defined(SUPPORT_STATSAVE)
   { "stat00save",  NULL, "Save 0",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat01save",  NULL, "Save 1",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat02save",  NULL, "Save 2",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat03save",  NULL, "Save 3",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat04save",  NULL, "Save 4",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat05save",  NULL, "Save 5",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat06save",  NULL, "Save 6",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat07save",  NULL, "Save 7",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat08save",  NULL, "Save 8",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat09save",  NULL, "Save 9",            NULL, NULL, G_CALLBACK(cb_statsave), },
   { "stat00load",  NULL, "Load 0",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat01load",  NULL, "Load 1",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat02load",  NULL, "Load 2",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat03load",  NULL, "Load 3",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat04load",  NULL, "Load 4",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat05load",  NULL, "Load 5",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat06load",  NULL, "Load 6",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat07load",  NULL, "Load 7",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat08load",  NULL, "Load 8",            NULL, NULL, G_CALLBACK(cb_statload), },
   { "stat09load",  NULL, "Load 9",            NULL, NULL, G_CALLBACK(cb_statload), },
   #endif
 };  };
 static const guint n_menu_entries = G_N_ELEMENTS(menu_entries);  static const guint n_menu_entries = G_N_ELEMENTS(menu_entries);
   
Line 314  static const gchar *ui_info = Line 344  static const gchar *ui_info =
 "   <separator/>\n"  "   <separator/>\n"
 "   <menuitem action='exit'/>\n"  "   <menuitem action='exit'/>\n"
 "  </menu>\n"  "  </menu>\n"
   #if defined(SUPPORT_STATSAVE)
   "  <menu name='Stat' action='StatMenu'>\n"
   "  </menu>\n"
   #endif
 "  <menu name='FDD' action='FDDMenu'>\n"  "  <menu name='FDD' action='FDDMenu'>\n"
 "  </menu>\n"  "  </menu>\n"
 "  <menu name='HardDisk' action='HardDiskMenu'>\n"  "  <menu name='HardDisk' action='HardDiskMenu'>\n"
Line 1044  cb_newdisk(GtkAction *action, gpointer u Line 1078  cb_newdisk(GtkAction *action, gpointer u
   
         filter[0] = gtk_file_filter_new();          filter[0] = gtk_file_filter_new();
         if (filter[0]) {          if (filter[0]) {
                 gtk_file_filter_set_name(filter[0], "D88 floppy disk image");                  gtk_file_filter_set_name(filter[0], "D88 floppy disk image (*.d88,*.d98,*.88d,*.98d)");
                 gtk_file_filter_add_pattern(filter[0], "*.[dD]88");                  gtk_file_filter_add_pattern(filter[0], "*.[dD]88");
                 gtk_file_filter_add_pattern(filter[0], "*.88[dD]");                  gtk_file_filter_add_pattern(filter[0], "*.88[dD]");
                 gtk_file_filter_add_pattern(filter[0], "*.[dD]98");                  gtk_file_filter_add_pattern(filter[0], "*.[dD]98");
Line 1053  cb_newdisk(GtkAction *action, gpointer u Line 1087  cb_newdisk(GtkAction *action, gpointer u
         }          }
         filter[1] = gtk_file_filter_new();          filter[1] = gtk_file_filter_new();
         if (filter[1]) {          if (filter[1]) {
                 gtk_file_filter_set_name(filter[1], "Anex86 hard disk image files");                  gtk_file_filter_set_name(filter[1], "Anex86 hard disk image (*.hdi)");
                 gtk_file_filter_add_pattern(filter[1], "*.[hH][dD][iI]");                  gtk_file_filter_add_pattern(filter[1], "*.[hH][dD][iI]");
                 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[1]);                  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[1]);
         }          }
         filter[2] = gtk_file_filter_new();          filter[2] = gtk_file_filter_new();
         if (filter[2]) {          if (filter[2]) {
                 gtk_file_filter_set_name(filter[2], "T98 hard disk image files");                  gtk_file_filter_set_name(filter[2], "T98 hard disk image (*.thd)");
                 gtk_file_filter_add_pattern(filter[2], "*.[tT][hH][dD]");                  gtk_file_filter_add_pattern(filter[2], "*.[tT][hH][dD]");
                 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[2]);                  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[2]);
         }          }
         filter[3] = gtk_file_filter_new();          filter[3] = gtk_file_filter_new();
         if (filter[3]) {          if (filter[3]) {
                 gtk_file_filter_set_name(filter[3], "T98-Next hard disk image files");                  gtk_file_filter_set_name(filter[3], "T98-Next hard disk image (*.nhd)");
                 gtk_file_filter_add_pattern(filter[3], "*.[nN][hH][dD]");                  gtk_file_filter_add_pattern(filter[3], "*.[nN][hH][dD]");
                 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[3]);                  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter[3]);
         }          }
Line 1237  cb_sasiremove(GtkAction *action, gpointe Line 1271  cb_sasiremove(GtkAction *action, gpointe
 }  }
 #endif  /* !SUPPORT_IDEIO */  #endif  /* !SUPPORT_IDEIO */
   
   #if defined(SUPPORT_STATSAVE)
   static void
   cb_statsave(GtkAction *action, gpointer user_data)
   {
           const gchar *name = gtk_action_get_name(GTK_ACTION(action));
           char ext[4];
           guint n;
   
           UNUSED(user_data);
   
           /* name = "stat??save" */
           if ((strlen(name) >= 6)
            && (g_ascii_isdigit(name[4]))
            && (g_ascii_isdigit(name[5]))) {
                   n = g_ascii_digit_value(name[4]) * 10;
                   n += g_ascii_digit_value(name[5]);
                   g_snprintf(ext, sizeof(ext), np2flagext, n);
                   flagsave(ext);
           }
   }
   
   static void
   cb_statload(GtkAction *action, gpointer user_data)
   {
           const gchar *name = gtk_action_get_name(GTK_ACTION(action));
           char ext[4];
           guint n;
   
           UNUSED(user_data);
   
           /* name = "stat??load" */
           if ((strlen(name) >= 6)
            && (g_ascii_isdigit(name[4]))
            && (g_ascii_isdigit(name[5]))) {
                   n = g_ascii_digit_value(name[4]) * 10;
                   n += g_ascii_digit_value(name[5]);
                   g_snprintf(ext, sizeof(ext), np2flagext, n);
                   flagload(ext, "Status Load", TRUE);
           }
   }
   #endif
   
 static void  static void
 cb_dialog(GtkAction *action, gpointer user_data)  cb_dialog(GtkAction *action, gpointer user_data)
 {  {
Line 1803  leave_notify_evhandler(GtkWidget *w, Gdk Line 1879  leave_notify_evhandler(GtkWidget *w, Gdk
         return TRUE;          return TRUE;
 }  }
   
   #if defined(SUPPORT_STATSAVE)
   static void
   create_menu_statsave(GtkUIManager *ui_manager, int num)
   {
           char *name, *action;
           guint id;
           int i;
   
           if (num <= 0)
                   return;
   
           /* Save %d */
           for (i = 0; i < num; i++) {
                   id = gtk_ui_manager_new_merge_id(ui_manager);
                   name = g_strdup_printf("Save %d", i);
                   action = g_strdup_printf("stat%02dsave", i);
                   gtk_ui_manager_add_ui(ui_manager, id, "/MainMenu/Stat",
                       name, action, GTK_UI_MANAGER_MENUITEM, FALSE);
                   g_free(action);
                   g_free(name);
           }
   
           /* separator */
           id = gtk_ui_manager_new_merge_id(ui_manager);
           gtk_ui_manager_add_ui(ui_manager, id, "/MainMenu/Stat",
               "", "", GTK_UI_MANAGER_SEPARATOR, FALSE);
   
           /* Load %d */
           for (i = 0; i < num; i++) {
                   id = gtk_ui_manager_new_merge_id(ui_manager);
                   name = g_strdup_printf("Load %d", i);
                   action = g_strdup_printf("stat%02dload", i);
                   gtk_ui_manager_add_ui(ui_manager, id, "/MainMenu/Stat",
                       name, action, GTK_UI_MANAGER_MENUITEM, FALSE);
                   g_free(action);
                   g_free(name);
           }
   }
   #endif
   
 static void  static void
 equip_fddrive(GtkUIManager *ui_manager, guint no)  equip_fddrive(GtkUIManager *ui_manager, guint no)
 {  {
         char path[32], name[32], action[32];          char *path, *name, *action;
         guint id;          guint id;
   
         if (no >= 4)          if (no >= 4)
Line 1814  equip_fddrive(GtkUIManager *ui_manager,  Line 1930  equip_fddrive(GtkUIManager *ui_manager, 
         no++;          no++;
   
         id = gtk_ui_manager_new_merge_id(ui_manager);          id = gtk_ui_manager_new_merge_id(ui_manager);
         g_snprintf(name, sizeof(name), "Drive%d", no);          name = g_strdup_printf("Drive%d", no);
         g_snprintf(action, sizeof(action), "Drive%dMenu", no);          action = g_strdup_printf("Drive%dMenu", no);
         gtk_ui_manager_add_ui(ui_manager, id,          gtk_ui_manager_add_ui(ui_manager, id,
             "/MainMenu/FDD", name, action, GTK_UI_MANAGER_MENU, FALSE);              "/MainMenu/FDD", name, action, GTK_UI_MANAGER_MENU, FALSE);
           g_free(action);
           g_free(name);
   
           path = g_strdup_printf("/MainMenu/FDD/Drive%d", no);
   
         g_snprintf(path, sizeof(path), "/MainMenu/FDD/Drive%d", no);  
         id = gtk_ui_manager_new_merge_id(ui_manager);          id = gtk_ui_manager_new_merge_id(ui_manager);
         g_snprintf(name, sizeof(name), "Drive%dOpen", no);          name = g_strdup_printf("Drive%dOpen", no);
         g_snprintf(action, sizeof(action), "disk%dopen", no);          action = g_strdup_printf("disk%dopen", no);
         gtk_ui_manager_add_ui(ui_manager, id,          gtk_ui_manager_add_ui(ui_manager, id,
             path, name, action, GTK_UI_MANAGER_MENUITEM, FALSE);              path, name, action, GTK_UI_MANAGER_MENUITEM, FALSE);
           g_free(action);
           g_free(name);
   
         id = gtk_ui_manager_new_merge_id(ui_manager);          id = gtk_ui_manager_new_merge_id(ui_manager);
         g_snprintf(name, sizeof(name), "Drive%dEject", no);          name = g_strdup_printf("Drive%dEject", no);
         g_snprintf(action, sizeof(action), "disk%deject", no);          action = g_strdup_printf("disk%deject", no);
         gtk_ui_manager_add_ui(ui_manager, id,          gtk_ui_manager_add_ui(ui_manager, id,
             path, name, action, GTK_UI_MANAGER_MENUITEM, FALSE);              path, name, action, GTK_UI_MANAGER_MENUITEM, FALSE);
           g_free(action);
           g_free(name);
   
           g_free(path);
 }  }
   
 GtkWidget *  GtkWidget *
Line 1866  create_menu(void) Line 1991  create_menu(void)
                 return NULL;                  return NULL;
         }          }
   
   #if defined(SUPPORT_STATSAVE)
           if (np2oscfg.statsave) {
                   create_menu_statsave(menu_hdl.ui_manager, NSTATSAVE);
           }
   #endif
           if (np2cfg.fddequip) {
                   for (i = 0; i < 4; i++) {
                           if (np2cfg.fddequip & (1 << i)) {
                                   equip_fddrive(menu_hdl.ui_manager, i);
                           }
                   }
           }
   
         xmenu_toggle_item(NULL, "dispvsync", np2cfg.DISPSYNC);          xmenu_toggle_item(NULL, "dispvsync", np2cfg.DISPSYNC);
         xmenu_toggle_item(NULL, "joyrapid", np2cfg.BTN_RAPID);          xmenu_toggle_item(NULL, "joyrapid", np2cfg.BTN_RAPID);
         xmenu_toggle_item(NULL, "joyreverse", np2cfg.BTN_MODE);          xmenu_toggle_item(NULL, "joyreverse", np2cfg.BTN_MODE);
Line 1895  create_menu(void) Line 2033  create_menu(void)
         xmenu_select_screensize(SCREEN_DEFMUL);          xmenu_select_screensize(SCREEN_DEFMUL);
         xmenu_select_soundboard(np2cfg.SOUND_SW);          xmenu_select_soundboard(np2cfg.SOUND_SW);
   
         if (np2cfg.fddequip) {  
                 for (i = 0; i < 4; i++) {  
                         if (np2cfg.fddequip & (1 << i)) {  
                                 equip_fddrive(menu_hdl.ui_manager, i);  
                         }  
                 }  
         }  
   
         menubar = gtk_ui_manager_get_widget(menu_hdl.ui_manager, "/MainMenu");          menubar = gtk_ui_manager_get_widget(menu_hdl.ui_manager, "/MainMenu");
   
         gtk_widget_add_events(menubar, EVENT_MASK);          gtk_widget_add_events(menubar, EVENT_MASK);

Removed from v.1.11  
changed lines
  Added in v.1.14


RetroPC.NET-CVS <cvs@retropc.net>