rpms/tracker/FC-6 tracker-handler.py, NONE, 1.1 .cvsignore, 1.5, 1.6 sources, 1.5, 1.6 tracker.spec, 1.11, 1.12

Deji Akingunola (deji) fedora-extras-commits at redhat.com
Tue Jul 24 03:31:06 UTC 2007


Author: deji

Update of /cvs/extras/rpms/tracker/FC-6
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv848

Modified Files:
	.cvsignore sources tracker.spec 
Added Files:
	tracker-handler.py 
Log Message:
* Mon Jul 23 2007 Deji Akingunola <dakingun at gmail.com> - 0.6.0-1
- Update to 0.6.0
- Manually specify path to deskbar-applet handler directory, koji can't find it



--- NEW FILE tracker-handler.py ---
#!/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") % "<i>%(publisher)s</i>" ) + "\n<b>%(base)s</b>",
		"category": "conversations",
		},
	"Email"	: {
		"description": (_("Email from %s") % "<i>%(publisher)s</i>" ) + "\n<b>%(title)s</b>",
		"category": "emails",
		"action" : "evolution %(uri)s",
		"icon" : "stock_mail",
		},
	"Music"	: {
		"description": _("Listen to music %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"category": "music",
		},	
	"Documents" 	: {
		"description": _("See document %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"category": "documents",
		},
	"Development Files" 	: {
		"description": _("Open file %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"category": "develop",
		},
	"Images" 		: { 
		"description": _("View image %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"category": "images",
		},
	"Videos"	: {
		"description": _("Watch video  %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"category": "videos",
		},
	"Other Files"	: {
		"description": _("Open file %s\nin %s")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>"),
		"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 <b>"+self.name+"</b> 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")	% ("<b>%(base)s</b>", "<i>%(dir)s</i>")
	
	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:","")


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/tracker/FC-6/.cvsignore,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- .cvsignore	27 Jan 2007 19:23:19 -0000	1.5
+++ .cvsignore	24 Jul 2007 03:30:33 -0000	1.6
@@ -1 +1 @@
-tracker-0.5.4.tar.gz
+tracker-0.6.0.tar.bz2


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/tracker/FC-6/sources,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- sources	27 Jan 2007 19:23:19 -0000	1.5
+++ sources	24 Jul 2007 03:30:33 -0000	1.6
@@ -1 +1 @@
-724208e1b2d235148499672b44181298  tracker-0.5.4.tar.gz
+c7b52531533482593ba6260603c175a3  tracker-0.6.0.tar.bz2


Index: tracker.spec
===================================================================
RCS file: /cvs/extras/rpms/tracker/FC-6/tracker.spec,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- tracker.spec	30 Mar 2007 05:57:08 -0000	1.11
+++ tracker.spec	24 Jul 2007 03:30:33 -0000	1.12
@@ -1,20 +1,21 @@
-Summary: An object database, tag/metadata database, search tool and indexer
-Name: tracker
-Version: 0.5.4
-Release: 5%{?dist}
-License: GPL
-Group: Applications/System
-URL: http://www.gnome.org/~jamiemcc/tracker/
-Source0: http://www.gnome.org/~jamiemcc/tracker/tracker-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: gmime-devel, poppler-devel, gettext, file
-BuildRequires: gnome-desktop-devel, gamin-devel
-BuildRequires: libexif-devel, libgsf-devel, gstreamer-devel
-BuildRequires: desktop-file-utils, intltool, deskbar-applet
+Summary:	An object database, tag/metadata database, search tool and indexer
+Name:		tracker
+Version:	0.6.0
+Release:	1%{?dist}
+License:	GPL
+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
+BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires:	gmime-devel, poppler-devel, gettext
+BuildRequires:	gnome-desktop-devel, gamin-devel
+BuildRequires:	libexif-devel, libgsf-devel, gstreamer-devel
+BuildRequires:	desktop-file-utils, intltool, deskbar-applet
 %if "%fedora" >= "6"
-BuildRequires: sqlite-devel
+BuildRequires:	sqlite-devel
 %else
-BuildRequires: dbus-devel, dbus-glib
+BuildRequires:	dbus-devel, dbus-glib
 %endif
 
 %description
@@ -33,20 +34,20 @@
 all types of files and other first class objects
 
 %package devel
-Summary: Headers for developing programs that will use %{name}
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: pkgconfig
-Requires: dbus-glib-devel
+Summary:	Headers for developing programs that will use %{name}
+Group:		Development/Libraries
+Requires:	%{name} = %{version}-%{release}
+Requires:	pkgconfig
+Requires:	dbus-glib-devel
 
 %description devel
 This package contains the static libraries and header files needed for
 developing with tracker
 
 %package search-tool
-Summary: Tracker search tool(s)
-Group: User Interface/Desktops
-Requires: %{name} = %{version}-%{release}
+Summary:	Tracker search tool(s)
+Group:		User Interface/Desktops
+Requires:	%{name} = %{version}-%{release}
 
 %description search-tool
 Graphical frontend to tracker search facilities. This has dependencies on
@@ -54,36 +55,37 @@
 
 %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
 
 %build
 %if "%fedora" >= "6"
-%configure --disable-static --enable-external-sqlite
+%configure --disable-static --enable-external-sqlite	\
+	--enable-preferences --enable-deskbar-applet	\
+	--with-deskbar-applet-handler-dir=%{_libdir}/deskbar-applet/handlers
 %else
-%configure --disable-static
+%configure --disable-static --enable-preferences	\
+	--enable-deskbar-applet
 %endif
 # Disable rpath
 sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
 sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 
-# make %{?_smp_mflags} fails
-make
+make %{?_smp_mflags}
 
-										
 %install
 rm -rf %{buildroot}
-make DESTDIR=%{buildroot}	\
-	DESKBAR_HANDLER_DIR=%{_libdir}/deskbar-applet/handlers install
+make DESTDIR=%{buildroot} install
 
 # Add an autostart for trackerd (for KDE)
 mkdir -p %{buildroot}%{_datadir}/autostart
 cp -pr trackerd.desktop %{buildroot}%{_datadir}/autostart/
 
-desktop-file-install --delete-original                   \
-        --vendor="fedora"                           \
-        --dir=%{buildroot}%{_datadir}/applications   \
-        %{buildroot}%{_datadir}/applications/%{name}-search-tool.desktop
+desktop-file-install --delete-original			\
+	--vendor="fedora"				\
+	--dir=%{buildroot}%{_datadir}/applications	\
+	%{buildroot}%{_datadir}/applications/%{name}-search-tool.desktop
 
 rm -rf %{buildroot}%{_libdir}/*.la
 
@@ -99,39 +101,39 @@
 %files -f %{name}.lang
 %defattr(-, root, root, -)
 %doc AUTHORS ChangeLog COPYING NEWS README
-%{_bindir}/htmless
 %{_bindir}/o3totxt
 %{_bindir}/tracker*
+%exclude %{_bindir}/tracker-preferences
 %exclude %{_bindir}/tracker-search-tool
 %exclude %{_bindir}/tracker-thumbnailer
 %{_datadir}/tracker/
 %{_datadir}/dbus-1/services/tracker.service
 %{_libdir}/*.so.*
 %{_libdir}/tracker/
-%{_mandir}/man1/tracker*.1.gz
-%{_datadir}/autostart/*.desktop
+%{_mandir}/*/tracker*.gz
 %{_sysconfdir}/xdg/autostart/trackerd.desktop
 
 %files devel
 %defattr(-, root, root, -)
 %{_includedir}/tracker*
+%{_includedir}/libtracker-gtk/
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/*.pc
 
 %files search-tool
 %defattr(-, root, root, -)
+%{_bindir}/tracker-preferences
 %{_bindir}/tracker-search-tool
 %{_bindir}/tracker-thumbnailer
-%{_datadir}/pixmaps/tracker/
-%{_datadir}/applications/*.desktop
 %{_libdir}/deskbar-applet/handlers/*.py*
+%{_datadir}/icons/*/*/apps/tracker.*
+%{_datadir}/applications/*.desktop
+%{_datadir}/autostart/*.desktop
 
 %changelog
-* Fri Mar 30 2007 Deji Akingunola <dakingun at gmail.com> - 0.5.4-5
-- Ship both autostart desktop files in the main package (BZ #233323)
-
-* Tue Feb 13 2007 Deji Akingunola <dakingun at gmail.com> - 0.5.4-3
-- Package the deskbar plugin properly (BZ #228308)
+* Mon Jul 23 2007 Deji Akingunola <dakingun at gmail.com> - 0.6.0-1
+- Update to 0.6.0
+- Manually specify path to deskbar-applet handler directory, koji can't find it
 
 * Mon Jan 29 2007 Deji Akingunola <dakingun at gmail.com> - 0.5.4-2
 - Split out tracker-search-tool sub-packages, for the GUI facility
@@ -146,11 +148,9 @@
 
 * Mon Nov 27 2006 Deji Akingunola <dakingun at gmail.com> - 0.5.2-2
 - Apply patch on Makefile.am instead of Makefile.in
+- Add libtool to BR
 
-* Tue Nov 21 2006 Deji Akingunola <dakingun at gmail.com> - 0.5.2-1
-- Patching Makefile.am doesn't work!
-
-* Mon Nov 20 2006 Deji Akingunola <dakingun at gmail.com> - 0.5.2-1
+* Mon Nov 06 2006 Deji Akingunola <dakingun at gmail.com> - 0.5.2-1
 - Update to 0.5.2
 
 * Mon Nov 06 2006 Deji Akingunola <dakingun at gmail.com> - 0.5.1-1




More information about the fedora-extras-commits mailing list