Ignore:
Timestamp:
Jun 9, 2015 4:02:06 PM (8 years ago)
Author:
vondreele
Message:

remove some unused imports
add merohedral/pseudomerohedral Twin Laws to G2ddataGUI and G2strIO (not in G2strmath yet).
allow ReImport? atoms to fill otherwise empty Atom List
clarify HKL importers as Shelx HKL 4 & HKL 5 files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIddataGUI.py

    r1878 r1884  
    1818'''
    1919import wx
    20 import math
    21 import copy
    22 import time
    23 import sys
    2420import GSASIIpath
    2521GSASIIpath.SetVersionNumber("$Revision$")
     
    781777        return flackSizer
    782778       
     779    def twinSizer():
     780       
     781        def OnAddTwin(event):
     782            twinMat = np.array([[1,0,0],[0,1,0],[0,0,1]])
     783            twinVal = [1.0,False]
     784            UseList[G2frame.hist]['Twins'].append([twinMat,twinVal])
     785            addtwin.SetValue(False)
     786            wx.CallLater(100,RepaintHistogramInfo)
     787           
     788        def OnMat(event):
     789            Obj = event.GetEventObject()
     790            it,im = Indx[Obj.GetId()]
     791            newMat = Obj.GetValue().split()
     792            try:
     793                uvw = [int(newMat[i]) for i in range(3)]
     794            except ValueError:
     795                uvw = UseList[G2frame.hist]['Twins'][it][0][im]
     796            UseList[G2frame.hist]['Twins'][it][0][im] = uvw
     797            Obj.SetValue('%d %d %d'%(uvw[0],uvw[1],uvw[2]))
     798           
     799        def OnTwinVal(event):
     800            Obj = event.GetEventObject()
     801            it = Indx[Obj.GetId()]
     802            try:
     803                val = float(Obj.GetValue())
     804                if 0. > val > 1.:\
     805                    raise ValueError
     806            except ValueError:
     807                val = UseList[G2frame.hist]['Twins'][it][1][0]
     808            UseList[G2frame.hist]['Twins'][it][1][0] = val
     809            Obj.SetValue('%.3f'%(val))
     810           
     811        def OnTwinRef(event):
     812            Obj = event.GetEventObject()
     813            it = Indx[Obj.GetId()]
     814            UseList[G2frame.hist]['Twins'][it][1][1] = Obj.GetValue()
     815                       
     816        def OnTwinDel(event):
     817            Obj = event.GetEventObject()
     818            it = Indx[Obj.GetId()]
     819            del UseList[G2frame.hist]['Twins'][it]
     820            wx.CallLater(100,RepaintHistogramInfo)           
     821           
     822        twinsizer = wx.BoxSizer(wx.VERTICAL)
     823        topsizer = wx.BoxSizer(wx.HORIZONTAL)         
     824        topsizer.Add(wx.StaticText(DData,wx.ID_ANY,' Merohedral/pseudomerohedral twins: '),0,WACV)
     825        addtwin = wx.CheckBox(DData,wx.ID_ANY,label=' Add Twin Law')
     826        addtwin.Bind(wx.EVT_CHECKBOX, OnAddTwin)
     827        topsizer.Add(addtwin,0,WACV)
     828        twinsizer.Add(topsizer)
     829        Indx = {}
     830        for it,Twin in enumerate(UseList[G2frame.hist]['Twins']):
     831            twinMat,twinVal = Twin
     832            matSizer = wx.BoxSizer(wx.HORIZONTAL)
     833            matSizer.Add(wx.StaticText(DData,-1,' Twin Law: '),0,WACV)
     834            Style = wx.TE_READONLY
     835            if it:
     836                Style = wx.TE_PROCESS_ENTER
     837            for im,Mat in enumerate(twinMat):
     838                mat = wx.TextCtrl(DData,wx.ID_ANY,'%3d %3d %3d'%(Mat[0],Mat[1],Mat[2]),
     839                    style=Style)
     840                if it:
     841                    Indx[mat.GetId()] = [it,im]
     842                    mat.Bind(wx.EVT_TEXT_ENTER,OnMat)
     843                    mat.Bind(wx.EVT_KILL_FOCUS,OnMat)
     844                matSizer.Add(mat,0,WACV|wx.LEFT,5)
     845            twinsizer.Add(matSizer,0,WACV|wx.LEFT,5)
     846            valSizer = wx.BoxSizer(wx.HORIZONTAL)
     847            valSizer.Add(wx.StaticText(DData,-1,label=' Twin element fraction:'),0,WACV)
     848            twinval = wx.TextCtrl(DData,-1,'%.3f'%(Twin[1][0]),style=wx.TE_PROCESS_ENTER)
     849            Indx[twinval.GetId()] = it
     850            twinval.Bind(wx.EVT_TEXT_ENTER,OnTwinVal)
     851            twinval.Bind(wx.EVT_KILL_FOCUS,OnTwinVal)
     852            valSizer.Add(twinval,0,WACV)
     853            if it:
     854                twinref = wx.CheckBox(DData,wx.ID_ANY,label=' Refine?')
     855                Indx[twinref.GetId()] = it
     856                twinref.SetValue(Twin[1][1])
     857                twinref.Bind(wx.EVT_CHECKBOX, OnTwinRef)
     858                valSizer.Add(twinref,0,WACV)
     859                twindel = wx.CheckBox(DData,wx.ID_ANY,label=' Delete?')
     860                Indx[twindel.GetId()] = it
     861                twindel.Bind(wx.EVT_CHECKBOX, OnTwinDel)
     862                valSizer.Add(twindel,0,WACV)
     863            twinsizer.Add(valSizer,0,WACV|wx.LEFT,5)
     864        return twinsizer
     865       
    783866    def OnSelect(event):
    784867        G2frame.hist = keyList[select.GetSelection()]
     
    9381021            if 'Flack' not in UseList[G2frame.hist]:
    9391022                UseList[G2frame.hist]['Flack'] = [0.0,False]
     1023            if 'Twins' not in UseList[G2frame.hist]:
     1024                UseList[G2frame.hist]['Twins'] = [[np.array([[1,0,0],[0,1,0],[0,0,1]]),[1.0,False]],]
    9401025#end patch
    9411026            bottomSizer.Add(ExtSizer('HKLF'),0,WACV|wx.BOTTOM,5)
     
    9431028            if not SGData['SGInv']:        #not operational yet - no test data
    9441029                bottomSizer.Add(FlackSizer(),0,WACV|wx.BOTTOM,5)
     1030            bottomSizer.Add(twinSizer(),0,WACV|wx.BOTTOM,5)
    9451031        return bottomSizer
    9461032               
Note: See TracChangeset for help on using the changeset viewer.