Changeset 447 for trunk/GSASIIpwdGUI.py


Ignore:
Timestamp:
Dec 20, 2011 11:46:45 AM (11 years ago)
Author:
vondreele
Message:

Add another variation on background - individual peaks (not finished)
fix image calibration problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwdGUI.py

    r443 r447  
    257257       
    258258def UpdateBackground(self,data):
    259     if len(data) < 2:       #add Debye diffuse scattering here
    260         data.append({'nDebye':0,'debyeTerms':[]})
     259    if len(data) < 2:       #add Debye diffuse & peaks scattering here
     260        data.append({'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]})
     261    if 'nPeaks' not in data[1]:
     262        data[1].update({'nPeaks':0,'peaksList':[]})
    261263    ValObj = {}
    262264           
     
    374376                        elif key == 78:  #'N'
    375377                            for row in range(debyeGrid.GetNumberRows()): data[1]['debyeTerms'][row][col]=False
     378
    376379       
    377380        debSizer = wx.BoxSizer(wx.VERTICAL)
     
    399402            debyeGrid.AutoSizeColumns(False)
    400403            debSizer.Add(debyeGrid)       
    401         return debSizer     
     404        return debSizer
     405     
     406    def PeaksSizer():
     407
     408        def OnPeaks(event):
     409            data[1]['nPeaks'] = int(peaks.GetValue())
     410            M = len(data[1]['peaksList'])
     411            N = data[1]['nPeaks']
     412            if N > M:       #add terms
     413                for i in range(M,N):
     414                    data[1]['peaksList'].append([1.0,False,1.0,False,0.10,False,0.10,False])
     415            elif N < M:     #delete terms
     416                for i in range(N,M):
     417                    del(data[1]['peaksList'][-1])
     418            UpdateBackground(self,data)
     419
     420        def KeyEditPeakGrid(event):
     421            colList = peaksGrid.GetSelectedCols()
     422            if event.GetKeyCode() == wx.WXK_RETURN:
     423                event.Skip(True)
     424            elif event.GetKeyCode() == wx.WXK_CONTROL:
     425                event.Skip(True)
     426            elif event.GetKeyCode() == wx.WXK_SHIFT:
     427                event.Skip(True)
     428            elif colList:
     429                peaksGrid.ClearSelection()
     430                key = event.GetKeyCode()
     431                for col in colList:
     432                    if peaksTable.GetTypeName(0,col) == wg.GRID_VALUE_BOOL:
     433                        if key == 89: #'Y'
     434                            for row in range(peaksGrid.GetNumberRows()): data[1]['peaksList'][row][col]=True
     435                        elif key == 78:  #'N'
     436                            for row in range(peaksGrid.GetNumberRows()): data[1]['peaksList'][row][col]=False
     437
     438        peaksSizer = wx.BoxSizer(wx.VERTICAL)
     439        topSizer = wx.BoxSizer(wx.HORIZONTAL)
     440        topSizer.Add(wx.StaticText(self.dataDisplay,-1,' Peaks in background: '),0,wx.ALIGN_CENTER_VERTICAL)
     441        topSizer.Add(wx.StaticText(self.dataDisplay,-1,' No. peaks: '),0,wx.ALIGN_CENTER_VERTICAL)
     442        peaks = wx.ComboBox(self.dataDisplay,-1,value=str(data[1]['nPeaks']),choices=[str(i) for i in range(12)],
     443            style=wx.CB_READONLY|wx.CB_DROPDOWN)
     444        peaks.Bind(wx.EVT_COMBOBOX,OnPeaks)
     445        topSizer.Add(peaks,0,wx.ALIGN_CENTER_VERTICAL)
     446        topSizer.Add((5,0),0)
     447        peaksSizer.Add(topSizer)
     448        if data[1]['nPeaks']:
     449            peaksSizer.Add(wx.StaticText(self.dataDisplay,-1,' Peak list:'),0,wx.ALIGN_CENTER_VERTICAL)       
     450            rowLabels = []
     451            for i in range(len(data[1]['peaksList'])): rowLabels.append(str(i))
     452            colLabels = ['pos','refine','int','refine','sig','refine','gam','refine']
     453            Types = [wg.GRID_VALUE_FLOAT+':10,2',wg.GRID_VALUE_BOOL,
     454            wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_BOOL,
     455            wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_BOOL,
     456            wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_BOOL]
     457            peaksTable = G2gd.Table(data[1]['peaksList'],rowLabels=rowLabels,colLabels=colLabels,types=Types)
     458            peaksGrid = G2gd.GSGrid(parent=self.dataDisplay)
     459            peaksGrid.SetTable(peaksTable, True)
     460            peaksGrid.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
     461            peaksGrid.AutoSizeColumns(False)
     462            peaksSizer.Add(peaksGrid)       
     463        return peaksSizer
    402464               
    403465    if self.dataDisplay:
     
    415477    mainSizer.Add((0,5),0)
    416478    mainSizer.Add(DebyeSizer())
     479    mainSizer.Add((0,5),0)
     480    mainSizer.Add(PeaksSizer())
    417481    mainSizer.Layout()   
    418482    self.dataDisplay.SetSizer(mainSizer)
Note: See TracChangeset for help on using the changeset viewer.