diff --git a/.cvsignore b/.cvsignore index 258f5a6..7cb67a6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -tracker-0.6.0.tar.bz2 +tracker-0.6.1.tar.bz2 diff --git a/sources b/sources index 548963a..876ed38 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c7b52531533482593ba6260603c175a3 tracker-0.6.0.tar.bz2 +3f706dc73fffa0a7b633b0c0aff6a263 tracker-0.6.1.tar.bz2 diff --git a/tracker-handler.py b/tracker-handler.py deleted file mode 100644 index aba8ac7..0000000 --- a/tracker-handler.py +++ /dev/null @@ -1,285 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# This handler was originaly created by Mikkel Kamstrup (c) 2006 and updated by Eugenio Cutolo (eulin) -# -# This program can be distributed under the terms of the GNU GPL version 2 or later. -# See the file COPYING. -# - -import gnome -import gobject -from gettext import gettext as _ - -import re, cgi -import os.path -import dbus - -import deskbar -from deskbar.Handler import SignallingHandler -from deskbar.Match import Match - -#Edit this var for change the numer of output results -MAX_RESULTS = 10 - -def _check_requirements (): - try: - import dbus - try : - if getattr(dbus, 'version', (0,0,0)) >= (0,41,0): - import dbus.glib - - # Check that Tracker can be started via dbus activation, we will have trouble if it's not - bus = dbus.SessionBus() - proxy_obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') - dbus_iface = dbus.Interface(proxy_obj, 'org.freedesktop.DBus') - activatables = dbus_iface.ListActivatableNames() - if not "org.freedesktop.Tracker" in activatables: - return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, "Tracker is not activatable via dbus", None) - - except: - return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, "Python dbus.glib bindings not found.", None) - return (deskbar.Handler.HANDLER_IS_HAPPY, None, None) - except: - return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, "Python dbus bindings not found.", None) - -HANDLERS = { - "TrackerSearchHandler" : { - "name": "Search for files using Tracker Search Tool", - "description": _("Search all of your documents (using Tracker), as you type"), - "requirements" : _check_requirements, - }, - "TrackerLiveSearchHandler" : { - "name": "Search for files using Tracker(live result)", - "description": _("Search all of your documents (using Tracker live), as you type"), - "requirements" : _check_requirements, - "categories" : { - "develop" : { - "name": _("Development Files"), - }, - "music" : { - "name": _("Music"), - }, - "images" : { - "name": _("Images"), - }, - "videos" : { - "name": _("Videos"), - }, - }, - }, -} - -#For now description param it's not used -TYPES = { - "Conversations" : { - "description": (_("See conversations %s") % "%(publisher)s" ) + "\n%(base)s", - "category": "conversations", - }, - "Email" : { - "description": (_("Email from %s") % "%(publisher)s" ) + "\n%(title)s", - "category": "emails", - "action" : "evolution %(uri)s", - "icon" : "stock_mail", - }, - "Music" : { - "description": _("Listen to music %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "music", - }, - "Documents" : { - "description": _("See document %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "documents", - }, - "Development Files" : { - "description": _("Open file %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "develop", - }, - "Images" : { - "description": _("View image %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "images", - }, - "Videos" : { - "description": _("Watch video %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "videos", - }, - "Other Files" : { - "description": _("Open file %s\nin %s") % ("%(base)s", "%(dir)s"), - "category": "files", - }, - "Extra" : { - "description": _("See more result with t-s-t"), - }, -} - - -#STATIC HANDLER--------------------------------- - -class TrackerFileMatch (Match): - def __init__(self, backend, **args): - deskbar.Match.Match.__init__(self, backend, **args) - - def action(self, text=None): - gobject.spawn_async(["tracker-search-tool", self.name], flags=gobject.SPAWN_SEARCH_PATH) - - def get_verb(self): - return _("Search "+self.name+" with Tracker Search Tool") - - def get_category (self): - return "actions" - -class TrackerSearchHandler(deskbar.Handler.Handler): - def __init__(self): - deskbar.Handler.Handler.__init__(self, ("system-search", "tracker")) - - def query(self, query): - return [TrackerFileMatch(self, name=query)] - -#LIVE HANDLER--------------------------------- - -class TrackerMoreMatch (Match): - def __init__(self, backend, qstring, category="files", **args): - Match.__init__(self, backend, **args) - self._icon = deskbar.Utils.load_icon("tracker") - self.qstring = qstring - self.category = category - - def get_verb(self): - return TYPES["Extra"]["description"] - - def get_category (self): - try: - return TYPES[self.category]["category"] - except: - pass - - def action(self, text=None): - gobject.spawn_async(["tracker-search-tool", self.qstring], flags=gobject.SPAWN_SEARCH_PATH) - -class TrackerLiveFileMatch (Match): - def __init__(self, handler,result=None, **args): - Match.__init__ (self, handler,name=result["name"], **args) - - self.result = result - self.fullpath = result['uri'] - self.init_names() - - self.result["base"] = self.base - self.result["dir"] = self.dir - - # Set the match icon - try: - self._icon = deskbar.Utils.load_icon(TYPES[result['type']]["icon"]) - except: - self._icon = deskbar.Utils.load_icon_for_file(result['uri']) - - print result - - def get_name(self, text=None): - try: - return self.result - except: - pass - - def get_verb(self): - try: - return TYPES[self.result["type"]]["description"] - except: - return _("Open file %s\nin %s") % ("%(base)s", "%(dir)s") - - def get_hash(self, text=None): - try: - return self.result['uri'] - except: - pass - - def action(self, text=None): - if TYPES[self.result["type"]].has_key("action"): - cmd = TYPES[self.result["type"]]["action"] - cmd = map(lambda arg : arg % self.result, cmd.split()) # we need this to handle spaces correctly - print "Opening Tracker hit with command:", cmd - try: - # deskbar >= 2.17 - deskbar.Utils.spawn_async(cmd) - except AttributeError: - # deskbar <= 2.16 - gobject.spawn_async(args, flags=gobject.SPAWN_SEARCH_PATH) - else: - try: - # deskbar >= 2.17 - deskbar.Utils.url_show ("file://"+cgi.escape(self.result['uri'])) - except AttributeError: - gnome.url_show("file://"+cgi.escape(self.result['uri'])) - print "Opening Tracker hit:", self.result['uri'] - - def get_category (self): - try: - return TYPES[self.result["type"]]["category"] - except: - return "files" - - def init_names (self): - #print "Parsing «%r»" % self.fullpath - dirname, filename = os.path.split(self.fullpath) - if filename == '': #We had a trailing slash - dirname, filename = os.path.split(dirname) - - #Reverse-tilde-expansion - home = os.path.normpath(os.path.expanduser('~')) - regexp = re.compile(r'^%s(/|$)' % re.escape(home)) - dirname = re.sub(regexp, r'~\1', dirname) - - self.dir = dirname - self.base = filename - - -class TrackerLiveSearchHandler(SignallingHandler): - def __init__(self): - SignallingHandler.__init__(self, "tracker") - bus = dbus.SessionBus() - self.tracker = bus.get_object('org.freedesktop.Tracker','/org/freedesktop/tracker') - self.search_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Search') - self.keywords_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Keywords') - self.files_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Files') - self.set_delay (500) - - def recieve_hits (self, qstring, hits, max): - matches = [] - self.results = {} - - for info in hits: - output = {} - output['name'] = os.path.basename(info[0]) - output['uri'] = str(cgi.escape(info[0])) - output['type'] = info[1] - if TYPES.has_key(output['type']) == 0: - output['type'] = "Other Files" - try: - self.results[output['type']].append(output) - except: - self.results[output['type']] = [output] - - if output["type"] == "Email": - output["title"] = cgi.escape(info[3]) - output["publisher"] = cgi.escape(info[4]) - - for key in self.results.keys(): - for res in self.results[key][0:MAX_RESULTS]: - matches.append(TrackerLiveFileMatch(self,res)) - #if len(self.results[key]) > MAX_RESULTS: - # matches.append( TrackerMoreMatch(self,qstring,key) ) - self.emit_query_ready(qstring, matches) - print "Tracker response for %s, - %s hits returned, %s shown" % (qstring, len(hits), len(matches)) - - def recieve_error (self, error): - print "*** Tracker dbus error:", error - - def query (self, qstring, max): - if qstring.count("tag:") == 0: - self.search_iface.TextDetailed (-1, "Files", qstring, 0,10, reply_handler=lambda hits : self.recieve_hits(qstring, hits, max), error_handler=self.recieve_error) - self.search_iface.TextDetailed (-1, "Emails", qstring, 0,10, reply_handler=lambda hits : self.recieve_hits(qstring, hits, max), error_handler=self.recieve_error) - print "Tracker query:", qstring - else: - if self.tracker.GetVersion() == 502: - self.search_iface.Query(-1,"Files",["File.Format"],"",qstring.replace("tag:",""),"",False,0,100, reply_handler=lambda hits : self.recieve_hits(qstring, hits, max), error_handler=self.recieve_error) - elif self.tracker.GetVersion() == 503: - self.search_iface.Query(-1,"Files",["File:Mime"],"",qstring.replace("tag:",""),"",False,0,100, reply_handler=lambda hits : self.recieve_hits(qstring, hits, max), error_handler=self.recieve_error) - print "Tracker tag query:", qstring.replace("tag:","") diff --git a/tracker.spec b/tracker.spec index db47d19..a3e8215 100644 --- a/tracker.spec +++ b/tracker.spec @@ -1,15 +1,14 @@ Summary: An object database, tag/metadata database, search tool and indexer Name: tracker -Version: 0.6.0 -Release: 3%{?dist} +Version: 0.6.1 +Release: 1%{?dist} License: GPLv2+ Group: Applications/System URL: http://www.gnome.org/~jamiemcc/tracker/ -Source0: http://www.gnome.org/~jamiemcc/tracker/tracker-0.6.0.tar.bz2 -Source1: tracker-handler.py +Source0: http://www.gnome.org/~jamiemcc/tracker/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gmime-devel, poppler-devel, gettext -BuildRequires: gnome-desktop-devel, gamin-devel +BuildRequires: gnome-desktop-devel, gamin-devel, exempi-devel BuildRequires: libexif-devel, libgsf-devel, gstreamer-devel BuildRequires: desktop-file-utils, intltool, deskbar-applet %if "%fedora" >= "6" @@ -55,7 +54,6 @@ GNOME libraries %prep %setup -q -cp -pr %{SOURCE1} python/deskbar-handler/ # remove shebangs from the python files as none should be executable scripts sed -e '/^#!\//,1 d' -i python/deskbar-handler/*.py @@ -131,6 +129,9 @@ rm -rf %{buildroot} %{_datadir}/autostart/*.desktop %changelog +* Wed Aug 08 2007 Deji Akingunola - 0.6.1-1 +- Update to 0.6.1 + * Fri Aug 03 2007 Deji Akingunola - 0.6.0-3 - License tag update