def create_circular_meter(self, name): """ Create circular meter :param name: meter name """ config = self.meter_config[name] if config[CHANNELS] == 2: left_channel_queue = self.data_source.left_channel right_channel_queue = self.data_source.right_channel meter = Meter(self.util, TYPE_CIRCULAR, self.meter_config[IMAGE_FOLDER_NAME], config[UI_REFRESH_PERIOD], left_channel_queue, right_channel_queue) meter.channels = 2 else: mono_channel_queue = self.data_source.mono_channel meter = Meter(self.util, TYPE_CIRCULAR, self.meter_config[IMAGE_FOLDER_NAME], config[UI_REFRESH_PERIOD], mono_channel_queue=mono_channel_queue) meter.steps_per_degree = config[STEPS_PER_DEGREE] start_angle = config[START_ANGLE] stop_angle = config[STOP_ANGLE] meter.incr = (abs(start_angle) + abs(stop_angle)) / 100 meter.add_background(config[BGR_FILENAME]) needle = meter.load_image(config[INDICATOR_FILENAME])[1] factory = NeedleFactory(needle, config, meter.origin_x, meter.origin_y) meter.needle_sprites = factory.needle_sprites if config[CHANNELS] == 2: meter.left_needle_rects = factory.left_needle_rects meter.right_needle_rects = factory.right_needle_rects meter.left_needle_rects = factory.left_needle_rects s = meter.needle_sprites[0] r = meter.left_needle_rects[0] meter.add_image(s, 0, 0, r) r = meter.right_needle_rects[0] meter.add_image(s, 0, 0, r) else: meter.mono_needle_rects = factory.mono_needle_rects s = meter.needle_sprites[0] r = meter.mono_needle_rects[0] meter.add_image(s, 0, 0, r) if config[FGR_FILENAME]: meter.add_foreground(config[FGR_FILENAME]) return meter