[tracker] Initial version of tracker-explorer



commit f8a0199f770948dd42881c7370a90ba92e428c47
Author: Rob Taylor <rob taylor codethink co uk>
Date:   Thu Apr 30 20:29:20 2009 +0100

    Initial version of tracker-explorer
    
    tracker-explorer has the aim of becoming a tool to navigate your data, using as-you-type searching.
    This is a very basic initial version that dynamically fills a list of results with RDF objects as you type.

 configure.ac                       |    1 +
 src/Makefile.am                    |    3 +
 src/tracker-explorer/Makefile.am   |   52 +++++++++++++++++++
 src/tracker-explorer/explorer.vala |  100 ++++++++++++++++++++++++++++++++++++
 4 files changed, 156 insertions(+), 0 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 62b9589..b8e15db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1401,6 +1401,7 @@ AC_CONFIG_FILES([
 	src/tracker-preferences/Makefile
 	src/tracker-preferences/tracker-preferences.desktop.in
 	src/tracker-search-tool/Makefile
+	src/tracker-explorer/Makefile
 	src/tracker-search-tool/tracker-search-tool.desktop.in
 	src/tracker-utils/Makefile
 	src/plugins/Makefile
diff --git a/src/Makefile.am b/src/Makefile.am
index eb623a4..9c8212f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,6 +30,8 @@ SUBDIRS = 					\
 	tracker-utils				\
 	tracker-extract				\
 	tracker-miner-fs			\
+	tracker-indexer				\
+	tracker-explorer			\
 	$(build_libtrackergtk)			\
 	$(build_tracker_applet)			\
 	$(build_tracker_search_tool)		\
@@ -46,6 +48,7 @@ DIST_SUBDIRS = 					\
 	tracker-fts				\
 	tracker-store				\
 	tracker-utils				\
+	tracker-explorer			\
 	tracker-extract				\
 	tracker-miner-fs			\
 	libtracker-gtk				\
diff --git a/src/tracker-explorer/Makefile.am b/src/tracker-explorer/Makefile.am
new file mode 100644
index 0000000..9ba0265
--- /dev/null
+++ b/src/tracker-explorer/Makefile.am
@@ -0,0 +1,52 @@
+bin_PROGRAMS = tracker-explorer
+
+tracker_explorer_VALASOURCES = \
+	explorer.vala \
+	$(NULL)
+
+
+tracker_explorer_SOURCES = \
+	$(tracker_explorer_VALASOURCES:.vala=.c) \
+	$(NULL)
+
+tracker_explorer.vala.stamp: $(tracker_explorer_VALASOURCES)
+	$(VALAC) -C -g --pkg dbus-glib-1 --pkg gee-1.0 --pkg gtk+-2.0 $^
+	touch tracker_explorer.vala.stamp
+
+tracker_explorer_CFLAGS = \
+	$(WARN_CFLAGS)						\
+	$(GLIB2_CFLAGS)						\
+	$(GCOV_CFLAGS)						\
+	$(GIO_CFLAGS)						\
+	$(DBUS_CFLAGS)						\
+	$(LIBTRACKERGTK_CFLAGS)					\
+	$(NULL)
+
+tracker_explorer_LDADD = \
+	$(GLIB2_LIBS)						\
+	$(GIO_LIBS)						\
+	$(GCOV_LIBS)						\
+	$(DBUS_LIBS)						\
+	$(LIBTRACKERGTK_LIBS)					\
+	$(NULL)
+
+EXTRA_DIST = \
+	$(tracker_explorer_SOURCES) \
+	$(tracker_explorer_VALASOURCES) \
+	tracker_explorer.vala.stamp \
+	$(NULL)
+
+DISTCLEANFILES = \
+	*.gcno \
+	*.gcda \
+	$(NULL)
+
+MAINTAINERCLEANFILES = \
+	$(tracker_explorer_SOURCES) \
+	tracker_explorer.vala.stamp \
+	$(NULL)
+
+BUILT_SOURCES = \
+	tracker_explorer.vala.stamp \
+	$(NULL)
+
diff --git a/src/tracker-explorer/explorer.vala b/src/tracker-explorer/explorer.vala
new file mode 100644
index 0000000..d7dfd0e
--- /dev/null
+++ b/src/tracker-explorer/explorer.vala
@@ -0,0 +1,100 @@
+using Gtk;
+
+[DBus (name = "org.freedesktop.Tracker.Resources")]
+interface Resources : GLib.Object {
+	public abstract void Delete (string subject, string predicate, string object_) throws DBus.Error;
+	public abstract void Insert (string subject, string predicate, string object_) throws DBus.Error;
+	public abstract void Load (string url) throws DBus.Error;
+	public abstract string[,] SparqlQuery (string query) throws DBus.Error;
+	public abstract void SparqlUpdate (string query) throws DBus.Error;
+}
+
+public class Explorer {
+
+	private Resources tracker;
+	private ListStore listmodel;
+
+	public Explorer() {
+		var conn = DBus.Bus.get (DBus.BusType.SESSION);
+		tracker = (Resources) conn.get_object ("org.freedesktop.Tracker",
+						       "/org/freedesktop/Tracker/Resources",
+						       "org.freedesktop.Tracker.Resources");
+	}
+
+	public void setup() {
+		var window = new Window (WindowType.TOPLEVEL);
+		window.title = "Tracker Explorer";
+		window.set_size_request (300, 400);
+		window.position = WindowPosition.CENTER;
+		window.destroy += Gtk.main_quit;
+
+		var vbox = new VBox(false, 0);
+		window.add(vbox);
+
+		var entry = new Entry();
+		entry.set_text ("Test");
+		entry.changed += entry_changed;
+		vbox.pack_start(entry, false, false, 0);
+
+		var treeview = new TreeView();
+		setup_treeview(treeview);
+
+		var scrolled_window = new ScrolledWindow(null,null);
+		scrolled_window.set_policy (PolicyType.AUTOMATIC, PolicyType.AUTOMATIC);
+		scrolled_window.add_with_viewport(treeview);
+
+		vbox.pack_start(scrolled_window, true, true, 0);
+
+		window.show_all ();
+		window.destroy += Gtk.main_quit;
+	}
+
+	private void setup_treeview (TreeView view) {
+		listmodel = new ListStore (1, typeof (string));
+		view.set_model (listmodel);
+
+		view.insert_column_with_attributes (-1, "URI", new CellRendererText (), "text", 0, null);
+/*
+		var cell = new CellRendererText ();
+		cell.set ("foreground_set", true, null);
+		view.insert_column_with_attributes (-1, "Balance", cell, "text", 2, "foreground", 3, null);
+
+		TreeIter iter;
+		listmodel.append (out iter);
+		listmodel.set (iter, 0, "My Visacard", 1, "card", 2, "102,10", 3, "red", -1);
+
+		listmodel.append (out iter);
+		listmodel.set (iter, 0, "My Mastercard", 1, "card", 2, "10,20", 3, "red", -1);
+*/
+	}
+
+
+	private void entry_changed (Editable editable) {
+		debug ("changed");
+		string query = "SELECT ?s WHERE { ?s fts:match \"%s*\" }".printf(((Entry)editable).text);
+		debug ("Query: %s", query);
+
+		try {
+			var result = tracker.SparqlQuery(query);
+			listmodel.clear();
+			foreach ( var s in result) {
+				debug ("%s", s);
+				TreeIter iter;
+				listmodel.append (out iter);
+				listmodel.set (iter, 0, s, -1);
+			}
+
+		} catch (DBus.Error e) {
+		}
+	}
+
+
+	static int main (string[] args) {
+		Gtk.init (ref args);
+
+		Explorer e = new Explorer();
+		e.setup();
+		Gtk.main ();
+		return 0;
+	}
+}



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