Changeset 2464 for trunk/GSASIIgrid.py


Ignore:
Timestamp:
Sep 11, 2016 3:05:54 PM (7 years ago)
Author:
vondreele
Message:

magnetic space group work - spin flip display

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r2451 r2464  
    185185        wx.Dialog.__init__(self,parent,wx.ID_ANY,title,pos=wx.DefaultPosition,
    186186            style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
    187         self.text=text
     187        self.text = text
    188188        self.table = table
    189189        self.panel = wx.Panel(self)
     
    224224        self.ShowModal()
    225225        return
     226
     227class SGMagSpinBox(wx.Dialog):
     228    ''' Special version of MessageBox that displays magnetic spin text
     229    '''
     230    def __init__(self,parent,title,text,table,names,spins,):
     231        wx.Dialog.__init__(self,parent,wx.ID_ANY,title,pos=wx.DefaultPosition,
     232            style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,size=wx.Size(400,350))
     233        self.text = text
     234        self.table = table
     235        self.names = names
     236        self.spins = spins
     237        self.panel = wxscroll.ScrolledPanel(self)
     238        mainSizer = wx.BoxSizer(wx.VERTICAL)
     239        mainSizer.Add((0,10))
     240        first = text[0].split(':')
     241        cents = ['',]
     242        if not 'P' in first[1][0]:
     243            cents = text[-1].split(';')
     244        for line in text:
     245            mainSizer.Add(wx.StaticText(self.panel,label='     %s     '%(line)),0,WACV)
     246        try:
     247            nops = self.names.index(' 1bar ')
     248        except ValueError:
     249            nops = len(self.names)
     250        ncol = self.table[0].count(',')+2
     251        for ic,cent in enumerate(cents):
     252            if cent:
     253                cent = cent.strip(' (').strip(')+\n')
     254                mainSizer.Add(wx.StaticText(self.panel,label=' for (%s)+'%(cent)),0,WACV)
     255            tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
     256            for j,item in enumerate(self.table):
     257                flds = item.split(')')[1]
     258                tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV|wx.ALIGN_LEFT)           
     259                flds = flds.replace(' ','').split(',')
     260                for i,fld in enumerate(flds):
     261                    if i < ncol-1:
     262                        text = wx.StaticText(self.panel,label='%s, '%(fld))
     263                        tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     264                    else:
     265                        text = wx.StaticText(self.panel,label='%s '%(fld))
     266                        tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     267                text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j]))
     268                if self.spins[j+ic*len(self.table)] < 0:
     269                    text.SetForegroundColour('Red')
     270                tableSizer.Add(text,0,WACV|wx.ALIGN_RIGHT)
     271                if not j%2:
     272                    tableSizer.Add((20,0))
     273            mainSizer.Add(tableSizer,0,wx.ALIGN_LEFT)
     274           
     275        btnsizer = wx.StdDialogButtonSizer()
     276        OKbtn = wx.Button(self.panel, wx.ID_OK)
     277        OKbtn.SetDefault()
     278        btnsizer.AddButton(OKbtn)
     279        btnsizer.Realize()
     280        mainSizer.Add((0,10))
     281        mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER)
     282        self.panel.SetSizer(mainSizer)
     283        size = np.array(self.GetSize())
     284        self.panel.SetupScrolling()
     285        size = [size[0]-5,size[1]-20]       #this fiddling is needed for older wx!
     286        self.panel.SetSize(size)
     287        self.panel.SetAutoLayout(1)
     288
     289    def Show(self):
     290        '''Use this method after creating the dialog to post it
     291        '''
     292        self.ShowModal()
     293        return   
    226294
    227295################################################################################
     
    11651233        btnSizer.Add((20,20),1)
    11661234        mainSizer.Add(btnSizer,0,wx.BOTTOM|wx.TOP, 10)
     1235        self.panel.SetSizer(mainSizer)
    11671236        size = np.array(self.GetSize())
    11681237        self.panel.SetupScrolling()
    1169         self.panel.SetSizer(mainSizer)
    11701238        self.panel.SetAutoLayout(1)
    11711239        size = [size[0]-5,size[1]-20]       #this fiddling is needed for older wx!
     
    12081276    '''
    12091277    def __init__(self,parent,data,default,Reset=True):
    1210         wx.Dialog.__init__(self,parent,wx.ID_ANY,
    1211                            'Distance Angle Controls',
     1278        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Distance Angle Controls',
    12121279            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
    12131280        self.default = default
Note: See TracChangeset for help on using the changeset viewer.