def __init__(self, parent=None): QDialog.__init__(self, parent) uic.loadUi(path.abspath(path.join(path.dirname(__file__), '..', 'ui', 'dialogs', 'addsysconfigdialog.ui')), self)
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)
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()
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)
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()
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)
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')
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)
def accept(self): settings = CompatSettings() cache = self.cacheBox.currentText() if cache in self._caches: self._caches.remove(cache) self._caches.insert(0, cache) settings.setValue('cachehosts', self._caches) settings.setValue('keyprefix', self.prefixEdit.text()) QDialog.accept(self)
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)
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()))
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)
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)
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)
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_]*')))
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)
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])
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'])
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()
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)
def _queryDetails(self): dlg = QDialog(self) dlg.setWindowTitle('Login details for ticket tracker required') layout = QGridLayout() layout.addWidget( QLabel( 'Please enter details for the ticket tracker. ' 'You can contact the instrument control group ' 'for help.', dlg)) layout.addWidget(QLabel('Instrument name:', dlg)) instrBox = QLineEdit(self.instrument, dlg) instrBox.setEnabled(self.instrument != 'none') layout.addWidget(instrBox) noinstrBox = QCheckBox('No instrument', dlg) noinstrBox.setChecked(self.instrument == 'none') noinstrBox.toggled.connect(lambda c: instrBox.setEnabled(not c)) layout.addWidget(noinstrBox) layout.addWidget(QLabel('Username:'******'Password:'******'Login successful. Your API key has been stored ' 'for further reports.') settings = CompatSettings('nicos', 'secrets') settings.beginGroup('Redmine') if noinstrBox.isChecked(): self.instrument = 'none' else: self.instrument = instrBox.text() self.apikey = apikey self.username = userBox.text() settings.setValue('instrument', self.instrument) settings.setValue('apikey', self.apikey) settings.setValue('username', self.username) if not self.instrument or not self.apikey: return False self.titleLabel.setText( 'Submit a ticket for instrument "%s" (as user %s)' % (self.instrument, self.username)) return True
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)
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()
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)
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()
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)
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))
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])
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_]*')))
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)