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()
class Modal(ApplicationFactory(modalview.ModalView).factoryModal): ''' Modal is layout you can use for showing and hide it in temporray ways, modal is different than the other layout when you create it in function model you no need to adding the into collection ''' pass
class Lister: # path: path of working dir def __init__(self, dir, debug=False): # dir containing application def/conf files. self.dir = dir self.appFactory = ApplicationFactory(dir, debug=debug) self.debug = debug def list(self, format="json"): dirList = os.listdir(self.dir) dirList.sort() #count = 0 entries = [] for x in dirList: if not x.endswith("."+APP_CONFIG_FILE_SUFFIX): continue name = x[:-(len(APP_CONFIG_FILE_SUFFIX)+1)] app = self.appFactory.get(name, workDirTop="/tmp/p10t/work0", resultUrlTop="file:///tmp/p10t/result0") entries.append(app.info()) if format == "json": return entries raise ListerException("Unsupported format "+format)
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()
class Grid(ApplicationFactory(gridlayout.GridLayout).factoryLayout): ''' If you prefer to use grid display, use Grid for layout. ''' pass
class Float(ApplicationFactory(floatlayout.FloatLayout).factoryLayout): ''' it's a magic float room, you can use to manage you widget freely without limit. ''' pass
class Box(ApplicationFactory(boxlayout.BoxLayout).factoryLayout): ''' Box is regular layout for application room. ''' pass
class Anchor(ApplicationFactory(anchorlayout.AnchorLayout).factoryLayout): ''' An anchor fixed layout for your application room ''' pass
class Radio(ApplicationFactory(togglebutton.ToggleButton).factoryWidget): ''' Radio, you know what it used for. ''' pass
class Label(ApplicationFactory(label.Label).factoryWidget): ''' If there's any text you want to display then use this Label class. ''' pass
def __init__(self, dir, debug=False): # dir containing application def/conf files. self.dir = dir self.appFactory = ApplicationFactory(dir, debug=debug) self.debug = debug
class Button(ApplicationFactory(button.Button).factoryWidget): ''' If you want to create a button, or something can be pressed, or touched you better use button. ''' pass
class Input(ApplicationFactory(textinput.TextInput).factoryInput): ''' Say if you want to create a input like login input for your application you will gonna use this. ''' pass
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()
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()
class Popup(ApplicationFactory(popup.Popup).factoryModal): ''' Popup is also modal but it the layout is not like the other layout, it can add only one widget or layout inside it. ''' pass
class Image(ApplicationFactory(image.Image).factoryWidget): ''' Adding some image to beautify you application is a nice idea. ''' pass