def insert_tab(self, index, label, add_panel=True, add_sizer=False): # add tab/page; called from GUI self.properties["tabs"].insert(index, [ label, ]) # create panel and node, add to tree self.insert_item(None, index) # placeholder if add_panel: if not isinstance(add_panel, compat.unicode): add_panel = self.next_pane_name() editor = panel.EditPanel(add_panel, self, index) if add_sizer: edit_sizers._builder(editor, 0) else: # just add a slot editor = edit_base.Slot(self, index) if self.widget: # add to widget editor.create() compat.SetToolTip(editor.widget, _("Notebook page pane:\nAdd a sizer here")) self.vs_insert_tab(index) try: wx.CallAfter(editor.sel_marker.update) except AttributeError: #self._logger.exception(_('Internal Error')) if config.debugging: raise self.widget.SetSelection(index) self.properties["tabs"].update_display() misc.rebuild_tree(self)
def builder(parent, sizer, pos): "factory function for EditFrame objects" import window_dialog base_classes = ['wxFrame', 'wxMDIChildFrame'] klass = 'wxFrame' if common.app_tree.app.language.lower( ) == 'xrc' else 'MyFrame' dialog = window_dialog.WindowDialog(klass, base_classes, 'Select frame class', True) res = dialog.show() dialog.Destroy() if res is None: return None klass, base = res name = dialog.get_next_name("frame") if base == "wxFrame": base_class = EditFrame else: base_class = EditMDIChildFrame frame = base_class(name, parent, wx.NewId(), name, klass=klass) node = Node(frame) frame.node = node common.app_tree.add(node) frame.create() frame.widget.Show() # add a default vertical sizer to the frame import edit_sizers edit_sizers._builder(frame, None, 0) # now select the frame's node in the tree common.app_tree.select_item(node) if wx.Platform == '__WXMSW__': #frame.widget.CenterOnScreen() frame.widget.Raise()
def builder(parent, pos, klass=None, base=None, name=None): "factory function for EditFrame objects" global last_choices if klass is None or base is None: import window_dialog base_classes = ['wxFrame', 'wxMDIChildFrame'] klass = 'wxFrame' if common.root.language.lower( ) == 'xrc' else 'MyFrame' dialog = window_dialog.WindowDialog(klass, base_classes, 'Select frame class', True, options, last_choices) res = dialog.show() dialog.Destroy() if res is None: return None klass, base = res last_choices[:] = dialog.get_options() # remember for next time if config.debugging and last_choices[1]: XXX # provoke an error name = dialog.get_next_name("frame") interactive = True else: interactive = False # last_choices not to be obeyed if base == "wxFrame": base_class = EditFrame else: base_class = EditMDIChildFrame editor = base_class(name, parent, name, "wxDEFAULT_FRAME_STYLE", klass=klass) editor.properties['size'].set((400, 300), activate=True) editor.create() editor.widget.Show() editor.design.update_label() if interactive and last_choices[0]: # add a default panel and vertical sizer to the frame import edit_sizers, widgets.panel.panel panel_editor = widgets.panel.panel.builder(editor, 0) edit_sizers._builder(panel_editor, 0) else: # just add a slot Slot(editor, 0) import clipboard editor.drop_target = clipboard.DropTarget(editor) editor.widget.SetDropTarget(editor.drop_target) if wx.Platform == '__WXMSW__': #editor.widget.CenterOnScreen() editor.widget.Raise() return editor
def builder(parent, pos): "factory function for EditDialog objects" import window_dialog base_classes = ['wxDialog', 'wxPanel'] klass = 'wxDialog' if common.root.language.lower() == 'xrc' else 'MyDialog' dialog = window_dialog.WindowDialog(klass, base_classes, 'Select widget type', True) res = dialog.show() dialog.Destroy() if res is None: return klass, base = res name = 'dialog' if base == "wxDialog" else "panel" name = dialog.get_next_name(name) if base == "wxDialog": is_panel = False editor = EditDialog(name, parent, name, "wxDEFAULT_DIALOG_STYLE", klass=klass) else: is_panel = True import panel editor = panel.EditTopLevelPanel(name, parent, klass=klass) editor.create() if base == "wxDialog": editor.widget.Show() else: editor.widget.GetParent().Show( ) # the panel is created as child of a Frame editor.design.update_label() if wx.Platform == '__WXMSW__': if not is_panel: w = editor.widget else: w = editor.widget.GetParent() w.CenterOnScreen() w.Raise() import clipboard editor.drop_target = clipboard.DropTarget(editor) editor.widget.SetDropTarget(editor.drop_target) # add a default vertical sizer import edit_sizers edit_sizers._builder(editor, 0) return editor
def builder(parent, sizer, pos, klass=None, base=None, name=None): "factory function for EditFrame objects" if klass is None or base is None: import window_dialog base_classes = ['wxFrame', 'wxMDIChildFrame'] klass = 'wxFrame' if common.app_tree.app.language.lower( ) == 'xrc' else 'MyFrame' dialog = window_dialog.WindowDialog(klass, base_classes, 'Select frame class', True) res = dialog.show() dialog.Destroy() if res is None: return None klass, base = res name = dialog.get_next_name("frame") if base == "wxFrame": base_class = EditFrame else: base_class = EditMDIChildFrame frame = base_class(name, parent, wx.NewId(), name, "wxDEFAULT_FRAME_STYLE", klass=klass) frame.properties['size'].set((400, 300), activate=True) node = Node(frame) frame.node = node common.app_tree.add(node) frame.create() frame.widget.Show() frame.design.update_label() # add a default vertical sizer to the frame import edit_sizers edit_sizers._builder(frame, None, 0) # now select the frame's node in the tree common.app_tree.select_item(node) import clipboard frame.drop_target = clipboard.DropTarget(frame) frame.widget.SetDropTarget(frame.drop_target) if wx.Platform == '__WXMSW__': #frame.widget.CenterOnScreen() frame.widget.Raise()
def builder(parent, index, klass=None, base=None, name=None): "factory function for EditDialog objects" import window_dialog, edit_base, panel if klass is None or base is None: klass = 'wxDialog' if common.root.language.lower( ) == 'xrc' else 'MyDialog' dialog = window_dialog.DialogOrPanelDialog(klass) res = dialog.show() add_sizer = dialog.get_options()[0] button_names, button_types = dialog.get_selected_buttons() dialog.Destroy() if res is None: return klass, base = res name = 'dialog' if base == "wxDialog" else "panel" name = dialog.get_next_name(name) interactive = True else: interactive = False if base == "wxDialog": editor = EditDialog(name, parent, None, klass, name, "wxDEFAULT_DIALOG_STYLE") else: editor = panel.EditTopLevelPanel(name, parent, None, klass) if interactive and add_sizer: # add a default panel and vertical sizer to the frame; optionally add buttons if it's a Dialog import edit_sizers, widgets.button.button slots = 2 if base == "wxDialog" and button_names else 1 szr = edit_sizers._builder(editor, 0, slots=slots) if base == "wxDialog": button_szr = edit_sizers._builder(szr, 1, "StdDialogButtonSizer", slots=len(button_names)) button_szr.properties["border"].set(4) button_szr.properties["flag"].set("wxALL|wxALIGN_RIGHT") i = 0 for button_name, button_type in zip(button_names, button_types): name = "button_%s" % button_name label = "OK" if button_name == "OK" else button_name.capitalize( ) button = widgets.button.button.EditButton( name, button_szr, i, label) button.properties["stockitem"].set(button_name, activate=True) if button_type == "A": editor.properties["affirmative"].set(name, activate=True) button.properties["default"].set(True) if button_type == "C": editor.properties["escape"].set(name, activate=True) i += 1 else: # just add a slot edit_base.Slot(editor, 0) editor.create() if base == "wxDialog": editor.widget.Show() else: editor.widget.GetParent().Show( ) # the panel is created as child of a Frame editor.design.update_label() if wx.Platform == '__WXMSW__': w = editor.widget.GetTopLevelParent() w.CenterOnScreen() w.Raise() return editor
def builder(parent, sizer, pos, number=[0]): """\ factory function for EditFrame objects. """ class Dialog(wx.Dialog): def __init__(self): wx.Dialog.__init__(self, None, -1, _('Select frame class')) if common.app_tree.app.get_language().lower() == 'xrc': self.klass = 'wxFrame' else: if not number[0]: self.klass = 'MyFrame' else: self.klass = 'MyFrame%s' % number[0] number[0] += 1 self.base = 0 base_prop = RadioProperty(self, 'base class', self, ['wxFrame', 'wxMDIChildFrame'], label=_("base class")) klass_prop = TextProperty(self, 'class', self, label=_("class")) szr = wx.BoxSizer(wx.VERTICAL) szr.Add(base_prop.panel, 0, wx.ALL|wx.EXPAND, 5) szr.Add(klass_prop.panel, 0, wx.EXPAND) btnbox = wx.BoxSizer(wx.HORIZONTAL) btnOK = wx.Button(self, wx.ID_OK, _('OK')) btnCANCEL = wx.Button(self, wx.ID_CANCEL, _('Cancel')) btnbox.Add(btnOK, 0, wx.ALL, 3) btnbox.Add(btnCANCEL, 0, wx.ALL, 3) btnOK.SetFocus() szr.Add(btnbox, 0, wx.ALL|wx.ALIGN_CENTER, 3) self.SetAutoLayout(True) self.SetSizer(szr) szr.Fit(self) self.CenterOnScreen() def undo(self): if number[0] > 0: number[0] -= 1 def __getitem__(self, value): if value == 'class': def set_klass(c): self.klass = c return (lambda : self.klass, set_klass) else: def set_base(b): self.base = b return (lambda : self.base, set_base) # end of inner class dialog = Dialog() # Check if the user hit Cancel, if so then bail out if dialog.ShowModal() == wx.ID_CANCEL: # restore state dialog.undo() # clean up resources dialog.Destroy() return label = 'frame_%d' % (number[0] or 1) while common.app_tree.has_name(label): number[0] += 1 label = 'frame_%d' % number[0] if dialog.base == 0: base_class = EditFrame else: base_class = EditMDIChildFrame frame = base_class(label, parent, wx.NewId(), label, common.property_panel, klass=dialog.klass) node = Tree.Node(frame) frame.node = node common.app_tree.add(node) frame.show_widget(True) # add a default vertical sizer to the frame import edit_sizers edit_sizers._builder(frame, None, 0) # now select the frame's node in the tree common.app_tree.select_item(node) dialog.Destroy() if wx.Platform == '__WXMSW__': #frame.widget.CenterOnScreen() frame.widget.Raise()
def builder(parent, sizer, pos, number=[0]): """\ factory function for EditFrame objects. """ class Dialog(wx.Dialog): def __init__(self): wx.Dialog.__init__(self, None, -1, _('Select frame class')) if common.app_tree.app.get_language().lower() == 'xrc': self.klass = 'wxFrame' else: if not number[0]: self.klass = 'MyFrame' else: self.klass = 'MyFrame%s' % number[0] number[0] += 1 self.base = 0 base_prop = RadioProperty(self, 'base class', self, ['wxFrame', 'wxMDIChildFrame'], label=_("base class")) klass_prop = TextProperty(self, 'class', self, label=_("class")) szr = wx.BoxSizer(wx.VERTICAL) szr.Add(base_prop.panel, 0, wx.ALL | wx.EXPAND, 5) szr.Add(klass_prop.panel, 0, wx.EXPAND) btnbox = wx.BoxSizer(wx.HORIZONTAL) btnOK = wx.Button(self, wx.ID_OK, _('OK')) btnCANCEL = wx.Button(self, wx.ID_CANCEL, _('Cancel')) btnbox.Add(btnOK, 0, wx.ALL, 3) btnbox.Add(btnCANCEL, 0, wx.ALL, 3) btnOK.SetFocus() szr.Add(btnbox, 0, wx.ALL | wx.ALIGN_CENTER, 3) self.SetAutoLayout(True) self.SetSizer(szr) szr.Fit(self) self.CenterOnScreen() def undo(self): if number[0] > 0: number[0] -= 1 def __getitem__(self, value): if value == 'class': def set_klass(c): self.klass = c return (lambda: self.klass, set_klass) else: def set_base(b): self.base = b return (lambda: self.base, set_base) # end of inner class dialog = Dialog() # Check if the user hit Cancel, if so then bail out if dialog.ShowModal() == wx.ID_CANCEL: # restore state dialog.undo() # clean up resources dialog.Destroy() return label = 'frame_%d' % (number[0] or 1) while common.app_tree.has_name(label): number[0] += 1 label = 'frame_%d' % number[0] if dialog.base == 0: base_class = EditFrame else: base_class = EditMDIChildFrame frame = base_class(label, parent, wx.NewId(), label, common.property_panel, klass=dialog.klass) node = Tree.Node(frame) frame.node = node common.app_tree.add(node) frame.show_widget(True) # add a default vertical sizer to the frame import edit_sizers edit_sizers._builder(frame, None, 0) # now select the frame's node in the tree common.app_tree.select_item(node) dialog.Destroy() if wx.Platform == '__WXMSW__': #frame.widget.CenterOnScreen() frame.widget.Raise()