Package reflectometry :: Package model1d :: Package profileview :: Module changeMetaDataDialog

Source Code for Module reflectometry.model1d.profileview.changeMetaDataDialog

  1  import wx 
  2  import wx.aui 
  3  import matplotlib 
  4   
  5  from reflutils         import showErrorMsg 
  6  from addLayerDialog    import AddLayerDialog 
  7  from removeLayerDialog import RemoveLayerDialog 
  8   
  9   
 10  META_NAMES = ( 
 11      'Wavelength:', 
 12      'WavelengthDiv:', 
 13      'AngularDivergence:', 
 14      'Background:' 
 15      ) 
 16   
 17  BORDER_SIZE   = 2 
 18  DEFAULT_STYLE = wx.SHRINK|wx.GROW|wx.EXPAND|wx.ALL|wx.ALIGN_CENTER 
 19   
 20   
21 -class ChangeMetaDataDialog(wx.Dialog):
22 23
24 - def _addMiscItems(self, sizer):
25 26 for x in xrange( len(META_NAMES) ): 27 wx.StaticText(self, 28 -1, 29 '%s' %(META_NAMES[x]), 30 (20, 20+x*30) 31 ) 32 33 34 self.textCtrls = [] 35 for x in xrange( len(META_NAMES) ): 36 textctl = wx.TextCtrl(parent = self, 37 pos = (125, 20+x*30), 38 size = wx.Size(80, 20), 39 ) 40 self.textCtrls.append( textctl )
41 42 43
44 - def __init__( 45 self, 46 parent, 47 ID=-1, 48 title = "Change Meta data" , 49 size = (300, 200),#wx.DefaultSize, 50 pos = wx.DefaultPosition, 51 style = wx.DEFAULT_DIALOG_STYLE, 52 useMetal = False, 53 pm = None 54 ):
55 self.parent = parent 56 57 pre = wx.PreDialog() 58 pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 59 pre.Create(parent, ID, title, pos, size, style) 60 61 self.PostCreate(pre) 62 63 # This extra style can be set after the UI object has been created. 64 if 'wxMac' in wx.PlatformInfo and useMetal: 65 self.SetExtraStyle(wx.DIALOG_EX_METAL) 66 67 self._mgr = wx.aui.AuiManager(self) 68 69 miscFlexGridSizer = wx.FlexGridSizer(cols=2, 70 hgap=0, 71 rows=4, 72 vgap=0 73 ) 74 self._addMiscItems(miscFlexGridSizer) 75 76 self.SetSizer( miscFlexGridSizer ) 77 78 79 self._mgr.Update() 80 81 82 _DefaultTxts = [ 4.75, 83 0.021, 84 0.007, 85 1.0e-10 86 ] 87 88 89 self.pm = pm 90 self.button = wx.Button(self, wx.ID_OK,'',(100, 150)) 91 self.cancelbutton = wx.Button(self, 92 wx.ID_CANCEL, 93 '', 94 (200, 150) 95 ) 96 97 self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnClosePage) 98 self.Bind(wx.EVT_CLOSE, self.OnClose) 99 self.setDefaultFromModel()
100 101
102 - def setDefaultFromModel(self):
103 angularDiv = self.pm.getAttribute('angularDiv') 104 background = self.pm.getAttribute('background') 105 wavelength = self.pm.getAttribute('wavelength') 106 wavelengthDiv = self.pm.getAttribute('wavelengthDiv') 107 108 self.textCtrls[0].SetValue( str(wavelength) ) 109 self.textCtrls[1].SetValue( str(wavelengthDiv) ) 110 self.textCtrls[2].SetValue( str(angularDiv) ) 111 self.textCtrls[3].SetValue( str(background) )
112 113
114 - def getOutPutInfo(self):
115 ret = [] 116 ret.append( self.getVaryDtheta() ) 117 ret.append( self.getWavelengthValue() ) 118 ret.append( self.getWavelengthDivValue() ) 119 ret.append( self.getBackgroundValue() ) 120 121 122 return ret
123 124 125
126 - def getVaryDtheta(self):
127 try: 128 ret = float(self.textCtrls[2].GetValue()) 129 except: 130 ret = 0.01 131 132 return ret
133 134
135 - def getWavelengthValue(self):
136 try: 137 ret = float(self.textCtrls[0].GetValue()) 138 except: 139 ret = 4.75 140 141 return ret
142 143
144 - def getWavelengthDivValue(self):
145 try: 146 ret = float(self.textCtrls[1].GetValue()) 147 except: 148 ret = 0.021 149 150 return ret
151 152
153 - def getAngleDivValue(self):
154 try: 155 ret = float(self.textCtrls[2].GetValue()) 156 except: 157 ret = 0.0007 158 159 return ret
160 161
162 - def getBackgroundValue(self):
163 try: 164 ret = float(self.textCtrls3[0].GetValue()) 165 except: 166 ret = 1.0e-10 167 168 return ret
169 170
171 - def GetOwnerManager(self):
172 return self._mgr
173 174
175 - def OnClose(self, event):
176 self._mgr.UnInit() 177 event.Skip()
178 179
180 - def OnClosePage(self, event):
181 event.Veto()
182 183 184 185 #=================================================================
186 -class MyApp(wx.App):
187 - def OnInit(self):
188 wx.InitAllImageHandlers() 189 self.main = ChangeMetaDataDialog(None) 190 self.main.Show() 191 self.SetTopWindow(self.main) 192 return True
193 194 if __name__ == '__main__': 195 application = MyApp(0) 196 application.MainLoop() 197