Changeset 739


Ignore:
Timestamp:
Aug 27, 2012 4:04:20 PM (10 years ago)
Author:
vondreele
Message:

work on restraints editing

Location:
trunk
Files:
2 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r736 r739  
    1919import GSASIIpath
    2020GSASIIpath.SetVersionNumber("$Revision$")
     21import GSASIImath as G2mth
    2122import GSASIIIO as G2IO
    2223import GSASIIplot as G2plt
     
    9293] = [wx.NewId() for item in range(4)]
    9394
    94 [ wxID_RESTRAINTADD,wxID_PWDANALYSIS, wxID_RESTSELPHASE,wxID_RESTDELETE,
    95 ] = [wx.NewId() for item in range(4)]
     95[ wxID_RESTRAINTADD,wxID_PWDANALYSIS, wxID_RESTSELPHASE,wxID_RESTDELETE, wxID_RESRCHANGEVAL,
     96    wxID_RESTCHANGEESD,
     97] = [wx.NewId() for item in range(6)]
    9698
    9799[ wxID_SAVESEQSEL,
     
    290292        self.RestraintEdit.Append(id=wxID_RESTRAINTADD, kind=wx.ITEM_NORMAL,text='Add restraints',
    291293            help='Add restraints')
     294        self.RestraintEdit.Append(id=wxID_RESRCHANGEVAL, kind=wx.ITEM_NORMAL,text='Change value',
     295            help='Change observed value')
     296        self.RestraintEdit.Append(id=wxID_RESTCHANGEESD, kind=wx.ITEM_NORMAL,text='Change esd',
     297            help='Change esd in observed value')
    292298        self.RestraintEdit.Append(id=wxID_RESTDELETE, kind=wx.ITEM_NORMAL,text='Delete restraints',
    293299            help='Delete selected restraints')
     
    627633    def _init_ctrls(self, parent,name=None,size=None,pos=None):
    628634        wx.Frame.__init__(self,parent=parent,
    629             style=wx.DEFAULT_FRAME_STYLE | wx.FRAME_FLOAT_ON_PARENT ^ wx.CLOSE_BOX,
     635            style=wx.DEFAULT_FRAME_STYLE ^ wx.CLOSE_BOX | wx.FRAME_FLOAT_ON_PARENT ,
    630636            size=size,pos=pos,title='GSAS-II data display')
    631637        self._init_menus()
     
    655661        self.DestroyChildren()
    656662                   
     663################################################################################
     664#####  GSNotebook
     665################################################################################           
     666       
    657667class GSNoteBook(wx.Notebook):
    658668    def __init__(self, parent, name='',size = None):
     
    669679                return page
    670680       
     681################################################################################
     682#####  GSGrid
     683################################################################################           
     684       
    671685class GSGrid(wg.Grid):
    672686    def __init__(self, parent, name=''):
     
    685699        return None
    686700                       
     701################################################################################
     702#####  Table
     703################################################################################           
     704       
    687705class Table(wg.PyGridTableBase):
    688706    def __init__(self, data=[], rowLabels=None, colLabels=None, types = None):
     
    818836        innerSetValue(row, col, value)
    819837               
     838################################################################################
     839#####  Notebook
     840################################################################################           
     841       
    820842def UpdateNotebook(G2frame,data):       
    821843    if data:
     
    827849            G2frame.dataDisplay.AppendText('Notebook entry @ '+time.ctime()+"\n")
    828850           
     851################################################################################
     852#####  Controls
     853################################################################################           
     854       
    829855def UpdateControls(G2frame,data):
    830856    #patch
     
    9841010    G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame))
    9851011     
     1012################################################################################
     1013#####  Comments
     1014################################################################################           
     1015       
    9861016def UpdateComments(G2frame,data):                   
    9871017    G2frame.dataFrame.SetLabel('Comments')
     
    9941024            G2frame.dataDisplay.AppendText(line+'\n')
    9951025           
     1026################################################################################
     1027#####  Sequential Results
     1028################################################################################           
     1029       
    9961030def UpdateSeqResults(G2frame,data):
    9971031    """
     
    11341168    G2frame.dataFrame.setSizePosLeft([700,350])
    11351169   
     1170################################################################################
     1171#####  Constraints
     1172################################################################################           
     1173       
    11361174def UpdateConstraints(G2frame,data):
    11371175    '''Called when Constraints tree item is selected.
     
    16201658        print 'Unexpected contraint warning:\n',warnmsg
    16211659       
     1660################################################################################
     1661#####  Restraints
     1662################################################################################           
     1663       
    16221664def UpdateRestraints(G2frame,data,Phases,phaseName):
    16231665    if not len(Phases):
     
    16961738    def UpdateBondRestr(bondRestData):
    16971739       
    1698         def ChangeCell(event):
    1699             r,c =  event.GetRow(),event.GetCol()
    1700             if r >= 0 and c >= 0:
    1701                 bondList[r][c+2] = table[r][c]
    1702                
     1740        def OnColSort(event):
     1741            r,c = event.GetRow(),event.GetCol()
     1742            if r < 0 and c == 0:
     1743                names = G2mth.sortArray(table,0)
     1744                bonds = []
     1745                for name in names:
     1746                    idx = table.index(name)
     1747                    bonds.append(bondList[idx])
     1748                bondRestData['Bonds'] = bonds
     1749                UpdateBondRestr(bondRestData)               
     1750       
     1751        def OnChangeValue(event):
     1752            rows = Bonds.GetSelectedRows()
     1753            if not rows:
     1754                return
     1755            Bonds.ClearSelection()
     1756            val = bondList[rows[0]][4]
     1757            dlg = G2phG.SingleFloatDialog(G2frame,'New value','Enter new value for bond',val,[0.,5.])
     1758            if dlg.ShowModal() == wx.ID_OK:
     1759                parm = dlg.GetValue()
     1760                for r in rows:
     1761                    bondList[r][4] = parm
     1762            dlg.Destroy()
     1763            UpdateBondRestr(bondRestData)               
     1764
     1765        def OnChangeEsd(event):
     1766            rows = Bonds.GetSelectedRows()
     1767            if not rows:
     1768                return
     1769            Bonds.ClearSelection()
     1770            val = bondList[rows[0]][5]
     1771            dlg = G2phG.SingleFloatDialog(G2frame,'New value','Enter new esd for bond',val,[0.,1.])
     1772            if dlg.ShowModal() == wx.ID_OK:
     1773                parm = dlg.GetValue()
     1774                for r in rows:
     1775                    bondList[r][5] = parm
     1776            dlg.Destroy()
     1777            UpdateBondRestr(bondRestData)               
     1778                               
    17031779        def OnDeleteRestraint(event):
    17041780            rows = Bonds.GetSelectedRows()
     1781            if not rows:
     1782                return
    17051783            Bonds.ClearSelection()
    17061784            rows.sort()
     
    17331811                    Bonds.SetReadOnly(r,c,True)
    17341812                    Bonds.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    1735             Bonds.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
     1813            Bonds.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK,OnColSort)
    17361814            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
     1815            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=wxID_RESRCHANGEVAL)
     1816            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=wxID_RESTCHANGEESD)
    17371817            mainSizer.Add(Bonds,0,)
    17381818        else:
     
    17471827       
    17481828    def UpdateAngleRestr(angleRestData):
    1749 
    1750         def ChangeCell(event):
    1751             r,c =  event.GetRow(),event.GetCol()
    1752             if r >= 0 and c >= 0:
    1753                 angleList[r][c+2] = table[r][c]
    1754            
     1829       
     1830        def OnColSort(event):
     1831            r,c = event.GetRow(),event.GetCol()
     1832            if r < 0 and c == 0:
     1833                names = G2mth.sortArray(table,0)
     1834                angles = []
     1835                for name in names:
     1836                    idx = table.index(name)
     1837                    angles.append(angleList[idx])
     1838                angleRestData['Angles'] = angles
     1839                UpdateAngleRestr(angleRestData)               
     1840       
     1841        def OnChangeValue(event):
     1842            rows = Angles.GetSelectedRows()
     1843            if not rows:
     1844                return
     1845            Angles.ClearSelection()
     1846            val = angleList[rows[0]][4]
     1847            dlg = G2phG.SingleFloatDialog(G2frame,'New value','Enter new value for angle',val,[0.,360.])
     1848            if dlg.ShowModal() == wx.ID_OK:
     1849                parm = dlg.GetValue()
     1850                for r in rows:
     1851                    angleList[r][4] = parm
     1852            dlg.Destroy()
     1853            UpdateAngleRestr(angleRestData)               
     1854
     1855        def OnChangeEsd(event):
     1856            rows = Angles.GetSelectedRows()
     1857            if not rows:
     1858                return
     1859            Angles.ClearSelection()
     1860            val = angleList[rows[0]][5]
     1861            dlg = G2phG.SingleFloatDialog(G2frame,'New value','Enter new esd for angle',val,[0.,5.])
     1862            if dlg.ShowModal() == wx.ID_OK:
     1863                parm = dlg.GetValue()
     1864                for r in rows:
     1865                    angleList[r][5] = parm
     1866            dlg.Destroy()
     1867            UpdateAngleRestr(angleRestData)               
     1868                                           
    17551869        def OnDeleteRestraint(event):
    17561870            rows = Angles.GetSelectedRows()
     1871            if not rows:
     1872                return
    17571873            rows.sort()
    17581874            rows.reverse()
     
    17851901                    Angles.SetReadOnly(r,c,True)
    17861902                    Angles.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    1787             Angles.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
     1903            Angles.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK,OnColSort)
    17881904            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
     1905            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=wxID_RESRCHANGEVAL)
     1906            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=wxID_RESTCHANGEESD)
    17891907            mainSizer.Add(Angles,0,)
    17901908        else:
     
    17991917   
    18001918    def UpdatePlaneRestr(planeRestData):
    1801 
    1802         def ChangeCell(event):
    1803             r,c =  event.GetRow(),event.GetCol()
    1804             if r >= 0 and c >= 0:
    1805                 planeList[r][c+2] = table[r][c]
    1806            
     1919       
     1920        items = G2frame.dataFrame.RestraintEdit.GetMenuItems()
     1921        for item in items:
     1922            if item.GetLabel() in ['Change value']:
     1923                item.Enable(False)
     1924
    18071925        def OnDeleteRestraint(event):
    18081926            rows = Planes.GetSelectedRows()
     1927            if not rows:
     1928                return
    18091929            rows.sort()
    18101930            rows.reverse()
     
    18421962                    Planes.SetReadOnly(r,c,True)
    18431963                    Planes.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    1844             Planes.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    18451964            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
    18461965            mainSizer.Add(Planes,0,)
     
    18571976    def UpdateChiralRestr(chiralRestData):
    18581977
    1859         def ChangeCell(event):
    1860             r,c =  event.GetRow(),event.GetCol()
    1861             if r >= 0 and c >= 0:
    1862                 volumeList[r][c+2] = table[r][c]
    1863            
    18641978        def OnDeleteRestraint(event):
    18651979            rows = Volumes.GetSelectedRows()
     1980            if not rows:
     1981                return
    18661982            rows.sort()
    18671983            rows.reverse()
     
    18942010                    Volumes.SetReadOnly(r,c,True)
    18952011                    Volumes.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    1896             Volumes.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    18972012            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
    18982013            mainSizer.Add(Volumes,0,)
     
    19522067    G2frame.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)
    19532068   
     2069################################################################################
     2070#####  Main PWDR panel
     2071################################################################################           
     2072       
    19542073def UpdatePWHKPlot(G2frame,kind,item):
    19552074
     
    19922111        G2plt.PlotSngl(G2frame,newPlot=True)
    19932112                 
     2113################################################################################
     2114#####  HKLF controls
     2115################################################################################           
     2116       
    19942117def UpdateHKLControls(G2frame,data):
    19952118   
     
    20842207    G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame))
    20852208
     2209################################################################################
     2210#####  Pattern tree routines
     2211################################################################################           
     2212       
    20862213def GetPatternTreeDataNames(G2frame,dataTypes):
    20872214    names = []
Note: See TracChangeset for help on using the changeset viewer.