Changeset 3305


Ignore:
Timestamp:
Mar 2, 2018 5:38:00 PM (4 years ago)
Author:
toby
Message:

fixes for sum data & images

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r3300 r3305  
    30363036            self.filterlist = range(len(self.dataList)) # list of the choice numbers that have been filtered (list of int indices)
    30373037            self.dataType = dataType
    3038             self.filter = ''
     3038            self.filterVal = ''
    30393039            self.panel = None
    30403040            self.Draw()
     
    30443044                self.panel.DestroyChildren()  #safe: wx.Panel
    30453045                self.panel.Destroy()
    3046             size = (450,350)
     3046            size = (480,350)
    30473047            self.panel = wxscroll.ScrolledPanel(self, wx.ID_ANY,size=size,
    30483048                style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER)
    30493049            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))
    30503054            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)
    30543063            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))
    30593067            for id,item in enumerate(self.selectData):
    30603068                name = wx.TextCtrl(self.panel,-1,item,size=wx.Size(300,20))
    30613069                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)
    30663071                self.dataGridSizer.Add(scale,0,wx.LEFT,10)
    30673072                self.dataGridSizer.Add(name,0,wx.RIGHT,10)
    30683073            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))
    30743081                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)
    30823082            mainSizer.Add(self.dataGridSizer,0,wx.EXPAND)
    30833083            self.OkBtn = wx.Button(self.panel,-1,"Ok")
     
    30923092            btnSizer.Add(self.OkBtn)
    30933093            btnSizer.Add(cancelBtn)
     3094            btnSizer.Add((5,5))
    30943095           
    30953096            self.panel.SetSizer(mainSizer)
     
    31023103            self.Fit()
    31033104
    3104         def Filter(self,event):
     3105        def OnFilter(self,event):
    31053106            '''Read text from filter control and select entries that match.
    31063107            '''
    3107             txt = self.filterBox.GetValue()
     3108            if self.timer.IsRunning():
     3109                self.timer.Stop()
     3110            self.filterVal = txt = self.filterBox.GetValue()
    31083111            if txt:
    31093112                txt = txt.lower()
     
    31193122                self.selectData = copy.copy(self.data[:-1])
    31203123                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
    31353134        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)
    31523147           
    31533148        def OnTest(self,event):
     
    31993194            # create a duplicate (temporary) Plot notebook window that is a child of the
    32003195            # 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
    32043201                       
    32053202        def OnOk(self,event):
    3206             if self.dataType == 'PWDR': self.OnTest(event)
     3203            if self.dataType == 'PWDR':
     3204                if not self.OnTest(event): return
    32073205            parent = self.GetParent()
    32083206            parent.Raise()
     
    32423240                return
    32433241            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)
    32453243            try:
    32463244                if dlg.ShowModal() == wx.ID_OK:
     
    33093307                return
    33103308            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)
    33123310            try:
    33133311                if dlg.ShowModal() == wx.ID_OK:
Note: See TracChangeset for help on using the changeset viewer.