2011-04-24 08:55:33 -04:00
|
|
|
# Bryan Schumaker (3 / 11 / 2011)
|
|
|
|
|
|
|
|
import gtk
|
|
|
|
from libsaria import controls
|
|
|
|
|
|
|
|
keyval_name = gtk.gdk.keyval_name
|
|
|
|
shortcut_map = {}
|
|
|
|
|
|
|
|
def null_shortcut():
|
|
|
|
return False
|
|
|
|
|
|
|
|
# Setting allow_filter_focus to True means that the
|
|
|
|
# registered shortcut will always run, even if the
|
|
|
|
# filter entry currently has focus
|
|
|
|
def register_shortcut(key, func, allow_filter_focus = False):
|
|
|
|
shortcut_map[key] = (func, allow_filter_focus)
|
|
|
|
|
|
|
|
def key_pressed(widget, event):
|
|
|
|
from ocarina import body
|
|
|
|
from ocarina.body.header import entry
|
|
|
|
|
|
|
|
name = keyval_name(event.keyval)
|
|
|
|
func, allow_filter_focus = shortcut_map.get(name, (null_shortcut, False))
|
|
|
|
if (entry.has_focus() and not allow_filter_focus):
|
|
|
|
return
|
|
|
|
if func() == False:
|
|
|
|
return False
|
|
|
|
widget.emit_stop_by_name("key-press-event")
|
|
|
|
return True
|
|
|
|
|
2011-04-24 09:10:39 -04:00
|
|
|
register_shortcut("space", controls.toggle_play)
|
|
|
|
register_shortcut( "Left", controls.seek_backward)
|
|
|
|
register_shortcut("Right", controls.seek_forward)
|
|
|
|
register_shortcut( "n", controls.next)
|
|
|
|
register_shortcut( "s", controls.stop)
|