from gettext import gettext as _ import gnomevfs import os import re import sys import dbus from deskbar.Handler import Handler from deskbar.Match import Match import gtk, gtk.gdk HANDLERS = { "StrigiHandler" : { "name": _("Find Files with Strigi"), "description": _("Use Strigi to find files"), } } class StrigiMatch(Match): def __init__(self, backend, url=None, **args): Match.__init__(self, backend, **args) self.url = url def action(self, text=None): gnomevfs.url_show("file://"+self.url) def get_verb(self): return _("Show %(name)s") def get_hash(self, text=None): return self.url class StrigiHandler(Handler): def __init__(self): Handler.__init__(self, "gnome-mime-application-x-python.png") self.strigi = None def connect(self): # connect to DBus try: bus = dbus.SessionBus() except: self.error = "DBus is not running." return # make a connection to the strigi daemon try: obj = bus.get_object('vandenoever.strigi', '/search') self.strigi = dbus.Interface(obj, 'vandenoever.strigi') self.strigi.getStatus() except: self.strigi = None self.error = "Strigi is not running." def query(self, query): results = [] if self.strigi == None: self.connect() if self.strigi == None: results.append(StrigiMatch(self, name=self.error, url=None)) return results hits = self.strigi.getHits(query, 10, 0) for hit in hits: results.append(StrigiMatch(self, name=hit[0], url=hit[0])) return results def main(args): h = StrigiHandler() rs = h.query('strigi') for r in rs: print r.url if __name__=="__main__": main(sys.argv)