Diff for /np2/x11/gtk2/dialog_sound.c between versions 1.1 and 1.10

version 1.1, 2004/07/15 14:24:33 version 1.10, 2011/01/15 16:55:37
Line 1 Line 1
 /*      $Id$    */  /*      $Id$    */
   
 /*  /*
  * Copyright (c) 2002, 2003, 2004   * Copyright (c) 2002-2004 NONAKA Kimihiro
  *    NONAKA Kimihiro (aw9k-nnk@asahi-net.or.jp) All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions   * modification, are permitted provided that the following conditions
Line 229  static GtkObject *spb_vr_level_adj; Line 229  static GtkObject *spb_vr_level_adj;
   
   
 /*  /*
    * JoyPad
    */
   
   static const char *joypad_nodevice_str = "No device";
   static const char *joypad_noconnect_str = "N/C";
   static const char *joypad_num_str[256] = {
           "0",   "1",   "2",   "3",   "4",   "5",   "6",   "7", 
           "8",   "9",   "10",  "11",  "12",  "13",  "14",  "15", 
           "16",  "17",  "18",  "19",  "20",  "21",  "22",  "23", 
           "24",  "25",  "26",  "27",  "28",  "29",  "30",  "31", 
           "32",  "33",  "34",  "35",  "36",  "37",  "38",  "39", 
           "40",  "41",  "42",  "43",  "44",  "45",  "46",  "47", 
           "48",  "49",  "50",  "51",  "52",  "53",  "54",  "55", 
           "56",  "57",  "58",  "59",  "60",  "61",  "62",  "63", 
           "64",  "65",  "66",  "67",  "68",  "69",  "70",  "71", 
           "72",  "73",  "74",  "75",  "76",  "77",  "78",  "79", 
           "80",  "81",  "82",  "83",  "84",  "85",  "86",  "87", 
           "88",  "89",  "90",  "91",  "92",  "93",  "94",  "95", 
           "96",  "97",  "98",  "99",  "100", "101", "102", "103", 
           "104", "105", "106", "107", "108", "109", "110", "111", 
           "112", "113", "114", "115", "116", "117", "118", "119", 
           "120", "121", "122", "123", "124", "125", "126", "127", 
           "128", "129", "130", "131", "132", "133", "134", "135", 
           "136", "137", "138", "139", "140", "141", "142", "143", 
           "144", "145", "146", "147", "148", "149", "150", "151", 
           "152", "153", "154", "155", "156", "157", "158", "159", 
           "160", "161", "162", "163", "164", "165", "166", "167", 
           "168", "169", "170", "171", "172", "173", "174", "175", 
           "176", "177", "178", "179", "180", "181", "182", "183", 
           "184", "185", "186", "187", "188", "189", "190", "191", 
           "192", "193", "194", "195", "196", "197", "198", "199", 
           "200", "201", "202", "203", "204", "205", "206", "207", 
           "208", "209", "210", "211", "212", "213", "214", "215", 
           "216", "217", "218", "219", "220", "221", "222", "223", 
           "224", "225", "226", "227", "228", "229", "230", "231", 
           "232", "233", "234", "235", "236", "237", "238", "239", 
           "240", "241", "242", "243", "244", "245", "246", "247", 
           "248", "249", "250", "251", "252", "253", "254", "255", 
   };
   
   static const joymng_devinfo_t **joypad_devlist;
   static GtkWidget *joypad_use_checkbutton[1];
   static GtkWidget *joypad_devlist_combo;
   static GtkWidget *joypad_axis_combo[JOY_NAXIS];
   static GtkWidget *joypad_button_combo[JOY_NBUTTON];
   static char joypad_devname[MAX_PATH];
   static UINT8 joypad_axis[JOY_NAXIS];
   static UINT8 joypad_button[JOY_NBUTTON];
   
   
   /*
  * Driver   * Driver
  */   */
   
 static const char *driver_name[SNDDRV_DRVMAX] = {  static const char *driver_name[SNDDRV_DRVMAX] = {
         "None",          "None",
         "NetBSD",  
         "OSS",  
         "EsounD",  
         "SDL",          "SDL",
 };  };
   
 static GtkWidget *driver_audio_device_entry;  
 static int driver_snddrv;  static int driver_snddrv;
   
   
Line 276  ok_button_clicked(GtkButton *b, gpointer Line 323  ok_button_clicked(GtkButton *b, gpointer
         UINT8 spb_x;          UINT8 spb_x;
         UINT8 spbopt, spbopt_mask;          UINT8 spbopt, spbopt_mask;
   
         /* Driver */          /* JoyPad */
         const gchar *driver_audiodevp;          UINT8 joypad[1];
           gint joypad_device_index;
   
         /* common */          /* common */
           char buf[32];
         int i;          int i;
         BOOL renewal;          BOOL renewal;
   
         UNUSED(b);  
   
         /* Mixer */          /* Mixer */
         renewal = FALSE;          renewal = FALSE;
         for (i = 0; i < NELEMENTS(mixer_vol_tbl); i++) {          for (i = 0; i < NELEMENTS(mixer_vol_tbl); i++) {
Line 323  ok_button_clicked(GtkButton *b, gpointer Line 370  ok_button_clicked(GtkButton *b, gpointer
         for (i = 0; i < NELEMENTS(snd26_ioport_str); i++) {          for (i = 0; i < NELEMENTS(snd26_ioport_str); i++) {
                 if (strcmp(snd26_ioport, snd26_ioport_str[i]) == 0) {                  if (strcmp(snd26_ioport, snd26_ioport_str[i]) == 0) {
                         if (SND26_GET_IOPORT() != i) {                          if (SND26_GET_IOPORT() != i) {
                                 snd86opt |= SND26_SET_IOPORT(i);                                  snd26opt |= SND26_SET_IOPORT(i);
                                 snd86opt_mask |= SND26_MASK_IOPORT;                                  snd26opt_mask |= SND26_MASK_IOPORT;
                                 renewal = TRUE;                                  renewal = TRUE;
                         }                          }
                         break;                          break;
Line 476  ok_button_clicked(GtkButton *b, gpointer Line 523  ok_button_clicked(GtkButton *b, gpointer
                 sysmng_update(SYS_UPDATEOSCFG);                  sysmng_update(SYS_UPDATEOSCFG);
         }          }
   
         /* Driver */          /* JoyPad */
         driver_audiodevp = gtk_entry_get_text(GTK_ENTRY(driver_audio_device_entry));          if (!(np2oscfg.JOYPAD1 & 2)) {
                   joypad[0] = GTK_TOGGLE_BUTTON(joypad_use_checkbutton[0])->active;
   
                   renewal = FALSE;
                   if ((np2oscfg.JOYPAD1 ^ joypad[0]) & 1) {
                           np2oscfg.JOYPAD1 = joypad[0];
                           renewal = TRUE;
                   }
   
                   joypad_device_index = 0;
                   if (joypad_devlist == NULL) {
                           for (i = 0; joypad_devlist[i] != NULL; ++i) {
                                   if (strcmp(joypad_devname, joypad_devlist[i]->devname) == 0) {
                                           joypad_device_index = joypad_devlist[i]->devindex;
                                           break;
                                   }
                           }
                   }
                   g_snprintf(buf, sizeof(buf), "%d", joypad_device_index);
                   if (strcmp(np2oscfg.JOYDEV[0], buf) != 0) {
                           milstr_ncpy(np2oscfg.JOYDEV[0], buf, sizeof(np2oscfg.JOYDEV[0]));
                           renewal = TRUE;
                   }
   
                   for (i = 0; i < JOY_NAXIS; ++i) {
                           if (np2oscfg.JOYAXISMAP[0][i] != joypad_axis[i]) {
                                   memcpy(np2oscfg.JOYAXISMAP[0], joypad_axis, sizeof(np2oscfg.JOYAXISMAP[0]));
                                   renewal = TRUE;
                                   break;
                           }
                   }
   
                   for (i = 0; i < JOY_NBUTTON; ++i) {
                           if (np2oscfg.JOYBTNMAP[0][i] != joypad_button[i]) {
                                   memcpy(np2oscfg.JOYBTNMAP[0], joypad_button, sizeof(np2oscfg.JOYBTNMAP[0]));
                                   renewal = TRUE;
                                   break;
                           }
                   }
   
                   if (renewal) {
                           joymng_initialize();
                           sysmng_update(SYS_UPDATEOSCFG);
                   }
           }
   
           /* Driver */
         renewal = FALSE;          renewal = FALSE;
         if (np2oscfg.snddrv != driver_snddrv) {          if (np2oscfg.snddrv != driver_snddrv) {
                 np2oscfg.snddrv = driver_snddrv;                  np2oscfg.snddrv = driver_snddrv;
                 renewal = TRUE;                  renewal = TRUE;
         }          }
         if (strcmp(np2oscfg.audiodev, driver_audiodevp) != 0) {  
                 milstr_ncpy(np2oscfg.audiodev, driver_audiodevp, sizeof(np2oscfg.audiodev));  
                 renewal = TRUE;  
         }  
   
         if (renewal) {          if (renewal) {
                 sysmng_update(SYS_UPDATEOSCFG);                  sysmng_update(SYS_UPDATEOSCFG);
Line 501  static void Line 589  static void
 dialog_destroy(GtkWidget *w, GtkWidget **wp)  dialog_destroy(GtkWidget *w, GtkWidget **wp)
 {  {
   
         UNUSED(wp);  
   
         install_idle_process();          install_idle_process();
         gtk_widget_destroy(w);          gtk_widget_destroy(w);
 }  }
Line 512  mixer_default_button_clicked(GtkButton * Line 598  mixer_default_button_clicked(GtkButton *
 {  {
         int i;          int i;
   
         UNUSED(b);  
         UNUSED(d);  
   
         for (i = 0; i < NELEMENTS(mixer_vol_tbl); i++) {          for (i = 0; i < NELEMENTS(mixer_vol_tbl); i++) {
                 gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[i]), 64.0);                  gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[i]), 64.0);
         }          }
Line 528  snd14_default_button_clicked(GtkButton * Line 611  snd14_default_button_clicked(GtkButton *
         };          };
         int i;          int i;
   
         UNUSED(b);  
         UNUSED(d);  
   
         for (i = 0; i < NELEMENTS(snd14_adj); i++) {          for (i = 0; i < NELEMENTS(snd14_adj); i++) {
                 gtk_adjustment_set_value(GTK_ADJUSTMENT(snd14_adj[i]), defval[i]);                  gtk_adjustment_set_value(GTK_ADJUSTMENT(snd14_adj[i]), defval[i]);
         }          }
Line 540  static void Line 620  static void
 snd26_default_button_clicked(GtkButton *b, gpointer d)  snd26_default_button_clicked(GtkButton *b, gpointer d)
 {  {
   
         UNUSED(b);  
         UNUSED(d);  
   
         gtk_entry_set_text(GTK_ENTRY(snd26_ioport_entry), "0188");          gtk_entry_set_text(GTK_ENTRY(snd26_ioport_entry), "0188");
         gtk_entry_set_text(GTK_ENTRY(snd26_int_entry), "INT5");          gtk_entry_set_text(GTK_ENTRY(snd26_int_entry), "INT5");
         gtk_entry_set_text(GTK_ENTRY(snd26_romaddr_entry), "CC000");          gtk_entry_set_text(GTK_ENTRY(snd26_romaddr_entry), "CC000");
Line 552  static void Line 629  static void
 snd86_default_button_clicked(GtkButton *b, gpointer d)  snd86_default_button_clicked(GtkButton *b, gpointer d)
 {  {
   
         UNUSED(b);  
         UNUSED(d);  
   
         gtk_entry_set_text(GTK_ENTRY(snd86_ioport_entry), "0188");          gtk_entry_set_text(GTK_ENTRY(snd86_ioport_entry), "0188");
         gtk_entry_set_text(GTK_ENTRY(snd86_int_entry), "INT5");          gtk_entry_set_text(GTK_ENTRY(snd86_int_entry), "INT5");
         gtk_entry_set_text(GTK_ENTRY(snd86_soundid_entry), "4x");          gtk_entry_set_text(GTK_ENTRY(snd86_soundid_entry), "4x");
Line 569  spb_default_button_clicked(GtkButton *b, Line 643  spb_default_button_clicked(GtkButton *b,
 {  {
         int i;          int i;
   
         UNUSED(b);  
         UNUSED(d);  
   
         gtk_entry_set_text(GTK_ENTRY(spb_ioport_entry), "0188");          gtk_entry_set_text(GTK_ENTRY(spb_ioport_entry), "0188");
         gtk_entry_set_text(GTK_ENTRY(spb_int_entry), "INT5");          gtk_entry_set_text(GTK_ENTRY(spb_int_entry), "INT5");
         gtk_entry_set_text(GTK_ENTRY(spb_romaddr_entry), "CC000");          gtk_entry_set_text(GTK_ENTRY(spb_romaddr_entry), "CC000");
Line 585  static void Line 656  static void
 driver_radiobutton_clicked(GtkButton *b, gpointer d)  driver_radiobutton_clicked(GtkButton *b, gpointer d)
 {  {
   
         UNUSED(b);  
   
         driver_snddrv = (int)d;          driver_snddrv = (int)d;
 }  }
   
Line 636  create_mixer_note(void) Line 705  create_mixer_note(void)
         gtk_widget_show(mixer_default_button);          gtk_widget_show(mixer_default_button);
         gtk_box_pack_end(GTK_BOX(hbox), mixer_default_button, FALSE, FALSE, 5);          gtk_box_pack_end(GTK_BOX(hbox), mixer_default_button, FALSE, FALSE, 5);
         g_signal_connect_swapped(GTK_OBJECT(mixer_default_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(mixer_default_button), "clicked",
             GTK_SIGNAL_FUNC(mixer_default_button_clicked), NULL);              G_CALLBACK(mixer_default_button_clicked), NULL);
   
         return root_widget;          return root_widget;
 }  }
Line 684  create_pc9801_14_note(void) Line 753  create_pc9801_14_note(void)
         gtk_widget_show(snd14_default_button);          gtk_widget_show(snd14_default_button);
         gtk_box_pack_end(GTK_BOX(hbox), snd14_default_button, FALSE, FALSE, 5);          gtk_box_pack_end(GTK_BOX(hbox), snd14_default_button, FALSE, FALSE, 5);
         g_signal_connect_swapped(GTK_OBJECT(snd14_default_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(snd14_default_button), "clicked",
             GTK_SIGNAL_FUNC(snd14_default_button_clicked), NULL);              G_CALLBACK(snd14_default_button_clicked), NULL);
   
         return root_widget;          return root_widget;
 }  }
Line 778  create_pc9801_26_note(void) Line 847  create_pc9801_26_note(void)
         gtk_widget_show(snd26_default_button);          gtk_widget_show(snd26_default_button);
         gtk_box_pack_end(GTK_BOX(hbox), snd26_default_button, FALSE, FALSE, 5);          gtk_box_pack_end(GTK_BOX(hbox), snd26_default_button, FALSE, FALSE, 5);
         g_signal_connect_swapped(GTK_OBJECT(snd26_default_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(snd26_default_button), "clicked",
             GTK_SIGNAL_FUNC(snd26_default_button_clicked), NULL);              G_CALLBACK(snd26_default_button_clicked), NULL);
   
         return root_widget;          return root_widget;
 }  }
Line 880  create_pc9801_86_note(void) Line 949  create_pc9801_86_note(void)
         gtk_widget_show(snd86_default_button);          gtk_widget_show(snd86_default_button);
         gtk_box_pack_end(GTK_BOX(hbox), snd86_default_button, FALSE, FALSE, 5);          gtk_box_pack_end(GTK_BOX(hbox), snd86_default_button, FALSE, FALSE, 5);
         g_signal_connect_swapped(GTK_OBJECT(snd86_default_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(snd86_default_button), "clicked",
             GTK_SIGNAL_FUNC(snd86_default_button_clicked), NULL);              G_CALLBACK(snd86_default_button_clicked), NULL);
   
         return root_widget;          return root_widget;
 }  }
Line 1008  create_spb_note(void) Line 1077  create_spb_note(void)
         gtk_widget_show(spb_default_button);          gtk_widget_show(spb_default_button);
         gtk_box_pack_end(GTK_BOX(hbox), spb_default_button, FALSE, FALSE, 5);          gtk_box_pack_end(GTK_BOX(hbox), spb_default_button, FALSE, FALSE, 5);
         g_signal_connect_swapped(GTK_OBJECT(spb_default_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(spb_default_button), "clicked",
             GTK_SIGNAL_FUNC(spb_default_button_clicked), NULL);              G_CALLBACK(spb_default_button_clicked), NULL);
   
           return root_widget;
   }
   
   static void
   joypad_device_changed(GtkEditable *e, gpointer d)
   {
           GtkWidget *axis_entry[JOY_NAXIS];
           GtkWidget *button_entry[JOY_NBUTTON];
           const gchar *dvname;
           int drv;
           int i, j;
   
           dvname = gtk_entry_get_text(GTK_ENTRY(e));
           if ((joypad_devlist == NULL)
            || (dvname == NULL)
            || (strcmp(dvname, joypad_nodevice_str) == 0)) {
                   milstr_ncpy(joypad_devname, joypad_nodevice_str, sizeof(joypad_devname));
                   return;
           }
   
           for (drv = 0; joypad_devlist[drv] != NULL; ++drv) {
                   if (strcmp(dvname, joypad_devlist[drv]->devname) == 0) {
                           break;
                   }
           }
           if (joypad_devlist[drv] == NULL) {
                   drv = 0;
                   if (joypad_devlist[drv] == NULL) {
                           milstr_ncpy(joypad_devname, joypad_nodevice_str, sizeof(joypad_devname));
                           return;
                   }
           }
           milstr_ncpy(joypad_devname, joypad_devlist[drv]->devname, sizeof(joypad_devname));
   
           /* Axis */
           for (i = 0; i < JOY_NAXIS; ++i) {
                   gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_axis_combo[i]), joypad_noconnect_str);
                   for (j = 0; j < joypad_devlist[drv]->naxis; j++) {
                           gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_axis_combo[i]), joypad_num_str[j]);
                   }
   
                   axis_entry[i] = GTK_BIN(joypad_axis_combo[i])->child;
                   gtk_widget_show(axis_entry[i]);
                   gtk_editable_set_editable(GTK_EDITABLE(axis_entry[i]), FALSE);
   
                   if (np2oscfg.JOYAXISMAP[0][i] < joypad_devlist[drv]->naxis) {
                           gtk_entry_set_text(GTK_ENTRY(axis_entry[i]), joypad_num_str[np2oscfg.JOYAXISMAP[0][i]]);
                   } else {
                           gtk_entry_set_text(GTK_ENTRY(axis_entry[i]), joypad_noconnect_str);
                   }
           }
   
           /* Button */
           for (i = 0; i < JOY_NBUTTON; ++i) {
                   gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_button_combo[i]), joypad_noconnect_str);
                   for (j = 0; j < joypad_devlist[drv]->nbutton; j++) {
                           gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_button_combo[i]), joypad_num_str[j]);
                   }
   
                   button_entry[i] = GTK_BIN(joypad_button_combo[i])->child;
                   gtk_widget_show(button_entry[i]);
                   gtk_editable_set_editable(GTK_EDITABLE(button_entry[i]), FALSE);
   
                   if (np2oscfg.JOYBTNMAP[0][i] < joypad_devlist[drv]->nbutton) {
                           gtk_entry_set_text(GTK_ENTRY(button_entry[i]), joypad_num_str[np2oscfg.JOYBTNMAP[0][i]]);
                   } else {
                           gtk_entry_set_text(GTK_ENTRY(button_entry[i]), joypad_noconnect_str);
                   }
           }
   }
   
   static void
   joypad_axis_entry_changed(GtkEditable *e, gpointer d)
   {
           const gchar *str = gtk_entry_get_text(GTK_ENTRY(e));
           UINT8 *p = (UINT8 *)d;
   
           if (strcmp(str, joypad_noconnect_str) == 0) {
                   *p = JOY_AXIS_INVALID;
           } else {
                   *p = milstr_solveINT(str);
           }
   }
   
   static void
   joypad_button_entry_changed(GtkEditable *e, gpointer d)
   {
           const gchar *str = gtk_entry_get_text(GTK_ENTRY(e));
           UINT8 *p = (UINT8 *)d;
   
           if (strcmp(str, joypad_noconnect_str) == 0) {
                   *p = JOY_BUTTON_INVALID;
           } else {
                   *p = milstr_solveINT(str);
           }
   }
   
   static GtkWidget *
   create_joypad_note(void)
   {
           char buf[32];
           GtkWidget *root_widget;
           GtkWidget *table;
           GtkWidget *devlist_label;
           GtkWidget *devlist_entry;
           GtkWidget *axis_label[JOY_NAXIS];
           GtkWidget *axis_entry[JOY_NAXIS];
           GtkWidget *button_label[JOY_NBUTTON];
           GtkWidget *button_entry[JOY_NBUTTON];
           int ndrv, drv;
           int i;
   
           root_widget = gtk_vbox_new(FALSE, 0);
           gtk_container_set_border_width(GTK_CONTAINER(root_widget), 5);
           gtk_widget_show(root_widget);
   
           table = gtk_table_new(3, 8, FALSE);
           gtk_table_set_row_spacings(GTK_TABLE(table), 3);
           gtk_table_set_col_spacings(GTK_TABLE(table), 5);
           gtk_box_pack_start(GTK_BOX(root_widget), table, FALSE, FALSE, 0);
           gtk_widget_show(table);
   
           /* Use JoyPad-1 */
           joypad_use_checkbutton[0] = gtk_check_button_new_with_label("Use JoyPad-1");
           gtk_widget_show(joypad_use_checkbutton[0]);
           gtk_table_attach_defaults(GTK_TABLE(table), joypad_use_checkbutton[0], 0, 3, 0, 1);
   
           /* Device */
           devlist_label = gtk_label_new("Device");
           gtk_widget_show(devlist_label);
           gtk_table_attach_defaults(GTK_TABLE(table), devlist_label, 0, 1, 1, 2);
   
           joypad_devlist_combo = gtk_combo_box_entry_new_text();
           gtk_widget_show(joypad_devlist_combo);
           gtk_table_attach_defaults(GTK_TABLE(table), joypad_devlist_combo, 1, 3, 1, 2);
   
           joypad_devlist = joymng_get_devinfo_list();
           if (joypad_devlist != NULL) {
                   for (i = 0; joypad_devlist[i] != NULL; ++i) {
                           gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_devlist_combo), joypad_devlist[i]->devname);
                   }
                   ndrv = i;
           } else {
                   gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_devlist_combo), joypad_nodevice_str);
                   ndrv = 0;
           }
   
           devlist_entry = GTK_BIN(joypad_devlist_combo)->child;
           gtk_widget_show(devlist_entry);
           gtk_editable_set_editable(GTK_EDITABLE(devlist_entry), FALSE);
           g_signal_connect(GTK_OBJECT(devlist_entry), "changed",
               G_CALLBACK(joypad_device_changed), (gpointer)joypad_devlist_combo);
   
           /* Axis */
           for (i = 0; i < JOY_NAXIS; ++i) {
                   g_snprintf(buf, sizeof(buf), "%c axis", 'X' + i);
                   axis_label[i] = gtk_label_new(buf);
                   gtk_widget_show(axis_label[i]);
                   gtk_table_attach_defaults(GTK_TABLE(table), axis_label[i], 0, 1, 2+i, 3+i);
   
                   joypad_axis_combo[i] = gtk_combo_box_entry_new_text();
                   gtk_widget_show(joypad_axis_combo[i]);
                   gtk_table_attach_defaults(GTK_TABLE(table), joypad_axis_combo[i], 1, 2, 2+i, 3+i);
                   gtk_widget_set_size_request(joypad_axis_combo[i], 48, -1);
   
                   gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_axis_combo[i]), joypad_noconnect_str);
   
                   axis_entry[i] = GTK_BIN(joypad_axis_combo[i])->child;
                   gtk_widget_show(axis_entry[i]);
                   gtk_editable_set_editable(GTK_EDITABLE(axis_entry[i]), FALSE);
                   gtk_entry_set_text(GTK_ENTRY(axis_entry[i]), joypad_noconnect_str);
                   g_signal_connect(GTK_OBJECT(axis_entry[i]), "changed",
                       G_CALLBACK(joypad_axis_entry_changed),
                       (gpointer)(&joypad_axis[i]));
           }
   
           /* Button */
           for (i = 0; i < JOY_NBUTTON; ++i) {
                   g_snprintf(buf, sizeof(buf), "%sButton%d", (i >= JOY_NBUTTON / 2) ? "Rapid " : "", i % 2);
                   button_label[i] = gtk_label_new(buf);
                   gtk_widget_show(button_label[i]);
                   gtk_table_attach_defaults(GTK_TABLE(table), button_label[i], 0, 1, 4+i, 5+i);
   
                   joypad_button_combo[i] = gtk_combo_box_entry_new_text();
                   gtk_widget_show(joypad_button_combo[i]);
                   gtk_table_attach_defaults(GTK_TABLE(table), joypad_button_combo[i], 1, 2, 4+i, 5+i);
                   gtk_widget_set_size_request(joypad_button_combo[i], 48, -1);
   
                   gtk_combo_box_append_text(GTK_COMBO_BOX(joypad_button_combo[i]), joypad_noconnect_str);
   
                   button_entry[i] = GTK_BIN(joypad_button_combo[i])->child;
                   gtk_widget_show(button_entry[i]);
                   gtk_editable_set_editable(GTK_EDITABLE(button_entry[i]), FALSE);
                   gtk_entry_set_text(GTK_ENTRY(button_entry[i]), joypad_noconnect_str);
                   g_signal_connect(GTK_OBJECT(button_entry[i]), "changed",
                       G_CALLBACK(joypad_button_entry_changed),
                       (gpointer)(&joypad_button[i]));
           }
   
           /* no joystick device */
           if ((np2oscfg.JOYPAD1 & 2) && (joypad_devlist == NULL)) {
                   gtk_widget_set_sensitive(joypad_use_checkbutton[0], FALSE);
                   gtk_widget_set_sensitive(joypad_devlist_combo, FALSE);
                   for (i = 0; i < JOY_NAXIS; ++i) {
                           gtk_widget_set_sensitive(joypad_axis_combo[i], FALSE);
                   }
                   for (i = 0; i < JOY_NBUTTON; ++i) {
                           gtk_widget_set_sensitive(joypad_button_combo[i], FALSE);
                   }
           }
   
           /* update status */
           if (joypad_devlist != NULL) {
                   drv = milstr_solveINT(np2oscfg.JOYDEV[0]);
                   if (drv < 0 || drv >= ndrv) {
                           drv = 0;
                   }
                   gtk_entry_set_text(GTK_ENTRY(devlist_entry), joypad_devlist[drv]->devname);
           } else {
                   gtk_entry_set_text(GTK_ENTRY(devlist_entry), joypad_nodevice_str);
           }
           if (np2oscfg.JOYPAD1 & 1) {
                   g_signal_emit_by_name(GTK_OBJECT(joypad_use_checkbutton[0]), "clicked");
           }
   
         return root_widget;          return root_widget;
 }  }
Line 1020  create_driver_note(void) Line 1314  create_driver_note(void)
         GtkWidget *driver_frame;          GtkWidget *driver_frame;
         GtkWidget *driver_vbox;          GtkWidget *driver_vbox;
         GtkWidget *driver_radiobutton[SNDDRV_DRVMAX];          GtkWidget *driver_radiobutton[SNDDRV_DRVMAX];
         GtkWidget *audio_device_label;  
         GtkWidget *snddrv_hbox;          GtkWidget *snddrv_hbox;
         int i;          int i;
   
Line 1038  create_driver_note(void) Line 1331  create_driver_note(void)
         gtk_container_add(GTK_CONTAINER(driver_frame), driver_vbox);          gtk_container_add(GTK_CONTAINER(driver_frame), driver_vbox);
   
         for (i = 0; i < SNDDRV_DRVMAX; i++) {          for (i = 0; i < SNDDRV_DRVMAX; i++) {
                 driver_radiobutton[i] = gtk_radio_button_new_with_label_from_widget((i > 0) ? GTK_RADIO_BUTTON(driver_radiobutton[i-1]) : NULL, driver_name[i]);                  driver_radiobutton[i] = gtk_radio_button_new_with_label_from_widget(i > 0 ? GTK_RADIO_BUTTON(driver_radiobutton[i-1]) : NULL, driver_name[i]);
                 gtk_widget_show(driver_radiobutton[i]);                  gtk_widget_show(driver_radiobutton[i]);
                 gtk_box_pack_start(GTK_BOX(driver_vbox), driver_radiobutton[i], TRUE, FALSE, 0);                  gtk_box_pack_start(GTK_BOX(driver_vbox), driver_radiobutton[i], TRUE, FALSE, 0);
                 g_signal_connect(GTK_OBJECT(driver_radiobutton[i]), "clicked",                  g_signal_connect(GTK_OBJECT(driver_radiobutton[i]), "clicked",
                     GTK_SIGNAL_FUNC(driver_radiobutton_clicked), (gpointer)i);                      G_CALLBACK(driver_radiobutton_clicked), GINT_TO_POINTER(i));
         }          }
 #if !defined(USE_NETBSDAUDIO)  
         gtk_widget_set_sensitive(driver_radiobutton[SNDDRV_NETBSD], FALSE);  
 #endif  
 #if !defined(USE_OSSAUDIO)  
         gtk_widget_set_sensitive(driver_radiobutton[SNDDRV_OSS], FALSE);  
 #endif  
 #if !defined(USE_ESDAUDIO)  
         gtk_widget_set_sensitive(driver_radiobutton[SNDDRV_ESD], FALSE);  
 #endif  
 #if !defined(USE_SDLAUDIO) && !defined(USE_SDLMIXER)  #if !defined(USE_SDLAUDIO) && !defined(USE_SDLMIXER)
         gtk_widget_set_sensitive(driver_radiobutton[SNDDRV_SDL], FALSE);          gtk_widget_set_sensitive(driver_radiobutton[SNDDRV_SDL], FALSE);
 #endif  #endif
   
         switch (np2oscfg.snddrv) {          switch (np2oscfg.snddrv) {
         case SNDDRV_NODRV:          case SNDDRV_NODRV:
 #if defined(USE_NETBSDAUDIO)  
         case SNDDRV_NETBSD:  
 #endif  
 #if defined(USE_OSSAUDIO)  
         case SNDDRV_OSS:  
 #endif  
 #if defined(USE_ESDAUDIO)  
         case SNDDRV_ESD:  
 #endif  
 #if defined(USE_SDLAUDIO) || defined(USE_SDLMIXER)  #if defined(USE_SDLAUDIO) || defined(USE_SDLMIXER)
         case SNDDRV_SDL:          case SNDDRV_SDL:
 #endif  #endif
                 g_signal_emit_by_name(GTK_OBJECT(driver_radiobutton[np2oscfg.snddrv]), "clicked");                  g_signal_emit_by_name(GTK_OBJECT(driver_radiobutton[np2oscfg.snddrv]), "clicked");
                 break;                  break;
   
 #if !defined(USE_NETBSDAUDIO)  
         case SNDDRV_NETBSD:  
 #endif  
 #if !defined(USE_OSSAUDIO)  
         case SNDDRV_OSS:  
 #endif  
 #if !defined(USE_ESDAUDIO)  
         case SNDDRV_ESD:  
 #endif  
 #if !defined(USE_SDLAUDIO) && !defined(USE_SDLMIXER)  #if !defined(USE_SDLAUDIO) && !defined(USE_SDLMIXER)
         case SNDDRV_SDL:          case SNDDRV_SDL:
 #endif  #endif
Line 1098  create_driver_note(void) Line 1364  create_driver_note(void)
         gtk_widget_show(snddrv_hbox);          gtk_widget_show(snddrv_hbox);
         gtk_box_pack_start(GTK_BOX(root_widget), snddrv_hbox, FALSE, FALSE, 0);          gtk_box_pack_start(GTK_BOX(root_widget), snddrv_hbox, FALSE, FALSE, 0);
   
         audio_device_label = gtk_label_new("Sound device");  
         gtk_widget_show(audio_device_label);  
         gtk_box_pack_start(GTK_BOX(snddrv_hbox), audio_device_label, FALSE, FALSE, 3);  
   
         driver_audio_device_entry = gtk_entry_new();  
         gtk_widget_show(driver_audio_device_entry);  
         gtk_entry_set_text(GTK_ENTRY(driver_audio_device_entry), np2oscfg.audiodev);  
         gtk_box_pack_start(GTK_BOX(snddrv_hbox), driver_audio_device_entry, TRUE, TRUE, 3);  
   
         return root_widget;          return root_widget;
 }  }
   
Line 1121  create_sound_dialog(void) Line 1378  create_sound_dialog(void)
         GtkWidget *pc9801_26_note;          GtkWidget *pc9801_26_note;
         GtkWidget *pc9801_86_note;          GtkWidget *pc9801_86_note;
         GtkWidget *spb_note;          GtkWidget *spb_note;
           GtkWidget *joypad_note;
         GtkWidget *driver_note;          GtkWidget *driver_note;
         GtkWidget *confirm_widget;          GtkWidget *confirm_widget;
         GtkWidget *ok_button;          GtkWidget *ok_button;
Line 1135  create_sound_dialog(void) Line 1393  create_sound_dialog(void)
         gtk_window_set_resizable(GTK_WINDOW(sound_dialog), FALSE);          gtk_window_set_resizable(GTK_WINDOW(sound_dialog), FALSE);
   
         g_signal_connect(GTK_OBJECT(sound_dialog), "destroy",          g_signal_connect(GTK_OBJECT(sound_dialog), "destroy",
             GTK_SIGNAL_FUNC(dialog_destroy), NULL);              G_CALLBACK(dialog_destroy), NULL);
   
         main_vbox = gtk_vbox_new(FALSE, 0);          main_vbox = gtk_vbox_new(FALSE, 0);
         gtk_widget_show(main_vbox);          gtk_widget_show(main_vbox);
Line 1165  create_sound_dialog(void) Line 1423  create_sound_dialog(void)
         spb_note = create_spb_note();          spb_note = create_spb_note();
         gtk_notebook_append_page(GTK_NOTEBOOK(notebook), spb_note, gtk_label_new("SPB"));          gtk_notebook_append_page(GTK_NOTEBOOK(notebook), spb_note, gtk_label_new("SPB"));
   
           /* "JoyPad" note */
           joypad_note = create_joypad_note();
           gtk_notebook_append_page(GTK_NOTEBOOK(notebook), joypad_note, gtk_label_new("JoyPad"));
   
         /* "Driver" note */          /* "Driver" note */
         driver_note = create_driver_note();          driver_note = create_driver_note();
         gtk_notebook_append_page(GTK_NOTEBOOK(notebook), driver_note, gtk_label_new("Driver"));          gtk_notebook_append_page(GTK_NOTEBOOK(notebook), driver_note, gtk_label_new("Driver"));
Line 1179  create_sound_dialog(void) Line 1441  create_sound_dialog(void)
         cancel_button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);          cancel_button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
         gtk_widget_show(cancel_button);          gtk_widget_show(cancel_button);
         gtk_box_pack_end(GTK_BOX(confirm_widget), cancel_button, FALSE, FALSE, 0);          gtk_box_pack_end(GTK_BOX(confirm_widget), cancel_button, FALSE, FALSE, 0);
         GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);          gtk_widget_set_can_default(cancel_button, TRUE);
         g_signal_connect_swapped(GTK_OBJECT(cancel_button), "clicked",          g_signal_connect_swapped(GTK_OBJECT(cancel_button), "clicked",
             GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(sound_dialog));              G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(sound_dialog));
   
         ok_button = gtk_button_new_from_stock(GTK_STOCK_OK);          ok_button = gtk_button_new_from_stock(GTK_STOCK_OK);
         gtk_widget_show(ok_button);          gtk_widget_show(ok_button);
         gtk_box_pack_end(GTK_BOX(confirm_widget), ok_button, FALSE, FALSE, 0);          gtk_box_pack_end(GTK_BOX(confirm_widget), ok_button, FALSE, FALSE, 0);
         GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);          gtk_widget_set_can_default(ok_button, TRUE);
         GTK_WIDGET_SET_FLAGS(ok_button, GTK_HAS_DEFAULT);          gtk_widget_has_default(ok_button);
         g_signal_connect(GTK_OBJECT(ok_button), "clicked",          g_signal_connect(GTK_OBJECT(ok_button), "clicked",
             GTK_SIGNAL_FUNC(ok_button_clicked), (gpointer)sound_dialog);              G_CALLBACK(ok_button_clicked), (gpointer)sound_dialog);
         gtk_widget_grab_default(ok_button);          gtk_widget_grab_default(ok_button);
   
         gtk_widget_show_all(sound_dialog);          gtk_widget_show_all(sound_dialog);

Removed from v.1.1  
changed lines
  Added in v.1.10


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