Mercurial > audlegacy-plugins
comparison src/cdaudio-ng/configure.c @ 1189:af5bd4592100 trunk
Added cdaudio-ng.h; added a configure dialog
author | zither@litestep.network |
---|---|
date | Wed, 20 Jun 2007 22:27:48 +0300 |
parents | |
children | 483b8d900d5e |
comparison
equal
deleted
inserted
replaced
1188:22a470857579 | 1189:af5bd4592100 |
---|---|
1 | |
2 #include <stdio.h> | |
3 #include <string.h> | |
4 #include <gtk/gtk.h> | |
5 | |
6 #include "configure.h" | |
7 | |
8 | |
9 static GtkWidget *configwindow; | |
10 static GtkWidget *okbutton; | |
11 static GtkWidget *cancelbutton; | |
12 static GtkWidget *maintable; | |
13 static GtkWidget *daeframe; | |
14 static GtkWidget *titleinfoframe; | |
15 static GtkWidget *miscframe; | |
16 static GtkWidget *daetable; | |
17 static GtkWidget *titleinfotable; | |
18 static GtkWidget *misctable; | |
19 static GtkWidget *usedaecheckbutton; | |
20 static GtkWidget *limitcheckbutton; | |
21 static GtkWidget *usecdtextcheckbutton; | |
22 static GtkWidget *usecddbcheckbutton; | |
23 static GtkWidget *usedevicecheckbutton; | |
24 static GtkWidget *buttonbox; | |
25 static GtkWidget *limitspinbutton; | |
26 static GtkWidget *deviceentry; | |
27 | |
28 static gboolean *usedae; | |
29 static int *limitspeed; | |
30 static gboolean *usecdtext; | |
31 static gboolean *usecddb; | |
32 static char *device; | |
33 | |
34 static gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data); | |
35 static void button_clicked(GtkWidget *widget, gpointer data); | |
36 static void checkbutton_toggled(GtkWidget *widget, gpointer data); | |
37 static void values_to_gui(); | |
38 static void gui_to_values(); | |
39 | |
40 | |
41 void configure_set_variables(gboolean *_usedae, int *_limitspeed, gboolean *_usecdtext, gboolean *_usecddb, char *_device) | |
42 { | |
43 usedae = _usedae; | |
44 limitspeed = _limitspeed; | |
45 usecdtext = _usecdtext; | |
46 usecddb = _usecddb; | |
47 device = _device; | |
48 } | |
49 | |
50 void configure_create_gui() | |
51 { | |
52 configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
53 gtk_window_set_title(GTK_WINDOW(configwindow), "CD Audio Plugin Configuration"); | |
54 gtk_window_set_resizable(GTK_WINDOW(configwindow), FALSE); | |
55 gtk_window_set_position(GTK_WINDOW(configwindow), GTK_WIN_POS_CENTER_ALWAYS); | |
56 gtk_container_set_border_width(GTK_CONTAINER(configwindow), 10); | |
57 g_signal_connect(G_OBJECT(configwindow), "delete_event", G_CALLBACK(delete_window), NULL); | |
58 | |
59 maintable = gtk_table_new(4, 2, TRUE); | |
60 gtk_container_add(GTK_CONTAINER(configwindow), maintable); | |
61 | |
62 | |
63 daeframe = gtk_frame_new("Digital audio extraction"); | |
64 gtk_table_attach_defaults(GTK_TABLE(maintable), daeframe, 0, 2, 0, 1); | |
65 daetable = gtk_table_new(2, 2, TRUE); | |
66 gtk_container_add(GTK_CONTAINER(daeframe), daetable); | |
67 | |
68 titleinfoframe = gtk_frame_new("Title information"); | |
69 gtk_table_attach_defaults(GTK_TABLE(maintable), titleinfoframe, 0, 2, 1, 2); | |
70 titleinfotable = gtk_table_new(2, 2, TRUE); | |
71 gtk_container_add(GTK_CONTAINER(titleinfoframe), titleinfotable); | |
72 | |
73 miscframe = gtk_frame_new("Misc"); | |
74 gtk_table_attach_defaults(GTK_TABLE(maintable), miscframe, 0, 2, 2, 3); | |
75 misctable = gtk_table_new(2, 2, TRUE); | |
76 gtk_container_add(GTK_CONTAINER(miscframe), misctable); | |
77 | |
78 | |
79 usedaecheckbutton = gtk_check_button_new_with_label("Use digital audio extraction"); | |
80 g_signal_connect(G_OBJECT(usedaecheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); | |
81 gtk_table_attach_defaults(GTK_TABLE(daetable), usedaecheckbutton, 0, 2, 0, 1); | |
82 | |
83 limitcheckbutton = gtk_check_button_new_with_label("Limit read speed to: "); | |
84 g_signal_connect(G_OBJECT(limitcheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); | |
85 gtk_table_attach_defaults(GTK_TABLE(daetable), limitcheckbutton, 0, 1, 1, 2); | |
86 | |
87 limitspinbutton = gtk_spin_button_new_with_range(1.0, 24.0, 1.0); | |
88 gtk_table_attach_defaults(GTK_TABLE(daetable), limitspinbutton, 1, 2, 1, 2); | |
89 | |
90 usecdtextcheckbutton = gtk_check_button_new_with_label("Use cd-text if available"); | |
91 g_signal_connect(G_OBJECT(usecdtextcheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); | |
92 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecdtextcheckbutton, 0, 2, 0, 1); | |
93 | |
94 usecddbcheckbutton = gtk_check_button_new_with_label("Use CDDB if available"); | |
95 g_signal_connect(G_OBJECT(usecddbcheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); | |
96 gtk_table_attach_defaults(GTK_TABLE(titleinfotable), usecddbcheckbutton, 0, 2, 1, 2); | |
97 | |
98 usedevicecheckbutton = gtk_check_button_new_with_label("Override default device: "); | |
99 g_signal_connect(G_OBJECT(usedevicecheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); | |
100 gtk_table_attach_defaults(GTK_TABLE(misctable), usedevicecheckbutton, 0, 1, 0, 1); | |
101 | |
102 deviceentry = gtk_entry_new(); | |
103 gtk_table_attach_defaults(GTK_TABLE(misctable), deviceentry, 1, 2, 0, 1); | |
104 | |
105 | |
106 buttonbox = gtk_hbutton_box_new(); | |
107 gtk_hbutton_box_set_layout_default(GTK_BUTTONBOX_END); | |
108 gtk_hbutton_box_set_spacing_default(10); | |
109 gtk_table_attach_defaults(GTK_TABLE(maintable), buttonbox, 0, 2, 3, 4); | |
110 | |
111 okbutton = gtk_button_new_with_label("Ok"); | |
112 g_signal_connect(G_OBJECT(okbutton), "clicked", G_CALLBACK(button_clicked), NULL); | |
113 gtk_container_add(GTK_CONTAINER(buttonbox), okbutton); | |
114 | |
115 cancelbutton = gtk_button_new_with_label("Cancel"); | |
116 g_signal_connect(G_OBJECT(cancelbutton), "clicked", G_CALLBACK(button_clicked), NULL); | |
117 gtk_container_add(GTK_CONTAINER(buttonbox), cancelbutton); | |
118 | |
119 | |
120 gtk_widget_show(usedaecheckbutton); | |
121 gtk_widget_show(limitcheckbutton); | |
122 gtk_widget_show(limitspinbutton); | |
123 gtk_widget_show(usecdtextcheckbutton); | |
124 gtk_widget_show(usecddbcheckbutton); | |
125 gtk_widget_show(usedevicecheckbutton); | |
126 gtk_widget_show(deviceentry); | |
127 | |
128 gtk_widget_show(daetable); | |
129 gtk_widget_show(daeframe); | |
130 gtk_widget_show(titleinfotable); | |
131 gtk_widget_show(titleinfoframe); | |
132 gtk_widget_show(misctable); | |
133 gtk_widget_show(miscframe); | |
134 | |
135 gtk_widget_show(buttonbox); | |
136 gtk_widget_show(okbutton); | |
137 gtk_widget_show(cancelbutton); | |
138 | |
139 gtk_widget_show(maintable); | |
140 } | |
141 | |
142 void configure_show_gui() | |
143 { | |
144 values_to_gui(); | |
145 gtk_widget_show(configwindow); | |
146 } | |
147 | |
148 gboolean delete_window(GtkWidget *widget, GdkEvent *event, gpointer data) | |
149 { | |
150 gtk_widget_hide(configwindow); | |
151 return TRUE; | |
152 } | |
153 | |
154 void button_clicked(GtkWidget *widget, gpointer data) | |
155 { | |
156 gtk_widget_hide(configwindow); | |
157 if (widget == okbutton) | |
158 gui_to_values(); | |
159 } | |
160 | |
161 | |
162 void checkbutton_toggled(GtkWidget *widget, gpointer data) | |
163 { | |
164 gtk_widget_set_sensitive(limitcheckbutton, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedaecheckbutton))); | |
165 | |
166 gtk_widget_set_sensitive( | |
167 limitspinbutton, | |
168 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limitcheckbutton)) && | |
169 GTK_WIDGET_IS_SENSITIVE(limitcheckbutton)); | |
170 | |
171 gtk_widget_set_sensitive(deviceentry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton))); | |
172 } | |
173 | |
174 void values_to_gui() | |
175 { | |
176 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usedaecheckbutton), *usedae); | |
177 | |
178 gtk_widget_set_sensitive(limitcheckbutton, *usedae); | |
179 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(limitcheckbutton), *limitspeed > 0); | |
180 | |
181 gtk_widget_set_sensitive(limitspinbutton, *usedae && *limitspeed > 0); | |
182 gtk_spin_button_set_value(GTK_SPIN_BUTTON(limitspinbutton), *limitspeed); | |
183 | |
184 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton), *usecdtext); | |
185 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton), *usecddb); | |
186 | |
187 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton), strlen(device) > 0); | |
188 | |
189 gtk_widget_set_sensitive(deviceentry, strlen(device) > 0); | |
190 gtk_entry_set_text(GTK_ENTRY(deviceentry), device); | |
191 } | |
192 | |
193 void gui_to_values() | |
194 { | |
195 *usedae = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedaecheckbutton)); | |
196 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(limitcheckbutton))) | |
197 *limitspeed = gtk_spin_button_get_value(GTK_SPIN_BUTTON(limitspinbutton)); | |
198 else | |
199 *limitspeed = 0; | |
200 *usecdtext = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecdtextcheckbutton)); | |
201 *usecddb = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usecddbcheckbutton)); | |
202 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedevicecheckbutton))) | |
203 strcpy(device, gtk_entry_get_text(GTK_ENTRY(deviceentry))); | |
204 else | |
205 strcpy(device, ""); | |
206 } |