]> spindle.queued.net Git - midori/commitdiff
Implement --help-execute to list available commands
authorChristian Dywan <christian@twotoasts.de>
Wed, 13 Oct 2010 23:18:15 +0000 (01:18 +0200)
committerChristian Dywan <christian@twotoasts.de>
Wed, 13 Oct 2010 23:36:42 +0000 (01:36 +0200)
midori/main.c

index b3ab80a4b7762fe2d9d885903b6ffa37ec1da66e..2a0499affd09cbc74a122054ae83aea86db4b291 100644 (file)
@@ -1527,6 +1527,7 @@ main (int    argc,
     gboolean run;
     gchar* snapshot;
     gboolean execute;
+    gboolean help_execute;
     gboolean version;
     gchar** uris;
     gchar* block_uris;
@@ -1552,6 +1553,8 @@ main (int    argc,
        #endif
        { "execute", 'e', 0, G_OPTION_ARG_NONE, &execute,
        N_("Execute the specified command"), NULL },
+       { "help-execute", 0, 0, G_OPTION_ARG_NONE, &help_execute,
+       N_("List available commands to execute with -e/ --execute"), NULL },
        { "version", 'V', 0, G_OPTION_ARG_NONE, &version,
        N_("Display program version"), NULL },
        { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &uris,
@@ -1636,6 +1639,7 @@ main (int    argc,
     run = FALSE;
     snapshot = NULL;
     execute = FALSE;
+    help_execute = FALSE;
     version = FALSE;
     uris = NULL;
     block_uris = NULL;
@@ -1676,6 +1680,29 @@ main (int    argc,
         return 0;
     }
 
+    if (help_execute)
+    {
+        MidoriBrowser* browser = midori_browser_new ();
+        GtkActionGroup* action_group = midori_browser_get_action_group (browser);
+        GList* actions = gtk_action_group_list_actions (action_group);
+        for (; actions; actions = g_list_next (actions))
+        {
+            GtkAction* action = actions->data;
+            const gchar* name = gtk_action_get_name (action);
+            const gchar* space = "                       ";
+            gchar* padding = g_strndup (space, strlen (space) - strlen (name));
+            gchar* label = katze_strip_mnemonics (gtk_action_get_label (action));
+            const gchar* tooltip = gtk_action_get_tooltip (action);
+            g_print ("%s%s%s%s%s\n", name, padding, label,
+                     tooltip ? ": " : "", tooltip ? tooltip : "");
+            g_free (padding);
+            g_free (label);
+        }
+        g_list_free (actions);
+        gtk_widget_destroy (GTK_WIDGET (browser));
+        return 0;
+    }
+
     #if WEBKIT_CHECK_VERSION (1, 1, 6)
     if (snapshot)
     {