aboutsummaryrefslogtreecommitdiffstats
path: root/shell/main.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-03-05 04:26:59 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-03-14 09:53:17 +0800
commitd7494c8f160b12e1199b06dcafdc8ff01b24b796 (patch)
tree28e4c85c915c770a4e7bfb48ede7f686d18da206 /shell/main.c
parent51cbd483d163138c3b570b01f0921f767ca64a7e (diff)
downloadgsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar.gz
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar.bz2
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar.lz
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar.xz
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.tar.zst
gsoc2013-evolution-d7494c8f160b12e1199b06dcafdc8ff01b24b796.zip
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.)
Diffstat (limited to 'shell/main.c')
-rw-r--r--shell/main.c21
1 files changed, 19 insertions, 2 deletions
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);