[modules/layout-xkb] Updated to latest API

This commit is contained in:
tobi-wan-kenobi 2020-04-19 10:13:44 +02:00
parent 60de268850
commit 756c4a113a

View file

@ -12,41 +12,36 @@ Parameters:
* layout-xkb.show_variant: Boolean that indecates whether the variant name should be displayed. Defaults to true. * layout-xkb.show_variant: Boolean that indecates whether the variant name should be displayed. Defaults to true.
""" """
import bumblebee.input from xkbgroup import *
import bumblebee.output
import bumblebee.engine
has_xkb = True
try:
from xkbgroup import *
except ImportError:
has_xkb = False
import logging import logging
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class Module(bumblebee.engine.Module): import core.module
def __init__(self, engine, config): import core.widget
super(Module, self).__init__(engine, config, import core.input
bumblebee.output.Widget(full_text=self.current_layout)
)
engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE,
cmd=self._next_keymap)
engine.input.register_callback(self, button=bumblebee.input.RIGHT_MOUSE,
cmd=self._prev_keymap)
self._show_variant = bumblebee.util.asbool(self.parameter('show_variant', 'true'))
def _next_keymap(self, event): import util.format
self._set_keymap(1)
def _prev_keymap(self, event): class Module(core.module.Module):
self._set_keymap(-1) def __init__(self, config):
super().__init__(config, core.widget.Widget(self.current_layout))
def _set_keymap(self, rotation): core.input.register(self, button=core.input.LEFT_MOUSE,
if not has_xkb: return cmd=self.__next_keymap)
core.input.register(self, button=core.input.RIGHT_MOUSE,
cmd=self.__prev_keymap)
self.__show_variant = util.format.asbool(self.parameter('show_variant', True))
def __next_keymap(self, event):
self.__set_keymap(1)
def __prev_keymap(self, event):
self.__set_keymap(-1)
def __set_keymap(self, rotation):
xkb = XKeyboard() xkb = XKeyboard()
if xkb.groups_count < 2: return # nothing to doA if xkb.groups_count < 2: return # nothing to do
layouts = xkb.groups_symbols layouts = xkb.groups_symbols
idx = layouts.index(xkb.group_symbol) idx = layouts.index(xkb.group_symbol)
xkb.group_symbol = str(layouts[(idx + rotation) % len(layouts)]) xkb.group_symbol = str(layouts[(idx + rotation) % len(layouts)])
@ -55,11 +50,12 @@ class Module(bumblebee.engine.Module):
try: try:
xkb = XKeyboard() xkb = XKeyboard()
log.debug('group num: {}'.format(xkb.group_num)) log.debug('group num: {}'.format(xkb.group_num))
name = xkb.group_name if bumblebee.util.asbool(self.parameter('showname')) else xkb.group_symbol name = xkb.group_name if util.format.asbool(self.parameter('showname'), False) else xkb.group_symbol
if self._show_variant: if self.__show_variant:
return '{} ({})'.format(name, xkb.group_variant) if xkb.group_variant else name return '{} ({})'.format(name, xkb.group_variant) if xkb.group_variant else name
return name return name
except Exception: except Exception as e:
print('got exception: {}'.format(e))
return 'n/a' return 'n/a'
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4