~ubuntu-branches/ubuntu/karmic/gxine/karmic

« back to all changes in this revision

Viewing changes to src/settings.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-03-21 11:24:59 UTC
  • mfrom: (1.1.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20080321112459-igb0jy01nytpdrzt
Tags: 0.5.901-1ubuntu1
* merge debian changes for hardy PPA. Remaining changes:
  - debian/control: added Xb-Npp-xxx tags accordingly to "firefox distro
    add-on suport" spec,
    (https://blueprints.launchpad.net/ubuntu/+spec/firefox-distro-addon-support)
* Feature Freeze exception granted in LP: #204563
* New upstream release fixes playing DVDs. LP: #128864
* mime.default: add "x-content/video-dvd;x-content/video-vcd;x-content/video-svcd;"
  to get it listed as a player for dvd and video cds in nautilus. Thanks to
  Sebastien Bacher for the hint.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (C) 2002-2005 the xine-project
 
2
 * Copyright (C) 2002-2007 the xine-project
3
3
 *
4
4
 * This program is free software; you can redistribute it and/or
5
5
 * modify it under the terms of the GNU General Public License as
16
16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
17
17
 * USA
18
18
 *
19
 
 * $Id: settings.c,v 1.36 2006/03/27 22:11:25 dsalt Exp $
20
 
 *
21
19
 * settings implementation
22
20
 */
23
21
 
53
51
 
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 },
97
96
};
98
97
 
99
98
static struct slider_window_s settings_window = {
100
 
  N_("Settings"), settings_page, NULL, FALSE
 
99
  N_("Controls"), settings_page, NULL, FALSE
101
100
};
102
101
 
103
102
static const struct slider_s *
194
193
struct slider_data_s {
195
194
  GtkLabel *label;
196
195
  gdouble value;
 
196
  uintptr_t sequence;
197
197
};
198
198
 
199
199
static gboolean slider_set_text (struct slider_data_s *data)
200
200
{
201
 
  char n[12];
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"))
 
202
  {
 
203
    char n[12];
 
204
    sprintf (n, "%.0f", data->value);
 
205
    gtk_label_set_text (data->label, n);
 
206
  }
204
207
  free (data);
205
208
  return FALSE;
206
209
}
209
212
                                   gpointer data)
210
213
{
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 ("");
216
221
}
225
230
 
226
231
  window->window = gtk_dialog_new_with_buttons (gettext (window->title),
227
232
                                                NULL, 0, NULL);
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")),
231
237
                                1);
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,
235
241
                        NULL);
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;
257
263
 
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);
262
267
 
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);
267
270
 
268
271
      if (sliders[i].icon)
269
 
      {
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);
273
 
      }
274
274
 
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,
292
291
      max = min;
293
292
 
294
293
    { /* create an 'invisible' label to set the width of the second column */
295
 
      static const char pad[] = "____________";
 
294
      static const char pad[] = "9999999999999";
296
295
      GtkWidget *w =
297
296
        gtk_label_new (pad + sizeof (pad) - 1 -
298
297
                       (max > (int) sizeof (pad) ? (int) sizeof (pad)
306
305
    }
307
306
  }
308
307
 
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);
311
309
 
312
310
  lock = xine_config_lookup_entry (xine, "audio.volume.remember_volume", &entry)
313
311
         && !entry.num_value;