Changeset 2151 for trunk/GSASIIctrls.py
- Timestamp:
- Feb 16, 2016 4:19:48 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrls.py
r2133 r2151 1924 1924 def GetValue(self): 1925 1925 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 ################################################################################ 1938 class 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 1926 1993 1927 1994 def OnOk(self,event):
Note: See TracChangeset
for help on using the changeset viewer.