summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2011-04-06 20:47:16 -0400
committerShaun McCance <shaunm@gnome.org>2011-04-06 20:47:16 -0400
commit4d67a3d4e7a0fab9d6d647a9f3f2f5843cc41aab (patch)
treeea242b6e23e4d2a62ea5a1f66761d30bec506cb1
parentbfef3b50fa98e99274155a7057e3c75388eb8512 (diff)
downloadyelp-4d67a3d4e7a0fab9d6d647a9f3f2f5843cc41aab.tar.gz
yelp-application.c: Reimplement --editor-mode
-rw-r--r--src/yelp-application.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/yelp-application.c b/src/yelp-application.c
index 3159fda7..d128a5be 100644
--- a/src/yelp-application.c
+++ b/src/yelp-application.c
@@ -67,6 +67,9 @@ static void yelp_application_iface_init (YelpBookmarksInterface *
static void yelp_application_dispose (GObject *object);
static void yelp_application_finalize (GObject *object);
+static gboolean yelp_application_cmdline (GApplication *app,
+ gchar ***arguments,
+ gint *exit_status);
static void yelp_application_startup (GApplication *app);
static void yelp_application_open (GApplication *app,
GFile **files,
@@ -105,6 +108,8 @@ struct _YelpApplicationPrivate {
GSettingsBackend *backend;
GSettings *gsettings;
GHashTable *docsettings;
+
+ gboolean editor_mode;
};
static const GtkActionEntry action_entries[] = {
@@ -135,6 +140,7 @@ yelp_application_class_init (YelpApplicationClass *klass)
GApplicationClass *application_class = G_APPLICATION_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ application_class->local_command_line = yelp_application_cmdline;
application_class->startup = yelp_application_startup;
application_class->activate = yelp_application_activate;
application_class->open = yelp_application_open;
@@ -191,6 +197,30 @@ yelp_application_finalize (GObject *object)
}
+static gboolean
+yelp_application_cmdline (GApplication *app,
+ gchar ***arguments,
+ gint *exit_status)
+{
+ gint i, j;
+ gchar **argv;
+
+ argv = *arguments;
+
+ for (i = 0; argv[i]; i++) {
+ if (g_str_equal (argv[i], "--editor-mode")) {
+ YelpApplicationPrivate *priv = GET_PRIV (app);
+ priv->editor_mode = TRUE;
+ g_free (argv[i]);
+ for (j = i; argv[j]; j++)
+ argv[j] = argv[j + 1];
+ }
+ }
+
+ return G_APPLICATION_CLASS (yelp_application_parent_class)
+ ->local_command_line (app, arguments, exit_status);
+}
+
static void
yelp_application_startup (GApplication *application)
{
@@ -206,6 +236,8 @@ yelp_application_startup (GApplication *application)
->startup (application);
settings = yelp_settings_get_default ();
+ if (priv->editor_mode)
+ yelp_settings_set_editor_mode (settings, TRUE);
priv->windows_by_document = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,