keywords as a core extenstion
- From: Nigel Tao <nigel tao myrealbox com>
- To: Epiphany List <epiphany-list gnome org>
- Subject: keywords as a core extenstion
- Date: Tue, 15 Nov 2005 22:21:03 +1100
Keywords in a nutshell: I type "wp Epiphany" and my browser goes to
http://en.wikipedia.org/wiki/Epiphany
The feature request was raised recently (and doubtless previously):
http://mail.gnome.org/archives/epiphany-list/2005-November/msg00021.html
which pointed to a bug report with patch:
http://bugzilla.gnome.org/show_bug.cgi?id=118618
First of all - what is the "right way to do it"? In particular, which
signal should be caught to do the address re-write? The above patch
hooks into the "resolve-address" signal. Alternatively, the
sample-python-location tutorial extension (which listens to the
"ge-location" signal) seems really easy to tweak into the proof of
concept one-pager at the bottom of this e-mail.
Second - what plans do the Epiphany devs have (if any) of "blessing"
this feature (as part of epiphany-extensions, presumably)? Because I am
hoping to provide it through the deskbar-applet, even if the preferred
browser is Epiphany rather than Firefox (boo, hiss :-). So, what would
make this part of Epiphany 1.10? How can I help (I'd be willing to do
some coding/writing)? Or will I otherwise have to install an Epiphany
extension as part of deskbar-applet, and mess with bookmark storage
(which is itself another discussion)?
thanks,
Nigel.
-------------------------
import epiphany;
keywords = {
'wp':'http://www.wikipedia.org',
'wp ':'http://en.wikipedia.org/wiki/%s' }
def location_cb(embed, address, tab):
if address.startswith('keyword:'):
k = address[8:].strip()
i = k.find('%20')
if i != -1:
key = k[:i] + ' '
args = k[i+3:]
try:
embed.load_url(keywords[key] % args)
except KeyError, TypeError:
# either key was not in the map
# keywords, or
# the URL did not have a '%s' in it
pass
else:
try:
embed.load_url(keywords[k])
except KeyError:
# k was not in the map keywords
pass
def attach_tab(window, tab):
embed = tab.get_embed()
sig = embed.connect('ge-location', location_cb, tab)
embed._python_sample_location_sig = sig
def detach_tab(window, tab):
embed = tab.get_embed()
sig = embed._python_sample_location_sig
del embed._python_sample_location_sig
embed.disconnect(sig)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]