diff options
Diffstat (limited to 'capplets/theme-switcher')
21 files changed, 0 insertions, 6174 deletions
diff --git a/capplets/theme-switcher/.cvsignore b/capplets/theme-switcher/.cvsignore deleted file mode 100644 index 325bb0abc..000000000 --- a/capplets/theme-switcher/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -gnome-theme-manager -gtk-theme-selector.desktop -gtk-theme-selector.desktop.in diff --git a/capplets/theme-switcher/ChangeLog b/capplets/theme-switcher/ChangeLog deleted file mode 100644 index 738e796dc..000000000 --- a/capplets/theme-switcher/ChangeLog +++ /dev/null @@ -1,955 +0,0 @@ -2005-02-08 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-installer.c: (file_theme_type), (transfer_done_cb), - (install_dialog_response), (gnome_theme_installer_run): - patch by Kjartan Maraas <kmaraas@gnome.org>, remove a load of leaks - and make sure newly installed themes show up in the relevant lists - without having to close/open the dialog again (Closes: #166267). - -2005-02-07 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-installer.c: (transfer_done_cb): fix some strings, - changes by David Lodge <dave@cirt.net> (Closes: #166550). - -2005-02-01 Elijah Newren <newren@gmail.com> - - Fix an infinite loop that was bringing single-CPU systems to their - knees. Approved by Kjartan. #160803 - - * gnome-theme-manager.c: (window_settings_changed): keep track of - the window manager theme last selected and just exit if we are - already using the one we want - -2005-02-01 David Sedeño <david@alderia.com> - - New install procedure: See bug #102216. - * gnome-theme-details.c: Remove gnome_theme_installer_run_cb, - gnome_icon_theme_installer_run_cb because gnome_theme_installer_run - function now detects if it is a icon or theme. - (gnome_theme_details_init): Remove install buttons in theme details - window. - * gnome-theme-installer.c (file_theme_type): Detects the type of the - theme inspecting the content of the file. - (transfer_done_targz_idle_cb, transfer_done_tarbz2_idle_cb): Install - the theme in the correct temp dir. - (transfer_done_cb): Detects if the file to install it is in the - correct format and informs the user if it is not supported. Unpack the - file (informs the user if there are not the correct utility in the - system) and install the theme in the correct directory. - (gnome_theme_installer_run): Remove parameter. Now we detect the file - type. - * gnome-theme-manager.c (gnome_meta_theme_installer_run_cb, - gnome_theme_manager_drag_data_received_cb): Call - gnome_theme_installer_run without the third parameter. Now we detect - the file type. - * theme-properties.glade: Removes install buttons in details window. - -2005-01-06 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-installer.c: (install_dialog_response): check the - permission of the .icons/.themes dir instead of the files in it - (Closes: #161649). - -2005-01-03 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-installer.c: (install_dialog_response): use a temporary - filename to not overwrite existant files in ~/.themes (Closes: #97180). - -2004-12-25 Kjartan Maraas <kmaraas@gnome.org> - - * gnome-theme-details.c: Don't include <gtk/gtk.h> twice. - * gnome-theme-installer.c: Same (comes in from -installer.h) - * gnome-theme-manager.c: Same. - -2004-11-09 Mark McLoughlin <mark@skynet.ie> - - * Makefile.am: install .desktop file in $(datadir)/applications. - - * gtk-theme-selector.desktop.in: add OnlyShowIn=GNOME; - -Tue Nov 2 16:03:41 2004 Jonathan Blandford <jrb@redhat.com> - - * theme-switcher.c (install_dialog_response): Patch from - Vijaykumar Patwari <vijaykumar.patwari@wipro.com> to warn when - .themes can't be written to. - -2004-10-28 Mike Newman <mikegtn@gnome.org> - - * gnome-theme-installer.c: (transfer_done_cb) install themes named - .tgz correctly. Show a dialog and remove the file from .themes if the - theme could not be installed (Closes: #148895). - -2004-10-27 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-installer.c: (transfer_done_targz_idle_cb), - (transfer_done_tarbz2_idle_cb): * - patch by Rajkumar <rajkumar.siva@wipro.com> to fix the themes - installation with the non GNU versions of tar (Closes: #114553). - -2004-10-27 Sebastien Bacher <seb128@debian.org> - - * gnome-theme-save.c: (setup_directory_structure): - patch by David Sedeño Fernández <david@alderia.com> to fix a - warning during the compilation (Closes: #148345). - -2004-10-14 Jody Goldberg <jody@gnome.org> - - * Release 2.8.1 - -2004-08-20 Frederic Crozat <fcrozat@mandrakesoft.com> - - * gnome-theme-details.c: (gnome_theme_details_init): - * gnome-theme-manager.c: (setup_dialog): - * theme-switcher.c: (setup_dialog): - Use themed icon for WM hint. - -2004-07-31 Kjartan Maraas <kmaraas@gnome.org> - - * gnome-theme-save.c: (setup_directory_structure): Remove - extra space in a string before question mark. - -2004-07-09 David Sedeño <david@alderia.com> - - (http://bugzilla.gnome.org/show_bug.cgi?id=122970) - * gnome-theme-save.c (setup_directory_structure): - If theme exists, show confirmation dialog to user. - -2004-06-20 David Sedeño <david@alderia.com> - - (http://bugzilla.gnome.org/show_bug.cgi?id=143958) - * gnome-theme-manager.c, theme-properties.glade: Revert option added. - Two now gboolean global var: 'themes_loaded' to check if its the first - time that has cold meta_theme_selection_changed. 'rervert' to known - in the same function if the selection has change because a revert. - (meta_theme_selection_changed): If it's the same time, save the - initial theme in initial_meta_theme_info. If the selection has change - because a revert click, set the sensitive of the revert button - to false. - (revert_theme_clicked): callback for the revert button clicked signal. - Set the initial_meta_theme and set sensitive to FALSE. - (setup_dialog): Added the revert button to the gtk_size_group, connect - the clicked callback and set sensitive initially to FALSE. - -2004-05-27 Padraig O'Briain <padraig.obriain@sun.com> - - * theme-properties.glade: Set accessible name for GtkTreeViews - in Theme Details dialog. Fixes bug #142402. - -2004-04-15 Jody Goldberg <jody@gnome.org> - - * Release 2.6.1 - -2004-04-07 Jody Goldberg <jody@gnome.org> - - * gnome-theme-manager.c (update_settings_from_gconf_idle) : fix the - selection when not running metacity. That was damn irritating. - -2004-03-10 Chris Lahey <clahey@ximian.com> - - * gnome-theme-manager.c: (pixbuf_async_func): rename function. Use - broken_image. - (pixbuf_async_data_free): rename function. Use PixbufAsyncData instead - of a GList. - (pixbuf_idle_func): rename function. Handle the case that things - change again while we're updating. Stop what it's doing and start - from the beginning. - (add_pixbuf_idle): - (load_meta_themes): clean up. Remove model_meta_theme_info. - (update_themes_from_disk): Remove the code to check for - have_meta_theme here. It works with no metathemes installed. - (add_custom_row_to_meta_theme): handle the initial case too. - (remove_custom_row_from_meta_theme): removed. - (themes_equal): helper function for a fairly complicated comparison. - (update_settings_from_gconf_idle), (update_settings_from_gconf): - reamed. Instead of custom_theme_found to mean that there should be a - custom theme, we use current_theme_saved. - This means that there's a metatheme for the current theme. Its - meaning is almost exactly the boolean opposite of the old - one but it's more understandable. initial_theme_saved tells us - whether the initial theme has a metatheme for it now. - (theme_changed_idle), (theme_changed_func): Made this idle to reduce - rerunning - (setup_dialog): Load broken image. - (gnome_theme_manager_sort_func): Make it symmetric. - * gnome-theme-manager.h: Remove THEME_FLAG_INITIAL. - -2004-04-02 Padraig O'Briain <padraig.obriain@sun.com> - - * gnome-theme-details.c (update_list_something): Check that cursor - position has changed before calling gtk_tree_view_set_cursor. - * gnome-theme-manager.c (update_settings_from_gconf): Check that - cursor position has changed before calling gtk_tree_view_set_cursor. - - Fixes bug #131538. - -2004-04-01 Jody Goldberg <jody@gnome.org> - - * Release 2.6.0.3 - -2004-03-30 Jody Goldberg <jody@gnome.org> - - * Release 2.6.0.1 - -2004-03-23 Jody Goldberg <jody@gnome.org> - - * Release 2.6.0 - -2004-03-11 Jody Goldberg <jody@gnome.org> - - * Release 2.5.4 - -2004-03-02 Jody Goldberg <jody@gnome.org> - - * gnome-theme-manager.c (load_meta_themes) : revert the commit on - Wed Feb 4 00:05:11 2004 Jonathan Blandford <jrb@gnome.org> - exit if it is a non-compliant wm (eg, anything but metacity) - -2004-02-25 Fernando Herrera <fherrera@onirica.com> - - http://bugzilla.gnome.org/show_bug.cgi?id=132902 - * theme-install.glade: use GtkFileChooser. - -2004-02-13 Jody Goldberg <jody@gnome.org> - - * Release 2.5.3 - -2004-02-12 Mark McLoughlin <mark@skynet.ie> - - * gnome-theme-details.c: (cb_dialog_response): - * gnome-theme-installer.c: (install_dialog_response): - * gnome-theme-manager.c: (cb_dialog_response): - * theme-switcher.c: (install_dialog_response), - (cb_dialog_response): Update help links to point to user-guide.xml - -Sat Feb 7 00:34:45 2004 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (load_meta_themes): fix #106424 - -Fri Feb 6 20:49:25 2004 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-details.c (gnome_theme_details_init): Patch from - Frederic Crozat to install themes in the right place. - -Wed Feb 4 00:05:11 2004 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (load_meta_themes): exit if it is a - non-compliant wm (eg, anything but metacity) - -Tue Feb 3 23:36:25 2004 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (load_meta_themes): use - g_markup_printf_escaped instead of g_strdup_printf, #110564 - -2004-01-14 Jody Goldberg <jody@gnome.org> - - * Release 2.5.2 - -2004-01-05 Muktha <muktha.narayan@wipro.com> - - * theme-properties.glade: Add accessible name and description. - Fixes bug #128377. - -2003-12-30 Jody Goldberg <jody@gnome.org> - - * Release 2.5.1.1 - -2003-12-30 Jody Goldberg <jody@gnome.org> - - * Release 2.5.1 - -2003-12-05 Srinivasa Ragavan <sragavan@novell.com> - - * gnome-theme-installer.c (install_dialog_response): Fix for bug - #127371, reporting invalid/ null file locations. - -2003-12-05 Srinivasa Ragavan <sragavan@novell.com> - - * gnome-theme-installer.c (install_dialog_response): Fix for infinite - loop, when trying to install themes from ~/.themes , #116224 - -2003-10-28 Jody Goldberg <jody@gnome.org> - - * Release 2.5.0 - -Tue Aug 5 15:38:31 2003 Jonathan Blandford <jrb@redhat.com> - - * theme-properties.glade: Fix from Christian Neumair to fix - default and focus, #116892 - - * theme-install.glade: ditto - -Mon Aug 4 14:14:53 2003 Jonathan Blandford <jrb@redhat.com> - - * gnome-theme-manager.c (idle_async_func): make sure that we have - a valid theme_id, #104824 - -2003-07-07 Jody Goldberg <jody@gnome.org> - - * Release 2.3.4 - -2003-07-02 Mark McLoughlin <mark@skynet.ie> - - * gnome-theme-manager.c: (idle_async_func), (load_meta_themes): - use the default image if the thumbnailer fails. - -2003-06-24 Jody Goldberg <jody@gnome.org> - - * Release 2.3.3 - -Wed Jun 18 15:46:27 2003 Jonathan Blandford <jrb@gnome.org> - - * Makefile.am (EXTRA_DIST): add $(desktop_icons_DATA) - -2003-06-06 Mark Finlay <sisob@eircom.net> - - * gnome-ccthemes.png - * Makefile.am - - Add icon for the theme applet from gnome-desktop - -2003-05-28 Christian Neumair <chris@gnome-de.org> - - * theme-install.glade - * theme-properties.glade: - - HIGified (#105004). - -2003-05-13 Andrew Sobala <aes@gnome.org> - - * Makefile.am: removed theme-thumbnail.[ch] - * gnome-theme-manager.c: (meta_theme_selection_changed): - theme-thumbnail is now in libcommon. Removed meta_theme_set; also now - in libcommon. - * theme-thumbnail.c: removed, now in libcommon - * theme-thumbnail.h: removed, now in libcommon - -2003-05-07 Jody Goldberg <jody@gnome.org> - - * Release 2.3.1 - -2003-05-03 Kjartan Maraas <kmaraas@gnome.org> - - * theme-thumbnail.c: (create_image): Unref the - icon_theme after using it. - -2003-05-02 Kjartan Maraas <kmaraas@gnome.org> - - * theme-properties.glade: Add a colon for consistency. - Fixes bug #103923. - -2003-04-29 Kjartan Maraas <kmaraas@gnome.org> - - * gnome-theme-manager.c: (main): Fix a typo. Adapted version - of a patch from <mitr@volny.cz>. Fixes bug #111849. - -2003-04-29 Kjartan Maraas <kmaraas@gnome.org> - - * theme-thumbnail.c: (message_from_capplet), (message_from_child), - (generate_theme_thumbnail), (theme_thumbnail_factory_init): Plug - leaks and guard against invalid reads reported by valgrind. - -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 - -Tue Jan 21 01:15:14 2003 Jonathan Blandford <jrb@gnome.org> - - * Release 2.2.0 - -Tue Jan 21 00:44:03 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-save.c (escape_string_and_dup): correctly escape the - file we're saving. - -Thu Jan 16 02:41:09 2003 Jonathan Blandford <jrb@gnome.org> - - * Release 2.1.7 - -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): - remove this unneeded sort func. - - * gnome-theme-details.c (setup_tree_view): use the right sort - function. - -2003-01-14 Jody Goldberg <jody@gnome.org> - - * gnome-theme-manager.c (load_meta_themes) : yet another place to - handle NULL window manager. - -2003-01-14 Alex Duggan <aldug@gnome.org> - - * gnome-theme-manager.c (main): - s/gnome-theme-properties/gnome-theme-manager/ Fixes #103525 - -Tue Jan 14 02:16:22 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (load_meta_themes): set the correct row to - the new data. This was messing a lot up. Saving now works, so - long as you don't type bad data. - - * TODO: update. - -2003-01-13 Jody Goldberg <jody@gnome.org> - - * gnome-theme-manager.c (load_meta_themes) : handle yet another place - where gnome_wm_manager_get_current may be NULL. - -Mon Jan 13 15:20:17 2003 Jonathan Blandford <jrb@redhat.com> - - * gnome-theme-manager.c (main): gnome_theme_init () - -2003-01-10 Jody Goldberg <jody@gnome.org> - - * Release 2.1.6 - -2003-01-10 Jody Goldberg <jody@gnome.org> - - * Makefile.am (EXTRA_DIST) : dist the pixmaps too. - -2003-01-08 Anders Carlsson <andersca@codefactory.se> - - * gnome-theme-manager.c: (update_font_button_state), - (font_key_changed), (apply_font_clicked), (setup_dialog): - * gnome-theme-manager.h: - Add support for applying fonts. - - * theme-thumbnail.c: (create_image): - Allow SVG files as icons. - -2003-01-08 Jody Goldberg <jody@gnome.org> - - * gnome-theme-details.c (gnome_theme_details_update_from_gconf) : - handle lack of metacity. - (window_theme_selection_changed) : ditto. - (gnome_theme_details_reread_themes_from_disk) : ditto. - -Wed Jan 8 01:57:09 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (add_initial_row_to_meta_theme): handle - initial theme as custom. - - * TODO: update - -Tue Jan 7 03:10:36 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-save.c (save_dialog_response): add a description - entry. Still needs escaping. - - * theme-thumbnail.c (generate_theme_thumbnail): read the thumbnail - back from the child correctly. I think thumbnailing fully works. - - * TODO: Update - -2003-01-06 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-manager.c: (load_meta_themes): - * theme-properties.glade: - - Removed #if 0'd code for hard-coding minimuum height - of the tree view. Use glade properties to set minimuum - height to a more reasonable value. Its hard to find - items when you only see two in the scroll-view at - any given time, and many people do not think to - resize windows (nor should they have to :-) - -2003-01-06 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-manager.c: (add_custom_row_to_meta_theme): - - Don't mark internal string for translation so we don't - break string freeze. - -Mon Jan 6 10:55:39 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (setup_dialog): fix default image. - Remove debugging g_prints. - -2003-01-05 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-manager.c: (setup_dialog), (main): - * Makefile.am: - * theme-thumbnailing.png: - - Add a default image for when theme's are being - thumbnailed. - - * theme-properties.glade: - - Hide dialog by default so it doesn't come - up undrawn. - -2003-01-05 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-manager.c: (add_custom_row_to_meta_theme), - (remove_custom_row_from_meta_theme): - * theme-thumbnail.c: (theme_thumbnail_invalidate_cache): - * theme-thumbnail.h: - - Generate thumbnails for the custom theme. - -Thu Jan 2 08:57:54 2003 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c: correctly merge disk updates and the - current setup. - - * TODO: Add a TODO - -2002-12-31 Seth Nickell <snickell@stanford.edu> - - * theme-thumbnail.c: (create_image): - - Change the order of priority between folder icon names, - since gnome-fs-directory is in the backup theme and will - otherwise take precedence. This fix is a hack. - -2002-12-31 Seth Nickell <snickell@stanford.edu> - - * theme-thumbnail.c: (create_image): - - Thumbnail for themes (most currently) that use - "gnome-fs-directory" as the icon name for folders rather - than "folder". - -2002-12-30 Jody Goldberg <jody@gnome.org> - - Apply - http://bugzilla.gnome.org/show_bug.cgi?id=101752 - - * gnome-theme-details.c : Merge in Frederic's patch. - * gnome-theme-details.c : ditto. - -2002-12-28 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-details.c: (path_to_theme_id), (load_theme_names), - (gnome_theme_details_reread_themes_from_disk): - - Use the theme directory name rather than the "printable" name - for icon themes. Does this need to be done for WM themes and - GTK themes as well? - -2002-12-28 Seth Nickell <snickell@stanford.edu> - - * gnome-theme-manager.c: (update_themes_from_disk): - - Fix crash when current WM isn't detected. - -2002-12-18 Jody Goldberg <jody@gnome.org> - - * Release 2.1.5 - -Fri Dec 6 16:54:14 2002 Jonathan Blandford <jrb@redhat.com> - - * gnome-theme-save-data.c: New file. Really saves now. Doesn't - notice when a new metatheme is added, though. - -Tue Dec 3 20:45:17 2002 Jonathan Blandford <jrb@redhat.com> - - * gnome-theme-save.c: Add saving support. Almost to a working - point w/ this capplet... - -Tue Dec 3 14:26:05 2002 Jonathan Blandford <jrb@redhat.com> - - * gnome-theme-details.c (window_theme_selection_changed): Fix - g_assert_not_reached() that can be reached. - -Tue Dec 3 00:40:13 2002 Jonathan Blandford <jrb@gnome.org> - - * .cvsignore: shut up, CVS - - * Makefile.am: build new objects - - * gnome-theme-details.[ch]: New file to encapsulate the details - dialog. - - * gnome-theme-manager.c: Restructure code. Less love, more work. - Prolly an improvement. - -2002-11-23 Jody Goldberg <jody@gnome.org> - - * Release 2.1.3 - -Sat Nov 16 00:55:58 2002 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (meta_theme_selection_changed): actually - set the theme. - -Thu Nov 14 19:30:02 2002 Jonathan Blandford <jrb@gnome.org> - - * theme-thumbnail.c (setup_theme_thumbnail_factory): add G_IO_HUP - so the child can actually exit when the parent does. - -Thu Nov 14 17:14:00 2002 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c: Use new theme system. Handle other - themes better. - - * theme-thumbnail.c: new file to draw themes. Currently - synchronous -- needs to be made async. - -Thu Nov 7 15:24:33 2002 Jonathan Blandford <jrb@gnome.org> - - * gtk-theme-selector.desktop.in (Exec): change binary name. - -Tue Nov 5 15:48:20 2002 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c (read_themes): make more robust. - -2002-11-02 Jody Goldberg <jody@gnome.org> - - * Release 2.1.2 - -2002-11-02 Jody Goldberg <jody@gnome.org> - - * Makefile.am : Add missing file - -Fri Nov 1 11:01:16 2002 Jonathan Blandford <jrb@gnome.org> - - * gnome-theme-manager.c: Rewrote to handle metathemes and icon - themes. The WM stuff was previously broken, too. - - * gnome-theme-installer.[ch]: Extract this code out to it's own - file. - -2002-10-26 Havoc Pennington <hp@pobox.com> - - * theme-switcher.c (window_read_themes): adapt to gnome-wm-manager - API changes - -2002-10-21 Jody Goldberg <jody@gnome.org> - - * Release 2.1.1 - -2002-10-01 Yanko Kaneti <yaneti@declera.com> - - * gtk-theme-switcher.schemas: reorder elements so that it validates. - -2002-10-01 Jody Goldberg <jody@gnome.org> - - * Release 2.1.0.1 - -2002-08-26 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (drag_data_received_cb) : unescape the string. - -2002-09-09 Mark McLoughlin <mark@skynet.ie> - - * Makefile.am: use ../../libwindow-settings/libgnome-window-settings.la - instead of -L../../libwindow-settings -lgnome-window-settings. - Fixeds build breakage. - -2002-08-21 Jody Goldberg <jody@gnome.org> - - * Release 2.1.0 - -2002-08-01 Christophe Fergeau <teuf@users.sourceforge.net> - - * theme-switcher.c : correctly deal with bzip2 - compressed theme files - -2002-08-19 Ross Burton <ross@burtonini.com> - - * gtk-theme-selector.desktop.in: Fix the desktop file so that it - validates. - -2002-08-07 Jody Goldberg <jody@gnome.org> - Patch from JRB for 88443 - - * theme-switcher.c (read_themes) : store the current cursor - -2002-07-31 Federico Mena Quintero <federico@ximian.com> - - * theme-install.glade: Make the file entry modal. Fixes #89410. - -2002-07-10 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (show_install_dialog) : create and destroy the - dialog. - -2002-07-05 jacob berkman <jacob@ximian.com> - - * theme-switcher.c (transfer_done_cb): do the real work in an idle - (transfer_done_idle_cb): do the real work - - this fixes bug #86141 - i don't understand why, but some very evil - things seem to have been happening. see that bug for details. - -2002-06-17 Jody Goldberg <jody@gnome.org> - - * Release 2.0.0 - -2002-05-28 Satyajit Kanungo <satyajit.kanungo@wipro.com> - * theme-switcher.c : Changed the help file link - to get the help document from user-guide. - -2002-05-26 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (install_dialog_response) : improve handling of - help failures. - (cb_dialog_response) : ditto. - -Sun May 26 11:34:31 2002 Jonathan Blandford <jrb@gnome.org> - - * theme-switcher.c (main): use APPID instead of argv[0] - -2002-05-16 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (install_dialog_response) : add some safety checks - for invalid files. - -2002-05-16 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (cb_dialog_response) : fix path. - (install_dialog_response) : add help link. - -Tue May 14 12:29:35 2002 Jonathan Blandford <jrb@redhat.com> - - * theme-switcher.c (read_themes): try to scroll to theme. - Currently appears to be a little broken somewhere. - - * theme-properties.glade: clean up, and add an atk relation, #76416 - -2002-05-10 Anders Carlsson <andersca@gnu.org> - - * theme-properties.glade: - Remove ellipsis after "Go to theme folder". - - * theme-switcher.c: (show_manage_themes): - Create the .themes directory if it doesn't exist. - -2002-05-10 Anders Carlsson <andersca@gnu.org> - - * theme-properties.glade: - Remove ellipsis after "Go to theme folder". - - * theme-switcher.c: (show_manage_themes): - Create the .themes directory if it doesn't exist. - -2002-05-08 Jody Goldberg <jody@gnome.org> - - * theme-switcher.c (cb_dialog_response) : new. - (setup_dialog) : support help. - -Mon May 6 17:40:17 2002 Jonathan Blandford <jrb@redhat.com> - - * theme-switcher.c: remove print statements - - * theme-properties.glade: Fix up UI. Not perfect, but better. - -2002-04-29 Rachel Hestilow <hestilow@ximian.com> - - * theme-properties.glade: Further revamp based on seth's suggestions. - -2002-04-29 Rachel Hestilow <hestilow@ximian.com> - - * theme-properties.glade: Hide checkbutton until we actually - implement that...put it on the backburner for now. - -2002-04-29 Rachel Hestilow <hestilow@ximian.com> - - * theme-properties.glade, theme-swither.c: Add support - for install/manage themes. - -2002-04-27 Seth Nickell <snickell@stanford.edu> - - * gtk-theme-selector.desktop.in: - - Change name, move out of Advanced category. - - * theme-properties.glade: - - Tweak padding / spacing. - - * gtk-theme-selector.desktop.in.in: - - Old cruft file, delete. - -2002-04-26 Seth Nickell <snickell@stanford.edu> - - * Makefile.am: - * gnome-font-and-theme-properties.c: - * gnome-font-and-theme-properties.glade: - * gtk-theme-selector.glade: - * main.c: - * theme-properties.glade: - * theme-switcher.c: (create_dialog), (theme_selection_changed), - (read_themes), (theme_key_changed), (theme_changed_func), - (sort_func), (setup_dialog), (main): - - Move the font code into a seperate capplet. - -Thu Apr 18 19:35:42 2002 Jonathan Blandford <jrb@redhat.com> - - * gnome-font-and-theme-properties.c (setup_dialog): handle new - theme-changing code, and sort code. - -2002-04-12 jacob berkman <jacob@ximian.com> - - * gnome-font-and-theme-properties.c (create_dialog): get the glade - file from GLADEDIR - - * Makefile.am (INCLUDES): define GLADEDIR - (glade_DATA): install the right glade file - -Wed Apr 10 18:03:25 2002 Jonathan Blandford <jrb@gnome.org> - - * gtk-theme-selector.desktop.in (Exec): s/gtk2-theme-selector-capplet/gnome-font-and-theme-properties - -2002-04-10 Rachel Hestilow <hestilow@ximian.com> - - * gnome-font-and-theme-properties.glade: Add font options to UI. - - * gnome-font-and-theme-properties.c (setup_dialog): Add peditors - for fonts. - -2002-04-10 jacob berkman <jacob@ximian.com> - - * Makefile.am (SUBDIRS): add back SUBDIRS - -2002-03-28 Richard Hestilow <hestilow@ximian.com> - - * control/control.c (create_form): Construct list example - from a single string. Fixes bug #72761. - -2002-03-09 Richard Hestilow <hestilow@ximian.com> - - * gtk-theme-selector.glade, main.c: Remove preview option - and button, this makes no sense with instant apply. - (select_cb): Just call apply_cb. - -2002-02-27 Kjartan Maraas <kmaraas@gnome.org> - - * main.c: s/PACKAGE/GETTEXT_PACKAGE/g - -2002-02-18 Gediminas Paulauskas <menesis@delfi.lt> - - * main.c: fix i18n - -2002-02-11 Seth Nickell <snickell@stanford.edu> - - * gtk-theme-selector.glade: - * main.c: (call_apply), (response_cb), (main): - - Convert to instant apply. - -2002-02-04 Lauris Kaplinski <lauris@ximian.com> - - * main.c (themes_list_refresh): Use g_path_get_basename - (get_selected_theme_name): Ditto - (install_cb): Use g_signal_connect - - * control/control.c (create_form): Use gtk_menu_shell_append - (create_form): Use gtk_radio_button_get_group, - set entry max length explicitly - -2002-01-28 Richard Hestilow <hestilow@ximian.com> - - * main.c: Include gconf-client.h, add trailing NULLs to all - gconf_client calls (for GError). - -2002-01-27 Seth Nickell <snickell@stanford.edu> - - * gtk-theme-selector.desktop.in.in: - - Add Categories field. - -2002-01-27 Richard Hestilow <hestilow@ximian.com> - - * control/control.c: Include string.h. - (create_form): Defer modifying default rc files until property is set. - (set_prop_cb): Set default files here instead. - -2002-01-21 Anders Carlsson <andersca@gnu.org> - - * main.c: Get the theme name right. - - * control/control.c (create_form): Use a GtkTreeView instead of a - clist. - -2002-01-21 Richard Hestilow <hestilow@ximian.com> - - * Complete rewrite. - -2002-01-14 Bradford Hovinen <hovinen@ximian.com> - - * Makefile.am: Update - -2002-01-04 Bradford Hovinen <hovinen@ximian.com> - - * control/Makefile.am (gnome_theme_preview_LDADD): Use - $(CONTROL_{CFLAGS|LIBS}) rather than @CONTROL_{CFLAGS|LIBS}@ - -2001-12-08 Richard Hestilow <hestilow@ximian.com> - - * Port to GConf. - -2001-12-08 Richard Hestilow <hestilow@ximian.com> - - * Partial revamp to use bonobo control instead of bug-prone - custom socket; also port away from libcapplet. - -2001-10-13 Bradford Hovinen <hovinen@ximian.com> - - * lister.c (edit_file_to_use): Be paranoid about what we have read - from the input file -- make sure the string is always - NULL-terminated - -2001-09-29 Richard Hestilow <hestilow@ximian.com> - - * gui.c (sort_alpha): Use g_strcasecmp, not strcmp. - Fixes bug #13539. - -2001-09-29 Richard Hestilow <hestilow@ximian.com> - - * lister.c: (list_themes, list_system_themes, list_user_themes): - Return a GList of ThemeEntry*, and remove extraneous number argument. - Also, use g_strdup_printf instead of g_snprintf. - - * da.h (ThemeEntry): Add a "row" data member. - * gui.c: Change variables current_theme, current_global_theme, - initial_theme, and last_theme to ThemeEntry*. - (make_main): Change GtkList to a GtkCList to avoid scrolling bug. - (click_entry): Changed to "select_row" callback prototype. - (delete_entry): Removed. - (item_destroy_notify): Added in lieu of delete_entry. - (sort_alpha): Accept ThemeEntry* and not GtkBin*. - (add_theme_list): Added. - (update_theme_entries): Use clist functions. - -2001-07-27 Bradford Hovinen <hovinen@ximian.com> - - * RELEASE : 1.5.2 - -2001-07-27 Bradford Hovinen <hovinen@ximian.com> - - * Makefile.am: Remove empty SUBDIRS line - -2001-07-20 Chema Celorio <chema@celorio.com> - - * RELEASE : 1.5.0 - -2001-07-19 Richard Hestilow <hestilow@ximian.com> - - * Started. - - * main.c (main): Don't waitpid. I have no idea why it didn't work, - but this is at least better than waiting forever. diff --git a/capplets/theme-switcher/Makefile.am b/capplets/theme-switcher/Makefile.am deleted file mode 100644 index 1e0692e3e..000000000 --- a/capplets/theme-switcher/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -bin_PROGRAMS = gnome-theme-manager - -pixmapdir = $(GNOMECC_PIXMAPS_DIR) -pixmap_DATA = \ - theme-thumbnailing.png - -gnome_theme_manager_LDADD = \ - $(GNOMECC_CAPPLETS_LIBS) \ - $(METACITY_LIBS) \ - $(top_builddir)/libwindow-settings/libgnome-window-settings.la \ - $(top_builddir)/capplets/common/libcommon.la - -gnome_theme_manager_SOURCES = \ - gnome-theme-save.c \ - gnome-theme-save.h \ - gnome-theme-manager.c \ - gnome-theme-manager.h \ - gnome-theme-details.c \ - gnome-theme-details.h \ - gnome-theme-installer.c \ - gnome-theme-installer.h - -gnome_theme_manager_LDFLAGS = -export-dynamic - - -@INTLTOOL_DESKTOP_RULE@ - -desktopdir = $(datadir)/applications -Desktop_in_files = gtk-theme-selector.desktop.in -desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop) - -gladedir = $(GNOMECC_GLADE_DIR) -glade_DATA = theme-properties.glade theme-install.glade - -INCLUDES = \ - -I$(top_srcdir) \ - $(METACITY_CFLAGS) \ - $(GNOMECC_CAPPLETS_CFLAGS) \ - -DGLADEDIR=\""$(gladedir)"\" - -CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA) -EXTRA_DIST = $(glade_DATA) gnome-theme-save-data.c $(pixmap_DATA) diff --git a/capplets/theme-switcher/TODO b/capplets/theme-switcher/TODO deleted file mode 100644 index cbc040167..000000000 --- a/capplets/theme-switcher/TODO +++ /dev/null @@ -1,17 +0,0 @@ -Left TODO: - - * Change custom theme text to indicate what themes are being used. - - requires breaking string freeze - - * Sanity check saving. In particular, \n needs escaping. - - * Fix the collation of the Details dialog. Seems to be going on theme - name, not readable name. - - * When saving a theme that started as an initial custom theme, kill - that from the list. - - * Have the 'set Background' button do something. - - * make sure that installing themes go to the right place. - diff --git a/capplets/theme-switcher/gnome-ccthemes.png b/capplets/theme-switcher/gnome-ccthemes.png Binary files differdeleted file mode 100644 index e722d1a3a..000000000 --- a/capplets/theme-switcher/gnome-ccthemes.png +++ /dev/null diff --git a/capplets/theme-switcher/gnome-theme-details.c b/capplets/theme-switcher/gnome-theme-details.c deleted file mode 100644 index 6dd4732a3..000000000 --- a/capplets/theme-switcher/gnome-theme-details.c +++ /dev/null @@ -1,568 +0,0 @@ -#include <config.h> - -#include <string.h> -#include <gtk/gtk.h> -#include <gconf/gconf-client.h> -#include <glade/glade.h> -#include <libgnomevfs/gnome-vfs-async-ops.h> -#include <libgnomevfs/gnome-vfs-ops.h> -#include <libgnomevfs/gnome-vfs-utils.h> - -#include <libwindow-settings/gnome-wm-manager.h> - -#include "capplet-util.h" -#include "gnome-theme-manager.h" -#include "gnome-theme-details.h" -#include "gnome-theme-installer.h" -#include "gnome-theme-info.h" - -#define MAX_ELEMENTS_BEFORE_SCROLLING 12 - -static gboolean theme_details_initted = FALSE; -static gboolean setting_model = FALSE; - -/* Function Prototypes */ -static void cb_dialog_response (GtkDialog *dialog, - gint response_id); -static void setup_tree_view (GtkTreeView *tree_view, - GCallback changed_callback, - GladeXML *dialog); -static void gtk_theme_selection_changed (GtkTreeSelection *selection, - gpointer data); -static void window_theme_selection_changed (GtkTreeSelection *selection, - gpointer data); -static void icon_theme_selection_changed (GtkTreeSelection *selection, - gpointer data); -static void update_gconf_key_from_selection (GtkTreeSelection *selection, - const gchar *gconf_key); -static void load_theme_names (GtkTreeView *tree_view, - GList *theme_list, - const gchar *default_theme); -static char *path_to_theme_id (const char *path); - - -static char * -path_to_theme_id (const char *path) -{ - char *dirname; - char *result; - - dirname = g_path_get_dirname(path); - result = g_path_get_basename(dirname); - g_free(dirname); - - return result; -} - -static void -cb_dialog_response (GtkDialog *dialog, gint response_id) -{ - if (response_id == GTK_RESPONSE_HELP) - capplet_help (GTK_WINDOW (dialog), "user-guide.xml", "goscustdesk-12"); - else - gtk_widget_hide (GTK_WIDGET (dialog)); -} - -static gint -details_tree_sort_func (GtkTreeModel *model, - GtkTreeIter *a, - GtkTreeIter *b, - gpointer user_data) -{ - gchar *a_name = NULL; - gchar *b_name = NULL; - guint a_flag = FALSE; - guint b_flag = FALSE; - gint retval; - - gtk_tree_model_get (model, a, - THEME_NAME_COLUMN, &a_name, - THEME_FLAG_COLUMN, &a_flag, - -1); - gtk_tree_model_get (model, b, - THEME_NAME_COLUMN, &b_name, - THEME_FLAG_COLUMN, &b_flag, - -1); - - retval = gnome_theme_manager_sort_func (a_name, b_name, a_flag, b_flag); - - g_free (a_name); - g_free (b_name); - - return retval; -} - -static void -setup_tree_view (GtkTreeView *tree_view, - GCallback changed_callback, - GladeXML *dialog) -{ - GtkTreeModel *model; - GtkTreeSelection *selection; - GtkCellRenderer *renderer; - - model = (GtkTreeModel *) gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); - 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); - - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (tree_view, - -1, NULL, - renderer, - "text", THEME_NAME_COLUMN, - NULL); -} - - -static void -gtk_theme_selection_changed (GtkTreeSelection *selection, - gpointer data) -{ - update_gconf_key_from_selection (selection, GTK_THEME_KEY); -} - -static void -window_theme_selection_changed (GtkTreeSelection *selection, - gpointer data) -{ - GnomeWindowManager *window_manager; - GnomeWMSettings wm_settings; - GtkTreeIter iter; - gchar *window_theme_name; - GtkTreeModel *model; - - if (setting_model) - return; - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, - THEME_ID_COLUMN, &window_theme_name, - -1); - } - else - { - return; - } - - window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - if (window_manager != NULL) { - wm_settings.flags = GNOME_WM_SETTING_THEME; - wm_settings.theme = window_theme_name; - gnome_window_manager_change_settings (window_manager, &wm_settings); - } - g_free (window_theme_name); -} - -static void -icon_theme_selection_changed (GtkTreeSelection *selection, - gpointer data) -{ - update_gconf_key_from_selection (selection, ICON_THEME_KEY); -} - -static void -load_theme_names (GtkTreeView *tree_view, - GList *theme_list, - const gchar *default_theme) -{ - GList *list; - GtkTreeModel *model; - GtkWidget *swindow; - gint i = 0; - - swindow = GTK_WIDGET (tree_view)->parent; - model = gtk_tree_view_get_model (tree_view); - g_assert (model); - - 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 = theme_list; list; list = list->next->next) - { - const char *name = list->data; - const char *id = list->next->data; - GtkTreeIter iter; - gboolean is_default; - - gtk_list_store_prepend (GTK_LIST_STORE (model), &iter); - - if (default_theme && strcmp (default_theme, name) == 0) - is_default = TRUE; - else - is_default = FALSE; - - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - THEME_NAME_COLUMN, name, - THEME_ID_COLUMN, id, - THEME_FLAG_COLUMN, is_default, - -1); - - 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++; - } - setting_model = FALSE; -} - -/* Shared by icons and gtk+ */ -static void -update_gconf_key_from_selection (GtkTreeSelection *selection, - const gchar *gconf_key) -{ - GtkTreeModel *model; - gchar *new_key; - GConfClient *client; - GtkTreeIter iter; - - if (setting_model) - return; - - client = gconf_client_get_default (); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, - THEME_ID_COLUMN, &new_key, - -1); - } - else - /* This shouldn't happen */ - { - new_key = NULL; - } - - if (new_key != NULL) - { - gchar *old_key; - - old_key = gconf_client_get_string (client, gconf_key, NULL); - if (old_key && strcmp (old_key, new_key)) - { - gconf_client_set_string (client, gconf_key, new_key, NULL); - } - g_free (old_key); - } - else - { - gconf_client_unset (client, gconf_key, NULL); - } - g_free (new_key); - g_object_unref (client); -} - -void -gnome_theme_details_init (void) -{ - GtkWidget *parent, *widget; - GnomeWindowManager *window_manager; - GladeXML *dialog; - - if (theme_details_initted) - return; - theme_details_initted = TRUE; - - dialog = gnome_theme_manager_get_theme_dialog (); - window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - parent = WID ("theme_details_dialog"); - - setup_tree_view (GTK_TREE_VIEW (WID ("control_theme_treeview")), - (GCallback) gtk_theme_selection_changed, - dialog); - setup_tree_view (GTK_TREE_VIEW (WID ("window_theme_treeview")), - (GCallback) window_theme_selection_changed, - dialog); - setup_tree_view (GTK_TREE_VIEW (WID ("icon_theme_treeview")), - (GCallback) icon_theme_selection_changed, - dialog); - - /* gtk themes */ - 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_manage_button"); - g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_manager_window_show_manage_themes), dialog); - - /* icon themes */ - widget = WID ("icon_manage_button"); - g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_manager_icon_show_manage_themes), dialog); - - - g_signal_connect (G_OBJECT (parent), "response", G_CALLBACK (cb_dialog_response), NULL); - g_signal_connect (G_OBJECT (parent), "delete-event", G_CALLBACK (gtk_true), NULL); - - gtk_drag_dest_set (parent, GTK_DEST_DEFAULT_ALL, - drop_types, n_drop_types, - GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE); - g_signal_connect (G_OBJECT (parent), "drag-motion", G_CALLBACK (gnome_theme_manager_drag_motion_cb), NULL); - g_signal_connect (G_OBJECT (parent), "drag-leave", G_CALLBACK (gnome_theme_manager_drag_leave_cb), NULL); - g_signal_connect (G_OBJECT (parent), "drag-data-received", G_CALLBACK (gnome_theme_manager_drag_data_received_cb), NULL); - - capplet_set_icon (parent, "gnome-settings-theme"); - - gnome_theme_details_reread_themes_from_disk (); -} - -void -gnome_theme_details_show (void) -{ - GladeXML *dialog; - GtkWidget *parent; - - gnome_theme_details_init (); - - dialog = gnome_theme_manager_get_theme_dialog (); - parent = WID ("theme_details_dialog"); - gtk_widget_show (parent); - gtk_window_present (GTK_WINDOW (parent)); -} - -static void -warn_about_no_themes (void) -{ - static GtkWidget *dialog; - - if (dialog == NULL) - { - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("No themes could be found on your system. This probably means that your \"Theme Preferences\" dialog was improperly installed, or you haven't installed the \"gnome-themes\" package.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - exit (0); - } -} - -void -gnome_theme_details_reread_themes_from_disk (void) -{ - GladeXML *dialog; - GList *theme_list; - GList *string_list; - GList *list; - GnomeWindowManager *window_manager; - GtkWidget *notebook; - - gboolean have_gtk_theme; - 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"); - - /* First, we update the GTK+ themes page */ - theme_list = gnome_theme_info_find_by_type (GNOME_THEME_GTK_2); - string_list = NULL; - for (list = theme_list; list; list = list->next) - { - GnomeThemeInfo *info = list->data; - /* Use same string for ID as for name with GTK themes */ - string_list = g_list_prepend (string_list, info->name); - string_list = g_list_prepend (string_list, info->name); - } - - if (string_list == NULL) - { - have_gtk_theme = FALSE; - gtk_widget_hide (WID ("control_theme_vbox")); - } - else - { - 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); - g_list_free (string_list); - } - g_list_free (theme_list); - - /* Next, we do the window managers */ - theme_list = window_manager ? gnome_window_manager_get_theme_list (window_manager) : NULL; - string_list = NULL; - for (list = theme_list; list; list = list->next) - { - /* Use same string for ID as for name with Window themes */ - string_list = g_list_prepend (string_list, list->data); - string_list = g_list_prepend (string_list, list->data); - } - if (string_list == NULL) - { - have_window_theme = FALSE; - gtk_widget_hide (WID ("window_theme_vbox")); - } - else - { - 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); - g_list_free (string_list); - } - g_list_free (theme_list); - - /* Third, we do the icon theme */ - theme_list = gnome_theme_icon_info_find_all (); - string_list = NULL; - - for (list = theme_list; list; list = list->next) - { - GnomeThemeIconInfo *info = list->data; - string_list = g_list_prepend (string_list, path_to_theme_id(info->path)); - string_list = g_list_prepend (string_list, info->name); - } - - if (string_list == NULL) - { - have_icon_theme = FALSE; - gtk_widget_hide (WID ("icon_theme_vbox")); - } - else - { - 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); - g_list_free (string_list); - } - g_list_free (theme_list); - - if (! have_gtk_theme && ! have_window_theme && ! have_icon_theme) - warn_about_no_themes (); - - gnome_theme_details_update_from_gconf (); - -} - -static void -update_list_something (GtkWidget *tree_view, const gchar *theme) -{ - GtkTreeModel *model; - GtkTreeIter iter; - GtkTreeIter next_iter; - gboolean valid; - gboolean theme_found; - - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); - g_assert (model); - - valid = gtk_tree_model_get_iter_first (model, &iter); - theme_found = FALSE; - - while (valid) - { - gchar *theme_id; - guint flags = 0; - - next_iter = iter; - valid = gtk_tree_model_iter_next (model, &next_iter); - - gtk_tree_model_get (model, &iter, - THEME_ID_COLUMN, &theme_id, - THEME_FLAG_COLUMN, &flags, - -1); - - if (! strcmp (theme, theme_id)) - { - GtkTreePath *path; - GtkTreePath *cursor_path; - gboolean cursor_same = FALSE; - - gtk_tree_view_get_cursor (GTK_TREE_VIEW (tree_view), &cursor_path, NULL); - path = gtk_tree_model_get_path (model, &iter); - if (cursor_path && gtk_tree_path_compare (path, cursor_path) == 0) - cursor_same = TRUE; - - gtk_tree_path_free (cursor_path); - - if (!cursor_same) - { - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree_view), path, NULL, FALSE); - } - gtk_tree_path_free (path); - theme_found = TRUE; - } - else - { - if (flags & THEME_FLAG_CUSTOM) - { - gtk_list_store_remove (GTK_LIST_STORE (model), &iter); - } - } - g_free (theme_id); - iter = next_iter; - if (theme_found) - break; - } - - if (theme_found == FALSE) - /* Never found the theme. */ - { - GtkTreePath *path; - - gtk_list_store_prepend (GTK_LIST_STORE (model), &iter); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - THEME_NAME_COLUMN, theme, - THEME_ID_COLUMN, theme, - THEME_FLAG_COLUMN, THEME_FLAG_CUSTOM, - -1); - path = gtk_tree_model_get_path (model, &iter); - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree_view), path, NULL, FALSE); - gtk_tree_path_free (path); - } -} - -void -gnome_theme_details_update_from_gconf (void) -{ - GConfClient *client; - GladeXML *dialog; - GtkWidget *tree_view; - gchar *theme; - 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 (); - dialog = gnome_theme_manager_get_theme_dialog (); - - /* FIXME: What do we really do when there is no theme? Ask Havoc here. */ - tree_view = WID ("control_theme_treeview"); - theme = gconf_client_get_string (client, GTK_THEME_KEY, NULL); - update_list_something (tree_view, theme); - g_free (theme); - - tree_view = WID ("window_theme_treeview"); - wm_settings.flags = GNOME_WM_SETTING_THEME; - if (window_manager) { - gnome_window_manager_get_settings (window_manager, &wm_settings); - update_list_something (tree_view, wm_settings.theme); - } - - tree_view = WID ("icon_theme_treeview"); - theme = gconf_client_get_string (client, ICON_THEME_KEY, NULL); - update_list_something (tree_view, theme); - g_object_unref (client); - g_free (theme); -} diff --git a/capplets/theme-switcher/gnome-theme-details.h b/capplets/theme-switcher/gnome-theme-details.h deleted file mode 100644 index 84369df0b..000000000 --- a/capplets/theme-switcher/gnome-theme-details.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __GNOME_THEME_DETAILS_H__ -#define __GNOME_THEME_DETAILS_H__ - -void gnome_theme_details_init (void); -void gnome_theme_details_show (void); -void gnome_theme_details_reread_themes_from_disk (void); -void gnome_theme_details_update_from_gconf (void); - -#endif /* __GNOME_THEME_DETAILS_H__ */ diff --git a/capplets/theme-switcher/gnome-theme-installer.c b/capplets/theme-switcher/gnome-theme-installer.c deleted file mode 100644 index cb7899951..000000000 --- a/capplets/theme-switcher/gnome-theme-installer.c +++ /dev/null @@ -1,631 +0,0 @@ - -#include <config.h> - -#include <string.h> -#include <libwindow-settings/gnome-wm-manager.h> -#include "gnome-theme-installer.h" -#include "gnome-theme-details.h" -#include <gconf/gconf-client.h> -#include <glade/glade.h> -#include <libgnomevfs/gnome-vfs-async-ops.h> -#include <libgnomevfs/gnome-vfs-ops.h> -#include <libgnomevfs/gnome-vfs-utils.h> - -#include "gnome-theme-info.h" -#include "capplet-util.h" -#include "activate-settings-daemon.h" -#include "gconf-property-editor.h" -#include "file-transfer-dialog.h" -#include "gnome-theme-installer.h" - -enum { - THEME_INVALID, - THEME_ICON, - THEME_GNOME, - THEME_GTK, - THEME_ENGINE, - THEME_METACITY -}; - -enum { - TARGZ, - TARBZ -}; - -typedef struct { - gint theme_type; - gint filetype; - gchar *filename; - gchar *target_dir; - gchar *theme_tmp_dir; - gchar *target_tmp_dir; - gchar *user_message; -} theme_properties; - - -static void -cleanup_tmp_dir(theme_properties *theme_props) -{ - GList *list; - - if (gnome_vfs_remove_directory (theme_props->target_tmp_dir) == GNOME_VFS_ERROR_DIRECTORY_NOT_EMPTY) { - list = g_list_prepend (NULL, gnome_vfs_uri_new (theme_props->target_tmp_dir)); - gnome_vfs_xfer_delete_list (list, GNOME_VFS_XFER_RECURSIVE, - GNOME_VFS_XFER_ERROR_MODE_ABORT, NULL, NULL); - gnome_vfs_uri_list_free(list); - } -} - -static int -file_theme_type(gchar *dir) -{ - gchar *file_contents; - gchar *filename = NULL; - gint file_size; - GPatternSpec *pattern; - char *uri; - GnomeVFSURI *src_uri; - - filename = g_strdup_printf ("%s/index.theme",dir); - src_uri = gnome_vfs_uri_new (filename); - if (gnome_vfs_uri_exists(src_uri)) { - uri = gnome_vfs_get_uri_from_local_path (filename); - gnome_vfs_read_entire_file (uri,&file_size,&file_contents); - - pattern = g_pattern_spec_new ("*[Icon Theme]*"); - if (g_pattern_match_string(pattern,file_contents)) { - g_free (filename); - gnome_vfs_uri_unref (src_uri); - return THEME_ICON; - } - - pattern = g_pattern_spec_new ("*[X-GNOME-Metatheme]*"); - if (g_pattern_match_string(pattern,file_contents)) { - g_free (filename); - gnome_vfs_uri_unref (src_uri); - return THEME_GNOME; - } - } - g_free (filename); - gnome_vfs_uri_unref (src_uri); - - filename = g_strdup_printf ("%s/gtk-2.0/gtkrc",dir); - src_uri = gnome_vfs_uri_new (filename); - g_free (filename); - if (gnome_vfs_uri_exists(src_uri)) { - gnome_vfs_uri_unref (src_uri); - return THEME_GTK; - } - - filename = g_strdup_printf ("%s/metacity-1/metacity-theme-1.xml",dir); - src_uri = gnome_vfs_uri_new (filename); - g_free (filename); - if (gnome_vfs_uri_exists (src_uri)) { - gnome_vfs_uri_unref (src_uri); - return THEME_METACITY; - } - - - filename = g_strdup_printf ("%s/configure.in",dir); - src_uri = gnome_vfs_uri_new (filename); - g_free (filename); - if (gnome_vfs_uri_exists (src_uri)) { - gnome_vfs_uri_unref (src_uri); - return THEME_ENGINE; - } - - return THEME_INVALID; -} - -static void -transfer_cancel_cb (GtkWidget *dlg, gchar *path) -{ - gnome_vfs_unlink (path); - g_free (path); - gtk_widget_destroy (dlg); -} - -/* this works around problems when doing fork/exec in a threaded app - * with some locks being held/waited on in different threads. - * - * we do the idle callback so that the async xfer has finished and - * cleaned up its vfs job. otherwise it seems the slave thread gets - * woken up and it removes itself from the job queue before it is - * supposed to. very strange. - * - * see bugzilla.gnome.org #86141 for details - */ -static gboolean -transfer_done_targz_idle_cb (gpointer data) -{ - int status; - gchar *command, *filename; - theme_properties *theme_props = data; - - /* this should be something more clever and nonblocking */ - filename = g_shell_quote(theme_props->filename); - command = g_strdup_printf ("sh -c 'cd \"%s\"; /bin/gzip -d -c < \"%s\" | /bin/tar xf - '", - theme_props->target_tmp_dir, filename); - g_free(filename); - if (g_spawn_command_line_sync (command, NULL, NULL, &status, NULL) && status == 0) { - g_free (command); - return TRUE; - } else { - g_free (command); - return FALSE; - } -} - - -/* this works around problems when doing fork/exec in a threaded app - * with some locks being held/waited on in different threads. - * - * we do the idle callback so that the async xfer has finished and - * cleaned up its vfs job. otherwise it seems the slave thread gets - * woken up and it removes itself from the job queue before it is - * supposed to. very strange. - * - * see bugzilla.gnome.org #86141 for details - */ -static gboolean -transfer_done_tarbz2_idle_cb (gpointer data) -{ - int status; - gchar *command, *filename; - theme_properties *theme_props = data; - - filename = g_shell_quote(theme_props->filename); - /* this should be something more clever and nonblocking */ - command = g_strdup_printf ("sh -c 'cd \"%s\"; /usr/bin/bzip2 -d -c < \"%s\" | /bin/tar xf - '", - theme_props->target_tmp_dir, filename); - g_free (filename); - if (g_spawn_command_line_sync (command, NULL, NULL, &status, NULL) && status == 0) { - g_free (command); - return TRUE; - } else { - g_free (command); - return FALSE; - } -} - -static void -transfer_done_cb (GtkWidget *dlg, gchar *path) -{ - GtkWidget *dialog; - int len = strlen (path); - gchar *command,**dir, *first_line, *filename; - int status,theme_type; - theme_properties *theme_props; - GnomeVFSURI *theme_source_dir, *theme_dest_dir; - - gtk_widget_destroy (dlg); - - theme_props = g_new(theme_properties,1); - - theme_props->target_tmp_dir = g_strdup_printf ("%s/.themes/.theme-%u", - g_get_home_dir(), - g_random_int()); - - - if (path && len > 7 && ( (!strcmp (path + len - 7, ".tar.gz")) || (!strcmp (path + len - 4, ".tgz")) )) { - filename = g_shell_quote (path); - command = g_strdup_printf ("sh -c '/bin/gzip -d -c < \"%s\" | /bin/tar ft - | head -1'", - filename); - theme_props->filetype=TARGZ; - g_free (filename); - } else if (path && len > 8 && !strcmp (path + len - 8, ".tar.bz2")) { - filename = g_shell_quote (path); - command = g_strdup_printf ("sh -c '/usr/bin/bzip2 -d -c < \"%s\" | /bin/tar ft - | head -1'", - filename); - theme_props->filetype=TARBZ; - g_free (filename); - } else { - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("This theme is not in a supported format.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - gnome_vfs_unlink(path); - g_free (theme_props->target_tmp_dir); - g_free (theme_props); - return; - } - - - if ((gnome_vfs_make_directory(theme_props->target_tmp_dir,0700)) != GNOME_VFS_OK) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Failed to create temporary directory")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - g_free (command); - g_free (theme_props->target_tmp_dir); - g_free (theme_props); - return; - } - - /* Uncompress the file in the temp directory */ - theme_props->filename=g_strdup(path); - - if (theme_props->filetype == TARBZ ) { - if (!g_file_test ("/usr/bin/bzip2", G_FILE_TEST_EXISTS)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Can not install theme. \nThe bzip2 utility is not installed.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - gnome_vfs_unlink(path); - g_free (command); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props); - return; - } - - if (!transfer_done_tarbz2_idle_cb(theme_props)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Installation Failed")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - cleanup_tmp_dir (theme_props); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props); - g_free (command); - return; - } - } - - if (theme_props->filetype == TARGZ ) { - if (!g_file_test ("/bin/gzip", G_FILE_TEST_EXISTS)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Can not install themes. \nThe gzip utility is not installed.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - gnome_vfs_unlink(path); - g_free (command); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props); - return; - } - if (!transfer_done_targz_idle_cb(theme_props)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Installation Failed")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - cleanup_tmp_dir (theme_props); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props); - g_free (command); - return; - } - } - - /* What type of theme it is ? */ - if (g_spawn_command_line_sync (command, &first_line, NULL, &status, NULL) && status == 0) { - dir = g_strsplit(g_strchomp(first_line),"/",0); - theme_props->theme_tmp_dir=g_build_filename(theme_props->target_tmp_dir,dir[0],NULL); - - theme_type = file_theme_type(theme_props->theme_tmp_dir); - gnome_vfs_unlink (theme_props->filename); - if (theme_type == THEME_ICON) { - theme_props->target_dir=g_strdup_printf("%s/.icons/%s",g_get_home_dir(),dir[0]); - theme_props->user_message=g_strdup_printf(_("Icon Theme %s correctly installed.\nYou can select it in the theme details."),dir[0]); - } else if (theme_type == THEME_GNOME) { - theme_props->target_dir = g_strdup_printf("%s/.themes/%s",g_get_home_dir(),dir[0]); - theme_props->user_message=g_strdup_printf(_("Gnome Theme %s correctly installed"),dir[0]); - } else if (theme_type == THEME_METACITY) { - theme_props->target_dir = g_strdup_printf("%s/.themes/%s",g_get_home_dir(),dir[0]); - theme_props->user_message=g_strdup_printf(_("Windows Border Theme %s correctly installed.\nYou can select it in the theme details."),dir[0]); - } else if (theme_type == THEME_GTK) { - theme_props->target_dir = g_strdup_printf("%s/.themes/%s",g_get_home_dir(),dir[0]); - theme_props->user_message=g_strdup_printf(_("Controls Theme %s correctly installed.\nYou can select it in the theme details."),dir[0]); - } else if (theme_type == THEME_ENGINE) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("The theme is an engine. You need to compile the theme.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - cleanup_tmp_dir(theme_props); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props->theme_tmp_dir); - g_free (theme_props); - g_free (command); - return; - } else { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("The file format is invalid")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props->theme_tmp_dir); - g_free (theme_props); - g_free (command); - return; - } - /* Move the Dir to the target dir */ - theme_source_dir = gnome_vfs_uri_new (theme_props->theme_tmp_dir); - theme_dest_dir = gnome_vfs_uri_new (theme_props->target_dir); - - if (gnome_vfs_xfer_uri (theme_source_dir,theme_dest_dir, - GNOME_VFS_XFER_DELETE_ITEMS | GNOME_VFS_XFER_RECURSIVE | GNOME_VFS_XFER_REMOVESOURCE, - GNOME_VFS_XFER_ERROR_MODE_ABORT, - GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, - NULL,NULL) != GNOME_VFS_OK) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Installation Failed")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - cleanup_tmp_dir(theme_props); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props->theme_tmp_dir); - g_free (theme_props->target_dir); - g_free (theme_props->user_message); - g_free (theme_props); - g_free (command); - return; - } else { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_INFO, - GTK_BUTTONS_OK, - theme_props->user_message ); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - cleanup_tmp_dir (theme_props); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props->theme_tmp_dir); - g_free (theme_props->target_dir); - g_free (theme_props->user_message); - g_free (theme_props); - g_free (command); - return; - } - - } - g_free (command); - g_free (theme_props->target_tmp_dir); - g_free (theme_props->filename); - g_free (theme_props); -} - -static void -install_dialog_response (GtkWidget *widget, int response_id, gpointer data) -{ - GladeXML *dialog = data; - GtkWidget *dlg; - gchar *filename, *path, *base; - GList *src, *target; - GnomeVFSURI *src_uri; - const gchar *raw; - gboolean icon_theme; - gchar *temppath; - - if (response_id == GTK_RESPONSE_HELP) { - capplet_help (GTK_WINDOW (widget), - "user-guide.xml", - "goscustdesk-12"); - return; - } - - 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) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("No theme file location specified to install")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - return; - } - - if (strncmp (raw, "http://", 7) && strncmp (raw, "ftp://", 6) && *raw != '/') - filename = gnome_file_entry_get_full_path (GNOME_FILE_ENTRY (WID ("install_theme_picker")), TRUE); - else - filename = g_strdup (raw); - if (filename == NULL) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("The theme file location specified to install is invalid")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - return; - } - - src_uri = gnome_vfs_uri_new (filename); - base = gnome_vfs_uri_extract_short_name (src_uri); - src = g_list_append (NULL, src_uri); - if (icon_theme) - path = g_build_filename (g_get_home_dir (), ".icons", NULL); - else - path = g_build_filename (g_get_home_dir (), ".themes", NULL); - - if (access (path, X_OK | W_OK) != 0) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Insufficient permissions to install the theme in:\n%s"), path); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - g_free (path); - return; - } - - while(TRUE) { - gchar *file_tmp; - GtkWidget *dialog; - int len = strlen (base); - - if (base && len > 7 && ( (!strcmp (base + len - 7, ".tar.gz")) || (!strcmp (base + len - 4, ".tgz")) )) - file_tmp = g_strdup_printf("gnome-theme-%d.tar.gz", rand ()); - else if (base && len > 8 && !strcmp (base + len - 8, ".tar.bz2")) - file_tmp = g_strdup_printf("gnome-theme-%d.tar.bz2", rand ()); - else { - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("The file format is invalid.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - g_free (path); - return; - } - - path = g_build_filename (g_get_home_dir (), ".themes", file_tmp, NULL); - - g_free(file_tmp); - if (!gnome_vfs_uri_exists (gnome_vfs_uri_new (path))) - break; - } - - /* To avoid the copy of /root/.themes to /root/.themes/.themes - * which causes an infinite loop. The user asks to transfer the all - * contents of a folder, to a folder under itseld. So ignore the - * situation. - */ - temppath = g_build_filename (filename, ".themes", NULL); - if (!strcmp(temppath, path)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("%s is the path where the theme files will be installed. This can not be selected as the source location"), filename); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - - g_free (base); - g_free (filename); - g_free(temppath); - g_free (path); - return; - } - g_free(temppath); - - - - target = g_list_append (NULL, gnome_vfs_uri_new (path)); - - dlg = file_transfer_dialog_new (); - file_transfer_dialog_wrap_async_xfer (FILE_TRANSFER_DIALOG (dlg), - src, target, - GNOME_VFS_XFER_RECURSIVE, - GNOME_VFS_XFER_ERROR_MODE_QUERY, - GNOME_VFS_XFER_OVERWRITE_MODE_QUERY, - GNOME_VFS_PRIORITY_DEFAULT); - gnome_vfs_uri_list_unref (src); - gnome_vfs_uri_list_unref (target); - g_free (base); - g_free (filename); - g_signal_connect (G_OBJECT (dlg), "cancel", - G_CALLBACK (transfer_cancel_cb), path); - g_signal_connect (G_OBJECT (dlg), "done", - G_CALLBACK (transfer_done_cb), path); - gtk_widget_show (dlg); - } -} - -void -gnome_theme_installer_run (GtkWidget *parent, gchar *filename) -{ - static gboolean running_theme_install = FALSE; - GladeXML *dialog; - GtkWidget *widget; - - if (running_theme_install) - return; - - running_theme_install = TRUE; - - if (!g_file_test ("/bin/tar", G_FILE_TEST_EXISTS)) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Cannot install theme.\nThe tar program is not installed on your system.")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - return; - } - - 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); - 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) - gnome_file_entry_set_filename (GNOME_FILE_ENTRY (WID ("install_theme_picker")), filename); - - while (gtk_dialog_run (GTK_DIALOG (widget)) == GTK_RESPONSE_HELP) - ; - - gnome_theme_details_reread_themes_from_disk(); - - gtk_widget_destroy (widget); - g_object_unref (G_OBJECT (dialog)); - - running_theme_install = FALSE; -} diff --git a/capplets/theme-switcher/gnome-theme-installer.h b/capplets/theme-switcher/gnome-theme-installer.h deleted file mode 100644 index b23ff2557..000000000 --- a/capplets/theme-switcher/gnome-theme-installer.h +++ /dev/null @@ -1,29 +0,0 @@ -/* gnome-theme-installer.h - * Copyright (C) 2002 Jonathan Blandford - * - * Written by: Jonathan Blandford <jrb@gnome.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. - */ - -#ifndef GNOME_THEME_INSTALLER_H -#define GNOME_THEME_INSTALLER_H - -#include <gtk/gtk.h> - -void gnome_theme_installer_run (GtkWidget *parent, gchar *filename); - -#endif /* GNOME_THEME_INSTALLER_H */ diff --git a/capplets/theme-switcher/gnome-theme-manager.c b/capplets/theme-switcher/gnome-theme-manager.c deleted file mode 100644 index 5a747cfa1..000000000 --- a/capplets/theme-switcher/gnome-theme-manager.c +++ /dev/null @@ -1,1494 +0,0 @@ -/* This program was written under the GPL by Jonathan Blandford <jrb@gnome.org> - */ - -#include <config.h> - -#include <string.h> -#include <gconf/gconf-client.h> -#include <glade/glade.h> -#include <libgnomevfs/gnome-vfs-async-ops.h> -#include <libgnomevfs/gnome-vfs-ops.h> -#include <libgnomevfs/gnome-vfs-utils.h> - -#include <libwindow-settings/gnome-wm-manager.h> - -#include "gnome-theme-info.h" -#include "gnome-theme-save.h" -#include "capplet-util.h" -#include "activate-settings-daemon.h" -#include "gconf-property-editor.h" -#include "file-transfer-dialog.h" -#include "gnome-theme-manager.h" -#include "gnome-theme-details.h" -#include "gnome-theme-installer.h" -#include <theme-thumbnail.h> -#include <gnome-theme-apply.h> - - -#define MAX_ELEMENTS_BEFORE_SCROLLING 3 - -/* Events: There are two types of change events we worry about. The first is - * when the theme settings change. In this case, we can quickly update the UI - * to reflect. The other is when the themes themselves change. - * - * The code in gnome-theme-manager.c will update the main dialog and proxy the - * update notifications for the details dialog. - */ - -enum -{ - META_THEME_NAME_COLUMN = THEME_NAME_COLUMN, - META_THEME_ID_COLUMN = THEME_ID_COLUMN, - META_THEME_FLAG_COLUMN = THEME_FLAG_COLUMN, - META_THEME_PIXBUF_COLUMN, - META_N_COLUMNS -}; - -GtkTargetEntry drop_types[] = -{ - {"text/uri-list", 0, TARGET_URI_LIST}, - {"_NETSCAPE_URL", 0, TARGET_NS_URL} -}; - -gint n_drop_types = sizeof (drop_types) / sizeof (GtkTargetEntry); - -static gboolean setting_model = FALSE; -static guint update_settings_from_gconf_idle_id = 0; -static guint theme_changed_idle_id = 0; -static guint pixbuf_idle_id = 0; -static gboolean loading_themes; -static gboolean reload_themes; -static gboolean initial_meta_theme_set = FALSE; -static GdkPixbuf *default_image = NULL; -static GdkPixbuf *broken_image = NULL; -static gboolean themes_loaded = FALSE; -static gboolean reverted = FALSE; - -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 add_pixbuf_idle (void); -static void load_meta_themes (GtkTreeView *tree_view, - GList *meta_theme_list); -static void meta_theme_setup_info (GnomeThemeMetaInfo *meta_theme_info, - GladeXML *dialog); -static void meta_theme_selection_changed (GtkTreeSelection *selection, - GladeXML *dialog); -static void update_themes_from_disk (GladeXML *dialog); -static void update_settings_from_gconf (void); -static void gtk_theme_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data); -static void window_settings_changed (GnomeWindowManager *window_manager, - GladeXML *dialog); -static void icon_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data); -static void font_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data); -static void theme_changed_func (gpointer uri, - gpointer user_data); -static void cb_dialog_response (GtkDialog *dialog, - gint response_id); -static void setup_meta_tree_view (GtkTreeView *tree_view, - GCallback changed_callback, - GladeXML *dialog); -static void setup_dialog (GladeXML *dialog); - - -typedef struct { - gchar *theme_id; - GtkTreeModel *model; - gboolean cancelled; -} PixbufAsyncData; - -static void -pixbuf_async_func (GdkPixbuf *pixbuf, - gpointer data) -{ - PixbufAsyncData *pixbuf_async_data = data; - gchar *theme_id; - GtkTreeModel *model; - GtkTreeIter iter; - gboolean valid; - - theme_id = pixbuf_async_data->theme_id; - model = pixbuf_async_data->model; - - for (valid = gtk_tree_model_get_iter_first (model, &iter); - valid; - valid = gtk_tree_model_iter_next (model, &iter)) - { - gchar *test_theme_id; - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &test_theme_id, - -1); - if (theme_id && test_theme_id && !strcmp (theme_id, test_theme_id)) - { - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - META_THEME_PIXBUF_COLUMN, pixbuf ? pixbuf : broken_image, - -1); - g_free (test_theme_id); - break; - } - g_free (test_theme_id); - } - - add_pixbuf_idle (); -} - -static void -pixbuf_async_data_free (gpointer data) -{ - PixbufAsyncData *pixbuf_async_data = data; - - g_object_unref (pixbuf_async_data->model); - g_free (pixbuf_async_data->theme_id); - g_free (pixbuf_async_data); -} - -static gboolean -pixbuf_idle_func (gpointer data) -{ - GladeXML *dialog; - GtkWidget *tree_view; - GtkTreeModel *model; - GtkTreeIter iter; - gboolean valid; - - pixbuf_idle_id = 0; - - if (reload_themes) { - GladeXML *dialog; - - reload_themes = FALSE; - loading_themes = FALSE; - - dialog = gnome_theme_manager_get_theme_dialog (); - update_themes_from_disk (dialog); - return FALSE; - } - - dialog = gnome_theme_manager_get_theme_dialog (); - tree_view = WID ("meta_theme_treeview"); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); - - for (valid = gtk_tree_model_get_iter_first (model, &iter); - valid; - valid = gtk_tree_model_iter_next (model, &iter)) - { - GdkPixbuf *pixbuf = NULL; - gchar *theme_id = NULL; - - gtk_tree_model_get (model, &iter, - META_THEME_PIXBUF_COLUMN, &pixbuf, - -1); - if (pixbuf == default_image) - { - PixbufAsyncData *pixbuf_async_data; - GnomeThemeMetaInfo *meta_theme_info; - - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &theme_id, - -1); - if (theme_id == NULL) - { - meta_theme_info = &custom_meta_theme_info; - } - else - { - meta_theme_info = gnome_theme_meta_info_find (theme_id); - } - - /* We should always have a metatheme file */ - g_assert (meta_theme_info); - - pixbuf_async_data = g_new (PixbufAsyncData, 1); - pixbuf_async_data->theme_id = theme_id; - pixbuf_async_data->model = model; - pixbuf_async_data->cancelled = FALSE; - g_object_ref (model); - generate_theme_thumbnail_async (meta_theme_info, - pixbuf_async_func, - pixbuf_async_data, - pixbuf_async_data_free); - - return FALSE; - } - } - - /* If we're done loading all the main themes, lets initialize the details - * dialog if it hasn't been done yet. If it has, then this call is harmless. - */ - gnome_theme_details_init (); - loading_themes = FALSE; - - if (reload_themes) { - GladeXML *dialog; - - reload_themes = FALSE; - loading_themes = FALSE; - - dialog = gnome_theme_manager_get_theme_dialog (); - update_themes_from_disk (dialog); - } - - return FALSE; -} - -/* FIXME: we need a way to cancel the pixbuf loading if we get a theme updating - * during the pixbuf generation. - */ -static void -add_pixbuf_idle (void) -{ - if (pixbuf_idle_id) - return; - - pixbuf_idle_id = g_idle_add_full (G_PRIORITY_LOW, - pixbuf_idle_func, - NULL, NULL); -} - -static gint -sort_meta_theme_list_func (gconstpointer a, - gconstpointer b) -{ - const GnomeThemeMetaInfo *a_meta_theme_info = a; - const GnomeThemeMetaInfo *b_meta_theme_info = b; - guint a_flag = 0; - guint b_flag = 0; - - g_assert (a_meta_theme_info->name); - g_assert (b_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 (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, - b_meta_theme_info->readable_name, - a_flag, - b_flag); -} - - -/* Loads up a list of GnomeThemeMetaInfo. - */ -static void -load_meta_themes (GtkTreeView *tree_view, - GList *meta_theme_list) -{ - GList *list; - GtkTreeModel *model; - GtkWidget *swindow; - GtkTreeIter iter; - gchar *name; - gboolean valid; - guint flag; - gint i = 0; - GConfClient *client; - gchar *current_gtk_theme; - gchar *current_window_theme; - gchar *current_icon_theme; - GnomeWindowManager *window_manager; - GnomeWMSettings wm_settings; - static gboolean first_time = TRUE; - - swindow = GTK_WIDGET (tree_view)->parent; - model = gtk_tree_view_get_model (tree_view); - g_assert (model); - - setting_model = TRUE; - - client = gconf_client_get_default (); - - current_gtk_theme = gconf_client_get_string (client, GTK_THEME_KEY, NULL); - current_icon_theme = gconf_client_get_string (client, ICON_THEME_KEY, NULL); - g_object_unref (client); - - window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - wm_settings.flags = GNOME_WM_SETTING_THEME; - - if (window_manager) - { - gnome_window_manager_get_settings (window_manager, &wm_settings); - current_window_theme = g_strdup (wm_settings.theme); - } - else - 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 (icon_theme_default_name); - if (current_gtk_theme == NULL) - current_gtk_theme = g_strdup (gtk_theme_default_name); - - /* handle first time */ - if (first_time) - { - 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); - - /* Sort meta_theme_list to be in the same order of the current data. This way - * we can walk through them together. */ - meta_theme_list = g_list_sort (meta_theme_list, sort_meta_theme_list_func); - list = meta_theme_list; - valid = gtk_tree_model_get_iter_first (model, &iter); - - while (valid || list != NULL) - { - GnomeThemeMetaInfo *list_meta_theme_info = NULL; - GnomeThemeMetaInfo *model_meta_theme_info = NULL; - gchar *blurb; - gboolean list_is_default = FALSE; - GdkPixbuf *pixbuf = NULL; - gboolean delete_it = FALSE; - gboolean set_it = FALSE; - GtkTreeIter iter_to_set; - - /* Check info on the list */ - if (list) - { - list_meta_theme_info = list->data; - 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; - } - - if (valid) - { - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &name, - META_THEME_FLAG_COLUMN, &flag, - -1); - if (name) - { - model_meta_theme_info = gnome_theme_meta_info_find (name); - g_free (name); - - /* The theme was removed, and we haven't removed it from the list yet. */ - if (model_meta_theme_info == NULL) - { - delete_it = TRUE; - goto end_of_loop; - } - } - } - - /* start comparing values */ - if (list && valid) - { - gint compare_val; - - if (flag & THEME_FLAG_CUSTOM) - { - /* We can always skip the custom row, as it's never in the list */ - valid = gtk_tree_model_iter_next (model, &iter); - i++; - goto end_of_loop; - } - - compare_val = gnome_theme_manager_sort_func (model_meta_theme_info->readable_name, list_meta_theme_info->readable_name, - flag, list_is_default ? THEME_FLAG_DEFAULT : 0); - - if (compare_val < 0) - { - delete_it = TRUE; - goto end_of_loop; - } - else if (compare_val == 0) - { - set_it = TRUE; - iter_to_set = iter; - valid = gtk_tree_model_iter_next (model, &iter); - } - else - { - /* we insert a new item */ - set_it = TRUE; - gtk_list_store_insert_before (GTK_LIST_STORE (model), &iter_to_set, &iter); - } - } - else if (list) - { - /* we append a new item */ - set_it = TRUE; - gtk_list_store_append (GTK_LIST_STORE (model), &iter_to_set); - } - else if (valid) - { - /* It's a dead item. */ - delete_it = TRUE; - } - - end_of_loop: - if (delete_it) - { - GtkTreeIter iter_to_remove; - iter_to_remove = iter; - valid = gtk_tree_model_iter_next (model, &iter); - gtk_list_store_remove (GTK_LIST_STORE (model), &iter_to_remove); - } - if (set_it) - { - /* We reset the blurb in case it has changed */ - blurb = g_markup_printf_escaped ("<span size=\"larger\" weight=\"bold\">%s</span>\n%s", - list_meta_theme_info->readable_name, list_meta_theme_info->comment); - - if (i <= MAX_ELEMENTS_BEFORE_SCROLLING) { - pixbuf = generate_theme_thumbnail (list_meta_theme_info, FALSE); - if (pixbuf == NULL) - pixbuf = broken_image; - } else { - pixbuf = default_image; - } - - gtk_list_store_set (GTK_LIST_STORE (model), &iter_to_set, - META_THEME_PIXBUF_COLUMN, pixbuf, - META_THEME_NAME_COLUMN, blurb, - META_THEME_ID_COLUMN, list_meta_theme_info->name, - META_THEME_FLAG_COLUMN, list_is_default ? THEME_FLAG_DEFAULT : 0, - -1); - g_free (blurb); - - list = list->next; - i++; - } - if (i == MAX_ELEMENTS_BEFORE_SCROLLING) - { - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - } - } - - add_pixbuf_idle (); - - g_free (current_gtk_theme); - g_free (current_icon_theme); - g_free (current_window_theme); - first_time = FALSE; - setting_model = FALSE; -} - -static void -meta_theme_setup_info (GnomeThemeMetaInfo *meta_theme_info, - GladeXML *dialog) -{ - GtkWidget *notebook; - - notebook = WID ("meta_theme_notebook"); - - if (meta_theme_info == NULL) - { - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); - } - else - { - if (meta_theme_info->application_font != NULL) - { - if (meta_theme_info->background_image != NULL) - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 3); - else - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1); - } - else - { - if (meta_theme_info->background_image != NULL) - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 2); - else - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); - } - } -} - -static void -meta_theme_selection_changed (GtkTreeSelection *selection, - GladeXML *dialog) -{ - GnomeThemeMetaInfo *meta_theme_info; - GtkTreeIter iter; - gchar *meta_theme_name; - GtkTreeModel *model; - gchar *current_gtk_theme; - gchar *current_window_theme; - gchar *current_icon_theme; - GConfClient *client; - GnomeWindowManager *window_manager; - GnomeWMSettings wm_settings; - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &meta_theme_name, - -1); - } - else - { - /* I probably just added a row. */ - return; - } - - if (meta_theme_name) - { - meta_theme_info = gnome_theme_meta_info_find (meta_theme_name); - g_free (meta_theme_name); - } - else - { - meta_theme_info = &custom_meta_theme_info; - } - meta_theme_setup_info (meta_theme_info, dialog); - - if (setting_model) - return; - - if (meta_theme_info) - gnome_meta_theme_set (meta_theme_info); - - if (!themes_loaded) { - client = gconf_client_get_default (); - - /* Get the settings */ - current_gtk_theme = gconf_client_get_string (client, GTK_THEME_KEY, NULL); - current_icon_theme = gconf_client_get_string (client, ICON_THEME_KEY, NULL); - g_object_unref (client); - - window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - wm_settings.flags = GNOME_WM_SETTING_THEME; - if (window_manager) { - gnome_window_manager_get_settings (window_manager, &wm_settings); - current_window_theme = g_strdup (wm_settings.theme); - } else - current_window_theme = g_strdup (""); - - initial_meta_theme_info.name = g_strdup ("__Initial Theme__"); - initial_meta_theme_info.gtk_theme_name = g_strdup (current_gtk_theme); - initial_meta_theme_info.metacity_theme_name = g_strdup (current_window_theme); - initial_meta_theme_info.icon_theme_name = g_strdup (current_icon_theme); - themes_loaded = TRUE; - } else { - if (!reverted) { - gtk_widget_set_sensitive(WID("meta_theme_revert_button"),TRUE); - } else { - reverted = FALSE; - } - } -} - -/* This function will adjust the list to reflect the current theme - * situation. It is called after the themes change on disk. Currently, it - * recreates the entire list. - */ -static void -update_themes_from_disk (GladeXML *dialog) -{ - GList *theme_list; - - if (loading_themes) { - reload_themes = TRUE; - return; - } - - loading_themes = TRUE; - - theme_list = gnome_theme_meta_info_find_all (); - gtk_widget_show (WID ("meta_theme_hbox")); - load_meta_themes (GTK_TREE_VIEW (WID ("meta_theme_treeview")), theme_list); - g_list_free (theme_list); - - update_settings_from_gconf (); -} - -static void -add_custom_row_to_meta_theme (const gchar *current_gtk_theme, - const gchar *current_window_theme, - const gchar *current_icon_theme, - gboolean select) -{ - GladeXML *dialog; - GtkWidget *tree_view; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - gboolean valid; - gchar *blurb; - GdkPixbuf *pixbuf; - - dialog = gnome_theme_manager_get_theme_dialog (); - tree_view = WID ("meta_theme_treeview"); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); - - g_free (custom_meta_theme_info.gtk_theme_name); - custom_meta_theme_info.gtk_theme_name = g_strdup (current_gtk_theme); - g_free (custom_meta_theme_info.metacity_theme_name); - custom_meta_theme_info.metacity_theme_name = g_strdup (current_window_theme); - g_free (custom_meta_theme_info.icon_theme_name); - custom_meta_theme_info.icon_theme_name = g_strdup (current_icon_theme); - g_free (custom_meta_theme_info.name); - custom_meta_theme_info.name = g_strdup ("__Custom Theme__"); - - for (valid = gtk_tree_model_get_iter_first (model, &iter); - valid; - valid = gtk_tree_model_iter_next (model, &iter)) - { - guint theme_flags = 0; - - gtk_tree_model_get (model, &iter, - META_THEME_FLAG_COLUMN, &theme_flags, - -1); - if (theme_flags & THEME_FLAG_CUSTOM) - break; - - } - - /* if we found a custom row and broke out of the list above, valid will be - * TRUE. If we didn't, we need to add a new iter. - */ - if (!valid) - gtk_list_store_prepend (GTK_LIST_STORE (model), &iter); - - /* set the values of the Custom theme. */ - blurb = g_markup_printf_escaped ("<span size=\"larger\" weight=\"bold\">%s</span>\n%s", - _("Custom theme"), _("You can save this theme by pressing the Save Theme button.")); - - /* Invalidate the cache because the custom theme has potentially changed */ - /* Commented out because it does odd things */ - /*theme_thumbnail_invalidate_cache (&custom_meta_theme_info);*/ - - pixbuf = generate_theme_thumbnail (&custom_meta_theme_info, TRUE); - if (pixbuf == NULL) - pixbuf = default_image; - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - META_THEME_PIXBUF_COLUMN, pixbuf, - META_THEME_NAME_COLUMN, blurb, - META_THEME_FLAG_COLUMN, THEME_FLAG_CUSTOM, - -1); - - gtk_widget_set_sensitive (WID ("meta_theme_save_button"), TRUE); - path = gtk_tree_model_get_path (model, &iter); - if (select) - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree_view), path, NULL, FALSE); - gtk_tree_path_free (path); - g_free (blurb); -} - -static void -remove_custom_row_from_meta_theme (void) -{ - GladeXML *dialog; - GtkWidget *tree_view; - GtkTreeModel *model; - GtkTreeIter iter; - GtkTreeIter next_iter; - gboolean valid; - - dialog = gnome_theme_manager_get_theme_dialog (); - tree_view = WID ("meta_theme_treeview"); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); - - valid = gtk_tree_model_get_iter_first (model, &iter); - while (valid) - { - guint theme_flags = 0; - - next_iter = iter; - valid = gtk_tree_model_iter_next (model, &next_iter); - - gtk_tree_model_get (model, &iter, - META_THEME_FLAG_COLUMN, &theme_flags, - -1); - - if (theme_flags & THEME_FLAG_CUSTOM) - { - gtk_list_store_remove (GTK_LIST_STORE (model), &iter); - } - iter = next_iter; - } - g_free (custom_meta_theme_info.gtk_theme_name); - g_free (custom_meta_theme_info.metacity_theme_name); - g_free (custom_meta_theme_info.icon_theme_name); - g_free (custom_meta_theme_info.name); - - gtk_widget_set_sensitive (WID ("meta_theme_save_button"), FALSE); - - custom_meta_theme_info.gtk_theme_name = NULL; - custom_meta_theme_info.metacity_theme_name = NULL; - custom_meta_theme_info.icon_theme_name = NULL; - custom_meta_theme_info.name = NULL; -} - -gboolean -themes_equal (GnomeThemeMetaInfo *a, GnomeThemeMetaInfo *b) -{ - if (!a->gtk_theme_name || - !b->gtk_theme_name || - strcmp (a->gtk_theme_name, b->gtk_theme_name)) - return FALSE; - if (!a->metacity_theme_name || - !b->metacity_theme_name || - strcmp (a->metacity_theme_name, b->metacity_theme_name)) - return FALSE; - if (!a->icon_theme_name || - !b->icon_theme_name || - strcmp (a->icon_theme_name, b->icon_theme_name)) - return FALSE; - return TRUE; -} - - -/* Sets the list to point to the current theme. Also creates the 'Custom Theme' - * field if needed */ -static gboolean -update_settings_from_gconf_idle (gpointer data) -{ - GConfClient *client; - gchar *current_gtk_theme; - gchar *current_window_theme; - gchar *current_icon_theme; - GnomeWindowManager *window_manager; - GnomeWMSettings wm_settings; - GtkWidget *tree_view; - GtkTreeModel *model; - GtkTreeIter iter; - GladeXML *dialog; - gboolean valid; - gboolean current_theme_saved; - gboolean initial_theme_saved; - static gboolean first_time_run = TRUE; - - client = gconf_client_get_default (); - - /* Get the settings */ - current_gtk_theme = gconf_client_get_string (client, GTK_THEME_KEY, NULL); - current_icon_theme = gconf_client_get_string (client, ICON_THEME_KEY, NULL); - g_object_unref (client); - - window_manager = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - wm_settings.flags = GNOME_WM_SETTING_THEME; - if (window_manager) { - gnome_window_manager_get_settings (window_manager, &wm_settings); - current_window_theme = g_strdup (wm_settings.theme); - } else - current_window_theme = g_strdup (""); - - /* True if the current or initial theme has a meta theme that it matches. */ - current_theme_saved = FALSE; - initial_theme_saved = FALSE; - - /* Walk the tree looking for the current one. */ - dialog = gnome_theme_manager_get_theme_dialog (); - tree_view = WID ("meta_theme_treeview"); - g_assert (tree_view); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); - - for (valid = gtk_tree_model_get_iter_first (model, &iter); - valid; - valid = gtk_tree_model_iter_next (model, &iter)) - { - gchar *row_theme_id = NULL; - guint row_theme_flags = 0; - GnomeThemeMetaInfo *meta_theme_info; - - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &row_theme_id, - META_THEME_FLAG_COLUMN, &row_theme_flags, - -1); - - if (row_theme_id) { - meta_theme_info = gnome_theme_meta_info_find (row_theme_id); - } - else { - continue; - } - g_free (row_theme_id); - if (row_theme_flags & THEME_FLAG_CUSTOM) { - continue; - } - - if (initial_meta_theme_set && themes_equal (&initial_meta_theme_info, meta_theme_info)) - initial_theme_saved = TRUE; - if (! strcmp (current_gtk_theme, meta_theme_info->gtk_theme_name) && - (window_manager == NULL || - ! strcmp (current_window_theme, meta_theme_info->metacity_theme_name)) && - ! strcmp (current_icon_theme, meta_theme_info->icon_theme_name)) - { - GtkTreePath *path; - GtkTreePath *cursor_path; - gboolean cursor_same = FALSE; - - gtk_tree_view_get_cursor (GTK_TREE_VIEW (tree_view), &cursor_path, NULL); - path = gtk_tree_model_get_path (model, &iter); - if (cursor_path && gtk_tree_path_compare (path, cursor_path) == 0) - cursor_same = TRUE; - - gtk_tree_path_free (cursor_path); - - if (!cursor_same) - { - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree_view), path, NULL, FALSE); - } - gtk_tree_path_free (path); - current_theme_saved = TRUE; - - break; - } - } - - if (!current_theme_saved && first_time_run) - { - initial_meta_theme_set = TRUE; - initial_meta_theme_info.name = g_strdup ("__Initial Theme__"); - initial_meta_theme_info.gtk_theme_name = g_strdup (current_gtk_theme); - initial_meta_theme_info.metacity_theme_name = g_strdup (current_window_theme); - initial_meta_theme_info.icon_theme_name = g_strdup (current_icon_theme); - } - first_time_run = FALSE; - - - if (!current_theme_saved) - { - add_custom_row_to_meta_theme (current_gtk_theme, - current_window_theme, - current_icon_theme, - TRUE); - } - else if (initial_meta_theme_set && !initial_theme_saved) - { - add_custom_row_to_meta_theme (initial_meta_theme_info.gtk_theme_name, - initial_meta_theme_info.metacity_theme_name, - initial_meta_theme_info.icon_theme_name, - FALSE); - } - else - { - remove_custom_row_from_meta_theme (); - } - g_free (current_gtk_theme); - g_free (current_window_theme); - g_free (current_icon_theme); - update_settings_from_gconf_idle_id = 0; - return FALSE; -} - -void -update_settings_from_gconf (void) -{ - if (update_settings_from_gconf_idle_id != 0) - return; - update_settings_from_gconf_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, - update_settings_from_gconf_idle, - NULL, NULL); -} - -static void -gtk_theme_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data) -{ - if (strcmp (entry->key, GTK_THEME_KEY)) - return; - - update_settings_from_gconf (); - gnome_theme_details_update_from_gconf (); -} - -static void -window_settings_changed (GnomeWindowManager *window_manager, - GladeXML *dialog) -{ - static gchar *window_theme = NULL; - GnomeWMSettings wm_settings; - - wm_settings.flags = GNOME_WM_SETTING_THEME; - gnome_window_manager_get_settings (window_manager, &wm_settings); - if (window_theme == NULL || strcmp (wm_settings.theme, window_theme) != 0) - { - g_free (window_theme); - window_theme = g_strdup (wm_settings.theme); - } - else - return; - - update_settings_from_gconf (); - gnome_theme_details_update_from_gconf (); -} - -static void -update_font_button_state (GladeXML *dialog) -{ - GConfClient *client = gconf_client_get_default (); - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreeIter iter; - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("meta_theme_treeview"))); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - GnomeThemeMetaInfo *meta_theme_info; - char *meta_theme_name, *str; - - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &meta_theme_name, - -1); - if (!meta_theme_name) - return; - - meta_theme_info = gnome_theme_meta_info_find (meta_theme_name); - - g_assert (meta_theme_info); - g_free (meta_theme_name); - - str = gconf_client_get_string (client, FONT_KEY, NULL); - - if (meta_theme_info->application_font != NULL && str != NULL && - strcmp (meta_theme_info->application_font, str) == 0) - { - gtk_widget_set_sensitive (WID ("meta_theme_font1_button"), FALSE); - gtk_widget_set_sensitive (WID ("meta_theme_font2_button"), FALSE); - } - else - { - gtk_widget_set_sensitive (WID ("meta_theme_font1_button"), TRUE); - gtk_widget_set_sensitive (WID ("meta_theme_font2_button"), TRUE); - } - - g_free (str); - } - g_object_unref (client); -} - -static void -font_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data) -{ - GladeXML *dialog = user_data; - - update_font_button_state (dialog); -} - -static void -icon_key_changed (GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data) -{ - if (strcmp (entry->key, ICON_THEME_KEY)) - return; - - update_settings_from_gconf (); - gnome_theme_details_update_from_gconf (); -} - -static gboolean -theme_changed_idle (gpointer data) -{ - GladeXML *dialog; - dialog = gnome_theme_manager_get_theme_dialog (); - - update_themes_from_disk (dialog); - gnome_theme_details_reread_themes_from_disk (); - gtk_widget_grab_focus (WID ("meta_theme_treeview")); - theme_changed_idle_id = 0; - return FALSE; -} - -/* FIXME: We want a more sophisticated theme_changed func sometime */ -static void -theme_changed_func (gpointer uri, - gpointer user_data) -{ - if (theme_changed_idle_id != 0) - return; - theme_changed_idle_id = - g_idle_add_full (G_PRIORITY_HIGH_IDLE, - theme_changed_idle, - NULL, NULL); -} - -static void -cb_dialog_response (GtkDialog *dialog, gint response_id) -{ - if (response_id == GTK_RESPONSE_HELP) - capplet_help (GTK_WINDOW (dialog), "user-guide.xml", "goscustdesk-12"); - else - gtk_main_quit (); -} - -static void -setup_meta_tree_view (GtkTreeView *tree_view, - GCallback changed_callback, - GladeXML *dialog) -{ - GtkTreeModel *model; - GtkTreeSelection *selection; - GtkCellRenderer *renderer; - - renderer = g_object_new (GTK_TYPE_CELL_RENDERER_PIXBUF, - "xpad", 4, - "ypad", 4, - NULL); - - gtk_tree_view_insert_column_with_attributes (tree_view, - -1, NULL, - renderer, - "pixbuf", META_THEME_PIXBUF_COLUMN, - NULL); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (tree_view, - -1, NULL, - renderer, - "markup", META_THEME_NAME_COLUMN, - NULL); - - model = (GtkTreeModel *) gtk_list_store_new (META_N_COLUMNS, - G_TYPE_STRING, /* META_THEME_NAME_COLUMN */ - G_TYPE_STRING, /* META_THEME_ID_COLUMN */ - G_TYPE_UINT, /* META_THEME_FLAG_COLUMN */ - GDK_TYPE_PIXBUF); /* META_THEME_PIXBUF_COLUMN */ - 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); -} - - -static void -gnome_meta_theme_installer_run_cb (GtkWidget *button, - GtkWidget *parent_window) -{ - gnome_theme_installer_run (parent_window, NULL); -} - - -static void -gnome_theme_save_clicked (GtkWidget *button, - gpointer data) -{ - GladeXML *dialog; - - dialog = gnome_theme_manager_get_theme_dialog (); - - gnome_theme_save_show_dialog (WID ("theme_dialog"), &custom_meta_theme_info); -} - -static void -apply_font_clicked (GtkWidget *button, - gpointer data) -{ - GladeXML *dialog = data; - GConfClient *client; - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreeIter iter; - - client = gconf_client_get_default (); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("meta_theme_treeview"))); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - GnomeThemeMetaInfo *meta_theme_info; - char *meta_theme_name; - - gtk_tree_model_get (model, &iter, - META_THEME_ID_COLUMN, &meta_theme_name, - -1); - meta_theme_info = gnome_theme_meta_info_find (meta_theme_name); - - g_assert (meta_theme_info); - g_free (meta_theme_name); - - gconf_client_set_string (client, FONT_KEY, meta_theme_info->application_font, NULL); - } - g_object_unref (client); -} - -static void -revert_theme_clicked (GtkWidget *button, - gpointer data) -{ - GladeXML *dialog; - - gnome_meta_theme_set(&initial_meta_theme_info); - - dialog = gnome_theme_manager_get_theme_dialog (); - gtk_widget_set_sensitive(WID("meta_theme_revert_button"), FALSE); - reverted = TRUE; -} - -static void -setup_dialog (GladeXML *dialog) -{ - GConfClient *client; - GtkWidget *parent, *widget; - GnomeWindowManager *window_manager; - GtkSizeGroup *size_group; - - default_image = gdk_pixbuf_new_from_file(GNOMECC_DATA_DIR "/pixmaps/theme-thumbnailing.png", NULL); - broken_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"); - - size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - gtk_size_group_add_widget (size_group, WID ("meta_theme_details_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_install_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_save_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_font1_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_background1_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_font2_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_background2_button")); - gtk_size_group_add_widget (size_group, WID ("meta_theme_revert_button")); - g_object_unref (size_group); - - gtk_widget_set_sensitive(WID("meta_theme_revert_button"),FALSE); - - 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); - - g_signal_connect (G_OBJECT (WID ("meta_theme_revert_button")), "clicked", G_CALLBACK (revert_theme_clicked),NULL); - - setup_meta_tree_view (GTK_TREE_VIEW (WID ("meta_theme_treeview")), - (GCallback) meta_theme_selection_changed, - dialog); - - gconf_client_add_dir (client, "/desktop/gnome/interface", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); - - gconf_client_notify_add (client, - GTK_THEME_KEY, - (GConfClientNotifyFunc) >k_theme_key_changed, - dialog, NULL, NULL); - gconf_client_notify_add (client, - ICON_THEME_KEY, - (GConfClientNotifyFunc) &icon_key_changed, - dialog, NULL, NULL); - - gconf_client_notify_add (client, - FONT_KEY, - (GConfClientNotifyFunc) &font_key_changed, - dialog, NULL, NULL); - g_object_unref (client); - - if (window_manager) - g_signal_connect (G_OBJECT (window_manager), - "settings_changed", - (GCallback) window_settings_changed, dialog); - - update_themes_from_disk (dialog); - gtk_widget_grab_focus (WID ("meta_theme_treeview")); - gnome_theme_info_register_theme_change (theme_changed_func, dialog); - - - - widget = WID ("meta_theme_save_button"); - g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_save_clicked), NULL); - - -/* - g_signal_connect (G_OBJECT (WID ("install_dialog")), "response", - G_CALLBACK (install_dialog_response), dialog); - */ - - g_signal_connect (G_OBJECT (parent), "response", G_CALLBACK (cb_dialog_response), NULL); - - gtk_drag_dest_set (parent, GTK_DEST_DEFAULT_ALL, - drop_types, n_drop_types, - GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE); - g_signal_connect (G_OBJECT (parent), "drag-motion", G_CALLBACK (gnome_theme_manager_drag_motion_cb), NULL); - g_signal_connect (G_OBJECT (parent), "drag-leave", G_CALLBACK (gnome_theme_manager_drag_leave_cb), NULL); - g_signal_connect (G_OBJECT (parent), "drag-data-received",G_CALLBACK (gnome_theme_manager_drag_data_received_cb), NULL); - - capplet_set_icon (parent, "gnome-settings-theme"); - - update_font_button_state (dialog); - gtk_widget_show (parent); - -} - -/* Non static functions */ -GladeXML * -gnome_theme_manager_get_theme_dialog (void) -{ - static GladeXML *dialog = NULL; - - if (dialog == NULL) - dialog = glade_xml_new (GLADEDIR "/theme-properties.glade", NULL, NULL); - - return dialog; -} - -gint -gnome_theme_manager_sort_func (const gchar *a_str, - const gchar *b_str, - guint a_flag, - guint b_flag) -{ - gint retval; - gint agreater = FALSE, bgreater = FALSE; - - if (a_flag & THEME_FLAG_CUSTOM) - agreater = TRUE; - if (b_flag & THEME_FLAG_CUSTOM) - bgreater = TRUE; - - if (agreater && !bgreater) - return -1; - if (!agreater && bgreater) - return 1; - - if (a_flag & THEME_FLAG_DEFAULT) - agreater = TRUE; - if (b_flag & THEME_FLAG_DEFAULT) - bgreater = TRUE; - - if (agreater && !bgreater) - return -1; - if (!agreater && bgreater) - return 1; - - retval = g_utf8_collate (a_str?a_str:"", - b_str?b_str:""); - - return retval; -} - -/* Starts nautilus on the themes directory*/ -void -gnome_theme_manager_show_manage_themes (GtkWidget *button, gpointer data) -{ - gchar *path, *command; - GnomeVFSURI *uri; - - path = g_strdup_printf ("%s/.themes", g_get_home_dir ()); - uri = gnome_vfs_uri_new (path); - - if (!gnome_vfs_uri_exists (uri)) { - /* Create the directory */ - gnome_vfs_make_directory_for_uri (uri, 0775); - } - gnome_vfs_uri_unref (uri); - - command = g_strdup_printf ("nautilus --no-desktop %s", path); - g_free (path); - - g_spawn_command_line_async (command, NULL); - g_free (command); -} - -/* Starts nautilus on the icon themes directory*/ -void -gnome_theme_manager_icon_show_manage_themes (GtkWidget *button, gpointer data) -{ - gchar *path, *command; - GnomeVFSURI *uri; - - path = g_strdup_printf ("%s/.icons", g_get_home_dir ()); - uri = gnome_vfs_uri_new (path); - - if (!gnome_vfs_uri_exists (uri)) { - /* Create the directory */ - gnome_vfs_make_directory_for_uri (uri, 0775); - } - gnome_vfs_uri_unref (uri); - - command = g_strdup_printf ("nautilus --no-desktop %s", path); - g_free (path); - - g_spawn_command_line_async (command, NULL); - g_free (command); -} - -/* Show the nautilus themes window */ -void -gnome_theme_manager_window_show_manage_themes (GtkWidget *button, gpointer data) -{ - gchar *path, *command; - GnomeVFSURI *uri; - GnomeWindowManager *wm; - - wm = gnome_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ())); - - path = gnome_window_manager_get_user_theme_folder (wm); - g_object_unref (G_OBJECT (wm)); - - uri = gnome_vfs_uri_new (path); - - if (!gnome_vfs_uri_exists (uri)) { - /* Create the directory */ - gnome_vfs_make_directory_for_uri (uri, 0775); - } - gnome_vfs_uri_unref (uri); - - - command = g_strdup_printf ("nautilus --no-desktop %s", path); - g_free (path); - - g_spawn_command_line_async (command, NULL); - g_free (command); -} - -/* Callback issued during drag movements */ -gboolean -gnome_theme_manager_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, - gint x, gint y, guint time, gpointer data) -{ - return FALSE; -} - -/* Callback issued during drag leaves */ -void -gnome_theme_manager_drag_leave_cb (GtkWidget *widget, GdkDragContext *context, - guint time, gpointer data) -{ - gtk_widget_queue_draw (widget); -} - -/* Callback issued on actual drops. Attempts to load the file dropped. */ -void -gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, - gint x, gint y, - GtkSelectionData *selection_data, - guint info, guint time, gpointer data) -{ - GList *uris; - gchar *filename = NULL; - - if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL)) - return; - - uris = gnome_vfs_uri_list_parse ((gchar *) selection_data->data); - if (uris != NULL && uris->data != NULL) { - GnomeVFSURI *uri = (GnomeVFSURI *) uris->data; - - if (gnome_vfs_uri_is_local (uri)) - filename = gnome_vfs_unescape_string ( - gnome_vfs_uri_get_path (uri), - G_DIR_SEPARATOR_S); - else - filename = gnome_vfs_unescape_string ( - gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE), - G_DIR_SEPARATOR_S); - - gnome_vfs_uri_list_unref (uris); - } - - gnome_theme_installer_run (widget, filename); - g_free (filename); -} - - -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); - g_object_unref (client); - - 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[]) -{ - GladeXML *dialog; - - /* We need to do this before we initialize anything else */ - theme_thumbnail_factory_init (argc, argv); - - bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - textdomain (GETTEXT_PACKAGE); - - gnome_program_init ("gnome-theme-manager", VERSION, - 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 *msg_dialog; - - msg_dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("The default theme schemas could not be found on your system. This means that you probably don't have metacity installed, or that your gconf is configured incorrectly.")); - gtk_dialog_run (GTK_DIALOG (msg_dialog)); - gtk_widget_destroy (msg_dialog); - exit (0); - } - - gnome_theme_init (NULL); - - gnome_wm_manager_init (); - activate_settings_daemon (); - - dialog = gnome_theme_manager_get_theme_dialog (); - - setup_dialog (dialog); - - gtk_main (); - - return 0; -} diff --git a/capplets/theme-switcher/gnome-theme-manager.h b/capplets/theme-switcher/gnome-theme-manager.h deleted file mode 100644 index db990abfa..000000000 --- a/capplets/theme-switcher/gnome-theme-manager.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef __GNOME_THEME_MANAGER_H__ -#define __GNOME_THEME_MANAGER_H__ - -#include <gtk/gtk.h> -#include <glade/glade.h> - - -#define GTK_THEME_KEY "/desktop/gnome/interface/gtk_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" - -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 */ -enum -{ - TARGET_URI_LIST, - TARGET_NS_URL -}; - -/* model info */ -enum -{ - THEME_NAME_COLUMN, - THEME_ID_COLUMN, - THEME_FLAG_COLUMN, - N_COLUMNS -}; - -enum -{ - THEME_FLAG_DEFAULT = 1 << 0, - THEME_FLAG_CUSTOM = 1 << 1 -}; - -extern GtkTargetEntry drop_types[]; -extern gint n_drop_types; - - -/* Prototypes */ -GladeXML *gnome_theme_manager_get_theme_dialog (void); -gint gnome_theme_manager_sort_func (const gchar *a_str, - const gchar *b_str, - guint a_flag, - guint b_flag); -void gnome_theme_manager_show_manage_themes (GtkWidget *button, - gpointer data); -void gnome_theme_manager_icon_show_manage_themes (GtkWidget *button, - gpointer data); -void gnome_theme_manager_window_show_manage_themes (GtkWidget *button, - gpointer data); -gboolean gnome_theme_manager_drag_motion_cb (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time, - gpointer data); -void gnome_theme_manager_drag_leave_cb (GtkWidget *widget, - GdkDragContext *context, - guint time, - gpointer data); -void gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *selection_data, - guint info, - guint time, - gpointer data); - - - - -#endif /* __GNOME_THEME_MANAGER_H__ */ diff --git a/capplets/theme-switcher/gnome-theme-save-data.c b/capplets/theme-switcher/gnome-theme-save-data.c deleted file mode 100644 index e487194fc..000000000 --- a/capplets/theme-switcher/gnome-theme-save-data.c +++ /dev/null @@ -1,9 +0,0 @@ -static const gchar *theme_header = -"[Desktop Entry]\n\ -Name=%s\n\ -Type=X-GNOME-Metatheme\n\ -Comment=%s\n\ -Encoding=UTF-8\n\ -\n\ -[X-GNOME-Metatheme]\n\ -"; diff --git a/capplets/theme-switcher/gnome-theme-save.c b/capplets/theme-switcher/gnome-theme-save.c deleted file mode 100644 index 823752f5c..000000000 --- a/capplets/theme-switcher/gnome-theme-save.c +++ /dev/null @@ -1,311 +0,0 @@ -#include "gnome-theme-info.h" -#include "gnome-theme-save.h" -#include "gnome-theme-manager.h" -#include "capplet-util.h" -#include <libgnomevfs/gnome-vfs-ops.h> - -#include "gnome-theme-save-data.c" - -static GQuark error_quark; -enum -{ - INVALID_THEME_NAME -}; - -/* taken from gnome-desktop-item.c */ -static char * -escape_string_and_dup (const char *s) -{ - char *return_value, *p; - const char *q; - int len = 0; - - if (s == NULL) - return g_strdup(""); - - q = s; - while (*q) - { - len++; - if (strchr ("\n\r\t\\", *q) != NULL) - len++; - q++; - } - return_value = p = (char *) g_malloc (len + 1); - do - { - switch (*s) - { - case '\t': - *p++ = '\\'; - *p++ = 't'; - break; - case '\n': - *p++ = '\\'; - *p++ = 'n'; - break; - case '\r': - *p++ = '\\'; - *p++ = 'r'; - break; - case '\\': - *p++ = '\\'; - *p++ = '\\'; - break; - default: - *p++ = *s; - } - } - while (*s++); - return return_value; -} - -static gboolean -check_theme_name (const gchar *theme_name, - GError **error) -{ - if (theme_name == NULL) - { - g_set_error (error, - error_quark, - INVALID_THEME_NAME, - _("Theme name must be present")); - return FALSE; - } - return TRUE; -} - -static gboolean -setup_directory_structure (const gchar *theme_name, - GError **error) -{ - gchar *dir; - GnomeVFSURI *uri; - - dir = g_build_filename (g_get_home_dir (), ".themes", NULL); - uri = gnome_vfs_uri_new (dir); - if (!gnome_vfs_uri_exists (uri)) - gnome_vfs_make_directory_for_uri (uri, 0775); - gnome_vfs_uri_unref (uri); - g_free (dir); - - dir = g_build_filename (g_get_home_dir (), ".themes", theme_name, NULL); - uri = gnome_vfs_uri_new (dir); - if (!gnome_vfs_uri_exists (uri)) - gnome_vfs_make_directory_for_uri (uri, 0775); - else { - GtkWidget *dialog; - gint response; - - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_OK_CANCEL, - _("The theme already exists. Would you like to replace it?")); - response = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - if (response == GTK_RESPONSE_CANCEL) - return FALSE; - } - - gnome_vfs_uri_unref (uri); - g_free (dir); - - return TRUE; -} - -static gboolean -write_theme_to_disk (GnomeThemeMetaInfo *meta_theme_info, - const gchar *theme_name, - const gchar *theme_description, - GError **error) -{ - gchar *dir; - GnomeVFSURI *uri; - GnomeVFSURI *target_uri; - GnomeVFSHandle *handle = NULL; - GnomeVFSFileSize bytes_written; - gchar *str; - - dir = g_build_filename (g_get_home_dir (), ".themes", theme_name, "index.theme~", NULL); - uri = gnome_vfs_uri_new (dir); - dir [strlen (dir) - 1] = '\000'; - target_uri = gnome_vfs_uri_new (dir); - g_free (dir); - gnome_vfs_create_uri (&handle, uri, GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_WRITE, FALSE, 0644); - - gnome_vfs_truncate_handle (handle, 0); - - /* start making the theme file */ - str = g_strdup_printf (theme_header, theme_name, theme_description); - gnome_vfs_write (handle, str, strlen (str), &bytes_written); - g_free (str); - - str = g_strdup_printf ("GtkTheme=%s\n", meta_theme_info->gtk_theme_name); - gnome_vfs_write (handle, str, strlen (str), &bytes_written); - g_free (str); - - str = g_strdup_printf ("MetacityTheme=%s\n", meta_theme_info->metacity_theme_name); - gnome_vfs_write (handle, str, strlen (str), &bytes_written); - g_free (str); - - str = g_strdup_printf ("IconTheme=%s\n", meta_theme_info->icon_theme_name); - gnome_vfs_write (handle, str, strlen (str), &bytes_written); - g_free (str); - - gnome_vfs_close (handle); - - - gnome_vfs_move_uri (uri, target_uri, TRUE); - gnome_vfs_uri_unref (uri); - gnome_vfs_uri_unref (target_uri); - - return TRUE; -} - -static gboolean -save_theme_to_disk (GnomeThemeMetaInfo *meta_theme_info, - const gchar *theme_name, - const gchar *theme_description, - GError **error) -{ - if (! check_theme_name (theme_name, error)) - return FALSE; - - if (! setup_directory_structure (theme_name, error)) - return FALSE; - - if (! write_theme_to_disk (meta_theme_info, theme_name, theme_description, error)) - return FALSE; - - return TRUE; -} - -static void -save_dialog_response (GtkWidget *save_dialog, - gint response_id, - gpointer data) -{ - GnomeThemeMetaInfo *meta_theme_info; - char *theme_description = NULL; - char *theme_name = NULL; - GError *error = NULL; - - if (response_id == GTK_RESPONSE_OK) - { - GladeXML *dialog; - GtkWidget *entry; - GtkWidget *text_view; - GtkTextBuffer *buffer; - GtkTextIter start_iter; - GtkTextIter end_iter; - gchar *buffer_text; - - dialog = gnome_theme_manager_get_theme_dialog (); - entry = WID ("save_dialog_entry"); - theme_name = escape_string_and_dup (gtk_entry_get_text (GTK_ENTRY (entry))); - - text_view = WID ("save_dialog_textview"); - buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); - gtk_text_buffer_get_start_iter (buffer, &start_iter); - gtk_text_buffer_get_end_iter (buffer, &end_iter); - buffer_text = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE); - theme_description = escape_string_and_dup (buffer_text); - g_free (buffer_text); - meta_theme_info = (GnomeThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info"); - if (! save_theme_to_disk (meta_theme_info, theme_name, theme_description, &error)) - { - goto out; - } - } - - out: - g_clear_error (&error); - gtk_widget_hide (save_dialog); - g_free (theme_name); - g_free (theme_description); -} - -static inline gboolean -is_valid_theme_char (char c) -{ - static const gchar *invalid_chars = "/?'\"\\|*."; - const char *p; - - for (p = invalid_chars; *p != '\000'; p++) - if (c == *p) return FALSE; - return TRUE; -} - -static void -entry_text_filter (GtkEditable *editable, - const gchar *text, - gint length, - gint *position, - gpointer data) -{ - gint i; - - for (i = 0; i < length; i ++) - { - if (! is_valid_theme_char (text[i])) - { - g_signal_stop_emission_by_name (editable, "insert_text"); - return; - } - } -} - -static void -entry_text_changed (GtkEditable *editable, - gpointer data) -{ - GladeXML *dialog = (GladeXML *) data; - const gchar *text; - - text = gtk_entry_get_text (GTK_ENTRY (editable)); - if (text != NULL && text[0] != '\000') - gtk_widget_set_sensitive (WID ("save_dialog_save_button"), TRUE); - else - gtk_widget_set_sensitive (WID ("save_dialog_save_button"), FALSE); -} - - -void -gnome_theme_save_show_dialog (GtkWidget *parent, - GnomeThemeMetaInfo *meta_theme_info) -{ - static GtkWidget *save_dialog = NULL; - GladeXML *dialog; - GtkWidget *entry; - GtkWidget *text_view; - GtkTextBuffer *text_buffer; - - dialog = gnome_theme_manager_get_theme_dialog (); - entry = WID ("save_dialog_entry"); - text_view = WID ("save_dialog_textview"); - - if (save_dialog == NULL) - { - save_dialog = WID ("save_dialog"); - g_assert (save_dialog); - - g_signal_connect (G_OBJECT (save_dialog), "response", G_CALLBACK (save_dialog_response), NULL); - g_signal_connect (G_OBJECT (save_dialog), "delete-event", G_CALLBACK (gtk_true), NULL); - g_signal_connect (G_OBJECT (entry), "insert_text", G_CALLBACK (entry_text_filter), NULL); - g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (entry_text_changed), dialog); - - error_quark = g_quark_from_string ("gnome-theme-save"); - gtk_widget_set_size_request (text_view, 300, 100); - } - - gtk_entry_set_text (GTK_ENTRY (entry), ""); - entry_text_changed (GTK_EDITABLE (entry), dialog); - gtk_widget_grab_focus (entry); - - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); - gtk_text_buffer_set_text (text_buffer, "", strlen ("")); - g_object_set_data (G_OBJECT (save_dialog), "meta-theme-info", meta_theme_info); - gtk_window_set_transient_for (GTK_WINDOW (save_dialog), GTK_WINDOW (parent)); - gtk_widget_show (save_dialog); -} diff --git a/capplets/theme-switcher/gnome-theme-save.h b/capplets/theme-switcher/gnome-theme-save.h deleted file mode 100644 index 7ef427e86..000000000 --- a/capplets/theme-switcher/gnome-theme-save.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __GNOME_THEME_SAVE_H__ -#define __GNOME_THEME_SAVE_H__ - - -#include <gtk/gtk.h> -#include "gnome-theme-info.h" - -void gnome_theme_save_show_dialog (GtkWidget *parent, - GnomeThemeMetaInfo *meta_theme_info); - - -#endif /* __GNOME_THEME_SAVE_H__ */ diff --git a/capplets/theme-switcher/gtk-theme-selector-capplet.png b/capplets/theme-switcher/gtk-theme-selector-capplet.png Binary files differdeleted file mode 100644 index 4ceb86de6..000000000 --- a/capplets/theme-switcher/gtk-theme-selector-capplet.png +++ /dev/null diff --git a/capplets/theme-switcher/gtk-theme-selector.desktop.in.in b/capplets/theme-switcher/gtk-theme-selector.desktop.in.in deleted file mode 100644 index 9ef0ee603..000000000 --- a/capplets/theme-switcher/gtk-theme-selector.desktop.in.in +++ /dev/null @@ -1,15 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -_Name=Theme -_Comment=Select themes for various parts of the desktop -Exec=gnome-theme-manager -Icon=gnome-settings-theme -Terminal=false -Type=Application -StartupNotify=true -Categories=GNOME;Application;Settings; -OnlyShowIn=GNOME; -X-GNOME-Bugzilla-Bugzilla=GNOME -X-GNOME-Bugzilla-Product=control-center -X-GNOME-Bugzilla-Component=theme-manager -X-GNOME-Bugzilla-Version=@VERSION@ diff --git a/capplets/theme-switcher/gtk-theme-switcher.schemas b/capplets/theme-switcher/gtk-theme-switcher.schemas deleted file mode 100644 index ef314d7fe..000000000 --- a/capplets/theme-switcher/gtk-theme-switcher.schemas +++ /dev/null @@ -1,47 +0,0 @@ -<gconfschemafile> - <schemalist> - <schema> - <key>/schemas/apps/gtk-theme-switcher/auto</key> - <applyto>/apps/gtk-theme-switcher/auto</applyto> - <owner>gtk-theme-switcher</owner> - <type>bool</type> - <default>true</default> - <locale name="C"> - <short>Auto-preview</short> - <long>Whether to automatically preview selected themes</long> - </locale> - </schema> - <schema> - <key>/schemas/apps/gtk-theme-switcher/theme</key> - <applyto>/apps/gtk-theme-switcher/theme</applyto> - <owner>gtk-theme-switcher</owner> - <type>string</type> - <default>Default</default> - <locale name="C"> - <short>Current theme</short> - <long>The last set theme</long> - </locale> - </schema> - <schema> - <key>/schemas/apps/gtk-theme-switcher/font</key> - <applyto>/apps/gtk-theme-switcher/font</applyto> - <owner>gtk-theme-switcher</owner> - <type>string</type> - <locale name="C"> - <short>Current theme</short> - <long>The last set theme</long> - </locale> - </schema> - <schema> - <key>/schemas/apps/gtk-theme-switcher/use_theme_font</key> - <applyto>/apps/gtk-theme-switcher/use_theme_font</applyto> - <owner>gtk-theme-switcher</owner> - <type>bool</type> - <default>false</default> - <locale name="C"> - <short>Use custom font</short> - <long>Whether to use the custom specified font</long> - </locale> - </schema> - </schemalist> -</gconfschemafile> diff --git a/capplets/theme-switcher/theme-install.glade b/capplets/theme-switcher/theme-install.glade deleted file mode 100644 index e2bf0ce29..000000000 --- a/capplets/theme-switcher/theme-install.glade +++ /dev/null @@ -1,261 +0,0 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - -<glade-interface> -<requires lib="gnome"/> - -<widget class="GtkDialog" id="install_dialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Theme Installation</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="resizable">False</property> - <property name="destroy_with_parent">False</property> - <property name="has_separator">False</property> - - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox2"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area2"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="helpbutton2"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-help</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="response_id">-11</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="button3"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="response_id">-6</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="button4"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="response_id">0</property> - - <child> - <widget class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - - <child> - <widget class="GtkHBox" id="hbox3"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image2"> - <property name="visible">True</property> - <property name="stock">gtk-ok</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label7"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Install</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox6"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkImage" id="image3"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - <property name="xalign">0.5</property> - <property name="yalign">0</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox3"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label8"> - <property name="visible">True</property> - <property name="label" translatable="yes"><span size="larger" weight="bold">Install a Theme</span></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">install_theme_combo_entry</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox7"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label9"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Location:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">install_theme_combo_entry</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GnomeFileEntry" id="install_theme_picker"> - <property name="visible">True</property> - <property name="max_saved">10</property> - <property name="directory_entry">False</property> - <property name="modal">True</property> - <property name="use_filechooser">True</property> - - <child internal-child="entry"> - <widget class="GtkEntry" id="install_theme_combo_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char" translatable="yes">*</property> - <property name="activates_default">False</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - -</glade-interface> diff --git a/capplets/theme-switcher/theme-properties.glade b/capplets/theme-switcher/theme-properties.glade deleted file mode 100644 index fdce961ff..000000000 --- a/capplets/theme-switcher/theme-properties.glade +++ /dev/null @@ -1,1686 +0,0 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> - -<glade-interface> -<requires lib="gnome"/> - -<widget class="GtkDialog" id="theme_dialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Theme Preferences</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="has_separator">False</property> - - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="helpbutton1"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-help</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-11</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="closebutton1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-7</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="content_vbox"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkHBox" id="meta_theme_hbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="theme_swindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="meta_theme_treeview"> - <property name="height_request">350</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">theme selection tree</atkproperty> - <atkproperty name="AtkObject::accessible_description" translatable="yes">Select theme for the desktop</atkproperty> - </accessibility> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="button_vbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="meta_theme_install_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment8"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox15"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image7"> - <property name="visible">True</property> - <property name="stock">gtk-add</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label42"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Install Theme...</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_details_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment7"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox14"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image6"> - <property name="visible">True</property> - <property name="stock">gtk-preferences</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label41"> - <property name="visible">True</property> - <property name="label" translatable="yes">Theme _Details</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_save_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment9"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox16"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image8"> - <property name="visible">True</property> - <property name="stock">gtk-save</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label43"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Save Theme...</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_revert_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment16"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox26"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image15"> - <property name="visible">True</property> - <property name="stock">gtk-undo</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label50"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Revert</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkNotebook" id="meta_theme_notebook"> - <property name="visible">True</property> - <property name="show_tabs">False</property> - <property name="show_border">False</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> - - <child> - <widget class="GtkLabel" id="label28"> - <property name="visible">True</property> - <property name="label" translatable="yes">This theme does not suggest any particular font or background.</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label27"> - <property name="visible">True</property> - <property name="label" translatable="yes">label27</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox23"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label24"> - <property name="visible">True</property> - <property name="label" translatable="yes">This theme suggests a font:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_font1_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Apply _Font</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label19"> - <property name="visible">True</property> - <property name="label" translatable="yes">label19</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox24"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label25"> - <property name="visible">True</property> - <property name="label" translatable="yes">This theme suggests a background:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_background1_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Apply _Background</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label20"> - <property name="visible">True</property> - <property name="label" translatable="yes">label20</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox25"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkLabel" id="label26"> - <property name="visible">True</property> - <property name="label" translatable="yes">This theme suggests a font and a background:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_font2_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Apply _Font</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="meta_theme_background2_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Apply _Background</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label21"> - <property name="visible">True</property> - <property name="label" translatable="yes">label21</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - -<widget class="GtkDialog" id="theme_details_dialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Theme Details</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">False</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="has_separator">False</property> - - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox2"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area2"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="helpbutton2"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-help</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-11</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="closebutton2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-7</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkNotebook" id="theme_notebook"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_tabs">True</property> - <property name="show_border">True</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> - - <child> - <widget class="GtkVBox" id="control_theme_vbox"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="control_theme_swindow"> - <property name="visible">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="control_theme_treeview"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">theme selection tree</atkproperty> - </accessibility> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="control_manage_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment14"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox21"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image13"> - <property name="visible">True</property> - <property name="stock">gtk-jump-to</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label48"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Go To Theme Folder</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox5"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-info</property> - <property name="icon_size">6</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes">New themes can also be installed by dragging them into the window.</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="label" translatable="yes">Controls</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="window_theme_vbox"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkHBox" id="hbox7"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="window_theme_swindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="window_theme_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">theme selection tree</atkproperty> - </accessibility> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox6"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="window_manage_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment11"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox18"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image10"> - <property name="visible">True</property> - <property name="stock">gtk-jump-to</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label45"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Go To Theme Folder</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox8"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkImage" id="image2"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-info</property> - <property name="icon_size">6</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label13"> - <property name="visible">True</property> - <property name="label" translatable="yes">New themes can also be installed by dragging them into the window.</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="label" translatable="yes">Window Border</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="icon_theme_vbox"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkHBox" id="hbox10"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="icon_theme_swindow"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="icon_theme_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">theme selection tree</atkproperty> - </accessibility> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox10"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="icon_manage_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - - <child> - <widget class="GtkAlignment" id="alignment13"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox20"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image12"> - <property name="visible">True</property> - <property name="stock">gtk-jump-to</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label47"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Go To Theme Folder</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox11"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkImage" id="image4"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-info</property> - <property name="icon_size">6</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="label" translatable="yes">New themes can also be installed by dragging them into the window.</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="label" translatable="yes">Icons</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - -<widget class="GtkDialog" id="save_dialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Save Theme</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_NONE</property> - <property name="modal">True</property> - <property name="resizable">True</property> - <property name="destroy_with_parent">False</property> - <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="has_separator">False</property> - - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox3"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area3"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="save_dialog_cancel_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-6</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="save_dialog_save_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-save</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-5</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox13"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">12</property> - - <child> - <widget class="GtkImage" id="image5"> - <property name="visible">True</property> - <property name="stock">gtk-dialog-question</property> - <property name="icon_size">6</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox15"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkLabel" id="label38"> - <property name="visible">True</property> - <property name="label" translatable="yes"><span size="larger" weight="bold">Save Theme to Disk</span></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkTable" id="table2"> - <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkEntry" id="save_dialog_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char" translatable="yes">*</property> - <property name="activates_default">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label39"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Theme name:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">save_dialog_entry</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> - </packing> - </child> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTextView" id="save_dialog_textview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="overwrite">False</property> - <property name="accepts_tab">True</property> - <property name="justification">GTK_JUSTIFY_LEFT</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> - <property name="cursor_visible">True</property> - <property name="pixels_above_lines">0</property> - <property name="pixels_below_lines">0</property> - <property name="pixels_inside_wrap">0</property> - <property name="left_margin">0</property> - <property name="right_margin">0</property> - <property name="indent">0</property> - <property name="text" translatable="yes"></property> - </widget> - </child> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label40"> - <property name="visible">True</property> - <property name="label" translatable="yes">Short _description:</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">scrolledwindow1</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options">fill</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - </child> -</widget> - -</glade-interface> diff --git a/capplets/theme-switcher/theme-switcher-capplet.png b/capplets/theme-switcher/theme-switcher-capplet.png Binary files differdeleted file mode 100644 index 4ceb86de6..000000000 --- a/capplets/theme-switcher/theme-switcher-capplet.png +++ /dev/null diff --git a/capplets/theme-switcher/theme-thumbnailing.png b/capplets/theme-switcher/theme-thumbnailing.png Binary files differdeleted file mode 100644 index b4a3f754e..000000000 --- a/capplets/theme-switcher/theme-thumbnailing.png +++ /dev/null |