Changeset 683 for trunk/GSASIIgrid.py
- Timestamp:
- Jul 10, 2012 10:23:32 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/GSASIIgrid.py ¶
r661 r683 55 55 ] = [wx.NewId() for item in range(12)] 56 56 57 [ wxID_DRAWRESTRBOND, wxID_DRAWRESTRANGLE, wxID_DRAWRESTRPLANE, wxID_DRAWRESTRCHIRAL, 58 ] = [wx.NewId() for item in range(4)] 59 57 60 [ wxID_CLEARTEXTURE,wxID_REFINETEXTURE, 58 61 ] = [wx.NewId() for item in range(2)] … … 84 87 ] = [wx.NewId() for item in range(4)] 85 88 86 [ wxID_RESTRAINTADD,wxID_PWDANALYSIS, 87 ] = [wx.NewId() for item in range( 2)]89 [ wxID_RESTRAINTADD,wxID_PWDANALYSIS, wxID_RESTSELPHASE, 90 ] = [wx.NewId() for item in range(3)] 88 91 89 92 [ wxID_SAVESEQSEL, … … 278 281 self.RestraintMenu.Append(menu=self.RestraintEdit, title='Edit') 279 282 self.RestraintMenu.Append(menu=MyHelp(self,helpType='Restraints'),title='&Help') 280 self.RestraintEdit.Append(id=wxID_RESTRAINTADD, kind=wx.ITEM_NORMAL,text='Add restraint', 281 help='restraint dummy menu item') 283 self.RestraintEdit.Append(id=wxID_RESTSELPHASE, kind=wx.ITEM_NORMAL,text='Select phase', 284 help='Select phase') 285 self.RestraintEdit.Append(id=wxID_RESTRAINTADD, kind=wx.ITEM_NORMAL,text='Add restraints', 286 help='Add restraints') 282 287 283 288 # Sequential results … … 500 505 help='Reload atom drawing list') 501 506 self.AtomCompute.Append(id=wxID_ATOMSDISAGL, kind=wx.ITEM_NORMAL,text='Distances & Angles', 502 help='Compute distances & angles for selected atoms') 507 help='Compute distances & angles for selected atoms') 503 508 504 509 # Phase / Draw Options tab … … 510 515 self.DrawAtomEdit = wx.Menu(title='') 511 516 self.DrawAtomCompute = wx.Menu(title='') 517 self.DrawAtomRestraint = wx.Menu(title='') 512 518 self.DrawAtomsMenu.Append(menu=self.DrawAtomEdit, title='Edit') 513 519 self.DrawAtomsMenu.Append(menu=self.DrawAtomCompute,title='Compute') 520 self.DrawAtomsMenu.Append(menu=self.DrawAtomRestraint, title='Restraints') 514 521 self.DrawAtomsMenu.Append(menu=MyHelp(self,helpType='Draw Atoms'),title='&Help') 515 522 self.DrawAtomEdit.Append(id=wxID_DRAWATOMSTYLE, kind=wx.ITEM_NORMAL,text='Atom style', … … 537 544 self.DrawAtomCompute.Append(id=wxID_DRAWPLANE, kind=wx.ITEM_NORMAL,text='Best plane', 538 545 help='Compute best plane for 4+ selected atoms') 546 self.DrawAtomRestraint.Append(id=wxID_DRAWRESTRBOND, kind=wx.ITEM_NORMAL,text='Add bond restraint', 547 help='Add bond restraint for selected atoms (2)') 548 self.DrawAtomRestraint.Append(id=wxID_DRAWRESTRANGLE, kind=wx.ITEM_NORMAL,text='Add angle restraint', 549 help='Add angle restraint for selected atoms (3: one end 1st)') 550 self.DrawAtomRestraint.Append(id=wxID_DRAWRESTRPLANE, kind=wx.ITEM_NORMAL,text='Add plane restraint', 551 help='Add plane restraint for selected atoms (4+)') 552 self.DrawAtomRestraint.Append(id=wxID_DRAWRESTRCHIRAL, kind=wx.ITEM_NORMAL,text='Add chiral restraint', 553 help='Add chiral restraint for selected atoms (4: center atom 1st)') 539 554 540 555 # Phase / Texture tab … … 1569 1584 elif warnmsg: 1570 1585 print 'Unexpected contraint warning:\n',warnmsg 1571 1572 def UpdateRestraints(G2frame,data): 1573 1586 1587 def UpdateRestraints(G2frame,data,Phases,phaseName): 1588 if not len(Phases): 1589 print 'There are no phases to form restraints' 1590 return 1591 phasedata = Phases[phaseName] 1592 if phaseName not in data: 1593 data[phaseName] = {} 1594 restrData = data[phaseName] 1595 if 'Bond' not in restrData: 1596 restrData['Bond'] = {'wtFactor':1.0,'Bonds':[]} 1597 if 'Angle' not in restrData: 1598 restrData['Angle'] = {'wtFactor':1.0,'Angles':[]} 1599 if 'Plane' not in restrData: 1600 restrData['Plane'] = {'wtFactor':1.0,'Planes':[]} 1601 if 'Chiral' not in restrData: 1602 restrData['Chiral'] = {'wtFactor':1.0,'Volumes':[]} 1603 1604 def OnSelectPhase(event): 1605 dlg = wx.SingleChoiceDialog(G2frame,'Select','Phase',Phases.keys()) 1606 try: 1607 if dlg.ShowModal() == wx.ID_OK: 1608 phaseName = Phases.keys()[dlg.GetSelection()] 1609 UpdateRestraints(G2frame,data,Phases,phaseName) 1610 finally: 1611 dlg.Destroy() 1612 1574 1613 def OnAddRestraint(event): 1575 1614 page = G2frame.dataDisplay.GetSelection() 1576 print G2frame.dataDisplay.GetPageText(page) 1577 1578 def UpdateAtomRestr(): 1579 AtomRestr.DestroyChildren() 1580 dataDisplay = wx.Panel(AtomRestr) 1615 if 'Bond' in G2frame.dataDisplay.GetPageText(page): 1616 AddBondRestraint() 1617 elif 'Angle' in G2frame.dataDisplay.GetPageText(page): 1618 AddAngleRestraint() 1619 elif 'Plane' in G2frame.dataDisplay.GetPageText(page): 1620 AddPlaneRestraint() 1621 elif 'Chiral' in G2frame.dataDisplay.GetPageText(page): 1622 AddChiralRestraint() 1623 1624 def AddBondRestraint(): 1625 print 'Bond restraint' 1626 1627 def AddAngleRestraint(): 1628 print 'Angle restraint' 1629 1630 def AddPlaneRestraint(): 1631 print 'Plane restraint' 1632 1633 def AddChiralRestraint(): 1634 print 'Chiral restraint' 1635 1636 def WtBox(wind,restData): 1637 1638 def OnWtFactor(event): 1639 try: 1640 value = float(wtfactor.GetValue()) 1641 except ValueError: 1642 value = 1.0 1643 restData['wtFactor'] = value 1644 wtfactor.SetValue('%.2f'%(value)) 1645 1646 wtBox = wx.BoxSizer(wx.HORIZONTAL) 1647 wtBox.Add(wx.StaticText(wind,-1,'Restraint weight factor:'),0,wx.ALIGN_CENTER_VERTICAL) 1648 wtfactor = wx.TextCtrl(wind,-1,value='%.2f'%(restData['wtFactor']),style=wx.TE_PROCESS_ENTER) 1649 wtfactor.Bind(wx.EVT_TEXT_ENTER,OnWtFactor) 1650 wtfactor.Bind(wx.EVT_KILL_FOCUS,OnWtFactor) 1651 wtBox.Add(wtfactor,0,wx.ALIGN_CENTER_VERTICAL) 1652 return wtBox 1653 1654 def UpdateBondRestr(bondRestData): 1655 BondRestr.DestroyChildren() 1656 dataDisplay = wx.Panel(BondRestr) 1581 1657 mainSizer = wx.BoxSizer(wx.VERTICAL) 1582 1658 mainSizer.Add((5,5),0) 1583 mainSizer.Add( wx.StaticText(dataDisplay,-1,'Atom restraint data:'),0,wx.ALIGN_CENTER_VERTICAL)1584 mainSizer.Add((5,5),0)1585 1586 1587 dataDisplay.SetSizer(mainSizer)1659 mainSizer.Add(WtBox(BondRestr,bondRestData),0,wx.ALIGN_CENTER_VERTICAL) 1660 for bond in bondRestData['Bonds']: 1661 print bond 1662 1663 BondRestr.SetSizer(mainSizer) 1588 1664 Size = mainSizer.Fit(G2frame.dataFrame) 1589 Size[1] += 2 6 #compensate for status bar1590 dataDisplay.SetSize(Size)1665 Size[1] += 25 #make room for tab 1666 BondRestr.SetSize(Size) 1591 1667 G2frame.dataFrame.setSizePosLeft(Size) 1592 1668 1593 def Update PhaseRestr():1594 PhaseRestr.DestroyChildren()1595 dataDisplay = wx.Panel( PhaseRestr)1669 def UpdateAngleRestr(angleRestData): 1670 AngleRestr.DestroyChildren() 1671 dataDisplay = wx.Panel(AngleRestr) 1596 1672 mainSizer = wx.BoxSizer(wx.VERTICAL) 1597 1673 mainSizer.Add((5,5),0) 1598 mainSizer.Add(wx.StaticText(dataDisplay,-1,'Phase restraint data:'),0,wx.ALIGN_CENTER_VERTICAL) 1674 mainSizer.Add(WtBox(AngleRestr,angleRestData),0,wx.ALIGN_CENTER_VERTICAL) 1675 for angle in angleRestData['Angles']: 1676 print angle 1677 1678 1679 AngleRestr.SetSizer(mainSizer) 1680 Size = mainSizer.Fit(G2frame.dataFrame) 1681 Size[1] += 25 #make room for tab 1682 AngleRestr.SetSize(Size) 1683 G2frame.dataFrame.setSizePosLeft(Size) 1684 1685 def UpdatePlaneRestr(planeRestData): 1686 PlaneRestr.DestroyChildren() 1687 dataDisplay = wx.Panel(PlaneRestr) 1688 mainSizer = wx.BoxSizer(wx.VERTICAL) 1599 1689 mainSizer.Add((5,5),0) 1600 1601 1602 dataDisplay.SetSizer(mainSizer) 1690 mainSizer.Add(WtBox(PlaneRestr,planeRestData),0,wx.ALIGN_CENTER_VERTICAL) 1691 for plane in planeRestData['Planes']: 1692 print plane 1693 1694 1695 PlaneRestr.SetSizer(mainSizer) 1603 1696 Size = mainSizer.Fit(G2frame.dataFrame) 1604 Size[1] += 26 #compensate for status bar 1605 dataDisplay.SetSize(Size) 1697 Size[1] += 25 #make room for tab 1698 PlaneRestr.SetSize(Size) 1699 G2frame.dataFrame.setSizePosLeft(Size) 1700 1701 def UpdateChiralRestr(chiralRestData): 1702 ChiralRestr.DestroyChildren() 1703 dataDisplay = wx.Panel(ChiralRestr) 1704 mainSizer = wx.BoxSizer(wx.VERTICAL) 1705 mainSizer.Add((5,5),0) 1706 mainSizer.Add(WtBox(ChiralRestr,chiralRestData),0,wx.ALIGN_CENTER_VERTICAL) 1707 for volume in chiralRestData['Volumes']: 1708 print volume 1709 1710 1711 ChiralRestr.SetSizer(mainSizer) 1712 Size = mainSizer.Fit(G2frame.dataFrame) 1713 Size[1] += 25 #make room for tab 1714 ChiralRestr.SetSize(Size) 1606 1715 G2frame.dataFrame.setSizePosLeft(Size) 1607 1716 … … 1609 1718 page = event.GetSelection() 1610 1719 text = G2frame.dataDisplay.GetPageText(page) 1611 if text == ' Atomrestraints':1720 if text == 'Bond restraints': 1612 1721 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1613 UpdateAtomRestr()1614 elif text == 'Phase restraints':1615 UpdatePhaseRestr()1722 bondRestData = restrData['Bond'] 1723 UpdateBondRestr(bondRestData) 1724 elif text == 'Angle restraints': 1616 1725 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1726 angleRestData = restrData['Angle'] 1727 UpdateAngleRestr(angleRestData) 1728 elif text == 'Plane restraints': 1729 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1730 planeRestData = restrData['Plane'] 1731 UpdatePlaneRestr(planeRestData) 1732 elif text == 'Chiral restraints': 1733 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1734 chiralRestData = restrData['Chiral'] 1735 UpdateChiralRestr(chiralRestData) 1617 1736 event.Skip() 1618 1737 1619 1738 if G2frame.dataDisplay: 1620 1739 G2frame.dataDisplay.Destroy() 1740 1621 1741 G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.RestraintMenu) 1622 G2frame.dataFrame.SetLabel('restraints') 1623 G2frame.dataFrame.CreateStatusBar() 1742 G2frame.dataFrame.SetLabel('restraints for '+phaseName) 1743 G2frame.dataFrame.RestraintEdit.Enable(wxID_RESTSELPHASE,False) 1744 if len(Phases) > 1: 1745 G2frame.dataFrame.RestraintEdit.Enable(wxID_RESTSELPHASE,True) 1746 G2frame.dataFrame.Bind(wx.EVT_MENU, OnSelectPhase, id=wxID_RESTSELPHASE) 1624 1747 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddRestraint, id=wxID_RESTRAINTADD) 1625 1748 G2frame.dataDisplay = GSNoteBook(parent=G2frame.dataFrame,size=G2frame.dataFrame.GetClientSize()) 1626 1749 1627 PhaseRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1628 G2frame.dataDisplay.AddPage(PhaseRestr,'Phase restraints') 1629 AtomRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1630 G2frame.dataDisplay.AddPage(AtomRestr,'Atom restraints') 1631 UpdatePhaseRestr() 1632 # AtomRestrData = data['AtomRestr'] 1750 BondRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1751 G2frame.dataDisplay.AddPage(BondRestr,'Bond restraints') 1752 AngleRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1753 G2frame.dataDisplay.AddPage(AngleRestr,'Angle restraints') 1754 PlaneRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1755 G2frame.dataDisplay.AddPage(PlaneRestr,'Plane restraints') 1756 ChiralRestr = wx.ScrolledWindow(G2frame.dataDisplay) 1757 G2frame.dataDisplay.AddPage(ChiralRestr,'Chiral restraints') 1758 UpdateBondRestr(restrData['Bond']) 1633 1759 1634 1760 G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged) … … 1837 1963 elif G2frame.PatternTree.GetItemText(item) == 'Restraints': 1838 1964 data = G2frame.PatternTree.GetItemPyData(item) 1839 UpdateRestraints(G2frame,data) 1965 Phases = G2frame.GetPhaseData() 1966 phase = '' 1967 if Phases: 1968 phaseName = Phases.keys()[0] 1969 UpdateRestraints(G2frame,data,Phases,phaseName) 1840 1970 elif 'IMG' in G2frame.PatternTree.GetItemText(item): 1841 1971 G2frame.Image = item
Note: See TracChangeset
for help on using the changeset viewer.