]> spindle.queued.net Git - midori/commitdiff
Implement "-a" or "--app" to run web apps
authorChristian Dywan <christian@twotoasts.de>
Mon, 13 Apr 2009 02:38:01 +0000 (04:38 +0200)
committerChristian Dywan <christian@twotoasts.de>
Mon, 13 Apr 2009 02:38:01 +0000 (04:38 +0200)
At the moment this takes an URI and opens a standalone window
with a non-editable toolbar and a statusbar.

midori/main.c
midori/midori-browser.c

index 57480bd8386b84708085d571275474dccc71718f..cab8d0af368e2c8229f69986ace31fe7d1cb4098 100644 (file)
@@ -1322,6 +1322,7 @@ int
 main (int    argc,
       char** argv)
 {
+    gchar* webapp;
     gchar* config;
     gboolean run;
     gboolean version;
@@ -1331,6 +1332,8 @@ main (int    argc,
     GError* error;
     GOptionEntry entries[] =
     {
+       { "app", 'a', 0, G_OPTION_ARG_STRING, &webapp,
+       N_("Run ADDRESS as a web application"), N_("ADDRESS") },
        { "config", 'c', 0, G_OPTION_ARG_FILENAME, &config,
        N_("Use FOLDER as configuration folder"), N_("FOLDER") },
        { "run", 'r', 0, G_OPTION_ARG_NONE, &run,
@@ -1373,6 +1376,7 @@ main (int    argc,
     #endif
 
     /* Parse cli options */
+    webapp = NULL;
     config = NULL;
     run = FALSE;
     version = FALSE;
@@ -1408,6 +1412,29 @@ main (int    argc,
         return 0;
     }
 
+    /* Web Application support */
+    if (webapp)
+    {
+        MidoriBrowser* browser = midori_browser_new ();
+        settings = katze_object_get_object (browser, "settings");
+        g_object_set (settings,
+                      "show-menubar", FALSE,
+                      "show-navigationbar", TRUE,
+                      "toolbar-items", "Back,Forward,ReloadStop,Location",
+                      "show-statusbar", TRUE,
+                      NULL);
+        g_object_unref (settings);
+        g_object_set (browser, "settings", settings, NULL);
+        midori_browser_add_uri (browser, webapp);
+        g_object_set_data (G_OBJECT (browser), "locked", (void*)1);
+        g_signal_connect (browser, "destroy",
+            G_CALLBACK (gtk_main_quit), NULL);
+        gtk_widget_show (GTK_WIDGET (browser));
+        midori_browser_activate_action (browser, "Location");
+        gtk_main ();
+        return 0;
+    }
+
     /* Standalone javascript support */
     if (run)
         return midori_run_script (uris ? *uris : NULL);
index f13820be5835cb1ab89f7474f771071f1ccb89ee..caa81ed6c4ba195934cc067e5717fb23f5fbb6ae 100644 (file)
@@ -1943,6 +1943,10 @@ midori_browser_toolbar_popup_context_menu_cb (GtkWidget*     widget,
     GtkWidget* menu;
     GtkWidget* menuitem;
 
+    /* Unsupported trick used for web app mode */
+    if (g_object_get_data (G_OBJECT (browser), "locked"))
+        return FALSE;
+
     menu = gtk_menu_new ();
     menuitem = sokoke_action_create_popup_menu_item (
         _action_by_name (browser, "Menubar"));