rendered paste bodyfrom 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 <b>%(name)s</b>")
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)