All pastes #170702 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-09-14 19:13 UTC
rendered paste body
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 <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)