ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/prefs_editor_gtk.cpp
(Generate patch)

Comparing BasiliskII/src/Unix/prefs_editor_gtk.cpp (file contents):
Revision 1.2 by cebix, 1999-10-03T19:43:28Z vs.
Revision 1.12 by cebix, 2000-07-13T16:12:32Z

# Line 1 | Line 1
1   /*
2   *  prefs_editor_gtk.cpp - Preferences editor, Unix implementation using GTK+
3   *
4 < *  Basilisk II (C) 1997-1999 Christian Bauer
4 > *  Basilisk II (C) 1997-2000 Christian Bauer
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 258 | Line 258 | static void mn_zap_pram(...)
258  
259   // Menu item descriptions
260   static GtkItemFactoryEntry menu_items[] = {
261 <        {GetString(STR_PREFS_MENU_FILE_GTK),            NULL,                   NULL,                                                   0, "<Branch>"},
262 <        {GetString(STR_PREFS_ITEM_START_GTK),           NULL,                   GTK_SIGNAL_FUNC(cb_start),              0, NULL},
263 <        {GetString(STR_PREFS_ITEM_ZAP_PRAM_GTK),        NULL,                   GTK_SIGNAL_FUNC(mn_zap_pram),   0, NULL},
264 <        {GetString(STR_PREFS_ITEM_SEPL_GTK),            NULL,                   NULL,                                                   0, "<Separator>"},
265 <        {GetString(STR_PREFS_ITEM_QUIT_GTK),            "<control>Q",   GTK_SIGNAL_FUNC(cb_quit),               0, NULL},
266 <        {GetString(STR_HELP_MENU_GTK),                          NULL,                   NULL,                                                   0, "<LastBranch>"},
267 <        {GetString(STR_HELP_ITEM_ABOUT_GTK),            NULL,                   GTK_SIGNAL_FUNC(mn_about),              0, NULL}
261 >        {(gchar *)GetString(STR_PREFS_MENU_FILE_GTK),           NULL,                   NULL,                                                   0, "<Branch>"},
262 >        {(gchar *)GetString(STR_PREFS_ITEM_START_GTK),          NULL,                   GTK_SIGNAL_FUNC(cb_start),              0, NULL},
263 >        {(gchar *)GetString(STR_PREFS_ITEM_ZAP_PRAM_GTK),       NULL,                   GTK_SIGNAL_FUNC(mn_zap_pram),   0, NULL},
264 >        {(gchar *)GetString(STR_PREFS_ITEM_SEPL_GTK),           NULL,                   NULL,                                                   0, "<Separator>"},
265 >        {(gchar *)GetString(STR_PREFS_ITEM_QUIT_GTK),           "<control>Q",   GTK_SIGNAL_FUNC(cb_quit),               0, NULL},
266 >        {(gchar *)GetString(STR_HELP_MENU_GTK),                         NULL,                   NULL,                                                   0, "<LastBranch>"},
267 >        {(gchar *)GetString(STR_HELP_ITEM_ABOUT_GTK),           NULL,                   GTK_SIGNAL_FUNC(mn_about),              0, NULL}
268   };
269  
270   bool PrefsEditor(void)
# Line 291 | Line 291 | bool PrefsEditor(void)
291          GtkWidget *notebook = gtk_notebook_new();
292          gtk_widget_show(notebook);
293          gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
294 <        gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);
294 >        gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), FALSE);
295          gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, 0);
296  
297          create_volumes_pane(notebook);
# Line 318 | Line 318 | bool PrefsEditor(void)
318   *  "Volumes" pane
319   */
320  
321 < static GtkWidget *volume_list;
321 > static GtkWidget *volume_list, *w_extfs;
322   static int selected_volume;
323  
324   // Volume in list selected
# Line 420 | Line 420 | static void read_volumes_settings(void)
420                  gtk_clist_get_text(GTK_CLIST(volume_list), i, 0, &str);
421                  PrefsAddString("disk", str);
422          }
423 +
424 +        PrefsReplaceString("extfs", gtk_entry_get_text(GTK_ENTRY(w_extfs)));
425   }
426  
427   // Create "Volumes" pane
# Line 436 | Line 438 | static void create_volumes_pane(GtkWidge
438          gtk_widget_show(volume_list);
439          gtk_clist_set_selection_mode(GTK_CLIST(volume_list), GTK_SELECTION_SINGLE);
440          gtk_clist_set_shadow_type(GTK_CLIST(volume_list), GTK_SHADOW_NONE);
441 +        gtk_clist_set_reorderable(GTK_CLIST(volume_list), true);
442          gtk_signal_connect(GTK_OBJECT(volume_list), "select_row", GTK_SIGNAL_FUNC(cl_selected), NULL);
443          char *str;
444          int32 index = 0;
# Line 454 | Line 457 | static void create_volumes_pane(GtkWidge
457          make_button_box(box, 0, buttons);
458          make_separator(box);
459  
460 +        w_extfs = make_entry(box, STR_EXTFS_CTRL, "extfs");
461 +
462          static const opt_desc options[] = {
463                  {STR_BOOT_ANY_LAB, GTK_SIGNAL_FUNC(mn_boot_any)},
464                  {STR_BOOT_CDROM_LAB, GTK_SIGNAL_FUNC(mn_boot_cdrom)},
# Line 520 | Line 525 | static GtkWidget *l_frameskip, *l_displa
525   static int display_type;
526   static int dis_width, dis_height;
527  
528 + #ifdef ENABLE_FBDEV_DGA
529 + static GtkWidget *w_fbdev_name, *w_fbdevice_file;
530 + static GtkWidget *l_fbdev_name, *l_fbdevice_file;
531 + static char fbdev_name[256];
532 + #endif
533 +
534   // Hide/show graphics widgets
535   static void hide_show_graphics_widgets(void)
536   {
537          switch (display_type) {
538                  case DISPLAY_WINDOW:
539                          gtk_widget_show(w_frameskip); gtk_widget_show(l_frameskip);
540 + #ifdef ENABLE_FBDEV_DGA
541 +                        gtk_widget_show(w_display_x); gtk_widget_show(l_display_x);
542 +                        gtk_widget_show(w_display_y); gtk_widget_show(l_display_y);
543 +                        gtk_widget_hide(w_fbdev_name); gtk_widget_hide(l_fbdev_name);
544 + #endif
545                          break;
546                  case DISPLAY_SCREEN:
547                          gtk_widget_hide(w_frameskip); gtk_widget_hide(l_frameskip);
548 + #ifdef ENABLE_FBDEV_DGA
549 +                        gtk_widget_hide(w_display_x); gtk_widget_hide(l_display_x);
550 +                        gtk_widget_hide(w_display_y); gtk_widget_hide(l_display_y);
551 +                        gtk_widget_show(w_fbdev_name); gtk_widget_show(l_fbdev_name);
552 + #endif
553                          break;
554          }
555   }
# Line 554 | Line 575 | static void mn_10hz(...) {PrefsReplaceIn
575   static void mn_15hz(...) {PrefsReplaceInt32("frameskip", 4);}
576   static void mn_30hz(...) {PrefsReplaceInt32("frameskip", 2);}
577   static void mn_60hz(...) {PrefsReplaceInt32("frameskip", 1);}
578 + static void mn_dynamic(...) {PrefsReplaceInt32("frameskip", 0);}
579  
580   // "Disable Sound Output" button toggled
581   static void tb_nosound(GtkWidget *widget)
# Line 567 | Line 589 | static void parse_graphics_prefs(void)
589          display_type = DISPLAY_WINDOW;
590          dis_width = 512;
591          dis_height = 384;
592 + #ifdef ENABLE_FBDEV_DGA
593 +        fbdev_name[0] = 0;
594 + #endif
595  
596          const char *str = PrefsFindString("screen");
597          if (str) {
598                  if (sscanf(str, "win/%d/%d", &dis_width, &dis_height) == 2)
599                          display_type = DISPLAY_WINDOW;
600 + #ifdef ENABLE_FBDEV_DGA
601 +                else if (sscanf(str, "dga/%255s", fbdev_name) == 1)
602 + #else
603                  else if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2)
604 + #endif
605                          display_type = DISPLAY_SCREEN;
606          }
607   }
# Line 594 | Line 623 | static void read_graphics_settings(void)
623                          sprintf(pref, "win/%d/%d", dis_width, dis_height);
624                          break;
625                  case DISPLAY_SCREEN:
626 + #ifdef ENABLE_FBDEV_DGA
627 +                        str = gtk_entry_get_text(GTK_ENTRY(w_fbdev_name));
628 +                        sprintf(pref, "dga/%s", str);
629 + #else
630                          sprintf(pref, "dga/%d/%d", dis_width, dis_height);
631 + #endif
632                          break;
633                  default:
634                          PrefsRemoveItem("screen");
# Line 612 | Line 646 | static void create_graphics_pane(GtkWidg
646          parse_graphics_prefs();
647  
648          box = make_pane(top, STR_GRAPHICS_SOUND_PANE_TITLE);
649 <        table = make_table(box, 2, 4);
649 >        table = make_table(box, 2, 5);
650  
651          label = gtk_label_new(GetString(STR_VIDEO_TYPE_CTRL));
652          gtk_widget_show(label);
# Line 647 | Line 681 | static void create_graphics_pane(GtkWidg
681          add_menu_item(menu, STR_REF_15HZ_LAB, GTK_SIGNAL_FUNC(mn_15hz));
682          add_menu_item(menu, STR_REF_30HZ_LAB, GTK_SIGNAL_FUNC(mn_30hz));
683          add_menu_item(menu, STR_REF_60HZ_LAB, GTK_SIGNAL_FUNC(mn_60hz));
684 +        add_menu_item(menu, STR_REF_DYNAMIC_LAB, GTK_SIGNAL_FUNC(mn_dynamic));
685          int frameskip = PrefsFindInt32("frameskip");
686 +        int item = -1;
687          switch (frameskip) {
688 <                case 12:
689 <                        gtk_menu_set_active(GTK_MENU(menu), 0);
690 <                        break;
691 <                case 8:
692 <                        gtk_menu_set_active(GTK_MENU(menu), 1);
693 <                        break;
694 <                case 6:
659 <                        gtk_menu_set_active(GTK_MENU(menu), 2);
660 <                        break;
661 <                case 4:
662 <                        gtk_menu_set_active(GTK_MENU(menu), 3);
663 <                        break;
664 <                case 2:
665 <                        gtk_menu_set_active(GTK_MENU(menu), 4);
666 <                        break;
667 <                case 1:
668 <                        gtk_menu_set_active(GTK_MENU(menu), 5);
669 <                        break;
688 >                case 12: item = 0; break;
689 >                case 8: item = 1; break;
690 >                case 6: item = 2; break;
691 >                case 4: item = 3; break;
692 >                case 2: item = 4; break;
693 >                case 1: item = 5; break;
694 >                case 0: item = 6; break;
695          }
696 +        if (item >= 0)
697 +                gtk_menu_set_active(GTK_MENU(menu), item);
698          gtk_option_menu_set_menu(GTK_OPTION_MENU(w_frameskip), menu);
699          gtk_table_attach(GTK_TABLE(table), w_frameskip, 1, 2, 1, 2, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
700  
# Line 678 | Line 705 | static void create_graphics_pane(GtkWidg
705          combo = gtk_combo_new();
706          gtk_widget_show(combo);
707          GList *glist1 = NULL;
708 <        glist1 = g_list_append(glist1, (char *)"512");
709 <        glist1 = g_list_append(glist1, (char *)"640");
710 <        glist1 = g_list_append(glist1, (char *)"800");
711 <        glist1 = g_list_append(glist1, (char *)"1024");
712 <        glist1 = g_list_append(glist1, (char *)"MAX");
708 >        glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_512_LAB));
709 >        glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_640_LAB));
710 >        glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_800_LAB));
711 >        glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_1024_LAB));
712 >        glist1 = g_list_append(glist1, (void *)GetString(STR_SIZE_MAX_LAB));
713          gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist1);
714          if (dis_width)
715                  sprintf(str, "%d", dis_width);
716          else
717 <                strcpy(str, "MAX");
717 >                strcpy(str, GetString(STR_SIZE_MAX_LAB));
718          gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), str);
719          gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 2, 3, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
720          w_display_x = GTK_COMBO(combo)->entry;
# Line 699 | Line 726 | static void create_graphics_pane(GtkWidg
726          combo = gtk_combo_new();
727          gtk_widget_show(combo);
728          GList *glist2 = NULL;
729 <        glist2 = g_list_append(glist2, (char *)"384");
730 <        glist2 = g_list_append(glist2, (char *)"480");
731 <        glist2 = g_list_append(glist2, (char *)"600");
732 <        glist2 = g_list_append(glist2, (char *)"768");
733 <        glist2 = g_list_append(glist2, (char *)"MAX");
729 >        glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_384_LAB));
730 >        glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_480_LAB));
731 >        glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_600_LAB));
732 >        glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_768_LAB));
733 >        glist2 = g_list_append(glist2, (void *)GetString(STR_SIZE_MAX_LAB));
734          gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist2);
735          if (dis_height)
736                  sprintf(str, "%d", dis_height);
737          else
738 <                strcpy(str, "MAX");
738 >                strcpy(str, GetString(STR_SIZE_MAX_LAB));
739          gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), str);
740          gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 3, 4, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
741          w_display_y = GTK_COMBO(combo)->entry;
742  
743 + #ifdef ENABLE_FBDEV_DGA
744 +        l_fbdev_name = gtk_label_new(GetString(STR_FBDEV_NAME_CTRL));
745 +        gtk_widget_show(l_fbdev_name);
746 +        gtk_table_attach(GTK_TABLE(table), l_fbdev_name, 0, 1, 4, 5, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
747 +
748 +        w_fbdev_name = gtk_entry_new();
749 +        gtk_widget_show(w_fbdev_name);
750 +        gtk_entry_set_text(GTK_ENTRY(w_fbdev_name), fbdev_name);
751 +        gtk_table_attach(GTK_TABLE(table), w_fbdev_name, 1, 2, 4, 5, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
752 +
753 +        w_fbdevice_file = make_entry(box, STR_FBDEVICE_FILE_CTRL, "fbdevicefile");
754 + #endif
755 +
756          make_checkbox(box, STR_NOSOUND_CTRL, "nosound", GTK_SIGNAL_FUNC(tb_nosound));
757  
758          hide_show_graphics_widgets();
# Line 762 | Line 802 | static GList *add_serial_names(void)
802                          if (strncmp(de->d_name, "ttyS", 4) == 0 || strncmp(de->d_name, "lp", 2) == 0) {
803   #elif defined(__FreeBSD__)
804                          if (strncmp(de->d_name, "cuaa", 4) == 0 || strncmp(de->d_name, "lpt", 3) == 0) {
805 + #elif defined(__NetBSD__)
806 +                        if (strncmp(de->d_name, "tty0", 4) == 0 || strncmp(de->d_name, "lpt", 3) == 0) {
807   #elif defined(sgi)
808                          if (strncmp(de->d_name, "ttyf", 4) == 0 || strncmp(de->d_name, "plp", 3) == 0) {
809   #else
# Line 777 | Line 819 | static GList *add_serial_names(void)
819          if (glist)
820                  g_list_sort(glist, gl_str_cmp);
821          else
822 <                glist = g_list_append(glist, (char *)"<none>");
822 >                glist = g_list_append(glist, (void *)GetString(STR_NONE_LAB));
823          return glist;
824   }
825  
# Line 797 | Line 839 | static GList *add_ether_names(void)
839                          struct ifreq req, *ifr = ifc.ifc_req;
840                          for (int i=0; i<ifc.ifc_len; i+=sizeof(ifreq), ifr++) {
841                                  req = *ifr;
842 < #if defined(__FreeBSD__) || defined(sgi)
842 > #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(sgi)
843                                  if (ioctl(s, SIOCGIFADDR, &req) == 0 && (req.ifr_addr.sa_family == ARPHRD_ETHER || req.ifr_addr.sa_family == ARPHRD_ETHER+1)) {
844 < #else
844 > #elif defined(__linux__)
845                                  if (ioctl(s, SIOCGIFHWADDR, &req) == 0 && req.ifr_hwaddr.sa_family == ARPHRD_ETHER) {
846 + #else
847 +                                if (false) {
848   #endif
849                                          char *str = new char[64];
850                                          strncpy(str, ifr->ifr_name, 63);
# Line 813 | Line 857 | static GList *add_ether_names(void)
857          if (glist)
858                  g_list_sort(glist, gl_str_cmp);
859          else
860 <                glist = g_list_append(glist, (char *)"<none>");
860 >                glist = g_list_append(glist, (void *)GetString(STR_NONE_LAB));
861          return glist;
862   }
863  
# Line 883 | Line 927 | static GtkWidget *w_keycode_file;
927   static void mn_modelid_5(...) {PrefsReplaceInt32("modelid", 5);}
928   static void mn_modelid_14(...) {PrefsReplaceInt32("modelid", 14);}
929  
930 + // CPU/FPU type
931 + static void mn_cpu_68020(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", false);}
932 + static void mn_cpu_68020_fpu(...) {PrefsReplaceInt32("cpu", 2); PrefsReplaceBool("fpu", true);}
933 + static void mn_cpu_68030(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", false);}
934 + static void mn_cpu_68030_fpu(...) {PrefsReplaceInt32("cpu", 3); PrefsReplaceBool("fpu", true);}
935 + static void mn_cpu_68040(...) {PrefsReplaceInt32("cpu", 4); PrefsReplaceBool("fpu", true);}
936 +
937   // "Use Raw Keycodes" button toggled
938   static void tb_keycodes(GtkWidget *widget)
939   {
# Line 910 | Line 961 | static void read_memory_settings(void)
961   // Create "Memory/Misc" pane
962   static void create_memory_pane(GtkWidget *top)
963   {
964 <        GtkWidget *box, *vbox, *hbox, *hbox2, *label, *scale, *opt, *menu;
964 >        GtkWidget *box, *vbox, *hbox, *hbox2, *label, *scale, *menu;
965  
966          box = make_pane(top, STR_MEMORY_MISC_PANE_TITLE);
967  
# Line 952 | Line 1003 | static void create_memory_pane(GtkWidget
1003          gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
1004          gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
1005  
1006 <        static const opt_desc options[] = {
1006 >        static const opt_desc model_options[] = {
1007                  {STR_MODELID_5_LAB, GTK_SIGNAL_FUNC(mn_modelid_5)},
1008                  {STR_MODELID_14_LAB, GTK_SIGNAL_FUNC(mn_modelid_14)},
1009                  {0, NULL}
# Line 962 | Line 1013 | static void create_memory_pane(GtkWidget
1013                  case 5: active = 0; break;
1014                  case 14: active = 1; break;
1015          }
1016 <        menu = make_option_menu(box, STR_MODELID_CTRL, options, active);
1016 >        make_option_menu(box, STR_MODELID_CTRL, model_options, active);
1017 >
1018 > #if EMULATED_68K
1019 >        static const opt_desc cpu_options[] = {
1020 >                {STR_CPU_68020_LAB, GTK_SIGNAL_FUNC(mn_cpu_68020)},
1021 >                {STR_CPU_68020_FPU_LAB, GTK_SIGNAL_FUNC(mn_cpu_68020_fpu)},
1022 >                {STR_CPU_68030_LAB, GTK_SIGNAL_FUNC(mn_cpu_68030)},
1023 >                {STR_CPU_68030_FPU_LAB, GTK_SIGNAL_FUNC(mn_cpu_68030_fpu)},
1024 >                {STR_CPU_68040_LAB, GTK_SIGNAL_FUNC(mn_cpu_68040)},
1025 >                {0, NULL}
1026 >        };
1027 >        int cpu = PrefsFindInt32("cpu");
1028 >        bool fpu = PrefsFindBool("fpu");
1029 >        active = 0;
1030 >        switch (cpu) {
1031 >                case 2: active = fpu ? 1 : 0; break;
1032 >                case 3: active = fpu ? 3 : 2; break;
1033 >                case 4: active = 4;
1034 >        }
1035 >        make_option_menu(box, STR_CPU_CTRL, cpu_options, active);
1036 > #endif
1037  
1038          w_rom_file = make_entry(box, STR_ROM_FILE_CTRL, "rom");
1039  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines