def __init__(self, ipcon, uid, version): PluginBase.__init__(self, ipcon, uid, 'Multi Touch Bricklet', version) self.setupUi(self) self.mt = BrickletMultiTouch(uid, ipcon) self.qtcb_touch_state.connect(self.cb_touch_state) self.mt.register_callback(self.mt.CALLBACK_TOUCH_STATE, self.qtcb_touch_state.emit) self.mt_labels = [ self.mt_label_0, self.mt_label_1, self.mt_label_2, self.mt_label_3, self.mt_label_4, self.mt_label_5, self.mt_label_6, self.mt_label_7, self.mt_label_8, self.mt_label_9, self.mt_label_10, self.mt_label_11, self.mt_label_12, ] for label in self.mt_labels: label.setStyleSheet("QLabel { background-color : black; }"); self.cbs = [ self.cb_0, self.cb_1, self.cb_2, self.cb_3, self.cb_4, self.cb_5, self.cb_6, self.cb_7, self.cb_8, self.cb_9, self.cb_10, self.cb_11, self.cb_12, ] for cb in self.cbs: cb.stateChanged.connect(self.state_changed) self.button_recalibrate.pressed.connect(self.recalibrate_pressed)
class MultiTouch(PluginBase, Ui_MultiTouch): qtcb_touch_state = pyqtSignal(int) def __init__(self, ipcon, uid, version): PluginBase.__init__(self, ipcon, uid, 'Multi Touch Bricklet', version) self.setupUi(self) self.mt = BrickletMultiTouch(uid, ipcon) self.qtcb_touch_state.connect(self.cb_touch_state) self.mt.register_callback(self.mt.CALLBACK_TOUCH_STATE, self.qtcb_touch_state.emit) self.mt_labels = [ self.mt_label_0, self.mt_label_1, self.mt_label_2, self.mt_label_3, self.mt_label_4, self.mt_label_5, self.mt_label_6, self.mt_label_7, self.mt_label_8, self.mt_label_9, self.mt_label_10, self.mt_label_11, self.mt_label_12, ] for label in self.mt_labels: label.setStyleSheet("QLabel { background-color : black; }"); self.cbs = [ self.cb_0, self.cb_1, self.cb_2, self.cb_3, self.cb_4, self.cb_5, self.cb_6, self.cb_7, self.cb_8, self.cb_9, self.cb_10, self.cb_11, self.cb_12, ] for cb in self.cbs: cb.stateChanged.connect(self.state_changed) self.button_recalibrate.pressed.connect(self.recalibrate_pressed) def recalibrate_pressed(self): value = self.sensitivity_spinbox.value() self.mt.set_electrode_sensitivity(value) self.mt.recalibrate() def state_changed(self, state): enabled_electrodes = 0 for i in range(13): if self.cbs[i].isChecked(): enabled_electrodes |= 1 << i self.mt.set_electrode_config(enabled_electrodes) def cb_touch_state(self, state): for i in range(13): if state & (1 << i): self.mt_labels[i].setStyleSheet("QLabel { background-color : green; }"); else: self.mt_labels[i].setStyleSheet("QLabel { background-color : black; }"); def cb_electrode_config(self, enabled_electrodes): for i in range(13): if enabled_electrodes & (1 << i): self.cbs[i].setChecked(True) else: self.cbs[i].setChecked(False) def cb_electrode_sensitivity(self, sensitivity): self.sensitivity_spinbox.setValue(sensitivity) def start(self): async_call(self.mt.get_electrode_sensitivity, None, self.cb_electrode_sensitivity, self.increase_error_count) async_call(self.mt.get_electrode_config, None, self.cb_electrode_config, self.increase_error_count) def stop(self): pass def get_url_part(self): return 'multi_touch' @staticmethod def has_device_identifier(device_identifier): return device_identifier == BrickletMultiTouch.DEVICE_IDENTIFIER