summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@gnome.org>2003-01-16 07:40:29 +0000
committerJonathan Blandford <jrb@src.gnome.org>2003-01-16 07:40:29 +0000
commit22876b1dc37e6792f42cf3c8e24fa7de54582cae (patch)
tree41bf3f72902d456410e64ed88450422d8e36b464
parent7d8899ba2e335baeda7092f1b422eba15a02a23b (diff)
downloadgnome-control-center-22876b1dc37e6792f42cf3c8e24fa7de54582cae.tar.gz
make sure we're initted, as this function can be run asynchronously.
Thu Jan 16 02:32:39 2003 Jonathan Blandford <jrb@gnome.org> * gnome-theme-details.c (gnome_theme_details_update_from_gconf): make sure we're initted, as this function can be run asynchronously. * gnome-theme-manager.c (gnome_meta_theme_installer_run_cb): hook up the installer. * gnome-theme-installer.c: Try to handle icon themes.
-rw-r--r--capplets/theme-switcher/ChangeLog11
-rw-r--r--capplets/theme-switcher/gnome-theme-details.c28
-rw-r--r--capplets/theme-switcher/gnome-theme-installer.c15
-rw-r--r--capplets/theme-switcher/gnome-theme-installer.h2
-rw-r--r--capplets/theme-switcher/gnome-theme-manager.c13
5 files changed, 57 insertions, 12 deletions
diff --git a/capplets/theme-switcher/ChangeLog b/capplets/theme-switcher/ChangeLog
index 69b193e98..c41456425 100644
--- a/capplets/theme-switcher/ChangeLog
+++ b/capplets/theme-switcher/ChangeLog
@@ -1,3 +1,14 @@
+Thu Jan 16 02:32:39 2003 Jonathan Blandford <jrb@gnome.org>
+
+ * gnome-theme-details.c (gnome_theme_details_update_from_gconf):
+ make sure we're initted, as this function can be run
+ asynchronously.
+
+ * gnome-theme-manager.c (gnome_meta_theme_installer_run_cb): hook
+ up the installer.
+
+ * gnome-theme-installer.c: Try to handle icon themes.
+
Wed Jan 15 20:15:31 2003 Jonathan Blandford <jrb@redhat.com>
* gnome-theme-manager.c (gnome_theme_manager_tree_sort_func):
diff --git a/capplets/theme-switcher/gnome-theme-details.c b/capplets/theme-switcher/gnome-theme-details.c
index ec5249aca..257c7d6a5 100644
--- a/capplets/theme-switcher/gnome-theme-details.c
+++ b/capplets/theme-switcher/gnome-theme-details.c
@@ -107,6 +107,7 @@ setup_tree_view (GtkTreeView *tree_view,
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (model), 0, details_tree_sort_func, NULL, NULL);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), 0, GTK_SORT_ASCENDING);
gtk_tree_view_set_model (tree_view, model);
+
selection = gtk_tree_view_get_selection (tree_view);
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
g_signal_connect (G_OBJECT (selection), "changed", changed_callback, dialog);
@@ -161,6 +162,21 @@ window_theme_selection_changed (GtkTreeSelection *selection,
}
static void
+gnome_theme_installer_run_cb (GtkWidget *button,
+ GtkWidget *parent_window)
+{
+ gnome_theme_installer_run (parent_window, NULL, FALSE);
+}
+
+
+static void
+gnome_icon_theme_installer_run_cb (GtkWidget *button,
+ GtkWidget *parent_window)
+{
+ gnome_theme_installer_run (parent_window, NULL, TRUE);
+}
+
+static void
icon_theme_selection_changed (GtkTreeSelection *selection,
gpointer data)
{
@@ -267,7 +283,6 @@ update_gconf_key_from_selection (GtkTreeSelection *selection,
g_object_unref (client);
}
-
void
gnome_theme_details_init (void)
{
@@ -297,19 +312,19 @@ gnome_theme_details_init (void)
/* gtk themes */
widget = WID ("control_install_button");
- g_signal_connect_swapped (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run), parent);
+ g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run_cb), parent);
widget = WID ("control_manage_button");
g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_manager_show_manage_themes), dialog);
/* window manager themes */
widget = WID ("window_install_button");
- g_signal_connect_swapped (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run), parent);
+ g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_icon_theme_installer_run_cb), parent);
widget = WID ("window_manage_button");
g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_manager_window_show_manage_themes), dialog);
/* icon themes */
widget = WID ("icon_install_button");
- g_signal_connect_swapped (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run), parent);
+ g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run_cb), parent);
widget = WID ("icon_manage_button");
g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_manager_icon_show_manage_themes), dialog);
@@ -375,6 +390,9 @@ gnome_theme_details_reread_themes_from_disk (void)
gboolean have_window_theme;
gboolean have_icon_theme;
+
+ gnome_theme_details_init ();
+
dialog = gnome_theme_manager_get_theme_dialog ();
window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ()));
notebook = WID ("theme_notebook");
@@ -535,6 +553,8 @@ gnome_theme_details_update_from_gconf (void)
GnomeWindowManager *window_manager;
GnomeWMSettings wm_settings;
+ gnome_theme_details_init ();
+
window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ()));
client = gconf_client_get_default ();
diff --git a/capplets/theme-switcher/gnome-theme-installer.c b/capplets/theme-switcher/gnome-theme-installer.c
index d826541fa..7f3b58615 100644
--- a/capplets/theme-switcher/gnome-theme-installer.c
+++ b/capplets/theme-switcher/gnome-theme-installer.c
@@ -104,6 +104,7 @@ install_dialog_response (GtkWidget *widget, int response_id, gpointer data)
GList *src, *target;
GnomeVFSURI *src_uri;
const gchar *raw;
+ gboolean icon_theme;
if (response_id == GTK_RESPONSE_HELP) {
capplet_help (GTK_WINDOW (widget),
@@ -113,6 +114,7 @@ install_dialog_response (GtkWidget *widget, int response_id, gpointer data)
}
if (response_id == 0) {
+ icon_theme = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "icon_theme"));
raw = gtk_entry_get_text (GTK_ENTRY (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (WID ("install_theme_picker")))));
if (raw == NULL || strlen (raw) <= 0)
return;
@@ -127,8 +129,10 @@ install_dialog_response (GtkWidget *widget, int response_id, gpointer data)
src_uri = gnome_vfs_uri_new (filename);
base = gnome_vfs_uri_extract_short_name (src_uri);
src = g_list_append (NULL, src_uri);
- path = g_build_filename (g_get_home_dir (), ".themes",
- base, NULL);
+ if (icon_theme)
+ path = g_build_filename (g_get_home_dir (), ".icons", base, NULL);
+ else
+ path = g_build_filename (g_get_home_dir (), ".themes", base, NULL);
target = g_list_append (NULL, gnome_vfs_uri_new (path));
dlg = file_transfer_dialog_new ();
@@ -151,7 +155,7 @@ install_dialog_response (GtkWidget *widget, int response_id, gpointer data)
}
void
-gnome_theme_installer_run (GtkWidget *parent, gchar *filename)
+gnome_theme_installer_run (GtkWidget *parent, gchar *filename, gboolean icon_theme)
{
static gboolean running_theme_install = FALSE;
GladeXML *dialog;
@@ -165,8 +169,8 @@ gnome_theme_installer_run (GtkWidget *parent, gchar *filename)
dialog = glade_xml_new (GLADEDIR "/theme-install.glade", NULL, NULL);
widget = WID ("install_dialog");
- g_signal_connect (G_OBJECT (widget), "response",
- G_CALLBACK (install_dialog_response), dialog);
+ g_object_set_data (G_OBJECT (widget), "icon_theme", GINT_TO_POINTER (icon_theme));
+ g_signal_connect (G_OBJECT (widget), "response", G_CALLBACK (install_dialog_response), dialog);
gtk_window_set_transient_for (GTK_WINDOW (widget), GTK_WINDOW (parent));
gtk_window_set_position (GTK_WINDOW (widget), GTK_WIN_POS_CENTER_ON_PARENT);
if (filename)
@@ -180,4 +184,3 @@ gnome_theme_installer_run (GtkWidget *parent, gchar *filename)
running_theme_install = FALSE;
}
-
diff --git a/capplets/theme-switcher/gnome-theme-installer.h b/capplets/theme-switcher/gnome-theme-installer.h
index b23ff2557..a0878786f 100644
--- a/capplets/theme-switcher/gnome-theme-installer.h
+++ b/capplets/theme-switcher/gnome-theme-installer.h
@@ -24,6 +24,6 @@
#include <gtk/gtk.h>
-void gnome_theme_installer_run (GtkWidget *parent, gchar *filename);
+void gnome_theme_installer_run (GtkWidget *parent, gchar *filename, gboolean icon_theme);
#endif /* GNOME_THEME_INSTALLER_H */
diff --git a/capplets/theme-switcher/gnome-theme-manager.c b/capplets/theme-switcher/gnome-theme-manager.c
index 2e1375dad..13d06d25d 100644
--- a/capplets/theme-switcher/gnome-theme-manager.c
+++ b/capplets/theme-switcher/gnome-theme-manager.c
@@ -1058,6 +1058,15 @@ setup_meta_tree_view (GtkTreeView *tree_view,
g_signal_connect (G_OBJECT (selection), "changed", changed_callback, dialog);
}
+
+static void
+gnome_meta_theme_installer_run_cb (GtkWidget *button,
+ GtkWidget *parent_window)
+{
+ gnome_theme_installer_run (parent_window, NULL, FALSE);
+}
+
+
static void
gnome_theme_save_clicked (GtkWidget *button,
gpointer data)
@@ -1125,6 +1134,8 @@ setup_dialog (GladeXML *dialog)
gtk_size_group_add_widget (size_group, WID ("meta_theme_background2_button"));
g_object_unref (size_group);
+ g_signal_connect (G_OBJECT (WID ("meta_theme_install_button")), "clicked", G_CALLBACK (gnome_meta_theme_installer_run_cb), parent);
+
g_signal_connect (G_OBJECT (WID ("meta_theme_details_button")), "clicked", gnome_theme_details_show, NULL);
g_signal_connect (G_OBJECT (WID ("meta_theme_font1_button")), "clicked", G_CALLBACK (apply_font_clicked), dialog);
@@ -1340,7 +1351,7 @@ gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, GdkDragContext *co
gnome_vfs_uri_list_unref (uris);
}
- gnome_theme_installer_run (widget, filename);
+ gnome_theme_installer_run (widget, filename, FALSE);
g_free (filename);
}