class SimpleConnectWidget(QWidget): """ this widget displays a combobox with a list of instruments which the user can connect to, it also has a refresh button """ def __init__(self, parent=None): super(SimpleConnectWidget, self).__init__(parent) # main layout of the form is the verticallayout self.verticalLayout = QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") # moved the script stuff to a separate widget that lives in the toolbar self.labelLayout = QHBoxLayout() self.labelLayout.setObjectName("labelLayout") self.portLabel = QLabel(self) self.portLabel.setText("Availiable Ports") self.instrLabel = QLabel(self) self.instrLabel.setText("Instruments") self.labelLayout.addWidget(self.portLabel) self.labelLayout.addWidget(self.instrLabel) self.verticalLayout.addLayout(self.labelLayout) self.ports = QComboBox(self) self.ports.addItems(refresh_device_port_list()) self.ports.setObjectName("cbb_ports") self.instruments = QComboBox(self) self.instruments.addItems(utils.list_drivers(interface="real")[0]) self.ports.setObjectName("cbb_instrs") self.cbbLayout = QHBoxLayout() self.cbbLayout.setObjectName("cbbLayout") self.cbbLayout.addWidget(self.ports) self.cbbLayout.addWidget(self.instruments) self.verticalLayout.addLayout(self.cbbLayout) self.connectButton = QPushButton(self) self.connectButton.setText("Connect the instrument") self.connectButton.setObjectName("connectButton") self.refreshButton = QPushButton(self) self.refreshButton.setText("refresh the port list") self.refreshButton.setObjectName("refreshButton") self.verticalLayout.addWidget(self.connectButton) self.verticalLayout.addWidget(self.refreshButton) self.headerTextEdit = QPlainTextEdit("") fontsize = self.headerTextEdit.fontMetrics() pal = QPalette() textc = QColor(245, 245, 240) pal.setColor(QPalette.Base, textc) self.headerTextEdit.setPalette(pal) # d3d3be # self.headerTextEdit.ba self.headerTextEdit.setFixedHeight(fontsize.lineSpacing() * 8) self.verticalLayout.addWidget(self.headerTextEdit) # moved the start stop button to the toolbar only self.setLayout(self.verticalLayout) self.connect(self.connectButton, SIGNAL('clicked()'), self.on_connectButton_clicked) self.connect(self.refreshButton, SIGNAL('clicked()'), self.on_refreshButton_clicked) def on_connectButton_clicked(self): """Connect a given instrument through a given port""" port = self.ports.currentText() instrument_name = self.instruments.currentText() # load the module which contains the instrument's driver if __name__ == "__main__": class_inst = import_module(instrument_name) else: class_inst = import_module("." + instrument_name, package=utils.LABDRIVER_PACKAGE_NAME) msg = "" # msg.append("example") # msg.append("</span>") self.headerTextEdit.appendHtml(msg) # self.headerTextEdit.appendPlainText(msg) try: i = class_inst.Instrument(port) self.headerTextEdit.appendPlainText("%s" % (i.identify())) self.headerTextEdit.appendHtml( "The connection to the instrument %s through the port %s <span style=\" color:#009933;\" >WORKED</span>\n" % (instrument_name, port)) i.close() except: self.headerTextEdit.appendHtml( "The connection to the instrument %s through the port %s <span style=\" color:#ff0000;\" >FAILED</span>\n" % (instrument_name, port)) def on_refreshButton_clicked(self): """Refresh the list of the availiable ports""" self.ports.clear() self.ports.addItems(refresh_device_port_list())