source: trunk/testSSymbols.py @ 4837

Last change on this file since 4837 was 3826, checked in by vondreele, 3 years ago

fix future problem with wx.NewId? --> wx.NewIdRef?

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Author Revision URL Id
File size: 6.5 KB
Line 
1#test
2import sys
3import wx
4import GSASIIpath
5GSASIIpath.SetBinaryPath()
6import GSASIIspc as G2spc
7import GSASIIctrlGUI as G2G
8
9try:
10    wx.NewIdRef
11    wx.NewId = wx.NewIdRef
12except AttributeError:
13    pass
14
15[wxID_FILEEXIT, 
16] = [wx.NewId() for _init_coll_File_Items in range(1)]
17WACV = wx.ALIGN_CENTER_VERTICAL
18laueSS = {'2/m':['(a0g)','(a1/2g)','(0b0)','(1/2b0)','(0b1/2)','(1/2b1/2)'],
19        'mmm':['(a00)','(a1/20)','(a01/2)','(a1/21/2)','(a10)','(a01)',
20               '(0b0)','(1/2b0)','(0b1/2)','(1/2b1/2)','(1b0)','(0b1)',
21               '(00g)','(1/20g)','(01/2g)','(1/21/2g)','(10g)','(01g)']}
22       
23laueTS = {'2/m':['','s','s0','0s','ss'],
24          'mmm':['000','s00','0s0','00s','ss0','s0s','0ss','q00','0q0','00q','0qq','q0q','qq0'],
25          }
26
27class testSSymbols(wx.Frame):
28
29    def _init_ctrls(self, parent):
30        wx.Frame.__init__(self, name='testSSymbols', parent=parent,
31            size=wx.DefaultSize,style=wx.DEFAULT_FRAME_STYLE, title='Test SS symbols')
32        self.testSSMenu = wx.MenuBar()
33        self.File = wx.Menu(title='')
34        self.File.Append(wxID_FILEEXIT,'Exit','Exit from testSS')
35        self.Bind(wx.EVT_MENU, self.OnFileExit, id=wxID_FILEEXIT)
36        self.testSSMenu.Append(menu=self.File, title='Run')
37        self.SetMenuBar(self.testSSMenu)
38        self.testSSPanel = wx.Window(self)       
39       
40    def __init__(self, parent):
41        self._init_ctrls(parent)
42        self.Bind(wx.EVT_CLOSE, self.ExitMain)   
43        self.dataFrame = None
44        Data = {'SGData':G2spc.SpcGroup('P 1')[1],'SuperSg':'(abg)',}
45        self.UpdateData(Data)
46
47    def ExitMain(self, event):
48        sys.exit()
49       
50    def OnFileExit(self,event):
51        if self.dataFrame:
52            self.dataFrame.Clear() 
53            self.dataFrame.Destroy()
54        self.Close()
55       
56    def UpdateData(self,Data):
57       
58        def OnExhaustive(event):
59            SSList = G2spc.SSChoice(Data['SGData'])
60            print(SSList)           
61       
62        def OnSpaceGroup(event):
63            Flds = SGTxt.GetValue().split()
64            #get rid of extra spaces between fields first
65            for fld in Flds: fld = fld.strip()
66            SpcGp = ' '.join(Flds)
67            # try a lookup on the user-supplied name
68            SpGrpNorm = G2spc.StandardizeSpcName(SpcGp)
69            if SpGrpNorm:
70                SGErr,SGData = G2spc.SpcGroup(SpGrpNorm)
71            else:
72                SGErr,SGData = G2spc.SpcGroup(SpcGp)
73            if SGErr:
74                text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous']
75                SGTxt.SetValue(Data['SGData']['SpGrp'])
76                msg = 'Space Group Error'
77                Style = wx.ICON_EXCLAMATION
78                Text = '\n'.join(text)
79                wx.MessageBox(Text,caption=msg,style=Style)
80            else:
81                text,table = G2spc.SGPrint(SGData)
82                Data['SGData'] = SGData
83                SGTxt.SetValue(Data['SGData']['SpGrp'])
84                msg = 'Space Group Information'
85                G2G.SGMessageBox(self,msg,text,table).Show()
86            SSChoice = G2spc.SSChoice(Data['SGData'])
87            Data['SuperSg'] = SSChoice[0]
88            self.UpdateData(Data)
89
90        def OnSuperGp(event):
91            SSymbol = superGp.GetValue()
92            SpGrp = Data['SGData']['SpGrp']
93            if Data['SGData']['SGGray']: SpGrp += " 1'"
94            print('Try: %s%s'%(Data['SGData']['SpGrp'],SSymbol))
95            E,SSGData = G2spc.SSpcGroup(Data['SGData'],SSymbol)
96            if SSGData:
97                text,table = G2spc.SSGPrint(Data['SGData'],SSGData)
98                Data['SSGData'] = SSGData
99                Data['SuperSg'] = SSymbol
100                msg = 'Superspace Group Information'
101                G2G.SGMessageBox(self,msg,text,table).Show()
102                print('Super spacegroup operators for '+SSGData['SSpGrp'])
103                for Op in SSGData['SSGOps']:
104                    print(G2spc.SSMT2text(Op).replace(' ',''))
105                if SGData['SGInv']:                                 
106                    for Op in SSGData['SSGOps']:
107                        Op = [-Op[0],-Op[1]%1.]
108                        print(G2spc.SSMT2text(Op).replace(' ',''))
109            else:
110                text = [E+'\nSuperspace Group set to previous']
111                superGp.SetValue(Data['SuperSg'])
112                msg = 'Superspace Group Error'
113                Style = wx.ICON_EXCLAMATION
114                Text = '\n'.join(text)
115                wx.MessageBox(Text,caption=msg,style=Style)
116            wx.CallAfter(self.UpdateData,Data)
117       
118        SGData = G2spc.SpcGroup(Data['SGData']['SpGrp'])[1]
119       
120        self.testSSPanel.DestroyChildren()
121        mainSizer = wx.FlexGridSizer(0,2,5,5)
122        mainSizer.Add(wx.StaticText(self.testSSPanel,-1,'  Space group: '),0,WACV)
123        SpGrp = Data['SGData']['SpGrp']
124        if Data['SGData']['SGGray']: SpGrp += " 1'"
125        SGTxt = wx.TextCtrl(self.testSSPanel,-1,value=SpGrp,style=wx.TE_PROCESS_ENTER)
126        SGTxt.Bind(wx.EVT_TEXT_ENTER,OnSpaceGroup)
127        mainSizer.Add(SGTxt,0,WACV)
128        mainSizer.Add(wx.StaticText(self.testSSPanel,label=' Superspace group: '+SpGrp),0,WACV)
129        ssChoice = G2spc.SSChoice(Data['SGData'])
130        ssSym = Data['SuperSg']
131        if ssChoice:
132            superGp = wx.ComboBox(self.testSSPanel,value=ssSym,choices=ssChoice,style=wx.CB_DROPDOWN)   #wx.CB_READONLY|
133            superGp.Bind(wx.EVT_COMBOBOX,OnSuperGp)
134            superGp.Bind(wx.EVT_TEXT_ENTER,OnSuperGp)
135        else:   #nonstandard space group symbol not in my dictionary
136            superGp = wx.TextCtrl(self.testSSPanel,value=ssSym,style=wx.TE_PROCESS_ENTER)
137            superGp.Bind(wx.EVT_TEXT_ENTER,OnSuperGp)                       
138        mainSizer.Add(superGp,0,WACV)
139        mainSizer.Add(wx.StaticText(self.testSSPanel,-1,' Exhaustive try: '),0,WACV)
140        ESStry = wx.Button(self.testSSPanel,-1,'OK') 
141        ESStry.Bind(wx.EVT_BUTTON,OnExhaustive)
142        mainSizer.Add(ESStry,0,WACV)
143        self.testSSPanel.SetSizer(mainSizer)
144        Size = mainSizer.Fit(self.testSSPanel)
145        Size[0] = 800
146        Size[1] = max(Size[1],350)
147        self.testSSPanel.SetSize(Size)
148           
149class testSSmain(wx.App):
150    def OnInit(self):
151        self.main = testSSymbols(None)
152        self.main.Show()
153        self.SetTopWindow(self.main)
154        return True
155
156def main():
157    'Starts main application to compute and plot derivatives'
158    application = testSSmain(0)
159    application.MainLoop()
160   
161if __name__ == '__main__':
162    main()
163           
164       
Note: See TracBrowser for help on using the repository browser.