Ignore:
Timestamp:
Jul 3, 2017 4:12:45 PM (5 years ago)
Author:
toby
Message:

partial reorg

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branch/2frame/GSASIIphsGUI.py

    r2895 r2899  
    6767atan2d = lambda x,y: 180.*np.arctan2(y,x)/np.pi
    6868
     69################################################################################
     70#### phase class definitions
     71################################################################################
     72class SGMagSpinBox(wx.Dialog):
     73    ''' Special version of MessageBox that displays magnetic spin text
     74    '''
     75    def __init__(self,parent,title,text,table,names,spins,):
     76        wx.Dialog.__init__(self,parent,wx.ID_ANY,title,pos=wx.DefaultPosition,
     77            style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,size=wx.Size(420,350))
     78        self.text = text
     79        self.table = table
     80        self.names = names
     81        self.spins = spins
     82        self.panel = wxscroll.ScrolledPanel(self)
     83        mainSizer = wx.BoxSizer(wx.VERTICAL)
     84        mainSizer.Add((0,10))
     85        first = text[0].split(':')[-1].strip()
     86        cents = [0,]
     87        if 'P' != first[0]:
     88            cents = text[-1].split(';')
     89        for line in text:
     90            mainSizer.Add(wx.StaticText(self.panel,label='     %s     '%(line)),0,WACV)
     91        ncol = self.table[0].count(',')+2
     92        for ic,cent in enumerate(cents):
     93            if cent:
     94                cent = cent.strip(' (').strip(')+\n')
     95                mainSizer.Add(wx.StaticText(self.panel,label=' for (%s)+'%(cent)),0,WACV)
     96            tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
     97            for j,item in enumerate(self.table):
     98                flds = item.split(')')[1]
     99                tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV|wx.ALIGN_LEFT)           
     100                flds = flds.replace(' ','').split(',')
     101                for i,fld in enumerate(flds):
     102                    if i < ncol-1:
     103                        text = wx.StaticText(self.panel,label='%s, '%(fld))
     104                        tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     105                    else:
     106                        text = wx.StaticText(self.panel,label='%s '%(fld))
     107                        tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     108                text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j]))
     109                if self.spins[j+ic*len(self.table)] < 0:
     110                    text.SetForegroundColour('Red')
     111                tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     112                if not j%2:
     113                    tableSizer.Add((20,0))
     114            mainSizer.Add(tableSizer,0,wx.ALIGN_CENTER)
     115           
     116        btnsizer = wx.StdDialogButtonSizer()
     117        OKbtn = wx.Button(self.panel, wx.ID_OK)
     118        OKbtn.SetDefault()
     119        btnsizer.AddButton(OKbtn)
     120        btnsizer.Realize()
     121        mainSizer.Add((0,10))
     122        mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER)
     123        self.panel.SetSizer(mainSizer)
     124        size = np.array(self.GetSize())
     125        self.panel.SetupScrolling()
     126        size = [size[0]-5,size[1]-20]       #this fiddling is needed for older wx!
     127        self.panel.SetSize(size)
     128        self.panel.SetAutoLayout(1)
     129
     130    def Show(self):
     131        '''Use this method after creating the dialog to post it
     132        '''
     133        self.ShowModal()
     134        return
     135
     136################################################################################
     137class SymOpDialog(wx.Dialog):
     138    '''Class to select a symmetry operator
     139    '''
     140    def __init__(self,parent,SGData,New=True,ForceUnit=False):
     141        wx.Dialog.__init__(self,parent,-1,'Select symmetry operator',
     142            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     143        panel = wx.Panel(self)
     144        self.SGData = SGData
     145        self.New = New
     146        self.Force = ForceUnit
     147        self.OpSelected = [0,0,0,[0,0,0],False,False]
     148        mainSizer = wx.BoxSizer(wx.VERTICAL)
     149        if ForceUnit:
     150            choice = ['No','Yes']
     151            self.force = wx.RadioBox(panel,-1,'Force to unit cell?',choices=choice)
     152            self.force.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     153            mainSizer.Add(self.force,0,WACV|wx.TOP,5)
     154#        if SGData['SGInv']:
     155        choice = ['No','Yes']
     156        self.inv = wx.RadioBox(panel,-1,'Choose inversion?',choices=choice)
     157        self.inv.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     158        mainSizer.Add(self.inv,0,WACV)
     159        if SGData['SGLatt'] != 'P':
     160            LattOp = G2spc.Latt2text(SGData['SGLatt']).split(';')
     161            self.latt = wx.RadioBox(panel,-1,'Choose cell centering?',choices=LattOp)
     162            self.latt.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     163            mainSizer.Add(self.latt,0,WACV)
     164        if SGData['SGLaue'] in ['-1','2/m','mmm','4/m','4/mmm']:
     165            Ncol = 2
     166        else:
     167            Ncol = 3
     168        OpList = []
     169        for Opr in SGData['SGOps']:
     170            OpList.append(G2spc.MT2text(Opr))
     171        self.oprs = wx.RadioBox(panel,-1,'Choose space group operator?',choices=OpList,
     172            majorDimension=Ncol)
     173        self.oprs.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     174        mainSizer.Add(self.oprs,0,WACV|wx.BOTTOM,5)
     175        mainSizer.Add(wx.StaticText(panel,-1,"   Choose unit cell?"),0,WACV)
     176        cellSizer = wx.BoxSizer(wx.HORIZONTAL)
     177        cellName = ['X','Y','Z']
     178        self.cell = []
     179        for i in range(3):
     180            self.cell.append(wx.SpinCtrl(panel,-1,cellName[i],size=wx.Size(50,20)))
     181            self.cell[-1].SetRange(-3,3)
     182            self.cell[-1].SetValue(0)
     183            self.cell[-1].Bind(wx.EVT_SPINCTRL, self.OnOpSelect)
     184            cellSizer.Add(self.cell[-1],0,WACV)
     185        mainSizer.Add(cellSizer,0,WACV|wx.BOTTOM,5)
     186        if self.New:
     187            choice = ['No','Yes']
     188            self.new = wx.RadioBox(panel,-1,'Generate new positions?',choices=choice)
     189            self.new.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     190            mainSizer.Add(self.new,0,WACV)
     191
     192        OkBtn = wx.Button(panel,-1,"Ok")
     193        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     194        cancelBtn = wx.Button(panel,-1,"Cancel")
     195        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     196        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     197        btnSizer.Add((20,20),1)
     198        btnSizer.Add(OkBtn)
     199        btnSizer.Add((20,20),1)
     200        btnSizer.Add(cancelBtn)
     201        btnSizer.Add((20,20),1)
     202
     203        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     204        panel.SetSizer(mainSizer)
     205        panel.Fit()
     206        self.Fit()
     207
     208    def OnOpSelect(self,event):
     209#        if self.SGData['SGInv']:
     210        self.OpSelected[0] = self.inv.GetSelection()
     211        if self.SGData['SGLatt'] != 'P':
     212            self.OpSelected[1] = self.latt.GetSelection()
     213        self.OpSelected[2] = self.oprs.GetSelection()
     214        for i in range(3):
     215            self.OpSelected[3][i] = float(self.cell[i].GetValue())
     216        if self.New:
     217            self.OpSelected[4] = self.new.GetSelection()
     218        if self.Force:
     219            self.OpSelected[5] = self.force.GetSelection()
     220
     221    def GetSelection(self):
     222        return self.OpSelected
     223
     224    def OnOk(self,event):
     225        parent = self.GetParent()
     226        parent.Raise()
     227        self.EndModal(wx.ID_OK)
     228
     229    def OnCancel(self,event):
     230        parent = self.GetParent()
     231        parent.Raise()
     232        self.EndModal(wx.ID_CANCEL)
     233################################################################################
     234class SphereEnclosure(wx.Dialog):
     235    ''' Add atoms within sphere of enclosure to drawing
     236   
     237    :param wx.Frame parent: reference to parent frame (or None)
     238    :param general: general data (includes drawing data)
     239    :param atoms: drawing atoms data
     240    :param indx: list of selected atoms (may be empty)
     241   
     242    '''
     243    def __init__(self,parent,general,drawing,indx):
     244        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation',
     245            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     246        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     247        self.General = general
     248        self.Drawing = drawing
     249        self.indx = indx
     250        self.Sphere = [1.0,]
     251        self.centers = []
     252        self.atomTypes = [[item,True] for item in self.General['AtomTypes']]
     253       
     254        self.Draw()
     255       
     256    def Draw(self):
     257       
     258        def OnAtomType(event):
     259            Obj = event.GetEventObject()
     260            id = Ind[Obj.GetId()]
     261            self.atomTypes[id][1] = Obj.GetValue()
     262       
     263        self.panel.Destroy()
     264        self.panel = wx.Panel(self)
     265        mainSizer = wx.BoxSizer(wx.VERTICAL)
     266        mainSizer.Add(wx.StaticText(self.panel,label=' Sphere of enclosure controls:'),0,WACV)
     267        topSizer = wx.BoxSizer(wx.HORIZONTAL)
     268        atoms = []
     269        if len(self.indx):
     270            topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at atoms: '),0,WACV)
     271            cx,ct,cs = self.Drawing['atomPtrs'][:3]
     272            for id in self.indx:
     273                atom = self.Drawing['Atoms'][id]
     274                self.centers.append(atom[cx:cx+3])
     275                atoms.append('%s(%s)'%(atom[ct-1],atom[cs-1]))
     276            topSizer.Add(wx.ComboBox(self.panel,choices=atoms,value=atoms[0],
     277                style=wx.CB_READONLY|wx.CB_DROPDOWN),0,WACV)
     278        else:
     279            topSizer.Add(wx.StaticText(self.panel,label=' Sphere centered at drawing view point'),0,WACV)
     280            self.centers.append(self.Drawing['viewPoint'][0])
     281        mainSizer.Add(topSizer,0,WACV)
     282        sphereSizer = wx.BoxSizer(wx.HORIZONTAL)
     283        sphereSizer.Add(wx.StaticText(self.panel,label=' Sphere radius: '),0,WACV)
     284        radius = G2G.ValidatedTxtCtrl(self.panel,self.Sphere,0,nDig=(10,3),size=(65,25))
     285        sphereSizer.Add(radius,0,WACV)
     286        mainSizer.Add(sphereSizer,0,WACV)
     287        mainSizer.Add(wx.StaticText(self.panel,label=' Target selected atoms:'),0,WACV)
     288        atSizer = wx.BoxSizer(wx.HORIZONTAL)
     289        Ind = {}
     290        for i,item in enumerate(self.atomTypes):
     291            atm = wx.CheckBox(self.panel,label=item[0])
     292            atm.SetValue(item[1])
     293            atm.Bind(wx.EVT_CHECKBOX, OnAtomType)
     294            Ind[atm.GetId()] = i
     295            atSizer.Add(atm,0,WACV)
     296        mainSizer.Add(atSizer,0,WACV)
     297       
     298        OkBtn = wx.Button(self.panel,-1,"Ok")
     299        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     300        cancelBtn = wx.Button(self.panel,-1,"Cancel")
     301        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     302        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     303        btnSizer.Add((20,20),1)
     304        btnSizer.Add(OkBtn)
     305        btnSizer.Add((20,20),1)
     306        btnSizer.Add(cancelBtn)
     307        btnSizer.Add((20,20),1)
     308       
     309        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     310        self.panel.SetSizer(mainSizer)
     311        self.panel.Fit()
     312        self.Fit()
     313       
     314    def GetSelection(self):
     315        used = []
     316        for atm in self.atomTypes:
     317            if atm[1]:
     318                used.append(str(atm[0]))
     319        return self.centers,self.Sphere[0],used
     320
     321    def OnOk(self,event):
     322        parent = self.GetParent()
     323        parent.Raise()
     324        self.EndModal(wx.ID_OK)
     325
     326    def OnCancel(self,event):
     327        parent = self.GetParent()
     328        parent.Raise()
     329        self.EndModal(wx.ID_CANCEL)
     330
     331################################################################################
     332class TransformDialog(wx.Dialog):
     333    ''' Phase transformation
     334   
     335    :param wx.Frame parent: reference to parent frame (or None)
     336    :param phase: phase data
     337   
     338    #NB: commonNames & commonTrans defined at top of this file
     339    '''
     340    def __init__(self,parent,phase):
     341        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation',
     342            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     343        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     344        self.Phase = copy.deepcopy(phase)   #will be a new phase!
     345#        self.Super = phase['General']['Super']
     346#        if self.Super:
     347#            self.Trans = np.eye(4)
     348#            self.Vec = np.zeros(4)
     349#        else:
     350        self.Trans = np.eye(3)
     351        self.Vec = np.zeros(3)
     352        self.oldSpGrp = phase['General']['SGData']['SpGrp']
     353        self.oldSGdata = phase['General']['SGData']
     354        self.newSpGrp = self.Phase['General']['SGData']['SpGrp']
     355        self.oldCell = phase['General']['Cell'][1:8]
     356        self.newCell = self.Phase['General']['Cell'][1:8]
     357        self.Common = 'abc'
     358        self.ifMag = False
     359        self.ifConstr = True
     360        self.Draw()
     361
     362    def Draw(self):
     363               
     364        def OnCommon(event):
     365            Obj = event.GetEventObject()
     366            self.Common = Obj.GetValue()
     367            if '*' in self.Common:
     368                A,B = G2lat.cell2AB(self.oldCell[:6])
     369                self.newCell[2:5] = [A[2,2],90.,90.]
     370                a,b = G2lat.cell2AB(self.newCell[:6])
     371                self.Trans = np.inner(a.T,B)    #correct!
     372                self.ifConstr = False
     373                self.newSpGrp = 'P 1'
     374                SGErr,SGData = G2spc.SpcGroup(self.newSpGrp)
     375                self.Phase['General']['SGData'] = SGData
     376            else:
     377                if self.Common == commonNames[-1]:      #change setting
     378                    self.Vec = G2spc.spg2origins[self.oldSpGrp]
     379                    self.newSpGrp = self.oldSpGrp
     380                else:
     381                    self.Trans = commonTrans[self.Common]
     382                    if 'R' == self.Common[-1]:
     383                        self.newSpGrp += ' r'
     384                        SGErr,SGData = G2spc.SpcGroup(self.newSpGrp)
     385                        self.Phase['General']['SGData'] = SGData
     386                        SGTxt.SetValue(self.newSpGrp)
     387            OnTest(event)
     388       
     389        def OnSpaceGroup(event):
     390            event.Skip()
     391            Flds = SGTxt.GetValue().split()
     392            Flds[0] = Flds[0].upper()
     393            #get rid of extra spaces between fields first
     394            for fld in Flds: fld = fld.strip()
     395            SpcGp = ' '.join(Flds)
     396            if SpcGp == self.newSpGrp: #didn't change it!
     397                return
     398            # try a lookup on the user-supplied name
     399            SpGrpNorm = G2spc.StandardizeSpcName(SpcGp)
     400            if SpGrpNorm:
     401                SGErr,SGData = G2spc.SpcGroup(SpGrpNorm)
     402            else:
     403                SGErr,SGData = G2spc.SpcGroup(SpcGp)
     404            if SGErr:
     405                text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous']
     406                SGTxt.SetValue(self.newSpGrp)
     407                msg = 'Space Group Error'
     408                Style = wx.ICON_EXCLAMATION
     409                Text = '\n'.join(text)
     410                wx.MessageBox(Text,caption=msg,style=Style)
     411            else:
     412                text,table = G2spc.SGPrint(SGData)
     413                self.Phase['General']['SGData'] = SGData
     414                self.newSpGrp = SpcGp
     415                SGTxt.SetValue(self.Phase['General']['SGData']['SpGrp'])
     416                msg = 'Space Group Information'
     417                G2G.SGMessageBox(self.panel,msg,text,table).Show()
     418            if self.Phase['General']['Type'] == 'magnetic':
     419                Nops = len(SGData['SGOps'])*len(SGData['SGCen'])
     420                if SGData['SGInv']:
     421                    Nops *= 2
     422                SGData['SpnFlp'] = Nops*[1,]
     423#            if self.Phase['General']['Type'] in ['modulated',]:
     424#                self.Phase['General']['SuperSg'] = SetDefaultSSsymbol()
     425#                self.Phase['General']['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1]
     426
     427        def OnTest(event):
     428            self.newCell = G2lat.TransformCell(self.oldCell[:6],self.Trans)
     429            wx.CallAfter(self.Draw)
     430           
     431        def OnMag(event):
     432            self.ifMag = mag.GetValue()
     433           
     434        def OnConstr(event):
     435            self.ifConstr = constr.GetValue()
     436
     437        self.panel.Destroy()
     438        self.panel = wx.Panel(self)
     439        mainSizer = wx.BoxSizer(wx.VERTICAL)
     440        MatSizer = wx.BoxSizer(wx.HORIZONTAL)
     441        transSizer = wx.BoxSizer(wx.VERTICAL)
     442        transSizer.Add(wx.StaticText(self.panel,label=" XYZ Transformation matrix & vector: M*X+V = X'"))
     443#        if self.Super:
     444#            Trmat = wx.FlexGridSizer(4,4,0,0)
     445#        else:
     446        commonSizer = wx.BoxSizer(wx.HORIZONTAL)
     447        commonSizer.Add(wx.StaticText(self.panel,label=' Common transformations: '),0,WACV)
     448        if self.oldSpGrp not in G2spc.spg2origins:
     449            common = wx.ComboBox(self.panel,value=self.Common,choices=commonNames[:-1],
     450                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     451        else:
     452            common = wx.ComboBox(self.panel,value=self.Common,choices=commonNames,
     453                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     454        common.Bind(wx.EVT_COMBOBOX,OnCommon)
     455        commonSizer.Add(common,0,WACV)
     456        transSizer.Add(commonSizer)
     457        Trmat = wx.FlexGridSizer(3,5,0,0)
     458        for iy,line in enumerate(self.Trans):
     459            for ix,val in enumerate(line):
     460                item = G2G.ValidatedTxtCtrl(self.panel,self.Trans[iy],ix,nDig=(10,3),size=(65,25))
     461                Trmat.Add(item)
     462            Trmat.Add((25,0),0)
     463            vec = G2G.ValidatedTxtCtrl(self.panel,self.Vec,iy,nDig=(10,3),size=(65,25))
     464            Trmat.Add(vec)
     465        transSizer.Add(Trmat)
     466        MatSizer.Add((10,0),0)
     467        MatSizer.Add(transSizer)
     468        mainSizer.Add(MatSizer)
     469        mainSizer.Add(wx.StaticText(self.panel,label=' Old lattice parameters:'),0,WACV)
     470        mainSizer.Add(wx.StaticText(self.panel,label=
     471            ' a = %.5f       b = %.5f      c = %.5f'%(self.oldCell[0],self.oldCell[1],self.oldCell[2])),0,WACV)
     472        mainSizer.Add(wx.StaticText(self.panel,label=' alpha = %.3f beta = %.3f gamma = %.3f'%
     473            (self.oldCell[3],self.oldCell[4],self.oldCell[5])),0,WACV)
     474        mainSizer.Add(wx.StaticText(self.panel,label=' volume = %.3f'%(self.oldCell[6])),0,WACV)
     475        mainSizer.Add(wx.StaticText(self.panel,label=' New lattice parameters:'),0,WACV)
     476        mainSizer.Add(wx.StaticText(self.panel,label=
     477            ' a = %.5f       b = %.5f      c = %.5f'%(self.newCell[0],self.newCell[1],self.newCell[2])),0,WACV)
     478        mainSizer.Add(wx.StaticText(self.panel,label=' alpha = %.3f beta = %.3f gamma = %.3f'%
     479            (self.newCell[3],self.newCell[4],self.newCell[5])),0,WACV)
     480        mainSizer.Add(wx.StaticText(self.panel,label=' volume = %.3f'%(self.newCell[6])),0,WACV)
     481        sgSizer = wx.BoxSizer(wx.HORIZONTAL)
     482        sgSizer.Add(wx.StaticText(self.panel,label='  Space group: '),0,WACV)
     483        SGTxt = wx.TextCtrl(self.panel,value=self.newSpGrp,style=wx.TE_PROCESS_ENTER)
     484        SGTxt.Bind(wx.EVT_TEXT_ENTER,OnSpaceGroup)
     485        SGTxt.Bind(wx.EVT_KILL_FOCUS,OnSpaceGroup)
     486        sgSizer.Add(SGTxt,0,WACV)
     487        mainSizer.Add(sgSizer,0,WACV)
     488        if 'magnetic' not in self.Phase['General']['Type']:
     489            mag = wx.CheckBox(self.panel,label=' Make new phase magnetic?')
     490            mag.Bind(wx.EVT_CHECKBOX,OnMag)
     491            mainSizer.Add(mag,0,WACV)
     492            mainSizer.Add(wx.StaticText(self.panel, \
     493                label=' NB: Nonmagnetic atoms will be deleted from new phase'),0,WACV)
     494            constr = wx.CheckBox(self.panel,label=' Make constraints between phases?')
     495            mainSizer.Add(wx.StaticText(self.panel, \
     496                label=' Constraints not correct for non-diagonal transforms'),0,WACV)
     497            constr.SetValue(self.ifConstr)
     498            constr.Bind(wx.EVT_CHECKBOX,OnConstr)
     499            mainSizer.Add(constr,0,WACV)
     500
     501        TestBtn = wx.Button(self.panel,-1,"Test")
     502        TestBtn.Bind(wx.EVT_BUTTON, OnTest)
     503        OkBtn = wx.Button(self.panel,-1,"Ok")
     504        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     505        cancelBtn = wx.Button(self.panel,-1,"Cancel")
     506        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     507        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     508        btnSizer.Add((20,20),1)
     509        btnSizer.Add(TestBtn)
     510        btnSizer.Add((20,20),1)
     511        btnSizer.Add(OkBtn)
     512        btnSizer.Add((20,20),1)
     513        btnSizer.Add(cancelBtn)
     514        btnSizer.Add((20,20),1)
     515       
     516        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     517        self.panel.SetSizer(mainSizer)
     518        self.panel.Fit()
     519        self.Fit()
     520       
     521    def GetSelection(self):
     522        if self.ifMag:
     523            self.Phase['General']['Name'] += ' mag'
     524        else:
     525            self.Phase['General']['Name'] += ' %s'%(self.Common)
     526        self.Phase['General']['Cell'][1:] = G2lat.TransformCell(self.oldCell[:6],self.Trans)           
     527        return self.Phase,self.Trans,self.Vec,self.ifMag,self.ifConstr,self.Common
     528
     529    def OnOk(self,event):
     530        parent = self.GetParent()
     531        parent.Raise()
     532        self.EndModal(wx.ID_OK)
     533
     534    def OnCancel(self,event):
     535        parent = self.GetParent()
     536        parent.Raise()
     537        self.EndModal(wx.ID_CANCEL)
     538       
     539################################################################################
     540class UseMagAtomDialog(wx.Dialog):
     541    '''Get user selected magnetic atoms after cell transformation
     542    '''
     543    def __init__(self,parent,Atoms,atCodes):
     544        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Magnetic atom selection',
     545            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     546        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     547        self.Atoms = Atoms
     548        self.atCodes = atCodes
     549        self.Use = len(self.Atoms)*[True,]
     550        self.Draw()
     551       
     552    def Draw(self):
     553       
     554        def OnUseChk(event):
     555            Obj = event.GetEventObject()
     556            iuse = Indx[Obj.GetId()]
     557            self.Use[iuse] = not self.Use[iuse]
     558            Obj.SetValue(self.Use[iuse])
     559       
     560        self.panel.Destroy()
     561        self.panel = wx.Panel(self)
     562        Indx = {}
     563        mainSizer = wx.BoxSizer(wx.VERTICAL)
     564       
     565        mainSizer.Add(wx.StaticText(self.panel,label=' Name, x, y, z:'),0,WACV)
     566        atmSizer = wx.FlexGridSizer(0,2,5,5)
     567        for iuse,[use,atom] in enumerate(zip(self.Use,self.Atoms)):
     568            useChk = wx.CheckBox(self.panel,label='Use?')
     569            Indx[useChk.GetId()] = iuse
     570            useChk.SetValue(use)
     571            useChk.Bind(wx.EVT_CHECKBOX, OnUseChk)
     572            atmSizer.Add(useChk,0,WACV)
     573            text = ' %s %10.5f %10.5f %10.5f'%(atom[0],atom[3],atom[4],atom[5])
     574            atmSizer.Add(wx.StaticText(self.panel,label=text),0,WACV)
     575        mainSizer.Add(atmSizer)
     576       
     577        OkBtn = wx.Button(self.panel,-1,"Ok")
     578        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     579        cancelBtn = wx.Button(self.panel,-1,"Use All")
     580        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     581        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     582        btnSizer.Add((20,20),1)
     583        btnSizer.Add(OkBtn)
     584        btnSizer.Add((20,20),1)
     585        btnSizer.Add(cancelBtn)
     586        btnSizer.Add((20,20),1)
     587       
     588        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     589        self.panel.SetSizer(mainSizer)
     590        self.panel.Fit()
     591        self.Fit()
     592       
     593    def GetSelection(self):
     594        useAtoms = []
     595        useatCodes = []
     596        for use,atom,code in zip(self.Use,self.Atoms,self.atCodes):
     597            if use:
     598                useAtoms.append(atom)
     599                useatCodes.append(code)
     600        return useAtoms,useatCodes
     601
     602    def OnOk(self,event):
     603        parent = self.GetParent()
     604        parent.Raise()
     605        self.EndModal(wx.ID_OK)
     606
     607    def OnCancel(self,event):
     608        parent = self.GetParent()
     609        parent.Raise()
     610        self.EndModal(wx.ID_CANCEL)
     611           
     612               
     613################################################################################
     614class RotationDialog(wx.Dialog):
     615    ''' Get Rotate & translate matrix & vector - currently not used
     616    needs rethinking - possible use to rotate a group of atoms about some
     617    vector/origin + translation
     618   
     619    '''
     620    def __init__(self,parent):
     621        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Atom group rotation/translation',
     622            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     623        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     624        self.Trans = np.eye(3)
     625        self.Vec = np.zeros(3)
     626        self.rotAngle = 0.
     627        self.rotVec = np.array([0.,0.,1.])
     628        self.Expand = ''
     629        self.Draw()
     630
     631    def Draw(self):
     632
     633        def OnExpand(event):
     634            self.Expand = expand.GetValue()
     635           
     636        def OnRotAngle(event):
     637            event.Skip()
     638            self.rotAngle = float(rotangle.GetValue())
     639            rotangle.SetValue('%5.3f'%(self.rotAngle))
     640            Q = G2mth.AVdeg2Q(self.rotAngle,self.rotVec)
     641            self.Trans = G2mth.Q2Mat(Q)
     642            self.Draw()
     643           
     644        def OnRotVec(event):
     645            event.Skip()
     646            vals = rotvec.GetValue()
     647            vals = vals.split()
     648            self.rotVec = np.array([float(val) for val in vals])
     649            rotvec.SetValue('%5.3f %5.3f %5.3f'%(self.rotVec[0],self.rotVec[1],self.rotVec[2]))
     650            Q = G2mth.AVdeg2Q(self.rotAngle,self.rotVec)
     651            self.Trans = G2mth.Q2Mat(Q)
     652            self.Draw()
     653           
     654        self.panel.Destroy()
     655        self.panel = wx.Panel(self)
     656        mainSizer = wx.BoxSizer(wx.VERTICAL)
     657        MatSizer = wx.BoxSizer(wx.HORIZONTAL)
     658        transSizer = wx.BoxSizer(wx.VERTICAL)
     659        transSizer.Add(wx.StaticText(self.panel,label=" XYZ Transformation matrix && vector: "+ \
     660            "\n B*M*A*(X-V)+V = X'\n A,B: Cartesian transformation matrices"))
     661        Trmat = wx.FlexGridSizer(3,5,0,0)
     662        for iy,line in enumerate(self.Trans):
     663            for ix,val in enumerate(line):
     664                item = G2G.ValidatedTxtCtrl(self.panel,self.Trans[iy],ix,nDig=(10,3),size=(65,25))
     665                Trmat.Add(item)
     666            Trmat.Add((25,0),0)
     667            vec = G2G.ValidatedTxtCtrl(self.panel,self.Vec,iy,nDig=(10,3),size=(65,25))
     668            Trmat.Add(vec)
     669        transSizer.Add(Trmat)
     670        MatSizer.Add((10,0),0)
     671        MatSizer.Add(transSizer)
     672        mainSizer.Add(MatSizer)
     673        rotationBox = wx.BoxSizer(wx.HORIZONTAL)
     674        rotationBox.Add(wx.StaticText(self.panel,label=' Rotation angle: '),0,WACV)
     675        rotangle = wx.TextCtrl(self.panel,value='%5.3f'%(self.rotAngle),
     676            size=(50,25),style=wx.TE_PROCESS_ENTER)
     677        rotangle.Bind(wx.EVT_TEXT_ENTER,OnRotAngle)
     678        rotangle.Bind(wx.EVT_KILL_FOCUS,OnRotAngle)
     679        rotationBox.Add(rotangle,0,WACV)
     680        rotationBox.Add(wx.StaticText(self.panel,label=' about vector: '),0,WACV)
     681        rotvec = wx.TextCtrl(self.panel,value='%5.3f %5.3f %5.3f'%(self.rotVec[0],self.rotVec[1],self.rotVec[2]),
     682            size=(100,25),style=wx.TE_PROCESS_ENTER)
     683        rotvec.Bind(wx.EVT_TEXT_ENTER,OnRotVec)
     684        rotvec.Bind(wx.EVT_KILL_FOCUS,OnRotVec)
     685        rotationBox.Add(rotvec,0,WACV)
     686        mainSizer.Add(rotationBox,0,WACV)
     687        expandChoice = ['','xy','xz','yz','xyz']
     688        expandBox = wx.BoxSizer(wx.HORIZONTAL)
     689        expandBox.Add(wx.StaticText(self.panel,label=' Expand -1 to +1 on: '),0,WACV)
     690        expand = wx.ComboBox(self.panel,value=self.Expand,choices=expandChoice,
     691            style=wx.CB_READONLY|wx.CB_DROPDOWN)
     692        expand.Bind(wx.EVT_COMBOBOX,OnExpand)
     693        expandBox.Add(expand,0,WACV)
     694        expandBox.Add(wx.StaticText(self.panel,label=' and find unique atoms '),0,WACV)       
     695        mainSizer.Add(expandBox)
     696               
     697        OkBtn = wx.Button(self.panel,-1,"Ok")
     698        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     699        cancelBtn = wx.Button(self.panel,-1,"Cancel")
     700        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     701        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     702        btnSizer.Add((20,20),1)
     703        btnSizer.Add(OkBtn)
     704        btnSizer.Add((20,20),1)
     705        btnSizer.Add(cancelBtn)
     706        btnSizer.Add((20,20),1)
     707       
     708        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     709        self.panel.SetSizer(mainSizer)
     710        self.panel.Fit()
     711        self.Fit()
     712
     713    def GetSelection(self):
     714        return self.Trans,self.Vec,self.Expand
     715
     716    def OnOk(self,event):
     717        parent = self.GetParent()
     718        parent.Raise()
     719        self.EndModal(wx.ID_OK)
     720
     721    def OnCancel(self,event):
     722        parent = self.GetParent()
     723        parent.Raise()
     724        self.EndModal(wx.ID_CANCEL)   
     725       
     726################################################################################
     727class DIFFaXcontrols(wx.Dialog):
     728    ''' Solicit items needed to prepare DIFFaX control.dif file
     729    '''
     730    def __init__(self,parent,ctrls,parms=None):
     731        wx.Dialog.__init__(self,parent,wx.ID_ANY,'DIFFaX controls',
     732            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     733        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     734        self.ctrls = ctrls
     735        self.calcType = 'powder pattern'
     736        self.plane = 'h0l'
     737        self.planeChoice = ['h0l','0kl','hhl','h-hl',]
     738        self.lmax = '2'
     739        self.lmaxChoice = [str(i+1) for i in range(6)]
     740        self.Parms = parms
     741        self.Parm = None
     742        if self.Parms != None:
     743            self.Parm = self.Parms[0]
     744        self.parmRange = [0.,1.]
     745        self.parmStep = 2
     746        self.Inst = 'Gaussian'
     747        self.Draw()
     748       
     749    def Draw(self):
     750       
     751        def OnCalcType(event):
     752            self.calcType = calcType.GetValue()
     753            wx.CallAfter(self.Draw)
     754           
     755        def OnPlane(event):
     756            self.plane = plane.GetValue()
     757           
     758        def OnMaxL(event):
     759            self.lmax = lmax.GetValue()
     760           
     761        def OnParmSel(event):
     762            self.Parm = parmsel.GetValue()
     763           
     764        def OnNumStep(event):
     765            self.parmStep = int(numStep.GetValue())
     766           
     767        def OnParmRange(event):
     768            event.Skip()
     769            vals = parmrange.GetValue().split()
     770            try:
     771                vals = [float(vals[0]),float(vals[1])]
     772            except ValueError:
     773                vals = self.parmRange
     774            parmrange.SetValue('%.3f %.3f'%(vals[0],vals[1]))
     775            self.parmRange = vals
     776           
     777        def OnInstSel(event):
     778            self.Inst = instsel.GetValue()
     779       
     780        self.panel.Destroy()
     781        self.panel = wx.Panel(self)
     782        mainSizer = wx.BoxSizer(wx.VERTICAL)
     783        mainSizer.Add(wx.StaticText(self.panel,label=' Controls for DIFFaX'),0,WACV)
     784        if self.Parms:
     785            mainSizer.Add(wx.StaticText(self.panel,label=' Sequential powder pattern simulation'),0,WACV)
     786        else:
     787            calcChoice = ['powder pattern','selected area']
     788            calcSizer = wx.BoxSizer(wx.HORIZONTAL)
     789            calcSizer.Add(wx.StaticText(self.panel,label=' Select calculation type: '),0,WACV)
     790            calcType = wx.ComboBox(self.panel,value=self.calcType,choices=calcChoice,
     791                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     792            calcType.Bind(wx.EVT_COMBOBOX,OnCalcType)
     793            calcSizer.Add(calcType,0,WACV)
     794            mainSizer.Add(calcSizer)
     795        if self.Parms:
     796            parmSel = wx.BoxSizer(wx.HORIZONTAL)
     797            parmSel.Add(wx.StaticText(self.panel,label=' Select parameter to vary: '),0,WACV)
     798            parmsel = wx.ComboBox(self.panel,value=self.Parm,choices=self.Parms,
     799                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     800            parmsel.Bind(wx.EVT_COMBOBOX,OnParmSel)
     801            parmSel.Add(parmsel,0,WACV)
     802            mainSizer.Add(parmSel)
     803            mainSizer.Add(wx.StaticText(self.panel,label=' Enter parameter range & no. steps: '),0,WACV)
     804            parmRange =  wx.BoxSizer(wx.HORIZONTAL)
     805            numChoice = [str(i+1) for i in range(10)]
     806            parmrange = wx.TextCtrl(self.panel,value='%.3f %.3f'%(self.parmRange[0],self.parmRange[1]),
     807                style=wx.TE_PROCESS_ENTER)
     808            parmrange.Bind(wx.EVT_TEXT_ENTER,OnParmRange)
     809            parmrange.Bind(wx.EVT_KILL_FOCUS,OnParmRange)
     810            parmRange.Add(parmrange,0,WACV)
     811            numStep = wx.ComboBox(self.panel,value=str(self.parmStep),choices=numChoice,
     812                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     813            numStep.Bind(wx.EVT_COMBOBOX,OnNumStep)
     814            parmRange.Add(numStep,0,WACV)
     815            mainSizer.Add(parmRange)           
     816        if 'selected' in self.calcType:
     817            planeSizer = wx.BoxSizer(wx.HORIZONTAL)
     818            planeSizer.Add(wx.StaticText(self.panel,label=' Select plane: '),0,WACV)
     819            plane = wx.ComboBox(self.panel,value=self.plane,choices=self.planeChoice,
     820                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     821            plane.Bind(wx.EVT_COMBOBOX,OnPlane)
     822            planeSizer.Add(plane,0,WACV)
     823            planeSizer.Add(wx.StaticText(self.panel,label=' Max. l index: '),0,WACV)
     824            lmax = wx.ComboBox(self.panel,value=self.lmax,choices=self.lmaxChoice,
     825                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     826            lmax.Bind(wx.EVT_COMBOBOX,OnMaxL)
     827            planeSizer.Add(lmax,0,WACV)           
     828            mainSizer.Add(planeSizer)
     829        else:
     830            instChoice = ['None','Mean Gaussian','Gaussian',]
     831            instSizer = wx.BoxSizer(wx.HORIZONTAL)
     832            instSizer.Add(wx.StaticText(self.panel,label=' Select instrument broadening: '),0,WACV)
     833            instsel = wx.ComboBox(self.panel,value=self.Inst,choices=instChoice,
     834                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     835            instsel.Bind(wx.EVT_COMBOBOX,OnInstSel)
     836            instSizer.Add(instsel,0,WACV)
     837            mainSizer.Add(instSizer)
     838        OkBtn = wx.Button(self.panel,-1,"Ok")
     839        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     840        cancelBtn = wx.Button(self.panel,-1,"Cancel")
     841        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     842        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     843        btnSizer.Add((20,20),1)
     844        btnSizer.Add(OkBtn)
     845        btnSizer.Add((20,20),1)
     846        btnSizer.Add(cancelBtn)
     847        btnSizer.Add((20,20),1)
     848       
     849        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     850        self.panel.SetSizer(mainSizer)
     851        self.panel.Fit()
     852        self.Fit()
     853       
     854    def GetSelection(self):
     855        if 'powder' in self.calcType:
     856            return 'PWDR',self.Inst,self.Parm,self.parmRange,self.parmStep
     857        elif 'selected' in self.calcType:
     858            return 'SADP',self.plane,self.lmax
     859
     860    def OnOk(self,event):
     861        parent = self.GetParent()
     862        parent.Raise()
     863        self.EndModal(wx.ID_OK)
     864
     865    def OnCancel(self,event):
     866        parent = self.GetParent()
     867        parent.Raise()
     868        self.EndModal(wx.ID_CANCEL)
     869
     870################################################################################
     871class AddHatomDialog(wx.Dialog):
     872    '''H atom addition dialog. After :meth:`ShowModal` returns, the results
     873    are found in dict :attr:`self.data`, which is accessed using :meth:`GetData`.
     874   
     875    :param wx.Frame parent: reference to parent frame (or None)
     876    :param dict Neigh: a dict of atom names with list of atom name, dist pairs for neighboring atoms
     877    :param dict phase: a dict containing the phase as defined by
     878      :ref:`Phase Tree Item <Phase_table>`   
     879    '''
     880    def __init__(self,parent,Neigh,phase):
     881        wx.Dialog.__init__(self,parent,wx.ID_ANY,'H atom add',
     882            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     883        self.panel = wxscroll.ScrolledPanel(self)         #just a dummy - gets destroyed in Draw!
     884        self.Neigh = Neigh
     885        self.phase = phase
     886        self.Hatoms = []
     887        self.Draw(self.Neigh,self.phase)
     888           
     889    def Draw(self,Neigh,phase):
     890        '''Creates the contents of the dialog. Normally called
     891        by :meth:`__init__`.
     892        '''
     893        def OnHSelect(event):
     894            Obj = event.GetEventObject()
     895            item,i = Indx[Obj.GetId()]
     896            for obj in Indx[item]:
     897                obj.SetValue(False)
     898            Obj.SetValue(True)
     899            self.Neigh[item][2] = i
     900           
     901        def OnBond(event):
     902            Obj = event.GetEventObject()
     903            inei,ibond = Indx[Obj.GetId()]
     904            self.Neigh[inei][1][0][ibond][2] = Obj.GetValue()
     905           
     906        self.panel.Destroy()
     907        self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE)
     908        mainSizer = wx.BoxSizer(wx.VERTICAL)
     909        mainSizer.Add(wx.StaticText(self.panel,-1,'H atom add controls for phase %s:'%(phase['General']['Name'])),
     910            0,wx.LEFT|wx.TOP,10)
     911        mainSizer.Add(wx.StaticText(self.panel,-1,'NB: Check selections as they may not be correct'),0,WACV|wx.LEFT,10)
     912        mainSizer.Add(wx.StaticText(self.panel,-1," Atom:  Add # H's          Use: Neighbors, dist"),0,wx.TOP|wx.LEFT,5)
     913        nHatms = ['0','1','2','3']
     914        dataSizer = wx.FlexGridSizer(0,3,0,0)
     915        Indx = {}
     916        for inei,neigh in enumerate(Neigh):
     917            dataSizer.Add(wx.StaticText(self.panel,-1,' %s:  '%(neigh[0])),0,WACV)
     918            nH = 1      #for O atom
     919            if 'C' in neigh[0] or 'N' in neigh[0]:
     920                nH = 4-len(neigh[1][0])
     921            checks = wx.BoxSizer(wx.HORIZONTAL)
     922            Ids = []
     923            for i in range(nH+1):
     924                nHs = wx.CheckBox(self.panel,-1,label=nHatms[i])
     925                if i == neigh[2]:
     926                    nHs.SetValue(True)
     927                Indx[nHs.GetId()] = [inei,i]
     928                Ids.append(nHs)
     929                nHs.Bind(wx.EVT_CHECKBOX, OnHSelect)
     930                checks.Add(nHs,0,WACV)
     931            Indx[inei] = Ids
     932            dataSizer.Add(checks,0,WACV)
     933            lineSizer = wx.BoxSizer(wx.HORIZONTAL)
     934            for ib,bond in enumerate(neigh[1][0]):
     935                Bond = wx.CheckBox(self.panel,-1,label=': %s, %.3f'%(bond[0],bond[1]))
     936                Bond.SetValue(bond[2])
     937                Indx[Bond.GetId()] = [inei,ib]
     938                Bond.Bind(wx.EVT_CHECKBOX,OnBond)               
     939                lineSizer.Add(Bond,0,WACV)               
     940            dataSizer.Add(lineSizer,0,WACV|wx.RIGHT,10)
     941        mainSizer.Add(dataSizer,0,wx.LEFT,5)
     942
     943        CancelBtn = wx.Button(self.panel,-1,'Cancel')
     944        CancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     945        OkBtn = wx.Button(self.panel,-1,'Ok')
     946        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     947        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     948        btnSizer.Add((20,20),1)
     949        btnSizer.Add(OkBtn)
     950        btnSizer.Add((20,20),1)
     951        btnSizer.Add(CancelBtn)
     952        btnSizer.Add((20,20),1)
     953        mainSizer.Add(btnSizer,0,wx.BOTTOM|wx.TOP, 10)
     954        self.panel.SetSizer(mainSizer)
     955        size = np.array(self.GetSize())
     956        self.panel.SetupScrolling()
     957        self.panel.SetAutoLayout(1)
     958        size = [size[0]-5,size[1]-20]       #this fiddling is needed for older wx!
     959        self.panel.SetSize(size)
     960       
     961    def GetData(self):
     962        'Returns the values from the dialog'
     963        for neigh in self.Neigh:
     964            for ibond,bond in enumerate(neigh[1][0]):
     965                if not bond[2]:
     966                    neigh[1][1][1][ibond] = 0   #deselected bond
     967            neigh[1][1][1] = [a for a in  neigh[1][1][1] if a]
     968        return self.Neigh       #has #Hs to add for each entry
     969       
     970    def OnOk(self,event):
     971        'Called when the OK button is pressed'
     972        parent = self.GetParent()
     973        parent.Raise()
     974        self.EndModal(wx.ID_OK)             
     975
     976    def OnCancel(self,event):
     977        parent = self.GetParent()
     978        parent.Raise()
     979        self.EndModal(wx.ID_CANCEL)
     980
     981################################################################################
     982################################################################################
     983################################################################################
     984   
     985   
    69986def SetPhaseWindow(mainFrame,phasePage,mainSizer=None,size=None,Scroll=0):
    70987    if not mainSizer is None:
     
    8141731                text[0] = ' Magnetic Space Group: '+SGData['MagSpGrp']
    8151732                text[3] = ' The magnetic lattice point group is '+SGData['MagPtGp']
    816                 G2gd.SGMagSpinBox(General,msg,text,table,OprNames,SpnFlp).Show()
     1733                SGMagSpinBox(General,msg,text,table,OprNames,SpnFlp).Show()
    8171734               
    8181735            def OnDminVal(event):
     
    14072324       
    14082325    def OnTransform(event):
    1409         dlg = G2gd.TransformDialog(G2frame,data)
     2326        dlg = TransformDialog(G2frame,data)
    14102327        try:
    14112328            if dlg.ShowModal() == wx.ID_OK:
     
    14352352            Atoms = newPhase['Atoms']
    14362353            if ifMag:
    1437                 dlg = G2gd.UseMagAtomDialog(G2frame,Atoms,atCodes)
     2354                dlg = UseMagAtomDialog(G2frame,Atoms,atCodes)
    14382355                try:
    14392356                    if dlg.ShowModal() == wx.ID_OK:
     
    19982915                DisAglCtls['AngleRadii'].append(0.5)
    19992916                DisAglCtls['BondRadii'].append(0.5)
    2000         dlg = G2gd.DisAglDialog(G2frame,DisAglCtls,generalData,Reset=False)
     2917        dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData,Reset=False)
    20012918        if dlg.ShowModal() == wx.ID_OK:
    20022919            DisAglCtls = dlg.GetData()
     
    20502967            HydIds = {}
    20512968            mapError = False
    2052             dlg = G2gd.AddHatomDialog(G2frame,Neigh,data)
     2969            dlg = AddHatomDialog(G2frame,Neigh,data)
    20532970            if dlg.ShowModal() == wx.ID_OK:
    20542971                Nat = len(atomData)
     
    23883305        atomData = data['Atoms']
    23893306        SGData = generalData['SGData']
    2390         dlg = G2gd.SymOpDialog(G2frame,SGData,True,True)
     3307        dlg = SymOpDialog(G2frame,SGData,True,True)
    23913308        New = False
    23923309        try:
     
    24933410            if 'DisAglCtls' in generalData:
    24943411                DisAglCtls = generalData['DisAglCtls']
    2495             dlg = G2gd.DisAglDialog(G2frame,DisAglCtls,generalData)
     3412            dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData)
    24963413            if dlg.ShowModal() == wx.ID_OK:
    24973414                DisAglCtls = dlg.GetData()
     
    25493466            if 'DisAglCtls' in generalData:
    25503467                DisAglCtls = generalData['DisAglCtls']
    2551             dlg = G2gd.DisAglDialog(G2frame,DisAglCtls,generalData)
     3468            dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData)
    25523469            if dlg.ShowModal() == wx.ID_OK:
    25533470                DisAglCtls = dlg.GetData()
     
    35054422        if debug: idebug = 1
    35064423        ctrls = ''
    3507         dlg = G2gd.DIFFaXcontrols(G2frame,ctrls)
     4424        dlg = DIFFaXcontrols(G2frame,ctrls)
    35084425        if dlg.ShowModal() == wx.ID_OK:
    35094426            simCodes = dlg.GetSelection()
     
    35974514        data['Layers']['seqCodes'] = []
    35984515        Parms = G2pwd.GetStackParms(data['Layers'])
    3599         dlg = G2gd.DIFFaXcontrols(G2frame,ctrls,Parms)
     4516        dlg = DIFFaXcontrols(G2frame,ctrls,Parms)
    36004517        if dlg.ShowModal() == wx.ID_OK:
    36014518            simCodes = dlg.GetSelection()
     
    43655282        if 'DisAglCtls' in generalData:
    43665283            DisAglCtls = generalData['DisAglCtls']
    4367         dlg = G2gd.DisAglDialog(G2frame,DisAglCtls,generalData,Angle=False)
     5284        dlg = G2G.DisAglDialog(G2frame,DisAglCtls,generalData,Angle=False)
    43685285        if dlg.ShowModal() == wx.ID_OK:
    43695286            DisAglCtls = dlg.GetData()
     
    44045321            SGData = generalData['SGData']
    44055322            SpnFlp = SGData.get('SpnFlp',[])
    4406             dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)
     5323            dlg = SymOpDialog(G2frame,SGData,False,True)
    44075324            try:
    44085325                if dlg.ShowModal() == wx.ID_OK:
     
    44605377        indx = drawAtoms.GetSelectedRows()
    44615378        indx.sort()
    4462         dlg = G2gd.SphereEnclosure(G2frame,data['General'],data['Drawing'],indx)
     5379        dlg = SphereEnclosure(G2frame,data['General'],data['Drawing'],indx)
    44635380        try:
    44645381            if dlg.ShowModal() == wx.ID_OK:
     
    45155432            SGData = generalData['SGData']
    45165433            SpnFlp = SGData.get('SpnFlp',[])
    4517             dlg = G2gd.SymOpDialog(G2frame,SGData,False,True)
     5434            dlg = SymOpDialog(G2frame,SGData,False,True)
    45185435            try:
    45195436                if dlg.ShowModal() == wx.ID_OK:
Note: See TracChangeset for help on using the changeset viewer.