📄 tree.py
字号:
# 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 + -