def __init__(self, main_window, nao: Nao, model=None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) self.dps_counter = 0 self.dps_timer = qtc.QTimer() self.dps_timer.timeout.connect(self.update_dps) self.dps_timer.start(1000) self.timer = qtc.QTimer() self.timer.timeout.connect(self.update_data) self.spnFramerate.valueChanged.connect(self.set_timer) self.should_update = False self.data = None self.cbxMount.completer().setFilterMode(qtc.Qt.MatchContains) self.cbxMount.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbxMount.activated[str].connect(self.subscribe) self.cbxMount.setCurrentText(self.model["subscribe_key"]) self.cbxMount.setFocus() self.btnSnap.clicked.connect(self.snap) if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) self.data = None self.btnSetAll.clicked.connect(self.set) self.btnSave.clicked.connect(self.save) self.btnExport.clicked.connect(lambda: self.export(self.get_data())) self.topSliders = [ self.topRollSlider, self.topPitchSlider, self.topYawSlider ] self.bottomSliders = [ self.bottomRollSlider, self.bottomPitchSlider, self.bottomYawSlider ] self.topSBs = [self.topRollSB, self.topPitchSB, self.topYawSB] self.bottomSBs = [ self.bottomRollSB, self.bottomPitchSB, self.bottomYawSB ] for i in range(3): self.topSliders[i].valueChanged.connect(self.setTopBySlider) self.bottomSliders[i].valueChanged.connect(self.setBottomBySlider) self.topSBs[i].valueChanged.connect(self.setTopBySpinBox) self.bottomSBs[i].valueChanged.connect(self.setBottomBySpinBox) self.update_signal.connect(self.update_data) if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "robotsFilter": (lambda: { "key": self.cbx_Key.currentText() }, lambda config: [self.cbx_Key.setCurrentText(config["key"])]) } self.cbx_Key.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_Key.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model(os.path.dirname(__file__) + "/model.json", model) self.data = None self.data_orig = None # btnSetAll passes -1 to update all keys self.btnSetAll.clicked.connect(lambda: self.set(-1)) self.btnSave.clicked.connect(self.save) self.btnExport.clicked.connect(lambda: self.export(self.get_data())) self.diffModeSelector.activated.connect(lambda index: self.export_diff(index)) # Set values when pressing enter without klicking set-button self.tblConfig.cellChanged.connect(lambda row, col: self.set(row)) self.cbxMount.completer().setFilterMode(qtc.Qt.MatchContains) self.cbxMount.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbxMount.activated[str].connect(self.select_mount) self.cbxMount.setCurrentText(self.model["subscribe_key"]) self.update_signal.connect(self.update_data) if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) self.play_timer = qtc.QTimer() self.capture_timer = qtc.QTimer() # Initialize model to assure consistent state reset_model(self.model) # Rendered View self.render_view = RenderView(self.model, self) format = qtg.QSurfaceFormat.defaultFormat() format.setSamples(4) self.render_view.setFormat(format) self.config_view = Config(self.model) self.tabWidget_left.addTab(self.render_view, "Display") self.tabWidget_left.addTab(self.config_view, "Config") # Load motion-file if self.model["opened_file"] != "": self.open_motion2file(self.model["opened_file"]) # Connect GUI elements to functions self.connect_gui() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, "Aliveness", Nao()) ui_utils.loadUi(__file__, self) self.loader.set_signal(self.update_signal) self.update_signal.connect(self.update_gui) self.robots = []
def __init__(self, main_window, nao: Nao, model=None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) """ self.data contains the data of curves. each curve data is a deque in this list: deque: - dict - "y": value # this key should be called 'y'; pyqtgraph - "timestamp": time received deque: .... """ self.data = {} self.should_update = False self.plots = [] self.cbxKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbxKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.data_received_signal.connect(self.data_received) self.spinFps.valueChanged.connect(self.set_fps) self.spinBufferSize.valueChanged.connect(self.set_buffer_size) self.legendCheckBox.stateChanged.connect(self.set_show_legend) self.listWidget.itemSelectionChanged.connect(self.select_curve) self.btnAccept.clicked.connect(self.accept) self.btnDiscard.clicked.connect(self.discard) self.btnAddCurve.clicked.connect(self.add_curve) self.btnDeleteCurve.clicked.connect(self.delete_curve) self.btnColor.clicked.connect(self.select_color) self.btnSnap.clicked.connect(self.snap) self.edit_color.returnPressed.connect( lambda: ui_utils.reset_textField_color(self.edit_color, self.edit_color.text())) self.update_list() self.timer = qtc.QTimer() self.timer.timeout.connect(self.update) self.reset_fps_spin() self.reset_buffer_size_spin() self.reset_show_legend() self.tabWidget.currentChanged.connect(self.tab_changed) self.tabWidget.setCurrentIndex(self.model["selected_tab"]) self._init_datalist() self._init_plot() self.data_received_signal.connect(self.data_received) if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model=None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) self.signal_update_data.connect(self.update_data) self.edit_top_value.textChanged.connect(lambda: self.update_value( CameraType.TOP, self.edit_top_value.text())) self.chk_top_bit0.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit1.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit2.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit3.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit4.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit5.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit6.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.chk_top_bit7.stateChanged.connect( lambda: self.update_value(CameraType.TOP)) self.edit_bottom_value.textChanged.connect(lambda: self.update_value( CameraType.BOTTOM, self.edit_bottom_value.text())) self.chk_bottom_bit0.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit1.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit2.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit3.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit4.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit5.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit6.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.chk_bottom_bit7.stateChanged.connect( lambda: self.update_value(CameraType.BOTTOM)) self.edit_register_addr.returnPressed.connect(self.address_entered) # Buttons self.btn_set_top.clicked.connect( lambda: self.clicked_set(CameraType.TOP)) self.btn_set_bottom.clicked.connect( lambda: self.clicked_set(CameraType.BOTTOM)) if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.nao = nao self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "transformation": (lambda: { "key": self.cbx_TransformationKey.currentText(), "key_lambda": self.edit_TransformationKeyLambda.toPlainText() }, lambda config: [ self.cbx_TransformationKey.setCurrentText(config["key"]), self.edit_TransformationKeyLambda.setPlainText(config[ "key_lambda"]) ]), "motionPlan": (lambda: { "key": self.cbx_MotionPlannerKey.currentText(), "key_lambda": self.edit_MotionPlannerKeyLambda.toPlainText(), "targetCircleDiameter": self.spin_targetCircleDiameter.value( ), "targetColor": self.edit_targetColor.text() }, lambda config: [ self.cbx_MotionPlannerKey.setCurrentText(config["key"]), self.edit_MotionPlannerKeyLambda.setPlainText(config[ "key_lambda"]), self.spin_targetCircleDiameter.setValue(config[ "targetCircleDiameter"]), ui_utils.reset_textField_color(self.edit_targetColor, config[ "targetColor"]) ]) } self.cbx_TransformationKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_TransformationKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_MotionPlannerKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_MotionPlannerKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) ui_utils.init_Color_UI(self.btn_targetColor, self.edit_targetColor) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, "Aliveness", Nao()) ui_utils.loadUi(__file__, self) self.update_signal.connect(self.update_gui) self.query_aliveness() self.refresh_button.clicked.connect(self.query_aliveness) self.robots = []
def __init__(self, parent): super(ConfigTab, self).__init__(parent) ui_utils.loadUi(__file__, self) self.parent = parent self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets()
def __init__(self, model): super(Config, self).__init__() ui_utils.loadUi(__file__, self) self.model = model self.showGridCheckBox.stateChanged.connect(self.update_show_grid) self.showRigCheckBox.stateChanged.connect(self.update_show_rig) self.showPlotCheckBox.stateChanged.connect(self.update_show_plot) self.spin_grid_distance.valueChanged.connect(self.update_grid_distance) self.spin_bone_width.valueChanged.connect(self.update_bone_width) self.reset_widgets()
def __init__(self, main_window, nao: Nao, model=None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", model) self.layer_modules = self.import_layer() self.map_tab = MapTab(self, self.nao, self.model["projection_corners"]) self.layer_tab = LayerTab(self, self.nao) self.config_tab = ConfigTab(self) self.tabWidget.addTab(self.map_tab, "Map") self.tabWidget.addTab(self.layer_tab, "Layer") self.tabWidget.addTab(self.config_tab, "Config") self.tabWidget.setCurrentIndex(self.model["selected_tab"]) if self.is_map_tab_selected(): self.map_tab.create_painter() self.tabWidget.currentChanged.connect(self.tab_changed)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "mode": (lambda: self.cbx_Mode.currentText(), lambda mode: self.cbx_Mode.setCurrentText(mode)), "filepath": (lambda: self.file_path_line_edit.text(), lambda mode: self.file_path_line_edit.insert(mode)), "subscribe_key": (lambda: self.cbx_Key.currentText(), lambda key: self.cbx_Key.setCurrentText(key)), "video_device": (lambda: self.cbx_Device.currentText(), lambda key: self.cbx_Device.setCurrentText(key)), } self.cbx_Mode.addItem("File") self.cbx_Mode.addItem("Debug Key") self.cbx_Mode.addItem("Video Device") for file in glob.glob("/dev/video*"): self.cbx_Device.addItem(file) self.cbx_Key.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_Key.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, parent, nao: Nao): super(LayerTab, self).__init__(parent) ui_utils.loadUi(__file__, self) self.parent = parent self.nao = nao self.btnAddLayer.setMenu(qtw.QMenu(self.btnAddLayer)) for name in self.parent.layer_modules: self.btnAddLayer.menu().addAction( name, lambda layer=name: self.add_layer(layer)) self.btnDeleteLayer.clicked.connect(self.delete_selected_layer) self.btnMoveUp.clicked.connect(self.move_layer_up) self.btnMoveDown.clicked.connect(self.move_layer_down) self.listWidget.itemSelectionChanged.connect(self.layer_selected) self.configWidget.hide() self.update_list()
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model(os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": ( lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": ( lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "teamPlayers": ( lambda: { "key": self.cbx_TeamPlayersKey.currentText(), "keyLambda": self.edit_TeamPlayersKeyLambda.toPlainText(), "showPlayer": self.playerCheckbox.isChecked(), "poseCircleDiameter": self.spin_poseCircleDiameter.value(), "showTarget": self.targetCheckbox.isChecked(), "targetCircleDiameter": self.spin_targetCircleDiameter.value(), "showFOV": self.fovCheckbox.isChecked(), "maxDistance": self.spin_maxDistance.value(), "cameraOpeningAngle": self.spin_cameraOpeningAngle.value(), "defaultColor": self.edit_defaultColor.text(), "keeperColor": self.edit_keeperColor.text(), "defenderLeftColor": self.edit_defenderLeftColor.text(), "defenderRightColor": self.edit_defenderRightColor.text(), "supporterColor": self.edit_supporterColor.text(), "strikerColor": self.edit_strikerColor.text(), "bishopColor": self.edit_bishopColor.text(), "replacement_keeperColor": self.edit_replacementKeeperColor.text(), "showSearchPosition": self.searchPositionCheckbox.isChecked(), "searchPositionDiameter": self.spin_searchPositionDiameter.value()}, lambda config: [ self.cbx_TeamPlayersKey.setCurrentText( config["key"]), self.edit_TeamPlayersKeyLambda.setPlainText( config["keyLambda"]), self.playerCheckbox.setChecked( config["showPlayer"]), self.spin_poseCircleDiameter.setValue( config["poseCircleDiameter"]), self.targetCheckbox.setChecked( config["showTarget"]), self.spin_targetCircleDiameter.setValue( config["targetCircleDiameter"]), self.fovCheckbox.setChecked( config["showFOV"]), self.spin_maxDistance.setValue( config["maxDistance"]), self.spin_cameraOpeningAngle.setValue( config["cameraOpeningAngle"]), ui_utils.reset_textField_color( self.edit_defaultColor, config["defaultColor"]), ui_utils.reset_textField_color( self.edit_keeperColor, config["keeperColor"]), ui_utils.reset_textField_color( self.edit_defenderLeftColor, config["defenderLeftColor"]), ui_utils.reset_textField_color( self.edit_defenderRightColor, config["defenderRightColor"]), ui_utils.reset_textField_color( self.edit_supporterColor, config["supporterColor"]), ui_utils.reset_textField_color( self.edit_strikerColor, config["strikerColor"]), ui_utils.reset_textField_color( self.edit_bishopColor, config["bishopColor"]), ui_utils.reset_textField_color( self.edit_replacementKeeperColor, config["replacement_keeperColor"]), self.searchPositionCheckbox.setChecked( config["showSearchPosition"]), self.spin_searchPositionDiameter.setValue( config["searchPositionDiameter"])]) } self.cbx_TeamPlayersKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_TeamPlayersKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) ui_utils.init_Color_UI( self.btn_defaultColor, self.edit_defaultColor) ui_utils.init_Color_UI( self.btn_keeperColor, self.edit_keeperColor) ui_utils.init_Color_UI( self.btn_defenderLeftColor, self.edit_defenderLeftColor) ui_utils.init_Color_UI( self.btn_defenderRightColor, self.edit_defenderRightColor) ui_utils.init_Color_UI( self.btn_supporterColor, self.edit_supporterColor) ui_utils.init_Color_UI( self.btn_strikerColor, self.edit_strikerColor) ui_utils.init_Color_UI( self.btn_bishopColor, self.edit_bishopColor) ui_utils.init_Color_UI( self.btn_replacementKeeperColor, self.edit_replacementKeeperColor) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "pose": (lambda: { "key": self.cbx_PoseKey.currentText(), "keyLambda": self.edit_poseKeyLambda.toPlainText(), "drawPose": self.drawPoseCheckBox.isChecked(), "positionCircleDiameter": self.spin_positionCircleDiameter. value(), "orientationLineLength": self.spin_orientationLineLength.value( ), "fixedColor": self.edit_fixedColor.text(), "useFixedColor": self.useFixedColorCheckBox.isChecked(), "roleKey": self.cbx_RoleKey.currentText(), "roleKeyLambda": self.edit_roleKeyLambda.toPlainText(), "defaultColor": self.edit_defaultColor.text(), "keeperColor": self.edit_keeperColor.text(), "defenderColor": self.edit_defenderColor.text(), "supporterColor": self.edit_supporterColor.text(), "strikerColor": self.edit_strikerColor.text(), "bishopColor": self.edit_bishopColor.text(), "replacement_keeperColor": self.edit_replacementKeeperColor. text(), "loserColor": self.edit_loserColor.text(), "searcherColor": self.edit_searcherColor.text() }, lambda config: [ self.cbx_PoseKey.setCurrentText(config["key"]), self.edit_poseKeyLambda.setPlainText(config["keyLambda"]), self.drawPoseCheckBox.setChecked(config["drawPose"]), self.spin_positionCircleDiameter.setValue(config[ "positionCircleDiameter"]), self.spin_orientationLineLength.setValue(config[ "orientationLineLength"]), ui_utils.reset_textField_color(self.edit_fixedColor, config[ "fixedColor"]), self.useFixedColorCheckBox.setChecked(config["useFixedColor"]), self.cbx_RoleKey.setCurrentText(config["roleKey"]), self.edit_roleKeyLambda.setPlainText(config["roleKeyLambda"]), ui_utils.reset_textField_color(self.edit_defaultColor, config[ "defaultColor"]), ui_utils.reset_textField_color(self.edit_keeperColor, config[ "keeperColor"]), ui_utils.reset_textField_color(self.edit_defenderColor, config[ "defenderColor"]), ui_utils.reset_textField_color(self.edit_supporterColor, config["supporterColor"]), ui_utils.reset_textField_color(self.edit_strikerColor, config[ "strikerColor"]), ui_utils.reset_textField_color(self.edit_bishopColor, config[ "bishopColor"]), ui_utils.reset_textField_color( self.edit_replacementKeeperColor, config[ "replacement_keeperColor"]), ui_utils.reset_textField_color(self.edit_loserColor, config[ "loserColor"]), ui_utils.reset_textField_color(self.edit_searcherColor, config[ "searcherColor"]) ]), "fov": (lambda: { "jointSensorDataKey": self.cbx_JointSensorDataKey.currentText(), "jointSensorDataKeyLambda": self.edit_jointSensorDataKeyLambda.toPlainText(), "drawFOV": self.drawFOVCheckBox.isChecked(), "maxDistance": self.spin_maxDistance.value(), "cameraOpeningAngle": self.spin_cameraOpeningAngle.value() }, lambda config: [ self.cbx_JointSensorDataKey.setCurrentText(config[ "jointSensorDataKey"]), self.edit_jointSensorDataKeyLambda.setPlainText(config[ "jointSensorDataKeyLambda"]), self.drawFOVCheckBox.setChecked(config["drawFOV"]), self.spin_maxDistance.setValue(config["maxDistance"]), self.spin_cameraOpeningAngle.setValue(config[ "cameraOpeningAngle"]) ]), "motionPlan": (lambda: { "key": self.cbx_MotionPlannerKey.currentText(), "keyLambda": self.edit_motionPlannerKeyLambda.toPlainText(), "drawMotionPlan": self.drawMotionPlanCheckBox.isChecked(), "targetCircleDiameter": self.spin_targetCircleDiameter.value( ), "drawTranslation": self.drawTranslationCheckBox.isChecked(), "translationColor": self.edit_translationColor.text() }, lambda config: [ self.cbx_MotionPlannerKey.setCurrentText(config["key"]), self.edit_motionPlannerKeyLambda.setPlainText(config[ "keyLambda"]), self.drawMotionPlanCheckBox.setChecked(config["drawMotionPlan" ]), self.spin_targetCircleDiameter.setValue(config[ "targetCircleDiameter"]), self.drawTranslationCheckBox.setChecked(config[ "drawTranslation"]), ui_utils.reset_textField_color(self.edit_translationColor, config["translationColor"]) ]), "ballSearch": (lambda: { "key": self.cbx_BallSearchKey.currentText(), "keyLambda": self.edit_ballSearchKeyLambda.toPlainText(), "drawSearchTarget": self.drawBallSearchCheckBox.isChecked(), "searchCircleDiameter": self.spin_searchCircleDiameter.value( ) }, lambda config: [ self.cbx_BallSearchKey.setCurrentText(config["key"]), self.edit_ballSearchKeyLambda.setPlainText(config["keyLambda"] ), self.drawBallSearchCheckBox.setChecked(config[ "drawSearchTarget"]), self.spin_searchCircleDiameter.setValue(config[ "searchCircleDiameter"]) ]) } self.cbx_PoseKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_PoseKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_RoleKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_RoleKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_JointSensorDataKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_JointSensorDataKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_MotionPlannerKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_MotionPlannerKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_BallSearchKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_BallSearchKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) ui_utils.init_Color_UI(self.btn_fixedColor, self.edit_fixedColor) ui_utils.init_Color_UI(self.btn_defaultColor, self.edit_defaultColor) ui_utils.init_Color_UI(self.btn_keeperColor, self.edit_keeperColor) ui_utils.init_Color_UI(self.btn_defenderColor, self.edit_defenderColor) ui_utils.init_Color_UI(self.btn_supporterColor, self.edit_supporterColor) ui_utils.init_Color_UI(self.btn_strikerColor, self.edit_strikerColor) ui_utils.init_Color_UI(self.btn_bishopColor, self.edit_bishopColor) ui_utils.init_Color_UI(self.btn_replacementKeeperColor, self.edit_replacementKeeperColor) ui_utils.init_Color_UI(self.btn_loserColor, self.edit_loserColor) ui_utils.init_Color_UI(self.btn_searcherColor, self.edit_searcherColor) ui_utils.init_Color_UI(self.btn_translationColor, self.edit_translationColor) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, main_window, nao: nao.Nao, model: typing.Dict = None): super(Main, self).__init__(main_window, self.name, nao) ui_utils.loadUi(__file__, self) self.model = model self.currentSubscriptions = set() self.configWidget.hide() self.resultWidget.hide() self.btnCapture.clicked.connect(self.capture) self.btnCalibrate.clicked.connect(self.startCalib) self.btnSave.clicked.connect(self.saveCalib) self.btnExport.clicked.connect(self.exportCalibToFile) self.btnShowResults.clicked.connect( lambda: self.resultWidget.setVisible(not self.resultWidget. isVisible())) self.btnConfAndManualMode.clicked.connect( lambda: self.configWidget.setVisible(not self.configWidget. isVisible())) self.checkBoxCalibModeEnable.stateChanged.connect( lambda: self.setCalib(self.checkBoxCalibModeEnable.isChecked())) self.btnManualMove.clicked.connect( lambda: self.moveRobot(float(self.txtPitch.text().strip()), float(self.txtYaw.text().strip()))) # As capturing automatically project, no need to specifically call project self.btnProjectMarkers.clicked.connect(self.capture) self.btnPlayMotionSeq.clicked.connect( lambda: self.setMotionSequenceState(1)) self.btnStopMotion.clicked.connect( lambda: self.setMotionSequenceState(0)) self.btnDownload.clicked.connect(self.saveCapturesToFile) #### Set UI update #### self.frame_rate = 20 self.updateInterval = 1.0 / float(self.frame_rate) self.timer = qtc.QTimer() self.timer.timeout.connect(self.update) self.set_timer(self.frame_rate) # Motion command things. # The UI update timer itself will be used for timing the capture stuff. # motion command sending; values in seconds self.motionDelay = 2.0 # wait n seconds after motion command is sent before triggering self.captureDelay = 2.3 self.motionCommandList = CalibMotionGenerator.generateHeadMotion() self.motionSeqIndex = 0 self.motionSeqState = 0 self.elapsedTime = 0 self.trigger_state = {n_cam.TOP: False, n_cam.BOTTOM: False} #### capture #### self.captureFlag = False # self.captureInfo = CalgetGroundToCamera #### store data of each capture. #### self.captures = [] #### img data #### self.cur_cam_img_data = { n_cam.TOP: ImageWithKinematicData(n_cam.TOP, Main.CAM_MOUNT[n_cam.TOP], 0, 0, [], False), n_cam.BOTTOM: ImageWithKinematicData(n_cam.BOTTOM, Main.CAM_MOUNT[n_cam.BOTTOM], 0, 0, [], False) } self.cur_matrix_cap = { n_cam.TOP: n_kinCap(n_cam.TOP), n_cam.BOTTOM: n_kinCap(n_cam.BOTTOM) } # rotation pose for the RC17 rig (using charuco): [math.pi/2,0,-math.pi/2] # translation for the RC17 rig: 395 in x; self.calib_board = BoardProps(35, 50, 6, 11, BoardProps.PatternType.CHARUCO_BOARD, [math.pi / 2, 0, -math.pi / 2], [400, 150, 15]) self.calibrator = NaoCalib( NaoCalibSettings([self.calib_board], self.checkBoxIntrinsicTop.isChecked(), self.checkBoxIntrinsicBottom.isChecked(), self.checkBoxExtrinsicTop.isChecked(), self.checkBoxExtrinsicBottom.isChecked())) self.btnClearCaptures.clicked.connect(self.clearCaptureBtnHandler) self.results = None self.enableDisableCalibButton() #### connect update config signal #### self.currentConfig = None self.update_config_signal.connect(self.updateConfig) #### connect #### if self.nao.is_connected(): self.connect(self.nao, self.frame_rate)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "transformation": (lambda: { "key": self.cbx_TransformationKey.currentText(), "key_lambda": self.edit_TransformationKeyLambda.toPlainText(), }, lambda config: [ self.cbx_TransformationKey.setCurrentText(config["key"]), self.edit_TransformationKeyLambda.setPlainText(config[ "key_lambda"]), ]), "pose": (lambda: { "key": self.cbx_PoseKey.currentText(), "keyLambda": self.edit_poseKeyLambda.toPlainText(), "positionCircleDiameter": self.spin_positionCircleDiameter. value(), "orientationLineLength": self.spin_orientationLineLength. value(), "color": self.edit_poseColor.text() }, lambda config: [ self.cbx_PoseKey.setCurrentText(config["key"]), self.edit_poseKeyLambda.setPlainText(config["keyLambda"]), self.spin_positionCircleDiameter.setValue(config[ "positionCircleDiameter"]), self.spin_orientationLineLength.setValue(config[ "orientationLineLength"]), ui_utils.reset_textField_color(self.edit_poseColor, config[ "color"]) ]), "fov": (lambda: { "jointSensorDataKey": self.cbx_JointSensorDataKey.currentText(), "jointSensorDataKeyLambda": self.edit_jointSensorDataKeyLambda.toPlainText(), "maxDistance": self.spin_maxDistance.value(), "cameraOpeningAngle": self.spin_cameraOpeningAngle.value() }, lambda config: [ self.cbx_JointSensorDataKey.setCurrentText(config[ "jointSensorDataKey"]), self.edit_jointSensorDataKeyLambda.setPlainText(config[ "jointSensorDataKeyLambda"]), self.spin_maxDistance.setValue(config["maxDistance"]), self.spin_cameraOpeningAngle.setValue(config[ "cameraOpeningAngle"]) ]) } self.cbx_PoseKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_PoseKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_TransformationKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_TransformationKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_JointSensorDataKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_JointSensorDataKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) ui_utils.init_Color_UI(self.btn_poseColor, self.edit_poseColor) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layout_dir: str, panel_dir: str, verbose: bool, timeout: float, default_config_dir: str): logger.debug(__name__ + ": Setting up main window") init_time = time.time() super(MainWindow, self).__init__() ui_utils.loadUi(__file__, self) self.nao = nao.Nao() self.identifier = uuid.uuid4() self.default_config_dir = default_config_dir self.layout_dir = layout_dir self.panel_dir = panel_dir self.verbose = verbose self.panel_modules = {} self.import_panels() # Set Nao info when connected self.nao_info_received.connect( lambda mount: self.set_nao_head_body_number(mount)) self.connection_established_signal.connect( self._on_connection_established) self.connection_lost_signal.connect(self._on_connection_lost) self.connection_failure_signal.connect(self._on_connection_failure) self.actionExit.triggered.connect(self.close) self.actionRequest_lists.triggered.connect( lambda: self.request_lists()) self.actionClose_all.triggered.connect(lambda: self.close_all_panels()) self.actionDebug.triggered.connect( lambda checked, level=logging.DEBUG: self.set_log_level(level)) self.actionInfo.triggered.connect( lambda checked, level=logging.INFO: self.set_log_level(level)) self.actionWarning.triggered.connect( lambda checked, level=logging.WARNING: self.set_log_level(level)) self.actionError.triggered.connect( lambda checked, level=logging.ERROR: self.set_log_level(level)) self.actionOff.triggered.connect( lambda checked, level=logging.CRITICAL: self.set_log_level(level)) self.cbxSelectNao.completer().setFilterMode(qtc.Qt.MatchContains) self.cbxSelectNao.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbxSelectNao.lineEdit().returnPressed.connect(self.connect) self.btnConnectNao.clicked.connect(self.connect) self.btnDisconnectNao.clicked.connect(self.disconnect) self.btnLoad.clicked.connect(self.load_layout) self.btnSave.clicked.connect(self.save_layout) self.actionSave.triggered.connect(self.save_layout) self.toolBar.addWidget(self.connect_to_label) self.toolBar.addWidget(self.cbxSelectNao) self.toolBar.addWidget(self.btnConnectNao) self.toolBar.addWidget(self.btnDisconnectNao) self.toolBar_spacer = qtw.QWidget() self.toolBar_spacer.setMinimumWidth(10) self.toolBar.addWidget(self.toolBar_spacer) self.toolBar.addWidget(self.layout_label) self.toolBar.addWidget(self.cbxSelectLayout) self.toolBar.addWidget(self.btnLoad) self.toolBar.addWidget(self.btnSave) self.centralwidget.hide() self.settings = qtc.QSettings(self.layout_dir + "main.config", qtc.QSettings.NativeFormat) self.fill_layout_cbx() self.restore() if timeout is not None: self.nao.timeout = float(timeout) logger.debug(__name__ + ": Setting up main window took: " + logger.timerLogStr(init_time))
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.field_types = { "default": { "center_x": 0.0, "center_y": 0.0, "field": { "length": 9, "width": 6, "lineWidth": 0.05, "penaltyMarkerSize": 0.1, "penaltyMarkerDistance": 1.3, "goalBoxAreaLength": 0.6, "goalBoxAreaWidth": 2.2, "penaltyAreaLength": 1.65, "penaltyAreaWidth": 4.0, "centerCircleDiameter": 1.5, "borderStripWidth": 0.7, "hide_background": False }, "goal": { "postDiameter": 0.1, "height": 0.8, "innerWidth": 1.5, "depth": 0.5 } }, "smd": { "center_x": 0.0, "center_y": 0.0, "field": { "length": 7.5, "width": 5, "lineWidth": 0.05, "penaltyMarkerSize": 0.1, "penaltyMarkerDistance": 1.3, "goalBoxAreaLength": 0.6, "goalBoxAreaWidth": 2.2, "penaltyAreaLength": 1.65, "penaltyAreaWidth": 3.6, "centerCircleDiameter": 1.25, "borderStripWidth": 0.4, "hide_background": False }, "goal": { "postDiameter": 0.1, "height": 0.8, "innerWidth": 1.5, "depth": 0.5 } } } self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "field": (lambda: { "width": self.spin_field_width.value(), "length": self.spin_field_length.value(), "lineWidth": self.spin_field_lineWidth.value(), "penaltyMarkerSize": self.spin_field_penaltyMarkerSize.value(), "penaltyMarkerDistance": self.spin_field_penaltyMarkerDistance.value(), "goalBoxAreaLength": self.spin_field_goalBoxAreaLength.value(), "goalBoxAreaWidth": self.spin_field_goalBoxAreaWidth.value(), "penaltyAreaLength": self.spin_field_penaltyAreaLength.value(), "penaltyAreaWidth": self.spin_field_penaltyAreaWidth.value(), "centerCircleDiameter": self.spin_field_centerCircleDiameter.value(), "borderStripWidth": self.spin_field_borderStripWidth.value(), "hide_background": self.hide_background_check_box.checkState() }, lambda config: [ self.spin_field_width.setValue(config["width"]), self.spin_field_length.setValue(config["length"]), self.spin_field_lineWidth.setValue(config["lineWidth"]), self.spin_field_penaltyMarkerSize.setValue(config[ "penaltyMarkerSize"]), self.spin_field_penaltyMarkerDistance.setValue(config[ "penaltyMarkerDistance"]), self.spin_field_goalBoxAreaLength.setValue(config[ "goalBoxAreaLength"]), self.spin_field_goalBoxAreaWidth.setValue(config[ "goalBoxAreaWidth"]), self.spin_field_penaltyAreaLength.setValue(config[ "penaltyAreaLength"]), self.spin_field_penaltyAreaWidth.setValue(config[ "penaltyAreaWidth"]), self.spin_field_centerCircleDiameter.setValue(config[ "centerCircleDiameter"]), self.spin_field_borderStripWidth.setValue(config[ "borderStripWidth"]), self.hide_background_check_box.setChecked(config[ "hide_background"]) ]), "goal": (lambda: { "postDiameter": self.spin_goal_postDiameter.value(), "height": self.spin_goal_height.value(), "innerWidth": self.spin_goal_innerWidth.value(), "depth": self.spin_goal_depth.value() }, lambda config: [ self.spin_goal_postDiameter.setValue(config["postDiameter"]), self.spin_goal_height.setValue(config["height"]), self.spin_goal_innerWidth.setValue(config["innerWidth"]), self.spin_goal_depth.setValue(config["depth"]) ]) } self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.fill_field_type_menu() self.reset_widgets()
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.nao = nao self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "transformation": (lambda: { "key": self.cbx_TransformationKey.currentText(), "key_lambda": self.edit_TransformationKeyLambda.toPlainText() }, lambda config: [ self.cbx_TransformationKey.setCurrentText(config["key"]), self.edit_TransformationKeyLambda.setPlainText(config[ "key_lambda"]) ]), "obstacles": (lambda: { "key": self.cbx_ObstacleDataKey.currentText(), "key_lambda": self.edit_ObstacleDataKeyLambda.toPlainText(), "goalPostColor": self.edit_goalPostColor.text(), "unknownColor": self.edit_unknownColor.text(), "anonymousRobotColor": self.edit_anonymousRobotColor.text(), "hostileRobotColor": self.edit_hostileRobotColor.text(), "teamRobotColor": self.edit_teamRobotColor.text(), "fallenAnonymousRobotColor": self.edit_fallenAnonymousRobotColor.text(), "fallenHostileRobotColor": self.edit_fallenHostileRobotColor.text(), "fallenTeamRobotColor": self.edit_fallenTeamRobotColor.text(), "ballColor": self.edit_ballColor.text(), "freeKickAreaColor": self.edit_freeKickAreaColor.text(), "penWidth": self.spin_penWidth.value() }, lambda config: [ self.cbx_ObstacleDataKey.setCurrentText(config["key"]), self.edit_ObstacleDataKeyLambda.setPlainText(config[ "key_lambda"]), ui_utils.reset_textField_color(self.edit_goalPostColor, config[ "goalPostColor"]), ui_utils.reset_textField_color(self.edit_unknownColor, config[ "unknownColor"]), ui_utils.reset_textField_color(self.edit_anonymousRobotColor, config["anonymousRobotColor"]), ui_utils.reset_textField_color(self.edit_hostileRobotColor, config["hostileRobotColor"]), ui_utils.reset_textField_color(self.edit_teamRobotColor, config["teamRobotColor"]), ui_utils.reset_textField_color( self.edit_fallenAnonymousRobotColor, config[ "fallenAnonymousRobotColor"]), ui_utils.reset_textField_color( self.edit_fallenHostileRobotColor, config[ "fallenHostileRobotColor"]), ui_utils.reset_textField_color(self.edit_fallenTeamRobotColor, config["fallenTeamRobotColor"]), ui_utils.reset_textField_color(self.edit_ballColor, config[ "ballColor"]), ui_utils.reset_textField_color(self.edit_freeKickAreaColor, config["freeKickAreaColor"]), self.spin_penWidth.setValue(config["penWidth"]) ]) } self.cbx_TransformationKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_TransformationKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.cbx_ObstacleDataKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_ObstacleDataKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) ui_utils.init_Color_UI(self.btn_goalPostColor, self.edit_goalPostColor) ui_utils.init_Color_UI(self.btn_unknownColor, self.edit_unknownColor) ui_utils.init_Color_UI(self.btn_anonymousRobotColor, self.edit_anonymousRobotColor) ui_utils.init_Color_UI(self.btn_hostileRobotColor, self.edit_hostileRobotColor) ui_utils.init_Color_UI(self.btn_teamRobotColor, self.edit_teamRobotColor) ui_utils.init_Color_UI(self.btn_fallenAnonymousRobotColor, self.edit_fallenAnonymousRobotColor) ui_utils.init_Color_UI(self.btn_fallenHostileRobotColor, self.edit_fallenHostileRobotColor) ui_utils.init_Color_UI(self.btn_fallenTeamRobotColor, self.edit_fallenTeamRobotColor) ui_utils.init_Color_UI(self.btn_ballColor, self.edit_ballColor) ui_utils.init_Color_UI(self.btn_freeKickAreaColor, self.edit_freeKickAreaColor) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.nao = nao self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "kickRatingChunksKey": (lambda: self.cbx_kickRatingChunksKey.currentText(), lambda value: self.cbx_kickRatingChunksKey.setCurrentText(value)), "kickRatingChunkWeightsKey": (lambda: self.cbx_kickRatingChunkWeightsKey.currentText(), lambda value: self.cbx_kickRatingChunkWeightsKey.setCurrentText(value)), "rateKickKey": (lambda: self.cbx_rateKick.currentText(), lambda value: self.cbx_rateKick.setCurrentText(value)), "hitPointsKey": (lambda: self.cbx_hitPointsKey.currentText(), lambda value: self.cbx_hitPointsKey.setCurrentText(value)), "teamBallPositionKey": (lambda: self.cbx_teamBallPositionKey.currentText(), lambda value: self.cbx_teamBallPositionKey.setCurrentText(value)), "firstShadowPointKey": (lambda: self.cbx_firstShadowPointKey.currentText(), lambda value: self.cbx_firstShadowPointKey.setCurrentText(value)), "secondShadowPointKey": (lambda: self.cbx_secondShadowPointKey.currentText(), lambda value: self.cbx_secondShadowPointKey.setCurrentText(value) ), "firstShadowPointAfterKey": (lambda: self.cbx_firstShadowPointAfterKey.currentText(), lambda value: self.cbx_firstShadowPointAfterKey.setCurrentText(value)), "secondShadowPointAfterKey": (lambda: self.cbx_secondShadowPointAfterKey.currentText(), lambda value: self.cbx_secondShadowPointAfterKey.setCurrentText(value)), } self.cbx_kickRatingChunksKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_kickRatingChunkWeightsKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_rateKick.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_hitPointsKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_teamBallPositionKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_firstShadowPointKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_secondShadowPointKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_firstShadowPointAfterKey.completer().setFilterMode( qtc.Qt.MatchContains) self.cbx_secondShadowPointAfterKey.completer().setFilterMode( qtc.Qt.MatchContains) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.layer_model = ui_utils.load_model(os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.nao = nao self.identifier = uuid.uuid4() self.config_to_ui = { "center_x": ( lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": ( lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "search": ( lambda: { "key": self.cbx_MapKey.currentText(), "keyLambda": self.edit_MapKeyLambda.toPlainText(), "showProbability": self.probabilityCheckbox.isChecked(), "showNumericProbability": self.probabilityNumericCheckbox.isChecked(), "showAge": self.ageCheckbox.isChecked(), "showNumericAge": self.ageNumericCheckbox.isChecked(), "showVoronoiSeeds": self.voronoiSeedsCheckbox.isChecked() }, lambda config: [ self.cbx_MapKey.setCurrentText( config["key"]), self.edit_MapKeyLambda.setPlainText( config["keyLambda"]), self.probabilityCheckbox.setChecked( config["showProbability"]), self.probabilityNumericCheckbox.setChecked( config["showNumericProbability"]), self.ageCheckbox.setChecked( config["showAge"]), self.ageNumericCheckbox.setChecked( config["showNumericAge"]), self.voronoiSeedsCheckbox.setChecked( config["showVoronoiSeeds"]) ] ) } self.cbx_MapKey.completer().setFilterMode(qtc.Qt.MatchContains) self.cbx_MapKey.completer().setCompletionMode( qtw.QCompleter.PopupCompletion) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets() if self.nao.is_connected(): self.connect(self.nao)
def __init__(self, layer_model, parent, update_callback, nao: Nao): super(Config, self).__init__(parent) ui_utils.loadUi(__file__, self) self.layer_model = ui_utils.load_model( os.path.dirname(__file__) + "/model.json", layer_model) self.update_callback = update_callback self.config_to_ui = { "center_x": (lambda: self.spin_center_x.value(), lambda value: self.spin_center_x.setValue(value)), "center_y": (lambda: self.spin_center_y.value(), lambda value: self.spin_center_y.setValue(value)), "coordinateSystem": (lambda: { "width": self.spin_coordinateSystem_width.value(), "height": self.spin_coordinateSystem_height.value(), "backgroundColor": self.edit_bgColor.text(), "backgroundAlpha": self.spin_coordinateSystem_bgAlpha.value(), "lineWidth": self.spin_coordinateSystem_lineWidth.value(), "stepSizeY": self.spin_coordinateSystem_stepSizeY.value(), "stepSizeX": self.spin_coordinateSystem_stepSizeX.value(), "lineColor": self.edit_lineColor.text(), "polar": self.polarCheckBox.isChecked(), "polarAngleStepSize": self.spin_coordinateSystem_angleStepSize.value(), "radialStepSize": self.spin_coordinateSystem_radialStepSize.value() }, lambda config: [ self.spin_coordinateSystem_width.setValue(config["width"]), self.spin_coordinateSystem_height.setValue(config["height"]), ui_utils.reset_textField_color(self.edit_bgColor, config[ "backgroundColor"]), self.spin_coordinateSystem_bgAlpha.setValue(config[ "backgroundAlpha"]), self.spin_coordinateSystem_lineWidth.setValue(config[ "lineWidth"]), self.spin_coordinateSystem_stepSizeY.setValue(config[ "stepSizeY"]), self.spin_coordinateSystem_stepSizeX.setValue(config[ "stepSizeX"]), ui_utils.reset_textField_color(self.edit_lineColor, config[ "lineColor"]), self.polarCheckBox.setChecked(config["polar"]), self.spin_coordinateSystem_angleStepSize.setValue(config[ "polarAngleStepSize"]), self.spin_coordinateSystem_radialStepSize.setValue(config[ "radialStepSize"]) ]) } ui_utils.init_Color_UI(self.btn_bgColor, self.edit_bgColor) ui_utils.init_Color_UI(self.btn_lineColor, self.edit_lineColor) self.btnAccept.pressed.connect(self.accept) self.btnDiscard.pressed.connect(self.discard) self.reset_widgets()