class MainWindowUI: def setup_ui(self, win: QMainWindow) -> None: # ui widgets self.toolbar = QToolBar("main", parent=win) self.port_combobox1 = PortCombobox("") self.port_combobox2 = PortCombobox("") self.baudrate_combobox = QComboBox() self.monitor1 = QPlainTextEdit("") self.monitor2 = QPlainTextEdit("") self.btn_clear_monitor1 = QPushButton("Clear") self.btn_clear_monitor2 = QPushButton("Clear") self.group_monitor1 = QGroupBox("Monitor 1") self.group_monitor2 = QGroupBox("Monitor 2") # setup widgets self.monitor1.setReadOnly(True) self.monitor1.setLineWrapMode(QPlainTextEdit.NoWrap) self.monitor1.setUndoRedoEnabled(False) self.monitor2.setReadOnly(True) self.monitor2.setLineWrapMode(QPlainTextEdit.NoWrap) self.monitor2.setUndoRedoEnabled(False) self.baudrate_combobox.addItems([ "300", "1200", "2400", "4800", "9600", "19200", "38400", "57600", "74880", "115200", "230400", "250000", "500000", "1000000", "2000000", ]) self.baudrate_combobox.setCurrentText("9600") # setup layout win.addToolBar(self.toolbar) v_layout = QVBoxLayout() # type:ignore v_layout.addWidget(self.monitor1) v_layout.addWidget(self.btn_clear_monitor1) self.group_monitor1.setLayout(v_layout) v_layout = QVBoxLayout() # type:ignore v_layout.addWidget(self.monitor2) v_layout.addWidget(self.btn_clear_monitor2) self.group_monitor2.setLayout(v_layout) h_layout = QHBoxLayout() # type:ignore h_layout.addWidget(self.group_monitor1) h_layout.addWidget(self.group_monitor2) central_widget = QWidget() central_widget.setLayout(h_layout) win.setCentralWidget(central_widget)
class MainWindowUI: def setup_ui(self, win: QMainWindow, settings: Settings) -> None: self.statusbar = CustomStatusBar(win) self.toolbar = AToolBar(win) self.tab = QTabWidget() self.tab_main = TabMain() self.tab_lcr = TabLCR() self.tab_stage_step = TabStageStep() self.tab_stage_cycle = TabStageCycle() self.console = QPlainTextEdit() self.group_measurements_data = QGroupBox("Measurements Data") self.tab.addTab(self.tab_main, "Test") self.tab.addTab(self.tab_lcr, "LCR Meter") self.tab.addTab(self.tab_stage_step, "Stage Controller") self.tab.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.console.setReadOnly(True) self.console.setLineWrapMode(QPlainTextEdit.NoWrap) # self.console.setUndoRedoEnabled(False) # setup settings self.console.setMaximumBlockCount( settings.console.maximum_number_of_line) self.tab_main.spinbox_interval.setValue(settings.main.measure_interval) self.tab_stage_step.int_slider.update_current_value( settings.stage_controller.maximum_speed) self.tab_stage_cycle.int_slider.update_current_value( settings.stage_controller.maximum_speed) # setup layout v_layout = AVBoxLayout() v_layout.addWidget(self.console) self.group_measurements_data.setLayout(v_layout) h_layout = AHBoxLayout() h_layout.addWidget(self.tab) h_layout.addWidget(self.group_measurements_data) central_widget = QWidget() central_widget.setLayout(h_layout) win.setCentralWidget(central_widget)
class XDFChunksDialog(QDialog): def __init__(self, parent, chunks, fname): super().__init__(parent) self.setWindowTitle(f"XDF Chunks ({fname})") self.chunks = chunks TAGS = { 1: "FileHeader", 2: "StreamHeader", 3: "Samples", 4: "ClockOffset", 5: "Boundary", 6: "StreamFooter" } self.model = QStandardItemModel() self.model.setHorizontalHeaderLabels( ["#", "Bytes", "Tag", "Stream ID"]) for i, chunk in enumerate(chunks, start=1): row = [] row.append(_add_item(i)) row.append(_add_item(chunk["nbytes"])) row.append(_add_item(f"{chunk['tag']} ({TAGS[chunk['tag']]})")) row.append(_add_item(chunk.get("stream_id", ""))) self.model.appendRow(row) self.view = QTableView() self.view.setModel(self.model) self.view.verticalHeader().setVisible(False) self.view.horizontalHeader().setStretchLastSection(True) self.view.setShowGrid(False) self.view.setSelectionMode(QAbstractItemView.SingleSelection) self.view.setSelectionBehavior(QAbstractItemView.SelectRows) self.view.setSortingEnabled(True) self.view.sortByColumn(0, Qt.AscendingOrder) self.view.setEditTriggers(QTableView.NoEditTriggers) self.view.setFixedWidth(450) self.details = QPlainTextEdit("") self.details.setFixedWidth(450) self.details.setReadOnly(True) self.details.setTabStopDistance(30) font = QFont() font.setFamily("monospace") font.setStyleHint(QFont.Monospace) self.details.setFont(font) self.details.setLineWrapMode(QPlainTextEdit.NoWrap) hbox = QHBoxLayout() hbox.addWidget(self.view) hbox.addWidget(self.details) vbox = QVBoxLayout(self) vbox.addLayout(hbox) self.buttonbox = QDialogButtonBox(QDialogButtonBox.Ok) vbox.addWidget(self.buttonbox) self.buttonbox.accepted.connect(self.accept) self.view.clicked.connect(self._update_details) self.setFixedSize(980, 650) self.view.setColumnWidth(0, 70) self.view.setColumnWidth(1, 80) self.view.setColumnWidth(2, 150) self.view.setColumnWidth(3, 70) @Slot() def _update_details(self): selection = self.view.selectionModel() if selection.hasSelection(): n = int(selection.selectedIndexes()[0].data()) self.details.setPlainText(self.chunks[n - 1].get("content", ""))