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

📄 frame.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
📖 第 1 页 / 共 2 页
字号:
        szr.Add(prop['style'].panel, 0, wx.EXPAND)        panel.SetAutoLayout(True)        panel.SetSizer(szr)        szr.Fit(panel)        self.notebook.AddPage(panel, 'Widget')        w, h = panel.GetClientSizeTuple()        panel.SetScrollbars(5, 5, int(math.ceil(w/5.0)), int(math.ceil(h/5.0)))    def get_menubar(self):        return self.menubar is not None    def set_menubar(self, value):        if value:            from menubar import EditMenuBar            self.menubar = EditMenuBar(self.name + '_menubar', 'wxMenuBar',                                       self, common.property_panel)            self.menubar.node = Tree.Node(self.menubar)            common.app_tree.add(self.menubar.node, self.node)                        if self.widget:                self.menubar.show_widget(True)                self.menubar.show_properties()        else:            self.menubar = self.menubar.remove()            self.show_properties(None)    def get_statusbar(self):        return self.statusbar is not None    def set_statusbar(self, value):        if value:            self.statusbar = EditStatusBar(self, common.property_panel)            if self.widget:                self.statusbar.show_widget(True)                self.statusbar.show_properties()        else:            self.statusbar = self.statusbar.remove()            self.show_properties(None)        if self.widget:            # this is needed at least on win32            wx.PostEvent(self.widget, wx.SizeEvent(self.widget.GetSize(),                                                   self.widget.GetId()))            def get_toolbar(self):        return self.toolbar is not None    def set_toolbar(self, value):        if value:            from toolbar import EditToolBar            self.toolbar = EditToolBar(self.name + '_toolbar', 'wxToolBar',                                       self, common.property_panel)            self.toolbar.node = Tree.Node(self.toolbar)            common.app_tree.add(self.toolbar.node, self.node)                        if self.widget:                self.toolbar.show_widget(True)                self.toolbar.show_properties()        else:            self.toolbar = self.toolbar.remove()            self.show_properties(None)    def get_style(self):        retval = [0] * len(self.style_pos)        try:            if self.style == wx.DEFAULT_FRAME_STYLE: retval[0] = 1            else:                for i in range(len(self.style_pos)):                    if self.style & self.style_pos[i]: retval[i] = 1                retval[0] = 0        except AttributeError:            pass        return retval    def set_style(self, value):        value = self.properties['style'].prepare_value(value)        style = 0        for v in range(len(value)):            if value[v]:                style |= self.style_pos[v]        self.style = style        if self.widget: self.widget.SetWindowStyleFlag(style)    def remove(self, *args):        if self.menubar:            self.menubar = self.menubar.remove(gtk_do_nothing=True)        if self.statusbar:            self.statusbar = self.statusbar.remove(do_nothing=True)        if self.toolbar:            self.toolbar = self.toolbar.remove(do_nothing=True)        TopLevelBase.remove(self, *args)        def get_icon(self):        # is a string that holds the filename (for example: icon.png)        return self.icon     def set_icon(self, value):        self.icon = value.strip()        if self.widget:            if self.icon and not (self.icon.startswith('var:') or                                  self.icon.startswith('code:')):                # setting icon                icon = misc.get_relative_path(self.icon)                bmp = wx.Bitmap(icon, wx.BITMAP_TYPE_ANY)                if not bmp.Ok():                    self.set_icon("")                else:                    icon = wx.EmptyIcon()                    icon.CopyFromBitmap(bmp)                    self.widget.SetIcon(icon)             else:                # removing icon                icon = wx.EmptyIcon()                import os                xpm = os.path.join(common.wxglade_path, 'icons', 'frame.xpm')                icon.CopyFromBitmap(misc.get_xpm_bitmap(xpm))                self.widget.SetIcon(icon)    def get_centered(self):        return self.centered    def set_centered(self, value):        try: self.centered = bool(int(value))        except ValueError: pass    def get_sizehints(self):        return self.sizehints    def set_sizehints(self, value):        try: self.sizehints = bool(int(value))        except ValueError: pass# end of class EditFrameclass EditMDIChildFrame(EditFrame):    _is_toplevel = False # used to avoid to appear in the "Top Window" property                         # of the app    def __init__(self, *args, **kwds):        EditFrame.__init__(self, *args, **kwds)        del self.properties['statusbar']        self.base = 'wxFrame'# end of class EditMDIChildFrame        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 _make_builder(base_class):    def xml_builder(attrs, parent, sizer, sizeritem, pos=None):        from xml_parse import XmlParsingError        try: label = attrs['name']        except KeyError: raise XmlParsingError, _("'name' attribute missing")        frame = base_class(label, parent, wx.NewId(), "",                           common.property_panel,                           show=False)        node = Tree.Node(frame)        frame.node = node        common.app_tree.add(node)        return frame    return xml_builder        ## def xml_builder(attrs, parent, sizer, sizeritem, pos=None):##     """\##     factory to build EditFrame objects from an xml file##     """##     from xml_parse import XmlParsingError##     try: label = attrs['name']##     except KeyError: raise XmlParsingError, _("'name' attribute missing")##     frame = EditFrame(label, parent, wx.NewId(), label, common.property_panel,##                       show=False)##     node = Tree.Node(frame)##     frame.node = node##     common.app_tree.add(node)##     return framedef statusbar_xml_builder(attrs, parent, sizer, sizeritem, pos=None):    """\    factory to build EditStatusBar objects from an xml file    """    parent.statusbar.set_fields([])    name = attrs.get('name')    if name:        parent.statusbar.set_name(name)        parent.statusbar.name_prop.set_value(name)    return parent.statusbardef initialize():    """\    initialization function for the module: returns a wx.BitmapButton to be    added to the main palette.    """    cwx = common.widgets_from_xml    cwx['EditStatusBar'] = statusbar_xml_builder    cwx['EditFrame'] = _make_builder(EditFrame)    cwx['EditMDIChildFrame'] = _make_builder(EditMDIChildFrame)    common.widgets['EditFrame'] = builder        # add statusbar icon to WidgetTree    from tree import WidgetTree    import os.path    WidgetTree.images['EditStatusBar'] = os.path.join(common.wxglade_path,                                                      'icons/statusbar.xpm')    WidgetTree.images['EditMDIChildFrame'] = os.path.join(common.wxglade_path,                                                          'icons/frame.xpm')           return common.make_object_button('EditFrame', 'icons/frame.xpm', 1)

⌨️ 快捷键说明

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