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

📄 xxx.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
📖 第 1 页 / 共 4 页
字号:
        #if not os.path.dirname(path) and os.path.isfile(path):                except ImportError:        wx.LogError('ctypes module not found')        globals()[localname] = None        return    try:        dl = ctypes.CDLL(path)        globals()[localname] = dl        # Register AddXmlHandlers() if exists        try:            register(dl.AddXmlHandlers)        except:            pass    except:        wx.LogError('error loading dynamic library: %s' % path)        print traceback.print_exc()# Called when creating test windowdef addHandlers():    for h in _handlers:        if _CFuncPtr and isinstance(h, _CFuncPtr):            try:                apply(h, ())            except:                wx.LogError('error calling DL func: "%s"' % h)                print traceback.print_exc()        else:            try:                xrc.XmlResource.Get().AddHandler(apply(h, ()))            except:                wx.LogError('error adding XmlHandler: "%s"' % h)                print traceback.print_exc()def custom(klassName, klass='unknown'):    """Define custom control based on xrcClass.    klass: new object name    xrcClass: name of an existing XRC object class or              a class object defining class parameters.    """    if type(klass) is str:        # Copy correct xxx class under new name        kl = xxxDict[klass]        xxxClass = types.ClassType('xxx' + klassName, kl.__bases__, kl.__dict__)    else:        xxxClass = klass        # Register param IDs        for param in klass.allParams + klass.paramDict.keys():            if not paramIDs.has_key(param):                paramIDs[param] = wx.NewId()    # Insert in dictionaty    xxxDict[klassName] = xxxClass    # Add to menu    g.pullDownMenu.addCustom(klassName)class xxxParamComment(xxxParam):    locals = {}                         # namespace for comment directives    allow = None                        # undefined initial state for current file    def __init__(self, node):        xxxNode.__init__(self, node)        self.textNode = node        # Parse "pragma" comments if enabled        if node.data and node.data[0] == '%' and g.conf.allowExec != 'no' and \               xxxParamComment.allow is not False:            # Show warning            if g.conf.allowExec == 'ask' and xxxParamComment.allow is None:                flags = wx.ICON_EXCLAMATION | wx.YES_NO | wx.CENTRE                dlg = wx.MessageDialog(g.frame, '''This file contains executable %comment directives. Allow to execute?''',                                       'Warning', flags)                say = dlg.ShowModal()                dlg.Destroy()                if say == wx.ID_YES:                    xxxParamComment.allow = True                else:                    xxxParamComment.allow = False            try:                code = node.data[1:]                exec code in globals(), self.locals            except:                wx.LogError('exec error: "%s"' % code)                print traceback.print_exc()class xxxComment(xxxObject):    hasStyle = hasName = False    allParams = required = ['comment']        def __init__(self, parent, node):        self.parent = parent        self.node = node        self.isElement = False        self.undo = None        self.className = 'comment'        self.ref = self.subclass = None        self.params = {'comment': xxxParamComment(node)}            def treeName(self):        # Replace newlines by \n to avoid tree item resizing        return self.params['comment'].value().replace('\n', r'\n')################################################################################# Mapping of XRC names to xxx classesxxxDict = {    'wxPanel': xxxPanel,    'wxDialog': xxxDialog,    'wxFrame': xxxFrame,    'tool': xxxTool,    'wxToolBar': xxxToolBar,    'wxStatusBar': xxxStatusBar,    'wxWizard': xxxWizard,    'wxWizardPage': xxxWizardPage,    'wxWizardPageSimple': xxxWizardPageSimple,    'wxBitmap': xxxBitmap,    'wxIcon': xxxIcon,    'wxButton': xxxButton,    'wxBitmapButton': xxxBitmapButton,    'wxRadioButton': xxxRadioButton,    'wxSpinButton': xxxSpinButton,    'wxToggleButton' : xxxToggleButton,    'wxStaticBox': xxxStaticBox,    'wxStaticBitmap': xxxStaticBitmap,    'wxRadioBox': xxxRadioBox,    'wxComboBox': xxxComboBox,    'wxCheckBox': xxxCheckBox,    'wxListBox': xxxListBox,    'wxStaticText': xxxStaticText,    'wxStaticLine': xxxStaticLine,    'wxTextCtrl': xxxTextCtrl,    'wxChoice': xxxChoice,    'wxSlider': xxxSlider,    'wxGauge': xxxGauge,    'wxScrollBar': xxxScrollBar,    'wxTreeCtrl': xxxTreeCtrl,    'wxListCtrl': xxxListCtrl,    'wxCheckListBox': xxxCheckList,    'notebookpage': xxxPage,    'choicebookpage': xxxPage,    'listbookpage': xxxPage,    'wxNotebook': xxxNotebook,    'wxChoicebook': xxxChoicebook,    'wxListbook': xxxListbook,    'wxSplitterWindow': xxxSplitterWindow,    'wxHtmlWindow': xxxHtmlWindow,    'wxCalendarCtrl': xxxCalendarCtrl,    'wxGenericDirCtrl': xxxGenericDirCtrl,    'wxSpinCtrl': xxxSpinCtrl,    'wxScrolledWindow': xxxScrolledWindow,    'wxGrid': xxxGrid,    'wxFilePickerCtrl': xxxFilePickerCtrl,    'wxDatePickerCtrl': xxxDateCtrl,    'wxBoxSizer': xxxBoxSizer,    'wxStaticBoxSizer': xxxStaticBoxSizer,    'wxGridSizer': xxxGridSizer,    'wxFlexGridSizer': xxxFlexGridSizer,    'wxGridBagSizer': xxxGridBagSizer,    'wxStdDialogButtonSizer': xxxStdDialogButtonSizer,    'sizeritem': xxxSizerItem, 'button': xxxSizerItemButton,    'spacer': xxxSpacer,    'wxMenuBar': xxxMenuBar,    'wxMenu': xxxMenu,    'wxMenuItem': xxxMenuItem,    'separator': xxxSeparator,    'unknown': xxxUnknown,    'comment': xxxComment,    }# Create IDs for all parameters of all classesparamIDs = {'fg': wx.NewId(), 'bg': wx.NewId(), 'exstyle': wx.NewId(), 'font': wx.NewId(),            'enabled': wx.NewId(), 'focused': wx.NewId(), 'hidden': wx.NewId(),            'tooltip': wx.NewId(), 'encoding': wx.NewId(),            'cellpos': wx.NewId(), 'cellspan': wx.NewId(),            'text': wx.NewId()            }for cl in xxxDict.values():    if cl.allParams:        for param in cl.allParams + cl.paramDict.keys():            if not paramIDs.has_key(param):                paramIDs[param] = wx.NewId()################################################################################# Helper functions# Test for object elementsdef IsObject(node):    return node.nodeType == minidom.Node.ELEMENT_NODE and \           node.tagName in ['object', 'object_ref'] or \           node.nodeType == minidom.Node.COMMENT_NODE# Make XXX object from some DOM object, selecting correct classdef MakeXXXFromDOM(parent, node):    if node.nodeType == minidom.Node.COMMENT_NODE:        return xxxComment(parent, node)    if node.tagName == 'object_ref':        ref = node.getAttribute('ref')        refElem = FindResource(ref)        if refElem: cls = refElem.getAttribute('class')        else: return xxxUnknown(parent, node)    else:        refElem = None        cls = node.getAttribute('class')    try:        klass = xxxDict[cls]    except KeyError:        # If we encounter a weird class, use unknown template        print 'WARNING: unsupported class:', node.getAttribute('class')        klass = xxxUnknown    return klass(parent, node, refElem)# Make empty DOM elementdef MakeEmptyDOM(className):    elem = g.tree.dom.createElement('object')    elem.setAttribute('class', className)    # Set required and default parameters    xxxClass = xxxDict[className]    defaultNotRequired = filter(lambda x, l=xxxClass.required: x not in l,                                xxxClass.default.keys())    for param in xxxClass.required + defaultNotRequired:        textElem = g.tree.dom.createElement(param)        try:            textNode = g.tree.dom.createTextNode(xxxClass.default[param])        except KeyError:            textNode = g.tree.dom.createTextNode('')        textElem.appendChild(textNode)        elem.appendChild(textElem)    return elem# Make empty XXX objectdef MakeEmptyXXX(parent, className):    # Make corresponding DOM object first    elem = MakeEmptyDOM(className)    # Special handling, e.g. if parent is a sizer, we should create    # sizeritem object, except for spacers, etc.    if parent:        if parent.isSizer and className != 'spacer':            sizerItemElem = MakeEmptyDOM(parent.itemTag)            sizerItemElem.appendChild(elem)            elem = sizerItemElem        elif isinstance(parent, xxxNotebook):            pageElem = MakeEmptyDOM('notebookpage')            pageElem.appendChild(elem)            elem = pageElem        elif isinstance(parent, xxxChoicebook):            pageElem = MakeEmptyDOM('choicebookpage')            pageElem.appendChild(elem)            elem = pageElem        elif isinstance(parent, xxxListbook):            pageElem = MakeEmptyDOM('listbookpage')            pageElem.appendChild(elem)            elem = pageElem    # Now just make object    xxx = MakeXXXFromDOM(parent, elem)    # Special defaults for new panels and controls    if isinstance(xxx, xxxSizerItem):        if isinstance(xxx.child, xxxContainer) and not xxx.child.isSizer:            for param,v in xxxSizerItem.defaults_panel.items():                xxx.set(param, v)        elif isinstance(xxx.child, xxxObject):            for param,v in xxxSizerItem.defaults_control.items():                xxx.set(param, v)    return xxx            # Make empty DOM element for referencedef MakeEmptyRefDOM(ref):    elem = g.tree.dom.createElement('object_ref')    elem.setAttribute('ref', ref)    return elem# Make empty XXX objectdef MakeEmptyRefXXX(parent, ref):    # Make corresponding DOM object first    elem = MakeEmptyRefDOM(ref)    # If parent is a sizer, we should create sizeritem object, except for spacers    if parent:        if parent.isSizer:            sizerItemElem = MakeEmptyDOM(parent.itemTag)            sizerItemElem.appendChild(elem)            elem = sizerItemElem        elif isinstance(parent, xxxNotebook):            pageElem = MakeEmptyDOM('notebookpage')            pageElem.appendChild(elem)            elem = pageElem        elif isinstance(parent, xxxChoicebook):            pageElem = MakeEmptyDOM('choicebookpage')            pageElem.appendChild(elem)            elem = pageElem        elif isinstance(parent, xxxListbook):            pageElem = MakeEmptyDOM('listbookpage')            pageElem.appendChild(elem)            elem = pageElem    # Now just make object    xxx = MakeXXXFromDOM(parent, elem)    # Label is not used for references    xxx.allParams = xxx.allParams[:]    #xxx.allParams.remove('label')    return xxx# Make empty comment nodedef MakeEmptyCommentDOM():    node = g.tree.dom.createComment('')    return node# Make empty xxxCommentdef MakeEmptyCommentXXX(parent):    node = MakeEmptyCommentDOM()    # Now just make object    xxx = MakeXXXFromDOM(parent, node)    return xxx

⌨️ 快捷键说明

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