Package reflectometry :: Package model1d :: Package adaptor :: Module reflDatasetMeta

Source Code for Module reflectometry.model1d.adaptor.reflDatasetMeta

  1  import os 
  2  import sys 
  3  import wx 
  4  import traceback 
  5   
  6  from reflData import ReflMetaData 
  7  from park.parkAui.common.auiPanel import AuiPanel 
  8  from park.parkAui.common.parkEvent import wxEVT_PARK_DATASET, EVT_PARK_DATASET,\ 
  9                                            ParkDatasetEvent 
 10   
 11  # slide scaler 
 12  SCALER_MIN    = 0 
 13  SCALER_MAX    = 10000 
 14  REVERT_SCALER = 1.0/(SCALER_MAX-SCALER_MIN) 
 15   
 16  # slide scaler 
 17  SCALER_MIN_DEFAULT = 1.0e-7 
 18  SCALER_MAX_DEFAULT = 1000.0 
 19  SCALER_DEFAULT     = 1 
 20   
 21  REFL_META_NAMES  = ('wavelength', 'wavelengthDiv', 'background', 'angularDiv') 
 22  REFL_META_LABELS = { 
 23      'wavelength':'WaveLength:', 'wavelengthDiv':'Wavelength Divergence:', 
 24      'background':'Background:', 'angularDiv':'Angular Divergence:', 
 25      } 
 26  REFL_META_NAME_COL  = 2 
 27  REFL_META_NAME_ROW  = 4 
 28  REFL_META_RANGE_COL = 2 
 29   
 30   
 31  _wxSTYLE = wx.SHRINK | wx.GROW | wx.EXPAND | wx.ALL | wx.ALIGN_CENTER 
 32   
33 -class ReflDatasetMetaPanel(AuiPanel):
34
35 - def __init__(self, 36 parent, 37 id=-1, 38 pos=wx.DefaultPosition, 39 size=(450, 60), 40 style=wx.TAB_TRAVERSAL 41 ):
42 super(ReflDatasetMetaPanel, self).__init__(parent, id=id, pos=pos, 43 size=size, style=style) 44 45 mainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0) 46 miscSizer = wx.FlexGridSizer(cols=REFL_META_NAME_COL*2, hgap=0, 47 rows=REFL_META_NAME_ROW, vgap=0) 48 mainSizer.AddSizer(miscSizer, 2, border=2, flag=_wxSTYLE) 49 50 mainSizer.AddGrowableCol(0) 51 mainSizer.AddGrowableCol(1) 52 53 54 miscLabels = [wx.StaticText(parent=self,name='%stxt' %(name), style=0) 55 for name in REFL_META_NAMES ] 56 self.miscNumbers = [ wx.TextCtrl(parent=self, name=name) 57 for name in REFL_META_NAMES ] 58 59 for i in xrange(len(REFL_META_NAMES)): 60 label = REFL_META_NAMES[i] 61 if label in REFL_META_LABELS: 62 miscLabels[i].SetLabel(REFL_META_LABELS[label]) 63 else: 64 miscLabels[i].SetLabel('%s:' %(label.capitalize())) 65 66 self.miscNumbers[i].Bind(wx.EVT_KILL_FOCUS, self.OnUpdateFloatData) 67 68 miscSizer.Add(miscLabels[i], 0, border=2, flag=_wxSTYLE) 69 miscSizer.Add(self.miscNumbers[i], 1, border=2, flag=_wxSTYLE) 70 71 72 miscSizer.AddGrowableCol(1) 73 miscSizer.AddGrowableCol(3) 74 75 self.SetSizer(mainSizer) 76 self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) 77 self.SetMinSize(size) 78 self.SetMaxSize(size) 79 self.dataset = None 80 self.dataind = 0 81 self.inst = None 82 83 self.SetInstData2Viewer()
84 85
86 - def Enable(self):
87 #enable = not( (self.dataset is None) or (self.dataind < 0)) 88 enable = True 89 for ind in xrange(len(REFL_META_NAMES)): 90 self.miscNumbers[ind].Enable(enable)
91 92
93 - def SetDataset(self, dataset, ind):
94 #print "CALL SetDataset", dataset 95 self.dataset = dataset 96 self.dataind = ind 97 98 self.SetInstData2Viewer()
99 100
101 - def GetInstData(self):
102 try: 103 inst = self.dataset.getOneXmlData(self.dataind 104 ).getXmlInstrumentData() 105 except: 106 inst = None 107 108 return inst
109 110
111 - def SetInstData2Viewer(self):
112 """ Update the viewer.""" 113 114 self.Enable() 115 try: ## set the default value. 116 inst = self.dataset.getOneXmlData(self.dataind).getXmlInstrumentData() 117 except: 118 inst = ReflMetaData() 119 120 for ind in xrange(len(REFL_META_NAMES)): 121 label = REFL_META_NAMES[ind] 122 self.miscNumbers[ind].SetValue(str(getattr(inst, label)))
123
124 - def OnUpdateFloatData(self, event):
125 inst = self.GetInstData() 126 if inst is None: 127 return 128 129 fireEvent = False 130 131 for ind in xrange(len(REFL_META_NAMES)): 132 label = REFL_META_NAMES[ind] 133 try: 134 val = float(self.miscNumbers[ind].GetValue()) 135 if val != getattr(inst, label): 136 setattr(inst, label, val) 137 fireEvent = True 138 except: 139 val = str(getattr(inst, label)) 140 self.miscNumbers[ind].SetValue(val)
141 142 #if fireEvent: 143 # self._fireEvent() 144 145
146 - def _fireEvent(self):
147 """ fire an event. """ 148 evt = ParkDatasetEvent(wxEVT_PARK_DATASET , 149 self.GetId(), 150 self.dataset, 151 self.dataind 152 ) 153 self.GetEventHandler().ProcessEvent(evt)
154