Exemplo n.º 1
0
 def on_command_execute(self, button: Gtk.Button):
     if button.get_label() == 'Execute':
         cmd = self.builder.get_object('command_entry').get_text()
         try:
             self.instrument.services['interpreter'].execute_command(cmd)
         except CommandError as ce:
             error_message(self.widget, 'Cannot execute command', str(ce))
         else:
             button.set_label('Stop')
             if (not self._commandhistory) or (self._commandhistory and self._commandhistory[-1] != cmd):
                 self._commandhistory.append(self.builder.get_object('command_entry').get_text())
     elif button.get_label() == 'Stop':
         self.instrument.services['interpreter'].kill()
     else:
         raise ValueError(button.get_label())
Exemplo n.º 2
0
 def on_execute(self, button: Gtk.Button):
     if button.get_label() == 'Execute':
         pinholesizes = [float(x[0]) for x in self.builder.get_object('pinhole_store') if x[0]]
         spacers = [float(x[0]) for x in self.builder.get_object('spacers_store') if x[0]]
         self.instrument.config['gui']['optimizegeometry']['pinholes'] = pinholesizes
         self.instrument.config['gui']['optimizegeometry']['spacers'] = spacers
         mindist_l1 = self.builder.get_object('l1baselength_adjustment').get_value()
         mindist_l2 = self.builder.get_object('l2baselength_adjustment').get_value()
         wavelength = self.builder.get_object('wavelength_adjustment').get_value()
         sealringwidth = self.builder.get_object('sealingringwidth_adjustment').get_value()
         sd = self.builder.get_object('distance_sd_adjustment').get_value()
         lbs = self.builder.get_object('distance_dbs_adjustment').get_value()
         ls = self.builder.get_object('distance_ph3s_adjustment').get_value()
         self.limits_samplesize = (
             self.builder.get_object('diameter_sample_min_adjustment').get_value(),
             self.builder.get_object('diameter_sample_max_adjustment').get_value()
         )
         self.limits_beamstopsize = (
             self.builder.get_object('diameter_beamstop_min_adjustment').get_value(),
             self.builder.get_object('diameter_beamstop_max_adjustment').get_value()
         )
         self.limit_l1min = self.builder.get_object('min_l1_adjustment').get_value()
         self.limit_l2min = self.builder.get_object('min_l2_adjustment').get_value()
         self.pinholegenerator = PinholeConfiguration.enumerate(
             spacers, pinholesizes, ls, lbs, sd, mindist_l1, mindist_l2, sealringwidth, wavelength)
         self.builder.get_object('results_store').clear()
         button.set_label('Stop')
         button.get_image().set_from_icon_name('gtk-stop', Gtk.IconSize.BUTTON)
         self.set_sensitive(False, 'Filtering possible pinhole configurations',
                            ['inputframe'])
         self.builder.get_object('work_progress').show()
         self.builder.get_object('work_progress').set_fraction(0)
         self.workdone = 0
         self.worksize = self._executor.submit(estimate_worksize_C, spacers, pinholesizes, sealringwidth)
         state = {'pinholesizes': pinholesizes,
                  'spacers': spacers,
                  'mindist_l1': mindist_l1,
                  'mindist_l2': mindist_l2,
                  'wavelength': wavelength,
                  'sealringwidth': sealringwidth,
                  'sd': sd,
                  'lbs': lbs,
                  'ls': ls,
                  'limits_samplesize': self.limits_samplesize,
                  'limits_beamstopsize': self.limits_beamstopsize,
                  'limit_l1min': self.limit_l1min,
                  'limit_l2min': self.limit_l2min
                  }
         self.instrument.config['gui']['optimizegeometry'].update(state)
         self._idle_handler = GLib.idle_add(self._idle_func)
     else:
         self.end_work()
Exemplo n.º 3
0
 def _on_start(self, widget: Gtk.Button, event: Gdk.EventButton) -> bool:
     if self.going:
         return True
     self.going = True
     self.spin.set_range(self.iterc, self.iterc)
     self.progr1.set_opacity(1)
     self.progr2.set_opacity(1)
     self.set_progress(0, True)
     self.set_progress(0, False)
     timings = TIMINGS[widget.get_label()]
     cache = {timing[0]: [] for timing in timings}
     iterc = self.iterc
     for i in range(1, iterc + 1):
         for name, val in zip(*self.measure(timings)):
             cache[name].append(val)
         self.set_bars(cache)
         self.set_progress(i / iterc, True)
     self.progr1.set_opacity(0)
     self.progr2.set_opacity(0)
     self.going = False
     self.spin.set_range(1, 2**16)
     return True
Exemplo n.º 4
0
 def get_string_from_button(button: Gtk.Button) -> str:
     """
     Returns the displayed string from a button
     :return: the button string
     """
     return button.get_label()