From 596bc8bdc66a87c8cd5f59b5da8f1081f442c97f Mon Sep 17 00:00:00 2001 From: Lauris Kaplinski Date: Tue, 19 Feb 2002 21:15:21 +0000 Subject: [PATCH] Added simple (but do anyone really need more complex thing?) session management to control-center shell --- control-center/ChangeLog | 12 ++++++++++++ control-center/capplet-dir-view.c | 14 ++++++++++---- control-center/main.c | 30 ++++++++++++++++++++++++++++++ control-center/preferences.c | 14 ++++++++++++++ control-center/preferences.h | 2 ++ 5 files changed, 68 insertions(+), 4 deletions(-) diff --git a/control-center/ChangeLog b/control-center/ChangeLog index 82b8ce9f1..abd15727b 100644 --- a/control-center/ChangeLog +++ b/control-center/ChangeLog @@ -1,5 +1,17 @@ 2002-02-14 Lauris Kaplinski + * preferences.c (gnomecc_preferences_get): Public method to + get pointer of static preferences object + + * main.c (gnome_cc_save_yourself): Session signal handler + (gnome_cc_die): Ditto + (main): Get client and connect session manager signals + + * capplet-dir-view.c (capplet_dir_view_new): Get prefs pointer + via public method + (get_capplet_dir_view): Ditto + (gnomecc_init): Ditto + * capplet-dir-view-tree.c: Remove #undef GTK_DISABLE_DEPRECATED, so if included again we see warnings diff --git a/control-center/capplet-dir-view.c b/control-center/capplet-dir-view.c index 6bf81d990..61b758c80 100644 --- a/control-center/capplet-dir-view.c +++ b/control-center/capplet-dir-view.c @@ -46,8 +46,6 @@ CappletDirViewImpl *capplet_dir_view_impl[] = { static GObjectClass *parent_class; -static GnomeCCPreferences *prefs; - enum { PROP_0, PROP_CAPPLET_DIR, @@ -263,8 +261,11 @@ capplet_dir_view_update_authenticated (CappletDirView *view, gpointer null) CappletDirView * capplet_dir_view_new (void) { + GnomeCCPreferences *prefs; GObject *view; + prefs = gnomecc_preferences_get (); + view = g_object_new (capplet_dir_view_get_type (), "layout", prefs->layout, NULL); @@ -545,6 +546,10 @@ capplet_dir_view_show (CappletDirView *view) static CappletDirView * get_capplet_dir_view (CappletDir *dir, CappletDirView *launcher) { + GnomeCCPreferences *prefs; + + prefs = gnomecc_preferences_get (); + if (prefs->single_window && launcher) return launcher; else @@ -554,8 +559,9 @@ get_capplet_dir_view (CappletDir *dir, CappletDirView *launcher) void gnomecc_init (void) { - prefs = gnomecc_preferences_new (); - gnomecc_preferences_load (prefs); + GnomeCCPreferences *prefs; + + prefs = gnomecc_preferences_get (); g_signal_connect (G_OBJECT (prefs), "changed", (GCallback) prefs_changed_cb, NULL); diff --git a/control-center/main.c b/control-center/main.c index de78cad0f..3cd0829fa 100644 --- a/control-center/main.c +++ b/control-center/main.c @@ -108,11 +108,35 @@ is_nautilus_running (void) return running; } +static gboolean +gnome_cc_save_yourself (GnomeClient *client, gint phase, GnomeSaveStyle save_style, + gboolean shutdown, GnomeInteractStyle interact_style, + gboolean fast, gchar *argv0) +{ + gchar *argv[3]; + gint argc; + + argv[0] = argv0; + argv[1] = "--use-shell"; + argc = 2; + gnome_client_set_clone_command (client, argc, argv); + gnome_client_set_restart_command (client, argc, argv); + + return TRUE; +} + +static void +gnome_cc_die (GnomeClient *client, gpointer data) +{ + gtk_main_quit (); +} + int main (int argc, char **argv) { CappletDirEntry *entry; CappletDir *dir; + GnomeClient *client; bindtextdomain (PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (PACKAGE, "UTF-8"); @@ -136,6 +160,12 @@ main (int argc, char **argv) return -1; capplet_dir_entry_activate (entry, NULL); + client = gnome_master_client (); + g_signal_connect (G_OBJECT (client), "save_yourself", + G_CALLBACK (gnome_cc_save_yourself), argv[0]); + g_signal_connect (G_OBJECT (client), "die", + G_CALLBACK (gnome_cc_die), NULL); + gtk_main (); return 0; diff --git a/control-center/preferences.c b/control-center/preferences.c index 5470e6ee6..f418ea45f 100644 --- a/control-center/preferences.c +++ b/control-center/preferences.c @@ -354,3 +354,17 @@ gnomecc_preferences_get_config_dialog (GnomeCCPreferences *prefs) return prefs_dialog; } + +GnomeCCPreferences * +gnomecc_preferences_get (void) +{ + static GnomeCCPreferences *prefs = NULL; + + if (!prefs) { + prefs = gnomecc_preferences_new (); + gnomecc_preferences_load (prefs); + } + + return prefs; +} + diff --git a/control-center/preferences.h b/control-center/preferences.h index 9d2c43fb8..520197f7c 100644 --- a/control-center/preferences.h +++ b/control-center/preferences.h @@ -69,4 +69,6 @@ void gnomecc_preferences_save (GnomeCCPreferences *prefs); GtkWidget *gnomecc_preferences_get_config_dialog (GnomeCCPreferences *prefs); +GnomeCCPreferences *gnomecc_preferences_get (void); + #endif /* __PREFERNCES_H */