From eea6c7e6c19a28b189bce6b33fb2ec3a5c59a05a Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Thu, 7 Nov 2002 20:07:26 +0000 Subject: [PATCH] commit snapshot to leave the theme-switcher usable --- capplets/theme-switcher/gnome-theme-manager.c | 109 +++++++++- .../theme-switcher/theme-properties.glade | 197 ++++++++++-------- 2 files changed, 213 insertions(+), 93 deletions(-) diff --git a/capplets/theme-switcher/gnome-theme-manager.c b/capplets/theme-switcher/gnome-theme-manager.c index 197ee9514..694ed9810 100644 --- a/capplets/theme-switcher/gnome-theme-manager.c +++ b/capplets/theme-switcher/gnome-theme-manager.c @@ -72,6 +72,108 @@ create_dialog (void) } +static void +load_meta_themes (GtkTreeView *tree_view, + GList *meta_theme_list, + char *current_theme, + char *default_theme) +{ + GList *list; + GtkTreeModel *model; + GtkWidget *swindow; + gint i = 0; + gboolean current_theme_found = FALSE; + GtkTreeRowReference *row_ref = NULL; + + swindow = GTK_WIDGET (tree_view)->parent; + model = gtk_tree_view_get_model (tree_view); + + setting_model = TRUE; + gtk_list_store_clear (GTK_LIST_STORE (model)); + + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), + GTK_POLICY_NEVER, GTK_POLICY_NEVER); + gtk_widget_set_usize (swindow, -1, -1); + + for (list = meta_theme_list; list; list = list->next) + { + GnomeThemeMetaInfo *meta_theme_info = list->data; + gchar *blurb; + GtkTreeIter iter; + gboolean is_default; + + gtk_list_store_prepend (GTK_LIST_STORE (model), &iter); + + if (strcmp (default_theme, meta_theme_info->name) == 0) + is_default = TRUE; + else + is_default = FALSE; + + if (strcmp (current_theme, meta_theme_info->name) == 0) + { + GtkTreePath *path = gtk_tree_model_get_path (model, &iter); + row_ref = gtk_tree_row_reference_new (model, path); + gtk_tree_path_free (path); + current_theme_found = TRUE; + } + blurb = g_strdup_printf ("%s\n\n%s", meta_theme_info->name, meta_theme_info->comment); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + THEME_NAME_COLUMN, blurb, + DEFAULT_THEME_COLUMN, is_default, + -1); + g_free (blurb); + + if (i == MAX_ELEMENTS_BEFORE_SCROLLING) + { + GtkRequisition rectangle; + gtk_widget_size_request (GTK_WIDGET (tree_view), &rectangle); + gtk_widget_set_usize (swindow, -1, rectangle.height); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + } + i++; + } + + if (! current_theme_found) + { + GtkTreeIter iter; + GtkTreePath *path; + gboolean is_default; + + if (strcmp (default_theme, current_theme) == 0) + is_default = TRUE; + else + is_default = FALSE; + gtk_list_store_prepend (GTK_LIST_STORE (model), &iter); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + THEME_NAME_COLUMN, current_theme, + DEFAULT_THEME_COLUMN, is_default, + -1); + + path = gtk_tree_model_get_path (model, &iter); + row_ref = gtk_tree_row_reference_new (model, path); + gtk_tree_path_free (path); + } + + if (row_ref) + { + GtkTreePath *path; + + path = gtk_tree_row_reference_get_path (row_ref); + gtk_tree_view_set_cursor (tree_view,path, NULL, FALSE); + + if (initial_scroll) + { + gtk_tree_view_scroll_to_cell (tree_view, path, NULL, TRUE, 0.5, 0.0); + initial_scroll = FALSE; + } + + gtk_tree_path_free (path); + gtk_tree_row_reference_free (row_ref); + } + setting_model = FALSE; +} + static void load_theme_names (GtkTreeView *tree_view, GList *theme_list, @@ -221,6 +323,7 @@ static void meta_theme_setup_info (GnomeThemeMetaInfo *meta_theme_info, GladeXML *dialog) { + return; if (meta_theme_info == NULL) { gtk_widget_hide (WID ("meta_theme_extras_vbox")); @@ -518,7 +621,7 @@ read_themes (GladeXML *dialog) { current_meta_theme = g_strdup (info->name); } - string_list = g_list_prepend (string_list, info->name); + string_list = g_list_prepend (string_list, info); } if (string_list == NULL) @@ -532,7 +635,7 @@ read_themes (GladeXML *dialog) gtk_widget_show (WID ("meta_theme_hbox")); if (current_meta_theme == NULL) current_meta_theme = g_strdup (_("Current modified")); - load_theme_names (GTK_TREE_VIEW (WID ("meta_theme_treeview")), string_list, current_meta_theme, META_THEME_DEFAULT_NAME); + load_meta_themes (GTK_TREE_VIEW (WID ("meta_theme_treeview")), string_list, current_meta_theme, META_THEME_DEFAULT_NAME); g_list_free (string_list); } g_list_free (theme_list); @@ -760,7 +863,7 @@ setup_tree_view (GtkTreeView *tree_view, gtk_tree_view_insert_column_with_attributes (tree_view, -1, NULL, gtk_cell_renderer_text_new (), - "text", THEME_NAME_COLUMN, + "markup", THEME_NAME_COLUMN, NULL); model = (GtkTreeModel *) gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); diff --git a/capplets/theme-switcher/theme-properties.glade b/capplets/theme-switcher/theme-properties.glade index 52325b90a..b81607604 100644 --- a/capplets/theme-switcher/theme-properties.glade +++ b/capplets/theme-switcher/theme-properties.glade @@ -106,73 +106,59 @@ - + True - False - 9 + True + 0 - + True - 0.5 - 0.5 - 0 - 0 + False + 4 - + True - 0 - 0.5 - GTK_SHADOW_IN - - - - 320 - 240 - True - 0.5 - 0.5 - 0 - 0 - - + True + _Install New Theme... + True + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + + True + True + _Save Theme + True + GTK_RELIEF_NORMAL + + + 0 + False + False + 0 - False - False + True + True - - True - - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - + True False - 3 + 0 @@ -186,66 +172,97 @@ - + True - - False - False - GTK_JUSTIFY_LEFT - True - False - 0 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - GTK_BUTTONBOX_SPREAD - 0 + True + True + True + GTK_POS_TOP + False + 2 + 2 + False - - True - True - True - Apply _Background - True - GTK_RELIEF_NORMAL - + - + True - True - True - Apply _Font - True - GTK_RELIEF_NORMAL + label19 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + tab + + + + + + + + + + True + label20 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + tab + + + + + + + + + + True + label21 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + tab + 0 - False + True True 0 - False + True True - GTK_PACK_END