Ignore:
Timestamp:
Sep 8, 2017 2:17:29 PM (4 years ago)
Author:
toby
Message:

expand error reporting with constraints (no fixes yet to prevent them)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrlGUI.py

    r3049 r3056  
    25812581    sizer.Fit(dlg)
    25822582    dlg.ShowModal()
     2583
     2584################################################################################
     2585class MultiIntegerDialog(wx.Dialog):
     2586    '''Input a series of integers based on prompts
     2587    '''
     2588    def __init__(self,parent,title,prompts,values):
     2589        wx.Dialog.__init__(self,parent,-1,title,
     2590            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     2591        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     2592        self.values = values
     2593        self.prompts = prompts
     2594        self.Draw()
     2595       
     2596    def Draw(self):
     2597       
     2598        def OnValItem(event):
     2599            event.Skip()
     2600            Obj = event.GetEventObject()
     2601            ind = Indx[Obj.GetId()]
     2602            try:
     2603                val = int(Obj.GetValue())
     2604                if val <= 0:
     2605                    raise ValueError
     2606            except ValueError:
     2607                val = self.values[ind]
     2608            self.values[ind] = val
     2609            Obj.SetValue('%d'%(val))
     2610           
     2611        self.panel.Destroy()
     2612        self.panel = wx.Panel(self)
     2613        mainSizer = wx.BoxSizer(wx.VERTICAL)
     2614        Indx = {}
     2615        for ival,[prompt,value] in enumerate(zip(self.prompts,self.values)):
     2616            mainSizer.Add(wx.StaticText(self.panel,-1,prompt),0,wx.ALIGN_CENTER)
     2617            valItem = wx.TextCtrl(self.panel,-1,value='%d'%(value),style=wx.TE_PROCESS_ENTER)
     2618            mainSizer.Add(valItem,0,wx.ALIGN_CENTER)
     2619            Indx[valItem.GetId()] = ival
     2620            valItem.Bind(wx.EVT_TEXT_ENTER,OnValItem)
     2621            valItem.Bind(wx.EVT_KILL_FOCUS,OnValItem)
     2622        OkBtn = wx.Button(self.panel,-1,"Ok")
     2623        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     2624        CancelBtn = wx.Button(self.panel,-1,'Cancel')
     2625        CancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     2626        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     2627        btnSizer.Add((20,20),1)
     2628        btnSizer.Add(OkBtn)
     2629        btnSizer.Add(CancelBtn)
     2630        btnSizer.Add((20,20),1)
     2631        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     2632        self.panel.SetSizer(mainSizer)
     2633        self.panel.Fit()
     2634        self.Fit()
     2635
     2636    def GetValues(self):
     2637        return self.values
     2638       
     2639    def OnOk(self,event):
     2640        parent = self.GetParent()
     2641        parent.Raise()
     2642        self.EndModal(wx.ID_OK)             
     2643       
     2644    def OnCancel(self,event):
     2645        parent = self.GetParent()
     2646        parent.Raise()
     2647        self.EndModal(wx.ID_CANCEL)
    25832648
    25842649################################################################################
Note: See TracChangeset for help on using the changeset viewer.