|
|
| version 1.2, 2003/11/18 14:42:33 | version 1.3, 2003/11/28 16:29:57 |
|---|---|
| Line 50 | Line 50 |
| #include "pc9861k.h" | #include "pc9861k.h" |
| #include "s98.h" | #include "s98.h" |
| #include "scrnbmp.h" | #include "scrnbmp.h" |
| #include "keydisp.h" | #include "kdispwin.h" |
| #include "toolwin.h" | #include "toolwin.h" |
| #include "mousemng.h" | #include "mousemng.h" |
| Line 59 | Line 59 |
| static void disable_item(const char *); | static void disable_item(const char *); |
| static void select_item(const char *); | |
| static void disable_unused_items(void); | static void disable_unused_items(void); |
| Line 196 _create_about_dialog(gpointer p, guint a | Line 195 _create_about_dialog(gpointer p, guint a |
| */ | */ |
| #define f(f) ((GtkItemFactoryCallback)(f)) | #define f(f) ((GtkItemFactoryCallback)(f)) |
| static GtkItemFactoryEntry menu_items[] = { | static GtkItemFactoryEntry menu_items[] = { |
| { "/_Emulate", NULL, NULL, 0, "<Branch>" }, | { "/Emulate", NULL, NULL, 0, "<Branch>" }, |
| { "/Emulate/_Reset", NULL, f(reset), 0, NULL }, | { "/Emulate/_Reset", NULL, f(reset), 0, NULL }, |
| { "/Emulate/sep1", NULL, NULL, 0, "<Separator>" }, | { "/Emulate/sep1", NULL, NULL, 0, "<Separator>" }, |
| { "/Emulate/_Configure...", NULL, f(_create_configure_dialog), 0, NULL }, | { "/Emulate/_Configure...", NULL, f(_create_configure_dialog), 0, NULL }, |
| Line 206 static GtkItemFactoryEntry menu_items[] | Line 205 static GtkItemFactoryEntry menu_items[] |
| { "/Emulate/_Font...", NULL, f(change_font), 0, NULL }, | { "/Emulate/_Font...", NULL, f(change_font), 0, NULL }, |
| { "/Emulate/sep2", NULL, NULL, 0, "<Separator>" }, | { "/Emulate/sep2", NULL, NULL, 0, "<Separator>" }, |
| { "/Emulate/E_xit", NULL, f(exit_from_menu), 0, NULL }, | { "/Emulate/E_xit", NULL, f(exit_from_menu), 0, NULL }, |
| { "/_FDD", NULL, NULL, 0, "<Branch>" }, | { "/FDD", NULL, NULL, 0, "<Branch>" }, |
| { "/FDD/Drive_1", NULL, NULL, 0, "<Branch>" }, | { "/FDD/Drive_1", NULL, NULL, 0, "<Branch>" }, |
| { "/FDD/Drive1/_Open...", NULL, f(fddopen), 0, NULL }, | { "/FDD/Drive1/_Open...", NULL, f(fddopen), 0, NULL }, |
| { "/FDD/Drive1/_Eject", NULL, f(fddeject), 0, NULL }, | { "/FDD/Drive1/_Eject", NULL, f(fddeject), 0, NULL }, |
| Line 215 static GtkItemFactoryEntry menu_items[] | Line 214 static GtkItemFactoryEntry menu_items[] |
| { "/FDD/Drive2/_Eject", NULL, f(fddeject), 1, NULL }, | { "/FDD/Drive2/_Eject", NULL, f(fddeject), 1, NULL }, |
| { "/FDD/sep1", NULL, NULL, 0, "<Separator>" }, | { "/FDD/sep1", NULL, NULL, 0, "<Separator>" }, |
| { "/FDD/_Eject All", NULL, f(fddeject), ~0, NULL }, | { "/FDD/_Eject All", NULL, f(fddeject), ~0, NULL }, |
| { "/_HardDisk", NULL, NULL, 0, "<Branch>" }, | { "/HardDisk", NULL, NULL, 0, "<Branch>" }, |
| { "/HardDisk/SASI-_1", NULL, NULL, 0, "<Branch>" }, | { "/HardDisk/SASI-_1", NULL, NULL, 0, "<Branch>" }, |
| { "/HardDisk/SASI-1/_Open...", NULL, f(sasiopen), 0, NULL }, | { "/HardDisk/SASI-1/_Open...", NULL, f(sasiopen), 0, NULL }, |
| { "/HardDisk/SASI-1/_Remove", NULL, f(sasiremove), 0, NULL }, | { "/HardDisk/SASI-1/_Remove", NULL, f(sasiremove), 0, NULL }, |
| Line 224 static GtkItemFactoryEntry menu_items[] | Line 223 static GtkItemFactoryEntry menu_items[] |
| { "/HardDisk/SASI-2/_Remove", NULL, f(sasiremove), 1, NULL }, | { "/HardDisk/SASI-2/_Remove", NULL, f(sasiremove), 1, NULL }, |
| { "/HardDisk/sep1", NULL, NULL, 0, "<Separator>" }, | { "/HardDisk/sep1", NULL, NULL, 0, "<Separator>" }, |
| { "/HardDisk/_Remove All", NULL, f(sasiremove), ~0, NULL }, | { "/HardDisk/_Remove All", NULL, f(sasiremove), ~0, NULL }, |
| { "/_Screen", NULL, NULL, 0, "<Branch>" }, | { "/Screen", NULL, NULL, 0, "<Branch>" }, |
| { "/Screen/_Window", NULL, NULL, 0, "<RadioItem>" }, | { "/Screen/_Window", NULL, NULL, 0, "<RadioItem>" }, |
| { "/Screen/_FullScreen", NULL, NULL, 0, "/Screen/Window" }, | { "/Screen/_FullScreen", NULL, NULL, 0, "/Screen/Window" }, |
| { "/Screen/sep1", NULL, NULL, 0, "<Separator>" }, | { "/Screen/sep1", NULL, NULL, 0, "<Separator>" }, |
| Line 242 static GtkItemFactoryEntry menu_items[] | Line 241 static GtkItemFactoryEntry menu_items[] |
| { "/Screen/_15 fps", NULL, f(framerate), FRAME_15, "/Screen/20 fps"}, | { "/Screen/_15 fps", NULL, f(framerate), FRAME_15, "/Screen/20 fps"}, |
| { "/Screen/sep3", NULL, NULL, 0, "<Separator>" }, | { "/Screen/sep3", NULL, NULL, 0, "<Separator>" }, |
| { "/Screen/_Screen option...", NULL, f(_create_screen_dialog), 0, NULL }, | { "/Screen/_Screen option...", NULL, f(_create_screen_dialog), 0, NULL }, |
| { "/_Device", NULL, NULL, 0, "<Branch>" }, | { "/Device", NULL, NULL, 0, "<Branch>" }, |
| { "/Device/_Keyboard", NULL, NULL, 0, "<Branch>" }, | { "/Device/_Keyboard", NULL, NULL, 0, "<Branch>" }, |
| { "/Device/Keyboard/_Keyboard", NULL, f(keyboard), 0, "<RadioItem>" }, | { "/Device/Keyboard/_Keyboard", NULL, f(keyboard), 0, "<RadioItem>" }, |
| { "/Device/Keyboard/Joykey-_1", NULL, f(keyboard), 1, "/Device/Keyboard/Keyboard"}, | { "/Device/Keyboard/Joykey-_1", NULL, f(keyboard), 1, "/Device/Keyboard/Keyboard"}, |
| Line 274 static GtkItemFactoryEntry menu_items[] | Line 273 static GtkItemFactoryEntry menu_items[] |
| { "/Device/Sound/_AMD98", NULL, f(sound_board), SPARK_BOARD, "/Device/Sound/Spark board" }, | { "/Device/Sound/_AMD98", NULL, f(sound_board), SPARK_BOARD, "/Device/Sound/Spark board" }, |
| { "/Device/Sound/sep2", NULL, NULL, 0, "<Separator>" }, | { "/Device/Sound/sep2", NULL, NULL, 0, "<Separator>" }, |
| { "/Device/Sound/_Seek Sound", NULL, NULL, 0, "<ToggleItem>" }, | { "/Device/Sound/_Seek Sound", NULL, NULL, 0, "<ToggleItem>" }, |
| { "/Device/Memory", NULL, NULL, 0, "<Branch>" }, | { "/Device/M_emory", NULL, NULL, 0, "<Branch>" }, |
| { "/Device/Memory/64_0KB", NULL, f(memory), 0, "<RadioItem>" }, | { "/Device/Memory/64_0KB", NULL, f(memory), 0, "<RadioItem>" }, |
| { "/Device/Memory/_1.6MB", NULL, f(memory), 1, "/Device/Memory/640KB" }, | { "/Device/Memory/_1.6MB", NULL, f(memory), 1, "/Device/Memory/640KB" }, |
| { "/Device/Memory/_3.6MB", NULL, f(memory), 2, "/Device/Memory/1.6MB" }, | { "/Device/Memory/_3.6MB", NULL, f(memory), 2, "/Device/Memory/1.6MB" }, |
| Line 297 static GtkItemFactoryEntry menu_items[] | Line 296 static GtkItemFactoryEntry menu_items[] |
| { "/Device/MIDI _Panic", NULL, f(midi_panic), 0, NULL }, | { "/Device/MIDI _Panic", NULL, f(midi_panic), 0, NULL }, |
| { "/Device/sep3", NULL, NULL, 0, "<Separator>" }, | { "/Device/sep3", NULL, NULL, 0, "<Separator>" }, |
| { "/Device/So_und option...", NULL, f(_create_sound_dialog), 0, NULL }, | { "/Device/So_und option...", NULL, f(_create_sound_dialog), 0, NULL }, |
| { "/_Other", NULL, NULL, 0, "<Branch>" }, | { "/Other", NULL, NULL, 0, "<Branch>" }, |
| { "/Other/_BMP Save...", NULL, f(bmpsave), 0, NULL }, | { "/Other/_BMP Save...", NULL, f(bmpsave), 0, NULL }, |
| { "/Other/_S98 logging...", NULL, f(toggle), S98_LOGGING, "<ToggleItem>" }, | { "/Other/_S98 logging...", NULL, f(toggle), S98_LOGGING, "<ToggleItem>" }, |
| { "/Other/Ca_lendar...", NULL, f(_create_calendar_dialog), 0, NULL }, | { "/Other/Ca_lendar...", NULL, f(_create_calendar_dialog), 0, NULL }, |
| Line 340 static struct { | Line 339 static struct { |
| { "/Other/Key Display", 0, SYS_UPDATEOSCFG }, | { "/Other/Key Display", 0, SYS_UPDATEOSCFG }, |
| }; | }; |
| static GtkItemFactory *item_factory; | static _MENU_HDL menu_hdl; |
| static BOOL inited = FALSE; | static BOOL inited = FALSE; |
| /* | /* |
| Line 352 create_menu(GtkWidget *w) | Line 351 create_menu(GtkWidget *w) |
| GtkAccelGroup *accel_group; | GtkAccelGroup *accel_group; |
| accel_group = gtk_accel_group_new(); | accel_group = gtk_accel_group_new(); |
| item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); | menu_hdl.item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
| gtk_item_factory_create_items(item_factory, NELEMENTS(menu_items), menu_items, NULL); | gtk_item_factory_create_items(menu_hdl.item_factory, NELEMENTS(menu_items), menu_items, NULL); |
| gtk_accel_group_attach(accel_group, GTK_OBJECT(w)); | gtk_accel_group_attach(accel_group, GTK_OBJECT(w)); |
| disable_unused_items(); | disable_unused_items(); |
| Line 382 create_menu(GtkWidget *w) | Line 381 create_menu(GtkWidget *w) |
| inited = 1; | inited = 1; |
| return gtk_item_factory_get_widget(item_factory, "<main>"); | return gtk_item_factory_get_widget(menu_hdl.item_factory, "<main>"); |
| } | } |
| static void | static void |
| Line 391 disable_unused_items(void) | Line 390 disable_unused_items(void) |
| static const char *items[] = { | static const char *items[] = { |
| "/Screen/FullScreen", | "/Screen/FullScreen", |
| "/Other/Tool Window", | "/Other/Tool Window", |
| "/Other/Key Display", | |
| #if defined(NOSOUND) | #if defined(NOSOUND) |
| "/Device/Sound/Beep low", | "/Device/Sound/Beep low", |
| "/Device/Sound/Beep mid", | "/Device/Sound/Beep mid", |
| Line 419 disable_unused_items(void) | Line 417 disable_unused_items(void) |
| static void | static void |
| disable_item(const char* name) | disable_item(const char* name) |
| { | { |
| GtkWidget *menu_item; | GtkWidget *w; |
| menu_item = gtk_item_factory_get_widget(item_factory, name); | w = gtk_item_factory_get_widget(menu_hdl.item_factory, name); |
| gtk_widget_set_sensitive(menu_item, FALSE); | gtk_widget_set_sensitive(w, FALSE); |
| } | } |
| static void | void |
| select_item(const char* name) | xmenu_select_item(MENU_HDL hdl, const char* name) |
| { | { |
| GtkWidget *menu_item; | GtkWidget *w; |
| menu_item = gtk_item_factory_get_widget(item_factory, name); | w = gtk_item_factory_get_widget(hdl->item_factory, name); |
| gtk_signal_emit_by_name(GTK_OBJECT(menu_item), "activate-item"); | gtk_signal_emit_by_name(GTK_OBJECT(w), "activate-item"); |
| } | } |
| void | void |
| Line 442 xmenu_toggle_item(int arg, int onoff, in | Line 440 xmenu_toggle_item(int arg, int onoff, in |
| if (onoff != toggle_items[arg].stat) { | if (onoff != toggle_items[arg].stat) { |
| toggle_items[arg].stat = onoff; | toggle_items[arg].stat = onoff; |
| if (emitp) | if (emitp) |
| select_item(toggle_items[arg].name); | xmenu_select_item(&menu_hdl, toggle_items[arg].name); |
| if (inited && arg != MOUSE_MODE) { | if (inited && arg != MOUSE_MODE) { |
| sysmng_update(toggle_items[arg].flag); | sysmng_update(toggle_items[arg].flag); |
| } | } |
| Line 462 xmenu_select_framerate(int kind) | Line 460 xmenu_select_framerate(int kind) |
| }; | }; |
| if (kind < NUM_FRAMERATE) { | if (kind < NUM_FRAMERATE) { |
| select_item(name[kind]); | xmenu_select_item(&menu_hdl, name[kind]); |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| } | } |
| } | } |
| Line 479 xmenu_select_beepvol(int kind) | Line 477 xmenu_select_beepvol(int kind) |
| }; | }; |
| if (kind < NUM_BEEP) { | if (kind < NUM_BEEP) { |
| select_item(name[kind]); | xmenu_select_item(&menu_hdl, name[kind]); |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| } | } |
| #else | #else |
| UNUSED(kind); | UNUSED(kind); |
| np2cfg.BEEP_VOL = 0; | np2cfg.BEEP_VOL = 0; |
| select_item("/Device/Sound/Beep off"); | xmenu_select_item(&menu_hdl, "/Device/Sound/Beep off"); |
| #endif | #endif |
| } | } |
| Line 512 xmenu_select_soundboard(int kind) | Line 510 xmenu_select_soundboard(int kind) |
| for (i = 0; i < NELEMENTS(soundboard); i++) { | for (i = 0; i < NELEMENTS(soundboard); i++) { |
| if (kind == soundboard[i].num) { | if (kind == soundboard[i].num) { |
| select_item(soundboard[i].name); | xmenu_select_item(&menu_hdl, soundboard[i].name); |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| break; | break; |
| } | } |
| Line 521 xmenu_select_soundboard(int kind) | Line 519 xmenu_select_soundboard(int kind) |
| UNUSED(kind); | UNUSED(kind); |
| np2cfg.SOUND_SW = 0; | np2cfg.SOUND_SW = 0; |
| select_item("/Device/Sound/Disable board"); | xmenu_select_item(&menu_hdl, "/Device/Sound/Disable board"); |
| #endif | #endif |
| } | } |
| Line 544 xmenu_select_extmem(int kind) | Line 542 xmenu_select_extmem(int kind) |
| for (i = 0; i < NELEMENTS(extmem); i++) { | for (i = 0; i < NELEMENTS(extmem); i++) { |
| if (kind == extmem[i].num) { | if (kind == extmem[i].num) { |
| select_item(extmem[i].name); | xmenu_select_item(&menu_hdl, extmem[i].name); |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| return; | return; |
| } | } |
| } | } |
| select_item("/Device/Memory/1.6MB"); | xmenu_select_item(&menu_hdl, "/Device/Memory/1.6MB"); |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| } | } |
| Line 572 xmenu_select_mouse_move_ratio(int kind) | Line 570 xmenu_select_mouse_move_ratio(int kind) |
| for (i = 0; i < NELEMENTS(moveratio); i++) { | for (i = 0; i < NELEMENTS(moveratio); i++) { |
| if (kind == moveratio[i].num) { | if (kind == moveratio[i].num) { |
| select_item(moveratio[i].name); | xmenu_select_item(&menu_hdl, moveratio[i].name); |
| sysmng_update(SYS_UPDATEOSCFG); | sysmng_update(SYS_UPDATEOSCFG); |
| return; | return; |
| } | } |
| } | } |
| select_item("/Device/Mouse/x1.0"); | xmenu_select_item(&menu_hdl, "/Device/Mouse/x1.0"); |
| sysmng_update(SYS_UPDATEOSCFG); | sysmng_update(SYS_UPDATEOSCFG); |
| } | } |
| Line 1128 toggle(gpointer data, guint action, GtkW | Line 1126 toggle(gpointer data, guint action, GtkW |
| np2oscfg.keydisp = !np2oscfg.keydisp; | np2oscfg.keydisp = !np2oscfg.keydisp; |
| xmenu_toggle_item(KEY_DISPLAY, np2oscfg.keydisp, FALSE); | xmenu_toggle_item(KEY_DISPLAY, np2oscfg.keydisp, FALSE); |
| if (np2oscfg.keydisp) { | if (np2oscfg.keydisp) { |
| keydisp_create(); | kdispwin_create(); |
| } else { | } else { |
| keydisp_destroy(); | kdispwin_destroy(); |
| } | } |
| break; | break; |