9 #include <glade/glade.h>
17 #define READBINARY "rb"
18 #define WRITEBINARY "wb"
19 #define CONFIG_FILENAME "dfsound.cfg"
21 void SaveConfig(GtkWidget *widget, gpointer user_datal);
23 /* This function checks for the value being outside the accepted range,
24 and returns the appropriate boundary value */
25 int set_limit (char *p, int len, int lower, int upper)
40 void on_about_clicked (GtkWidget *widget, gpointer user_data)
42 gtk_widget_destroy (widget);
46 void OnConfigClose(GtkWidget *widget, gpointer user_data)
48 GladeXML *xml = (GladeXML *)user_data;
50 gtk_widget_destroy(glade_xml_get_widget(xml, "CfgWnd"));
54 int main(int argc, char *argv[])
65 setlocale (LC_ALL, "");
66 bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
67 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
68 textdomain (GETTEXT_PACKAGE);
72 printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
76 if (strcmp(argv[1], "CFG") != 0 && strcmp(argv[1], "ABOUT") != 0) {
77 printf ("Usage: cfgDFSound {ABOUT | CFG}\n");
82 gtk_init(&argc, &argv);
84 if (strcmp(argv[1], "ABOUT") == 0) {
85 const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL};
86 widget = gtk_about_dialog_new ();
87 gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (widget), "dfsound PCSX Sound Plugin");
88 gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (widget), "1.6");
89 gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors);
90 gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (widget), "http://pcsx-df.sourceforge.net/");
92 g_signal_connect_data(GTK_OBJECT(widget), "response",
93 GTK_SIGNAL_FUNC(on_about_clicked), NULL, NULL, G_CONNECT_AFTER);
95 gtk_widget_show (widget);
101 xml = glade_xml_new(DATADIR "dfsound.glade2", "CfgWnd", NULL);
103 g_warning("We could not load the interface!");
107 strcpy(cfg, CONFIG_FILENAME);
109 in = fopen(cfg, READBINARY);
111 pB = (char *)malloc(32767);
112 memset(pB, 0, 32767);
113 len = fread(pB, 1, 32767, in);
117 printf ("Error - no configuration file\n");
118 /* TODO Raise error - no configuration file */
121 /* ADB TODO Replace a lot of the following with common functions */
123 strcpy(t, "\nVolume");
129 val = set_limit (p, len, 0, 4);
132 gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "cbVolume2")), val);
135 strcpy(t, "\nUseInterpolation");
141 val = set_limit (p, len, 0, 3);
144 gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "cbInterpolation2")), val);
147 strcpy(t, "\nXAPitch");
153 val = set_limit (p, len, 0, 1);
156 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkXASpeed")), val);
159 strcpy(t, "\nHighCompMode");
165 val = set_limit (p, len, 0, 1);
168 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkHiCompat")), val);
171 strcpy(t, "\nSPUIRQWait");
178 val = set_limit (p, len, 0, 1);
181 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkIRQWait")), val);
184 strcpy(t, "\nDisStereo");
191 val = set_limit (p, len, 0, 1);
194 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "chkDisStereo")), val);
197 strcpy(t, "\nUseReverb");
203 val = set_limit (p, len, 0, 2);
206 gtk_combo_box_set_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbReverb2")), val);
211 widget = glade_xml_get_widget(xml, "CfgWnd");
212 g_signal_connect_data(GTK_OBJECT(widget), "destroy",
213 GTK_SIGNAL_FUNC(SaveConfig), xml, NULL, 0);
215 widget = glade_xml_get_widget(xml, "btn_close");
216 g_signal_connect_data(GTK_OBJECT(widget), "clicked",
217 GTK_SIGNAL_FUNC(OnConfigClose), xml, NULL, G_CONNECT_AFTER);
223 void SaveConfig(GtkWidget *widget, gpointer user_data)
225 GladeXML *xml = (GladeXML *)user_data;
229 fp = fopen(CONFIG_FILENAME, WRITEBINARY);
231 fprintf(stderr, "Unable to write to configuration file %s!\n", CONFIG_FILENAME);
235 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbVolume2")));
236 fprintf(fp, "\nVolume = %d\n", val);
238 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbInterpolation2")));
239 fprintf(fp, "\nUseInterpolation = %d\n", val);
241 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkXASpeed")));
242 fprintf(fp, "\nXAPitch = %d\n", val);
244 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkHiCompat")));
245 fprintf(fp, "\nHighCompMode = %d\n", val);
247 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkIRQWait")));
248 fprintf(fp, "\nSPUIRQWait = %d\n", val);
250 val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "chkDisStereo")));
251 fprintf(fp, "\nDisStereo = %d\n", val);
253 val = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "cbReverb2")));
254 fprintf(fp, "\nUseReverb = %d\n", val);