source: sasview/src/sas/perspectives/calculator/source_editor.py @ 7945367

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 7945367 was 49ab5d7, checked in by Doucet, Mathieu <doucetm@…>, 10 years ago

Take care of white spaces (pylint)

  • Property mode set to 100644
File size: 24.4 KB
RevLine 
[b0ab6cb]1"""
2"""
[91f151a]3import wx
4import sys
5from copy import deepcopy
[79492222]6from sas.guiframe.utils import check_float
[91f151a]7
[b0ab6cb]8_BOX_WIDTH = 60
9if sys.platform.count("win32") > 0:
[91f151a]10    _STATICBOX_WIDTH = 450
11    PANEL_WIDTH = 500
12    PANEL_HEIGHT = 430
13    FONT_VARIANT = 0
14else:
15    _STATICBOX_WIDTH = 480
[ad6f597]16    PANEL_WIDTH = 550
[91f151a]17    PANEL_HEIGHT = 430
18    FONT_VARIANT = 1
[49ab5d7]19
[91f151a]20class SourceDialog(wx.Dialog):
21    def __init__(self, parent=None, manager=None, source=None, *args, **kwds):
22        kwds['title'] = "Source Editor"
[ad6f597]23        kwds['size'] = (PANEL_WIDTH, PANEL_HEIGHT)
[91f151a]24        wx.Dialog.__init__(self, parent=parent, *args, **kwds)
[49ab5d7]25
[91f151a]26        self.parent = parent
27        self.manager = manager
28        self._source = source
29        self._reset_source = deepcopy(source)
30        self._notes = ""
31        self._description = "Edit source"
32        self._do_layout()
33        self.set_values()
[49ab5d7]34
[91f151a]35    def _define_structure(self):
36        """
[49ab5d7]37            define initial sizer
[91f151a]38        """
39        self.main_sizer = wx.BoxSizer(wx.VERTICAL)
[b0ab6cb]40        self.box_source = wx.StaticBox(self, -1, str("source"))
[91f151a]41        self.boxsizer_source = wx.StaticBoxSizer(self.box_source,
42                                                    wx.VERTICAL)
43        self.name_sizer = wx.BoxSizer(wx.HORIZONTAL)
44        self.radiation_sizer = wx.BoxSizer(wx.HORIZONTAL)
45        self.beam_shape_sizer = wx.BoxSizer(wx.HORIZONTAL)
46        self.wavelength_sizer = wx.BoxSizer(wx.HORIZONTAL)
47        self.wavelength_min_sizer = wx.BoxSizer(wx.HORIZONTAL)
48        self.wavelength_max_sizer = wx.BoxSizer(wx.HORIZONTAL)
49        self.wavelength_spread_sizer = wx.BoxSizer(wx.HORIZONTAL)
50        self.beam_size_name_sizer = wx.BoxSizer(wx.HORIZONTAL)
51        self.beam_size_sizer = wx.BoxSizer(wx.HORIZONTAL)
52        self.button_sizer = wx.BoxSizer(wx.HORIZONTAL)
[49ab5d7]53
[91f151a]54    def _layout_name(self):
55        """
56            Do the layout for sample name related widgets
57        """
58        # Sample name [string]
[49ab5d7]59        sample_name_txt = wx.StaticText(self, -1, 'Sample Name : ')
[b0ab6cb]60        self.sample_name_tcl = wx.TextCtrl(self, -1,
[49ab5d7]61                                            size=(_BOX_WIDTH * 5, 20), style=0)
62        self.name_sizer.AddMany([(sample_name_txt, 0, wx.LEFT | wx.RIGHT, 10),
[91f151a]63                                       (self.sample_name_tcl, 0, wx.EXPAND)])
64    def _layout_radiation(self):
65        """
66            Do the  layout for  radiation related widgets
67        """
68        #Radiation type [string]
[49ab5d7]69        radiation_txt = wx.StaticText(self, -1, 'Radiation: ')
70        self.radiation_tcl = wx.TextCtrl(self, -1,
[b0ab6cb]71                                         size=(_BOX_WIDTH, 20), style=0)
[49ab5d7]72        self.radiation_sizer.AddMany([(radiation_txt, 0, wx.LEFT | wx.RIGHT, 10),
[91f151a]73                                     (self.radiation_tcl, 0, wx.LEFT, 20)])
[49ab5d7]74
[91f151a]75    def _layout_beam_shape(self):
76        """
77            Do the  layout for beam shape related widgets
78        """
79        #Beam shape [string]
[49ab5d7]80        beam_shape_txt = wx.StaticText(self, -1, 'Beam shape:')
[b0ab6cb]81        self.beam_shape_tcl = wx.TextCtrl(self, -1,
[49ab5d7]82                                           size=(_BOX_WIDTH, 20), style=0)
[b0ab6cb]83        self.beam_shape_sizer.AddMany([(beam_shape_txt, 0,
[49ab5d7]84                                         wx.LEFT | wx.RIGHT, 10),
[91f151a]85                                     (self.beam_shape_tcl, 0, wx.LEFT, 10)])
[49ab5d7]86
[91f151a]87    def _layout_wavelength(self):
88        """
89            Do the  layout for wavelength related widgets
90        """
91        #Wavelength [float] [Angstrom]
[49ab5d7]92        wavelength_txt = wx.StaticText(self, -1, 'wavelength:')
[b0ab6cb]93        self.wavelength_tcl = wx.TextCtrl(self, -1,
[49ab5d7]94                                           size=(_BOX_WIDTH, 20), style=0)
95        wavelength_unit_txt = wx.StaticText(self, -1, 'Unit: ')
[b0ab6cb]96        self.wavelength_unit_tcl = wx.TextCtrl(self, -1,
[49ab5d7]97                                                size=(_BOX_WIDTH, 20), style=0)
[b0ab6cb]98        self.wavelength_sizer.AddMany([(wavelength_txt,
[49ab5d7]99                                         0, wx.LEFT | wx.RIGHT, 10),
[91f151a]100                                     (self.wavelength_tcl, 0, wx.LEFT, 12),
[49ab5d7]101                            (wavelength_unit_txt, 0, wx.LEFT | wx.RIGHT, 10),
102                                     (self.wavelength_unit_tcl, 0, wx.EXPAND)])
103
[91f151a]104    def _layout_wavelength_min(self):
105        """
106            Do the  layout for wavelength min related widgets
107        """
108        #Minimum wavelength [float] [Angstrom]
[49ab5d7]109        wavelength_min_txt = wx.StaticText(self, -1, 'Wavelength min:')
[b0ab6cb]110        self.wavelength_min_tcl = wx.TextCtrl(self, -1,
[49ab5d7]111                                               size=(_BOX_WIDTH, 20), style=0)
112        wavelength_min_unit_txt = wx.StaticText(self, -1, 'Unit: ')
[b0ab6cb]113        self.wavelength_min_unit_tcl = wx.TextCtrl(self, -1,
[49ab5d7]114                                             size=(_BOX_WIDTH, 20), style=0)
115        self.wavelength_min_sizer.AddMany([(wavelength_min_txt,
116                                            0, wx.LEFT | wx.RIGHT, 10),
[91f151a]117                                     (self.wavelength_min_tcl, 0, wx.LEFT, 10),
[49ab5d7]118                            (wavelength_min_unit_txt, 0, wx.LEFT | wx.RIGHT, 10),
119                            (self.wavelength_min_unit_tcl, 0, wx.EXPAND)])
120
[91f151a]121    def _layout_wavelength_max(self):
122        """
123            Do the  layout for wavelength max related widgets
124        """
125        #Maximum wavelength [float] [Angstrom]
[49ab5d7]126        wavelength_max_txt = wx.StaticText(self, -1, 'Wavelength max:')
[b0ab6cb]127        self.wavelength_max_tcl = wx.TextCtrl(self, -1,
[49ab5d7]128                                             size=(_BOX_WIDTH, 20), style=0)
129        wavelength_max_unit_txt = wx.StaticText(self, -1, 'Unit: ')
[b0ab6cb]130        self.wavelength_max_unit_tcl = wx.TextCtrl(self, -1,
[49ab5d7]131                                             size=(_BOX_WIDTH, 20), style=0)
[b0ab6cb]132        self.wavelength_max_sizer.AddMany([(wavelength_max_txt, 0,
[49ab5d7]133                                             wx.LEFT | wx.RIGHT, 10),
[91f151a]134                                     (self.wavelength_max_tcl, 0, wx.LEFT, 7),
[49ab5d7]135                            (wavelength_max_unit_txt, 0, wx.LEFT | wx.RIGHT, 10),
136                            (self.wavelength_max_unit_tcl, 0, wx.EXPAND)])
137
[91f151a]138    def _layout_wavelength_spread(self):
139        """
140            Do the  layout for wavelength spread related widgets
141        """
142        ## Wavelength spread [float] [Angstrom]
143        wavelength_spread = None
144        wavelength_spread_unit = 'percent'
[49ab5d7]145        wavelength_spread_txt = wx.StaticText(self, -1, 'Wavelength spread:')
[b0ab6cb]146        self.wavelength_spread_tcl = wx.TextCtrl(self, -1,
[49ab5d7]147                                             size=(_BOX_WIDTH, 20), style=0)
148        wavelength_spread_unit_txt = wx.StaticText(self, -1, 'Unit: ')
[b0ab6cb]149        self.wavelength_spread_unit_tcl = wx.TextCtrl(self, -1,
[49ab5d7]150                                             size=(_BOX_WIDTH, 20), style=0)
[b0ab6cb]151        self.wavelength_spread_sizer.AddMany([(wavelength_spread_txt,
152                                                0, wx.LEFT, 10),
153                                (self.wavelength_spread_tcl, 0, wx.LEFT, 5),
[49ab5d7]154                        (wavelength_spread_unit_txt, 0, wx.LEFT | wx.RIGHT, 10),
155                        (self.wavelength_spread_unit_tcl, 0, wx.EXPAND)])
[91f151a]156    def _layout_beam_size_name(self):
157        """
158            Do the layout for beam size name related widgets
159        """
160        # Beam size name [string]
[49ab5d7]161        beam_size_name_txt = wx.StaticText(self, -1, 'Beam size name : ')
[b0ab6cb]162        self.beam_size_name_tcl = wx.TextCtrl(self, -1,
[49ab5d7]163                                               size=(_BOX_WIDTH * 5, 20), style=0)
[b0ab6cb]164        self.beam_size_name_sizer.AddMany([(beam_size_name_txt,
[49ab5d7]165                                             0, wx.LEFT | wx.RIGHT, 10),
[91f151a]166                                       (self.beam_size_name_tcl, 0, wx.EXPAND)])
[49ab5d7]167
[91f151a]168    def _layout_beam_size(self):
169        """
170            Do the  layout for beam size related widgets
171        """
172        ## Beam size [Vector] [mm]
173        beam_size = None
174        beam_size_unit = 'mm'
[49ab5d7]175
176        beam_size_txt = wx.StaticText(self, -1, 'Beam size:')
177        x_beam_size_txt = wx.StaticText(self, -1, 'x = ')
[b0ab6cb]178        self.x_beam_size_tcl = wx.TextCtrl(self, -1,
[49ab5d7]179                                            size=(_BOX_WIDTH, 20), style=0)
180        y_beam_size_txt = wx.StaticText(self, -1, 'y = ')
[b0ab6cb]181        self.y_beam_size_tcl = wx.TextCtrl(self, -1,
[49ab5d7]182                                            size=(_BOX_WIDTH, 20), style=0)
183        z_beam_size_txt = wx.StaticText(self, -1, 'z = ')
184        self.z_beam_size_tcl = wx.TextCtrl(self, -1,
185                                           size=(_BOX_WIDTH, 20), style=0)
186        beam_size_unit_txt = wx.StaticText(self, -1, 'Unit: ')
187        self.beam_size_unit_tcl = wx.TextCtrl(self, -1,
188                                              size=(_BOX_WIDTH, 20), style=0)
189        self.beam_size_sizer.AddMany([(beam_size_txt, 0, wx.LEFT | wx.RIGHT, 10),
[91f151a]190                                     (x_beam_size_txt, 0, wx.LEFT, 17),
191                                     (self.x_beam_size_tcl, 0, wx.RIGHT, 10),
192                                     (y_beam_size_txt, 0, wx.EXPAND),
193                                     (self.y_beam_size_tcl, 0, wx.RIGHT, 10),
194                                     (z_beam_size_txt, 0, wx.EXPAND),
195                                     (self.z_beam_size_tcl, 0, wx.RIGHT, 10),
196                                     (beam_size_unit_txt, 0, wx.EXPAND),
[b0ab6cb]197                                    (self.beam_size_unit_tcl, 0, wx.RIGHT, 10)])
[49ab5d7]198
199    def _layout_button(self):
[91f151a]200        """
201            Do the layout for the button widgets
[49ab5d7]202        """
203        self.bt_apply = wx.Button(self, -1, 'Apply')
[91f151a]204        self.bt_apply.Bind(wx.EVT_BUTTON, self.on_click_apply)
205        self.bt_apply.SetToolTipString("Apply current changes to the source.")
[49ab5d7]206        self.bt_cancel = wx.Button(self, -1, 'Cancel')
[91f151a]207        self.bt_cancel.SetToolTipString("Cancel current changes.")
208        self.bt_cancel.Bind(wx.EVT_BUTTON, self.on_click_cancel)
[49ab5d7]209        self.bt_close = wx.Button(self, wx.ID_CANCEL, 'Close')
[91f151a]210        self.bt_close.SetToolTipString("Close window.")
211        self.button_sizer.AddMany([(self.bt_apply, 0, wx.LEFT, 200),
212                                   (self.bt_cancel, 0, wx.LEFT, 10),
213                                   (self.bt_close, 0, wx.LEFT, 10)])
[49ab5d7]214
[91f151a]215    def _do_layout(self, data=None):
216        """
217             Draw the current panel
218        """
219        self._define_structure()
220        self._layout_name()
221        self._layout_radiation()
222        self._layout_beam_shape()
223        self._layout_wavelength()
224        self._layout_wavelength_min()
225        self._layout_wavelength_max()
226        self._layout_wavelength_spread()
227        self._layout_beam_size_name()
228        self._layout_beam_size()
229        self._layout_button()
[49ab5d7]230
[91f151a]231        self.boxsizer_source.AddMany([(self.name_sizer, 0,
[49ab5d7]232                                          wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]233                                   (self.radiation_sizer, 0,
[49ab5d7]234                                     wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]235                                   (self.beam_shape_sizer, 0,
[49ab5d7]236                                     wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]237                                   (self.wavelength_sizer, 0,
[49ab5d7]238                                    wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]239                                   (self.wavelength_min_sizer, 0,
[49ab5d7]240                                    wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]241                                   (self.wavelength_max_sizer, 0,
[49ab5d7]242                                    wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]243                                    (self.wavelength_spread_sizer, 0,
[49ab5d7]244                                    wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]245                                   (self.beam_size_name_sizer, 0,
[49ab5d7]246                                     wx.EXPAND | wx.TOP | wx.BOTTOM, 5),
[91f151a]247                                    (self.beam_size_sizer, 0,
[49ab5d7]248                                     wx.EXPAND | wx.TOP | wx.BOTTOM, 5)])
[91f151a]249        self.main_sizer.AddMany([(self.boxsizer_source, 0, wx.ALL, 10),
250                                  (self.button_sizer, 0,
[49ab5d7]251                                    wx.EXPAND | wx.TOP | wx.BOTTOM, 5)])
252
[91f151a]253        self.SetSizer(self.main_sizer)
254        self.SetAutoLayout(True)
[49ab5d7]255
[91f151a]256    def set_manager(self, manager):
[49ab5d7]257        """
[91f151a]258            Set manager of this window
259        """
260        self.manager = manager
[49ab5d7]261
[91f151a]262    def reset_source(self):
263        """
264            put back initial values of the source
265        """
266        self._source.name = self._reset_source.name
267        self._source.radiation = self._reset_source.radiation
268        self._source.beam_size_name = self._reset_source.beam_size_name
[49ab5d7]269
270        self._source.beam_size.x = self._reset_source.beam_size.x
271        self._source.beam_size.y = self._reset_source.beam_size.y
272        self._source.beam_size.z = self._reset_source.beam_size.z
[91f151a]273        self._source.beam_size_unit = self._reset_source.beam_size_unit
[49ab5d7]274
[91f151a]275        self._source.beam_shape = self._reset_source.beam_shape
276        self._source.wavelength = self._reset_source.wavelength
277        self._source.wavelength_unit = self._reset_source.wavelength_unit
278        ## Minimum wavelength [float] [Angstrom]
279        self._source.wavelength_min = self._reset_source.wavelength_min
280        self._source.wavelength_min_unit = self._reset_source.wavelength_min_unit
[49ab5d7]281
[91f151a]282        self._source.wavelength_max = self._reset_source.wavelength_max
283        self._source.wavelength_max_unit = self._reset_source.wavelength_max_unit
[49ab5d7]284
[91f151a]285        self._source.wavelength_spread = self._reset_source.wavelength_spread
286        self._source.wavelength_spread_unit = self._reset_source.wavelength_spread_unit
[49ab5d7]287
[91f151a]288    def set_values(self):
289        """
290            take the source values of the current data and display them
291            through the panel
292        """
293        source = self._source
294        #Name
295        self.sample_name_tcl.SetValue(str(source.name))
296        #Radiation
297        self.radiation_tcl.SetValue(str(source.radiation))
298        #Beam shape
299        self.beam_shape_tcl.SetValue(str(source.beam_shape))
300        #Wavelength
301        self.wavelength_tcl.SetValue(str(source.wavelength))
302        self.wavelength_unit_tcl.SetValue(str(source.wavelength_unit))
303        #Wavelength min
304        self.wavelength_min_tcl.SetValue(str(source.wavelength_min))
305        self.wavelength_min_unit_tcl.SetValue(str(source.wavelength_min_unit))
306        #Wavelength max
307        self.wavelength_max_tcl.SetValue(str(source.wavelength_max))
308        self.wavelength_max_unit_tcl.SetValue(str(source.wavelength_max_unit))
309        #Wavelength spread
310        self.wavelength_spread_tcl.SetValue(str(source.wavelength_spread))
311        self.wavelength_spread_unit_tcl.SetValue(str(source.wavelength_spread_unit))
312        #Beam size
313        self.beam_size_name_tcl.SetValue(str(source.beam_size_name))
314        x, y, z = source.beam_size.x, source.beam_size.y , source.beam_size.z
[49ab5d7]315        self.x_beam_size_tcl.SetValue(str(x))
316        self.y_beam_size_tcl.SetValue(str(y))
317        self.z_beam_size_tcl.SetValue(str(z))
[91f151a]318        self.beam_size_unit_tcl.SetValue(str(source.beam_size_unit))
[49ab5d7]319
[91f151a]320    def get_source(self):
321        """
322            return the current source
323        """
324        return self._source
[49ab5d7]325
[91f151a]326    def get_notes(self):
327        """
328            return notes
329        """
330        return self._notes
[49ab5d7]331
[91f151a]332    def on_change_name(self):
333        """
334            Change name
335        """
336        #Change the name of the source
337        name = self.sample_name_tcl.GetValue().lstrip().rstrip()
338        if name == "" or name == str(None):
339            name = None
340        if self._source.name != name:
341            self._notes += "Change sample 's "
[49ab5d7]342            self._notes += "name from %s to %s \n" % (self._source.name, name)
[91f151a]343            self._source.name = name
[49ab5d7]344
[91f151a]345    def on_change_radiation(self):
346        """
[49ab5d7]347            Change radiation of the sample
[91f151a]348        """
349        #Change radiation
350        radiation = self.radiation_tcl.GetValue().lstrip().rstrip()
351        self._source.radiation = radiation
352        self._notes += " Change radiation from"
[49ab5d7]353        self._notes += " %s to %s \n" % (self._source.radiation, radiation)
354
[91f151a]355    def on_change_beam_shape(self):
356        """
357            Change beams shape
358        """
359       #Change beam shape
360        beam_shape = self.beam_shape_tcl.GetValue().lstrip().rstrip()
361        self._source.beam_shape = beam_shape
362        self._notes += " Change beam shape from"
[49ab5d7]363        self._notes += " %s to %s \n" % (self._source.beam_shape, beam_shape)
364
[91f151a]365    def on_change_wavelength(self):
366        """
367            Change the wavelength
368        """
369        #Change wavelength 
370        wavelength = self.wavelength_tcl.GetValue().lstrip().rstrip()
371        self._source.wavelength = wavelength
372        self._notes += " Change wavelength from"
[49ab5d7]373        self._notes += " %s to %s \n" % (self._source.wavelength, wavelength)
[91f151a]374        #change the wavelength  unit
375        unit = self.wavelength_unit_tcl.GetValue().lstrip().rstrip()
376        if self._source.wavelength_unit != unit:
377            self._notes += " Change wavelength's unit from "
[49ab5d7]378            self._notes += "%s to %s" % (self._source.wavelength_unit, unit)
379
[91f151a]380    def on_change_wavelength_min(self):
381        """
382            Change the wavelength minimum
383        """
384        #Change wavelength min
385        wavelength_min = self.wavelength_min_tcl.GetValue().lstrip().rstrip()
386        self._source.wavelength_min = wavelength_min
387        self._notes += " Change wavelength  min from"
[b0ab6cb]388        self._notes += " %s to %s \n" % (self._source.wavelength_min,
389                                          wavelength_min)
[91f151a]390        #change the wavelength min unit
391        unit = self.wavelength_min_unit_tcl.GetValue().lstrip().rstrip()
392        if self._source.wavelength_min_unit != unit:
393            self._notes += " Change wavelength min's unit from "
[b0ab6cb]394            self._notes += "%s to %s" % (self._source.wavelength_min_unit, unit)
[49ab5d7]395
[91f151a]396    def on_change_wavelength_max(self):
397        """
398            Change the wavelength maximum
399        """
400        #Change wavelength max
401        wavelength_max = self.wavelength_max_tcl.GetValue().lstrip().rstrip()
402        self._source.wavelength_max = wavelength_max
403        self._notes += " Change wavelength  max from"
[b0ab6cb]404        self._notes += " %s to %s \n" % (self._source.wavelength_max,
405                                        wavelength_max)
[91f151a]406        #change the wavelength max unit
407        unit = self.wavelength_max_unit_tcl.GetValue().lstrip().rstrip()
408        if self._source.wavelength_max_unit != unit:
409            self._notes += " Change wavelength max's unit from "
[49ab5d7]410            self._notes += "%s to %s" % (self._source.wavelength_max_unit, unit)
411
[91f151a]412    def on_change_wavelength_spread(self):
413        """
414            Change the wavelength spread
415        """
416        #Change wavelength spread
417        wavelength_spread = self.wavelength_spread_tcl.GetValue().lstrip().rstrip()
418        self._notes += " Change wavelength  spread from"
[49ab5d7]419        self._notes += " %s to %s \n" % (self._source.wavelength_spread,
[b0ab6cb]420                                         wavelength_spread)
[91f151a]421        self._source.wavelength_spread = wavelength_spread
422        #change the wavelength spread unit
423        unit = self.wavelength_spread_unit_tcl.GetValue().lstrip().rstrip()
424        if self._source.wavelength_spread_unit != unit:
425            self._notes += " Change wavelength spread's unit from "
[49ab5d7]426            self._notes += "%s to %s" % (self._source.wavelength_spread_unit,
[b0ab6cb]427                                         unit)
[91f151a]428            self._source.wavelength_spread_unit = unit
[49ab5d7]429
[91f151a]430    def on_change_beam_size_name(self):
431        """
432            Change beam size name
433        """
434        #Change beam size name
435        name = self.beam_size_name_tcl.GetValue().lstrip().rstrip()
436        if name == "" or name == str(None):
437            name = None
438        if self._source.beam_size_name != name:
439            self._notes += "Change beam size  's "
[b0ab6cb]440            self._notes += "name from %s to %s \n" % (self._source.beam_size_name,
441                                                       name)
[91f151a]442            self._source.name = name
[49ab5d7]443
[91f151a]444    def on_change_beam_size(self):
445        """
446            Change beam size
447        """
448        #Change x coordinate
449        x_beam_size = self.x_beam_size_tcl.GetValue().lstrip().rstrip()
450        if x_beam_size == "" or x_beam_size == str(None):
451            x_beam_size = None
452        else:
453            if check_float(self.x_beam_size_tcl):
454                if self._source.beam_size.x != float(x_beam_size) :
455                    self._notes += "Change x of beam size from "
[b0ab6cb]456                    self._notes += "%s to %s \n" % (self._source.beam_size.x,
457                                                     x_beam_size)
[49ab5d7]458                    self._source.beam_size.x = float(x_beam_size)
[91f151a]459            else:
460                self._notes += "Error: Expected a float for the beam size 's x "
461                self._notes += "won't changes x beam size from "
[b0ab6cb]462                self._notes += "%s to %s" % (self._source.beam_size.x,
463                                            x_beam_size)
[91f151a]464        #Change y coordinate
465        y_beam_size = self.y_beam_size_tcl.GetValue().lstrip().rstrip()
466        if y_beam_size == "" or y_beam_size == str(None):
467            y_beam_size = None
468            self._source.beam_size.y = y_beam_size
469        else:
470            if check_float(self.y_beam_size_tcl):
471                if self._source.beam_size.y != float(y_beam_size):
472                    self._notes += "Change y of beam size from "
[b0ab6cb]473                    self._notes += "%s to %s \n" % (self._source.beam_size.y,
474                                                     y_beam_size)
[49ab5d7]475                    self._source.beam_size.y = float(y_beam_size)
[91f151a]476            else:
477                self._notes += "Error: Expected a float for the beam size's y "
478                self._notes += "won't changes y beam size from "
[b0ab6cb]479                self._notes += "%s to %s" % (self._source.beam_size.y,
480                                              y_beam_size)
[91f151a]481        #Change z coordinate
482        z_beam_size = self.z_beam_size_tcl.GetValue().lstrip().rstrip()
483        if z_beam_size == "" or z_beam_size == str(None):
484            z_beam_size = None
485            self._source.beam_size.z = z_beam_size
486        else:
487            if check_float(self.z_beam_size_tcl):
488                if self._source.beam_size.z != float(z_beam_size):
489                    self._notes += "Change z of beam size from "
[b0ab6cb]490                    self._notes += "%s to %s \n" % (self._source.beam_size.z,
491                                                     z_beam_size)
[49ab5d7]492                    self._source.beam_size.z = float(z_beam_size)
[91f151a]493            else:
494                self._notes += "Error: Expected a float for the beam size 's z "
495                self._notes += "won't changes z beam size from "
[b0ab6cb]496                self._notes += "%s to %s" % (self._source.beam_size.z,
497                                              z_beam_size)
[91f151a]498        #change the beam center unit
499        unit = self.beam_size_unit_tcl.GetValue().lstrip().rstrip()
500        if self._source.beam_size_unit != unit:
501            self._notes += " Change beam size's unit from "
[49ab5d7]502            self._notes += "%s to %s" % (self._source.beam_size_unit, unit)
[91f151a]503            self._source.beam_size_unit = unit
[49ab5d7]504
[91f151a]505    def on_click_apply(self, event):
506        """
[b0ab6cb]507        Apply user values to the source
[91f151a]508        """
509        self.on_change_name()
510        self.on_change_radiation()
511        self.on_change_beam_shape()
512        self.on_change_wavelength()
513        self.on_change_wavelength_min()
514        self.on_change_wavelength_max()
515        self.on_change_wavelength_spread()
516        self.on_change_beam_size_name()
517        self.on_change_beam_size()
518        if self.manager is not None:
519            self.manager.set_source(self._source, self._notes)
[b0ab6cb]520        if event is not None:
521            event.Skip()
[49ab5d7]522
[91f151a]523    def on_click_cancel(self, event):
524        """
[b0ab6cb]525        reset the current source
[91f151a]526        """
527        self.reset_source()
528        self.set_values()
529        if self.manager is not None:
[b0ab6cb]530            self.manager.set_source(self._source)
531        if event is not None:
532            event.Skip()
[49ab5d7]533
534if __name__ == "__main__":
535    app = wx.App()
[79492222]536    from sas.dataloader.data_info import Source
[ad6f597]537    source = Source()
538    dlg = SourceDialog(source=source)
[91f151a]539    dlg.ShowModal()
540    app.MainLoop()
Note: See TracBrowser for help on using the repository browser.