Changeset 459 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Jan 30, 2012 12:49:40 PM (10 years ago)
Author:
vondreele
Message:

fix bug in GenAtom? - didn't eliminate special position duplicates
refactor DisAglDialog? to have a reset & save results to general
begin torsion & distance/angle calcs in drawing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r458 r459  
    134134
    135135class DisAglDialog(wx.Dialog):
    136     def __init__(self,parent,data):
     136   
     137    def __default__(self,data,default):
     138        if data:
     139            self.data = data
     140        else:
     141            self.data = {}
     142            self.data['Name'] = default['Name']
     143            self.data['Factors'] = [0.85,0.85]
     144            self.data['AtomTypes'] = default['AtomTypes']
     145            self.data['BondRadii'] = default['BondRadii']
     146            self.data['AngleRadii'] = default['AngleRadii']
     147       
     148    def __init__(self,parent,data,default):
    137149        wx.Dialog.__init__(self,parent,-1,'Distance Angle Controls',
    138150            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
    139         self.data = data
    140         panel = wx.Panel(self)
     151        self.default = default
     152        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     153        self.__default__(data,self.default)
     154        self.Draw(self.data)
     155               
     156    def Draw(self,data):
     157        self.panel.Destroy()
     158        self.panel = wx.Panel(self)
    141159        mainSizer = wx.BoxSizer(wx.VERTICAL)
    142         mainSizer.Add(wx.StaticText(panel,-1,'Controls for phase '+data['Name']),
     160        mainSizer.Add(wx.StaticText(self.panel,-1,'Controls for phase '+data['Name']),
    143161            0,wx.ALIGN_CENTER_VERTICAL|wx.LEFT,10)
    144162        mainSizer.Add((10,10),1)
    145163       
    146164        radiiSizer = wx.FlexGridSizer(2,3,5,5)
    147         radiiSizer.Add(wx.StaticText(panel,-1,' Type'),0,wx.ALIGN_CENTER_VERTICAL)
    148         radiiSizer.Add(wx.StaticText(panel,-1,'Bond radii'),0,wx.ALIGN_CENTER_VERTICAL)
    149         radiiSizer.Add(wx.StaticText(panel,-1,'Angle radii'),0,wx.ALIGN_CENTER_VERTICAL)
     165        radiiSizer.Add(wx.StaticText(self.panel,-1,' Type'),0,wx.ALIGN_CENTER_VERTICAL)
     166        radiiSizer.Add(wx.StaticText(self.panel,-1,'Bond radii'),0,wx.ALIGN_CENTER_VERTICAL)
     167        radiiSizer.Add(wx.StaticText(self.panel,-1,'Angle radii'),0,wx.ALIGN_CENTER_VERTICAL)
    150168        self.objList = {}
    151169        for id,item in enumerate(self.data['AtomTypes']):
    152             radiiSizer.Add(wx.StaticText(panel,-1,' '+item),0,wx.ALIGN_CENTER_VERTICAL)
    153             bRadii = wx.TextCtrl(panel,-1,value='%.3f'%(data['BondRadii'][id]),style=wx.TE_PROCESS_ENTER)
     170            radiiSizer.Add(wx.StaticText(self.panel,-1,' '+item),0,wx.ALIGN_CENTER_VERTICAL)
     171            bRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['BondRadii'][id]),style=wx.TE_PROCESS_ENTER)
    154172            self.objList[bRadii.GetId()] = ['BondRadii',id]
    155173            bRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    156174            bRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
    157175            radiiSizer.Add(bRadii,0,wx.ALIGN_CENTER_VERTICAL)
    158             aRadii = wx.TextCtrl(panel,-1,value='%.3f'%(data['AngleRadii'][id]),style=wx.TE_PROCESS_ENTER)
     176            aRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['AngleRadii'][id]),style=wx.TE_PROCESS_ENTER)
    159177            self.objList[aRadii.GetId()] = ['AngleRadii',id]
    160178            aRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
     
    165183        Names = ['Bond','Angle']
    166184        for i,name in enumerate(Names):
    167             factorSizer.Add(wx.StaticText(panel,-1,name+' search factor'),0,wx.ALIGN_CENTER_VERTICAL)
    168             bondFact = wx.TextCtrl(panel,-1,value='%.3f'%(data['Factors'][i]),style=wx.TE_PROCESS_ENTER)
     185            factorSizer.Add(wx.StaticText(self.panel,-1,name+' search factor'),0,wx.ALIGN_CENTER_VERTICAL)
     186            bondFact = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['Factors'][i]),style=wx.TE_PROCESS_ENTER)
    169187            self.objList[bondFact.GetId()] = ['Factors',i]
    170188            bondFact.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
     
    173191        mainSizer.Add(factorSizer,0,wx.EXPAND)
    174192       
    175         OkBtn = wx.Button(panel,-1,"Ok")
     193        OkBtn = wx.Button(self.panel,-1,"Ok")
    176194        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     195        ResetBtn = wx.Button(self.panel,-1,'Reset')
     196        ResetBtn.Bind(wx.EVT_BUTTON, self.OnReset)
    177197        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
    178198        btnSizer.Add((20,20),1)
    179199        btnSizer.Add(OkBtn)
    180         btnSizer.Add((20,20),1)       
     200        btnSizer.Add(ResetBtn)
     201        btnSizer.Add((20,20),1)
    181202        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
    182         panel.SetSizer(mainSizer)
    183         panel.Fit()
     203        self.panel.SetSizer(mainSizer)
     204        self.panel.Fit()
    184205        self.Fit()
    185206   
     
    193214        Obj.SetValue("%.3f"%(self.data[item[0]][item[1]]))          #reset in case of error
    194215       
    195     def getData(self):
    196         return self.Data
     216    def GetData(self):
     217        return self.data
    197218       
    198219    def OnOk(self,event):
     
    201222        self.EndModal(wx.ID_OK)             
    202223        self.Destroy()
     224       
     225    def OnReset(self,event):
     226        data = {}
     227        self.__default__(data,self.default)
     228        self.Draw(self.data)
    203229       
    204230def UpdatePhaseData(self,Item,data,oldPage):
     
    10481074        xyz = []
    10491075        DisAglData = {}
     1076        DisAglCtls = {}
    10501077        if indx:
    10511078            generalData = data['General']
    10521079            DisAglData['OrigIndx'] = indx
    1053             DisAglData['Name'] = generalData['Name']
    1054             DisAglData['Factors'] = [0.85,0.85]
    1055             DisAglData['AtomTypes'] = generalData['AtomTypes']
    1056             DisAglData['BondRadii'] = generalData['BondRadii']
    1057             DisAglData['AngleRadii'] = generalData['AngleRadii']
    1058             DisAglDialog(self,DisAglData).ShowModal()
     1080            if 'DisAglCtls' in generalData:
     1081                DisAglCtls = generalData['DisAglCtls']
     1082#            else:
     1083#                DisAglCtls['Name'] = generalData['Name']
     1084#                DisAglCtls['Factors'] = [0.85,0.85]
     1085#                DisAglCtls['AtomTypes'] = generalData['AtomTypes']
     1086#                DisAglCtls['BondRadii'] = generalData['BondRadii']
     1087#                DisAglCtls['AngleRadii'] = generalData['AngleRadii']
     1088            dlg = DisAglDialog(self,DisAglCtls,generalData)
     1089            if dlg.ShowModal() == wx.ID_OK:
     1090                DisAglCtls = dlg.GetData()
     1091            dlg.Destroy()
     1092            generalData['DisAglCtls'] = DisAglCtls
    10591093            atomData = data['Atoms']
    10601094            colLabels = [Atoms.GetColLabelValue(c) for c in range(Atoms.GetNumberCols())]
     
    10731107                DisAglData['pId'] = data['pId']
    10741108                DisAglData['covData'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Covariance'))
    1075             G2str.DistAngle(DisAglData)
    1076                
     1109            G2str.DistAngle(DisAglCtls,DisAglData)
     1110           
    10771111#Structure drawing GUI stuff               
    10781112
     
    17981832            atomData[ind][col] = value
    17991833               
     1834    def OnDrawTorsion(event):
     1835        indx = drawAtoms.GetSelectedRows()
     1836        print 'Future torsion calc for atoms',indx
     1837       
     1838    def OnDrawDistAngle(event):
     1839        indx = drawAtoms.GetSelectedRows()
     1840        print 'Future bond dist/angles for atoms',indx
     1841               
    18001842    def UpdateDrawOptions():
    18011843        import copy
     
    30543096            self.dataFrame.Bind(wx.EVT_MENU, FillUnitCell, id=G2gd.wxID_DRAWFILLCELL)
    30553097            self.dataFrame.Bind(wx.EVT_MENU, DrawAtomsDelete, id=G2gd.wxID_DRAWDELETE)
     3098            self.dataFrame.Bind(wx.EVT_MENU, OnDrawDistAngle, id=G2gd.wxID_DRAWDISAGL)
     3099            self.dataFrame.Bind(wx.EVT_MENU, OnDrawTorsion, id=G2gd.wxID_DRAWTORSION)
    30563100            UpdateDrawAtoms()
    30573101            G2plt.PlotStructure(self,data)
Note: See TracChangeset for help on using the changeset viewer.