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

📄 notebook.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
📖 第 1 页 / 共 2 页
字号:
            self._create_slots = False            for i in range(len(self.tabs)):                if self.tabs[i][1] is None:                    self.tabs = self.tabs[:i]                    self.properties['tabs'].set_value(self.get_tabs())    def finish_widget_creation(self):        ManagedBase.finish_widget_creation(self)        # replace 'self' with 'self.nb_sizer' in 'self.sizer'        if not misc.check_wx_version(2, 5, 2):            self.sizer._fix_notebook(self.pos, self.nb_sizer)    def create_properties(self):        ManagedBase.create_properties(self)        panel = wx.ScrolledWindow(self.notebook, -1, style=wx.TAB_TRAVERSAL)        self.properties['no_custom_class'].display(panel)        self.properties['tabs'].display(panel)        sizer = wx.BoxSizer(wx.VERTICAL)        sizer.Add(self.properties['no_custom_class'].panel, 0,                  wx.ALL|wx.EXPAND, 3)        sizer.Add(self.properties['tabs'].panel, 1, wx.ALL|wx.EXPAND, 3)        panel.SetAutoLayout(True)        panel.SetSizer(sizer)        sizer.Fit(panel)        self.notebook.AddPage(panel, _('Widget'))        self.properties['tabs'].set_col_sizes([-1])    def on_set_focus(self, event):        self.show_properties()        event.Skip()    def _add_tab(self, window, pos):        if window is None:            window = SizerSlot(self, self.virtual_sizer, pos)            self.tabs[pos-1][1] = window        else:            window._dont_destroy = True            node = Tree.Node(window)            window.node = node            common.app_tree.add(node, self.node)        if self.widget:            window.show_widget(True)            self.virtual_sizer.set_item(pos)            try:                misc.wxCallAfter(window.sel_marker.update)            except AttributeError, e:                #print e                pass    def get_tabs(self):        return [ [n] for n, w in self.tabs ]    def set_tabs(self, tabs):        delta = len(self.tabs) - len(tabs)        if delta > 0:            self._is_removing_pages = True            # we have to remove some pages            i = len(tabs)            if self.widget:                for n, window in self.tabs[i:]:                    self.widget.RemovePage(i)                    window.remove(False)            del self.tabs[i:]            if self.widget: self.widget.SetSelection(0)            self._is_removing_pages = False        elif delta < 0:            # we have to add some pages            number = len(self.tabs)+1            while common.app_tree.has_name(self.name + '_pane_%s' % number):                number += 1            pos = len(self.tabs)            for i in range(-delta):                self.tabs.append(['', None])                pos += 1                if _has_panel:                    window = EditPanel(self.name + '_pane_%s' % number, self,                                       -1, self.virtual_sizer, pos,                                       self.property_window)                    self._add_tab(window, pos)                else:                    self._add_tab(None, pos)                number += 1            if self.widget:                self.widget.SetSelection(self.widget.GetPageCount()-1)        # finally, we must update the labels of the tabs        for i in range(len(tabs)):            tt = misc.wxstr(tabs[i][0])            if self.widget:                self.widget.SetPageText(i, tt)            self.tabs[i][0] = tt    def delete(self):        if self.widget:            self.widget.DeleteAllPages()        ManagedBase.delete(self)    def get_property_handler(self, name):        if name == 'tabs': return TabsHandler(self)        return ManagedBase.get_property_handler(self, name)    def find_page(self, page):        """\        returns the index of the given page in the notebook, or -1 if the page        cannot be found        """        if not self.widget: return -1        for i in range(len(self.tabs)):            if self.tabs[i][1] is page:                if i < self.widget.GetPageCount(): return i                else: return -1        return -1    def get_tab_pos(self):         styles = { wx.NB_LEFT: 'wxNB_LEFT', wx.NB_RIGHT: 'wxNB_RIGHT',                   wx.NB_BOTTOM: 'wxNB_BOTTOM' }        return styles.get(self.style, '0')        def set_tab_pos(self, value):        styles = { 'wxNB_LEFT': wx.NB_LEFT, 'wxNB_RIGHT': wx.NB_RIGHT,                   'wxNB_BOTTOM': wx.NB_BOTTOM }        self.style = styles.get(value, 0)    def get_no_custom_class(self):        return self.no_custom_class    def set_no_custom_class(self, value):        self.no_custom_class = bool(int(value))# end of class EditNotebook        def builder(parent, sizer, pos, number=[1]):    """\    factory function for EditNotebook objects.    """    class Dialog(wx.Dialog):        def __init__(self):            wx.Dialog.__init__(self, None, -1, _('Select tab placement'))            self.styles = [ 0, wx.NB_BOTTOM, wx.NB_LEFT, wx.NB_RIGHT ]            self.style = 0            prop = RadioProperty(self, 'tab_placement', self,                                 [_('Top'), _('Bottom'), _('Left'), _('Right')],                                 columns=2, label=_('tab_placement'))            szr = wx.BoxSizer(wx.VERTICAL)            szr.Add(prop.panel, 0, wx.ALL|wx.EXPAND, 10)            btn = wx.Button(self, wx.ID_OK, _('OK'))            btn.SetDefault()            szr.Add(btn, 0, wx.BOTTOM|wx.ALIGN_CENTER, 10)            self.SetAutoLayout(True)            self.SetSizer(szr)            szr.Fit(self)            self.CenterOnScreen()        def __getitem__(self, value):            def set_style(s): self.style = self.styles[s]            return (lambda: self.style, set_style)    # end of inner class    dialog = Dialog()    dialog.ShowModal()    name = 'notebook_%d' % number[0]    while common.app_tree.has_name(name):        number[0] += 1        name = 'notebook_%d' % number[0]    window = EditNotebook(name, parent, wx.NewId(), dialog.style,                          sizer, pos, common.property_panel, show=False)    if _has_panel:        pane1 = EditPanel(name + '_pane_1', window, wx.NewId(),                          window.virtual_sizer, 1, common.property_panel)    node = Tree.Node(window)    window.node = node    window.virtual_sizer.node = node        window.set_option(1)    window.set_flag("wxEXPAND")    window.show_widget(True)    common.app_tree.insert(node, sizer.node, pos-1)    if _has_panel:        window._add_tab(pane1, 1)    sizer.set_item(window.pos, 1, wx.EXPAND)def xml_builder(attrs, parent, sizer, sizeritem, pos=None):    """\    factory to build EditNotebook 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")    window = EditNotebook(name, parent, wx.NewId(), 0, sizer, pos,                          common.property_panel, True)    window._create_slots = True    sizer.set_item(window.pos, option=sizeritem.option, flag=sizeritem.flag,                   border=sizeritem.border)    node = Tree.Node(window)    window.node = node    if pos is None: common.app_tree.add(node, sizer.node)    else: common.app_tree.insert(node, sizer.node, pos-1)    return windowdef initialize():    """\    initialization function for the module: returns a wxBitmapButton to be    added to the main palette.    """    common.widgets['EditNotebook'] = builder    common.widgets_from_xml['EditNotebook'] = xml_builder    return common.make_object_button('EditNotebook', 'icons/notebook.xpm')    

⌨️ 快捷键说明

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