2
from plugins.generic import GenericPlugin
3
from player import Player
4
from widget.preference import HelperConfigureDialog
5
from config import config
7
class GlobalKeys(GenericPlugin):
9
PLUGIN_NAME = "Global Key Bindings"
10
PLUGIN_DESC = "Plugin to set global key bindings"
11
PLUGIN_VERSION = "0.1"
12
PLUGIN_AUTHOR = "Alexander Godlewski <alex@implode.ca>"
16
"globalkey_previous": Player.previous,
17
"globalkey_pause": Player.pause,
18
"globalkey_play": Player.playpause,
19
"globalkey_stop": Player.stop,
20
"globalkey_next": Player.next
24
GenericPlugin.__init__(self)
26
self.autoconnect(config, "config-changed", self.__on_config_changed)
28
self.__bind(config.get("plugins", "globalkey_previous", "<Super>Z"), "Previous", self.func["globalkey_previous"])
29
self.__bind(config.get("plugins", "globalkey_pause", "<Super>X"), "Pause", self.func["globalkey_pause"])
30
self.__bind(config.get("plugins", "globalkey_play", "<Super>C"), "Play", self.func["globalkey_play"])
31
self.__bind(config.get("plugins", "globalkey_stop", "<Super>V"), "Stop", self.func["globalkey_stop"])
32
self.__bind(config.get("plugins", "globalkey_next", "<Super>B"), "Next", self.func["globalkey_next"])
34
config.set("plugins", "globalkey_previous_last", config.get("plugins", "globalkey_previous", "<Super>Z"))
35
config.set("plugins", "globalkey_pause_last", config.get("plugins", "globalkey_pause", "<Super>X"))
36
config.set("plugins", "globalkey_play_last", config.get("plugins", "globalkey_play", "<Super>C"))
37
config.set("plugins", "globalkey_stop_last", config.get("plugins", "globalkey_stop", "<Super>V"))
38
config.set("plugins", "globalkey_next_last", config.get("plugins", "globalkey_next", "<Super>B"))
40
def __handle_callback(self, text, callback):
44
def __bind(self, key, target, callback):
46
self.__try_unbind(key)
50
keybinder.bind(key, lambda(text): self.__handle_callback(text, callback), "Global binding for %s pressed(%s)" % (target, key))
51
self.logdebug("Bound %s" % key)
53
def __try_unbind(self, key):
55
self.logdebug("Unbinding %s" % key)
57
self.logdebug("Unbound %s" % key)
59
self.logdebug("Did not unbind %s" % key)
61
def delete_thyself(self):
63
config.get("plugins", "globalkey_previous", "<Super>Z"),
64
config.get("plugins", "globalkey_pause", "<Super>X"),
65
config.get("plugins", "globalkey_play", "<Super>C"),
66
config.get("plugins", "globalkey_stop", "<Super>V"),
67
config.get("plugins", "globalkey_next", "<Super>B")
70
self.__try_unbind(key)
72
GenericPlugin.delete_thyself(self)
78
def __on_config_changed(self, dispatcher, section, option, value):
79
if section == "plugins" and option.find("globalkey_") == 0 and option.find("_last") == -1:
80
self.__try_unbind(config.get(section, option + "_last", value))
81
self.__bind(config.get(section, option, value), option, self.func[option])
82
config.set(section, option + "_last", value)
84
class GlobalKeysDialog(HelperConfigureDialog):
86
HelperConfigureDialog.__init__(self, "Global Keys")
87
self.add(self.make_lentry("Previous", "plugins", "globalkey_previous", "<Super>Z"))
88
self.add(self.make_lentry("Pause", "plugins", "globalkey_pause", "<Super>X"))
89
self.add(self.make_lentry("Play", "plugins", "globalkey_play", "<Super>C"))
90
self.add(self.make_lentry("Stop", "plugins", "globalkey_stop", "<Super>V"))
91
self.add(self.make_lentry("Next", "plugins", "globalkey_next", "<Super>B"))