diff options
author | Seth Nickell <snickell@stanford.edu> | 2002-06-05 00:36:57 +0000 |
---|---|---|
committer | Seth Nickell <seth@src.gnome.org> | 2002-06-05 00:36:57 +0000 |
commit | 03f10ccb0ce7c7ef9b946d1d208d23b4479f88f3 (patch) | |
tree | 0fd699af571ab299c520c24943503ce45985119e /capplets | |
parent | 51f9aad29a0ed367f776bd54a06c22cbb711815d (diff) | |
download | gnome-control-center-03f10ccb0ce7c7ef9b946d1d208d23b4479f88f3.tar.gz |
Remove unused CFLAGS;
2002-06-04 Seth Nickell <snickell@stanford.edu>
* Makefile.am:
Remove unused CFLAGS;
* gnome-window-properties.c: (wm_widget_add_wm),
(setup_appearance_option_menu):
Improve handling of option menus, set the default item.
* metacity-window-manager.c: (metacity_set_theme),
(add_themes_from_dir), (metacity_get_theme_list),
(metacity_set_font), (metacity_set_focus_follows_mouse),
(metacity_window_manager_class_init):
Actually do things when the "set" calls are made, improve
intelligence of loading the theme list. Eventually we should
probably do validation on the XML files.
Diffstat (limited to 'capplets')
-rw-r--r-- | capplets/windows/ChangeLog | 20 | ||||
-rw-r--r-- | capplets/windows/Makefile.am | 5 | ||||
-rw-r--r-- | capplets/windows/gnome-window-properties.c | 17 | ||||
-rw-r--r-- | capplets/windows/metacity-window-manager.c | 78 |
4 files changed, 102 insertions, 18 deletions
diff --git a/capplets/windows/ChangeLog b/capplets/windows/ChangeLog index dd19251be..6d6ff144e 100644 --- a/capplets/windows/ChangeLog +++ b/capplets/windows/ChangeLog @@ -1,5 +1,25 @@ 2002-06-04 Seth Nickell <snickell@stanford.edu> + * Makefile.am: + + Remove unused CFLAGS; + + * gnome-window-properties.c: (wm_widget_add_wm), + (setup_appearance_option_menu): + + Improve handling of option menus, set the default item. + + * metacity-window-manager.c: (metacity_set_theme), + (add_themes_from_dir), (metacity_get_theme_list), + (metacity_set_font), (metacity_set_focus_follows_mouse), + (metacity_window_manager_class_init): + + Actually do things when the "set" calls are made, improve + intelligence of loading the theme list. Eventually we should + probably do validation on the XML files. + +2002-06-04 Seth Nickell <snickell@stanford.edu> + * gnome-window-properties.c: (set_wm_change_pending), (wm_selection_changed), (wm_widget_add_wm), (apply_wm), (setup_appearance_option_menu), (appearance_changed), diff --git a/capplets/windows/Makefile.am b/capplets/windows/Makefile.am index 8ef608930..81798bd47 100644 --- a/capplets/windows/Makefile.am +++ b/capplets/windows/Makefile.am @@ -40,9 +40,10 @@ desktopdir = $(GNOMECC_DESKTOP_DIR) Desktop_in_files = window-properties.desktop.in desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop) -INCLUDES = $(GNOMECC_CAPPLETS_CFLAGS) $(DESKTOP_ITEM_CFLAGS) \ +INCLUDES = $(GNOMECC_CAPPLETS_CFLAGS) \ -I $(top_builddir)/libwindow-settings \ - -DGNOME_WINDOW_MANAGER_MODULE_PATH=\""$(libdir)/window-manager-settings"\" + -DGNOME_WINDOW_MANAGER_MODULE_PATH=\""$(libdir)/window-manager-settings"\" \ + -DMETACITY_THEME_DIR=\""$(datadir)/metacity/themes"\" CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) EXTRA_DIST = $(Glade_DATA) $(icons_DATA) $(Desktop_in_files) $(pixmap_DATA) diff --git a/capplets/windows/gnome-window-properties.c b/capplets/windows/gnome-window-properties.c index 782ab6e3c..dd68f5529 100644 --- a/capplets/windows/gnome-window-properties.c +++ b/capplets/windows/gnome-window-properties.c @@ -116,11 +116,11 @@ wm_widget_add_wm (GnomeWindowManager *wm) gtk_widget_show_all (menu_item); gtk_menu_shell_prepend (GTK_MENU_SHELL (wm_menu), menu_item); - wm_menu_window_managers = g_list_prepend (wm_menu_window_managers, wm); + wm_menu_window_managers = g_list_append (wm_menu_window_managers, wm); /* If this is supposed to be the selected window manager, do so */ if (gnome_wm_manager_same_wm (wm, selected_wm)) - gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), 0); + gtk_option_menu_set_history (GTK_OPTION_MENU (option_menu), g_list_length (wm_menu_window_managers) - 1); } static void @@ -192,7 +192,9 @@ setup_appearance_option_menu (GtkWidget *appearance_option_menu, GnomeWindowMana { GtkWidget *menu, *menu_item; GList *themes, *node; - char *theme_name; + const char *theme_name; + char *current_theme_name; + int index = 0; menu = gtk_menu_new (); gtk_widget_show_all (menu); @@ -200,6 +202,8 @@ setup_appearance_option_menu (GtkWidget *appearance_option_menu, GnomeWindowMana themes = gnome_window_manager_get_theme_list (wm); + current_theme_name = gconf_client_get_string (gconf_client, THEME_KEY, NULL); + for (node = themes; node != NULL; node = node->next) { theme_name = (char *)node->data; @@ -207,8 +211,15 @@ setup_appearance_option_menu (GtkWidget *appearance_option_menu, GnomeWindowMana gtk_widget_show_all (menu_item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + if (strcmp (theme_name, current_theme_name) == 0) + gtk_option_menu_set_history (GTK_OPTION_MENU (appearance_option_menu), index); + + index++; } + g_free (current_theme_name); + theme_list = themes; } diff --git a/capplets/windows/metacity-window-manager.c b/capplets/windows/metacity-window-manager.c index 89be3b126..c0955e218 100644 --- a/capplets/windows/metacity-window-manager.c +++ b/capplets/windows/metacity-window-manager.c @@ -1,5 +1,12 @@ +#include <dirent.h> +#include <config.h> +#include <gconf/gconf-client.h> + #include "metacity-window-manager.h" +#define METACITY_THEME_KEY "/apps/metacity/general/theme" +#define METACITY_FONT_KEY "/apps/metacity/general/titlebar_font" +#define METACITY_FOCUS_KEY "/apps/metacity/general/focus_mode" static GnomeWindowManagerClass *parent_class; struct _MetacityWindowManagerPrivate { @@ -15,22 +22,62 @@ window_manager_new (void) return wm; } + static void metacity_set_theme (const char *theme_name) { + gconf_client_set_string (gconf_client_get_default (), + METACITY_THEME_KEY, + theme_name, NULL); +} +static GList * +add_themes_from_dir (GList *current_list, const char *path) +{ + DIR *theme_dir; + struct dirent *entry; + char *theme_file_path; + GList *node; + gboolean found = FALSE; + + theme_dir = opendir (path); + + for (entry = readdir (theme_dir); entry != NULL; entry = readdir (theme_dir)) { + theme_file_path = g_build_filename (path, entry->d_name, "metacity-theme-1.xml", NULL); + + if (g_file_test (theme_file_path, G_FILE_TEST_EXISTS)) { + + for (node = current_list; (node != NULL) && (!found); node = node->next) { + found = (strcmp (node->data, entry->d_name) == 0); + } + + if (!found) { + current_list = g_list_prepend (current_list, g_strdup (entry->d_name)); + } + } + + /*g_free (entry);*/ + g_free (theme_file_path); + } + + closedir (theme_dir); + + return current_list; } static GList * metacity_get_theme_list (void) { GList *themes = NULL; + char *home_dir_themes; + + home_dir_themes = g_build_filename (g_get_home_dir (), ".metacity/themes", NULL); + + themes = add_themes_from_dir (themes, METACITY_THEME_DIR); + themes = add_themes_from_dir (themes, "/usr/share/metacity/themes"); + themes = add_themes_from_dir (themes, home_dir_themes); - themes = g_list_prepend (themes, g_strdup ("Crux")); - themes = g_list_prepend (themes, g_strdup ("Atlanta")); - themes = g_list_prepend (themes, g_strdup ("Butt Ugly XRP")); - themes = g_list_prepend (themes, g_strdup ("ForMyGirlFriend")); - themes = g_list_prepend (themes, g_strdup ("Themes.orgRocks")); + g_free (home_dir_themes); return themes; } @@ -38,19 +85,25 @@ metacity_get_theme_list (void) static void metacity_set_font (const char *font) { - -} - -static gboolean -metacity_get_focus_follows_mouse (void) -{ - return FALSE; + gconf_client_set_string (gconf_client_get_default (), + METACITY_FONT_KEY, + font, NULL); } static void metacity_set_focus_follows_mouse (gboolean focus_follows_mouse) { + const char *focus_mode; + + if (focus_follows_mouse) { + focus_mode = "sloppy"; + } else { + focus_mode = "click"; + } + gconf_client_set_string (gconf_client_get_default (), + METACITY_FOCUS_KEY, + focus_mode, NULL); } @@ -90,7 +143,6 @@ metacity_window_manager_class_init (MetacityWindowManagerClass *class) wm_class->set_theme = metacity_set_theme; wm_class->get_theme_list = metacity_get_theme_list; wm_class->set_font = metacity_set_font; - wm_class->get_focus_follows_mouse = metacity_get_focus_follows_mouse; wm_class->set_focus_follows_mouse = metacity_set_focus_follows_mouse; parent_class = g_type_class_peek_parent (class); |