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

📄 tree.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
📖 第 1 页 / 共 4 页
字号:
# Name:         tree.py# Purpose:      XRC editor, XML_tree class# Author:       Roman Rolinsky <rolinsky@mema.ucl.ac.be># Created:      02.12.2002# RCS-ID:       $Id: tree.py 47276 2007-07-09 19:58:22Z ROL $from xxx import *                       # xxx imports globals and paramsimport typesimport traceback# Constant to define standart window nameSTD_NAME = '_XRCED_T_W'# Iconsimport imagesclass MemoryFile:    def __init__(self, name):        self.name = name        self.buffer = ''    def write(self, data):        if g.currentEncoding:            encoding = g.currentEncoding        else:            encoding = wx.GetDefaultPyEncoding()        try:            self.buffer += data.encode(encoding)        except UnicodeEncodeError:            self.buffer += data.encode(encoding, 'xmlcharrefreplace')                def close(self):        wx.MemoryFSHandler.AddFile(self.name, self.buffer)################################################################################# Redefine writing to include encodingclass MyDocument(minidom.Document):    def __init__(self):        minidom.Document.__init__(self)        self.encoding = ''    def writexml(self, writer, indent="", addindent="", newl="", encoding=""):        if encoding: encdstr = 'encoding="%s"' % encoding        else: encdstr = ''        writer.write('<?xml version="1.0" %s?>\n' % encdstr)        for node in self.childNodes:            node.writexml(writer, indent, addindent, newl)################################################################################# Ids for menu commandsclass ID_NEW:    PANEL = wx.NewId()    DIALOG = wx.NewId()    FRAME = wx.NewId()    TOOL_BAR = wx.NewId()    TOOL = wx.NewId()    MENU_BAR = wx.NewId()    MENU = wx.NewId()    STATUS_BAR = wx.NewId()    STATIC_TEXT = wx.NewId()    TEXT_CTRL = wx.NewId()    BUTTON = wx.NewId()    BITMAP_BUTTON = wx.NewId()    RADIO_BUTTON = wx.NewId()    SPIN_BUTTON = wx.NewId()    TOGGLE_BUTTON = wx.NewId()    STATIC_BOX = wx.NewId()    CHECK_BOX = wx.NewId()    RADIO_BOX = wx.NewId()    COMBO_BOX = wx.NewId()    LIST_BOX = wx.NewId()    STATIC_LINE = wx.NewId()    STATIC_BITMAP = wx.NewId()    CHOICE = wx.NewId()    SLIDER = wx.NewId()    GAUGE = wx.NewId()    SCROLL_BAR = wx.NewId()    TREE_CTRL = wx.NewId()    LIST_CTRL = wx.NewId()    CHECK_LIST = wx.NewId()    NOTEBOOK = wx.NewId()    CHOICEBOOK = wx.NewId()    LISTBOOK = wx.NewId()    SPLITTER_WINDOW = wx.NewId()    GRID = wx.NewId()    SCROLLED_WINDOW = wx.NewId()    HTML_WINDOW = wx.NewId()    CALENDAR_CTRL = wx.NewId()    DATE_CTRL = wx.NewId()    FILE_PICKER_CTRL = wx.NewId()    GENERIC_DIR_CTRL = wx.NewId()    SPIN_CTRL = wx.NewId()    UNKNOWN = wx.NewId()    WIZARD = wx.NewId()    WIZARD_PAGE = wx.NewId()    WIZARD_PAGE_SIMPLE = wx.NewId()    BITMAP = wx.NewId()    ICON = wx.NewId()    STATUS_BAR = wx.NewId()    BOX_SIZER = wx.NewId()    STATIC_BOX_SIZER = wx.NewId()    GRID_SIZER = wx.NewId()    FLEX_GRID_SIZER = wx.NewId()    GRID_BAG_SIZER = wx.NewId()    STD_DIALOG_BUTTON_SIZER = wx.NewId()    SPACER = wx.NewId()        TOOL_BAR = wx.NewId()    TOOL = wx.NewId()    MENU = wx.NewId()    MENU_ITEM = wx.NewId()    SEPARATOR = wx.NewId()    OK_BUTTON = wx.NewId()    YES_BUTTON = wx.NewId()    SAVE_BUTTON = wx.NewId()    APPLY_BUTTON = wx.NewId()    NO_BUTTON = wx.NewId()    CANCEL_BUTTON = wx.NewId()    HELP_BUTTON = wx.NewId()    CONTEXT_HELP_BUTTON = wx.NewId()    REF = wx.NewId()    COMMENT = wx.NewId()    CUSTOM = wx.NewId()    for i in range(99): wx.NewId()   # reserve IDs for custom controls    LAST = wx.NewId()    class PullDownMenu:    ID_EXPAND = wx.NewId()    ID_COLLAPSE = wx.NewId()    ID_PASTE_SIBLING = wx.NewId()    ID_TOOL_PASTE = wx.NewId()    ID_SUBCLASS = wx.NewId()    def __init__(self, parent):        self.ID_DELETE = parent.ID_DELETE        wx.EVT_MENU_RANGE(parent, ID_NEW.PANEL, ID_NEW.LAST, parent.OnCreate)        wx.EVT_MENU_RANGE(parent, 1000 + ID_NEW.PANEL, 1000 + ID_NEW.LAST, parent.OnReplace)        wx.EVT_MENU(parent, self.ID_COLLAPSE, parent.OnCollapse)        wx.EVT_MENU(parent, self.ID_EXPAND, parent.OnExpand)        wx.EVT_MENU(parent, self.ID_PASTE_SIBLING, parent.OnPaste)        wx.EVT_MENU(parent, self.ID_SUBCLASS, parent.OnSubclass)        # We connect to tree, but process in frame        wx.EVT_MENU_HIGHLIGHT_ALL(g.tree, parent.OnPullDownHighlight)        # Mapping from IDs to element names        self.createMap = {            ID_NEW.PANEL: 'wxPanel',            ID_NEW.DIALOG: 'wxDialog',            ID_NEW.FRAME: 'wxFrame',            ID_NEW.WIZARD: 'wxWizard',            ID_NEW.WIZARD_PAGE: 'wxWizardPage',            ID_NEW.WIZARD_PAGE_SIMPLE: 'wxWizardPageSimple',            ID_NEW.TOOL_BAR: 'wxToolBar',            ID_NEW.TOOL: 'tool',            ID_NEW.STATUS_BAR: 'wxStatusBar',            ID_NEW.MENU_BAR: 'wxMenuBar',            ID_NEW.MENU: 'wxMenu',            ID_NEW.MENU_ITEM: 'wxMenuItem',            ID_NEW.BITMAP: 'wxBitmap',            ID_NEW.ICON: 'wxIcon',            ID_NEW.SEPARATOR: 'separator',            ID_NEW.STATIC_TEXT: 'wxStaticText',            ID_NEW.TEXT_CTRL: 'wxTextCtrl',            ID_NEW.BUTTON: 'wxButton',            ID_NEW.BITMAP_BUTTON: 'wxBitmapButton',            ID_NEW.RADIO_BUTTON: 'wxRadioButton',            ID_NEW.SPIN_BUTTON: 'wxSpinButton',            ID_NEW.TOGGLE_BUTTON: 'wxToggleButton',            ID_NEW.STATIC_BOX: 'wxStaticBox',            ID_NEW.CHECK_BOX: 'wxCheckBox',            ID_NEW.RADIO_BOX: 'wxRadioBox',            ID_NEW.COMBO_BOX: 'wxComboBox',            ID_NEW.LIST_BOX: 'wxListBox',            ID_NEW.CHECK_LIST: 'wxCheckListBox',            ID_NEW.STATIC_LINE: 'wxStaticLine',            ID_NEW.STATIC_BITMAP: 'wxStaticBitmap',            ID_NEW.CHOICE: 'wxChoice',            ID_NEW.SLIDER: 'wxSlider',            ID_NEW.GAUGE: 'wxGauge',            ID_NEW.SCROLL_BAR: 'wxScrollBar',            ID_NEW.TREE_CTRL: 'wxTreeCtrl',            ID_NEW.LIST_CTRL: 'wxListCtrl',            ID_NEW.NOTEBOOK: 'wxNotebook',            ID_NEW.CHOICEBOOK: 'wxChoicebook',            ID_NEW.LISTBOOK: 'wxListbook',            ID_NEW.SPLITTER_WINDOW: 'wxSplitterWindow',            ID_NEW.GRID: 'wxGrid',            ID_NEW.SCROLLED_WINDOW: 'wxScrolledWindow',            ID_NEW.HTML_WINDOW: 'wxHtmlWindow',            ID_NEW.CALENDAR_CTRL: 'wxCalendarCtrl',            ID_NEW.DATE_CTRL: 'wxDatePickerCtrl',            ID_NEW.FILE_PICKER_CTRL: 'wxFilePickerCtrl',            ID_NEW.GENERIC_DIR_CTRL: 'wxGenericDirCtrl',            ID_NEW.SPIN_CTRL: 'wxSpinCtrl',            ID_NEW.BOX_SIZER: 'wxBoxSizer',            ID_NEW.STATIC_BOX_SIZER: 'wxStaticBoxSizer',            ID_NEW.GRID_SIZER: 'wxGridSizer',            ID_NEW.FLEX_GRID_SIZER: 'wxFlexGridSizer',            ID_NEW.GRID_BAG_SIZER: 'wxGridBagSizer',            ID_NEW.STD_DIALOG_BUTTON_SIZER: 'wxStdDialogButtonSizer',            ID_NEW.SPACER: 'spacer',            ID_NEW.UNKNOWN: 'unknown',            ID_NEW.OK_BUTTON: 'wxButton',            ID_NEW.YES_BUTTON: 'wxButton',            ID_NEW.SAVE_BUTTON: 'wxButton',            ID_NEW.APPLY_BUTTON: 'wxButton',            ID_NEW.NO_BUTTON: 'wxButton',            ID_NEW.CANCEL_BUTTON: 'wxButton',            ID_NEW.HELP_BUTTON: 'wxButton',            ID_NEW.CONTEXT_HELP_BUTTON: 'wxButton',            }        self.topLevel = [            (ID_NEW.PANEL, 'Panel', 'Create panel'),            (ID_NEW.DIALOG, 'Dialog', 'Create dialog'),            (ID_NEW.FRAME, 'Frame', 'Create frame'),            (ID_NEW.WIZARD, 'Wizard', 'Create wizard'),            None,            (ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),            (ID_NEW.MENU_BAR, 'MenuBar', 'Create menubar'),            (ID_NEW.MENU, 'Menu', 'Create menu'),            None,            (ID_NEW.BITMAP, 'Bitmap', 'Create bitmap'),            (ID_NEW.ICON, 'Icon', 'Create icon'),            ]        self.containers = [             (ID_NEW.PANEL, 'Panel', 'Create panel'),             (ID_NEW.NOTEBOOK, 'Notebook', 'Create notebook control'),             (ID_NEW.CHOICEBOOK, 'Choicebook', 'Create choicebook control'),             (ID_NEW.LISTBOOK, 'Listbook', 'Create listbook control'),             (ID_NEW.SPLITTER_WINDOW, 'SplitterWindow', 'Create splitter window'),             (ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),             (ID_NEW.STATUS_BAR, 'StatusBar', 'Create status bar'),#             (ID_NEW.WIZARD_PAGE, 'WizardPage', 'Create wizard page'),             (ID_NEW.WIZARD_PAGE_SIMPLE, 'WizardPageSimple', 'Create simple wizard page'),            ]        self.sizers = [             (ID_NEW.BOX_SIZER, 'BoxSizer', 'Create box sizer'),             (ID_NEW.STATIC_BOX_SIZER, 'StaticBoxSizer',              'Create static box sizer'),             (ID_NEW.GRID_SIZER, 'GridSizer', 'Create grid sizer'),             (ID_NEW.FLEX_GRID_SIZER, 'FlexGridSizer',              'Create flexgrid sizer'),             (ID_NEW.GRID_BAG_SIZER, 'GridBagSizer',              'Create gridbag sizer'),#             (ID_NEW.STD_DIALOG_BUTTON_SIZER, 'StdDialogButtonSizer',#              'Create standard button sizer'),             (ID_NEW.SPACER, 'Spacer', 'Create spacer'),             ]        self.controls = [            ['control', 'Various controls',             (ID_NEW.STATIC_TEXT, 'Label', 'Create label'),             (ID_NEW.STATIC_BITMAP, 'Bitmap', 'Create bitmap'),             (ID_NEW.STATIC_LINE, 'Line', 'Create line'),             (ID_NEW.TEXT_CTRL, 'TextBox', 'Create text box'),             (ID_NEW.CHOICE, 'Choice', 'Create choice'),             (ID_NEW.SLIDER, 'Slider', 'Create slider'),             (ID_NEW.GAUGE, 'Gauge', 'Create gauge'),             (ID_NEW.SPIN_CTRL, 'SpinCtrl', 'Create spin'),             (ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'),             (ID_NEW.TREE_CTRL, 'TreeCtrl', 'Create tree'),             (ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list'),#             (ID_NEW.GRID, 'Grid', 'Create grid'),             (ID_NEW.SCROLLED_WINDOW, 'ScrolledWindow', 'Create scrolled window'),             (ID_NEW.HTML_WINDOW, 'HtmlWindow', 'Create HTML window'),             (ID_NEW.CALENDAR_CTRL, 'CalendarCtrl', 'Create calendar control'),             (ID_NEW.DATE_CTRL, 'DatePickerCtrl', 'Create date picker control'),#             (ID_NEW.FILE_PICKER_CTRL, 'FilePickerCtrl', 'Create file picker control'),             (ID_NEW.GENERIC_DIR_CTRL, 'GenericDirCtrl', 'Create generic dir control'),             (ID_NEW.UNKNOWN, 'Unknown', 'Create custom control placeholder'),             ],            ['button', 'Buttons',             (ID_NEW.BUTTON, 'Button', 'Create button'),             (ID_NEW.BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'),             (ID_NEW.RADIO_BUTTON, 'RadioButton', 'Create radio button'),             (ID_NEW.SPIN_BUTTON, 'SpinButton', 'Create spin button'),             (ID_NEW.TOGGLE_BUTTON, 'ToggleButton', 'Create toggle button'),             ],            ['box', 'Boxes',             (ID_NEW.STATIC_BOX, 'StaticBox', 'Create static box'),             (ID_NEW.CHECK_BOX, 'CheckBox', 'Create check box'),             (ID_NEW.RADIO_BOX, 'RadioBox', 'Create radio box'),             (ID_NEW.COMBO_BOX, 'ComboBox', 'Create combo box'),             (ID_NEW.LIST_BOX, 'ListBox', 'Create list box'),             (ID_NEW.CHECK_LIST, 'CheckListBox', 'Create checklist box'),             ],            ['container', 'Containers',             (ID_NEW.PANEL, 'Panel', 'Create panel'),             (ID_NEW.NOTEBOOK, 'Notebook', 'Create notebook control'),             (ID_NEW.CHOICEBOOK, 'Choicebook', 'Create choicebook control'),             (ID_NEW.LISTBOOK, 'Listbook', 'Create listbook control'),             (ID_NEW.SPLITTER_WINDOW, 'SplitterWindow', 'Create splitter window'),             (ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'),             (ID_NEW.STATUS_BAR, 'StatusBar', 'Create status bar'),             (ID_NEW.MENU_BAR, 'MenuBar', 'Create menubar'),#             (ID_NEW.WIZARD_PAGE, 'Wizard Page', 'Create wizard page'),             (ID_NEW.WIZARD_PAGE_SIMPLE, 'WizardPageSimple', 'Create simple wizard page'),             ],            ['sizer', 'Sizers',             (ID_NEW.BOX_SIZER, 'BoxSizer', 'Create box sizer'),             (ID_NEW.STATIC_BOX_SIZER, 'StaticBoxSizer',              'Create static box sizer'),             (ID_NEW.GRID_SIZER, 'GridSizer', 'Create grid sizer'),             (ID_NEW.FLEX_GRID_SIZER, 'FlexGridSizer',              'Create flexgrid sizer'),             (ID_NEW.GRID_BAG_SIZER, 'GridBagSizer',              'Create gridbag sizer'),             (ID_NEW.SPACER, 'Spacer', 'Create spacer'),             (ID_NEW.STD_DIALOG_BUTTON_SIZER, 'StdDialogButtonSizer',              'Create standard button sizer'),             ]            ]        self.menuControls = [            (ID_NEW.MENU, 'Menu', 'Create menu'),            (ID_NEW.MENU_ITEM, 'MenuItem', 'Create menu item'),            (ID_NEW.SEPARATOR, 'Separator', 'Create separator'),            ]        self.toolBarControls = [            (ID_NEW.TOOL, 'Tool', 'Create tool'),            (ID_NEW.SEPARATOR, 'Separator', 'Create separator'),            ['control', 'Various controls',             (ID_NEW.STATIC_TEXT, 'Label', 'Create label'),             (ID_NEW.STATIC_BITMAP, 'Bitmap', 'Create bitmap'),             (ID_NEW.STATIC_LINE, 'Line', 'Create line'),             (ID_NEW.TEXT_CTRL, 'TextBox', 'Create text box'),             (ID_NEW.CHOICE, 'Choice', 'Create choice'),             (ID_NEW.SLIDER, 'Slider', 'Create slider'),             (ID_NEW.GAUGE, 'Gauge', 'Create gauge'),             (ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'),             (ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list control'),             ],

⌨️ 快捷键说明

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