Esempio n. 1
0
 def on_proposalBtn_clicked(self):
     dlg = PanelDialog(self,
                       self.client,
                       AmorNewExpPanel,
                       'Proposal info',
                       uifile='nicos_sinq/amor/gui/panels/newexp.ui')
     dlg.exec_()
Esempio n. 2
0
 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.')
Esempio n. 3
0
 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_()
Esempio n. 4
0
    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()
Esempio n. 5
0
 def on_detenvBtn_clicked(self):
     dlg = PanelDialog(self, self.client, DetEnvPanel,
                       'Detectors and environment')
     dlg.exec_()
Esempio n. 6
0
 def on_sampleBtn_clicked(self):
     dlg = PanelDialog(self, self.client, self._sample_panel,
                       'Sample information')
     dlg.exec_()
Esempio n. 7
0
 def on_setupBtn_clicked(self):
     dlg = PanelDialog(self, self.client, SetupsPanel, 'Setups')
     dlg.exec_()
Esempio n. 8
0
    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()