Exemple #1
0
def test_dicts():
    simple = {'first': 1, 'second': 2}
    obj, sig = dbus_prepare(simple)
    assert obj == simple
    assert sig == 'a{sn}'

    obj, sig = dbus_prepare(simple, variant=True)
    for value in obj.values():
        assert isinstance(value, GLib.Variant)
    assert sig == 'a{sv}'

    mixed = {'first': 'string here', 'second': 2, 'third': (2, 2)}
    obj, sig = dbus_prepare(mixed)
    for value in obj.values():
        assert isinstance(value, GLib.Variant)
    assert sig == 'a{sv}'

    nested = {'first': {'nested1': 1}, 'second': {'nested2': 2}}
    obj, sig = dbus_prepare(nested)
    assert obj == nested
    assert sig == 'a{sa{sn}}'

    nested['second']['nested2'] = 'blah'
    obj, sig = dbus_prepare(nested)
    print('obj=%s sig=%s' % (obj, sig))
    assert isinstance(obj, dict)
    assert isinstance(obj['first'], GLib.Variant)
    assert isinstance(obj['first']['nested1'], int)
    assert sig == 'a{sv}'
Exemple #2
0
def test_special_types():
    obj, sig = dbus_prepare(Color.NewFromHtml('black'))
    assert obj == '#000000'
    assert sig == 's'

    obj, sig = dbus_prepare(Int(5))
    assert isinstance(obj, dict)
    assert sig == 'a{sv}'
    for value in obj.values():
        assert isinstance(value, GLib.Variant)

    obj, sig = dbus_prepare(EnumTest)
    assert isinstance(obj, tuple)
    assert sig == '(sss)'
Exemple #3
0
 def _fx_changed(self, change):
     self._logger.info("Effects changed: %s", change)
     self._current_fx = (change.new[0].lower(),
                         dbus_prepare(change.new[1]._trait_values,
                                      variant=True)[0])
     self.PropertiesChanged('org.chemlab.UChroma.FXManager',
                            {'CurrentFX': self.CurrentFX}, [])
Exemple #4
0
    def GetLED(self, name: str) -> dict:
        ledtype = LEDType[name.upper()]
        if ledtype is None:
            self._logger.error("Unknown LED type: %s", name)
            return {}

        return dbus_prepare(self._driver.led_manager.get(ledtype)._trait_values)[0]
Exemple #5
0
    def AvailableRenderers(self) -> dict:
        avail = {}
        infos = self._animgr.renderer_info

        for key, info in infos.items():
            avail[key] = dbus_prepare({'meta': info.meta, 'traits': info.traits})[0]

        return avail
Exemple #6
0
    def _led_control(self, args):
        led = args.led_cmd.lower()

        if len(args.changed) == 0:
            args.parser.error("At least one option is required")

        if not self.driver.SetLED(led, dbus_prepare(args.changed, variant=True)[0]):
            args.parser.error("Failed to configure LED")
Exemple #7
0
    def __init__(self, parent):
        super(FXManagerAPI, self).__init__(parent)

        self._fx_manager = self._driver.fx_manager

        self._current_fx = None
        self._available_fx = dbus_prepare({k: v.class_traits() \
                for k, v in self._fx_manager.available_fx.items()})[0]

        self._fx_manager.observe(self._fx_changed, names=['current_fx'])
Exemple #8
0
def test_primitives():
    assert dbus_prepare(23)[1] == 'n'
    assert dbus_prepare(65536)[1] == 'i'
    assert dbus_prepare(sys.maxsize)[1] == 'x'
    assert dbus_prepare(False)[1] == 'b'
    assert dbus_prepare(23.0)[1] == 'd'
    assert dbus_prepare('asdf')[1] == 's'
Exemple #9
0
    def _add_renderer(self, args):
        rname = args.renderer
        if rname not in self.renderer_info:
            rname = {v: k for k, v in self._aliases.items()}[rname]

        zindex = -1
        if hasattr(args, 'zzz') and args.zzz is not None:
            zindex = args.zzz

        layer = self.driver.AddRenderer(rname, zindex, dbus_prepare(args.changed, variant=True)[0])
        if layer is None:
            args.parser.error("Failed to create renderer")

        args.parser.exit(message="Created layer: %s\n" % layer)
Exemple #10
0
 def set_property(self, target, name, value):
     name = snake_to_camel(name)
     if not hasattr(target, name):
         raise ValueError("Invalid property: %s" % name)
     cls_obj = getattr(target.__class__, name)
     if hasattr(cls_obj, '_type'):
         typespec = cls_obj._type
         if typespec == 's':
             value = str(value)
         elif typespec == 'd':
             value = float(value)
         elif typespec == 'u' or typespec == 'i':
             value = int(value)
         elif typespec == 'b':
             value = bool(value)
         else:
             value = dbus_prepare(value)[0]
     setattr(target, name, value)
Exemple #11
0
 def _activate_fx(self, args):
     fx = args.fx_cmd.lower()
     if not self.driver.SetFX(fx,
                              dbus_prepare(args.changed, variant=True)[0]):
         args.parser.error("Failed to activate effect")
Exemple #12
0
    def AvailableLEDs(self):
        leds = {}
        for led in self._driver.led_manager.supported_leds:
            leds[led.name.lower()] = self._driver.led_manager.get(led).traits()

        return dbus_prepare(leds)[0]
Exemple #13
0
 def FrameDebugOpts(self) -> dict:
     return dbus_prepare(self._driver.frame_control.debug_opts,
                         variant=True)[0]
Exemple #14
0
 async def _dev_mode_input(self):
     while self._signal_input:
         event = await self._input_queue.get_events()
         if event is not None:
             self.InputEvent(dbus_prepare(event)[0])