Switch to side-by-side view

--- a
+++ b/src/desktop/unity-lens-recoll/bin/unity-recoll-daemon.in
@@ -0,0 +1,87 @@
+#! /usr/bin/python
+
+# Set Python path up to load from the source code dir if we're running out
+# of the source tree, otherwise point at the installed code
+import sys, os
+execpath = os.path.dirname(__file__)
+if os.path.isfile(os.path.join(execpath, "..", "configure.ac")):
+    print "Running from source tree"
+    sys.path.insert (0, os.path.join(execpath, ".."))
+else:
+    sys.path.insert (0, os.path.join("@DATADIR@", "unity-lens-recoll"))
+del execpath
+
+import recollscope.rclsearch
+from gi.repository import GLib, GObject, Gio
+
+# NOTE: If we used the normal 'dbus' module for Python we'll get
+#       slightly odd results because it uses a default connection
+#       to the session bus that is different from the default connection
+#       GDBus (hence libunity) will use. Meaning that the daemon name
+#       will be owned by a connection different from the one all our
+#       Dee + Unity magic is working on...
+#       Still waiting for nice GDBus bindings to land:
+#                        http://www.piware.de/2011/01/na-zdravi-pygi/
+
+#
+# The primary bus name we grab *must* match what we specify in our .lens file
+#
+BUS_NAME = "org.recoll.UnityLensRecoll.Lens"
+
+session_bus_connection = Gio.bus_get_sync (Gio.BusType.SESSION, None)
+session_bus = Gio.DBusProxy.new_sync (session_bus_connection, 0, None,
+                                      'org.freedesktop.DBus',
+                                      '/org/freedesktop/DBus',
+                                      'org.freedesktop.DBus', None)
+result = session_bus.call_sync('RequestName',
+                               GLib.Variant ("(su)", (BUS_NAME, 0x4)),
+                               0, -1, None)
+	                               
+# Unpack variant response with signature "(u)". 1 means we got it.
+result = result.unpack()[0]
+
+if result != 1 :
+  print >> sys.stderr, "Failed to own name %s. Bailing out." % BUS_NAME
+  raise SystemExit (1)
+
+def create_lens ():
+	# The path for the Lens *must* also match the one in our .lens file
+	from gi.repository import Unity
+	lens = Unity.Lens.new ("/org/recoll/unitylensrecoll/lens", "recoll")
+	
+	lens.props.search_hint = "Recoll search string"
+	lens.props.visible = True;
+	lens.props.search_in_global = False;
+	
+	# Populate categories
+	cats = []
+	cats.append (Unity.Category.new ("Documents",
+	                                 Gio.ThemedIcon.new("document"),
+	                                 Unity.CategoryRenderer.HORIZONTAL_TILE))
+	lens.props.categories = cats
+	
+
+	# Populate filters
+	lens.props.filters = []
+
+        # We should get the categories from the config but the python
+        # module currently has no code for this.
+	filter = Unity.RadioOptionFilter.new("rclcat", "Category",
+                                             Gio.ThemedIcon.new(""), False)
+
+        filter.add_option("text", "Text", None);
+        filter.add_option("spreadsheet", "Spreadsheet", None);
+        filter.add_option("presentation", "Presentation", None);
+        filter.add_option("media", "Media", None);
+        filter.add_option("message", "Message", None);
+        filter.add_option("other", "Other", None);
+
+        lens.props.filters.append(filter)
+	return lens
+
+lens = create_lens ()
+lens.add_local_scope (recollscope.rclsearch.Scope())
+# add more local scopes here (remote dbus scopes added automagically)
+lens.export ()
+
+GObject.MainLoop().run()