def setApplication(self, app): assert (self._widget is None) widget = QPlainTextEdit() widget.setWindowTitle(u"Error Console") widget.resize(486, 300) widget.appendHtml( u'<span style="color: green">' u'An unhandled error occurred.<br>' u'Sorry for the inconvinience.<br>' u'Please copy the following text into a bug report:<br><br>' u'</span>') app.aboutToQuit.connect(self.restoreStdErr) self._write.connect(self._write_handler) self._flush.connect(self._flush_handler) self._widget = widget
def setApplication(self, app): assert(self._widget is None) widget = QPlainTextEdit() widget.setWindowTitle(u"Error Console") widget.resize(486, 300) widget.appendHtml( u'<span style="color: green">' u'An unhandled error occurred.<br>' u'Sorry for the inconvinience.<br>' u'Please copy the following text into a bug report:<br><br>' u'</span>') app.aboutToQuit.connect(self.restoreStdErr) self._write.connect(self._write_handler) self._flush.connect(self._flush_handler) self._widget = widget
class SystemLog(object): def __init__(self, display_name, source_name): self.display_name = display_name self.source_name = source_name # FIXME: need to handle rotated logs self.last_filename = os.path.join(get_home_path(), display_name) self.content = '' self.edit = QPlainTextEdit() self.normal_font = self.edit.font() self.monospace_font = QFont('monospace') self.edit.setUndoRedoEnabled(False) self.edit.setReadOnly(True) self.edit.setWordWrapMode(QTextOption.NoWrap) self.edit.setPlainText( 'Click "Refresh" to download {0}.'.format(display_name)) self.monospace_font.setStyleHint(QFont.TypeWriter) def log(self, message, bold=False, pre=False): if bold: self.edit.appendHtml(u'<b>{0}</b>'.format(Qt.escape(message))) elif pre: self.edit.appendHtml(u'<pre>{0}</pre>'.format(message)) else: self.edit.appendPlainText(message) def reset(self): self.content = None self.edit.setPlainText('') self.edit.setFont(self.normal_font) def set_content(self, content): self.content = content self.edit.setPlainText('') self.edit.setFont(self.monospace_font) self.edit.setPlainText(content)
class SystemLog(object): def __init__(self, display_name, source_name): self.display_name = display_name self.source_name = source_name # FIXME: need to handle rotated logs self.last_filename = os.path.join(get_home_path(), display_name) self.content = '' self.edit = QPlainTextEdit() self.normal_font = self.edit.font() self.monospace_font = QFont('monospace') self.edit.setUndoRedoEnabled(False) self.edit.setReadOnly(True) self.edit.setWordWrapMode(QTextOption.NoWrap) self.edit.setPlainText('Click "Refresh" to download {0}.'.format(display_name)) self.monospace_font.setStyleHint(QFont.TypeWriter) def log(self, message, bold=False, pre=False): if bold: self.edit.appendHtml(u'<b>{0}</b>'.format(Qt.escape(message))) elif pre: self.edit.appendHtml(u'<pre>{0}</pre>'.format(message)) else: self.edit.appendPlainText(message) def reset(self): self.content = None self.edit.setPlainText('') self.edit.setFont(self.normal_font) def set_content(self, content): self.content = content self.edit.setPlainText('') self.edit.setFont(self.monospace_font) self.edit.setPlainText(content)
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())
def _update_client_tab(self): print '[_update_client_tab]' self.pre_selected_client_name = self.cur_selected_client_name self._widget.tabWidget.clear() for k in self._graph._client_info_list.values(): main_widget=QWidget() ver_layout=QVBoxLayout(main_widget) ver_layout.setContentsMargins (9,9,9,9) ver_layout.setSizeConstraint (ver_layout.SetDefaultConstraint) #button layout sub_widget=QWidget() sub_widget.setAccessibleName('sub_widget') btn_grid_layout=QGridLayout(sub_widget) btn_grid_layout.setContentsMargins (9,9,9,9) btn_grid_layout.setColumnStretch (1, 0) btn_grid_layout.setRowStretch (2, 0) invite_btn=QPushButton("Invite") platform_info_btn=QPushButton("Get Platform Info") status_btn=QPushButton("Get Status") start_app_btn=QPushButton("Start App") stop_app_btn=QPushButton("Stop App") invite_btn.clicked.connect(lambda: self._start_service(self._widget.tabWidget.tabText(self._widget.tabWidget.currentIndex()),"invite")) platform_info_btn.clicked.connect(lambda: self._start_service(self._widget.tabWidget.tabText(self._widget.tabWidget.currentIndex()),"platform_info")) status_btn.clicked.connect(lambda: self._start_service(self._widget.tabWidget.tabText(self._widget.tabWidget.currentIndex()),"status")) start_app_btn.clicked.connect(lambda: self._start_service(self._widget.tabWidget.tabText(self._widget.tabWidget.currentIndex()),"start_app")) stop_app_btn.clicked.connect(lambda: self._start_service(self._widget.tabWidget.tabText(self._widget.tabWidget.currentIndex()),"stop_app")) btn_grid_layout.addWidget(invite_btn) btn_grid_layout.addWidget(platform_info_btn) btn_grid_layout.addWidget(status_btn) btn_grid_layout.addWidget(start_app_btn) btn_grid_layout.addWidget(stop_app_btn) ver_layout.addWidget(sub_widget) #client information layout context_label = QLabel() context_label.setText("Client information") ver_layout.addWidget(context_label) app_context_widget=QPlainTextEdit() app_context_widget.setObjectName(k["name"]+'_'+'app_context_widget') app_context_widget.setAccessibleName('app_context_widget') app_context_widget.appendHtml(k["app_context"]) app_context_widget.setReadOnly(True) cursor = app_context_widget.textCursor() cursor.movePosition(QTextCursor.Start,QTextCursor.MoveAnchor,0) app_context_widget.setTextCursor(cursor) ver_layout.addWidget(app_context_widget) #service layout context_label = QLabel() context_label.setText("Service result") ver_layout.addWidget(context_label) services_text_widget=QPlainTextEdit() services_text_widget.setObjectName(k["name"]+'_'+'services_text_widget') services_text_widget.setReadOnly(True) cursor = services_text_widget.textCursor() cursor.movePosition(QTextCursor.Start,QTextCursor.MoveAnchor,0) services_text_widget.setTextCursor(cursor) ver_layout.addWidget(services_text_widget) # new icon path="" if k["is_new"]==True: path=os.path.join(os.path.dirname(os.path.abspath(__file__)),"../../resources/images/new.gif") #add tab self._widget.tabWidget.addTab(main_widget,QIcon(path), k["name"]); #set previous selected tab for k in range(self._widget.tabWidget.count()): tab_text=self._widget.tabWidget.tabText(k) if tab_text == self.pre_selected_client_name: self._widget.tabWidget.setCurrentIndex(k)