Beispiel #1
0
    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)
Beispiel #2
0
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()
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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()
Beispiel #6
0
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
Beispiel #7
0
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()
Beispiel #8
0
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()