⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panel.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
📖 第 1 页 / 共 2 页
字号:
                #return wx.Panel.GetBestSize(self.widget)                return wx.ScrolledWindow.GetBestSize(self.widget)            self.widget.GetBestSize = GetBestSize    def set_sizer(self, sizer):        super(EditPanel, self).set_sizer(sizer)        if self.top_sizer and self.top_sizer.widget and self.widget:            self.sizer.set_item(self.pos, size=self.widget.GetBestSize())    def set_scrollable(self, value):        super(EditPanel, self).set_scrollable(value)        if self.scrollable:            # 2003-06-26 ALB: change the "class name", to allow code generation            # for a wxScrolledWindow (see Tree.Node.write and            # common.class_names usage in xml_parse.py)            self._classname = 'EditScrolledWindow'        else:            self._classname = self.__class__.__name__    def popup_menu(self, event):        if self.widget:            if not self._rmenu:                COPY_ID, REMOVE_ID, CUT_ID = [wx.NewId() for i in range(3)]                self._rmenu = misc.wxGladePopupMenu(self.name)                misc.append_item(self._rmenu, REMOVE_ID, _('Remove\tDel'),                                 wx.ART_DELETE)                misc.append_item(self._rmenu, COPY_ID, _('Copy\tCtrl+C'),                                 wx.ART_COPY)                misc.append_item(self._rmenu, CUT_ID, _('Cut\tCtrl+X'),                                 wx.ART_CUT)                def bind(method):                    return lambda e: misc.wxCallAfter(method)                wx.EVT_MENU(self.widget, REMOVE_ID, bind(self.remove))                wx.EVT_MENU(self.widget, COPY_ID, bind(self.clipboard_copy))                wx.EVT_MENU(self.widget, CUT_ID, bind(self.clipboard_cut))                # paste                PASTE_ID = wx.NewId()                misc.append_item(self._rmenu, PASTE_ID, _('Paste\tCtrl+V'),                                 wx.ART_PASTE)                wx.EVT_MENU(self.widget, PASTE_ID, bind(self.clipboard_paste))                PREVIEW_ID = wx.NewId()                self._rmenu.AppendSeparator()                misc.append_item(self._rmenu, PREVIEW_ID, _('Preview'))                wx.EVT_MENU(self.widget, PREVIEW_ID, bind(self.preview_parent))            self.setup_preview_menu()            self.widget.PopupMenu(self._rmenu, event.GetPosition())    def clipboard_paste(self, *args):        import clipboard, xml_parse        size = self.widget.GetSize()        try:            if clipboard.paste(self, None, 0):                common.app_tree.app.saved = False                self.widget.SetSize(size)        except xml_parse.XmlParsingError, e:            print _('\nwxGlade-WARNING: only sizers can be pasted here')            # end of class EditPanelclass EditTopLevelPanel(PanelBase, TopLevelBase):    _is_toplevel = False # used to avoid to appear in the "Top Window" property                         # of the app        def __init__(self, name, parent, id, property_window, klass='wxPanel',                 show=True, style=wx.TAB_TRAVERSAL):        TopLevelBase.__init__(self, name, klass, parent, id,                              property_window, show=show, has_title=False)        PanelBase.__init__(self, style)        self.base = 'wxPanel'        self.skip_on_size = False    def create_widget(self):        win = wx.Frame(common.palette, -1, misc.design_title(self.name),                       size=(400, 300))         import os        icon = wx.EmptyIcon()        xpm = os.path.join(common.wxglade_path, 'icons', 'panel.xpm')        icon.CopyFromBitmap(misc.get_xpm_bitmap(xpm))        win.SetIcon(icon)        #self.widget = wx.Panel(win, self.id, style=0)        self.widget = wx.ScrolledWindow(win, self.id, style=0)        wx.EVT_ENTER_WINDOW(self.widget, self.on_enter)        self.widget.GetBestSize = self.get_widget_best_size        #self.widget.SetSize = win.SetSize        wx.EVT_CLOSE(win, self.hide_widget)        if wx.Platform == '__WXMSW__': win.CentreOnScreen()    def show_widget(self, yes):        oldval = self.get_size()        super(EditTopLevelPanel, self).show_widget(yes)        if self.widget:            if yes and not self.properties['size'].is_active() \                   and self.top_sizer:                self.top_sizer.fit_parent()            self.widget.GetParent().Show(yes)        self.set_size(oldval)    def hide_widget(self, *args):        super(EditTopLevelPanel, self).hide_widget(*args)        self.widget.GetParent().Hide()    def set_name(self, name):        super(EditTopLevelPanel, self).set_name(name)        if self.widget:            self.widget.GetParent().SetTitle(misc.design_title(self.name))    def delete(self):        win = None        if self.widget: win = self.widget.GetParent()        super(EditTopLevelPanel, self).delete()        if win is not None: win.Destroy()    def on_size(self, event):        w, h = event.GetSize()        if self.skip_on_size:            self.skip_on_size = False            return        super(EditTopLevelPanel, self).on_size(event)        self.skip_on_size = True        if self.widget.GetParent().GetClientSize() != (w, h):            self.widget.GetParent().SetClientSize((w+2, h+2))    def set_scrollable(self, value):        super(EditTopLevelPanel, self).set_scrollable(value)        if self.scrollable:            # 2003-06-26 ALB: change the "class name", to allow code generation            # for a wxScrolledWindow (see Tree.Node.write and            # common.class_names usage in xml_parse.py)            self._classname = 'EditTopLevelScrolledWindow'        else:            self._classname = self.__class__.__name__            # end of class EditTopLevelPanel        def builder(parent, sizer, pos, number=[1]):    """\    factory function for EditPanel objects.    """    name = 'panel_%d' % number[0]    while common.app_tree.has_name(name):        number[0] += 1        name = 'panel_%d' % number[0]    panel = EditPanel(name, parent, wx.NewId(), sizer, pos,                      common.property_panel)    node = Tree.Node(panel)    panel.node = node    panel.set_option(1)    panel.set_flag("wxEXPAND")    panel.show_widget(True)    common.app_tree.insert(node, sizer.node, pos-1)    sizer.set_item(panel.pos, 1, wx.EXPAND)def xml_builder(attrs, parent, sizer, sizeritem, pos=None):    """\    factory to build EditPanel objects from an xml file    """    from xml_parse import XmlParsingError    try: name = attrs['name']    except KeyError: raise XmlParsingError, _("'name' attribute missing")    if not sizer or not sizeritem:        raise XmlParsingError, _("sizer or sizeritem object cannot be None")    panel = EditPanel(name, parent, wx.NewId(), sizer, pos,                      common.property_panel, True, style=0)    sizer.set_item(panel.pos, option=sizeritem.option, flag=sizeritem.flag,                   border=sizeritem.border)    node = Tree.Node(panel)    panel.node = node    if pos is None: common.app_tree.add(node, sizer.node)    else: common.app_tree.insert(node, sizer.node, pos-1)    return paneldef xml_toplevel_builder(attrs, parent, sizer, sizeritem, pos=None):    from xml_parse import XmlParsingError    try: label = attrs['name']    except KeyError: raise XmlParsingError, _("'name' attribute missing")    panel = EditTopLevelPanel(label, parent, wx.NewId(), common.property_panel,                              show=False, style=0)    node = Tree.Node(panel)    panel.node = node    common.app_tree.add(node)    return paneldef initialize():    """\    initialization function for the module: returns a wxBitmapButton to be    added to the main palette.    """    common.widgets['EditPanel'] = builder    common.widgets_from_xml['EditPanel'] = xml_builder    #common.widgets['EditScrolledWindow'] = builder    common.widgets_from_xml['EditScrolledWindow'] = xml_builder        common.widgets_from_xml['EditTopLevelPanel'] = xml_toplevel_builder    common.widgets_from_xml['EditTopLevelScrolledWindow'] = \                                                          xml_toplevel_builder    from tree import WidgetTree    import os.path    icon = os.path.join(common.wxglade_path, 'icons/panel.xpm')    WidgetTree.images['EditTopLevelPanel'] = icon    WidgetTree.images['EditScrolledWindow'] = icon    WidgetTree.images['EditTopLevelScrolledWindow'] = icon    # these are for backwards compatibility (may be removed someday...)    common.widgets_from_xml['SplitterPane'] = xml_builder    WidgetTree.images['SplitterPane'] = os.path.join(common.wxglade_path,                                                     'icons/panel.xpm')    common.widgets_from_xml['NotebookPane'] = xml_builder    WidgetTree.images['NotebookPane'] = os.path.join(common.wxglade_path,                                                     'icons/panel.xpm')        return common.make_object_button('EditPanel', 'icons/panel.xpm',                                     tip='Add a Panel/ScrolledWindow')    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -