[Xfce4-commits] <gigolo:master> Add new command-line option to auto connect bookmarks

Enrico Tröger noreply at xfce.org
Sun May 6 16:44:01 CEST 2012


Updating branch refs/heads/master
         to 4dfba2d40e3d5bd287fa472908484b5727b4131a (commit)
       from e800fd648fa1def4e8d0c5bf91bc6912699b28e0 (commit)

commit 4dfba2d40e3d5bd287fa472908484b5727b4131a
Author: Enrico Tröger <enrico at xfce.org>
Date:   Sun May 6 16:43:03 2012 +0200

    Add new command-line option to auto connect bookmarks

 gigolo.1.in |    2 ++
 src/main.c  |   40 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/gigolo.1.in b/gigolo.1.in
index e5efe6b..01a2da5 100644
--- a/gigolo.1.in
+++ b/gigolo.1.in
@@ -13,6 +13,8 @@ bookmarks to such.
 Homepage: http://www.uvena.de/gigolo/
 .SH "OPTIONS"
 If called without any arguments, the Gigolo main window is shown.
+.IP "\fB-a\fP, \fB\-\-auto\-connect\fP         " 10
+Connect all bookmarks which are marked as 'auto connect' and exit.
 .IP "\fB-i\fP, \fB\-\-new-instance\fP         " 10
 Don't find and show an already running instance of Gigolo, instead
 force opening a new instance.
diff --git a/src/main.c b/src/main.c
index 903ebae..3a3b705 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,10 +39,12 @@
 static gboolean show_version = FALSE;
 static gboolean list_schemes = FALSE;
 static gboolean new_instance = FALSE;
+static gboolean auto_connect = FALSE;
 extern gboolean verbose_mode;
 
 static GOptionEntry cli_options[] =
 {
+	{ "auto-connect", 'a', 0, G_OPTION_ARG_NONE, &auto_connect, N_("Connect all bookmarks marked as 'auto connect' and exit"), NULL },
 	{ "new-instance", 'i', 0, G_OPTION_ARG_NONE, &new_instance, N_("Ignore running instances, enforce opening a new instance"), NULL },
 	{ "list-schemes", 'l', 0, G_OPTION_ARG_NONE, &list_schemes, N_("Print a list of supported URI schemes"), NULL },
 	{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose_mode, N_("Be verbose"), NULL },
@@ -51,6 +53,37 @@ static GOptionEntry cli_options[] =
 };
 
 
+static gboolean auto_connect_bookmarks(void)
+{
+	GigoloBackendGVFS *backend_gvfs;
+	GigoloSettings *settings;
+	GigoloBookmarkList *bookmarks;
+	GigoloBookmark *bm;
+	guint i;
+	gchar *uri;
+
+	backend_gvfs = gigolo_backend_gvfs_new();
+	settings = gigolo_settings_new();
+	bookmarks = gigolo_settings_get_bookmarks(settings);
+
+	for (i = 0; i < bookmarks->len; i++)
+	{
+		bm = g_ptr_array_index(bookmarks, i);
+		if (gigolo_bookmark_get_autoconnect(bm) && ! gigolo_bookmark_get_should_not_autoconnect(bm))
+		{
+			uri = gigolo_bookmark_get_uri_escaped(bm);
+			/* Mounting happens asynchronously here and so we don't wait until it is finished
+			 * nor de we get any feedback or errors.
+			 * TODO make this synchronous(looping and checking) and check for errors */
+			gigolo_backend_gvfs_mount_uri(backend_gvfs, uri, NULL, NULL, FALSE);
+			g_free(uri);
+		}
+	}
+
+	return TRUE;
+}
+
+
 static void print_supported_schemes(void)
 {
 	const gchar* const *supported;
@@ -102,6 +135,13 @@ gint main(gint argc, gchar** argv)
 		return EXIT_SUCCESS;
 	}
 
+	if (auto_connect)
+	{
+		gboolean ret = auto_connect_bookmarks();
+
+		return ret ? EXIT_SUCCESS : EXIT_FAILURE;
+	}
+
 	if (! new_instance)
 	{
 		gis = gigolo_single_instance_new();


More information about the Xfce4-commits mailing list