Add a --tab option to switch to a specified tab on startup. (Bug 4797)
authorJulien Lavergne <gilir@ubuntu.com>
Sun, 11 Aug 2013 21:10:53 +0000 (17:10 -0400)
committerDana Jansens <danakj@orodu.net>
Sun, 11 Aug 2013 21:11:14 +0000 (17:11 -0400)
src/main.c
src/obconf.glade

index 7e4a4e7..7aeec27 100644 (file)
 #include <stdlib.h>
 
 GtkWidget *mainwin = NULL;
+GtkWidget *tabstrip = NULL;
 
 GladeXML *glade;
 xmlDocPtr doc;
 xmlNodePtr root;
 RrInstance *rrinst;
 gchar *obc_config_file = NULL;
+gint obc_tab;
 ObtPaths *paths;
 ObtXmlInst *parse_i;
 
@@ -93,8 +95,9 @@ static void print_help()
     g_print(_("  --install ARCHIVE.obt Install the given theme archive and select it\n"));
     g_print(_("  --archive THEME       Create a theme archive from the given theme directory\n"));
     g_print(_("  --config-file FILE    Specify the path to the config file to use\n"));
+    g_print(_("  --tab NUMBER          Switch to tab number NUMBER on startup\n"));
     g_print(_("\nPlease report bugs at %s\n\n"), PACKAGE_BUGREPORT);
-    
+
     exit(EXIT_SUCCESS);
 }
 
@@ -124,7 +127,14 @@ static void parse_args(int argc, char **argv)
                 g_printerr(_("--config-file requires an argument\n"));
             else
                 obc_config_file = argv[++i];
-        } else
+        }
+        else if (!strcmp(argv[i], "--tab")) {
+            if (i == argc - 1) /* no args left */
+                g_printerr(_("--tab requires an argument\n"));
+            else
+                obc_tab = MAX(atoi(argv[++i]) - 1, 0);
+        }
+        else
             obc_theme_install = argv[i];
     }
 }
@@ -282,6 +292,7 @@ int main(int argc, char **argv)
         dock_setup_tab();
 
         mainwin = get_widget("main_window");
+        tabstrip = glade_xml_get_widget(glade, "tabstrip");
 
         if (obc_theme_install)
             theme_install(obc_theme_install);
@@ -329,6 +340,11 @@ void obconf_show_main()
 
     gtk_widget_show_all(mainwin);
 
+    /* Focus on the tab number specified by --tab. */
+    if (obc_tab)
+        gtk_notebook_set_current_page(GTK_NOTEBOOK(tabstrip), obc_tab);
+
+
     sn_d = sn_display_new(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()),
                           NULL, NULL);
 
index fbbba34..6f4090d 100644 (file)
@@ -158,7 +158,7 @@ Javeed Shaikh &lt;syscrash2k@gmail.com&gt;</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
         <child>
-          <widget class="GtkNotebook" id="notebook1">
+          <widget class="GtkNotebook" id="tabstrip">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="tab_pos">left</property>