get the default from the schema and always sort it at the top.
Wed Feb 5 17:03:26 2003 Jonathan Blandford <jrb@gnome.org> * gnome-theme-manager.[ch] (get_default_string_from_key): get the default from the schema and always sort it at the top. * gnome-theme-details.c: ditto
This commit is contained in:
parent
37731852a0
commit
7da2529345
4 changed files with 94 additions and 23 deletions
|
@ -1,3 +1,10 @@
|
|||
Wed Feb 5 17:03:26 2003 Jonathan Blandford <jrb@gnome.org>
|
||||
|
||||
* gnome-theme-manager.[ch] (get_default_string_from_key): get the
|
||||
default from the schema and always sort it at the top.
|
||||
|
||||
* gnome-theme-details.c: ditto
|
||||
|
||||
Tue Feb 4 17:09:18 2003 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* Release 2.2.0.1
|
||||
|
|
|
@ -39,7 +39,7 @@ static void update_gconf_key_from_selection (GtkTreeSelection *selection,
|
|||
const gchar *gconf_key);
|
||||
static void load_theme_names (GtkTreeView *tree_view,
|
||||
GList *theme_list,
|
||||
gchar *default_theme);
|
||||
const gchar *default_theme);
|
||||
static char *path_to_theme_id (const char *path);
|
||||
|
||||
|
||||
|
@ -186,7 +186,7 @@ icon_theme_selection_changed (GtkTreeSelection *selection,
|
|||
static void
|
||||
load_theme_names (GtkTreeView *tree_view,
|
||||
GList *theme_list,
|
||||
gchar *default_theme)
|
||||
const gchar *default_theme)
|
||||
{
|
||||
GList *list;
|
||||
GtkTreeModel *model;
|
||||
|
@ -213,7 +213,7 @@ load_theme_names (GtkTreeView *tree_view,
|
|||
|
||||
gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
|
||||
|
||||
if (strcmp (default_theme, name) == 0)
|
||||
if (default_theme && strcmp (default_theme, name) == 0)
|
||||
is_default = TRUE;
|
||||
else
|
||||
is_default = FALSE;
|
||||
|
@ -417,7 +417,7 @@ gnome_theme_details_reread_themes_from_disk (void)
|
|||
{
|
||||
have_gtk_theme = TRUE;
|
||||
gtk_widget_show (WID ("control_theme_vbox"));
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("control_theme_treeview")), string_list, GTK_THEME_DEFAULT_NAME);
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("control_theme_treeview")), string_list, gtk_theme_default_name);
|
||||
g_list_free (string_list);
|
||||
}
|
||||
g_list_free (theme_list);
|
||||
|
@ -440,7 +440,7 @@ gnome_theme_details_reread_themes_from_disk (void)
|
|||
{
|
||||
have_window_theme = TRUE;
|
||||
gtk_widget_show (WID ("window_theme_vbox"));
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("window_theme_treeview")), string_list, WINDOW_THEME_DEFAULT_NAME);
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("window_theme_treeview")), string_list, window_theme_default_name);
|
||||
g_list_free (string_list);
|
||||
}
|
||||
g_list_free (theme_list);
|
||||
|
@ -465,7 +465,7 @@ gnome_theme_details_reread_themes_from_disk (void)
|
|||
{
|
||||
have_icon_theme = TRUE;
|
||||
gtk_widget_show (WID ("icon_theme_vbox"));
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("icon_theme_treeview")), string_list, ICON_THEME_DEFAULT_NAME);
|
||||
load_theme_names (GTK_TREE_VIEW (WID ("icon_theme_treeview")), string_list, icon_theme_default_name);
|
||||
g_list_free (string_list);
|
||||
}
|
||||
g_list_free (theme_list);
|
||||
|
|
|
@ -60,6 +60,12 @@ static GdkPixbuf *default_image = NULL;
|
|||
static GnomeThemeMetaInfo custom_meta_theme_info = {};
|
||||
static GnomeThemeMetaInfo initial_meta_theme_info = {};
|
||||
|
||||
const char *meta_theme_default_name = NULL;
|
||||
const char *gtk_theme_default_name = NULL;
|
||||
const char *window_theme_default_name = NULL;
|
||||
const char *icon_theme_default_name = NULL;
|
||||
|
||||
|
||||
/* Function Prototypes */
|
||||
static void idle_async_func (GdkPixbuf *pixbuf,
|
||||
gpointer data);
|
||||
|
@ -67,8 +73,7 @@ static void list_data_free (gpointer data);
|
|||
static gboolean load_theme_in_idle (gpointer data);
|
||||
static void add_pixbuf_idle (void);
|
||||
static void load_meta_themes (GtkTreeView *tree_view,
|
||||
GList *meta_theme_list,
|
||||
char *default_theme);
|
||||
GList *meta_theme_list);
|
||||
static void meta_theme_setup_info (GnomeThemeMetaInfo *meta_theme_info,
|
||||
GladeXML *dialog);
|
||||
static void meta_theme_set (GnomeThemeMetaInfo *meta_theme_info);
|
||||
|
@ -238,9 +243,9 @@ sort_meta_theme_list_func (gconstpointer a,
|
|||
g_assert (a_meta_theme_info->name);
|
||||
g_assert (b_meta_theme_info->name);
|
||||
|
||||
if (! strcmp (META_THEME_DEFAULT_NAME, a_meta_theme_info->name))
|
||||
if (meta_theme_default_name && strcmp (meta_theme_default_name, a_meta_theme_info->name) == 0)
|
||||
a_flag |= THEME_FLAG_DEFAULT;
|
||||
if (! strcmp (META_THEME_DEFAULT_NAME, b_meta_theme_info->name))
|
||||
if (meta_theme_default_name && strcmp (meta_theme_default_name, b_meta_theme_info->name) == 0)
|
||||
b_flag |= THEME_FLAG_DEFAULT;
|
||||
|
||||
return gnome_theme_manager_sort_func (a_meta_theme_info->readable_name,
|
||||
|
@ -254,8 +259,7 @@ sort_meta_theme_list_func (gconstpointer a,
|
|||
*/
|
||||
static void
|
||||
load_meta_themes (GtkTreeView *tree_view,
|
||||
GList *meta_theme_list,
|
||||
char *default_theme)
|
||||
GList *meta_theme_list)
|
||||
{
|
||||
GList *list;
|
||||
GtkTreeModel *model;
|
||||
|
@ -292,14 +296,14 @@ load_meta_themes (GtkTreeView *tree_view,
|
|||
}
|
||||
else
|
||||
{
|
||||
current_window_theme = g_strdup ("");
|
||||
current_window_theme = g_strdup (window_theme_default_name);
|
||||
}
|
||||
|
||||
/* FIXME: What do we really do when there is no theme? */
|
||||
if (current_icon_theme == NULL)
|
||||
current_icon_theme = g_strdup ("Default");
|
||||
current_icon_theme = g_strdup (icon_theme_default_name);
|
||||
if (current_gtk_theme == NULL)
|
||||
current_gtk_theme = g_strdup ("Default");
|
||||
current_gtk_theme = g_strdup (gtk_theme_default_name);
|
||||
|
||||
/* handle first time */
|
||||
if (first_time)
|
||||
|
@ -307,8 +311,20 @@ load_meta_themes (GtkTreeView *tree_view,
|
|||
initial_meta_theme_info.gtk_theme_name = g_strdup (current_gtk_theme);
|
||||
initial_meta_theme_info.icon_theme_name = g_strdup (current_icon_theme);
|
||||
initial_meta_theme_info.metacity_theme_name = g_strdup (current_window_theme);
|
||||
}
|
||||
|
||||
for (list = meta_theme_list; list; list = list->next)
|
||||
{
|
||||
GnomeThemeMetaInfo *theme_info = list->data;
|
||||
|
||||
if ((theme_info->gtk_theme_name && !strcmp (theme_info->gtk_theme_name, gtk_theme_default_name)) &&
|
||||
(theme_info->metacity_theme_name && !strcmp (theme_info->metacity_theme_name, window_theme_default_name)) &&
|
||||
(theme_info->icon_theme_name && !strcmp (theme_info->icon_theme_name, icon_theme_default_name)))
|
||||
{
|
||||
meta_theme_default_name = g_strdup (theme_info->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
|
||||
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
|
||||
gtk_widget_set_usize (swindow, -1, -1);
|
||||
|
@ -331,7 +347,7 @@ load_meta_themes (GtkTreeView *tree_view,
|
|||
if (list)
|
||||
{
|
||||
list_meta_theme_info = list->data;
|
||||
if (strcmp (default_theme, list_meta_theme_info->name) == 0)
|
||||
if (meta_theme_default_name && strcmp (meta_theme_default_name, list_meta_theme_info->name) == 0)
|
||||
list_is_default = TRUE;
|
||||
else
|
||||
list_is_default = FALSE;
|
||||
|
@ -592,7 +608,7 @@ update_themes_from_disk (GladeXML *dialog)
|
|||
{
|
||||
have_meta_theme = TRUE;
|
||||
gtk_widget_show (WID ("meta_theme_hbox"));
|
||||
load_meta_themes (GTK_TREE_VIEW (WID ("meta_theme_treeview")), theme_list, META_THEME_DEFAULT_NAME);
|
||||
load_meta_themes (GTK_TREE_VIEW (WID ("meta_theme_treeview")), theme_list);
|
||||
}
|
||||
g_list_free (theme_list);
|
||||
|
||||
|
@ -1120,6 +1136,7 @@ setup_dialog (GladeXML *dialog)
|
|||
default_image = gdk_pixbuf_new_from_file(GNOMECC_DATA_DIR "/pixmaps/theme-thumbnailing.png", NULL);
|
||||
|
||||
client = gconf_client_get_default ();
|
||||
|
||||
window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ()));
|
||||
|
||||
parent = WID ("theme_dialog");
|
||||
|
@ -1356,6 +1373,33 @@ gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, GdkDragContext *co
|
|||
}
|
||||
|
||||
|
||||
static gchar *
|
||||
get_default_string_from_key (const char *key)
|
||||
{
|
||||
GConfClient *client;
|
||||
GConfValue *value;
|
||||
GError *error = NULL;
|
||||
gchar *str = NULL;
|
||||
|
||||
client = gconf_client_get_default ();
|
||||
value = gconf_client_get_default_from_schema (client, key, &error);
|
||||
|
||||
if (error)
|
||||
{
|
||||
g_clear_error (&error);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
if (value->type == GCONF_VALUE_STRING)
|
||||
str = gconf_value_to_string (value);
|
||||
gconf_value_free (value);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
|
@ -1372,6 +1416,27 @@ main (int argc, char *argv[])
|
|||
LIBGNOMEUI_MODULE, argc, argv,
|
||||
GNOME_PARAM_APP_DATADIR, GNOMECC_DATA_DIR,
|
||||
NULL);
|
||||
|
||||
gtk_theme_default_name = get_default_string_from_key (GTK_THEME_KEY);
|
||||
window_theme_default_name = get_default_string_from_key (METACITY_THEME_KEY);
|
||||
icon_theme_default_name = get_default_string_from_key (ICON_THEME_KEY);
|
||||
|
||||
if (gtk_theme_default_name == NULL ||
|
||||
window_theme_default_name == NULL ||
|
||||
icon_theme_default_name == NULL)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_OK,
|
||||
_("The default theme schemas could not be found on. This means that you probably don't have metacity installed, or that your gconf is configured incorrectly."));
|
||||
gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
gtk_widget_destroy (dialog);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
gnome_theme_init (NULL);
|
||||
|
||||
gnome_wm_manager_init ();
|
||||
|
|
|
@ -6,17 +6,16 @@
|
|||
|
||||
|
||||
#define GTK_THEME_KEY "/desktop/gnome/interface/gtk_theme"
|
||||
#define WINDOW_THEME_KEY "/desktop/gnome/applications/window_manager/theme"
|
||||
#define ICON_THEME_KEY "/desktop/gnome/interface/icon_theme"
|
||||
#define FONT_KEY "/desktop/gnome/interface/font_name"
|
||||
|
||||
#define METACITY_THEME_DIR "/apps/metacity/general"
|
||||
#define METACITY_THEME_KEY METACITY_THEME_DIR "/theme"
|
||||
|
||||
#define META_THEME_DEFAULT_NAME "Default"
|
||||
#define GTK_THEME_DEFAULT_NAME "Default"
|
||||
#define WINDOW_THEME_DEFAULT_NAME "Atlanta"
|
||||
#define ICON_THEME_DEFAULT_NAME "Default"
|
||||
extern const char *meta_theme_default_name;
|
||||
extern const char *gtk_theme_default_name;
|
||||
extern const char *window_theme_default_name;
|
||||
extern const char *icon_theme_default_name;
|
||||
|
||||
|
||||
/* Drag and drop info */
|
||||
|
|
Loading…
Add table
Reference in a new issue