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, client): QMainWindow.__init__(self, parent) loadUi(self, 'dialogs/helpwin.ui') self.history = [] self.webView = QWebView(self) self.webView.setPage(HelpPage(client, self.history, self.webView)) self.frame.layout().addWidget(self.webView) self.client = client self._next_scrollpos = None
def initUi(self): loadUi(self, findResource('nicos_mlz/refsans/gui/resolutionpanel.ui')) valid = QDoubleValidator() for f in (self.chSpeed, self.phase2, self.phase3, self.phase4, self.phase5, self.phase6): f.setValidator(valid) f.setReadOnly(True)
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, client, options, frame): LokiPanelBase.__init__(self, parent, client, options) self.client = client self.frame = frame loadUi(self.frame, findResource('nicos_ess/loki/gui/' 'ui_files/sample_changers/' 'thermo_cell_holder_settings.ui')) self.initialise_validators() self.frame.cartridgeSettings.clicked.connect( self._active_holder_position_settings)
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, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, self.uiName) for ch in self.findChildren(NicosWidget): ch.setClient(self.client) if self.client.viewonly: self.buttonBox.setStandardButtons(QDialogButtonBox.Close) else: self.buttonBox.setStandardButtons(QDialogButtonBox.Apply | QDialogButtonBox.Close)
def __init__(self, parent, client, devs): self.client = client self.devs = devs QWidget.__init__(self, parent) loadUi(self, findResource('nicos_mlz/kws1/gui/devices_one.ui')) self.table.setColumnCount(len(devs)) self.table.setHorizontalHeaderLabels(devs) self._edit = None self._rows = []
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, 'panels/commandline.ui') self.commandInput.history = self.cmdhistory self.commandInput.completion_callback = self.completeInput client.initstatus.connect(self.on_client_initstatus) client.mode.connect(self.on_client_mode) client.experiment.connect(self.on_client_experiment)
def __init__(self, parent, _client, **_kwds): QMainWindow.__init__(self, parent) DlgUtils.__init__(self, 'Hexapod') # set during actions that will call signal handlers self.recursive = False loadUi(self, findResource('nicos_mlz/kws1/gui/tools/hexapod.ui')) for but in (self.butStart, self.butSetWorkspace, self.butSetFrame, self.butSaveVel): but.setEnabled(False) self.axes = {} self.axeslist = [] try: self._controller = PyTango.DeviceProxy(TANGO_DEV_BASE + 'controller') # make sure the server is running and create remaining proxies try: self._controller.State() except AttributeError: raise Exception('server appears to be not running') for axis in AXES: self.axes[axis] = PyTango.DeviceProxy(TANGO_DEV_BASE + axis) self.axeslist.append(self.axes[axis]) except Exception as err: self.showError('could not connect to tango server: %s' % err) self.deleteLater() return self.on_cbsWorkspace_activated(0) self.on_cbsFrame_activated(self.cbsFrame.currentText()) tx_speed = self.query_attr(self.axes['tx'], 'speed') self.inpVelTrans.setValue(tx_speed) self.lblVelTrans.setText(self.inpVelTrans.text()) self.inpVelRot.setValue(self.query_attr(self.axes['rx'], 'speed')) self.lblVelRot.setText(self.inpVelRot.text()) self.inpVelOmega.setValue(self.query_attr(self.axes['omega'], 'speed')) self.lblVelOmega.setText(self.inpVelOmega.text()) # ramp time = speed / acceleration self.inpRampUp.setValue(tx_speed / self.query_attr(self.axes['tx'], 'accel')) self.lblRampUp.setText(self.inpRampUp.text()) self.inpRampDown.setValue(tx_speed / self.query_attr(self.axes['tx'], 'decel')) self.lblRampDown.setText(self.inpRampDown.text()) self.updTimer = QTimer() self.updTimer.timeout.connect(self.updateTimer) self.updTimer.start(1000)
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, parent, client, options): Panel.__init__(self, parent, client, options) self._error_window = None if 'uifile' not in options: raise ConfigurationError('GenericPanels require at least an' ' `uifile` option.') loadUi(self, findResource(options['uifile'])) if options.get('showmsg'): self.client.message.connect(self.on_client_message) if client.isconnected: self.on_client_connected() client.connected.connect(self.on_client_connected)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, self.ui) self._finish_exp_panel = None # Additional dialog panel to pop up after FinishExperiment(). self._finish_exp_panel = options.get('finish_exp_panel') self.finishButton.setEnabled(False) client.connected.connect(self.on_client_connected) client.disconnected.connect(self.on_client_disconnected) client.experiment.connect(self.on_experiment_changed)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) self._logPath = 'log' loadUi(self, 'panels/logviewer.ui') # initialize date/time range to display logs from yesterday # (same time) to now self.dateTimeEditFrom.setDateTime( QDateTime.currentDateTime().addDays(-1)) self.dateTimeEditTo.setDateTime(QDateTime.currentDateTime())
def __init__(self, parent, panel, client): self.client = client QWidget.__init__(self, parent) loadUi(self, 'panels/simresult.ui') self.simOutStack.setCurrentIndex(0) hdr = self.simRanges.header() hdr.setSectionResizeMode(QHeaderView.ResizeToContents) self.panel = panel self.simuuid = None client.simmessage.connect(self.on_client_simmessage) client.simresult.connect(self.on_client_simresult)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, 'panels/errpanel.ui') self.outView.setFullTimestamps(True) self.buttonBox.addButton('Clear', QDialogButtonBox.ResetRole) if client.isconnected: self.on_client_connected() client.connected.connect(self.on_client_connected) client.message.connect(self.on_client_message) client.experiment.connect(self.on_client_experiment)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/pgaa/gui/panels/tomography.ui')) self.current_status = None self.run_color = QColor('#ffdddd') self.idle_color = parent.user_color client.connected.connect(self.on_client_connected) client.message.connect(self.on_client_message) client.status.connect(self.on_client_initstatus) client.mode.connect(self.on_client_mode)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/gui/plcpanel.ui')) self._curdev = None self._changed_pars = {} self._in_reread = False if client.isconnected: self.on_client_connected() client.connected.connect(self.on_client_connected) client.device.connect(self.on_client_device) self.controlBox.setEnabled(False)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/toftof/gui/safety.ui')) self.table.horizontalHeader().restoreState(self._headerstate) self.clear() if client.isconnected: self.on_client_connected() client.connected.connect(self.on_client_connected) client.setup.connect(self.on_client_connected) client.disconnected.connect(self.on_client_disconnected) client.cache.connect(self.on_client_cache)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/mira/gui/live.ui')) self._format = None self._runtime = 0 self._no_direct_display = False self._range_active = False self.statusBar = QStatusBar(self) policy = self.statusBar.sizePolicy() policy.setVerticalPolicy(QSizePolicy.Fixed) self.statusBar.setSizePolicy(policy) self.statusBar.setSizeGripEnabled(False) self.layout().addWidget(self.statusBar) if CascadeWidget: self.widget = CascadeWidget(self) self.widget.setContextMenuPolicy(Qt.CustomContextMenu) self.widgetLayout.addWidget(self.widget) else: raise RuntimeError('The Cascade live widget is not available') self.rangeFrom = QDoubleSpinBox(self) self.rangeTo = QDoubleSpinBox(self) for ctrl in [self.rangeFrom, self.rangeTo]: ctrl.setRange(0, 100000000) ctrl.setEnabled(False) ctrl.setMaximumWidth(90) ctrl.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) ctrl.valueChanged.connect(self.on_rangeChanged) self.liveitem = QListWidgetItem('<Live>', self.fileList) self.liveitem.setData(32, '') self.liveitem.setData(33, '') self.splitter.setSizes([20, 80]) self.splitter.restoreState(self.splitterstate) client.livedata.connect(self.on_client_livedata) client.liveparams.connect(self.on_client_liveparams) if client.isconnected: self.on_client_connected() client.connected.connect(self.on_client_connected) client.setup.connect(self.on_client_connected) self.actionLogScale.toggled.connect(self.widget.SetLog10) self.actionSelectChannels.triggered.connect(self.widget.showSumDlg) self.widget.customContextMenuRequested.connect( self.on_widget_customContextMenuRequested)
def __init__(self, name='unknown', parent=None, **kwds): QWidget.__init__(self, parent) loadUi(self, findResource('nicos_mlz/reseda/gui/mieze_display_foil.ui')) # set name self.name = name self.groupBox.setTitle(name) # insert plot widget + store reference self.plotwidget = MiniPlot(self) self.plotwidget.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.verticalLayout.insertWidget(0, self.plotwidget) self.do_update([(0, 0, 0, 0), (0, 0, 0, 0), [0] * 16] * 2)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/gui/tunewavetable.ui')) self._dev = options.get('tabledev') measuremode = options.get('measuremode', 'nrse') if measuremode not in ['nrse', 'mieze']: measuremode = 'nrse' for i in range(self.measModeComboBox.count()): if measuremode == self.measModeComboBox.itemText(i): self.measModeComboBox.setCurrentIndex(i) break # access to the echotime device if not self._dev: raise ConfigurationError('TuneWaveTable panel: At least `tabledev`' ' is required.') self._header_labels = [] self._available_tables = {} self._edit = None self._blocked_while_edit = [ self.measModeComboBox, self.wavelengthComboBox, self.restorePushButton, self.savePushButton, self.refreshPushButton, self.deletePushButton ] self.tableWidget.installEventFilter(self) self.tableWidget.verticalHeader().setContextMenuPolicy( Qt.CustomContextMenu) self.measModeComboBox.currentIndexChanged.connect(self._fill_table) self.measModeComboBox.currentIndexChanged.connect( self._update_combo_boxes) self.wavelengthComboBox.currentIndexChanged.connect(self._fill_table) self.savePushButton.clicked.connect(self._save_current_table) self.refreshPushButton.clicked.connect(self._update_available_tables) self.tableWidget.verticalHeader()\ .customContextMenuRequested.connect( self.on_tableWidget_customContextMenuRequested) self.tableWidget.cellActivated.connect(self._edit_cell) self.tableWidget.verticalHeader().sectionClicked.connect( self._stop_edit) self.tableWidget.horizontalHeader().sectionPressed.connect( self._stop_edit) self.tableWidget.setAlternatingRowColors(True) client.connected.connect(self.on_client_connected) client.device.connect(self.on_client_device) self._dev_available = False
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, 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, 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, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/reseda/gui/mieze_display.ui')) self.mywidgets = [] self.foils = options.get('foils', [7, 6, 5, 0, 1, 2]) self.columns = options.get('columns', 3) self.rows = options.get('rows', 2) for foil, x, y in zip( self.foils, self.rows * list(range(self.columns)), sum([self.columns * [i] for i in range(self.rows)], [])): foilwidget = FoilWidget(name='Foil %d' % foil, parent=self) self.mywidgets.append(foilwidget) self.gridLayout.addWidget(foilwidget, y, x) self.client.cache.connect(self.on_client_cache) self.client.connected.connect(self.on_client_connected)
def initUi(self): with waitCursor(): loadUi(self, findResource('nicos_mlz/toftof/gui/resolutionpanel.ui')) valid = QDoubleValidator() for f in (self.E_neutron, self.Q0_min, self.Q0_max, self.dE_max, self.dE_el): f.setValidator(valid) f.setReadOnly(True) self.plot1 = DynamicRangePlot(self.drPlot) self.plot2 = ElasticResolutionPlot(self.erPlot) self.plot3 = ResolutionPlot(self.rPlot)
def __init__(self, parent, client, options): Panel.__init__(self, parent, client, options) loadUi(self, self.ui) self.propdbInfo.setVisible(False) self._orig_proposal = None self._new_exp_panel = None self._finish_exp_panel = None # Additional dialog panels to pop up after NewExperiment() and before # FinishExperiment() respectively. self._new_exp_panel = options.get('new_exp_panel') self._finish_exp_panel = options.get('finish_exp_panel') client.connected.connect(self.on_client_connected) client.setup.connect(self.on_client_connected) client.experiment.connect(self.on_client_experiment)
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, options): Panel.__init__(self, parent, client, options) loadUi(self, findResource('nicos_mlz/pgaa/gui/panels/pgai.ui')) w = self.widget.widget self.pointAdded.connect(w.pointAdded) self.pointTable.cellActivated.connect(w.positionActivated) self.pointTable.cellClicked.connect(w.positionActivated) self.pointTable.cellEntered.connect(w.positionActivated) self.pointTable.cellPressed.connect(w.positionActivated) self.pointTable.verticalHeader().sectionClicked.connect( lambda row: w.positionActivated(row, 0)) self.newPointButton.clicked.connect(self.newPoint) self.buttonBox.button(QDialogButtonBox.SaveAll).setText('Run') self.pointTable.itemChanged.connect(self.modifyPoint) self.pointModified.connect(w.pointModified) self.pointTable.setItemDelegate(PositionDelegate()) self.pointTable.pointRemove.connect(w.pointRemove) self.buttonBox.accepted.connect(self.runScript) self.pointTable.valueChanged.connect(self.cellValueModified) self.sampleShape.currentIndexChanged[str].connect(w.sampleShapeChanged) self.sampleShape.currentIndexChanged[str].connect( self.sampleShapeChanged) self.dimValue1.valueChanged.connect(w.dim1Changed) self.dimValue2.valueChanged.connect(w.dim2Changed) self.dimValue3.valueChanged.connect(w.dim3Changed) self.dimValue1.valueChanged.connect(self.sampleSizeChanged) self.dimValue2.valueChanged.connect(self.sampleSizeChanged) self.dimValue3.valueChanged.connect(self.sampleSizeChanged) self.volumeSize.valueChanged.connect(self.sampleSizeChanged) self.volumeSize.valueChanged.connect(w.cubeSizeChanged) self.volumeDistance.valueChanged.connect(self.sampleSizeChanged) self.pointTable.horizontalHeader().sectionClicked.connect( self.sortOrderChanged) w.dim1Changed(self.dimValue1.value()) w.dim2Changed(self.dimValue2.value()) w.dim3Changed(self.dimValue3.value()) self.fileName.hide() self.fileNameSelect.hide() self.fileName.editingFinished.connect(self.loadPointsFromFile) self.fileNameSelect.clicked.connect(self.selectFileName) self.sampleShapeChanged(self.sampleShape.currentText())