Changeset 459
- Timestamp:
- Jan 30, 2012 12:49:40 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r457 r459 46 46 [ wxID_DRAWATOMSTYLE, wxID_DRAWATOMLABEL, wxID_DRAWATOMCOLOR, wxID_DRAWATOMRESETCOLOR, 47 47 wxID_DRAWVIEWPOINT, wxID_DRAWTRANSFORM, wxID_DRAWDELETE, wxID_DRAWFILLCELL, 48 wxID_DRAWADDEQUIV, wxID_DRAWFILLCOORD, 49 ] = [wx.NewId() for _init_coll_DrawAtom_Items in range(1 0)]48 wxID_DRAWADDEQUIV, wxID_DRAWFILLCOORD, wxID_DRAWDISAGL, wxID_DRAWTORSION, 49 ] = [wx.NewId() for _init_coll_DrawAtom_Items in range(12)] 50 50 51 51 [ wxID_IMCALIBRATE,wxID_IMRECALIBRATE,wxID_IMINTEGRATE, wxID_IMCLEARCALIB, … … 483 483 self.DrawAtomsMenu = wx.MenuBar() 484 484 self.DrawAtomEdit = wx.Menu(title='') 485 self.DrawAtomCompute = wx.Menu(title='') 485 486 self.DrawAtomsMenu.Append(menu=self.DrawAtomEdit, title='Edit') 487 self.DrawAtomsMenu.Append(menu=self.DrawAtomCompute,title='Compute') 486 488 self.DrawAtomsMenu.Append(menu=MyHelp(self,helpType='Draw Atoms'),title='&Help') 487 489 self.DrawAtomEdit.Append(id=wxID_DRAWATOMSTYLE, kind=wx.ITEM_NORMAL,text='Atom style', … … 505 507 self.DrawAtomEdit.Append(id=wxID_DRAWDELETE, kind=wx.ITEM_NORMAL,text='Delete atoms', 506 508 help='Delete atoms from drawing set') 509 self.DrawAtomCompute.Append(id=wxID_DRAWDISAGL, kind=wx.ITEM_NORMAL,text='Distances & Angles', 510 help='Compute distances & angles for selected atoms') 511 self.DrawAtomCompute.Append(id=wxID_DRAWTORSION, kind=wx.ITEM_NORMAL,text='Torsions', 512 help='Compute torsion angle for 4 selected atoms') 507 513 508 514 # end of GSAS-II menu definitions -
trunk/GSASIIphsGUI.py
r458 r459 134 134 135 135 class 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): 137 149 wx.Dialog.__init__(self,parent,-1,'Distance Angle Controls', 138 150 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) 141 159 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']), 143 161 0,wx.ALIGN_CENTER_VERTICAL|wx.LEFT,10) 144 162 mainSizer.Add((10,10),1) 145 163 146 164 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) 150 168 self.objList = {} 151 169 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) 154 172 self.objList[bRadii.GetId()] = ['BondRadii',id] 155 173 bRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal) 156 174 bRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal) 157 175 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) 159 177 self.objList[aRadii.GetId()] = ['AngleRadii',id] 160 178 aRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal) … … 165 183 Names = ['Bond','Angle'] 166 184 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) 169 187 self.objList[bondFact.GetId()] = ['Factors',i] 170 188 bondFact.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal) … … 173 191 mainSizer.Add(factorSizer,0,wx.EXPAND) 174 192 175 OkBtn = wx.Button( panel,-1,"Ok")193 OkBtn = wx.Button(self.panel,-1,"Ok") 176 194 OkBtn.Bind(wx.EVT_BUTTON, self.OnOk) 195 ResetBtn = wx.Button(self.panel,-1,'Reset') 196 ResetBtn.Bind(wx.EVT_BUTTON, self.OnReset) 177 197 btnSizer = wx.BoxSizer(wx.HORIZONTAL) 178 198 btnSizer.Add((20,20),1) 179 199 btnSizer.Add(OkBtn) 180 btnSizer.Add((20,20),1) 200 btnSizer.Add(ResetBtn) 201 btnSizer.Add((20,20),1) 181 202 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() 184 205 self.Fit() 185 206 … … 193 214 Obj.SetValue("%.3f"%(self.data[item[0]][item[1]])) #reset in case of error 194 215 195 def getData(self):196 return self. Data216 def GetData(self): 217 return self.data 197 218 198 219 def OnOk(self,event): … … 201 222 self.EndModal(wx.ID_OK) 202 223 self.Destroy() 224 225 def OnReset(self,event): 226 data = {} 227 self.__default__(data,self.default) 228 self.Draw(self.data) 203 229 204 230 def UpdatePhaseData(self,Item,data,oldPage): … … 1048 1074 xyz = [] 1049 1075 DisAglData = {} 1076 DisAglCtls = {} 1050 1077 if indx: 1051 1078 generalData = data['General'] 1052 1079 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 1059 1093 atomData = data['Atoms'] 1060 1094 colLabels = [Atoms.GetColLabelValue(c) for c in range(Atoms.GetNumberCols())] … … 1073 1107 DisAglData['pId'] = data['pId'] 1074 1108 DisAglData['covData'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,self.root, 'Covariance')) 1075 G2str.DistAngle(DisAgl Data)1076 1109 G2str.DistAngle(DisAglCtls,DisAglData) 1110 1077 1111 #Structure drawing GUI stuff 1078 1112 … … 1798 1832 atomData[ind][col] = value 1799 1833 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 1800 1842 def UpdateDrawOptions(): 1801 1843 import copy … … 3054 3096 self.dataFrame.Bind(wx.EVT_MENU, FillUnitCell, id=G2gd.wxID_DRAWFILLCELL) 3055 3097 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) 3056 3100 UpdateDrawAtoms() 3057 3101 G2plt.PlotStructure(self,data) -
trunk/GSASIIspc.py
r404 r459 293 293 idup = False 294 294 else: 295 if True in [np.allclose(newX, X,atol=0.0002) for oldX in XYZEquiv]:295 if True in [np.allclose(newX,oldX,atol=0.0002) for oldX in XYZEquiv]: 296 296 idup = False 297 297 if All or idup: -
trunk/GSASIIstruct.py
r458 r459 2555 2555 G2IO.SetSeqResult(GPXfile,Histograms,SeqResult) 2556 2556 2557 def DistAngle(DisAgl Data):2557 def DistAngle(DisAglCtls,DisAglData): 2558 2558 import numpy.ma as ma 2559 2559 … … 2563 2563 print 80*'*','\n' 2564 2564 2565 ShowBanner(DisAgl Data['Name'])2565 ShowBanner(DisAglCtls['Name']) 2566 2566 SGData = DisAglData['SGData'] 2567 2567 SGtext = G2spc.SGPrint(SGData) … … 2588 2588 ' alpha = ','%.3f'%(Cell[3]),' beta = ','%.3f'%(Cell[4]),' gamma = ', \ 2589 2589 '%.3f'%(Cell[5]),' volume = ','%.3f'%(Cell[6]) 2590 Factor = DisAgl Data['Factors']2591 Radii = dict(zip(DisAgl Data['AtomTypes'],zip(DisAglData['BondRadii'],DisAglData['AngleRadii'])))2590 Factor = DisAglCtls['Factors'] 2591 Radii = dict(zip(DisAglCtls['AtomTypes'],zip(DisAglCtls['BondRadii'],DisAglCtls['AngleRadii']))) 2592 2592 Units = np.array([ #is there a nicer way to make this? 2593 2593 [-1,-1,-1],[-1,-1,0],[-1,-1,1],[-1,0,-1],[-1,0,0],[-1,0,1],[-1,1,-1],[-1,1,0],[-1,1,1], … … 2624 2624 IndBlist.append(str(dx.T[indb][i])) 2625 2625 unit = Units[indb][i] 2626 tunit = '[%2d%2d%2d]'%(unit[0] ,unit[1],unit[2])2626 tunit = '[%2d%2d%2d]'%(unit[0]+Tunit[0],unit[1]+Tunit[1],unit[2]+Tunit[2]) 2627 2627 pdpx = G2mth.getDistDerv(Oatom[3:6],Tatom[3:6],Amat,unit,Top,SGData) 2628 2628 sig = 0.0
Note: See TracChangeset
for help on using the changeset viewer.