Changeset 3305
- Timestamp:
- Mar 2, 2018 5:38:00 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIdataGUI.py
r3300 r3305 3036 3036 self.filterlist = range(len(self.dataList)) # list of the choice numbers that have been filtered (list of int indices) 3037 3037 self.dataType = dataType 3038 self.filter = ''3038 self.filterVal = '' 3039 3039 self.panel = None 3040 3040 self.Draw() … … 3044 3044 self.panel.DestroyChildren() #safe: wx.Panel 3045 3045 self.panel.Destroy() 3046 size = (4 50,350)3046 size = (480,350) 3047 3047 self.panel = wxscroll.ScrolledPanel(self, wx.ID_ANY,size=size, 3048 3048 style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) 3049 3049 mainSizer = wx.BoxSizer(wx.VERTICAL) 3050 mainSizer.Add(wx.StaticText(self.panel,label=self.text),0,WACV) 3051 mainSizer.Add((10,10)) 3052 self.dataGridSizer = wx.FlexGridSizer(cols=2,hgap=2,vgap=2) 3053 self.dataGridSizer.Add((-1,-1)) 3050 3054 topSizer = wx.BoxSizer(wx.HORIZONTAL) 3051 topSizer.Add(wx.StaticText(self.panel,label=self.text+' Filter: '),0,WACV) 3052 self.filterBox = wx.TextCtrl(self.panel,value=self.filter,style=wx.TE_PROCESS_ENTER) 3053 self.filterBox.Bind(wx.EVT_TEXT_ENTER,self.Filter) 3055 topSizer.Add((-1,-1),1,wx.EXPAND,1) 3056 topSizer.Add(wx.StaticText(self.panel,label='Filter: '),0,WACV) 3057 self.timer = wx.Timer() 3058 self.timer.Bind(wx.EVT_TIMER,self.OnFilter) 3059 self.filterBox = wx.TextCtrl(self.panel, wx.ID_ANY, self.filterVal, 3060 size=(80,-1),style=wx.TE_PROCESS_ENTER) 3061 self.filterBox.Bind(wx.EVT_TEXT,self.onChar) 3062 self.filterBox.Bind(wx.EVT_TEXT_ENTER,self.OnFilter) 3054 3063 topSizer.Add(self.filterBox,0,WACV) 3055 mainSizer.Add((10,10),1) 3056 mainSizer.Add(topSizer,0,wx.ALIGN_CENTER_VERTICAL|wx.LEFT,10) 3057 mainSizer.Add((10,10),1) 3058 self.dataGridSizer = wx.FlexGridSizer(cols=2,hgap=2,vgap=2) 3064 self.dataGridSizer.Add(topSizer,1,wx.RIGHT|wx.BOTTOM|wx.EXPAND,1) 3065 self.dataGridSizer.Add((-1,10)) 3066 self.dataGridSizer.Add((-1,10)) 3059 3067 for id,item in enumerate(self.selectData): 3060 3068 name = wx.TextCtrl(self.panel,-1,item,size=wx.Size(300,20)) 3061 3069 name.SetEditable(False) 3062 # azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff) 3063 scale = wx.TextCtrl(self.panel,id,'%.3f'%(self.selectVals[id]),style=wx.TE_PROCESS_ENTER) 3064 scale.Bind(wx.EVT_TEXT_ENTER,self.OnScaleChange) 3065 scale.Bind(wx.EVT_KILL_FOCUS,self.OnScaleChange) 3070 scale = G2G.ValidatedTxtCtrl(self.panel,self.selectVals,id,nDig=(10,3),typeHint=float) 3066 3071 self.dataGridSizer.Add(scale,0,wx.LEFT,10) 3067 3072 self.dataGridSizer.Add(name,0,wx.RIGHT,10) 3068 3073 if self.dataType: 3069 self.dataGridSizer.Add(wx.StaticText(self.panel,-1,'Sum result name: '+self.dataType),0, \ 3070 wx.LEFT|wx.TOP|wx.ALIGN_CENTER_VERTICAL,10) 3071 self.name = wx.TextCtrl(self.panel,-1,self.data[-1],size=wx.Size(300,20),style=wx.TE_PROCESS_ENTER) 3072 self.name.Bind(wx.EVT_TEXT_ENTER,self.OnNameChange) 3073 self.name.Bind(wx.EVT_KILL_FOCUS,self.OnNameChange) 3074 ScaleAll = wx.Button(self.panel,wx.ID_ANY,'Set all above') 3075 ScaleAll.Bind(wx.EVT_BUTTON, self.OnAllScale) 3076 self.dataGridSizer.Add(ScaleAll,0,wx.LEFT,10) 3077 self.dataGridSizer.Add((-1,-1),0,wx.RIGHT,10) 3078 self.dataGridSizer.Add(wx.StaticText(self.panel,-1,'Sum result name: '+self.dataType),1, 3079 wx.LEFT|wx.ALIGN_CENTER_VERTICAL,1) 3080 self.name = G2G.ValidatedTxtCtrl(self.panel,self.data,-1,size=wx.Size(300,20)) 3074 3081 self.dataGridSizer.Add(self.name,0,wx.RIGHT|wx.TOP,10) 3075 self.dataGridSizer.Add(wx.StaticText(self.panel,label='All scales value: '),0, \3076 wx.LEFT|wx.TOP|wx.ALIGN_CENTER_VERTICAL,10)3077 # azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)3078 allScale = wx.TextCtrl(self.panel,value='',style=wx.TE_PROCESS_ENTER)3079 allScale.Bind(wx.EVT_TEXT_ENTER,self.OnAllScale)3080 allScale.Bind(wx.EVT_KILL_FOCUS,self.OnAllScale)3081 self.dataGridSizer.Add(allScale,0,WACV)3082 3082 mainSizer.Add(self.dataGridSizer,0,wx.EXPAND) 3083 3083 self.OkBtn = wx.Button(self.panel,-1,"Ok") … … 3092 3092 btnSizer.Add(self.OkBtn) 3093 3093 btnSizer.Add(cancelBtn) 3094 btnSizer.Add((5,5)) 3094 3095 3095 3096 self.panel.SetSizer(mainSizer) … … 3102 3103 self.Fit() 3103 3104 3104 def Filter(self,event):3105 def OnFilter(self,event): 3105 3106 '''Read text from filter control and select entries that match. 3106 3107 ''' 3107 txt = self.filterBox.GetValue() 3108 if self.timer.IsRunning(): 3109 self.timer.Stop() 3110 self.filterVal = txt = self.filterBox.GetValue() 3108 3111 if txt: 3109 3112 txt = txt.lower() … … 3119 3122 self.selectData = copy.copy(self.data[:-1]) 3120 3123 self.selectVals = len(self.data)*[0.0,] 3121 self.Draw() 3122 3123 def OnScaleChange(self,event): 3124 event.Skip() 3125 id = event.GetId() 3126 value = self.FindWindowById(id).GetValue() 3127 try: 3128 self.selectVals[id] = float(value) 3129 self.FindWindowById(id).SetValue('%.3f'%(self.selectVals[id])) 3130 except ValueError: 3131 if value and '-' not in value[0]: 3132 print ('bad input - numbers only') 3133 self.FindWindowById(id).SetValue('0.000') 3134 3124 wx.CallAfter(self.Draw) 3125 3126 def onChar(self,event): 3127 'Respond to keyboard events in the Filter box' 3128 self.filterVal = self.filterBox.GetValue() 3129 if self.timer.IsRunning(): 3130 self.timer.Stop() 3131 self.timer.Start(1000,oneShot=True) 3132 if event: event.Skip() 3133 3135 3134 def OnAllScale(self,event): 3136 event.Skip() 3137 id = event.GetId() 3138 try: 3139 scale = float(self.FindWindowById(id).GetValue()) 3140 self.FindWindowById(id).SetValue('%.3f'%(scale)) 3141 entries = self.dataGridSizer.GetChildren() 3142 for i,item in enumerate(self.selectVals): 3143 self.selectVals[i] = scale 3144 entries[2*i].GetWindow().SetValue('%.3f'%(self.selectVals[i])) 3145 except ValueError: 3146 print ('bad input - numbers only') 3147 self.FindWindowById(id).SetValue('') 3148 3149 def OnNameChange(self,event): 3150 event.Skip() 3151 self.data[-1] = self.name.GetValue() 3135 dlg = G2G.SingleFloatDialog(self,'New scale', 3136 'Enter new value for all scale factors',1.) 3137 dlg.CenterOnParent() 3138 if dlg.ShowModal() == wx.ID_OK: 3139 val = dlg.GetValue() 3140 dlg.Destroy() 3141 else: 3142 dlg.Destroy() 3143 return 3144 for id,item in enumerate(self.selectData): 3145 self.selectVals[id] = val 3146 wx.CallAfter(self.Draw) 3152 3147 3153 3148 def OnTest(self,event): … … 3199 3194 # create a duplicate (temporary) Plot notebook window that is a child of the 3200 3195 # modal SumDialog dialog (self). This nicely gets deleted when the dialog is destroyed, 3201 # but the plot window is not fully functional, at least on the Mac. 3202 G2plt.PlotXY(self,XY,lines=True,Title='Sum:'+self.data[-1],labelY='Intensity',) 3203 self.plotFrame.Show() 3196 # but the plot window is not fully functional, at least on the Mac. 3197 if len(XY[0][0]): 3198 G2plt.PlotXY(self,XY,lines=True,Title='Sum:'+self.data[-1],labelY='Intensity',) 3199 self.plotFrame.Show() 3200 return True 3204 3201 3205 3202 def OnOk(self,event): 3206 if self.dataType == 'PWDR': self.OnTest(event) 3203 if self.dataType == 'PWDR': 3204 if not self.OnTest(event): return 3207 3205 parent = self.GetParent() 3208 3206 parent.Raise() … … 3242 3240 return 3243 3241 TextList.append('default_sum_name') 3244 dlg = self.SumDialog(self,'Sum data','Enter scale for each pattern in summation','PWDR',TextList,DataList)3242 dlg = self.SumDialog(self,'Sum data','Enter scale for each pattern to be summed','PWDR',TextList,DataList) 3245 3243 try: 3246 3244 if dlg.ShowModal() == wx.ID_OK: … … 3309 3307 return 3310 3308 TextList.append('default_sum_name') 3311 dlg = self.SumDialog(self,'Sum data','Enter scale for each image in summation','IMG',TextList,DataList)3309 dlg = self.SumDialog(self,'Sum data','Enter scale for each image to be summed','IMG',TextList,DataList) 3312 3310 try: 3313 3311 if dlg.ShowModal() == wx.ID_OK:
Note: See TracChangeset
for help on using the changeset viewer.