~gnome-lock-dialog-preferences/gnome-lock-dialog-preferences/0.3

« back to all changes in this revision

Viewing changes to src/main.c

  • Committer: Scott Barnes
  • Date: 2009-03-09 19:16:44 UTC
  • Revision ID: reeve@saerah-20090309191644-5x66t5xn4z73lqlk
Beginnings of support for extended theme info

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
#include <glib.h>
4
4
#include <gtk/gtk.h>
 
5
#include <gdk-pixbuf/gdk-pixbuf.h>
5
6
#include <gconf/gconf-client.h>
6
7
#include <glade/glade.h>
7
8
#include <libgnome/gnome-i18n.h>
56
57
  while (filename != NULL)
57
58
    {
58
59
      if (g_str_has_prefix (filename, "lock-dialog-") == TRUE &&
59
 
          g_str_has_suffix (filename, ".gtkrc") == FALSE)
 
60
          g_str_has_suffix (filename, ".glade") == TRUE)
60
61
        {
61
62
          theme_name = g_strndup (filename + 12, g_utf8_strlen (filename + 12, -1) - 6);
62
63
          run_on_each (theme_name, user_data);
72
73
{
73
74
  MainData *main_data = user_data;
74
75
  GtkTreeIter iter;
 
76
  GValue theme_value = {0};
 
77
  g_value_init (&theme_value, G_TYPE_STRING);
 
78
  g_value_set_string (&theme_value, theme_name);
75
79
  gtk_list_store_append (main_data->list_store, &iter);
76
 
  gtk_list_store_set (main_data->list_store, &iter, 0, theme_name, -1);
 
80
  gtk_list_store_set_value (main_data->list_store, &iter, 1, &theme_value);
77
81
  if (!g_strcmp0 (theme_name, main_data->lock_dialog_theme))
78
82
    {
79
83
      gtk_tree_selection_select_iter (GTK_TREE_SELECTION
92
96
  gchar *new_theme;
93
97
  if (gtk_tree_selection_get_selected (selection, &model, &iter))
94
98
    {
95
 
      gtk_tree_model_get (model, &iter, 0, &new_theme, -1);
 
99
      gtk_tree_model_get (model, &iter, 1, &new_theme, -1);
96
100
      gconf_client_set_string (main_data->gconf_client,
97
101
                               "/apps/gnome-screensaver/lock_dialog_theme",
98
102
                               new_theme, NULL);
160
164
  MainData *main_data = user_data;
161
165
  GValue value = {0};
162
166
  gchar *theme_name = NULL;
163
 
  gtk_tree_model_get_value (model, iter, 0, &value);
 
167
  gtk_tree_model_get_value (model, iter, 1, &value);
164
168
  theme_name = (gchar *) g_value_get_string (&value);
165
169
  if (!g_strcmp0(main_data->lock_dialog_theme, theme_name)) {
166
170
    gtk_tree_selection_select_iter(GTK_TREE_SELECTION(main_data->theme_tree_selection), iter);
309
313
  GladeXML *glade_xml;
310
314
  GtkDialog *main_dialog;
311
315
  GtkTreeView *theme_tree;
312
 
  GtkTreeViewColumn *theme_tree_column;
313
 
  GtkCellRenderer *theme_tree_cell;
 
316
  GtkTreeViewColumn *theme_tree_column[3];
 
317
  GtkCellRenderer *theme_tree_cell_text;
 
318
  GtkCellRenderer *theme_tree_cell_pixbuf;
314
319
  gboolean lock_enabled = FALSE;
315
320
  gint lock_delay = 120;
316
321
  gboolean user_switch_enabled = FALSE;
365
370
    glade_xml_new (GLADE_DIR "/gnome-lock-dialog-preferences.glade",
366
371
                   NULL, NULL);
367
372
 
368
 
  main_data.list_store = gtk_list_store_new (1, G_TYPE_STRING);
 
373
  main_data.list_store = gtk_list_store_new (3, g_type_from_name("GdkPixbuf"), G_TYPE_STRING, G_TYPE_STRING);
369
374
 
370
375
  main_dialog = GTK_DIALOG (glade_xml_get_widget (glade_xml, "main_dialog"));
371
376
  theme_tree = GTK_TREE_VIEW (glade_xml_get_widget (glade_xml, "theme_tree"));
380
385
    GTK_CHECK_BUTTON (glade_xml_get_widget (glade_xml, "logout_enabled_check"));
381
386
  main_data.logout_delay_scale =
382
387
    GTK_HSCALE (glade_xml_get_widget (glade_xml, "logout_delay_scale"));
383
 
  theme_tree_cell = gtk_cell_renderer_text_new ();
384
 
  theme_tree_column =
 
388
  theme_tree_cell_text = gtk_cell_renderer_text_new ();
 
389
  theme_tree_cell_pixbuf = gtk_cell_renderer_pixbuf_new ();
 
390
  theme_tree_column[0] =
 
391
    gtk_tree_view_column_new_with_attributes ("Preview",
 
392
                                              GTK_CELL_RENDERER
 
393
                                              (theme_tree_cell_pixbuf),
 
394
                                              "pixbuf", 0, NULL);
 
395
  theme_tree_column[1] =
385
396
    gtk_tree_view_column_new_with_attributes ("Name",
386
397
                                              GTK_CELL_RENDERER
387
 
                                              (theme_tree_cell), "text", 0,
388
 
                                              NULL);
 
398
                                              (theme_tree_cell_text),
 
399
                                              "text", 1, NULL);
 
400
  theme_tree_column[2] =
 
401
    gtk_tree_view_column_new_with_attributes ("Tooltip",
 
402
                                              GTK_CELL_RENDERER
 
403
                                              (theme_tree_cell_text),
 
404
                                              "text", 2, NULL);
389
405
  main_data.theme_tree_selection =
390
406
    gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_tree));
391
407
 
392
408
  gtk_tree_selection_set_mode (main_data.theme_tree_selection,
393
409
                               GTK_SELECTION_SINGLE);
394
 
  gtk_tree_view_append_column (GTK_TREE_VIEW (theme_tree), theme_tree_column);
 
410
  gtk_tree_view_append_column (GTK_TREE_VIEW (theme_tree), theme_tree_column[0]);
 
411
  gtk_tree_view_append_column (GTK_TREE_VIEW (theme_tree), theme_tree_column[1]);
 
412
  gtk_tree_view_append_column (GTK_TREE_VIEW (theme_tree), theme_tree_column[2]);
 
413
  gtk_tree_view_column_set_visible(theme_tree_column[0], FALSE);
 
414
  gtk_tree_view_column_set_visible(theme_tree_column[2], FALSE);
 
415
  gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW (theme_tree), 2);
395
416
 
396
417
  gtk_tree_view_set_model (GTK_TREE_VIEW (theme_tree),
397
418
                           GTK_TREE_MODEL (main_data.list_store));