def test_form(): from taurus.qt.qtgui.panel import TaurusForm tgclass_map = {'IORegister': PoolIORegisterTV} form = TaurusForm() form.setCustomWidgetMap(tgclass_map) model = 'tango://controls02:10000/ioregister/gc_tgiorctrl/1' if len(sys.argv) > 1: model = sys.argv[1] form.setModel([model]) form.show()
def test2(): import sys from taurus.qt.qtgui.application import TaurusApplication from taurus.qt.qtgui.panel import TaurusForm app = TaurusApplication() w = TaurusForm() attrname = 'eval:@taurus.core.evaluation.test.res.dev_example.FreeSpaceDevice/getFreeSpace("/")' w.setModel(attrname) w.show() sys.exit(app.exec_())
def _demo(): '''demo of integrability in a form''' import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(cmd_line_parser=None) f = TaurusForm() f.model = ['sys/tg_test/1/long_scalar', 'sys/tg_test/1/long_scalar', 'sys/tg_test/1/boolean_scalar', 'sys/tg_test/1/boolean_scalar'] f[0].setReadWidgetClass(TaurusLabelEditRW) f[0].setWriteWidgetClass(None) f[2].setReadWidgetClass(TaurusBoolRW) f[2].setWriteWidgetClass(None) f.show() sys.exit(app.exec_())
def _demo(): '''demo of integrability in a form''' import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication() f = TaurusForm() f.model = ['sys/tg_test/1/long_scalar', 'sys/tg_test/1/long_scalar', 'sys/tg_test/1/boolean_scalar', 'sys/tg_test/1/boolean_scalar'] f[0].setReadWidgetClass(TaurusLabelEditRW) f[0].setWriteWidgetClass(None) f[2].setReadWidgetClass(TaurusBoolRW) f[2].setWriteWidgetClass(None) f.show() sys.exit(app.exec_())
def main(): from taurus.core.util import argparse from taurus.qt.qtgui.application import TaurusApplication from taurus.qt.qtgui.panel import TaurusForm parser = argparse.get_taurus_parser() parser.set_usage("%prog [options] [model1 [model2 ...]]") app = TaurusApplication(cmd_line_parser=parser) args = app.get_command_line_args() if not args: parser.print_usage() sys.exit(1) form = TaurusForm() form.setFormWidget(GammaSPCeTV) form.setModel(args) form.setModifiableByUser(True) form.show() sys.exit(app.exec_())
def demo2(): '''demo of integrability in a form''' import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.application import TaurusApplication from taurus.qt.qtgui.display import TaurusLabel from taurus.qt.qtgui.input import TaurusValueLineEdit class DemoSwitcher(TaurusReadWriteSwitcher): readWClass = TaurusLabel writeWClass = TaurusValueLineEdit exitEditTriggers = ('editingFinished()', Qt.Qt.Key_Escape) app = TaurusApplication() f = TaurusForm() f.model = ['sys/tg_test/1/long_scalar', 'sys/tg_test/1/long_scalar'] f[0].setReadWidgetClass(DemoSwitcher) f[0].setWriteWidgetClass(None) f.show() sys.exit(app.exec_())
class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") self._Form = Form self.font = QtGui.QFont() self.font.setBold(True) self.gridLayout_2 = QtGui.QGridLayout(Form) self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.chooseLabel = Qt.QLabel() self.chooseLabel.setObjectName("chooseLabel") self.chooseLabel.setFont(self.font) self.chooseLabel.setAlignment(QtCore.Qt.AlignCenter) self.gridLayout.addWidget(self.chooseLabel, 0, 0, 1, 1) self.tac = attributeChooser() self.tac.setObjectName("taurusAttributeChooser") self.gridLayout.addWidget(self.tac, 1, 0, 6, 1) self.selectedLabel = Qt.QLabel() self.selectedLabel.setObjectName("selectedLabel") self.selectedLabel.setFont(self.font) self.selectedLabel.setAlignment(QtCore.Qt.AlignCenter) self.selectedLabel.hide() self.gridLayout.addWidget(self.selectedLabel, 0, 1, 1, 6) self.tf = TaurusForm() self.tf.setWithButtons(False) self.tf.setObjectName("taurusForm") self.tf.hide() self.gridLayout.addWidget(self.tf, 1, 1, 1, 6) self.label = Qt.QLabel() self.label.setObjectName("label") self.label.setFont(self.font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.gridLayout.addWidget(self.label, 1, 1, 1, 6) spacerItem = QtGui.QSpacerItem(1, 1, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 1, 1, 1) self.modepLabel = QtGui.QLabel(Form) self.modepLabel.setObjectName("modepLabel") self.modepLabel.setText('Period [s]:') self.gridLayout.addWidget(self.modepLabel, 2, 1, 1, 1) self.modepLineEdit = QtGui.QLineEdit(Form) self.modepLineEdit.setObjectName("modepLineEdit") self.modepLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.modepLineEdit.setMaxLength(7) self.modepLineEdit.setMaximumWidth(60) self.modepLineEdit.setText('60.0') self.gridLayout.addWidget(self.modepLineEdit, 2, 2, 1, 1) self.modeaLabel = QtGui.QLabel(Form) self.modeaLabel.setObjectName("modeaLabel") self.modeaLabel.setText('Absolute Period [s]:') self.gridLayout.addWidget(self.modeaLabel, 3, 1, 1, 1) self.modeaLineEdit = QtGui.QLineEdit(Form) self.modeaLineEdit.setObjectName("modeaLineEdit") self.modeaLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.modeaLineEdit.setMaxLength(7) self.modeaLineEdit.setMaximumWidth(60) self.modeaLineEdit.setText('15.0') self.gridLayout.addWidget(self.modeaLineEdit, 3, 2, 1, 1) self.modeaLowerLimitLabel = QtGui.QLabel(Form) self.modeaLowerLimitLabel.setObjectName("modeaLowerLimitLabel") self.modeaLowerLimitLabel.setText('Lower Limit (decr.):') self.gridLayout.addWidget(self.modeaLowerLimitLabel, 3, 3, 1, 1) self.modeaLowerLimitLineEdit = QtGui.QLineEdit(Form) self.modeaLowerLimitLineEdit.setObjectName("modeaLowerLimitLineEdit") self.modeaLowerLimitLineEdit.setValidator( Qt.QDoubleValidator(1, 14400, 2, Form)) self.modeaLowerLimitLineEdit.setMaxLength(7) self.modeaLowerLimitLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.modeaLowerLimitLineEdit, 3, 4, 1, 1) self.modeaUpperLimitLabel = QtGui.QLabel(Form) self.modeaUpperLimitLabel.setObjectName("modeaUpperLimitLabel") self.modeaUpperLimitLabel.setText('Upper Limit (incr.):') self.gridLayout.addWidget(self.modeaUpperLimitLabel, 3, 5, 1, 1) self.modeaUpperLimitLineEdit = QtGui.QLineEdit(Form) self.modeaUpperLimitLineEdit.setObjectName("modeaUpperLimitLineEdit") self.modeaUpperLimitLineEdit.setValidator( Qt.QDoubleValidator(1, 14400, 2, Form)) self.modeaUpperLimitLineEdit.setMaxLength(7) self.modeaUpperLimitLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.modeaUpperLimitLineEdit, 3, 6, 1, 1) self.moderLabel = QtGui.QLabel(Form) self.moderLabel.setObjectName("moderLabel") self.moderLabel.setText('Relative Period [s]:') self.gridLayout.addWidget(self.moderLabel, 4, 1, 1, 1) self.moderLineEdit = QtGui.QLineEdit(Form) self.moderLineEdit.setObjectName("moderLineEdit") self.moderLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.moderLineEdit.setMaxLength(7) self.moderLineEdit.setMaximumWidth(60) self.moderLineEdit.setText('15.0') self.gridLayout.addWidget(self.moderLineEdit, 4, 2, 1, 1) self.moderLowerLimitPercentLabel = QtGui.QLabel(Form) self.moderLowerLimitPercentLabel.setObjectName( "moderLowerLimitPercentLabel") self.moderLowerLimitPercentLabel.setText('Lower % Limit (decr.):') self.gridLayout.addWidget(self.moderLowerLimitPercentLabel, 4, 3, 1, 1) self.moderLowerLimitPercentLineEdit = QtGui.QLineEdit(Form) self.moderLowerLimitPercentLineEdit.setObjectName( "moderLowerLimitPercentLineEdit") self.moderLowerLimitPercentLineEdit.setValidator( QtGui.QDoubleValidator(0, 1, 2, Form)) self.moderLowerLimitPercentLineEdit.setMaxLength(7) self.moderLowerLimitPercentLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.moderLowerLimitPercentLineEdit, 4, 4, 1, 1) self.moderUpperLimitPercentLabel = QtGui.QLabel(Form) self.moderUpperLimitPercentLabel.setObjectName( "moderUpperLimitPercentLabel") self.moderUpperLimitPercentLabel.setText('Upper % Limit (incr.):') self.gridLayout.addWidget(self.moderUpperLimitPercentLabel, 4, 5, 1, 1) self.moderUpperLimitPercentLineEdit = QtGui.QLineEdit(Form) self.moderUpperLimitPercentLineEdit.setObjectName( "moderUpperLimitPercentLineEdit") self.moderUpperLimitPercentLineEdit.setValidator( Qt.QDoubleValidator(0, 1, 2, Form)) self.moderUpperLimitPercentLineEdit.setMaxLength(7) self.moderUpperLimitPercentLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.moderUpperLimitPercentLineEdit, 4, 6, 1, 1) self.gridButtonLayout = QtGui.QGridLayout() self.gridButtonLayout.setObjectName("gridButtonLayout") spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridButtonLayout.addItem(spacerItem, 0, 1, 1, 1) self.pushButtonStart = QtGui.QPushButton(Form) self.pushButtonStart.setObjectName("pushButtonStart") self.pushButtonStart.setEnabled(False) self.gridButtonLayout.addWidget(self.pushButtonStart, 0, 2, 1, 1) self.pushButtonStop = QtGui.QPushButton(Form) self.pushButtonStop.setObjectName("pushButtonStop") self.pushButtonStop.setEnabled(False) self.gridButtonLayout.addWidget(self.pushButtonStop, 0, 3, 1, 1) self.pushButtonCancel = QtGui.QPushButton(Form) self.pushButtonCancel.setObjectName("pushButtonCancel") self.gridButtonLayout.addWidget(self.pushButtonCancel, 0, 4, 1, 1) self.gridLayout.addLayout(self.gridButtonLayout, 5, 1, 1, 6) self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle( QtGui.QApplication.translate("Form", "Archiving Widget", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonStart.setText( QtGui.QApplication.translate("Form", "Start Archiving", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonStop.setText( QtGui.QApplication.translate("Form", "Stop", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonCancel.setText( QtGui.QApplication.translate("Form", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText( QtGui.QApplication.translate("Form", "Nothing to display", None, QtGui.QApplication.UnicodeUTF8)) self.selectedLabel.setText( QtGui.QApplication.translate( "Form", "Press start to start archiving selected attributes:", None, QtGui.QApplication.UnicodeUTF8)) self.chooseLabel.setText( QtGui.QApplication.translate( "Form", "Choose attributes to archive and hit apply to move attributes to selection", None, QtGui.QApplication.UnicodeUTF8)) self.tf.connect(self.tac, Qt.SIGNAL("UpdateAttrs"), self.onUpdate) QtCore.QObject.connect(self.pushButtonStart, Qt.SIGNAL("clicked()"), self.onStart) QtCore.QObject.connect(self.pushButtonStop, Qt.SIGNAL("clicked()"), self.onStop) QtCore.QObject.connect(self.pushButtonCancel, Qt.SIGNAL("clicked()"), self.onCancel) QtCore.QObject.connect(self.modepLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.modepTextChanged) QtCore.QObject.connect(self.modeaLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.modeaTextChanged) QtCore.QObject.connect(self.moderLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.moderTextChanged) #QtCore.QObject.connect(self.moderUpperLimitPercentLineEdit, Qt.SIGNAL('editingFinished()'), self.moderUpperLimitPercentTextChanged) #QtCore.QObject.connect(self.moderLowerLimitPercentLineEdit, Qt.SIGNAL('editingFinished()'), self.moderLowerLimitPercentTextChanged) #QtCore.QObject.connect(self.modeaUpperLimitLineEdit, Qt.SIGNAL('editingFinished()'), self.modeaUpperLimitTextChanged) #QtCore.QObject.connect(self.modeaLowerLimitLineEdit, Qt.SIGNAL('editingFinished()'), self.modeaLowerLimitTextChanged) def modepTextChanged(self): if self.modepLineEdit.text(): if (float(self.modepLineEdit.text()) < 1 or float(self.modepLineEdit.text()) > 14400): Qt.QMessageBox.critical(self._Form, 'Error', 'Value ranges between 1 and 14400', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) if float(self.modepLineEdit.text()) > 14400: self.modepLineEdit.setText('14400') else: self.modepLineEdit.setText('1') else: Qt.QMessageBox.critical(self._Form, 'Error', 'Value ranges between 1 and 14400', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modepLineEdit.setText('1') def modeaTextChanged(self): if self.modeaLineEdit.text(): if (float(self.modeaLineEdit.text()) > float( self.modepLineEdit.text())): Qt.QMessageBox.critical( self._Form, 'Error', 'Value cannot be higher than ' + self.modepLineEdit.text(), QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modeaLineEdit.setText('0') def moderTextChanged(self): if self.moderLineEdit.text(): if (float(self.moderLineEdit.text()) > float( self.modepLineEdit.text())): Qt.QMessageBox.critical( self._Form, 'Error', 'Value cannot be higher than ' + self.modepLineEdit.text(), QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.moderLineEdit.setText('0') def validate(self, modep, modea, moder): if (modep < modea or modep < moder): Qt.QMessageBox.critical( self._Form, 'Error', 'Period value has to be higher than the others', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modepLineEdit.setText( str(10 * max(int(self.moderLineEdit.text()), int(self.modeaLineEdit.text())))) return False return True def floatValidation(self, line): val = line.text() try: float(val) return True except: Qt.QMessageBox.critical(self._Form, 'Error in ' + str(line.objectName()), 'Wrong value !\nSetting value to 0!', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) line.setText('0') return False def onStart(self): self.floatValidation(self.moderUpperLimitPercentLineEdit) self.floatValidation(self.moderLowerLimitPercentLineEdit) self.floatValidation(self.modeaUpperLimitLineEdit) self.floatValidation(self.modeaLowerLimitLineEdit) try: self.modep = int(1000 * self.modepLineEdit.text()) self.modea = (int(1000 * self.modeaLineEdit.text()) if self.modeaLineEdit.text() else None) self.modeaLowerLimit = (float(self.modeaLowerLimitLineEdit.text()) if self.modeaLowerLimitLineEdit.text() else None) self.modeaUpperLimit = (float(self.modeaUpperLimitLineEdit.text()) if self.modeaUpperLimitLineEdit.text() else None) self.moder = (int(1000 * self.moderLineEdit.text()) if self.moderLineEdit.text() else None) self.moderLowerLimit = ( float(self.moderLowerLimitPercentLineEdit.text()) if self.moderLowerLimitPercentLineEdit.text() else None) self.moderUpperLimit = ( float(self.moderUpperLimitPercentLineEdit.text()) if self.moderUpperLimitPercentLineEdit.text() else None) if self.validate(self.modep, self.modea, self.moder): reply = Qt.QMessageBox.question( self._Form, "Warning", "Do you want to start archiving selected attributes?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) if reply == QtGui.QMessageBox.Yes: command = {'MODE_P': [self.modep]} if (self.modea and self.modeaUpperLimit and self.modeaLowerLimit): command['MODE_A'] = [ self.modea, self.modeaUpperLimit, self.modeaLowerLimit ] if (self.moder and self.moderUpperLimit and self.moderLowerLimit): command['MODE_R'] = [ self.moder, self.moderUpperLimit, self.moderLowerLimit ] attrs = [a for a in self.tf.getModel()] cmd = self.tac.tdb.check_modes('tdb', command) toStop = [a for a in attrs if a in self.tac.beingArchived] try: if toStop: self.tac.tdb.api.start_archiving(attrs, cmd, kill=True) else: self.tac.tdb.api.start_archiving(attrs, cmd) except: Qt.QMessageBox.critical( self._Form, "Error", 'Cannot start archiving process.\nCheck the state of archiving managers.', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) print(traceback.format_exc()) self.tac.beingArchived = [ a.lower() for a in self.tac.tdb if self.tac.tdb.is_attribute_archived(a.lower()) ] #update archived list self.onUpdate(attrs) self.tac.setNewDevName() except: print(traceback.format_exc()) def onStop(self): toStop = [ att.lower() for att in self.tf.getModel() if att.lower() in self.tac.beingArchived ] reply = Qt.QMessageBox.question( self._Form, "Warning", "Do you want to stop archiving " + str(len(toStop)) + " attributes?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) if reply == QtGui.QMessageBox.Yes: self.tac.tdb.api.stop_archiving(toStop) self.tac.beingArchived = [ a.lower() for a in self.tac.tdb if self.tac.tdb.is_attribute_archived(a.lower()) ] #update archived list self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') self.tac.setNewDevName() self.clearParams() def onUpdate(self, attrs): self.clearParams() if not attrs: self.tf.hide() self.label.show() self.selectedLabel.hide() self.pushButtonStart.setEnabled(False) self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') else: self.label.hide() self.selectedLabel.show() self.tf.show() self.tf.setModel(attrs) for i in range(len(attrs)): item = self.tf.getItemByIndex(i) if item.getModel().lower() in self.tac.beingArchived: item.setExtraWidgetClass(historyButton) historyButton().setModel(item.getModel()) self.pushButtonStart.setEnabled(True) toStop = [ att.lower() for att in attrs if att.lower() in self.tac.beingArchived ] if toStop: self.pushButtonStop.setEnabled(True) self.pushButtonStop.setText('Stop (' + str(len(toStop)) + ')') modes = self.tac.tdb.get(toStop[0]).modes if 'MODE_P' in modes.keys(): self.modepLineEdit.setText( str(int(modes['MODE_P'][0] / 1000))) if 'MODE_R' in modes.keys(): if len(modes['MODE_R']) == 3: self.moderLineEdit.setText( str(int(modes['MODE_R'][0] / 1000))) self.moderLowerLimitPercentLineEdit.setText( str(float(modes['MODE_R'][1]))) self.moderUpperLimitPercentLineEdit.setText( str(float(modes['MODE_R'][2]))) if 'MODE_A' in modes.keys(): if len(modes['MODE_A']) == 3: self.modeaLineEdit.setText( str(int(modes['MODE_A'][0] / 1000))) self.modeaLowerLimitLineEdit.setText( str(int(modes['MODE_A'][1]))) self.modeaUpperLimitLineEdit.setText( str(int(modes['MODE_A'][2]))) else: self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') def clearParams(self): self.modepLineEdit.setText('60') self.moderLineEdit.setText('') self.moderLowerLimitPercentLineEdit.setText('') self.moderUpperLimitPercentLineEdit.setText('') self.modeaLineEdit.setText('') self.modeaLowerLimitLineEdit.setText('') self.modeaUpperLimitLineEdit.setText('') def onCancel(self): self._Form.close()
class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") self._Form=Form self.font=QtGui.QFont() self.font.setBold(True) self.gridLayout_2 = QtGui.QGridLayout(Form) self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.chooseLabel=Qt.QLabel() self.chooseLabel.setObjectName("chooseLabel") self.chooseLabel.setFont(self.font) self.chooseLabel.setAlignment(QtCore.Qt.AlignCenter); self.gridLayout.addWidget(self.chooseLabel, 0, 0, 1, 1) self.tac=attributeChooser() self.tac.setObjectName("taurusAttributeChooser") self.gridLayout.addWidget(self.tac, 1, 0, 6, 1) self.selectedLabel=Qt.QLabel() self.selectedLabel.setObjectName("selectedLabel") self.selectedLabel.setFont(self.font) self.selectedLabel.setAlignment(QtCore.Qt.AlignCenter); self.selectedLabel.hide() self.gridLayout.addWidget(self.selectedLabel, 0, 1, 1, 6) self.tf=TaurusForm() self.tf.setWithButtons(False) self.tf.setObjectName("taurusForm") self.tf.hide() self.gridLayout.addWidget(self.tf, 1, 1, 1, 6) self.label=Qt.QLabel() self.label.setObjectName("label") self.label.setFont(self.font) self.label.setAlignment(QtCore.Qt.AlignCenter); self.gridLayout.addWidget(self.label, 1, 1, 1, 6) spacerItem = QtGui.QSpacerItem(1, 1, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 1, 1, 1) self.modepLabel = QtGui.QLabel(Form) self.modepLabel.setObjectName("modepLabel") self.modepLabel.setText('Period [s]:') self.gridLayout.addWidget(self.modepLabel, 2, 1, 1, 1) self.modepLineEdit = QtGui.QLineEdit(Form) self.modepLineEdit.setObjectName("modepLineEdit") self.modepLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.modepLineEdit.setMaxLength(7) self.modepLineEdit.setMaximumWidth(60) self.modepLineEdit.setText('60.0') self.gridLayout.addWidget(self.modepLineEdit, 2, 2, 1, 1) self.modeaLabel = QtGui.QLabel(Form) self.modeaLabel.setObjectName("modeaLabel") self.modeaLabel.setText('Absolute Period [s]:') self.gridLayout.addWidget(self.modeaLabel, 3, 1, 1, 1) self.modeaLineEdit = QtGui.QLineEdit(Form) self.modeaLineEdit.setObjectName("modeaLineEdit") self.modeaLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.modeaLineEdit.setMaxLength(7) self.modeaLineEdit.setMaximumWidth(60) self.modeaLineEdit.setText('15.0') self.gridLayout.addWidget(self.modeaLineEdit, 3, 2, 1, 1) self.modeaLowerLimitLabel = QtGui.QLabel(Form) self.modeaLowerLimitLabel.setObjectName("modeaLowerLimitLabel") self.modeaLowerLimitLabel.setText('Lower Limit (decr.):') self.gridLayout.addWidget(self.modeaLowerLimitLabel, 3, 3, 1, 1) self.modeaLowerLimitLineEdit = QtGui.QLineEdit(Form) self.modeaLowerLimitLineEdit.setObjectName("modeaLowerLimitLineEdit") self.modeaLowerLimitLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 2, Form)) self.modeaLowerLimitLineEdit.setMaxLength(7) self.modeaLowerLimitLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.modeaLowerLimitLineEdit, 3, 4, 1, 1) self.modeaUpperLimitLabel = QtGui.QLabel(Form) self.modeaUpperLimitLabel.setObjectName("modeaUpperLimitLabel") self.modeaUpperLimitLabel.setText('Upper Limit (incr.):') self.gridLayout.addWidget(self.modeaUpperLimitLabel, 3, 5, 1, 1) self.modeaUpperLimitLineEdit = QtGui.QLineEdit(Form) self.modeaUpperLimitLineEdit.setObjectName("modeaUpperLimitLineEdit") self.modeaUpperLimitLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 2, Form)) self.modeaUpperLimitLineEdit.setMaxLength(7) self.modeaUpperLimitLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.modeaUpperLimitLineEdit, 3, 6, 1, 1) self.moderLabel = QtGui.QLabel(Form) self.moderLabel.setObjectName("moderLabel") self.moderLabel.setText('Relative Period [s]:') self.gridLayout.addWidget(self.moderLabel, 4, 1, 1, 1) self.moderLineEdit = QtGui.QLineEdit(Form) self.moderLineEdit.setObjectName("moderLineEdit") self.moderLineEdit.setValidator(Qt.QDoubleValidator(1, 14400, 1, Form)) self.moderLineEdit.setMaxLength(7) self.moderLineEdit.setMaximumWidth(60) self.moderLineEdit.setText('15.0') self.gridLayout.addWidget(self.moderLineEdit, 4, 2, 1, 1) self.moderLowerLimitPercentLabel = QtGui.QLabel(Form) self.moderLowerLimitPercentLabel.setObjectName("moderLowerLimitPercentLabel") self.moderLowerLimitPercentLabel.setText('Lower % Limit (decr.):') self.gridLayout.addWidget(self.moderLowerLimitPercentLabel, 4, 3, 1, 1) self.moderLowerLimitPercentLineEdit = QtGui.QLineEdit(Form) self.moderLowerLimitPercentLineEdit.setObjectName("moderLowerLimitPercentLineEdit") self.moderLowerLimitPercentLineEdit.setValidator(QtGui.QDoubleValidator(0, 1, 2, Form)) self.moderLowerLimitPercentLineEdit.setMaxLength(7) self.moderLowerLimitPercentLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.moderLowerLimitPercentLineEdit, 4, 4, 1, 1) self.moderUpperLimitPercentLabel = QtGui.QLabel(Form) self.moderUpperLimitPercentLabel.setObjectName("moderUpperLimitPercentLabel") self.moderUpperLimitPercentLabel.setText('Upper % Limit (incr.):') self.gridLayout.addWidget(self.moderUpperLimitPercentLabel, 4, 5, 1, 1) self.moderUpperLimitPercentLineEdit = QtGui.QLineEdit(Form) self.moderUpperLimitPercentLineEdit.setObjectName("moderUpperLimitPercentLineEdit") self.moderUpperLimitPercentLineEdit.setValidator(Qt.QDoubleValidator(0, 1, 2, Form)) self.moderUpperLimitPercentLineEdit.setMaxLength(7) self.moderUpperLimitPercentLineEdit.setMaximumWidth(60) self.gridLayout.addWidget(self.moderUpperLimitPercentLineEdit, 4, 6, 1, 1) self.gridButtonLayout = QtGui.QGridLayout() self.gridButtonLayout.setObjectName("gridButtonLayout") spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridButtonLayout.addItem(spacerItem, 0, 1, 1, 1) self.pushButtonStart = QtGui.QPushButton(Form) self.pushButtonStart.setObjectName("pushButtonStart") self.pushButtonStart.setEnabled(False) self.gridButtonLayout.addWidget(self.pushButtonStart, 0, 2, 1, 1) self.pushButtonStop = QtGui.QPushButton(Form) self.pushButtonStop.setObjectName("pushButtonStop") self.pushButtonStop.setEnabled(False) self.gridButtonLayout.addWidget(self.pushButtonStop, 0, 3, 1, 1) self.pushButtonCancel = QtGui.QPushButton(Form) self.pushButtonCancel.setObjectName("pushButtonCancel") self.gridButtonLayout.addWidget(self.pushButtonCancel, 0, 4, 1, 1) self.gridLayout.addLayout(self.gridButtonLayout, 5, 1, 1, 6) self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Archiving Widget", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonStart.setText(QtGui.QApplication.translate("Form", "Start Archiving", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonStop.setText(QtGui.QApplication.translate("Form", "Stop", None, QtGui.QApplication.UnicodeUTF8)) self.pushButtonCancel.setText(QtGui.QApplication.translate("Form", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Nothing to display", None, QtGui.QApplication.UnicodeUTF8)) self.selectedLabel.setText(QtGui.QApplication.translate("Form", "Press start to start archiving selected attributes:", None, QtGui.QApplication.UnicodeUTF8)) self.chooseLabel.setText(QtGui.QApplication.translate("Form", "Choose attributes to archive and hit apply to move attributes to selection", None, QtGui.QApplication.UnicodeUTF8)) self.tf.connect(self.tac, Qt.SIGNAL("UpdateAttrs"), self.onUpdate) QtCore.QObject.connect(self.pushButtonStart, Qt.SIGNAL("clicked()"), self.onStart) QtCore.QObject.connect(self.pushButtonStop, Qt.SIGNAL("clicked()"), self.onStop) QtCore.QObject.connect(self.pushButtonCancel, Qt.SIGNAL("clicked()"), self.onCancel) QtCore.QObject.connect(self.modepLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.modepTextChanged) QtCore.QObject.connect(self.modeaLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.modeaTextChanged) QtCore.QObject.connect(self.moderLineEdit, Qt.SIGNAL('textChanged(const QString &)'), self.moderTextChanged) #QtCore.QObject.connect(self.moderUpperLimitPercentLineEdit, Qt.SIGNAL('editingFinished()'), self.moderUpperLimitPercentTextChanged) #QtCore.QObject.connect(self.moderLowerLimitPercentLineEdit, Qt.SIGNAL('editingFinished()'), self.moderLowerLimitPercentTextChanged) #QtCore.QObject.connect(self.modeaUpperLimitLineEdit, Qt.SIGNAL('editingFinished()'), self.modeaUpperLimitTextChanged) #QtCore.QObject.connect(self.modeaLowerLimitLineEdit, Qt.SIGNAL('editingFinished()'), self.modeaLowerLimitTextChanged) def modepTextChanged(self): if self.modepLineEdit.text(): if (float(self.modepLineEdit.text()) < 1 or float(self.modepLineEdit.text()) > 14400): Qt.QMessageBox.critical(self._Form,'Error','Value ranges between 1 and 14400', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) if float(self.modepLineEdit.text()) > 14400: self.modepLineEdit.setText('14400') else: self.modepLineEdit.setText('1') else: Qt.QMessageBox.critical(self._Form,'Error','Value ranges between 1 and 14400', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modepLineEdit.setText('1') def modeaTextChanged(self): if self.modeaLineEdit.text(): if (float(self.modeaLineEdit.text()) > float(self.modepLineEdit.text())): Qt.QMessageBox.critical(self._Form,'Error','Value cannot be higher than '+self.modepLineEdit.text(), QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modeaLineEdit.setText('0') def moderTextChanged(self): if self.moderLineEdit.text(): if (float(self.moderLineEdit.text()) > float(self.modepLineEdit.text())): Qt.QMessageBox.critical(self._Form,'Error','Value cannot be higher than '+self.modepLineEdit.text(), QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.moderLineEdit.setText('0') def validate(self, modep, modea, moder): if (modep < modea or modep < moder): Qt.QMessageBox.critical(self._Form,'Error','Period value has to be higher than the others', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) self.modepLineEdit.setText(str(10*max(int(self.moderLineEdit.text()), int(self.modeaLineEdit.text())))) return False return True def floatValidation(self, line): val = line.text() try: float(val) return True except: Qt.QMessageBox.critical(self._Form,'Error in '+str(line.objectName()),'Wrong value !\nSetting value to 0!', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) line.setText('0') return False def onStart(self): self.floatValidation(self.moderUpperLimitPercentLineEdit) self.floatValidation(self.moderLowerLimitPercentLineEdit) self.floatValidation(self.modeaUpperLimitLineEdit) self.floatValidation(self.modeaLowerLimitLineEdit) try: self.modep=int(1000*self.modepLineEdit.text()) self.modea=(int(1000*self.modeaLineEdit.text()) if self.modeaLineEdit.text() else None) self.modeaLowerLimit=(float(self.modeaLowerLimitLineEdit.text()) if self.modeaLowerLimitLineEdit.text() else None) self.modeaUpperLimit=(float(self.modeaUpperLimitLineEdit.text()) if self.modeaUpperLimitLineEdit.text() else None) self.moder=(int(1000*self.moderLineEdit.text()) if self.moderLineEdit.text() else None) self.moderLowerLimit=(float(self.moderLowerLimitPercentLineEdit.text()) if self.moderLowerLimitPercentLineEdit.text() else None) self.moderUpperLimit=(float(self.moderUpperLimitPercentLineEdit.text()) if self.moderUpperLimitPercentLineEdit.text() else None) if self.validate(self.modep, self.modea, self.moder): reply=Qt.QMessageBox.question(self._Form,"Warning","Do you want to start archiving selected attributes?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) if reply == QtGui.QMessageBox.Yes: command={'MODE_P':[self.modep]} if (self.modea and self.modeaUpperLimit and self.modeaLowerLimit): command['MODE_A']=[self.modea, self.modeaUpperLimit, self.modeaLowerLimit] if (self.moder and self.moderUpperLimit and self.moderLowerLimit): command['MODE_R']=[self.moder, self.moderUpperLimit, self.moderLowerLimit] attrs=[a for a in self.tf.getModel()] cmd=self.tac.tdb.check_modes('tdb', command) toStop=[a for a in attrs if a in self.tac.beingArchived] try: if toStop: self.tac.tdb.api.start_archiving(attrs, cmd, kill=True) else: self.tac.tdb.api.start_archiving(attrs, cmd) except: Qt.QMessageBox.critical(self._Form,"Error",'Cannot start archiving process.\nCheck the state of archiving managers.', QtGui.QMessageBox.AcceptRole, QtGui.QMessageBox.AcceptRole) print(traceback.format_exc()) self.tac.beingArchived=[a.lower() for a in self.tac.tdb if self.tac.tdb.is_attribute_archived(a.lower())] #update archived list self.onUpdate(attrs) self.tac.setNewDevName() except: print(traceback.format_exc()) def onStop(self): toStop=[att.lower() for att in self.tf.getModel() if att.lower() in self.tac.beingArchived] reply=Qt.QMessageBox.question(self._Form,"Warning","Do you want to stop archiving "+str(len(toStop))+" attributes?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) if reply == QtGui.QMessageBox.Yes: self.tac.tdb.api.stop_archiving(toStop) self.tac.beingArchived=[a.lower() for a in self.tac.tdb if self.tac.tdb.is_attribute_archived(a.lower())] #update archived list self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') self.tac.setNewDevName() self.clearParams() def onUpdate(self, attrs): self.clearParams() if not attrs: self.tf.hide() self.label.show() self.selectedLabel.hide() self.pushButtonStart.setEnabled(False) self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') else: self.label.hide() self.selectedLabel.show() self.tf.show() self.tf.setModel(attrs) for i in range(len(attrs)): item=self.tf.getItemByIndex(i) if item.getModel().lower() in self.tac.beingArchived: item.setExtraWidgetClass(historyButton) historyButton().setModel(item.getModel()) self.pushButtonStart.setEnabled(True) toStop=[att.lower() for att in attrs if att.lower() in self.tac.beingArchived] if toStop: self.pushButtonStop.setEnabled(True) self.pushButtonStop.setText('Stop ('+str(len(toStop))+')') modes=self.tac.tdb.get(toStop[0]).modes if 'MODE_P' in modes.keys(): self.modepLineEdit.setText(str(int(modes['MODE_P'][0]/1000))) if 'MODE_R' in modes.keys(): if len(modes['MODE_R']) == 3: self.moderLineEdit.setText(str(int(modes['MODE_R'][0]/1000))) self.moderLowerLimitPercentLineEdit.setText(str(float(modes['MODE_R'][1]))) self.moderUpperLimitPercentLineEdit.setText(str(float(modes['MODE_R'][2]))) if 'MODE_A' in modes.keys(): if len(modes['MODE_A']) == 3: self.modeaLineEdit.setText(str(int(modes['MODE_A'][0]/1000))) self.modeaLowerLimitLineEdit.setText(str(int(modes['MODE_A'][1]))) self.modeaUpperLimitLineEdit.setText(str(int(modes['MODE_A'][2]))) else: self.pushButtonStop.setEnabled(False) self.pushButtonStop.setText('Stop') def clearParams(self): self.modepLineEdit.setText('60') self.moderLineEdit.setText('') self.moderLowerLimitPercentLineEdit.setText('') self.moderUpperLimitPercentLineEdit.setText('') self.modeaLineEdit.setText('') self.modeaLowerLimitLineEdit.setText('') self.modeaUpperLimitLineEdit.setText('') def onCancel(self): self._Form.close()
import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(sys.argv) panel = TaurusForm() props = ['state', 'status', 'position', 'velocity', 'acceleration'] model = ['sys/taurustest/1/%s' % p for p in props] panel.setModel(model) panel.show() sys.exit(app.exec_())
import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.display import TaurusLabel from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(sys.argv) panel = TaurusForm() props = ['state', 'status', 'position', 'velocity', 'acceleration'] model = ['sys/taurustest/1/%s' % p for p in props] panel.setModel(model) panel[0].readWidgetClass = TaurusLabel panel[2].writeWidgetClass = 'TaurusWheelEdit' panel.show() sys.exit(app.exec_())
def onShowCurrentValues(self): models = self.getSelectedModels() print(list(map(str, models))) form = TaurusForm() form.addModels(models) form.show()
import sys from taurus.qt.qtgui.panel import TaurusForm from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(sys.argv) attrs = ['state', 'position', 'velocity', 'acceleration'] model = ['motor/icepap/01/%s' % attr for attr in attrs] w = TaurusForm() w.model = model w.show() sys.exit(app.exec_())
def taurusFormMain(): """A launcher for TaurusForm.""" from taurus.qt.qtgui.panel import TaurusForm from taurus.external.qt import Qt from functools import partial parser = argparse.get_taurus_parser() parser.set_usage("%prog [options] [model1 [model2 ...]]") parser.set_description("the taurus form panel application") parser.add_option("--window-name", dest="window_name", default="TaurusForm", help="Name of the window") parser.add_option("--config", "--config-file", dest="config_file", default=None, help="use the given config file for initialization") app = TaurusApplication(cmd_line_parser=parser, app_name="taurusform", app_version=Release.version) args = app.get_command_line_args() options = app.get_command_line_options() dialog = TaurusForm() dialog.setModifiableByUser(True) dialog.setModelInConfig(True) dialog.setWindowTitle(options.window_name) # Make sure the window size and position are restored dialog.registerConfigProperty(dialog.saveGeometry, dialog.restoreGeometry, 'MainWindowGeometry') quitApplicationAction = Qt.QAction(Qt.QIcon.fromTheme("process-stop"), 'Close Form', dialog) quitApplicationAction.triggered.connect(dialog.close) saveConfigAction = Qt.QAction("Save current settings...", dialog) saveConfigAction.setShortcut(Qt.QKeySequence.Save) saveConfigAction.triggered.connect( partial(dialog.saveConfigFile, ofile=None)) loadConfigAction = Qt.QAction("&Retrieve saved settings...", dialog) loadConfigAction.setShortcut(Qt.QKeySequence.Open) loadConfigAction.triggered.connect( partial(dialog.loadConfigFile, ifile=None)) dialog.addActions( (saveConfigAction, loadConfigAction, quitApplicationAction)) # set the default map for this installation from taurus import tauruscustomsettings dialog.setCustomWidgetMap( getattr(tauruscustomsettings, 'T_FORM_CUSTOM_WIDGET_MAP', {})) # set a model list from the command line or launch the chooser if options.config_file is not None: dialog.loadConfigFile(options.config_file) elif len(args) > 0: models = args dialog.setModel(models) else: dialog.chooseModels() dialog.show() sys.exit(app.exec_())