Audio/AudioControl: Lots of fixes
[audiocontrol.git] / Keyboard.py
index 4c2a03b..f3a8b79 100644 (file)
@@ -13,9 +13,10 @@ class Source(Events.EventSource):
 
 class View(Views.View):
 
-    def __init__(self, context, label, x, y, dx, dy, size=9):
-        Views.View.__init__(self, context, label, x, y, dx, dy)
+    def __init__(self, context, label, x, y, dx, dy, size=9, ignore_keys = ()):
+        Views.View.__init__(self, context, label, x, y, dx, dy )
         self._size = size
+        self._ignore_keys = ignore_keys
 
     def updateView(self, bindings):
         self.win().clear()
@@ -23,7 +24,7 @@ class View(Views.View):
         keys = bindings.keys()
         keys.sort()
         column = 2
-        row = 2
+        row = 1
         for key in keys:
             keyname = curses.keyname(key.code)
             if keyname.startswith('KEY_'):
@@ -32,11 +33,12 @@ class View(Views.View):
                 keyname = '%sC-%s' % (keyname[:-2],keyname[-1:].lower())
             if curses.ascii.isupper(ord(keyname[-1:])):
                 keyname = '%sS-%s' % (keyname[:-1],keyname[-1:].lower())
+            if keyname in self._ignore_keys : continue
             self.win().addstr(row, column, '%-6s %s'
                               % (keyname, bindings[key].label[:self._size]))
             row += 1
-            if row >= self.dy-2:
-                row = 2
+            if row >= self.dy-1:
+                row = 1
                 column += self._size+10
                 if column+self._size+7 >= self.dx : break
                 self.win().vline(1,column-2,curses.ACS_VLINE,self.dy-2)
@@ -49,6 +51,8 @@ def register( viewmanager,
               x,
               y,
               dx,
-              dy ):
-    viewmanager.registerView( View(context, label, x,y,dx,dy) )
+              dy,
+              size = 9,
+              ignore_keys = ()):
+    viewmanager.registerView( View(context, label, x,y,dx,dy,size,ignore_keys) )
     dispatcher.registerSource( Source(context, viewmanager.win()) )