Beispiel #1
0
 def __init__(self, parent, client, instrument, configs, config=None):
     QDialog.__init__(self, parent)
     self.instrument = instrument
     self.configs = configs
     self.client = client
     self.setWindowTitle('Sample configuration')
     layout = QVBoxLayout()
     self.frm = QFrame(self)
     loadUi(self.frm, findResource('nicos_mlz/kws1/gui/sampleconf_one.ui'))
     self.frm.addDevBtn.clicked.connect(self.on_addDevBtn_clicked)
     self.frm.delDevBtn.clicked.connect(self.on_delDevBtn_clicked)
     self.frm.readDevsBtn.clicked.connect(self.on_readDevsBtn_clicked)
     self.frm.readApBtn.clicked.connect(self.on_readApBtn_clicked)
     box = QDialogButtonBox(self)
     box.setStandardButtons(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
     box.accepted.connect(self.maybeAccept)
     box.rejected.connect(self.reject)
     layout.addWidget(self.frm)
     layout.addWidget(box)
     self.setLayout(layout)
     for box in [self.frm.offsetBox, self.frm.thickBox, self.frm.factorBox,
                 self.frm.apXBox, self.frm.apYBox, self.frm.apWBox,
                 self.frm.apHBox]:
         box.setValidator(DoubleValidator(self))
     if config is not None:
         configToFrame(self.frm, config)
Beispiel #2
0
    def __init__(self, measmode, wavelength, header_labels, current_table,
                 client, parent):
        QDialog.__init__(self, parent)
        loadUi(self, findResource('nicos_mlz/gui/tunewavetablepreviewdlg.ui'))

        self._client = client
        self._measmode = measmode
        self._wavelength = float(wavelength)
        self._header_labels = header_labels
        self._current_table = current_table
        self._shown_table = None

        self._history = {}  # {datetime: table}

        self.measmodeLabel.setText(measmode)
        self.wavelengthLabel.setText(wavelength)
        self.timeline = TimelineWidget()
        self.horizontalLayout.insertWidget(0, self.timeline)

        self.tableWidget.setColumnCount(len(self._header_labels))
        self.tableWidget.setHorizontalHeaderLabels(self._header_labels)

        self.fromDateTimeEdit.setDateTime(
            QDateTime.currentDateTime().addMonths(-1))
        self.toDateTimeEdit.setDateTime(QDateTime.currentDateTime())

        self.fromDateTimeEdit.dateTimeChanged.connect(self.update_timeline)
        self.toDateTimeEdit.dateTimeChanged.connect(self.update_timeline)
        self.timeline.timepointSelected.connect(self.update_table)
        self.diffNoneRadioButton.toggled.connect(self.update_table)
        self.diffCurrentRadioButton.toggled.connect(self.update_table)
        self.diffPreviousRadioButton.toggled.connect(self.update_table)

        self.update_timeline()
Beispiel #3
0
    def __init__(self, parent, client, instrument, configs, config=None):
        QDialog.__init__(self, parent)
        self.instrument = instrument
        self.configs = configs
        self.client = client
        self.setWindowTitle('Sample configuration')
        layout = QVBoxLayout()
        self.frm = QFrame(self)
        loadUi(self.frm,
               findResource('nicos_ess/loki/gui/ui_files/sampleconf_one.ui'))
        self.frm.addDevBtn.clicked.connect(self.on_addDevBtn_clicked)
        self.frm.delDevBtn.clicked.connect(self.on_delDevBtn_clicked)
        self.frm.readDevsBtn.clicked.connect(self.on_readDevsBtn_clicked)
        box = QDialogButtonBox(self)
        box.setStandardButtons(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
        box.accepted.connect(self.maybeAccept)
        box.rejected.connect(self.reject)
        layout.addWidget(self.frm)
        layout.addWidget(box)
        self.setLayout(layout)
        self.frm.thickBox.setValidator(DoubleValidator(self))
        if config is not None:
            configToFrame(self.frm, config)

        # Apply local customisations to the stylesheet
        self.setStyleSheet(ConfigEditDialog_QSS)

        if not config:
            self.frm.whatLbl.setText('New sample configuration')
Beispiel #4
0
    def __init__(self, main):
        QDialog.__init__(self, main)
        DlgUtils.__init__(self, 'Settings')
        loadUi(self, 'dialogs/settings.ui')
        self.main = main
        self.sgroup = main.sgroup

        genitem = QTreeWidgetItem(self.settingsTree, ['General'], -2)
        QTreeWidgetItem(self.settingsTree, ['Connection presets'], -1)
        self.settingsTree.setCurrentItem(genitem)
        self.stacker.setCurrentIndex(0)

        # general page
        self.instrument.setText(main.instrument)
        self.confirmExit.setChecked(main.confirmexit)
        self.warnWhenAdmin.setChecked(main.warnwhenadmin)
        self.showTrayIcon.setChecked(main.showtrayicon)
        self.autoReconnect.setChecked(main.autoreconnect)
        self.autoSaveLayout.setChecked(main.autosavelayout)
        self.manualSaveLayout.setChecked(not main.autosavelayout)
        self.allowOutputLineWrap.setChecked(main.allowoutputlinewrap)

        # connection data page
        self.connpresets = main.connpresets
        for setting, cdata in main.connpresets.items():
            QListWidgetItem(setting + ' (%s:%s)' % (cdata.host, cdata.port),
                            self.settinglist).setData(32, setting)
Beispiel #5
0
    def __init__(self, parent, client, **configs):
        QDialog.__init__(self, parent)
        DlgUtils.__init__(self, self.toolName)
        loadUi(self, 'tools/downtime.ui')
        self.sendBtn = self.buttonBox.addButton('&Send',
                                                QDialogButtonBox.AcceptRole)
        self.sendBtn.setIcon(QIcon(':/mail'))
        self.sendBtn.setDisabled(True)

        self.parentwindow = parent
        self.client = client
        if hasattr(parent, 'mainwindow'):
            self.mainwindow = parent.mainwindow
            self.log = NicosLogger(self.toolName)
            self.log.parent = self.mainwindow.log
        else:
            self.log = configs.get('log', None)
        self.sgroup = SettingGroup(self.toolName)

        self._sender = configs.get('sender', '*****@*****.**')
        self._receiver = configs.get('receiver', '*****@*****.**')
        self._mailserver = configs.get('mailserver', '') or \
            self._getDeviceComponent('experiment', 'mailserver', 'smtp.frm2.tum.de')
        self._instrument = configs.get('instrument', '') or \
            self._getDeviceComponent('instrument', 'instrument', 'DEMO')
        t = self.mailheaderText.text().replace('{{instrument}}',
                                               self._instrument)
        self.mailheaderText.setText(t)

        self.startDown.setDateTime(QDateTime.currentDateTime().addSecs(-3600))
        self.endDown.setDateTime(QDateTime.currentDateTime())
        self.errorText.setVisible(False)
        with self.sgroup as settings:
            self.loadSettings(settings)
        self.reasons.clearEditText()
Beispiel #6
0
    def __init__(self, parent, windowTitle='Error'):
        QDialog.__init__(self, parent)
        loadUi(self, 'dialogs/error.ui')

        self.iconLabel.setPixmap(self.style().standardIcon(
            QStyle.SP_MessageBoxWarning).pixmap(32, 32))
        self.setWindowTitle(windowTitle)
Beispiel #7
0
 def __init__(self, parent=None):
     QDialog.__init__(self, parent)
     uic.loadUi(path.abspath(path.join(path.dirname(__file__),
                                       '..',
                                       'ui',
                                       'dialogs',
                                       'addsysconfigdialog.ui')), self)
Beispiel #8
0
 def __init__(self, parent):
     QDialog.__init__(self, parent)
     loadUi(self, 'panels/history_settings.ui')
     settings = CompatSettings()
     self._caches = settings.value('cachehosts') or []
     prefix = settings.value('keyprefix', 'nicos/')
     self.cacheBox.addItems(self._caches)
     self.prefixEdit.setText(prefix)
Beispiel #9
0
 def __init__(self, parent):
     QDialog.__init__(self, parent)
     loadUi(self, 'panels/fit_arby.ui')
     self.presets = DlgPresets('fit_arby',
                               [(self.function, ''), (self.fitparams, ''),
                                (self.xfrom, ''), (self.xto, '')])
     self.presets.load()
     for name in sorted(ArbitraryFitter.arby_functions):
         QListWidgetItem(name, self.oftenUsed)
Beispiel #10
0
    def __init__(self, parent, connpresets, lastpreset, lastdata, tunnel=''):
        QDialog.__init__(self, parent)
        loadUi(self, 'dialogs/auth.ui')
        self.connpresets = connpresets
        if isinstance(lastpreset, QPyNullVariant):
            lastpreset = None

        pal = self.quickList.palette()
        pal.setColor(QPalette.Window, pal.color(QPalette.Base))
        self.quickList.setPalette(pal)

        if len(connpresets) < 3:
            self.quickList.hide()
        else:
            self.quickList.setStyleSheet('padding: 10px 5px;')
            self.quickList.clear()
            maxw = 64
            icon = QIcon(':/appicon')
            metric = QFontMetrics(self.quickList.font())
            for preset in sorted(connpresets):
                item = QListWidgetItem(preset, self.quickList)
                item.setIcon(icon)
                maxw = max(maxw, metric.width(preset))
            self.quickList.setGridSize(QSize(maxw + 8, 72))
            # the automatic sizing still leads to a vertical scrollbar
            hint = self.quickList.sizeHint()
            hint.setHeight(hint.height() + 50)
            hint.setWidth(max(4.7 * maxw, 330))
            self.quickList.setMinimumSize(hint)
            self.resize(self.sizeHint())

        self.presetOrAddr.addItems(sorted(connpresets))
        self.presetOrAddr.setEditText(lastpreset)
        if not lastpreset and lastdata:
            # if we have no stored last preset connection, put in the raw data
            self.presetOrAddr.setEditText('%s:%s' %
                                          (lastdata.host, lastdata.port))
            self.viewonly.setChecked(lastdata.viewonly)
        self.userName.setText(lastdata.user)
        self.password.setFocus()

        self.viaFrame.setHidden(not tunnel)
        if tunnel:
            host, username, password = splitTunnelString(tunnel)
            self.remotePassword.setText(password)
            if not password:
                self.remotePassword.setFocus()
            self.remoteUserName.setText(username)
            if not username:
                self.remoteUserName.setFocus()
            self.remoteHost.setText(host)
            if not host:
                self.remoteHost.setFocus()

        self.presetFrame.hide()
        self.resize(QSize(self.width(), self.minimumSize().height()))
Beispiel #11
0
 def __init__(self, setups, typ, parent=None):
     QDialog.__init__(self, parent)
     uic.loadUi(
         path.abspath(
             path.join(path.dirname(__file__), '..', 'ui', 'dialogs',
                       'addxcludedialog.ui')), self)
     self.setWindowTitle('New %s ... ' % typ)
     self.labelHeader.setText('Add new %s:' % typ)
     for setup in setups:
         QListWidgetItem(setup, self.listWidgetSetups)
Beispiel #12
0
 def __init__(self, parent):
     QDialog.__init__(self, parent)
     loadUi(self, findResource('nicos_ess/loki/gui/ui_files/rtconfig.ui'))
     self.progBox.setValidator(DoubleValidator(self))
     self.chanBox.valueChanged.connect(self._update_time)
     self.intervalBox.valueChanged.connect(self._update_time)
     self.intervalUnitBox.currentIndexChanged.connect(self._update_time)
     self.linBtn.toggled.connect(self._update_time)
     self.progBtn.toggled.connect(self._update_time)
     self.progBox.textChanged.connect(self._update_time)
Beispiel #13
0
    def __init__(self, parent, client, **settings):
        QDialog.__init__(self, parent)
        loadUi(self, 'tools/website.ui')
        self.webView = QWebView(self)
        self.layout().addWidget(self.webView)

        site = settings.get('url', '')
        if site:
            self.webView.load(QUrl(site))

        self.closeBtn.clicked.connect(self.close)
Beispiel #14
0
 def __init__(self, instruments, instrument=None, parent=None):
     QDialog.__init__(self, parent)
     uic.loadUi(
         path.abspath(
             path.join(path.dirname(__file__), '..', 'ui', 'dialogs',
                       'newsetupdialog.ui')), self)
     self.setInstruments(instruments)
     if instrument:
         self.setCurrentInstrument(instrument)
         self.comboBoxInstrument.setDisabled(True)
     self.lineEditFileName.setValidator(
         QRegExpValidator(QRegExp('[A-Za-z_]{1}[A-Za-z0-9_]*')))
Beispiel #15
0
    def __init__(self, parent, view, tb):
        QDialog.__init__(self, parent)
        loadUi(self, 'dialogs/traceback.ui')
        self.tb = tb
        self.view = view
        self.client = parent.client

        assert tb.startswith('Traceback')
        # split into frames and message
        frames = []
        message = ''
        curframe = []
        for line in tb.splitlines():
            if line.startswith('        '):
                try:
                    name, v = line.split('=', 1)
                except ValueError:
                    pass  # most probably the "^" line of a SyntaxError
                else:
                    if curframe:
                        curframe[2][name.strip()] = v.strip()
            elif line.startswith('    '):
                if curframe:
                    curframe[1] = line.strip()
            elif line.startswith('  '):
                curframe = [line.strip(), '', {}]
                frames.append(curframe)
            elif not line.startswith('Traceback'):
                message += line

        button = QPushButton('To clipboard', self)
        self.buttonBox.addButton(button, QDialogButtonBox.ActionRole)

        def copy():
            QApplication.clipboard().setText(tb+'\n', QClipboard.Selection)
            QApplication.clipboard().setText(tb+'\n', QClipboard.Clipboard)
        button.clicked.connect(copy)

        self.message.setText(message[:200])
        self.tree.setFont(view.font())
        boldfont = QFont(view.font())
        boldfont.setBold(True)
        for filename, line, bindings in frames:
            item = QTreeWidgetItem(self.tree, [filename])
            item.setFirstColumnSpanned(True)
            item = QTreeWidgetItem(self.tree, [line])
            item.setFirstColumnSpanned(True)
            item.setFont(0, boldfont)
            for var, value in iteritems(bindings):
                QTreeWidgetItem(item, ['', var, value])
Beispiel #16
0
    def __init__(self, parent, client, **settings):
        QDialog.__init__(self, parent)
        loadUi(self, 'tools/calculator.ui')

        self.closeBtn.clicked.connect(self.doclose)

        self.braggfmlLabel.setPixmap(QPixmap(
            path.join(path.dirname(__file__), 'calculator_images',
                      'braggfml.png')))
        for fld in bragg_fields:
            getattr(self, 'chk' + fld).toggled.connect(self.gen_checked(fld))

        self._miezesettings = settings.get('mieze', [])
        if not self._miezesettings:
            self.tabWidget.removeTab(1)
        else:
            self.mzwavelengthInput.textChanged.connect(self.mzcalc)
            self.mzdistanceInput.textChanged.connect(self.mzcalc)
            self.mzformulaLabel.setPixmap(QPixmap(
                path.join(path.dirname(__file__), 'calculator_images',
                          'miezefml.png')))

            self.mztimeTable.setHeaderLabels(['Setting', u'MIEZE time τ'])
            for setting in self._miezesettings:
                self.mztimeTable.addTopLevelItem(QTreeWidgetItem([setting, '']))

        for fld in neutron_fields:
            getattr(self, 'prop' + fld).textEdited.connect(self.n_calc)

        self.presets = DlgPresets('nicoscalctool', [
            (self.tabWidget, 0),
            (self.mzwavelengthInput, '10'), (self.mzdistanceInput, '100'),
            (self.inputLambda, '4.5'), (self.input2Theta, '0'),
            (self.inputD, '10'), (self.inputN, '1'), (self.inputQ, '0'),
            (self.chkLambda, 1), (self.chk2Theta, 0), (self.chkN, 1),
            (self.chkD, 1), (self.chkQ, 0), (self.chkSampleDet, 1),
            (self.inputSampleDet, '0'),
            (self.propL, '1.8'), (self.propK, '3.4907'),
            (self.propE, '25.2482'), (self.propNy, '6.1050'),
            (self.propT, '292.9934'), (self.propV, '2197.80'),
        ])
        self.presets.load()
        self.braggcalc()
        self.n_calc('')

        dblval = DoubleValidator(self)
        for fld in bragg_fields:
            inputbox = getattr(self, 'input'+fld)
            inputbox.textChanged.connect(self.braggcalc)
            inputbox.setValidator(dblval)
Beispiel #17
0
    def __init__(self, parent, info=None, client=None):
        QDialog.__init__(self, parent)
        DlgUtils.__init__(self, 'History viewer')
        loadUi(self, 'panels/history_new.ui')
        self.client = client

        self.fromdate.setDateTime(QDateTime.currentDateTime())
        self.todate.setDateTime(QDateTime.currentDateTime())

        self.customY.toggled.connect(self.toggleCustomY)
        self.toggleCustomY(False)

        self.simpleTime.toggled.connect(self.toggleSimpleExt)
        self.extTime.toggled.connect(self.toggleSimpleExt)
        self.frombox.toggled.connect(self.toggleSimpleExt)
        self.tobox.toggled.connect(self.toggleSimpleExt)
        self.toggleSimpleExt(True)

        self.simpleTimeSpec.textChanged.connect(self.setIntervalFromSimple)

        self.helpButton.clicked.connect(self.showDeviceHelp)
        self.simpleHelpButton.clicked.connect(self.showSimpleHelp)

        self.devicesFrame.hide()
        self.deviceTree = None
        self.deviceTreeSel = OrderedDict()
        if not client:
            self.devicesExpandBtn.hide()
        else:
            devices = client.getDeviceList()
            devcompleter = QCompleter(devices, self)
            devcompleter.setCompletionMode(QCompleter.InlineCompletion)
            self.devices.setCompleter(devcompleter)

        if info is not None:
            self.devices.setText(info['devices'])
            self.namebox.setText(info['name'])
            self.simpleTime.setChecked(info['simpleTime'])
            self.simpleTimeSpec.setText(info['simpleTimeSpec'])
            self.slidingWindow.setChecked(info['slidingWindow'])
            self.extTime.setChecked(not info['simpleTime'])
            self.frombox.setChecked(info['frombox'])
            self.tobox.setChecked(info['tobox'])
            self.fromdate.setDateTime(QDateTime.fromTime_t(info['fromdate']))
            self.todate.setDateTime(QDateTime.fromTime_t(info['todate']))
            self.interval.setText(info['interval'])
            self.customY.setChecked(info['customY'])
            self.customYFrom.setText(info['customYFrom'])
            self.customYTo.setText(info['customYTo'])
Beispiel #18
0
    def __init__(self, parent, client):
        QDialog.__init__(self, parent)
        self.client = client
        loadUi(self, findResource('nicos_ess/loki/gui/'
                                  'ui_files/sample_changers/'
                                  'thermo_cell_holder_positions.ui'))
        self.initialise_markups()
        for table in self._get_all_tables():
            table.setItemDelegate(TableDelegate())

        self._disable_all_positions_but_first()

        self.dialogButtonBox.rejected.connect(self.reject)
        self.dialogButtonBox.accepted.connect(self.accept)

        self.initialise_dialog_tables()
Beispiel #19
0
    def __init__(self, parent, client, **settings):
        QDialog.__init__(self, parent)
        loadUi(self, 'tools/commands.ui')

        self.closeBtn.clicked.connect(self.close)

        commands = settings.get('commands', [])
        ncmds = len(commands)
        collen = min(ncmds, 8)

        for i, (text, cmd) in enumerate(commands):
            btn = QPushButton(text, self)
            self.buttonLayout.addWidget(btn, i % collen, i // collen)

            def btncmd(bcmd=cmd):
                self.execute(bcmd)

            btn.clicked[()].connect(btncmd)
Beispiel #20
0
    def __init__(self, parent, devname, devinfo, devitem, log, expert):
        QDialog.__init__(self, parent)
        loadUi(self, 'panels/devices_one.ui')
        self.log = log

        self.device_panel = parent
        self.client = parent.client
        self.devname = devname
        self.devinfo = devinfo
        self.devitem = devitem
        self.paramItems = {}
        self.moveBtn = None
        self.target = None

        self._reinit()
        self._show_extension(expert)

        if self.target:
            self.target.setFocus()
Beispiel #21
0
    def __init__(self, main):
        QDialog.__init__(self, main)
        loadUi(self, 'dialogs/watchdog.ui')

        self.frame = QFrame(self)
        self.scrollArea.setWidget(self.frame)
        self.frame.setLayout(QVBoxLayout())
        self.frame.layout().setContentsMargins(0, 0, 10, 0)
        self.frame.layout().addStretch()

        def btn(button):
            if self.buttonBox.buttonRole(button) == QDialogButtonBox.ResetRole:
                for w in self.frame.children():
                    if isinstance(w, QWidget):
                        w.hide()
            else:
                self.close()

        self.buttonBox.clicked.connect(btn)
Beispiel #22
0
    def __init__(self, parent, editor, has_scintilla):
        QDialog.__init__(self, parent)
        loadUi(self, 'panels/search.ui')

        self.editor = editor
        self.found = False
        self.forward = True

        if not has_scintilla:
            # QPlainTextEdit doesn't support some find flags
            self.regexpCheckBox.setEnabled(False)
            self.wrapCheckBox.setEnabled(False)
            self.wrapCheckBox.setChecked(False)

        for box in [
                self.regexpCheckBox, self.caseCheckBox, self.wordCheckBox,
                self.wrapCheckBox
        ]:
            box.toggled.connect(self.reset_found)
Beispiel #23
0
    def __init__(self, parent, measdef, client):
        self._edit = None
        self.measdef = measdef
        self.client = client
        QDialog.__init__(self, parent)
        loadUi(self, findResource('nicos_ess/loki/gui/ui_files/detsets.ui'))
        self.table.setColumnCount(len(measdef.getElements()))

        # apply current settings
        self._rows = []
        if measdef.detsets:
            for row in measdef.detsets[0]:
                self.addRow(row)

        # create widgets for new setting
        self._new_elements = {}
        headers = []
        for i, (eltype, cls) in enumerate(measdef.getElements()):
            element = self._new_elements[eltype] = cls(eltype, self.client)
            w = element.createWidget(self, self.client)
            for other in self._new_elements.values():
                if other is not element:
                    element.otherChanged(other.eltype, other.getValue())

            def handler(new_value, eltype=eltype):
                for other in self._new_elements.values():
                    other.otherChanged(eltype, new_value)

            element.changed.connect(handler)
            headers.append(element.getLabel())
            layout = QVBoxLayout()
            layout.addWidget(QLabel(headers[-1], self))
            layout.addWidget(w)
            self.widgetFrame.layout().insertLayout(i, layout)

        # update table widget
        self.table.setHorizontalHeaderLabels(headers)
        self.table.resizeColumnsToContents()
        for i in range(len(measdef.getElements())):
            self.table.setColumnWidth(i,
                                      max(50, 1.5 * self.table.columnWidth(i)))
        self.table.resizeRowsToContents()
Beispiel #24
0
 def __init__(self, parameters, existingParameters, parent=None):
     QDialog.__init__(self, parent)
     uic.loadUi(
         path.abspath(
             path.join(path.dirname(__file__), '..', 'ui', 'dialogs',
                       'addparameterdialog.ui')), self)
     self.lineEditCustomParameter.setHidden(True)
     missingParameters = [
         key for key in parameters.keys()
         if key not in existingParameters.keys() and not key.startswith('_')
     ]
     if missingParameters:
         for key in sorted(missingParameters):
             listItem = QListWidgetItem(key, self.listWidgetSelectParameter)
             listItem.setToolTip(parameters[key].description)
             self.listWidgetSelectParameter.addItem(listItem)
     else:
         self.checkBoxCustomParameter.setChecked(True)
         self.checkBoxCustomParameter.setEnabled(False)
         self.lineEditCustomParameter.setEnabled(True)
Beispiel #25
0
    def __init__(self, parent, client, **kwds):
        QDialog.__init__(self, parent)
        DlgUtils.__init__(self, self.toolName)
        loadUi(self, 'tools/bugreport.ui')
        self.client = client

        settings = QSettings('nicos', 'secrets')
        settings.beginGroup('Redmine')
        self.instrument = settings.value('instrument', '')
        self.apikey = settings.value('apikey')
        self.username = settings.value('username')

        self.traceback = kwds.get('traceback')
        self.log_excerpt = kwds.get('log_excerpt', '')
        if not self.traceback:
            self.tbLabel.hide()
            self.scriptBox.hide()
        else:
            self.ticketType.setEnabled(False)  # always bug
            self.scriptBox.setChecked(True)
            self.subject.setText(self.traceback.splitlines()[-1].strip())

        self.stacker.setCurrentIndex(0)
        self.subject.setFocus()
        btn = self.buttonBox.addButton('Login details',
                                       QDialogButtonBox.ResetRole)
        btn.clicked.connect(self._queryDetails)

        if not redminelib:
            self.showError('Reporting is not possible since the '
                           'python-redmine module is not installed.')
            return  # don't add Submit button
        elif not self.instrument or not self.apikey:
            if not self._queryDetails():
                return

        self.buttonBox.addButton('Submit', QDialogButtonBox.AcceptRole)

        self.titleLabel.setText(
            'Submit a ticket for instrument "%s" (as user %s)'
            % (self.instrument, self.username))
Beispiel #26
0
    def __init__(self, parent, measdef, client):
        self.measdef = measdef
        self.samplefile = None
        self.client = client
        DlgUtils.__init__(self, 'Sample selection')
        QDialog.__init__(self, parent)
        loadUi(self, findResource('nicos_ess/loki/gui/ui_files/samples.ui'))

        self._init_samplefile = False
        self.samplefile = measdef.samplefile
        if self.samplefile is not None:
            self._init_samplefile = True
            self.on_sampleFileBtn_toggled(True)
            self._init_samplefile = False
        else:
            self.on_currentSamplesBtn_toggled(True)

        if self.measdef.samples:
            for sam in self.measdef.samples[0]:
                newitem = QListWidgetItem(sam['sample'].getValue(),
                                          self.selList)
                newitem.setData(SAMPLE_NUM, sam['sample'].extra[0])
Beispiel #27
0
    def __init__(self, classesList, parent=None):
        QDialog.__init__(self, parent)
        uic.loadUi(
            path.abspath(
                path.join(path.dirname(__file__), '..', 'ui', 'dialogs',
                          'newdevicedialog.ui')), self)
        self.menu = QMenu('Select class')
        self.pushButtonSelectClass.setMenu(self.menu)
        for _class in sorted([str(__class)[14:-2] for __class in classesList]):
            self.recursiveMenu(_class, self.menu)

        self.menuCustom = QMenu('Select class')
        for _class in sorted([
                str(__class)[14:-2]
                for __class in classparser.getDeviceClasses(None)
        ]):
            self.recursiveMenu(_class, self.menuCustom)

        self.checkBoxCustomClasses.stateChanged.connect(
            self.stateChangedHandler)

        self.lineEditDeviceName.setValidator(
            QRegExpValidator(QRegExp('[A-Za-z0-9_]*')))
Beispiel #28
0
    def __init__(self, reason, parent=None):
        QDialog.__init__(self, parent)
        loadUi(self, 'dialogs/instr_select.ui')
        icon = QIcon(':/appicon-16')
        if reason:
            self.reasonLbl.setText(reason)
        else:
            self.reasonLbl.hide()
            self.saveBox.hide()

        self.confTree.itemDoubleClicked.connect(self.handleDoubleClick)
        for entry in sorted(os.listdir(config.nicos_root)):
            full = path.join(config.nicos_root, entry)
            if not (entry.startswith('nicos_') and path.isdir(full)):
                continue
            pkgitem = QTreeWidgetItem(self.confTree, [entry])
            pkgitem.setIcon(0, icon)
            for subentry in sorted(os.listdir(full)):
                configfile = path.join(full, subentry, 'guiconfig.py')
                if not path.isfile(configfile):
                    continue
                item = QTreeWidgetItem(pkgitem, [subentry])
                item.setData(0, QTreeWidgetItem.UserType, configfile)
Beispiel #29
0
    def __init__(self, parent, measdef, client):
        self.measdef = measdef
        self.client = client
        QDialog.__init__(self, parent)
        loadUi(self, findResource('nicos_ess/loki/gui/ui_files/devices.ui'))

        self.frame = QFrame(self)
        self.scrollArea.setWidget(self.frame)
        self.frame.setLayout(QVBoxLayout())
        self.frame.layout().setContentsMargins(0, 0, 10, 0)
        self.frame.layout().addStretch()

        devlist = client.getDeviceList('nicos.core.device.Moveable')
        for dev in devlist:
            if dev not in DEV_NOT_ALLOWED:
                QListWidgetItem(dev, self.devList)

        self._widgets = []

        for group in measdef.devices:
            devs = group[0].keys()
            w = self._addWidget(devs)
            for entry in group:
                w.addRow([entry[x] for x in devs])
Beispiel #30
0
 def __init__(self, parent, client, panelcfg, title, **options):
     from nicos.clients.gui.panels.utils import createWindowItem
     QDialog.__init__(self, parent)
     self.panels = []
     self.mainwindow = parent.mainwindow
     self.log = NicosLogger('PanelDialog')
     self.log.parent = self.mainwindow.log
     self.client = client
     self.user_color = self.palette().color(QPalette.Base)
     self.user_font = self.font()
     if isinstance(panelcfg, type) and issubclass(panelcfg, Panel):
         panelcfg = panel('%s.%s' % (panelcfg.__module__,
                                     panelcfg.__name__), **options)
     elif isinstance(panelcfg, str):
         panelcfg = panel(panelcfg, **options)
     hbox = QHBoxLayout()
     hbox.setContentsMargins(0, 0, 0, 0)
     pnl = createWindowItem(panelcfg, self, self, self.mainwindow, self.log)
     if pnl:
         hbox.addWidget(pnl)
     self.setLayout(hbox)
     self.setWindowTitle(title)
     SetupDepWindowMixin.__init__(self, self.client)
     self.setProperty('type', 'PanelDialog')