Changeset 2343


Ignore:
Timestamp:
Jun 24, 2016 7:35:44 PM (7 years ago)
Author:
toby
Message:

cleanups on Restraints editing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIrestrGUI.py

    r1988 r2343  
    3636#####  Restraints
    3737################################################################################           
     38def GetSelectedRows(widget):
     39    '''Returns a list of selected rows. Rows can be selected, blocks of cells
     40    or individual cells can be selected. The column for selected cells is ignored.
     41    '''
     42    rows = widget.GetSelectedRows()
     43    if not rows:
     44        top = widget.GetSelectionBlockTopLeft()
     45        bot = widget.GetSelectionBlockBottomRight()
     46        if top and bot:
     47            rows = range(top[0][0],bot[0][0]+1)
     48    if not rows:
     49        rows = sorted(list(set([cell[0] for cell in widget.GetSelectedCells()])))
     50    return rows
    3851       
    3952def UpdateRestraints(G2frame,data,Phases,phaseName):
     
    782795        wtBox.Add(useData,0,wx.ALIGN_CENTER_VERTICAL)
    783796        if 'Bonds' in restData or 'Angles' in restData:
    784             wtBox.Add(wx.StaticText(wind,-1,'Search range:'),0,wx.ALIGN_CENTER_VERTICAL)
     797            wtBox.Add(wx.StaticText(wind,-1,'  Search range:'),0,wx.ALIGN_CENTER_VERTICAL)
    785798            sRange = wx.TextCtrl(wind,-1,value='%.2f'%(restData['Range']),style=wx.TE_PROCESS_ENTER,size=(50,20))
    786799            sRange.Bind(wx.EVT_TEXT_ENTER,OnRange)
    787800            sRange.Bind(wx.EVT_KILL_FOCUS,OnRange)
    788801            wtBox.Add(sRange,0,wx.ALIGN_CENTER_VERTICAL)
     802            wtBox.Add(wx.StaticText(wind,-1,'(x sum(atom radii)'),0,wx.ALIGN_CENTER_VERTICAL)
    789803        return wtBox
    790804       
     
    830844                pass           
    831845            wx.CallAfter(UpdateBondRestr,bondRestData)               
    832            
     846
    833847        def OnChangeValue(event):
    834             rows = Bonds.GetSelectedRows()
     848            rows = GetSelectedRows(Bonds)
    835849            if not rows:
    836850                return
     
    846860
    847861        def OnChangeEsd(event):
    848             rows = Bonds.GetSelectedRows()
     862            rows = GetSelectedRows(Bonds)
    849863            if not rows:
    850864                return
     
    860874                               
    861875        def OnDeleteRestraint(event):
    862             rows = Bonds.GetSelectedRows()
     876            rows = GetSelectedRows(Bonds)
    863877            if not rows:
    864878                return
     
    870884            UpdateBondRestr(bondRestData)               
    871885           
    872         BondRestr.DestroyChildren()
     886        #BondRestr.DestroyChildren()
     887        if BondRestr.GetSizer():
     888            BondRestr.GetSizer().Clear(True)
    873889        dataDisplay = wx.Panel(BondRestr)
    874890        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    886902            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,3',]
    887903            if 'macro' in General['Type']:
    888                 colLabels = ['(res) A - (res) B','calc','obs','esd','delt/sig']
     904                colLabels = ['(res) A - (res) B','calc','target','esd','delt/sig']
    889905                for i,[indx,ops,obs,esd] in enumerate(bondList):
    890906                    try:
     
    902918                        bad.append(i)
    903919            else:
    904                 colLabels = ['A+SymOp - B+SymOp','calc','obs','esd','delt/sig']
     920                colLabels = ['A+SymOp - B+SymOp','calc','target','esd','delt/sig']
    905921                for i,[indx,ops,obs,esd] in enumerate(bondList):
    906922                    try:
     
    942958        Size = mainSizer.Fit(G2frame.dataFrame)
    943959        Size[0] = 600
    944         Size[1] += 50       #make room for tab
     960        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    945961        BondRestr.SetSize(Size)
    946962        BondRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    962978           
    963979        def OnChangeValue(event):
    964             rows = Angles.GetSelectedRows()
     980            rows = GetSelectedRows(Angles)
    965981            if not rows:
    966982                return
     
    976992
    977993        def OnChangeEsd(event):
    978             rows = Angles.GetSelectedRows()
     994            rows = GetSelectedRows(Angles)
    979995            if not rows:
    980996                return
     
    9901006                                           
    9911007        def OnDeleteRestraint(event):
    992             rows = Angles.GetSelectedRows()
     1008            rows = GetSelectedRows(Angles)
    9931009            if not rows:
    9941010                return
     
    9991015            UpdateAngleRestr(angleRestData)               
    10001016           
    1001         AngleRestr.DestroyChildren()
     1017        #AngleRestr.DestroyChildren()
     1018        if AngleRestr.GetSizer():
     1019            AngleRestr.GetSizer().Clear(True)
    10021020        dataDisplay = wx.Panel(AngleRestr)
    10031021        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    10131031            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,2',]
    10141032            if 'macro' in General['Type']:
    1015                 colLabels = ['(res) A - (res) B - (res) C','calc','obs','esd','delt/sig']
     1033                colLabels = ['(res) A - (res) B - (res) C','calc','target','esd','delt/sig']
    10161034                for i,[indx,ops,obs,esd] in enumerate(angleList):
    10171035                    try:
     
    10291047                        bad.append(i)
    10301048            else:
    1031                 colLabels = ['A+SymOp - B+SymOp - C+SymOp','calc','obs','esd','delt/sig']
     1049                colLabels = ['A+SymOp - B+SymOp - C+SymOp','calc','target','esd','delt/sig']
    10321050                for i,[indx,ops,obs,esd] in enumerate(angleList):
    10331051                    try:
     
    10711089        Size = mainSizer.Fit(G2frame.dataFrame)
    10721090        Size[0] = 600
    1073         Size[1] += 50      #make room for tab
     1091        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    10741092        AngleRestr.SetSize(Size)
    10751093        AngleRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    10961114           
    10971115        def OnChangeEsd(event):
    1098             rows = Planes.GetSelectedRows()
     1116            rows = GetSelectedRows(Planes)
    10991117            if not rows:
    11001118                return
     
    11101128                                           
    11111129        def OnDeleteRestraint(event):
    1112             rows = Planes.GetSelectedRows()
     1130            rows = GetSelectedRows(Planes)
    11131131            if not rows:
    11141132                return
     
    11191137            UpdatePlaneRestr(planeRestData)               
    11201138           
    1121         PlaneRestr.DestroyChildren()
     1139        #PlaneRestr.DestroyChildren()
     1140        if PlaneRestr.GetSizer():
     1141            PlaneRestr.GetSizer().Clear(True)
    11221142        dataDisplay = wx.Panel(PlaneRestr)
    11231143        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    11331153            Types = [wg.GRID_VALUE_STRING,]+3*[wg.GRID_VALUE_FLOAT+':10,2',]
    11341154            if 'macro' in General['Type']:
    1135                 colLabels = ['(res) atom','calc','obs','esd']
     1155                colLabels = ['(res) atom','calc','target','esd']
    11361156                for i,[indx,ops,obs,esd] in enumerate(planeList):
    11371157                    try:
     
    11511171                        bad.append(i)
    11521172            else:                               
    1153                 colLabels = ['atom+SymOp','calc','obs','esd']
     1173                colLabels = ['atom+SymOp','calc','target','esd']
    11541174                for i,[indx,ops,obs,esd] in enumerate(planeList):
    11551175                    try:
     
    11961216        Size = mainSizer.Fit(G2frame.dataFrame)
    11971217        Size[0] = 600
    1198         Size[1] += 50       #make room for tab
     1218        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    11991219        PlaneRestr.SetSize(Size)
    12001220        PlaneRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    12171237           
    12181238        def OnDeleteRestraint(event):
    1219             rows = Volumes.GetSelectedRows()
     1239            rows = GetSelectedRows(Volumes)
    12201240            if not rows:
    12211241                return
     
    12271247           
    12281248        def OnChangeValue(event):
    1229             rows = Volumes.GetSelectedRows()
     1249            rows = GetSelectedRows(Volumes)
    12301250            if not rows:
    12311251                return
     
    12411261
    12421262        def OnChangeEsd(event):
    1243             rows = Volumes.GetSelectedRows()
     1263            rows = GetSelectedRows(Volumes)
    12441264            if not rows:
    12451265                return
     
    12541274            UpdateChiralRestr(chiralRestData)               
    12551275                                           
    1256         ChiralRestr.DestroyChildren()
     1276        #ChiralRestr.DestroyChildren()
     1277        if ChiralRestr.GetSizer():
     1278            ChiralRestr.GetSizer().Clear(True)
    12571279        dataDisplay = wx.Panel(ChiralRestr)
    12581280        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    12681290            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,2',]
    12691291            if 'macro' in General['Type']:
    1270                 colLabels = ['(res) O (res) A (res) B (res) C','calc','obs','esd','delt/sig']
     1292                colLabels = ['(res) O (res) A (res) B (res) C','calc','target','esd','delt/sig']
    12711293                for i,[indx,ops,obs,esd] in enumerate(volumeList):
    12721294                    try:
     
    12841306                        bad.append(i)
    12851307            else:
    1286                 colLabels = ['O+SymOp  A+SymOp  B+SymOp  C+SymOp)','calc','obs','esd','delt/sig']
     1308                colLabels = ['O+SymOp  A+SymOp  B+SymOp  C+SymOp)','calc','target','esd','delt/sig']
    12871309                for i,[indx,ops,obs,esd] in enumerate(volumeList):
    12881310                    try:
     
    13261348        Size = mainSizer.Fit(G2frame.dataFrame)
    13271349        Size[0] = 600
    1328         Size[1] += 50       #make room for tab
     1350        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    13291351        ChiralRestr.SetSize(Size)
    13301352        ChiralRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    13461368           
    13471369        def OnDeleteRestraint(event):
    1348             rows = Torsions.GetSelectedRows()
     1370            rows = GetSelectedRows(Torsions)
    13491371            if not rows:
    13501372                return
     
    13561378           
    13571379        def OnChangeEsd(event):
    1358             rows = Torsions.GetSelectedRows()
     1380            rows = GetSelectedRows(Torsions)
    13591381            if not rows:
    13601382                return
     
    13691391            wx.CallAfter(UpdateTorsionRestr,torsionRestData)               
    13701392                                           
    1371         TorsionRestr.DestroyChildren()
     1393        #TorsionRestr.DestroyChildren()
     1394        if TorsionRestr.GetSizer():
     1395            TorsionRestr.GetSizer().Clear(True)
    13721396        dataDisplay = wx.Panel(TorsionRestr)
    13731397        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    14451469        Size = mainSizer.Fit(G2frame.dataFrame)
    14461470        Size[0] = 600
    1447         Size[1] += 50       #make room for tab
     1471        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    14481472        TorsionRestr.SetSize(Size)
    14491473        TorsionRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    14651489           
    14661490        def OnDeleteRestraint(event):
    1467             rows = Ramas.GetSelectedRows()
     1491            rows = GetSelectedRows(Ramas)
    14681492            if not rows:
    14691493                return
     
    14751499           
    14761500        def OnChangeEsd(event):
    1477             rows = Ramas.GetSelectedRows()
     1501            rows = GetSelectedRows(Ramas)
    14781502            if not rows:
    14791503                return
     
    14881512            UpdateRamaRestr(ramaRestData)               
    14891513                                           
    1490         RamaRestr.DestroyChildren()
     1514        #RamaRestr.DestroyChildren()
     1515        if RamaRestr.GetSizer():
     1516            RamaRestr.GetSizer().Clear(True)
    14911517        dataDisplay = wx.Panel(RamaRestr)
    14921518        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    15661592        Size = mainSizer.Fit(G2frame.dataFrame)
    15671593        Size[0] = 600
    1568         Size[1] += 50       #make room for tab
     1594        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    15691595        RamaRestr.SetSize(Size)
    15701596        RamaRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    15931619           
    15941620        def OnDeleteRestraint(event):
    1595             rows = ChemComps.GetSelectedRows()[0]
     1621            #rows = GetSelectedRows()
     1622            rows = ChemComps.GetSelectedRows()[0] # why is this indexed as [0]?
    15961623            if not rows:
    15971624                return
     
    16071634           
    16081635        def OnChangeValue(event):
    1609             rows = ChemComps.GetSelectedRows()
     1636            rows = GetSelectedRows(ChemComps)
    16101637            if not rows:
    16111638                return
     
    16231650            UpdateChemcompRestr(chemcompRestData)               
    16241651
    1625         ChemCompRestr.DestroyChildren()
     1652        #ChemCompRestr.DestroyChildren()
     1653        if ChemCompRestr.GetSizer():
     1654            ChemCompRestr.GetSizer().Clear(True)
    16261655        dataDisplay = wx.Panel(ChemCompRestr)
    16271656        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    16391668            chisq = 0.
    16401669            Types = [wg.GRID_VALUE_STRING,]+5*[wg.GRID_VALUE_FLOAT+':10,2',]
    1641             colLabels = ['Atoms','mul*frac','factor','calc','obs','esd']
     1670            colLabels = ['Atoms','mul*frac','factor','calc','target','esd']
    16421671            for i,[indx,factors,obs,esd] in enumerate(chemcompList):
    16431672                try:
     
    16951724        Size = mainSizer.Fit(G2frame.dataFrame)
    16961725        Size[0] = 600
    1697         Size[1] += 50       #make room for tab
     1726        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    16981727        ChemCompRestr.SetSize(Size)
    16991728        ChemCompRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     
    17041733           
    17051734        def OnDeleteRestraint(event):
    1706             rows = Textures.GetSelectedRows()
     1735            rows = GetSelectedRows(Textures)
    17071736            if not rows:
    17081737                return
     
    17321761            wx.CallAfter(UpdateTextureRestr,textureRestData)               
    17331762
    1734         TextureRestr.DestroyChildren()
     1763        #TextureRestr.DestroyChildren()
     1764        if TextureRestr.GetSizer():
     1765            TextureRestr.GetSizer().Clear(True)
    17351766        dataDisplay = wx.Panel(TextureRestr)
    17361767        mainSizer = wx.BoxSizer(wx.VERTICAL)
     
    17731804        Size = mainSizer.Fit(G2frame.dataFrame)
    17741805        Size[0] = 600
    1775         Size[1] += 50       #make room for tab
     1806        Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    17761807        TextureRestr.SetSize(Size)
    17771808        TextureRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
Note: See TracChangeset for help on using the changeset viewer.