Changeset 5157


Ignore:
Timestamp:
Jan 24, 2022 11:04:47 PM (10 months ago)
Author:
toby
Message:

clean up ISODISTORT GUI and add ne buttons

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r5152 r5157  
    69946994           
    69956995       
    6996 #### ISODISTORT results tab ###############################################################################
     6996#--- ISODISTORT results tab ###############################################################################
    69976997
    69986998    def UpdateISODISTORT(Scroll=0):
     
    71987198                G2plt.PlotStructure(G2frame,data)
    71997199                UpdateISODISTORT()
    7200            
     7200
     7201            def OnSetZero(event):
     7202                '''Reset all distortion mode values to 0'''
     7203                ISOdata['modeDispl'] = [0.0 for i in ISOdata['ISOmodeDispl']]
     7204                err = G2mth.ApplyModeDisp(data)
     7205                if err:
     7206                    G2G.G2MessageBox(G2frame,'Do Draw atoms first')               
     7207                FindBondsDraw(data)               
     7208                G2plt.PlotStructure(G2frame,data)
     7209                UpdateISODISTORT()
     7210
     7211            def OnSaveModes(event):
     7212                '''Set initial distortion mode values to displayed values'''
     7213                ISOdata['ISOmodeDispl'] = copy.deepcopy(ISOdata['modeDispl'])
     7214                UpdateISODISTORT()
     7215
     7216               
     7217               
     7218            #### displayModes code starts here         
    72017219            ConstrData = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Constraints'))
    72027220            pId = data['ranId']
    72037221            mainSizer = wx.BoxSizer(wx.VERTICAL)
    7204             topSizer = wx.BoxSizer(wx.VERTICAL)   
    7205             topSizer.Add(wx.StaticText(ISODIST,label=ISOcite))
    7206             topSizer.Add(wx.StaticText(ISODIST,label=' ISODISTORT distortion modes for %s:'%data['General']['Name']))
    7207             lineSizer = wx.BoxSizer(wx.HORIZONTAL)           
    7208             lineSizer.Add(wx.StaticText(ISODIST,label=' Adjust magnitude of distortion modes (-2 to +2):  '),0,WACV)
    7209             reset = wx.Button(ISODIST,label='Reset modes')
    7210             reset.Bind(wx.EVT_BUTTON,OnReset)
    7211             lineSizer.Add(reset,0,WACV)
    7212             topSizer.Add(lineSizer)
    7213             slideSizer = wx.FlexGridSizer(0,5,0,0)
    7214             slideSizer.AddGrowableCol(3,1)
     7222            topSizer = wx.BoxSizer(wx.HORIZONTAL)
     7223            topSizer.Add(wx.StaticText(ISODIST,label=' ISODISTORT distortion modes for phase %s'%data['General']['Name']),0,wx.BOTTOM,5)
     7224            topSizer.Add((-1,-1),1,wx.EXPAND,1)
     7225            topSizer.Add(G2G.HelpButton(ISODIST,helpIndex=G2frame.dataWindow.helpKey),0,wx.ALIGN_TOP)
     7226            mainSizer.Add(topSizer,0,wx.EXPAND)
     7227           
     7228            mainSizer.Add(wx.StaticText(ISODIST,label=
     7229u''' The 2nd column below shows the last saved mode values. The 3rd && 4th columns will set the
     7230 display mode values. The positions in the Atoms and Draw Atoms tabs, as well as the atom
     7231 positions shown in the Plot Window are changed to reflect the display mode values. The
     7232 range of the slider corresponds to making a maximum atomic displacement between -2 && +2 \u212B.'''))
     7233            mainSizer.Add((-1,10))
     7234            slideSizer = wx.FlexGridSizer(0,4,0,0)
     7235            #slideSizer.AddGrowableCol(3,1)
    72157236            modeDisp = ISOdata['modeDispl']
    72167237            idsp = 0
     7238            slideSizer.Add(wx.StaticText(ISODIST,label='Isodistort mode name'),0,wx.ALIGN_CENTER)
     7239            slideSizer.Add(wx.StaticText(ISODIST,label='Initial value'))
     7240            slideSizer.Add(wx.StaticText(ISODIST,label='Display value'),0,wx.ALIGN_CENTER)
     7241            slideSizer.Add(wx.StaticText(ISODIST,label='Refine?'))
     7242            isoDict = {i.name:j for (i,j) in zip(data['ISODISTORT']['G2ModeList'],data['ISODISTORT']['IsoModeList'])}
    72177243            for item in ConstrData['Phase']:
    7218                 if pId != item[-3].phase:
     7244                if item[-1] != 'f': continue # only want new vars
     7245                if item[-3] is None: continue # unnamed new var is not ISO
     7246                try:
     7247                    if pId != item[-3].phase: continue # at present only ISO modes are associated with a phase
     7248                except AttributeError:
    72197249                    continue
    7220                 slideSizer.Add(wx.StaticText(ISODIST,label=item[-3].name),0,WACV)
    7221                 slideSizer.Add(wx.StaticText(ISODIST,label=' %.5g '%ISOdata['ISOmodeDispl'][idsp]),0,WACV)
     7250                if  item[-3].name not in isoDict: continue
     7251                isoName = isoDict[item[-3].name]
     7252                slideSizer.Add(wx.StaticText(ISODIST,label=isoName),0,WACV)
     7253                slideSizer.Add(wx.StaticText(ISODIST,label=' %.5g '%ISOdata['ISOmodeDispl'][idsp],
     7254                                                 style=wx.ALIGN_CENTER_HORIZONTAL),0,WACV|wx.EXPAND)
     7255                lineSizer = wx.BoxSizer(wx.HORIZONTAL)           
    72227256                dispVal = G2G.ValidatedTxtCtrl(ISODIST,modeDisp,idsp,xmin=-2.,xmax=2.,size=(75,20),OnLeave=OnDispVal)
    7223                 slideSizer.Add(dispVal,0,WACV)
     7257                lineSizer.Add(dispVal,0,WACV)
    72247258                displ = wx.Slider(ISODIST,style=wx.SL_HORIZONTAL,minValue=-2000,maxValue=2000,value=int(modeDisp[idsp]*1000))
    72257259                displ.Bind(wx.EVT_SLIDER, OnDispl)
    72267260                Indx[displ.GetId()] = [idsp,dispVal]
    72277261                Indx[dispVal.GetId()] = [idsp,displ]
    7228                 slideSizer.Add(displ,1,wx.EXPAND|wx.RIGHT)
    7229                 refDispl = wx.CheckBox(ISODIST,label=' Refine?')
     7262                lineSizer.Add(displ)
     7263                slideSizer.Add(lineSizer)
     7264                refDispl = wx.CheckBox(ISODIST)
    72307265                refDispl.SetValue(item[-2])
    72317266                refDispl.Bind(wx.EVT_CHECKBOX,OnRefDispl)
    72327267                Indx[refDispl.GetId()] = [idsp,item]
    7233                 slideSizer.Add(refDispl,0,WACV)
     7268                slideSizer.Add(refDispl,0,WACV|wx.EXPAND|wx.LEFT,15)
    72347269                idsp += 1
    72357270            slideSizer.SetMinSize(wx.Size(450,10))
    7236             topSizer.Add(slideSizer)
    7237             mainSizer.Add(topSizer)
     7271            mainSizer.Add(slideSizer)
     7272            lineSizer = wx.BoxSizer(wx.HORIZONTAL)           
     7273            reset = wx.Button(ISODIST,label='Reset modes to initial values')
     7274            reset.Bind(wx.EVT_BUTTON,OnReset)
     7275            lineSizer.Add(reset,0,WACV)
     7276            reset = wx.Button(ISODIST,label='Set all modes to zero')
     7277            reset.Bind(wx.EVT_BUTTON,OnSetZero)
     7278            lineSizer.Add(reset,0,wx.ALL,10)
     7279            reset = wx.Button(ISODIST,label='Save displayed mode values')
     7280            reset.Bind(wx.EVT_BUTTON,OnSaveModes)
     7281            lineSizer.Add(reset,0,WACV)
     7282            mainSizer.Add(lineSizer,0,wx.TOP,5)
     7283            mainSizer.Add(wx.StaticText(ISODIST,label=ISOcite),0,wx.TOP,10)
     7284            mainSizer.Layout()
    72387285            SetPhaseWindow(ISODIST,mainSizer,Scroll=Scroll)               
    72397286       
     7287        #### UpdateISODISTORT code starts here
    72407288        Indx = {}     
    72417289        ISOdata = data['ISODISTORT']
     
    72437291        G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISO1,('G2VarList' in ISOdata)
    72447292            or ('G2OccVarList' in ISOdata))
    7245         G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISOMODES,('G2VarList' in ISOdata)
    7246 #           or ('G2OccVarList' in data['ISODISTORT'])
    7247                                                    )
     7293        G2frame.dataWindow.ISODDataEdit.Enable(G2G.wxID_SHOWISOMODES,('G2VarList' in ISOdata))
     7294
    72487295        ISOcite = ''' For use of ISODISTORT, please cite:
    7249   H. T. Stokes, D. M. Hatch, and B. J. Campbell, ISODISTORT, ISOTROPY Software Suite, iso.byu.edu.
    7250   B. J. Campbell, H. T. Stokes, D. E. Tanner, and D. M. Hatch, "ISODISPLACE: An Internet Tool for
    7251   Exploring Structural Distortions." J. Appl. Cryst. 39, 607-614 (2006).
     7296   H. T. Stokes, D. M. Hatch, and B. J. Campbell, ISODISTORT, ISOTROPY Software Suite, iso.byu.edu.
     7297   B. J. Campbell, H. T. Stokes, D. E. Tanner, and D. M. Hatch, "ISODISPLACE: An Internet Tool for
     7298   Exploring Structural Distortions." J. Appl. Cryst. 39, 607-614 (2006).
    72527299  '''
    72537300        if ISODIST.GetSizer():
     
    1412914176        return
    1413014177       
    14131     # UpdatePhaseData execution starts here
     14178    #### UpdatePhaseData execution starts here
    1413214179#patch
    1413314180    if 'RBModels' not in data:
Note: See TracChangeset for help on using the changeset viewer.