Example #1
0
    def __init__(self, **values):
        if not Visualizer.INSTANCE:
            Visualizer.INSTANCE = self

        self.values = SettingsValues(settings={
            'brightness': 'light.brightness',
            'instrument_padding': 'light.visualizer.instrument.padding',
            'label_padding': 'light.visualizer.instrument.label_padding',
            'label_starts_at_zero':
            'light.visualizer.instrument.label_starts_at_zero',
            'layout': 'light.visualizer.layout',
            'light_count': 'light.count',
            'padding': 'light.visualizer.padding',
            'period': 'light.visualizer.period',
            'show_label': 'light.visualizer.instrument.label',
            'shape': 'light.visualizer.instrument.shape',
            'size': 'light.visualizer.instrument.size',
            'transform': 'light.visualizer.transform',
        },
                                     values=values,
                                     update_callback=self.update_callback)

        assert cechomesh.is_started()
        self.lighting_window = cechomesh.PyLightingWindow()
        super(Visualizer, self).__init__(is_redirect=False)
        self.values.add_client()
class SettingsValuesTest(TestCase):
    def add_client(self, values):
        def get(*names):
            if names == ('c', ):
                return 42
            if names == ('d', 'e'):
                return 99
            raise Exception('oops')

        values.settings_update(get)

    def setUp(self):
        self.values = SettingsValues(values={
            'a': 23,
            'b': 'hello'
        },
                                     settings={
                                         'c': 'c',
                                         'd': 'd.e'
                                     },
                                     add_client=self.add_client)
        self.values.add_client()

    def test_simple(self):
        self.assertEqual(self.values.a, 23)
        self.assertEqual(self.values.b, 'hello')
        self.assertEqual(self.values.c, 42)
        self.assertEqual(self.values.d, 99)
 def setUp(self):
     self.values = SettingsValues(values={
         'a': 23,
         'b': 'hello'
     },
                                  settings={
                                      'c': 'c',
                                      'd': 'd.e'
                                  },
                                  add_client=self.add_client)
     self.values.add_client()
Example #4
0
    def __init__(self, **values):
        if not Visualizer.INSTANCE:
            Visualizer.INSTANCE = self

        self.values = SettingsValues(
          settings={
            'brightness': 'light.brightness',
            'instrument_padding': 'light.visualizer.instrument.padding',
            'label_padding': 'light.visualizer.instrument.label_padding',
            'label_starts_at_zero':
              'light.visualizer.instrument.label_starts_at_zero',
            'layout': 'light.visualizer.layout',
            'light_count': 'light.count',
            'padding': 'light.visualizer.padding',
            'period': 'light.visualizer.period',
            'show_label': 'light.visualizer.instrument.label',
            'shape': 'light.visualizer.instrument.shape',
            'size': 'light.visualizer.instrument.size',
            'transform': 'light.visualizer.transform',
            },
          values=values,
          update_callback=self.update_callback)

        assert cechomesh.is_started()
        self.lighting_window = cechomesh.PyLightingWindow()
        super(Visualizer, self).__init__(is_redirect=False)
        self.values.add_client()
class SettingsValuesTest(TestCase):
    def add_client(self, values):
        def get(*names):
            if names == ('c',):
                return 42
            if names == ('d', 'e'):
                return 99
            raise Exception('oops')

        values.settings_update(get)

    def setUp(self):
        self.values = SettingsValues(values={'a': 23, 'b': 'hello'},
                                   settings={'c': 'c', 'd': 'd.e'},
                                   add_client=self.add_client)
        self.values.add_client()

    def test_simple(self):
        self.assertEqual(self.values.a, 23)
        self.assertEqual(self.values.b, 'hello')
        self.assertEqual(self.values.c, 42)
        self.assertEqual(self.values.d, 99)
Example #6
0
class Visualizer(Poll):
    INSTANCE = None

    def __init__(self, **values):
        if not Visualizer.INSTANCE:
            Visualizer.INSTANCE = self

        self.values = SettingsValues(settings={
            'brightness': 'light.brightness',
            'instrument_padding': 'light.visualizer.instrument.padding',
            'label_padding': 'light.visualizer.instrument.label_padding',
            'label_starts_at_zero':
            'light.visualizer.instrument.label_starts_at_zero',
            'layout': 'light.visualizer.layout',
            'light_count': 'light.count',
            'padding': 'light.visualizer.padding',
            'period': 'light.visualizer.period',
            'show_label': 'light.visualizer.instrument.label',
            'shape': 'light.visualizer.instrument.shape',
            'size': 'light.visualizer.instrument.size',
            'transform': 'light.visualizer.transform',
        },
                                     values=values,
                                     update_callback=self.update_callback)

        assert cechomesh.is_started()
        self.lighting_window = cechomesh.PyLightingWindow()
        super(Visualizer, self).__init__(is_redirect=False)
        self.values.add_client()

    def _close_window(self):
        self.lighting_window = None

    def pause(self):
        super(Visualizer, self).pause()
        self._close_window()

    def snapshot(self, filename):
        self.lighting_window.save_snapshot_to_file(filename)

    def update_callback(self):
        self.period = Expression.convert(self.values.period)
        self.lighting_window.set_light_count(
            self.values.light_count
            or (self.values.layout[0] * self.values.layout[1]))
        self.lighting_window.set_shape(self.values.shape == 'rect')
        self.lighting_window.set_show_label(self.values.show_label)
        self.lighting_window.set_label_starts_at_zero(
            self.values.label_starts_at_zero)
        self.lighting_window.set_layout(self.values.layout, self.values.size,
                                        self.values.padding,
                                        self.values.instrument_padding,
                                        self.values.label_padding)
        self.columns = self.values.layout[0]

        self.transform = self.values.transform
        if self.transform:
            try:
                self.transform = cechomesh.Transform(self.transform)
            except:
                LOGGER.error('Don\'t understand transform %s', self.transform)
                self.transform = None
        self.brightness = Expression.convert(self.values.brightness)
        if self.transform:
            self.brightness = self.transform.apply(self.brightness)

    def emit_output(self, data):
        lights = cechomesh.combine_color_lists(data)
        lights.columns = self.columns
        lights.scale(self.brightness)
        self.lighting_window.set_lights(lights)
Example #7
0
class Visualizer(Poll):
    INSTANCE = None

    def __init__(self, **values):
        if not Visualizer.INSTANCE:
            Visualizer.INSTANCE = self

        self.values = SettingsValues(
          settings={
            'brightness': 'light.brightness',
            'instrument_padding': 'light.visualizer.instrument.padding',
            'label_padding': 'light.visualizer.instrument.label_padding',
            'label_starts_at_zero':
              'light.visualizer.instrument.label_starts_at_zero',
            'layout': 'light.visualizer.layout',
            'light_count': 'light.count',
            'padding': 'light.visualizer.padding',
            'period': 'light.visualizer.period',
            'show_label': 'light.visualizer.instrument.label',
            'shape': 'light.visualizer.instrument.shape',
            'size': 'light.visualizer.instrument.size',
            'transform': 'light.visualizer.transform',
            },
          values=values,
          update_callback=self.update_callback)

        assert cechomesh.is_started()
        self.lighting_window = cechomesh.PyLightingWindow()
        super(Visualizer, self).__init__(is_redirect=False)
        self.values.add_client()

    def _close_window(self):
        self.lighting_window = None

    def pause(self):
        super(Visualizer, self).pause()
        self._close_window()

    def snapshot(self, filename):
        self.lighting_window.save_snapshot_to_file(filename)

    def update_callback(self):
        self.period = Expression.convert(self.values.period)
        self.lighting_window.set_light_count(
          self.values.light_count or (
              self.values.layout[0] * self.values.layout[1]))
        self.lighting_window.set_shape(self.values.shape == 'rect')
        self.lighting_window.set_show_label(self.values.show_label)
        self.lighting_window.set_label_starts_at_zero(
          self.values.label_starts_at_zero)
        self.lighting_window.set_layout(
          self.values.layout, self.values.size, self.values.padding,
          self.values.instrument_padding, self.values.label_padding)
        self.columns = self.values.layout[0]

        self.transform = self.values.transform
        if self.transform:
            try:
                self.transform = cechomesh.Transform(self.transform)
            except:
                LOGGER.error('Don\'t understand transform %s', self.transform)
                self.transform = None
        self.brightness = Expression.convert(self.values.brightness)
        if self.transform:
            self.brightness = self.transform.apply(self.brightness)

    def emit_output(self, data):
        lights = cechomesh.combine_color_lists(data)
        lights.columns = self.columns
        lights.scale(self.brightness)
        self.lighting_window.set_lights(lights)
 def setUp(self):
     self.values = SettingsValues(values={'a': 23, 'b': 'hello'},
                                settings={'c': 'c', 'd': 'd.e'},
                                add_client=self.add_client)
     self.values.add_client()