def data(self, index=QModelIndex(), role=Qt.DisplayRole): if not index.isValid(): return node = index.internalPointer() column = self.columns[index.column()] if role in (Qt.DisplayRole, Qt.EditRole): if column.name == 'key': return node.key if column.name == 'name': return node.name elif column.name == 'value': if isinstance(node, JsonItem): if node.value is None: if node.type != 'bool': return "-" else: if node.type in ('int', 'float'): return node.value_str() + ' ' + node.unit elif role == Qt.CheckStateRole: if column.name == 'value': if isinstance(node, JsonItem): if node.type == 'bool': return Qt.Checked if node.value else Qt.Unchecked elif role == Qt.DecorationRole: if column.name == 'key': if node.up_to_date and self.mainwindow.connected: return pixmap("emblem_uptodate.png") else: return pixmap("emblem_outofdate.png")
def disconnect(self): self.worker.quit() self.serial.close() self.connectAction.setText(self.tr("Connect")) self.connectAction.setIcon(QIcon(pixmap("network-connect-3.png"))) self.serialdlgAction.setEnabled(True) self.connectionstateLabel.setText(self.tr("Not connected")) self._connected = False self.objectexplorer.refresh()
def connect(self): # Load port setting port = self.settings.get(PORT_SETTING) baudrate = self.settings.get(BAUDRATE_SETTING) # If no port has been selected before show serial settings dialog if port is None: if self.show_serialdlg() == QDialog.Rejected: return port = self.settings.get(PORT_SETTING) baudrate = self.settings.get(BAUDRATE_SETTING) # Serial connection try: self.serial.port = port self.serial.baudrate = baudrate self.serial.open() except ValueError: QMessageBox.critical( self, QCoreApplication.applicationName(), self.tr("Serial parameters e.g. baudrate, databits are out " "of range.") ) except SerialException: QMessageBox.critical( self, QCoreApplication.applicationName(), self.tr("The device '%s' can not be found or can not be " "configured." % port) ) else: self.worker = SerialWorker(self.serial, self) self.worker.data_received.connect(self.receive_serialdata) self.worker.start() self.connectAction.setText(self.tr("Disconnect")) self.connectAction.setIcon(QIcon(pixmap("network-disconnect-3.png"))) self.serialdlgAction.setEnabled(False) self.connectionstateLabel.setText( self.tr("Connected to %s") % port) self._connected = True self.objectexplorer.refresh()
def __init__(self, rootnode: JsonNode, parent): super().__init__(parent) self.mainwindow = parent self.setModel(JsonDataModel(rootnode, self.mainwindow)) self.model().dataChanged.connect(self.data_changed) self.setItemDelegate(MyItemDelegate()) self.setDragDropMode(QTreeView.DragDrop) self.setDragEnabled(True) self.setAcceptDrops(True) self.setDropIndicatorShown(True) self.doubleClicked.connect(self.double_clicked) # context menu self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.show_contextmenu) # actions # properties action self.propertiesAction = QAction(self.tr("properties"), self) self.propertiesAction.setIcon(QIcon(pixmap("document_properties.png"))) self.propertiesAction.triggered.connect(self.show_properties) # edit action self.editAction = QAction(self.tr("edit value"), self) self.editAction.setShortcut("F2") self.editAction.setIcon(QIcon(pixmap("edit.png"))) self.editAction.triggered.connect(self.edit_value) # edit key action self.editkeyAction = QAction(self.tr("edit key"), self) self.editkeyAction.setIcon(QIcon(pixmap("kgpg_key1_kgpg.png"))) self.editkeyAction.triggered.connect(self.edit_key) # insert item action self.insertitemAction = QAction(self.tr("insert item"), self) self.insertitemAction.setIcon(QIcon(pixmap("list_add.png"))) self.insertitemAction.triggered.connect(self.insert_item) # insert node action self.insertnodeAction = QAction(self.tr("insert node"), self) self.insertnodeAction.setIcon(QIcon(pixmap("list_add.png"))) self.insertnodeAction.triggered.connect(self.insert_node) # remove item action self.removeitemAction = QAction(self.tr("remove"), self) self.removeitemAction.setIcon(QIcon(pixmap("list_remove"))) self.removeitemAction.triggered.connect(self.remove_item)
def _init_actions(self): # Serial Dialog self.serialdlgAction = QAction(self.tr("Serial Settings..."), self) self.serialdlgAction.setShortcut("F6") self.serialdlgAction.setIcon(QIcon(pixmap("configure.png"))) self.serialdlgAction.triggered.connect(self.show_serialdlg) # Connect self.connectAction = QAction(self.tr("Connect"), self) self.connectAction.setShortcut("F5") self.connectAction.setIcon(QIcon(pixmap("network-connect-3.png"))) self.connectAction.triggered.connect(self.toggle_connect) # Quit self.quitAction = QAction(self.tr("Quit"), self) self.quitAction.setShortcut("Alt+F4") self.quitAction.setIcon(QIcon(pixmap("window-close-3.png"))) self.quitAction.triggered.connect(self.close) # Save Config as self.saveasAction = QAction(self.tr("Save as..."), self) self.saveasAction.setShortcut("Ctrl+Shift+S") self.saveasAction.setIcon(QIcon(pixmap("document-save-as-5.png"))) self.saveasAction.triggered.connect(self.show_savecfg_dlg) # Save file self.saveAction = QAction(self.tr("Save"), self) self.saveAction.setShortcut("Ctrl+S") self.saveAction.setIcon(QIcon(pixmap("document-save-5.png"))) self.saveAction.triggered.connect(self.save_file) # Load file self.loadAction = QAction(self.tr("Open..."), self) self.loadAction.setShortcut("Ctrl+O") self.loadAction.setIcon(QIcon(pixmap("document-open-7.png"))) self.loadAction.triggered.connect(self.show_opencfg_dlg) # New self.newAction = QAction(self.tr("New"), self) self.newAction.setShortcut("Ctrl+N") self.newAction.setIcon(QIcon(pixmap("document-new-6.png"))) self.newAction.triggered.connect(self.new) # start recording self.startrecordingAction = QAction(self.tr("Start recording"), self) self.startrecordingAction.setShortcut("F9") self.startrecordingAction.setIcon(QIcon(pixmap("media-record-6.png"))) self.startrecordingAction.triggered.connect(self.start_recording) # stop recording self.stoprecordingAction = QAction(self.tr("Stop recording"), self) self.stoprecordingAction.setShortcut("F10") self.stoprecordingAction.setIcon(QIcon(pixmap("media-playback-stop-8.png"))) self.stoprecordingAction.setEnabled(False) self.stoprecordingAction.triggered.connect(self.stop_recording) # clear record self.clearrecordAction = QAction(self.tr("Clear"), self) self.clearrecordAction.setIcon(QIcon(pixmap("editclear.png"))) self.clearrecordAction.triggered.connect(self.clear_record) # export record self.exportcsvAction = QAction(self.tr("Export to csv..."), self) self.exportcsvAction.setIcon(QIcon(pixmap("text_csv.png"))) self.exportcsvAction.triggered.connect(self.export_csv) # show record settings self.recordsettingsAction = QAction(self.tr("Settings..."), self) self.recordsettingsAction.setIcon(QIcon(pixmap("configure.png"))) self.recordsettingsAction.triggered.connect(self.show_recordsettings) # Info self.infoAction = QAction(self.tr("Info"), self) self.infoAction.setShortcut("F1") self.infoAction.triggered.connect(self.show_info)