54
52
static const struct slider_s settings_video[] = {
55
53
{ N_("A/V sync"), "gxine-settings-av-sync", Control_AV_SYNC },
54
{ N_("SPU sync"), "gxine-settings-spu", Control_SPU_SYNC },
56
55
{ N_("Hue"), "gxine-settings-hue", Control_HUE },
57
56
{ N_("Saturation"), "gxine-settings-saturation", Control_SATURATION },
58
57
{ N_("Contrast"), "gxine-settings-contrast", Control_CONTRAST },
99
98
static struct slider_window_s settings_window = {
100
N_("Settings"), settings_page, NULL, FALSE
99
N_("Controls"), settings_page, NULL, FALSE
103
102
static const struct slider_s *
194
193
struct slider_data_s {
199
199
static gboolean slider_set_text (struct slider_data_s *data)
202
sprintf (n, "%.0f", data->value);
203
gtk_label_set_text (data->label, n);
201
if (data->sequence >= (intptr_t) g_object_get_data (data->label, "slider_seq"))
204
sprintf (n, "%.0f", data->value);
205
gtk_label_set_text (data->label, n);
211
214
struct slider_data_s *slider = malloc (sizeof (struct slider_data_s));
215
slider->sequence = (intptr_t) g_object_get_data (data, "slider_seq");
216
g_object_set_data (data, "slider_seq", (gpointer) (++slider->sequence));
212
217
slider->label = data;
213
slider->value = value;
218
slider->value = scale->range.adjustment->value; /* don't trust the input value */
214
219
g_idle_add ((GSourceFunc) slider_set_text, slider);
215
220
return g_strdup ("");
226
231
window->window = gtk_dialog_new_with_buttons (gettext (window->title),
228
gtk_dialog_add_action_widget (GTK_DIALOG(window->window),
233
GtkDialog *dbox = GTK_DIALOG (window->window);
234
gtk_dialog_add_action_widget (dbox,
229
235
ui_button_new_stock_mnemonic
230
236
(GTK_STOCK_CLEAR, _("_Default")),
232
gtk_dialog_add_buttons (GTK_DIALOG(window->window),
238
gtk_dialog_add_buttons (dbox,
233
239
GTK_STOCK_UNDO, GTK_RESPONSE_REJECT,
234
240
GTK_STOCK_CLOSE, GTK_RESPONSE_DELETE_EVENT,
236
gtk_window_set_default_size (GTK_WINDOW (window->window), 500, 150);
242
gtk_window_set_default_size (GTK_WINDOW (dbox), 500, 150);
237
243
hide_on_delete (window->window, &window->is_visible);
238
244
ui_add_undo_response (window->window, NULL);
239
245
g_signal_connect (G_OBJECT(window->window), "response",
255
261
GtkAdjustment *adj;
256
262
GtkWidget *w, *v;
258
w = gtk_label_new (gettext (sliders[i].label));
259
gtk_misc_set_alignment (GTK_MISC (w), 1, 0.5);
260
gtk_table_attach (GTK_TABLE(table), w,
264
gtk_table_attach (GTK_TABLE(table),
265
ui_label_new_with_xalign (gettext (sliders[i].label), 1),
261
266
0, 1, i, i+1, GTK_FILL, GTK_FILL, 2, 2);
263
v = gtk_label_new ("");
264
gtk_misc_set_alignment (GTK_MISC (v), 1, 0.5);
265
gtk_table_attach (GTK_TABLE(table), v,
266
1, 2, i, i+1, GTK_FILL, GTK_FILL, 2, 2);
268
v = ui_label_new_with_xalign ("", 1);
269
gtk_table_attach (GTK_TABLE(table), v, 1, 2, i, i+1, GTK_FILL, GTK_FILL, 2, 2);
268
271
if (sliders[i].icon)
270
w = gtk_image_new_from_stock (sliders[i].icon, GTK_ICON_SIZE_MENU);
271
gtk_table_attach (GTK_TABLE(table), w,
272
gtk_table_attach (GTK_TABLE(table), gtk_image_new_from_stock (sliders[i].icon, GTK_ICON_SIZE_MENU),
272
273
2, 3, i, i+1, GTK_FILL, GTK_FILL, 2, 2);
275
275
adj = (GtkAdjustment *) ui_register_control_adjustment (sliders[i].type);
276
276
if (adj->lower < min)
277
277
min = adj->lower;
278
278
if (adj->upper > max)
279
279
max = adj->upper;
280
w = gtk_hscale_new (adj);
281
gtk_scale_set_value_pos (GTK_SCALE(w), GTK_POS_LEFT);
282
gtk_scale_set_digits (GTK_SCALE(w), 0);
280
w = ui_hscale_new ((GtkObject *)adj, GTK_POS_LEFT, 0);
281
ui_register_adjustment_widget (sliders[i].type, w);
283
282
g_signal_connect (G_OBJECT(w), "format-value",
284
283
G_CALLBACK(slider_format_value), v);
285
284
gtk_table_attach (GTK_TABLE(table), w,
309
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(window->window)->vbox),
310
window->tabbox, TRUE, TRUE, 2);
308
gtk_box_pack_start (GTK_BOX(dbox->vbox), window->tabbox, TRUE, TRUE, 2);
312
310
lock = xine_config_lookup_entry (xine, "audio.volume.remember_volume", &entry)
313
311
&& !entry.num_value;