comparison src/cdaudio-ng/configure.c @ 1303:2a7c9e0b9c0f

Added configure options for cddb
author zither@litestep.network
date Fri, 20 Jul 2007 03:29:42 +0300
parents 483b8d900d5e
children 83cbc6968a0b
comparison
equal deleted inserted replaced
1302:1d3b02d1842b 1303:2a7c9e0b9c0f
1 1
2 #include <stdio.h> 2 #include <stdio.h>
3 #include <stdlib.h>
3 #include <string.h> 4 #include <string.h>
4 #include <gtk/gtk.h> 5 #include <gtk/gtk.h>
5 6
6 #include "configure.h" 7 #include "configure.h"
7 8
18 static GtkWidget *misctable; 19 static GtkWidget *misctable;
19 static GtkWidget *usedaecheckbutton; 20 static GtkWidget *usedaecheckbutton;
20 static GtkWidget *limitcheckbutton; 21 static GtkWidget *limitcheckbutton;
21 static GtkWidget *usecdtextcheckbutton; 22 static GtkWidget *usecdtextcheckbutton;
22 static GtkWidget *usecddbcheckbutton; 23 static GtkWidget *usecddbcheckbutton;
24 static GtkWidget *cddbserverlabel;
25 static GtkWidget *cddbportlabel;
26 static GtkWidget *cddbserverentry;
27 static GtkWidget *cddbportentry;
23 static GtkWidget *usedevicecheckbutton; 28 static GtkWidget *usedevicecheckbutton;
24 static GtkWidget *buttonbox; 29 static GtkWidget *buttonbox;
25 static GtkWidget *limitspinbutton; 30 static GtkWidget *limitspinbutton;
26 static GtkWidget *deviceentry; 31 static GtkWidget *deviceentry;
27 static GtkWidget *debugcheckbutton; 32 static GtkWidget *debugcheckbutton;
30 static int *limitspeed; 35 static int *limitspeed;
31 static gboolean *usecdtext; 36 static gboolean *usecdtext;
32 static gboolean *usecddb; 37 static gboolean *usecddb;
33 static char *device; 38 static char *device;
34 static gboolean *debug; 39 static gboolean *debug;
40 static char *cddbserver;
41 static int *cddbport;
35 42
36 static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data); 43 static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data);
37 static void button_clicked(GtkWidget *widget, gpointer data); 44 static void button_clicked(GtkWidget *widget, gpointer data);
38 static void checkbutton_toggled(GtkWidget *widget, gpointer data); 45 static void checkbutton_toggled(GtkWidget *widget, gpointer data);
39 static void values_to_gui(); 46 static void values_to_gui();
40 static void gui_to_values(); 47 static void gui_to_values();
41 48
42 49
43 void configure_set_variables(gboolean *_usedae, int *_limitspeed, gboolean *_usecdtext, gboolean *_usecddb, char *_device, gboolean *_debug) 50 void configure_set_variables(gboolean *_usedae, int *_limitspeed, gboolean *_usecdtext, gboolean *_usecddb, char *_device, gboolean *_debug, char *_cddbserver, int *_cddbport)
44 { 51 {
45 usedae = _usedae; 52 usedae = _usedae;
46 limitspeed = _limitspeed; 53 limitspeed = _limitspeed;
47 usecdtext = _usecdtext; 54 usecdtext = _usecdtext;
48 usecddb = _usecddb; 55 usecddb = _usecddb;
49 device = _device; 56 device = _device;
50 debug = _debug; 57 debug = _debug;
58 cddbserver = _cddbserver;
59 cddbport = _cddbport;
51 } 60 }
52 61
53 void configure_create_gui() 62 void configure_create_gui()
54 { 63 {
55 configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); 64 configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
58 gtk_window_set_position(GTK_WINDOW(configwindow), GTK_WIN_POS_CENTER_ALWAYS); 67 gtk_window_set_position(GTK_WINDOW(configwindow), GTK_WIN_POS_CENTER_ALWAYS);
59 gtk_container_set_border_width(GTK_CONTAINER(configwindow), 10); 68 gtk_container_set_border_width(GTK_CONTAINER(configwindow), 10);
60 g_signal_connect(G_OBJECT(configwindow), "delete_event", G_CALLBACK(delete_window), NULL); 69 g_signal_connect(G_OBJECT(configwindow), "delete_event", G_CALLBACK(delete_window), NULL);
61 70
62 maintable = gtk_table_new(4, 2, TRUE); 71 maintable = gtk_table_new(4, 2, TRUE);
72 gtk_table_set_homogeneous(GTK_TABLE(maintable), FALSE);
63 gtk_container_add(GTK_CONTAINER(configwindow), maintable); 73 gtk_container_add(GTK_CONTAINER(configwindow), maintable);
64 74
65 daeframe = gtk_frame_new("Digital audio extraction"); 75 daeframe = gtk_frame_new("Digital audio extraction");
66 gtk_table_attach_defaults(GTK_TABLE(maintable), daeframe, 0, 2, 0, 1); 76 gtk_table_attach_defaults(GTK_TABLE(maintable), daeframe, 0, 2, 0, 1);
67 daetable = gtk_table_new(2, 2, TRUE); 77 daetable = gtk_table_new(2, 2, TRUE);
94 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecdtextcheckbutton, 0, 2, 0, 1); 104 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecdtextcheckbutton, 0, 2, 0, 1);
95 105
96 usecddbcheckbutton = gtk_check_button_new_with_label("Use CDDB if available"); 106 usecddbcheckbutton = gtk_check_button_new_with_label("Use CDDB if available");
97 g_signal_connect(G_OBJECT(usecddbcheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); 107 g_signal_connect(G_OBJECT(usecddbcheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL);
98 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecddbcheckbutton, 0, 2, 1, 2); 108 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecddbcheckbutton, 0, 2, 1, 2);
109
110 cddbserverlabel = gtk_label_new("Server: ");
111 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), cddbserverlabel, 0, 1, 2, 3);
112
113 cddbportlabel = gtk_label_new("Port: ");
114 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), cddbportlabel, 0, 1, 3, 4);
115
116 cddbserverentry = gtk_entry_new();
117 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), cddbserverentry, 1, 2, 2, 3);
118
119 cddbportentry = gtk_entry_new();
120 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), cddbportentry, 1, 2, 3, 4);
121
99 122
100 usedevicecheckbutton = gtk_check_button_new_with_label("Override default device: "); 123 usedevicecheckbutton = gtk_check_button_new_with_label("Override default device: ");
101 g_signal_connect(G_OBJECT(usedevicecheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); 124 g_signal_connect(G_OBJECT(usedevicecheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL);
102 gtk_table_attach_defaults(GTK_TABLE(misctable), usedevicecheckbutton, 0, 1, 0, 1); 125 gtk_table_attach_defaults(GTK_TABLE(misctable), usedevicecheckbutton, 0, 1, 0, 1);
103 126
126 gtk_widget_show(usedaecheckbutton); 149 gtk_widget_show(usedaecheckbutton);
127 gtk_widget_show(limitcheckbutton); 150 gtk_widget_show(limitcheckbutton);
128 gtk_widget_show(limitspinbutton); 151 gtk_widget_show(limitspinbutton);
129 gtk_widget_show(usecdtextcheckbutton); 152 gtk_widget_show(usecdtextcheckbutton);
130 gtk_widget_show(usecddbcheckbutton); 153 gtk_widget_show(usecddbcheckbutton);
154 gtk_widget_show(cddbserverentry);
155 gtk_widget_show(cddbportentry);
156 gtk_widget_show(cddbserverlabel);
157 gtk_widget_show(cddbportlabel);
131 gtk_widget_show(usedevicecheckbutton); 158 gtk_widget_show(usedevicecheckbutton);
132 gtk_widget_show(deviceentry); 159 gtk_widget_show(deviceentry);
133 gtk_widget_show(debugcheckbutton); 160 gtk_widget_show(debugcheckbutton);
134 161
135 gtk_widget_show(daetable); 162 gtk_widget_show(daetable);
173 gtk_widget_set_sensitive( 200 gtk_widget_set_sensitive(
174 limitspinbutton, 201 limitspinbutton,
175 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limitcheckbutton)) && 202 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limitcheckbutton)) &&
176 GTK_WIDGET_IS_SENSITIVE(limitcheckbutton)); 203 GTK_WIDGET_IS_SENSITIVE(limitcheckbutton));
177 204
205 gtk_widget_set_sensitive(cddbserverentry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton)));
206 gtk_widget_set_sensitive(cddbportentry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton)));
207
178 gtk_widget_set_sensitive(deviceentry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton))); 208 gtk_widget_set_sensitive(deviceentry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton)));
179 } 209 }
180 210
181 void values_to_gui() 211 void values_to_gui()
182 { 212 {
188 gtk_widget_set_sensitive(limitspinbutton, *usedae && *limitspeed > 0); 218 gtk_widget_set_sensitive(limitspinbutton, *usedae && *limitspeed > 0);
189 gtk_spin_button_set_value(GTK_SPIN_BUTTON(limitspinbutton), *limitspeed); 219 gtk_spin_button_set_value(GTK_SPIN_BUTTON(limitspinbutton), *limitspeed);
190 220
191 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton), *usecdtext); 221 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton), *usecdtext);
192 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton), *usecddb); 222 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton), *usecddb);
223
224 char portstr[10];
225 sprintf(portstr, "%d", *cddbport);
226 gtk_entry_set_text(GTK_ENTRY(cddbserverentry), cddbserver);
227 gtk_entry_set_text(GTK_ENTRY(cddbportentry), portstr);
228 gtk_widget_set_sensitive(cddbserverentry, *usecddb);
229 gtk_widget_set_sensitive(cddbportentry, *usecddb);
193 230
194 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton), strlen(device) > 0); 231 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton), strlen(device) > 0);
195 232
196 gtk_widget_set_sensitive(deviceentry, strlen(device) > 0); 233 gtk_widget_set_sensitive(deviceentry, strlen(device) > 0);
197 gtk_entry_set_text(GTK_ENTRY(deviceentry), device); 234 gtk_entry_set_text(GTK_ENTRY(deviceentry), device);
206 *limitspeed = gtk_spin_button_get_value(GTK_SPIN_BUTTON(limitspinbutton)); 243 *limitspeed = gtk_spin_button_get_value(GTK_SPIN_BUTTON(limitspinbutton));
207 else 244 else
208 *limitspeed = 0; 245 *limitspeed = 0;
209 *usecdtext = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton)); 246 *usecdtext = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton));
210 *usecddb = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton)); 247 *usecddb = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton));
248 strcpy(cddbserver, gtk_entry_get_text(GTK_ENTRY(cddbserverentry)));
249 *cddbport = strtol(gtk_entry_get_text(GTK_ENTRY(cddbportentry)), NULL, 10);
211 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton))) 250 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton)))
212 strcpy(device, gtk_entry_get_text(GTK_ENTRY(deviceentry))); 251 strcpy(device, gtk_entry_get_text(GTK_ENTRY(deviceentry)));
213 else 252 else
214 strcpy(device, ""); 253 strcpy(device, "");
215 *debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(debugcheckbutton)); 254 *debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(debugcheckbutton));