def on_proposalBtn_clicked(self): dlg = PanelDialog(self, self.client, AmorNewExpPanel, 'Proposal info', uifile='nicos_sinq/amor/gui/panels/newexp.ui') dlg.exec_()
def on_finishButton_clicked(self): if self._finish_exp_panel: dlg = PanelDialog(self, self.client, self._finish_exp_panel, 'Finish experiment') dlg.exec_() if self.client.run('FinishExperiment()', noqueue=True) is None: self.showError('Could not finish experiment, a script ' 'is still running.')
def on_proposalBtn_clicked(self): dlg = PanelDialog(self, self.client, ExpPanel, 'Proposal info', new_exp_panel=self._new_exp_panel, finish_exp_panel=self._finish_exp_panel) dlg.exec_()
def applyChanges(self): done = [] # proposal settings try: prop, title, users, local, email, dataEmails, errorbehavior = \ self._getProposalInput() except ConfigurationError: return email = [_f for _f in email if _f] # remove empty lines # check conditions if self.client.eval('session.experiment.serviceexp', True) and \ self.client.eval('session.experiment.proptype', 'user') == 'user' and \ self.client.eval('session.experiment.proposal', '') != prop: self.showError('Can not directly switch experiments, please use ' 'FinishExperiment first!') return script_running = self.mainwindow.current_status != 'idle' # do some work if prop and prop != self._orig_proposal_info[0]: args = {'proposal': prop} if local: args['localcontact'] = local if title: args['title'] = title if users: args['user'] = users code = 'NewExperiment(%s)' % ', '.join('%s=%r' % i for i in args.items()) if self.client.run(code, noqueue=True) is None: self.showError('Could not start new experiment, a script is ' 'still running.') return done.append('New experiment started.') if self._new_exp_panel: dlg = PanelDialog(self, self.client, self._new_exp_panel, 'New experiment') dlg.exec_() else: if title != self._orig_proposal_info[1]: self.client.run('Exp.title = %r' % title) done.append('New experiment title set.') if users != self._orig_proposal_info[2]: self.client.run('Exp.users = %r' % users) done.append('New users set.') if local != self._orig_proposal_info[3]: self.client.run('Exp.localcontact = %r' % local) done.append('New local contact set.') sample = self.sampleName.text().encode('utf-8') if sample != self._orig_proposal_info[4]: self.client.run('NewSample(%r)' % sample) done.append('New sample name set.') if email != self._orig_email: self.client.run('SetMailReceivers(%s)' % ', '.join(map(repr, email))) done.append('New mail receivers set.') if dataEmails != self._orig_datamails: self.client.run('SetDataReceivers(%s)' % ', '.join(map(repr, dataEmails))) done.append('New data mail receivers set.') if errorbehavior != self._orig_proposal_info[5]: self.client.run('SetErrorAbort(%s)' % (errorbehavior == 'abort')) done.append('New error behavior set.') # tell user about everything we did if done: if script_running: done.append('') done.append('The changes have been queued since a script ' 'is currently running.') self.showInfo('\n'.join(done)) self._update_proposal_info()
def on_detenvBtn_clicked(self): dlg = PanelDialog(self, self.client, DetEnvPanel, 'Detectors and environment') dlg.exec_()
def on_sampleBtn_clicked(self): dlg = PanelDialog(self, self.client, self._sample_panel, 'Sample information') dlg.exec_()
def on_setupBtn_clicked(self): dlg = PanelDialog(self, self.client, SetupsPanel, 'Setups') dlg.exec_()
def applyChanges(self): done = [] # proposal settings try: prop, title, users, local, sample, notifEmails, _, \ errorbehavior = self._getProposalInput() except ConfigurationError: return notifEmails = [_f for _f in notifEmails if _f] # remove empty lines # check conditions if self.client.eval('session.experiment.serviceexp', True) and \ self.client.eval('session.experiment.proptype', 'user') == 'user' and \ self.client.eval('session.experiment.proposal', '') != prop: self.showError('Can not directly switch experiments, please use ' 'FinishExperiment first!') return # do some work if prop and prop != self._orig_propinfo.get('proposal'): args = {'proposal': prop} if local: args['localcontact'] = local if title: args['title'] = title if users: args['user'] = users code = 'NewExperiment(%s)' % ', '.join('%s=%r' % i for i in args.items()) if self.client.run(code, noqueue=False) is None: self.showError('Could not start new experiment, a script is ' 'still running.') return done.append('New experiment started.') if self._new_exp_panel: dlg = PanelDialog(self, self.client, self._new_exp_panel, 'New experiment') dlg.exec_() else: if title != self._orig_propinfo.get('title'): self.client.run('Exp.update(title=%r)' % title) done.append('New experiment title set.') if users != self._orig_propinfo.get('users'): self.client.run('Exp.update(users=%r)' % users) done.append('New users set.') if local != self._orig_propinfo.get('localcontacts'): self.client.run('Exp.update(localcontacts=%r)' % local) done.append('New local contact set.') if sample != self._orig_samplename: self.client.run('NewSample(%r)' % sample) done.append('New sample name set.') if notifEmails != self._orig_propinfo.get('notif_emails'): self.client.run('SetMailReceivers(%s)' % ', '.join(map(repr, notifEmails))) done.append('New mail receivers set.') if errorbehavior != self._orig_errorbehavior: self.client.run('SetErrorAbort(%s)' % (errorbehavior == 'abort')) done.append('New error behavior set.') # tell user about everything we did if done: self.showInfo('\n'.join(done)) self._update_proposal_info() self._defined_emails = self.notifEmails.toPlainText().strip() self._defined_data_emails = self.dataEmails.toPlainText().strip() self.applyWarningLabel.setVisible(False) self.is_exp_props_edited = [False] * self.num_experiment_props_opts self.exp_proposal_activated.emit()