Changeset 2151 for trunk/GSASIIctrls.py


Ignore:
Timestamp:
Feb 16, 2016 4:19:48 PM (6 years ago)
Author:
vondreele
Message:

add Generic TOF to defaultIparms.py; forces user to set flight path & 2-theta
modify instparm reading to sort out multibank issues
add MultiFloatDialog? to solicit multi values from user

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrls.py

    r2133 r2151  
    19241924    def GetValue(self):
    19251925        return self.value
     1926       
     1927    def OnOk(self,event):
     1928        parent = self.GetParent()
     1929        parent.Raise()
     1930        self.EndModal(wx.ID_OK)             
     1931       
     1932    def OnCancel(self,event):
     1933        parent = self.GetParent()
     1934        parent.Raise()
     1935        self.EndModal(wx.ID_CANCEL)
     1936
     1937################################################################################
     1938class MultiFloatDialog(wx.Dialog):
     1939    'Dialog to obtain a multi float value from user'
     1940    def __init__(self,parent,title,prompts,values,limits=[[0.,1.],],formats=['%.5g',]):
     1941        wx.Dialog.__init__(self,parent,-1,title,
     1942            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     1943        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     1944        self.limits = limits
     1945        self.values = values
     1946        self.prompts = prompts
     1947        self.formats = formats
     1948        self.Draw()
     1949       
     1950    def Draw(self):
     1951       
     1952        def OnValItem(event):
     1953            Obj = event.GetEventObject()
     1954            id,limits,format = Indx[Obj]
     1955            try:
     1956                val = float(Obj.GetValue())
     1957                if val < limits[0] or val > limits[1]:
     1958                    raise ValueError
     1959            except ValueError:
     1960                val = self.values[id]
     1961            self.values[id] = val
     1962            Obj.SetValue(format%(val))
     1963           
     1964        Indx = {}
     1965        self.panel.Destroy()
     1966        self.panel = wx.Panel(self)
     1967        mainSizer = wx.BoxSizer(wx.VERTICAL)
     1968        lineSizer = wx.FlexGridSizer(0,2,5,5)
     1969        for id,[prompt,value,limits,format] in enumerate(zip(self.prompts,self.values,self.limits,self.formats)):
     1970            lineSizer.Add(wx.StaticText(self.panel,label=prompt),0,wx.ALIGN_CENTER)
     1971            valItem = wx.TextCtrl(self.panel,value=format%(value),style=wx.TE_PROCESS_ENTER)
     1972            Indx[valItem] = [id,limits,format]
     1973            lineSizer.Add(valItem,0,wx.ALIGN_CENTER)
     1974            valItem.Bind(wx.EVT_TEXT_ENTER,OnValItem)
     1975            valItem.Bind(wx.EVT_KILL_FOCUS,OnValItem)
     1976        mainSizer.Add(lineSizer)
     1977        OkBtn = wx.Button(self.panel,-1,"Ok")
     1978        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     1979        CancelBtn = wx.Button(self.panel,-1,'Cancel')
     1980        CancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     1981        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     1982        btnSizer.Add((20,20),1)
     1983        btnSizer.Add(OkBtn)
     1984        btnSizer.Add(CancelBtn)
     1985        btnSizer.Add((20,20),1)
     1986        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     1987        self.panel.SetSizer(mainSizer)
     1988        self.panel.Fit()
     1989        self.Fit()
     1990
     1991    def GetValues(self):
     1992        return self.values
    19261993       
    19271994    def OnOk(self,event):
Note: See TracChangeset for help on using the changeset viewer.