home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / deskbar-applet / handlers / beagle-static.py < prev    next >
Encoding:
Python Source  |  2006-08-29  |  1.5 KB  |  50 lines

  1. import os
  2. from os.path import exists, join
  3. from glob import glob
  4. from gettext import gettext as _
  5. from deskbar.defs import VERSION
  6. import gobject
  7. import deskbar.Handler, deskbar.Utils, deskbar.Match
  8. from deskbar.Utils import get_xdg_data_dirs
  9.  
  10. #FIXME: better way to detect beagle ?
  11. def _check_requirements():
  12.     for dir in get_xdg_data_dirs():
  13.         if glob(join(dir, "applications", "*best.desktop")) or glob(join(dir, "applications", "*beagle-search.desktop")):
  14.             return (deskbar.Handler.HANDLER_IS_HAPPY, None, None)
  15.     
  16.     return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, "Beagle does not seem to be installed, skipping", None)
  17.  
  18. HANDLERS = {
  19.     "BeagleHandler" : {
  20.         "name": _("Beagle"),
  21.         "description": _("Search all of your documents (using Beagle)"),
  22.         "requirements": _check_requirements,
  23.         "version": VERSION,
  24.     }
  25. }
  26.  
  27. class BeagleMatch(deskbar.Match.Match):
  28.     def __init__(self, backend, **args):
  29.         deskbar.Match.Match.__init__(self, backend, **args)
  30.         
  31.     def action(self, text=None):
  32.         try:
  33.             gobject.spawn_async(["beagle-search", self.name], flags=gobject.SPAWN_SEARCH_PATH)
  34.         except:
  35.             gobject.spawn_async(["best", '--no-tray', '--show-window', self.name], flags=gobject.SPAWN_SEARCH_PATH)
  36.             
  37.     def get_verb(self):
  38.         return _("Search for %s using Beagle") % "<b>%(name)s</b>"
  39.     
  40.     def get_category (self):
  41.         return "actions"
  42.     
  43.                 
  44. class BeagleHandler(deskbar.Handler.Handler):
  45.     def __init__(self):
  46.         deskbar.Handler.Handler.__init__(self, ("system-search", "best"))
  47.                 
  48.     def query(self, query):
  49.         return [BeagleMatch(self, name=query)]
  50.