# import wx # # from gooey.gui.lang import i18n # from gooey.gui.util import wx_util # from gooey.gui.widgets.calender_dialog import CalendarDlg # # # class AbstractChooser(object): # def __init__(self, data): # self.data = data # # # parent # self.panel = None # # self.button_text = i18n._('browse') # # # Widgets # self.title = None # self.help_msg = None # self.widget = None # self.button = None # self.panel = None # # def build(self, parent): # return self.do_layout(parent) # # def do_layout(self, parent): # self.panel = wx.Panel(parent) # self.panel.SetDoubleBuffered(True) # self.title = self.CreateNameLabelWidget(self.panel) # self.help_msg = self.CreateHelpMsgWidget(self.panel) # self.widget = wx.TextCtrl(self.panel) # self.button = wx.Button(self.panel, label=self.button_text, size=(73, 23)) # # vertical_container = wx.BoxSizer(wx.VERTICAL) # widget_sizer = wx.BoxSizer(wx.HORIZONTAL) # # vertical_container.Add(self.title) # vertical_container.AddSpacer(2) # # if self.help_msg.GetLabelText(): # vertical_container.Add(self.help_msg, 1, wx.EXPAND) # vertical_container.AddSpacer(2) # else: # vertical_container.AddStretchSpacer(1) # # widget_sizer.Add(self.widget, 1, wx.EXPAND) # widget_sizer.AddSpacer(10) # widget_sizer.Add(self.button, 0) # # vertical_container.Add(widget_sizer, 0, wx.EXPAND) # self.panel.SetSizer(vertical_container) # # self.panel.Bind(wx.EVT_SIZE, self.OnResize) # self.panel.Bind(wx.EVT_BUTTON, self.on_button, self.button) # return self.panel # # def CreateHelpMsgWidget(self, parent): # base_text = wx.StaticText(parent, label=self.data['help_msg']) # # if self.data['nargs']: # # base_text.SetLabelText(base_text.GetLabelText() + self.CreateNargsMsg(action)) # wx_util.dark_grey(base_text) # return base_text # # def CreateNameLabelWidget(self, parent): # label = self.data['title'].title() # text = wx.StaticText(parent, label=label) # wx_util.make_bold(text) # return text # # def OnResize(self, evt): # if self.help_msg is None: # return # # container_width, _ = self.panel.Size # text_width, _ = self.help_msg.Size # # if text_width != container_width: # self.help_msg.SetLabel(self.help_msg.GetLabelText().replace('\n', ' ')) # self.help_msg.Wrap(container_width) # evt.Skip() # # def on_button(self, evt): # raise NotImplementedError # # # # class FileChooser(AbstractChooser): # def __init__(self, data): # AbstractChooser.__init__(self, data) # # def on_button(self, evt): # dlg = wx.FileDialog(self.panel, style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) # result = (dlg.GetPath() # if dlg.ShowModal() == wx.ID_OK # else None) # if result: # self.widget.SetLabelText(result) # # # class DirectoryChooser(AbstractChooser): # def __init__(self, data): # AbstractChooser.__init__(self, data) # # def on_button(self, evt): # dlg = wx.DirDialog(self.panel, 'Select directory', style=wx.DD_DEFAULT_STYLE) # result = (dlg.GetPath() # if dlg.ShowModal() == wx.ID_OK # else None) # if result: # self.widget.SetLabelText(result) # # # class CalendarChooser(AbstractChooser): # def __init__(self, data): # AbstractChooser.__init__(self, data) # self.button_text = 'Choose Date' # # def on_button(self, evt): # dlg = CalendarDlg(self.panel) # dlg.ShowModal() # if dlg.GetPath(): # self.widget.SetLabelText(dlg.GetPath()) # # # # # # # # # # # # # # # # #