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

📄 tree.py

📁 Wxpython Implemented on Windows CE, Source code
💻 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,v 1.34 2006/06/05 16:00:54 ROL Exp $

from xxx import *                       # xxx imports globals and params
import types
import traceback

# Constant to define standart window name
STD_NAME = '_XRCED_T_W'

# Icons
import images

class 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 encoding
class 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 commands
class 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()
    SCROLLED_WINDOW = wx.NewId()
    HTML_WINDOW = wx.NewId()
    CALENDAR_CTRL = wx.NewId()
    DATE_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()

    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.SCROLLED_WINDOW: 'wxScrolledWindow',
            ID_NEW.HTML_WINDOW: 'wxHtmlWindow',
            ID_NEW.CALENDAR_CTRL: 'wxCalendarCtrl',
            ID_NEW.DATE_CTRL: 'wxDatePickerCtrl',
            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.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.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'),

⌨️ 快捷键说明

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