def Draw(self, evt): """When the page is drawn, it may need to update its fields if the selected database has changed.""" if not evt.GetDirection(): btn = self.parent.FindWindowById(wx.ID_FORWARD) if btn: btn.Enable() if len(self.Parent.CHOOSEDB.dblist.GetStringSelection()) == 0 and evt.Direction: evt.Veto() else: if self.sel != self.Parent.CHOOSEDB.dblist.GetStringSelection(): self.sel = self.Parent.CHOOSEDB.dblist.GetStringSelection() self.engine = Engine() for db in self.Parent.engine_list: if db.name == self.sel: self.engine = db self.fields.Clear(True) self.fields = wx.BoxSizer(wx.VERTICAL) if self.engine.instructions: self.fields.Add(StaticText( self, -1, '\n' + self.engine.instructions + '\n\n')) self.fieldset = dict() self.option = dict() saved_opts = get_saved_connection(self.engine.name) for opt in self.engine.required_opts: if opt[0] in saved_opts.keys(): default = saved_opts[opt[0]] else: default = opt[2] self.fieldset[opt[0]] = wx.BoxSizer(wx.HORIZONTAL) label = StaticText(self, -1, opt[0] + ": ", size=wx.Size(90, 35)) style = wx.TE_PASSWORD if opt[0] == "password" else 0 txt = TextCtrl(self, -1, str(default), size=wx.Size(200, -1), style=style) self.option[opt[0]] = txt self.fieldset[opt[0]].AddMany([label, self.option[opt[0]]]) if opt[0] == "file": file_opt = opt def open_file_dialog(evt): filter = "" if file_opt[3]: filter = file_opt[3] + "|" filter += "All files (*.*)|*.*" dialog = wx.FileDialog(None, style=wx.OPEN, wildcard=filter) if dialog.ShowModal() == wx.ID_OK: self.option[file_opt[0]].SetValue( dialog.GetPath()) self.browse = wx.Button(self, -1, "Choose...") self.fieldset[file_opt[0]].Add(self.browse) self.browse.Bind(wx.EVT_BUTTON, open_file_dialog) self.fieldset[opt[0]].Layout() self.fields.Add(self.fieldset[opt[0]]) self.sizer.Add(self.fields) self.sizer.Layout()