From d7494c8f160b12e1199b06dcafdc8ff01b24b796 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 4 Mar 2010 15:26:59 -0500 Subject: Shell and UI manager cleanups. Replace the EVO_EXPRESS environment variable with an --express command line option. (Note, this adds a new translatable string for --help.) Add an EUIManager class with an "express-mode" property and custom load functions that use our new "express" preprocessor. This replaces the UI manager functions in e-utils.c. (Also going to see if I can get GTK+ to add an "add_ui_from_string" method to GtkUIManagerClass that we can override. Then we could just call gtk_ui_manager_add_ui_from_string() and the preprocessor would automatically do its thing and chain up.) Add an "express-mode" read-only GObject property to EShell. Add e_shell_configure_ui_manager() to e-shell-utils.c. For now this just creates a one-way property binding: EShell:express-mode -> EUIManager:express-mode Call this immediately after e_ui_manager_new(). (EUIManager can't do this itself because it lives too low in the dependency hierarchy and doesn't know about EShell.) --- shell/main.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'shell/main.c') diff --git a/shell/main.c b/shell/main.c index 29affc8c72..4848ef92b8 100644 --- a/shell/main.c +++ b/shell/main.c @@ -77,6 +77,7 @@ #endif /* Command-line options. */ +static gboolean express_mode = FALSE; static gboolean start_online = FALSE; static gboolean start_offline = FALSE; static gboolean setup_only = FALSE; @@ -322,6 +323,8 @@ static GOptionEntry entries[] = { N_("Start in offline mode"), NULL }, { "online", '\0', 0, G_OPTION_ARG_NONE, &start_online, N_("Start in online mode"), NULL }, + { "express", '\0', 0, G_OPTION_ARG_NONE, &express_mode, + N_("Start in \"express\" mode"), NULL }, #ifdef KILL_PROCESS_CMD { "force-shutdown", '\0', 0, G_OPTION_ARG_NONE, &force_shutdown, N_("Forcibly shut down Evolution"), NULL }, @@ -412,11 +415,12 @@ create_default_shell (void) GError *error = NULL; client = gconf_client_get_default (); - key = "/apps/evolution/shell/start_offline"; /* Requesting online or offline mode from the command-line * should be persistent, just like selecting it in the UI. */ + key = "/apps/evolution/shell/start_offline"; + if (start_online) { online = TRUE; gconf_client_set_bool (client, key, FALSE, &error); @@ -433,7 +437,19 @@ create_default_shell (void) if (error != NULL) { g_warning ("%s", error->message); - g_error_free (error); + g_clear_error (&error); + } + + /* Determine whether to run Evolution in "express" mode. */ + + key = "/apps/evolution/shell/express_mode"; + + if (!express_mode) + express_mode = gconf_client_get_bool (client, key, &error); + + if (error != NULL) { + g_warning ("%s", error->message); + g_clear_error (&error); } shell = g_object_new ( @@ -441,6 +457,7 @@ create_default_shell (void) "name", "org.gnome.Evolution", "geometry", geometry, "module-directory", EVOLUTION_MODULEDIR, + "express-mode", express_mode, "online", online, NULL); -- cgit v1.2.3