1
2
3
4
5
6 from libxyz.core.plugins import BasePlugin
7 from libxyz.core.utils import bstring
8 from libxyz.ui import lowui
9
10 import libxyz.ui as uilib
11
13 "Plugin bindlist"
14
15 NAME = u"bindlist"
16 AUTHOR = u"Max E. Kuznecov <syhpoon@syhpoon.name>"
17 VERSION = u"0.2"
18 BRIEF_DESCRIPTION = u"Show keybindings"
19 FULL_DESCRIPTION = u"Plugin is used to display all current keybindings "\
20 u"along with corresponding contextes and methods"
21 NAMESPACE = u"core"
22 HOMEPAGE = u"xyzcmd.syhpoon.name"
23 EVENTS = [("show_binds",
24 "Event is fired before showing dialog. Receives no arguments."),
25 ]
26
33
34
35
37 """
38 Show keybindings
39 """
40
41 self.fire_event("show_binds")
42
43 _data = self.xyz.km.get_binds()
44
45 _entries = []
46
47 _divattr = self.xyz.skin.attr(uilib.XYZListBox.resolution, u"border")
48
49 _entries.append(lowui.Text(u"%-10s %-20s %s" %
50 (_(u"Context"), _(u"Bind"), _(u"Method"))))
51 _entries.append(uilib.Separator(div_attr=_divattr))
52
53 for _context in sorted(_data.keys()):
54 for _bind in sorted(_data[_context].keys(),
55 cmp=lambda x, y: cmp(bstring(x), bstring(y))):
56 if _data[_context][_bind] is None:
57 continue
58
59 _entries.append(lowui.Text(u"%-10s %-20s %s" %
60 (_context, _bind, _data[_context][_bind].ns)))
61
62 _walker = lowui.SimpleListWalker(_entries)
63
64 _dim = tuple([x - 2 for x in self.xyz.screen.get_cols_rows()])
65
66 uilib.XYZListBox(self.xyz, self.xyz.top, _walker,
67 _(u"Keybindings"), _dim).show()
68