def save_prefs ( self, prefs = None, path = '' ): """ Saves any user preference information associated with the UI. """ if prefs is None: save_window( self, path ) return if self.id != '': self.facet_db_set( path + self.id, self.get_prefs( prefs ) )
def close(self, rc=wx.ID_OK): """ Closes the dialog window. """ ui = self.ui ui.result = (rc == wx.ID_OK) save_window(ui) if self.is_modal: self.control.EndModal(rc) ui.finish() self.ui = self.undo = self.redo = self.revert = self.control = None
def close(self, rc=wx.ID_OK): """ Closes the dialog window. """ ui = self.ui ui.result = (rc == wx.ID_OK) save_window(ui) if self.is_modal: self.control.EndModal(rc) ui.finish() self.ui = self.apply = self.revert = self.help = self.control = None
def close ( self, rc = True ): """ Closes the dialog window. """ ui = self.ui ui.result = rc save_window( ui ) if self.is_modal: self.control.result = rc self.control.visible = False ui.finish() self.ui = self.apply = self.revert = self.help = self.control = None
def close(self, rc=True): """ Closes the dialog window. """ control = self.control control.unset_event_handler(close=self._on_close_page, key=self._on_key) ui = self.ui ui.result = rc save_window(ui) if self.is_modal: control.result = rc control.visible = False ui.finish() self.ui = self.undo = self.redo = self.revert = self.control = None
def save_window(self, ui): """ Saves user preference information associated with a UI window. """ import helper helper.save_window(ui)
def ui_wizard ( ui, parent ): """ Creates a wizard-based wxPython user interface for a specified UI object. """ # Create the copy of the 'context' we will need while editing: context = ui.context ui._context = context new_context = {} for name, value in context.items(): if value is not None: new_context[ name ] = value.clone_traits() else: new_context[ name ] = None ui.context = new_context # Now bind the context values to the 'info' object: ui.info.bind_context() # Create the wxPython wizard window: title = ui.view.title if title == '': title = DefaultTitle ui.control = wizard = wz.Wizard( parent, -1, title ) # Create all of the wizard pages: pages = [] editor_pages = [] info = ui.info shadow_group = ui.view.content.get_shadow( ui ) min_dx = min_dy = 0 # Create a dictionary mapping each contained group in shadow_group to # its id and enabled_when fields. group_fields_mapping = {} for group in shadow_group.get_content(): # FIXME: When the group's id or enabled_when or visible_when is # set, the "fill_panel_for_group" will create a new Panel to hold the # contents of the group (instead of adding them to the page itself). # This leads to an incorrect sizing of the panel(not sure why # actually): example would be 'test_ui2.py' in # Traits/integrationtests/ui. In addition, # it leads to incorrect bindings (of the id) on the UIInfo object: # the id is bound to the GroupEditor created in "fill_panel.." # instead of the PageGroupEditor created here. # A simple solution is to clear out these fields before calling # "fill_panel_for_group", and then reset these traits. group_fields_mapping[group] = (group.id, group.enabled_when) (group.id, group.enabled_when) = ('', '') page = UIWizardPage( wizard, editor_pages ) pages.append( page ) fill_panel_for_group( page, group, ui ) # Size the page correctly, then calculate cumulative minimum size: sizer = page.GetSizer() sizer.Fit( page ) size = sizer.CalcMin() min_dx = max( min_dx, size.GetWidth() ) min_dy = max( min_dy, size.GetHeight() ) # If necessary, create a PageGroupEditor and attach it to the right # places: (group.id, group.enabled_when) = group_fields_mapping[group] if group.id or group.enabled_when: page.editor = editor = PageGroupEditor( control = page ) if group.id: page.id = group.id editor_pages.append( page ) info.bind( page.id, editor ) if group.enabled_when: ui.add_enabled( group.enabled_when, editor ) # Size the wizard correctly: wizard.SetPageSize( wx.Size( min_dx, min_dy ) ) # Set up the wizard 'page changing' event handler: wz.EVT_WIZARD_PAGE_CHANGING( wizard, wizard.GetId(), page_changing ) # Size the wizard and the individual pages appropriately: prev_page = pages[0] wizard.FitToPage( prev_page ) # Link the pages together: for page in pages[1:]: page.SetPrev( prev_page ) prev_page.SetNext( page ) prev_page = page # Finalize the display of the wizard: try: ui.prepare_ui() except: ui.control.Destroy() ui.control.ui = None ui.control = None ui.result = False raise # Position the wizard on the display: ui.handler.position( ui.info ) # Restore the user_preference items for the user interface: restore_window( ui ) # Run the wizard: if wizard.RunWizard( pages[0] ): # If successful, apply the modified context to the original context: original = ui._context for name, value in ui.context.items(): if value is not None: original[ name ].copy_traits( value ) else: original[ name ] = None ui.result = True else: ui.result = False # Clean up loose ends, like restoring the original context: save_window( ui ) ui.finish() ui.context = ui._context ui._context = {}
def ui_wizard(ui, parent): """ Creates a wizard-based wxPython user interface for a specified UI object. """ # Create the copy of the 'context' we will need while editing: context = ui.context ui._context = context new_context = {} for name, value in context.items(): if value is not None: new_context[name] = value.clone_traits() else: new_context[name] = None ui.context = new_context # Now bind the context values to the 'info' object: ui.info.bind_context() # Create the wxPython wizard window: title = ui.view.title if title == '': title = DefaultTitle ui.control = wizard = wz.Wizard(parent, -1, title) # Create all of the wizard pages: pages = [] editor_pages = [] info = ui.info shadow_group = ui.view.content.get_shadow(ui) min_dx = min_dy = 0 # Create a dictionary mapping each contained group in shadow_group to # its id and enabled_when fields. group_fields_mapping = {} for group in shadow_group.get_content(): # FIXME: When the group's id or enabled_when or visible_when is # set, the "fill_panel_for_group" will create a new Panel to hold the # contents of the group (instead of adding them to the page itself). # This leads to an incorrect sizing of the panel(not sure why # actually): example would be 'test_ui2.py' in # Traits/integrationtests/ui. In addition, # it leads to incorrect bindings (of the id) on the UIInfo object: # the id is bound to the GroupEditor created in "fill_panel.." # instead of the PageGroupEditor created here. # A simple solution is to clear out these fields before calling # "fill_panel_for_group", and then reset these traits. group_fields_mapping[group] = (group.id, group.enabled_when) (group.id, group.enabled_when) = ('', '') page = UIWizardPage(wizard, editor_pages) pages.append(page) fill_panel_for_group(page, group, ui) # Size the page correctly, then calculate cumulative minimum size: sizer = page.GetSizer() sizer.Fit(page) size = sizer.CalcMin() min_dx = max(min_dx, size.GetWidth()) min_dy = max(min_dy, size.GetHeight()) # If necessary, create a PageGroupEditor and attach it to the right # places: (group.id, group.enabled_when) = group_fields_mapping[group] if group.id or group.enabled_when: page.editor = editor = PageGroupEditor(control=page) if group.id: page.id = group.id editor_pages.append(page) info.bind(page.id, editor) if group.enabled_when: ui.add_enabled(group.enabled_when, editor) # Size the wizard correctly: wizard.SetPageSize(wx.Size(min_dx, min_dy)) # Set up the wizard 'page changing' event handler: wz.EVT_WIZARD_PAGE_CHANGING(wizard, wizard.GetId(), page_changing) # Size the wizard and the individual pages appropriately: prev_page = pages[0] wizard.FitToPage(prev_page) # Link the pages together: for page in pages[1:]: page.SetPrev(prev_page) prev_page.SetNext(page) prev_page = page # Finalize the display of the wizard: try: ui.prepare_ui() except: ui.control.Destroy() ui.control.ui = None ui.control = None ui.result = False raise # Position the wizard on the display: ui.handler.position(ui.info) # Restore the user_preference items for the user interface: restore_window(ui) # Run the wizard: if wizard.RunWizard(pages[0]): # If successful, apply the modified context to the original context: original = ui._context for name, value in ui.context.items(): if value is not None: original[name].copy_traits(value) else: original[name] = None ui.result = True else: ui.result = False # Clean up loose ends, like restoring the original context: save_window(ui) ui.finish() ui.context = ui._context ui._context = {}