def _create_effect_parameter_controls(self, zone, effect_id, effect_options): """ Creates a set of radio buttons for changing the current effect's parameter. """ widgets = [] def _clicked_param_button(): for radio in self.btn_grps["radio_param_" + zone]: if not radio.isChecked(): continue self.dbg.stdout( "Setting parameter {} for {} on {} device {} (zone: {}, colours: {})" .format(radio.option_data, radio.option_id, self.current_backend, self.current_uid, radio.zone, str(radio.colour_hex)), self.dbg.action, 1) self.middleman.set_device_state(self.current_backend, self.current_uid, self.current_serial, radio.zone, radio.option_id, radio.option_data, radio.colour_hex) self.reload_device() for effect in effect_options: if not effect["id"] == effect_id: continue for param in effect["parameters"]: label = param["label"] radio = QRadioButton() radio.setText(label) radio.clicked.connect(_clicked_param_button) radio.option_id = effect_id radio.option_data = param["data"] radio.zone = zone radio.colour_hex = param["colours"] if param["active"]: radio.setChecked(True) icon = common.get_icon("params", param["id"]) if icon: radio.setIcon(QIcon(icon)) radio.setIconSize(QSize(22, 22)) widgets.append(radio) if not widgets: return None self.btn_grps["radio_param_" + zone] = widgets return self.widgets.create_row_widget(self._("Effect Mode"), widgets, vertical=True)