Permalink
Browse files

Fixed search plugin to work with current terminator

     Patch from Charles Waldman
  • Loading branch information...
1 parent 9a48337 commit 2c9b588610f0fc9ec4962c0405f69e6c98d3ba05 John Cooper committed Nov 10, 2011
Showing with 38 additions and 18 deletions.
  1. +38 −18 searchplugin.py
View
@@ -1,35 +1,55 @@
import gtk
import urllib
import terminatorlib.plugin as plugin
+import re
# Written by John Cooper http://choffee.co.uk
# Copyright 2010 John Cooper
# See copyright file that comes with this file for full licence
-# available must contain a list of all the classes that you want exposed
-available = ['SearchPlugin']
+# Modified by cgw 2011/11/06
-class SearchPlugin(plugin.Plugin):
- capabilities = ['terminal_menu']
+# AVAILABLE must contain a list of all the classes that you want exposed
+AVAILABLE = ['SearchPlugin']
- def _search(self, searchMenu):
- """Launch google search for string"""
- search = "http://google.co.uk/search?hl=en&q=%s&meta="
- clip = gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY)
- searchstring = clip.wait_for_text()
- uri = search % urllib.quote(searchstring.encode("utf-8"))
- gtk.show_uri(None, uri, gtk.gdk.CURRENT_TIME)
+_spaces = re.compile(" +")
+# TODO: move some of the constants into a config object
+class SearchPlugin(plugin.Plugin):
+ capabilities = ['terminal_menu']
+ def do_search(self, searchMenu):
+ """Launch Google search for string"""
+ if not self.searchstring:
+ return
+ base_uri = "http://www.google.com/search?q=%s"
+ uri = base_uri % urllib.quote(self.searchstring.encode("utf-8"))
+ gtk.show_uri(None, uri, gtk.gdk.CURRENT_TIME)
+
def callback(self, menuitems, menu, terminal):
- """Add our menu items to the menu"""
+ """Add our menu item to the menu"""
self.terminal = terminal
item = gtk.ImageMenuItem(gtk.STOCK_FIND)
- item.set_label("Search Online")
- item.connect('activate', self._search)
- item.set_sensitive(terminal.vte.get_has_selection())
+ item.connect('activate', self.do_search)
+ if terminal.vte.get_has_selection():
+ clip = gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY)
+ self.searchstring = clip.wait_for_text().strip()
+ self.searchstring = self.searchstring.replace("\n", " ")
+ self.searchstring = self.searchstring.replace("\t", " ")
+ self.searchstring = _spaces.sub(" ", self.searchstring)
+ else:
+ self.searchstring = None
+ if self.searchstring:
+ if len(self.searchstring) > 40:
+ displaystring = self.searchstring[:37] + "..."
+ else:
+ displaystring = self.searchstring
+ item.set_label("Search Google for \"%s\"" % displaystring)
+ item.set_sensitive(True)
+ else:
+ item.set_label("Search Google")
+ item.set_sensitive(False)
+ # Avoid turning any underscores in selection into menu accelerators
+ item.set_use_underline(False)
menuitems.append(item)
-
-
-

0 comments on commit 2c9b588

Please sign in to comment.