Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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_())
Exemplo n.º 4
0
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_())
Exemplo n.º 5
0
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_())
Exemplo n.º 6
0
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_())
Exemplo n.º 7
0
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_())
Exemplo n.º 8
0
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()
Exemplo n.º 10
0
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()
Exemplo n.º 11
0
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_())
Exemplo n.º 12
0
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_())
Exemplo n.º 13
0
 def onShowCurrentValues(self):
     models = self.getSelectedModels()
     print(list(map(str, models)))
     form = TaurusForm()
     form.addModels(models)
     form.show()
Exemplo n.º 14
0
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_())
Exemplo n.º 15
0
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_())