aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorGravatar Mason Larobina <mason.larobina@gmail.com>2009-12-14 03:47:46 +0800
committerGravatar Mason Larobina <mason.larobina@gmail.com>2009-12-14 03:47:46 +0800
commit58ca1929a360565b6114d1fbdd47a41ba88f903e (patch)
tree2c03195c9eca6c14df07fdbb29e971571fb4a22e /examples
parentf75a2b19017778a8dace0a8004d2a7cf10323bfd (diff)
parent3261368285832a1efc552a8be4dfd7e6f53b5505 (diff)
Merge branch 'master' into mode-binds
Diffstat (limited to 'examples')
-rw-r--r--examples/config/uzbl/config39
-rw-r--r--examples/data/uzbl/plugins/completion.py3
-rw-r--r--examples/data/uzbl/scripts/follow_Numbers.js5
-rw-r--r--examples/data/uzbl/scripts/follow_Numbers_Strings.js7
-rwxr-xr-xexamples/data/uzbl/scripts/uzbl-event-manager18
5 files changed, 49 insertions, 23 deletions
diff --git a/examples/config/uzbl/config b/examples/config/uzbl/config
index 5585195..d627059 100644
--- a/examples/config/uzbl/config
+++ b/examples/config/uzbl/config
@@ -1,33 +1,36 @@
# example uzbl config.
# all settings are optional. you can use uzbl without any config at all (but it won't do much)
-set prefix = /usr/local
+set prefix = /usr/local
# === Shortcuts / Aliases ===================================================
+# Config related events (use the request function):
# request BIND <keycmd> = <command>
-set bind = request BIND
+set bind = request BIND
# request MODE_CONFIG <mode> <key> = <value
-set mode_config = request MODE_CONFIG
-# request TOGGLE_MODES <mode1> <mode2> ... <moden>
-set toggle_modes = event TOGGLE_MODES
+set mode_config = request MODE_CONFIG
# request ON_EVENT <EVENT_NAME> <command>
-set on_event = request ON_EVENT
+set on_event = request ON_EVENT
# request PROGRESS_CONFIG <key> = <value>
-set progress = request PROGRESS_CONFIG
+set progress = request PROGRESS_CONFIG
# request MODMAP From To
-set modmap = request MODMAP
+set modmap = request MODMAP
# request IGNORE_KEY <glob>
-set ignore_key = request IGNORE_KEY
+set ignore_key = request IGNORE_KEY
# request MODKEY_ADDITION <key1> <key2> <keyn> <result>
set modkey_addition = request MODKEY_ADDITION
-set set_mode = set mode =
-set set_status = set status_message =
-set shell_cmd = sh -c
+# Action related events (use the event function):
+# event TOGGLE_MODES <mode1> <mode2> ... <moden>
+set toggle_modes = event TOGGLE_MODES
+
+set set_mode = set mode =
+set set_status = set status_message =
+set shell_cmd = sh -c
# Spawn path shortcuts. In spawn the first dir+path match is used in "dir1:dir2:dir3:executable"
-set scripts_dir = $XDG_DATA_HOME/uzbl:@prefix/share/uzbl/examples/data/uzbl:scripts
+set scripts_dir = $XDG_DATA_HOME/uzbl:@prefix/share/uzbl/examples/data/uzbl:scripts
# Javascipt helpers.
set jsh = js var run=Uzbl.run; function get(k){return run("print \\\@"+k)}; function set(k, v) {run("set "+k+" = "+v)};
@@ -231,15 +234,15 @@ set formfiller = spawn @scripts_dir/formfiller
# Examples using multi-stage-bindings with text prompts.
-@bind o<uri:>_ = uri %s
-@bind O<uri:\@uri>_ = uri %s
+@bind o<uri:>_ = uri %s
+@bind O<uri:\@uri>_ = uri %s
# multi-stage binding way to write bookmarks to file from inside uzbl.
-@bind <Ctrl>b<tags:>_ = sh 'echo -e "$6 %s" >> $XDG_DATA_HOME/uzbl/bookmarks'
+@bind <Ctrl>b<tags:>_ = sh 'echo -e "$6 %s" >> $XDG_DATA_HOME/uzbl/bookmarks'
# Multi-stage bindings with blank prompts (similar behaviour to emacs M-c M-s bindings?)
-@bind <Ctrl>a<:><Ctrl>q = exit
-@bind <Ctrl>a<:><Ctrl>h = uri http://uzbl.org/
+@bind <Ctrl>a<:><Ctrl>q = exit
+@bind <Ctrl>a<:><Ctrl>h = uri http://uzbl.org/
# Inject handy values into the keycmd.
@bind <Ctrl>su = event INJECT_KEYCMD \@uri
diff --git a/examples/data/uzbl/plugins/completion.py b/examples/data/uzbl/plugins/completion.py
index 770f310..8e055e1 100644
--- a/examples/data/uzbl/plugins/completion.py
+++ b/examples/data/uzbl/plugins/completion.py
@@ -29,6 +29,9 @@ def escape(str):
def add_instance(uzbl, *args):
UZBLS[uzbl] = dict(DEFAULTS)
+ # Make sure the config keys for all possible completions are known.
+ uzbl.send('dump_config_as_events')
+
def del_instance(uzbl, *args):
if uzbl in UZBLS:
diff --git a/examples/data/uzbl/scripts/follow_Numbers.js b/examples/data/uzbl/scripts/follow_Numbers.js
index efde4d7..00b279e 100644
--- a/examples/data/uzbl/scripts/follow_Numbers.js
+++ b/examples/data/uzbl/scripts/follow_Numbers.js
@@ -17,6 +17,10 @@ var doc = document;
var win = window;
var links = document.links;
var forms = document.forms;
+
+//Reset keycmd, modcmd and return to default mode.
+function clearKeycmd() { Uzbl.run('set mode ='); }
+
//Make onlick-links "clickable"
try {
HTMLElement.prototype.click = function() {
@@ -123,6 +127,7 @@ function generateHint(el, label) {
//but at least set the href of the link. (needs some improvements)
function clickElem(item) {
removeAllHints();
+ clearKeycmd();
if (item) {
var name = item.tagName;
if (name == 'A') {
diff --git a/examples/data/uzbl/scripts/follow_Numbers_Strings.js b/examples/data/uzbl/scripts/follow_Numbers_Strings.js
index 67da2f9..e50da5d 100644
--- a/examples/data/uzbl/scripts/follow_Numbers_Strings.js
+++ b/examples/data/uzbl/scripts/follow_Numbers_Strings.js
@@ -4,6 +4,10 @@ var doc = document;
var win = window;
var links = document.links;
var forms = document.forms;
+
+//Reset keycmd, modcmd and return to default mode.
+function clearKeycmd() { Uzbl.run('set mode ='); }
+
try {
HTMLElement.prototype.click = function() {
if (typeof this.onclick == 'function') {
@@ -93,8 +97,10 @@ function generateHint(el, label) {
hint.style.webkitTransform = 'scale(1) rotate(0deg) translate(-6px,-5px)';
return hint;
}
+
function clickElem(item) {
removeAllHints();
+ clearKeycmd();
if (item) {
var name = item.tagName;
if (name == 'A') {
@@ -117,6 +123,7 @@ function clickElem(item) {
}
}
}
+
function addLinks() {
res = [[], []];
for (var l = 0; l < links.length; l++) {
diff --git a/examples/data/uzbl/scripts/uzbl-event-manager b/examples/data/uzbl/scripts/uzbl-event-manager
index 6669282..7a02da9 100755
--- a/examples/data/uzbl/scripts/uzbl-event-manager
+++ b/examples/data/uzbl/scripts/uzbl-event-manager
@@ -357,6 +357,7 @@ class UzblInstance(object):
self.depth = 0
self.buffer = ''
+ self.pid = None
# Call the init() function in every plugin. Inside the init function
# is where the plugins insert the hooks into the event system.
@@ -423,6 +424,9 @@ class UzblInstance(object):
'''Connect event with handler and return the newly created handler.
Handlers can either be a function or a uzbl command string.'''
+ event = event.upper().strip()
+ assert event and ' ' not in event
+
if event not in self._handlers.keys():
self._handlers[event] = []
@@ -478,12 +482,16 @@ class UzblInstance(object):
def event(self, event, *args, **kargs):
- '''Raise a custom event.'''
+ '''Raise an event.'''
+
+ event = event.upper()
+ elems = [event,]
+ if args: elems.append(unicode(args))
+ if kargs: elems.append(unicode(kargs))
+ print "%s--> %s" % (' ' * self.depth, ' '.join(elems))
- # Silence _printing_ of geo events while debugging.
- if event != "GEOMETRY_CHANGED":
- print "%s--> %s %s %s" % (' ' * self.depth, event, args,
- '' if not kargs else kargs)
+ if event == "INSTANCE_START" and args:
+ self.pid = int(args[0])
if event not in self._handlers:
return