Changeset 2163 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Mar 7, 2016 3:03:10 PM (8 years ago)
Author:
vondreele
Message:

plotting of stacking layers, some stacking GUI changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r2162 r2163  
    423423                            if 'Layers' not in data:
    424424                                data['Layers'] = {'Laue':'-1','Cell':[False,1.,1.,1.,90.,90.,90,1.],
    425                                     'Width':[[10.,10.],[False,False]],'Toler':0.01,
     425                                    'Width':[[10.,10.],[False,False]],'Toler':0.01,'AtInfo':{},
    426426                                    'Layers':[],'Stacking':[],'Transitions':[]}
    427427                            G2frame.layerData = wx.ScrolledWindow(G2frame.dataDisplay)
     
    23972397        transTypes = [wg.GRID_VALUE_FLOAT+':10,3',]+3*[wg.GRID_VALUE_FLOAT+':10,5',]+ \
    23982398            [wg.GRID_VALUE_CHOICE+": ,P,PX,PY,PZ,PXY,PXZ,PYZ,PXYZ,X,Y,Z,XY,XZ,YZ,XYZ",wg.GRID_VALUE_BOOL,]
    2399            
     2399        plotDefaults = {'oldxy':[0.,0.],'Quaternion':[0.,0.,0.,1.],'cameraPos':30.,'viewDir':[0,0,1],}
     2400
    24002401        def OnLaue(event):
    24012402            Obj = event.GetEventObject()
     
    25102511            widthSizer = wx.BoxSizer(wx.HORIZONTAL)
    25112512            for i in range(2):
    2512                 widthSizer.Add(wx.StaticText(layerData,label=' layer width(%s): '%(Labels[i])),0,WACV)
     2513                widthSizer.Add(wx.StaticText(layerData,label=' layer width(%s) \xb5m: '%(Labels[i])),0,WACV)
    25132514                widthVal = wx.TextCtrl(layerData,value='%.3f'%(widths[i]),style=wx.TE_PROCESS_ENTER)
    25142515                widthVal.Bind(wx.EVT_TEXT_ENTER,OnWidthChange)       
     
    25252526        def OnNewLayer(event):
    25262527            data['Layers']['Layers'].append({'Name':'Unk','SameAs':'','Symm':'None','Atoms':[]})
     2528            Trans = data['Layers']['Transitions']
     2529            if len(Trans):
     2530                Trans.append([[0.,0.,0.,0.,''] for trans in Trans])
     2531                for trans in Trans:
     2532                    trans.append([0.,0.,0.,0.,''])
     2533            else:
     2534                Trans = [[1.,0.,0.,0.,''],]
    25272535            #modify transition probability matrix as well - add new row/column
    25282536            UpdateLayerData()
     
    25502558                    PE = G2elemGUI.PickElement(G2frame)
    25512559                    if PE.ShowModal() == wx.ID_OK:
    2552                         if PE.Elem != 'None':                       
    2553                             Layer['Atoms'][r][c] = PE.Elem.strip()
     2560                        if PE.Elem != 'None':
     2561                            atType =                  PE.Elem.strip()       
     2562                            Layer['Atoms'][r][c] = atType
    25542563                            name = Layer['Atoms'][r][c]
    25552564                            if len(name) in [2,4]:
     
    25572566                            else:
    25582567                                Layer['Atoms'][r][c-1] = name[:1]+'%d'%(r+1)
     2568                            if atType not in data['Layers']['AtInfo']:
     2569                                data['Layers']['AtInfo'][atType] = G2elem.GetAtomInfo(atType)
    25592570                    PE.Destroy()
    25602571                    UpdateLayerData()
     
    25642575            def OnDrawLayer(event):
    25652576                drawLayer.SetValue(False)
    2566                 pass
     2577                G2plt.PlotLayers(G2frame,Layers,[il,],plotDefaults)
    25672578               
    25682579            def OnSameAs(event):
     
    26282639                if Xi >= 0 and c == 5:   #plot column
    26292640                    Obj.SetCellValue(Xi,5,'')
    2630                     print 'plot %s - %s'%(Names[Yi],Names[Xi])
     2641                    G2plt.PlotLayers(G2frame,Layers,[Yi,Xi,],plotDefaults)
    26312642           
    26322643            transSizer = wx.BoxSizer(wx.VERTICAL)
     
    26592670            return transSizer
    26602671           
     2672        def PlotSizer():
     2673           
     2674            def OnPlotSeq(event):
     2675                vals = plotSeq.GetValue().split()
     2676                try:
     2677                    vals = [int(val)-1 for val in vals]
     2678                except ValueError:
     2679                    plotSeq.SetValue('Error in string '+vals)
     2680                plotSeq.SetValue('')
     2681                G2plt.PlotLayers(G2frame,Layers,vals,plotDefaults)
     2682           
     2683            Names = [' %s: %d,'%(layer['Name'],iL+1) for iL,layer in enumerate(Layers['Layers'])]
     2684            plotSizer = wx.BoxSizer(wx.VERTICAL)
     2685            Str = ' Using sequence nos. from:'
     2686            for name in Names:
     2687                Str += name
     2688            plotSizer.Add(wx.StaticText(layerData,label=Str[:-1]),0,WACV)
     2689            lineSizer = wx.BoxSizer(wx.HORIZONTAL)
     2690            lineSizer.Add(wx.StaticText(layerData,label=' Enter sequence of layers to plot:'),0,WACV)
     2691            plotSeq = wx.TextCtrl(layerData,value = '',style=wx.TE_PROCESS_ENTER)
     2692            plotSeq.Bind(wx.EVT_TEXT_ENTER,OnPlotSeq)       
     2693            plotSeq.Bind(wx.EVT_KILL_FOCUS,OnPlotSeq)
     2694            lineSizer.Add(plotSeq,0,WACV)
     2695            plotSizer.Add(lineSizer,0,WACV)
     2696            return plotSizer
     2697           
    26612698        def StackSizer():
    26622699           
     
    26782715            def OnSeqType(event):
    26792716                Layers['Stacking'][1] = seqType.GetValue()
     2717               
     2718            def OnStackList(event):
     2719                stack = stackList.GetValue()
     2720                stack = stack.replace('\n',' ').strip().strip('\n')
     2721                nstar = stack.count('*')
     2722                if nstar:
     2723                    try:
     2724                        newstack = ''
     2725                        Istar = 0
     2726                        for star in range(nstar):
     2727                            Istar = stack.index('*',Istar+1)
     2728                            iB = stack[:Istar].rfind(' ')
     2729                            if iB == -1:
     2730                                mult = int(stack[:Istar])
     2731                            else:
     2732                                mult = int(stack[iB:Istar])
     2733                            pattern = stack[Istar+2:stack.index(')',Istar)]+' '
     2734                            newstack += mult*pattern
     2735                        stack = newstack
     2736                    except ValueError:
     2737                        stack += ' Error in string'
     2738                Layers['Stacking'][2] = stack
     2739                stackList.SetValue(stack)
    26802740           
    26812741            stackChoice = ['recursive','explicit',]
     
    27082768            stackSizer.Add(topLine,0,WACV)
    27092769            if Layers['Stacking'][1] == 'list':
    2710                 stackSizer.Add(wx.StaticText(layerData,label=' Explicit layer sequence;'),0,WACV)
    2711                
     2770                Names = [' %s: %d,'%(layer['Name'],iL+1) for iL,layer in enumerate(Layers['Layers'])]
     2771                stackSizer.Add(wx.StaticText(layerData,label=' Explicit layer sequence; enter space delimited list of numbers:'),0,WACV)
     2772                Str = ' Use sequence nos. from:'
     2773                for name in Names:
     2774                    Str += name
     2775                stackSizer.Add(wx.StaticText(layerData,label=Str[:-1]+' Repeat sequences can be used: e.g. 6*(1 2) '),0,WACV)
     2776                stackSizer.Add(wx.StaticText(layerData,label=' Zero probability sequences not allowed'),0,WACV)   
     2777                stackList = wx.TextCtrl(layerData,value=Layers['Stacking'][2],size=(600,-1),
     2778                    style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
     2779                stackList.SetValue(Layers['Stacking'][2])
     2780                stackList.Bind(wx.EVT_TEXT_ENTER,OnStackList)       
     2781                stackList.Bind(wx.EVT_KILL_FOCUS,OnStackList)
     2782                stackSizer.Add(stackList,0,wx.ALL|wx.EXPAND|WACV,8)
    27122783            return stackSizer
    27132784           
    2714         generalData = data['General']
    27152785        Layers = data['Layers']
    27162786        layerNames = []
     
    27192789        G2frame.dataFrame.SetStatusText('')
    27202790        layerData = G2frame.layerData
    2721         SGData = generalData['SGData']
    27222791        if layerData.GetSizer():
    27232792            layerData.GetSizer().Clear(True)
     
    27542823        for il,layer in enumerate(Layers['Layers']):
    27552824            topSizer.Add(LayerSizer(il,layer))
     2825        G2G.HorizontalLine(topSizer,layerData)
    27562826        mainSizer.Add(topSizer)
     2827        bottomSizer.Add(TransSizer())
    27572828        G2G.HorizontalLine(bottomSizer,layerData)
    2758         bottomSizer.Add(TransSizer())
     2829        bottomSizer.Add(PlotSizer(),0,WACV)
    27592830        G2G.HorizontalLine(bottomSizer,layerData)
    27602831        bottomSizer.Add(StackSizer())
     
    69036974        # Stacking faults
    69046975        if data['General']['Type'] == 'faulted':
    6905             print 'set bind'
    69066976            FillSelectPageMenu(TabSelectionIdDict, G2frame.dataFrame.LayerData)
    69076977            G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadDIFFaX, id=G2gd.wxID_LOADDIFFAX)
Note: See TracChangeset for help on using the changeset viewer.