def __init__(self, app=None, canvas=None, scene=None):
        super(SceneController, self).__init__()
        self.canvas = canvas
        self.scene = scene
        self.app = app
        self.fixtures = []
        self._max_pixels = 0
        self._output_buffer = None
        self.show_center = False
        self._strand_keys = list()
        self._color_mode = self.app.config.get("color_mode")
        self._frame_data = {}
        self.strand_data = {}
        self.times = []
        self.frame_start_time = 0.0
        if self.canvas is not None:
            self.init_view()

        self._fixture_lookup_cache = self.scene.fixture_hierarchy()
        fixture_data = self.scene.get("fixtures", [])
        for fixture_data_item in fixture_data:
            f = Fixture(fixture_data_item, controller=self)
            self._fixture_lookup_cache[f.strand()][f.address()] = f
            self.fixtures.append(f)

        self.create_pixel_array()
Exemple #2
0
    def init_view(self):
        self.center_widget = CrosshairWidget(self.canvas, self.scene.center(), "Center", callback=self.on_center_moved)
        self.load_backdrop()
        self.fixtures = []
        fixture_data = self.scene.get("fixtures", [])
        for fixture_data_item in fixture_data:
            fixture = Fixture(fixture_data_item, controller=self)
            self.fixtures.append(fixture)
            self._fixtures_by_strand[fixture.strand()].append(fixture)

        # Sort fixtures by address.
        self.fixtures = sorted(self.fixtures, key=lambda f: f.address())
        for strand in self._fixtures_by_strand:
            self._fixtures_by_strand[strand] = sorted(self._fixtures_by_strand[strand],
                                                      key=lambda f: f.address())

        self.update_canvas()