Exemplo n.º 1
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()