def results_directory(self, event): """The results directory selection. @param event: The wx event. @type event: wx event """ # The dialog. dialog = RelaxDirDialog(parent=self, message='Select the results directory', defaultPath=self.field_results_dir.GetValue()) # Show the dialog and catch if no file has been selected. if status.show_gui and dialog.ShowModal() != wx.ID_OK: # Don't do anything. return # The path (don't do anything if not set). path = gui_to_str(dialog.get_path()) if not path: return # Store the path. self.data.save_dir = path # Place the path in the text box. self.field_results_dir.SetValue(str_to_gui(path))
def system_cwd(self, event=None): """Change the system current working directory. @keyword event: The wx event. @type event: wx event """ # The dialog. dialog = RelaxDirDialog(parent=self, message="Select working directory", defaultPath=wx.EmptyString, style=wx.DD_CHANGE_DIR) # Show the dialog and catch if no directory has been selected. if status.show_gui and dialog.ShowModal() != wx.ID_OK: # Don't do anything. return # Call the get_path function to get the directory name and change path. self.system_cwd_path = dialog.get_path() # Update the status bar. self.update_status_bar() # Change the directory try: wx.BeginBusyCursor() # Sleep a little so the user sees the busy cursor and knows that the directory changes has occurred. sleep(1) # Turn off the user feedback. finally: if wx.IsBusy(): wx.EndBusyCursor()
def __init__(self, name=None, default=None, parent=None, sizer=None, desc=None, message='File selection', style=wx.FD_DEFAULT_STYLE, tooltip=None, divider=None, padding=0, spacer=None, height_element=27, read_only=False): """Build the file selection element. @keyword name: The name of the element to use in titles, etc. @type name: str @keyword default: The default value of the element. @type default: str @keyword parent: The wizard GUI element. @type parent: wx.Panel instance @keyword sizer: The sizer to put the input field into. @type sizer: wx.Sizer instance @keyword desc: The text description. @type desc: str @keyword message: The file selector prompt string. @type message: String @keyword style: The dialog style. To open a single file, set to wx.FD_OPEN. To open multiple files, set to wx.FD_OPEN|wx.FD_MULTIPLE. To save a single file, set to wx.FD_SAVE. To save multiple files, set to wx.FD_SAVE|wx.FD_MULTIPLE. @type style: long @keyword tooltip: The tooltip which appears on hovering over all the GUI elements. @type tooltip: str @keyword divider: The position of the divider. @type divider: int @keyword padding: Spacing to the left and right of the widgets. @type padding: int @keyword spacer: The amount of spacing to add below the field in pixels. If None, a stretchable spacer will be used. @type spacer: None or int @keyword height_element: The height in pixels of the GUI element. @type height_element: int @keyword read_only: A flag which if True means that the text of the element cannot be edited. @type read_only: bool """ # Store the args. self.name = name # Argument translation. if default == None: default = wx.EmptyString # Init. sub_sizer = wx.BoxSizer(wx.HORIZONTAL) # Left padding. sub_sizer.AddSpacer(padding) # The description. text = wx.StaticText(parent, -1, desc, style=wx.ALIGN_LEFT) text.SetFont(font.normal) sub_sizer.Add(text, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 0) # The divider. if not divider: raise RelaxError("The divider position has not been supplied.") # Spacing. x, y = text.GetSize() if dep_check.wx_classic: sub_sizer.AddSpacer((divider - x, 0)) else: sub_sizer.AddSpacer(divider - x) # The input field. self._field = wx.TextCtrl(parent, -1, default) self._field.SetMinSize((-1, height_element)) self._field.SetFont(font.normal) sub_sizer.Add(self._field, 1, wx.ADJUST_MINSIZE | wx.ALIGN_CENTER_VERTICAL, 0) # The directory selection object. obj = RelaxDirDialog(parent, field=self._field, message=message, defaultPath=default, style=style) # A little spacing. sub_sizer.AddSpacer(5) # The file selection button. button = wx.BitmapButton( parent, -1, wx.Bitmap(fetch_icon('oxygen.actions.document-open-folder'), wx.BITMAP_TYPE_ANY)) button.SetMinSize((height_element, height_element)) button.SetToolTip(wx.ToolTip("Select the directory.")) sub_sizer.Add(button, 0, wx.ADJUST_MINSIZE | wx.ALIGN_CENTER_VERTICAL, 0) parent.Bind(wx.EVT_BUTTON, obj.select_event, button) # Right padding. sub_sizer.AddSpacer(padding) # Add to the main sizer (followed by stretchable spacing). sizer.Add(sub_sizer, 1, wx.EXPAND | wx.ALL, 0) # Spacing below the widget. if spacer == None: sizer.AddStretchSpacer() else: sizer.AddSpacer(spacer) # Tooltip. if tooltip: text.SetToolTip(wx.ToolTip(tooltip)) self._field.SetToolTip(wx.ToolTip(tooltip))