Changeset 2113


Ignore:
Timestamp:
Jan 6, 2016 10:14:21 AM (6 years ago)
Author:
vondreele
Message:

better cleanup when main window is closed
add FlagSetDialog? class & use it for wave parameters

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r2109 r2113  
    31123112    def ExitMain(self, event):
    31133113        '''Called if the main window is closed'''
     3114        if self.G2plotNB:
     3115            self.G2plotNB.Destroy()
     3116        if self.dataFrame:
     3117            self.dataFrame.Clear()
     3118            self.dataFrame.Destroy()
    31143119        if self.undofile:
    31153120            os.remove(self.undofile)
  • trunk/GSASIIctrls.py

    r2112 r2113  
    17311731    def onDoubleClick(self,event):
    17321732        self.EndModal(wx.ID_OK)
    1733 
     1733       
    17341734################################################################################
     1735class FlagSetDialog(wx.Dialog):
     1736    ''' Creates popup with table of variables to be checked for e.g. refinement flags
     1737    '''
     1738    def __init__(self,parent,title,colnames,rownames,flags):
     1739        wx.Dialog.__init__(self,parent,-1,title,
     1740            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     1741        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     1742        self.colnames = colnames
     1743        self.rownames = rownames
     1744        self.flags = flags
     1745        self.newflags = copy.copy(flags)
     1746        self.Draw()
     1747       
     1748    def Draw(self):
     1749        Indx = {}
     1750       
     1751        def OnSelection(event):
     1752            Obj = event.GetEventObject()
     1753            [name,ia] = Indx[Obj.GetId()]
     1754            self.newflags[name][ia] = Obj.GetValue()
     1755           
     1756        self.panel.DestroyChildren()
     1757        self.panel.Destroy()
     1758        self.panel = wx.Panel(self)
     1759        mainSizer = wx.BoxSizer(wx.VERTICAL)
     1760        flagSizer = wx.FlexGridSizer(0,len(self.colnames),5,5)
     1761        for item in self.colnames:
     1762            flagSizer.Add(wx.StaticText(self.panel,label=item),0,WACV)
     1763        for ia,atm in enumerate(self.rownames):
     1764            flagSizer.Add(wx.StaticText(self.panel,label=atm),0,WACV)
     1765            for name in self.colnames[1:]:
     1766                if self.flags[name][ia]:
     1767                    self.newflags[name][ia] = False     #default is off
     1768                    flg = wx.CheckBox(self.panel,-1,label='')
     1769                    flg.Bind(wx.EVT_CHECKBOX,OnSelection)
     1770                    Indx[flg.GetId()] = [name,ia]
     1771                    flagSizer.Add(flg,0,WACV)
     1772                else:
     1773                    flagSizer.Add(wx.StaticText(self.panel,label='na'),0,WACV)
     1774           
     1775        mainSizer.Add(flagSizer,0)
     1776        OkBtn = wx.Button(self.panel,-1,"Ok")
     1777        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     1778        CancelBtn = wx.Button(self.panel,-1,'Cancel')
     1779        CancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     1780        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     1781        btnSizer.Add((20,20),1)
     1782        btnSizer.Add(OkBtn)
     1783        btnSizer.Add(CancelBtn)
     1784        btnSizer.Add((20,20),1)
     1785        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     1786        self.panel.SetSizer(mainSizer)
     1787        self.panel.Fit()
     1788        self.Fit()
     1789       
     1790    def GetSelection(self):
     1791        return self.newflags
     1792
     1793    def OnOk(self,event):
     1794        parent = self.GetParent()
     1795        parent.Raise()
     1796        self.EndModal(wx.ID_OK)             
     1797       
     1798    def OnCancel(self,event):
     1799        parent = self.GetParent()
     1800        parent.Raise()
     1801        self.EndModal(wx.ID_CANCEL)
     1802
     1803###################################################################,#############
    17351804def G2MessageBox(parent,msg,title='Error'):
    17361805    '''Simple code to display a error or warning message
     
    24402509    # save the path of the first file and reset the TutorialImportDir variable
    24412510    pth = os.path.split(os.path.abspath(filelist[0]))[0]
    2442     if GSASIIpath.GetConfigValue('Save_paths'): G2G.SaveImportDirectory(pth)
     2511    if GSASIIpath.GetConfigValue('Save_paths'): SaveImportDirectory(pth)
    24432512    G2frame.LastImportDir = pth
    24442513    G2frame.TutorialImportDir = None
  • trunk/GSASIIphsGUI.py

    r2111 r2113  
    25392539                atomSizer.Add(WaveSizer(iatm,atm[-1]['SS1']['waveType'],atm[-1]['SS1'][Stype],Stype,typeNames[Stype],Labels[Stype]))                       
    25402540            return atomSizer
    2541                
    25422541
    25432542        atms = wx.ComboBox(waveData,value=G2frame.atmSel,choices=atNames,
     
    25482547        G2frame.bottomSizer = ShowAtomInfo()
    25492548        mainSizer.Add(G2frame.bottomSizer)
    2550         #wxID_WAVEVARY
    25512549        SetPhaseWindow(G2frame.dataFrame,G2frame.waveData,mainSizer,Scroll)
    25522550   
    25532551    def OnWaveVary(event):
    2554         print 'set vary flags for all waves - TBD'
     2552        generalData = data['General']
     2553        cx,ct,cs,cia = generalData['AtomPtrs']
     2554        atomData = data['Atoms']
     2555        atNames = []
     2556        names = ['Sfrac','Spos','Sadp','Smag']
     2557        flags = dict(zip(names,[[],[],[],[]]))
     2558        for atom in atomData:
     2559            atNames.append(atom[ct-1])
     2560            waves = atom[-1]['SS1']
     2561            for name in names:
     2562                if waves[name]:
     2563                    flags[name].append(True)
     2564                else:
     2565                    flags[name].append(False)
     2566        dlg = G2G.FlagSetDialog(G2frame,'Wave refinement flags',['Atom',]+names,atNames,flags)
     2567        try:
     2568            if dlg.ShowModal() == wx.ID_OK:
     2569                flags = dlg.GetSelection()
     2570                for ia,atom in enumerate(atomData):
     2571                    for name in names:
     2572                        for wave in atom[-1]['SS1'][name]:
     2573                            wave[1] = flags[name][ia]
     2574        finally:
     2575            dlg.Destroy()
     2576        UpdateWavesData()
    25552577
    25562578################################################################################
Note: See TracChangeset for help on using the changeset viewer.