[kupfer] tracker: Provide content for simple .savedSearch files



commit bf35cefd65a2e85106a6ad9d4376a36f8e80b5ac
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Sun Jan 3 18:36:19 2010 +0100

    tracker: Provide content for simple .savedSearch files

 kupfer/plugin/tracker.py |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)
---
diff --git a/kupfer/plugin/tracker.py b/kupfer/plugin/tracker.py
index ecc1261..3b6ec0e 100644
--- a/kupfer/plugin/tracker.py
+++ b/kupfer/plugin/tracker.py
@@ -1,3 +1,6 @@
+import os
+from xml.etree.cElementTree import ElementTree
+
 import gobject
 
 from kupfer.objects import Action, Source, Leaf
@@ -10,6 +13,7 @@ from kupfer import plugin_support
 __kupfer_name__ = _("Tracker")
 __kupfer_sources__ = ("TrackerTagsSource", )
 __kupfer_text_sources__ = ()
+__kupfer_contents__ = ("TrackerQuerySource", )
 __kupfer_actions__ = (
 		"TrackerSearch",
 		"TrackerSearchHere",
@@ -17,7 +21,7 @@ __kupfer_actions__ = (
 		"TrackerRemoveTag",
 	)
 __description__ = _("Tracker desktop search integration")
-__version__ = ""
+__version__ = "2010-01-03"
 __author__ = "Ulrik Sverdrup <ulrik sverdrup gmail com>"
 
 plugin_support.check_dbus_connection()
@@ -101,6 +105,27 @@ class TrackerQuerySource (Source):
 	def get_icon_name(self):
 		return "tracker"
 
+	@classmethod
+	def decorates_type(cls):
+		return FileLeaf
+	@classmethod
+	def decorate_item(cls, leaf):
+		# FIXME: Very simplified .savedSearch parsing, so far we only support
+		# the query, without additional filtering. The simplest form of
+		# .savedSearch file is saved by nautilus as following:
+		# <query version="1.0">
+		#   <text>QUERY GOES HERE</text>
+		# </query>
+
+		if not leaf.object.endswith(".savedSearch"):
+			return None
+		try:
+			et = ElementTree(file=leaf.object)
+			query = et.getroot().find("text").text
+			return cls(query)
+		except Exception:
+			return None
+
 # FIXME: Use dbus for this communication
 def get_tracker_tags(for_file=None):
 	from os import popen



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