def __init__(self, dao, *args, **kwargs): wx.Dialog.__init__(self, *args, **kwargs) self.name = wx.TextCtrl(self, -1, size=(100, -1)) self.path = wx.TextCtrl(self, -1, size=(100, -1)) self.cloud = wx.ComboBox(self, -1, choices=[c.name for c in dao.getClouds()]) self.browseButton = wx.Button(self, -1, "Browse") self.browseButton.Bind(wx.EVT_BUTTON, self.onFindImage) self.createButton = wx.Button(self, -1, "Create") self.createButton.Bind(wx.EVT_BUTTON, self.onCreate) util.createEmptyChecker(self.createButton, self.name, self.path) self.cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel") vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(wx.StaticText(self, -1, "Image name:"), 0 , wx.ALL, 2) vbox.Add(self.name, 0, wx.EXPAND | wx.ALL, 2) vbox.Add(wx.StaticText(self, -1, "Add a desktop image:"), 0 , wx.ALL, 2) vbox.Add(self.path, 0, wx.EXPAND | wx.ALL, 2) vbox.Add(self.browseButton, 0, wx.ALIGN_RIGHT | wx.ALL, 2) vbox.Add(wx.StaticText(self, -1, "Select associated cloud:"), 0 , wx.ALL, 2) vbox.Add(self.cloud, 0, wx.ALL, 2) vbox.Add(wx.Panel(self, -1, size=(-1, 10)), 0, wx.EXPAND) vbox.Add(self.createButton, 0, wx.ALIGN_RIGHT | wx.ALL, 2) vbox.Add(self.cancelButton, 0, wx.ALIGN_RIGHT | wx.ALL, 2) self.SetSizer(vbox)
def handleAdd(evt=None, initialVals=None): if (evt is not None): evtBtn = evt.GetEventObject() for field in evtBtn.fields: textControls.append(field) evtBtn.SetLabel("Remove") evtBtn.Bind(wx.EVT_BUTTON, handleRemove) sizer = wx.BoxSizer(wx.HORIZONTAL) fields = [] for i in range(fieldCount): if len(labels) > i: label = wx.StaticText(parent, -1, label=labels[i]) sizer.Add(label,0) field = wx.TextCtrl(parent, -1) sizer.Add(field, 1) fields.append(field) if self.view.modifiable: if initialVals is None and self.view.modifiable: btn = wx.Button(parent, -1, "Add") btn.Bind(wx.EVT_BUTTON, handleAdd) else: btn = wx.Button(parent, -1, "Remove") btn.Bind(wx.EVT_BUTTON, handleRemove) for i,val in enumerate(initialVals): fields[i].SetValue(val) textControls.append(fields[i]) elif initialVals is not None: for i,val in enumerate(initialVals): fields[i].SetValue(val) textControls.append(fields[i]) btn.fields = fields sizer.Add(btn, 0) boxsizer.Add(sizer, 0, wx.EXPAND) createEmptyChecker(btn, *fields) self.view.panel.Layout()