[tracker] tracker-needle: Support command line arguments -V and search criteria



commit 0dfb0240cc0235b5de614fdb2702d8a89df1fafa
Author: Dominique Leuenberger <dimstar opensuse org>
Date:   Thu Jan 20 11:54:17 2011 +0000

    tracker-needle: Support command line arguments -V and search criteria
    
    Fixes GB#639542, tracker-needle doesn't support any argument

 src/tracker-needle/config.vapi         |    4 +-
 src/tracker-needle/tracker-needle.vala |   70 ++++++++++++++++++++++++++++++++
 src/tracker-needle/tracker-stats.vala  |    2 +-
 3 files changed, 73 insertions(+), 3 deletions(-)
---
diff --git a/src/tracker-needle/config.vapi b/src/tracker-needle/config.vapi
index 981d93d..e9b856c 100644
--- a/src/tracker-needle/config.vapi
+++ b/src/tracker-needle/config.vapi
@@ -22,10 +22,10 @@
 namespace Config
 {
 	public const string GETTEXT_PACKAGE;
-	public const string APPNAME;
+	public const string PACKAGE_NAME;
+	public const string PACKAGE_VERSION;
 	public const string APP_PATH;
 	public const string LOCALEDIR;
-	public const string APP_VERSION;
 }
 
 
diff --git a/src/tracker-needle/tracker-needle.vala b/src/tracker-needle/tracker-needle.vala
index 6b6f917..8366069 100644
--- a/src/tracker-needle/tracker-needle.vala
+++ b/src/tracker-needle/tracker-needle.vala
@@ -66,6 +66,22 @@ public class Tracker.Needle {
 		window.show ();
 	}
 
+	public void set_search (string[]? args) {
+		if (args != null) {
+			string text = "";
+
+			foreach (string s in args) {
+				if (text.length > 1)
+					text += " ";
+
+				text += s;
+			}
+
+			debug ("Setting search criteria to: '%s'\n", text);
+			search.set_text (text);
+		}
+	}
+
 	private void setup_ui () {
 		var builder = new Gtk.Builder ();
 
@@ -707,7 +723,58 @@ public class Tracker.Needle {
 	}
 }
 
+static bool print_version = false;
+[CCode (array_length = false, array_null_terminated = true)]
+static string[] search_criteria = null;
+
+const OptionEntry[] options = {
+	{ "version",
+	  'V',
+	  0,
+	  OptionArg.NONE,
+	  ref print_version,
+	  N_("Print version"),
+	  null },
+	{ "", // G_OPTION_REMAINING
+	  0,
+	  0,
+	  OptionArg.STRING_ARRAY,
+	  ref search_criteria,
+	  N_("[SEARCH-CRITERIA]"),
+	  N_("[SEARCH-CRITERIA]") },
+	{ null }
+};
+
 static int main (string[] args) {
+	OptionContext context = new OptionContext (_("Desktop Search user interface using Tracker"));
+
+	try {
+		context.set_help_enabled (true);
+		context.add_main_entries (options, null);
+		context.add_group (Gtk.get_option_group (true));
+		context.parse (ref args);
+	} catch (Error e) {
+		printerr (e.message + "\n\n");
+		printerr (context.get_help (true, null));
+		return 1;
+	}
+
+	if (print_version) {
+		string about = "";
+		string license = "";
+
+		about   += "Tracker " + Config.PACKAGE_VERSION + "\n";
+
+		license += "This program is free software and comes without any warranty.\n";
+		license += "It is licensed under version 2 or later of the General Public ";
+		license += "License which can be viewed at:\n";
+		license += "\n";
+		license += "  http://www.gnu.org/licenses/gpl.txt\n";;
+
+		print ("\n" + about + "\n" + license + "\n");
+		return 0;
+	}
+
 	Gtk.init (ref args);
 
 	Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.LOCALEDIR);
@@ -716,6 +783,9 @@ static int main (string[] args) {
 
 	Tracker.Needle n = new Tracker.Needle ();
 	n.show();
+
+	n.set_search (search_criteria);
+
 	Gtk.main ();
 
 	return 0;
diff --git a/src/tracker-needle/tracker-stats.vala b/src/tracker-needle/tracker-stats.vala
index 7323785..32db1dc 100644
--- a/src/tracker-needle/tracker-stats.vala
+++ b/src/tracker-needle/tracker-stats.vala
@@ -20,7 +20,7 @@
 using Gtk;
 
 // Added to fix #error for GETTEXT_PACKAGE
-private const string b = Config.APPNAME;
+private const string b = Config.PACKAGE_NAME;
 
 [DBus (name = "org.freedesktop.Tracker1.Statistics")]
 interface Statistics : DBusProxy {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]