Package plugins :: Package core :: Package bindlist :: Module main |
[hide private]
[frames] | no frames]

# Source Code for Module plugins.core.bindlist.main

     1  #-*- coding: utf8 -*
     2  #
     3  # Max E. Kuznecov <syhpoon@syhpoon.name> 2008
     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
    12 -class XYZPlugin(BasePlugin):
    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
    27 -    def __init__(self, xyz):
    28          super(XYZPlugin, self).__init__(xyz)
    29
    30          self.export(self.show_binds)
    31
    32          self._keys = uilib.Keys()
    33
    34      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    35
    36 -    def show_binds(self):
    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