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()
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()