コード例 #1
0
ファイル: mainwindow.py プロジェクト: nevtum/XSeriesTestTool
class MyApp(appbase, appform):
    def __init__(self, parent = None):
        super(appbase, self).__init__(parent)
        self.setupUi(self)
        self.recording = False
        self.factory = ApplicationFactory(self)
        self.decDialog = DecoderDialog(self.factory.get_view_actions(), self)
        self._configure_data_view_manager()
        self._setup_connections()
        self.setupWidgets()
        self.populateComPorts()
        
    def populateComPorts(self):
        import serial_app
        for port_nr in serial_app.list_serial_ports():
            self.comboBoxComPorts.addItem("COM%i" % port_nr)
    
    def getFactory(self):
        return self.factory

    def setupWidgets(self):
        self.tableView.setColumnWidth(0, 40)
        self.tableView.setColumnWidth(1, 150)
        self.tableView.setColumnWidth(2, 60)
        self.tableView.setColumnWidth(3, 60)
        
        self.tableView2.setColumnWidth(0, 150)

    def _configure_data_view_manager(self):
        self.dvm = self.factory.get_data_view_manager()
        self.dvm.connect_distinct_data(self.tableView)
        self.dvm.connect_session_data(self.tableView2)
        self.dvm.connect_text_inputs(self.lineEdit)
        
        self.refreshView()

    def _setup_connections(self):
        view_actions = self.factory.get_view_actions()
        self.connect(view_actions, SIGNAL("NEXT_ENTRY_NAVIGATED"), self.toNext)
        self.connect(view_actions, SIGNAL("PREVIOUS_ENTRY_NAVIGATED"), self.toPrevious)
        self.connect(view_actions, SIGNAL("FIRST_ENTRY_NAVIGATED"), self.toFirst)
        self.connect(view_actions, SIGNAL("FINAL_ENTRY_NAVIGATED"), self.toLast) 
        
        serial_thread = self.factory.get_serial_thread()
        self.connect(view_actions, SIGNAL("RECORDING_STARTED"), serial_thread.on_record_started)
        self.connect(view_actions, SIGNAL("RECORDING_STOPPED"), serial_thread.on_record_stopped)       
        
        self.actionClear_Session_data.triggered.connect(self.dvm.clearDatabase)
        self.actionEnable_Autorefresh.toggled.connect(self.dvm.setAutoRefresh)
        
        self.actionOpenDecoder.triggered.connect(self.decDialog.show)
        self.tableView.doubleClicked.connect(self.decDialog.show)
        self.tableView.selectionModel().currentChanged.connect(self.decDialog.Update)
        
        self.actionRefresh.triggered.connect(self.refreshView)
        self.btnRecordPause.clicked.connect(self.on_btnRecordPause_clicked)
        self.actionEnable_DebugLog.toggled.connect(self._toggle_logging_settings)

    def _toggle_logging_settings(self, enabled):
        if enabled:
            debug.enable_logging()
        else:
            debug.disable_logging()

    def refreshView(self):
        self.dvm.refresh()

    # to control tableView navigation
    def toFirst(self):
        self.tableView.selectRow(0)

    # to control tableView navigation
    def toNext(self):
        row = self.tableView.selectionModel().currentIndex().row()
        self.tableView.selectRow(row+1)

    # to control tableView navigation
    def toPrevious(self):
        row = self.tableView.selectionModel().currentIndex().row()
        self.tableView.selectRow(row-1)

    # to control tableView navigation
    def toLast(self):
        rowcount = self.dvm.getProxyModel().rowCount()
        self.tableView.selectRow(rowcount-1)

    def on_btnRecordPause_clicked(self):
        view_actions = self.factory.get_view_actions()
        if not self.recording:
            self.btnRecordPause.setText("Pause")
            self.comboBoxComPorts.setDisabled(True)
            self.recording = True
            portname = str(self.comboBoxComPorts.currentText())
            view_actions.start_recording(portname)
        else:
            self.btnRecordPause.setText("Record")
            self.comboBoxComPorts.setDisabled(False)
            self.recording = False
            view_actions.stop_recording()
コード例 #2
0
class MyApp(appbase, appform):
    def __init__(self, parent=None):
        super(appbase, self).__init__(parent)
        self.setupUi(self)
        self.recording = False
        self.factory = ApplicationFactory(self)
        self.decDialog = DecoderDialog(self.factory.get_view_actions(), self)
        self._configure_data_view_manager()
        self._setup_connections()
        self.setupWidgets()
        self.populateComPorts()

    def populateComPorts(self):
        import serial_app
        for port_nr in serial_app.list_serial_ports():
            self.comboBoxComPorts.addItem("COM%i" % port_nr)

    def getFactory(self):
        return self.factory

    def setupWidgets(self):
        self.tableView.setColumnWidth(0, 40)
        self.tableView.setColumnWidth(1, 150)
        self.tableView.setColumnWidth(2, 60)
        self.tableView.setColumnWidth(3, 60)

        self.tableView2.setColumnWidth(0, 150)

    def _configure_data_view_manager(self):
        self.dvm = self.factory.get_data_view_manager()
        self.dvm.connect_distinct_data(self.tableView)
        self.dvm.connect_session_data(self.tableView2)
        self.dvm.connect_text_inputs(self.lineEdit)

        self.refreshView()

    def _setup_connections(self):
        view_actions = self.factory.get_view_actions()
        self.connect(view_actions, SIGNAL("NEXT_ENTRY_NAVIGATED"), self.toNext)
        self.connect(view_actions, SIGNAL("PREVIOUS_ENTRY_NAVIGATED"),
                     self.toPrevious)
        self.connect(view_actions, SIGNAL("FIRST_ENTRY_NAVIGATED"),
                     self.toFirst)
        self.connect(view_actions, SIGNAL("FINAL_ENTRY_NAVIGATED"),
                     self.toLast)

        serial_thread = self.factory.get_serial_thread()
        self.connect(view_actions, SIGNAL("RECORDING_STARTED"),
                     serial_thread.on_record_started)
        self.connect(view_actions, SIGNAL("RECORDING_STOPPED"),
                     serial_thread.on_record_stopped)

        self.actionClear_Session_data.triggered.connect(self.dvm.clearDatabase)
        self.actionEnable_Autorefresh.toggled.connect(self.dvm.setAutoRefresh)

        self.actionOpenDecoder.triggered.connect(self.decDialog.show)
        self.tableView.doubleClicked.connect(self.decDialog.show)
        self.tableView.selectionModel().currentChanged.connect(
            self.decDialog.Update)

        self.actionRefresh.triggered.connect(self.refreshView)
        self.btnRecordPause.clicked.connect(self.on_btnRecordPause_clicked)
        self.actionEnable_DebugLog.toggled.connect(
            self._toggle_logging_settings)

    def _toggle_logging_settings(self, enabled):
        if enabled:
            debug.enable_logging()
        else:
            debug.disable_logging()

    def refreshView(self):
        self.dvm.refresh()

    # to control tableView navigation
    def toFirst(self):
        self.tableView.selectRow(0)

    # to control tableView navigation
    def toNext(self):
        row = self.tableView.selectionModel().currentIndex().row()
        self.tableView.selectRow(row + 1)

    # to control tableView navigation
    def toPrevious(self):
        row = self.tableView.selectionModel().currentIndex().row()
        self.tableView.selectRow(row - 1)

    # to control tableView navigation
    def toLast(self):
        rowcount = self.dvm.getProxyModel().rowCount()
        self.tableView.selectRow(rowcount - 1)

    def on_btnRecordPause_clicked(self):
        view_actions = self.factory.get_view_actions()
        if not self.recording:
            self.btnRecordPause.setText("Pause")
            self.comboBoxComPorts.setDisabled(True)
            self.recording = True
            portname = str(self.comboBoxComPorts.currentText())
            view_actions.start_recording(portname)
        else:
            self.btnRecordPause.setText("Record")
            self.comboBoxComPorts.setDisabled(False)
            self.recording = False
            view_actions.stop_recording()