]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/stxview/StructuredText/STDOM.py
Merged wxPython 2.4.x to the 2.5 branch (Finally!!!)
[wxWidgets.git] / wxPython / samples / stxview / StructuredText / STDOM.py
diff --git a/wxPython/samples/stxview/StructuredText/STDOM.py b/wxPython/samples/stxview/StructuredText/STDOM.py
deleted file mode 100644 (file)
index c38f2fa..0000000
+++ /dev/null
@@ -1,736 +0,0 @@
-##############################################################################
-# 
-# Zope Public License (ZPL) Version 1.0
-# -------------------------------------
-# 
-# Copyright (c) Digital Creations.  All rights reserved.
-# 
-# This license has been certified as Open Source(tm).
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-# 
-# 1. Redistributions in source code must retain the above copyright
-#    notice, this list of conditions, and the following disclaimer.
-# 
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions, and the following disclaimer in
-#    the documentation and/or other materials provided with the
-#    distribution.
-# 
-# 3. Digital Creations requests that attribution be given to Zope
-#    in any manner possible. Zope includes a "Powered by Zope"
-#    button that is installed by default. While it is not a license
-#    violation to remove this button, it is requested that the
-#    attribution remain. A significant investment has been put
-#    into Zope, and this effort will continue if the Zope community
-#    continues to grow. This is one way to assure that growth.
-# 
-# 4. All advertising materials and documentation mentioning
-#    features derived from or use of this software must display
-#    the following acknowledgement:
-# 
-#      "This product includes software developed by Digital Creations
-#      for use in the Z Object Publishing Environment
-#      (http://www.zope.org/)."
-# 
-#    In the event that the product being advertised includes an
-#    intact Zope distribution (with copyright and license included)
-#    then this clause is waived.
-# 
-# 5. Names associated with Zope or Digital Creations must not be used to
-#    endorse or promote products derived from this software without
-#    prior written permission from Digital Creations.
-# 
-# 6. Modified redistributions of any form whatsoever must retain
-#    the following acknowledgment:
-# 
-#      "This product includes software developed by Digital Creations
-#      for use in the Z Object Publishing Environment
-#      (http://www.zope.org/)."
-# 
-#    Intact (re-)distributions of any official Zope release do not
-#    require an external acknowledgement.
-# 
-# 7. Modifications are encouraged but must be packaged separately as
-#    patches to official Zope releases.  Distributions that do not
-#    clearly separate the patches from the original work must be clearly
-#    labeled as unofficial distributions.  Modifications which do not
-#    carry the name Zope may be packaged in any form, as long as they
-#    conform to all of the clauses above.
-# 
-# 
-# Disclaimer
-# 
-#   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
-#   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-#   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-#   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
-#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-#   SUCH DAMAGE.
-# 
-# 
-# This software consists of contributions made by Digital Creations and
-# many individuals on behalf of Digital Creations.  Specific
-# attributions are listed in the accompanying credits file.
-# 
-##############################################################################
-"""
-DOM implementation in StructuredText : Read-Only methods
-
-All standard Zope objects support DOM to a limited extent.
-"""
-import string
-
-
-# Node type codes
-# ---------------
-
-ELEMENT_NODE                  = 1
-ATTRIBUTE_NODE                = 2
-TEXT_NODE                     = 3
-CDATA_SECTION_NODE            = 4
-ENTITY_REFERENCE_NODE         = 5
-ENTITY_NODE                   = 6
-PROCESSING_INSTRUCTION_NODE   = 7
-COMMENT_NODE                  = 8
-DOCUMENT_NODE                 = 9
-DOCUMENT_TYPE_NODE            = 10
-DOCUMENT_FRAGMENT_NODE        = 11
-NOTATION_NODE                 = 12
-
-# Exception codes
-# ---------------
-
-INDEX_SIZE_ERR                = 1
-DOMSTRING_SIZE_ERR            = 2
-HIERARCHY_REQUEST_ERR         = 3
-WRONG_DOCUMENT_ERR            = 4
-INVALID_CHARACTER_ERR         = 5
-NO_DATA_ALLOWED_ERR           = 6
-NO_MODIFICATION_ALLOWED_ERR   = 7
-NOT_FOUND_ERR                 = 8
-NOT_SUPPORTED_ERR             = 9
-INUSE_ATTRIBUTE_ERR           = 10
-
-# Exceptions
-# ----------
-
-class DOMException(Exception):
-    pass
-class IndexSizeException(DOMException):
-    code = INDEX_SIZE_ERR
-class DOMStringSizeException(DOMException):
-    code = DOMSTRING_SIZE_ERR
-class HierarchyRequestException(DOMException):
-    code = HIERARCHY_REQUEST_ERR
-class WrongDocumentException(DOMException):
-    code = WRONG_DOCUMENT_ERR
-class InvalidCharacterException(DOMException):
-    code = INVALID_CHARACTER_ERR
-class NoDataAllowedException(DOMException):
-    code = NO_DATA_ALLOWED_ERR
-class NoModificationAllowedException(DOMException):
-    code = NO_MODIFICATION_ALLOWED_ERR
-class NotFoundException(DOMException):
-    code = NOT_FOUND_ERR
-class NotSupportedException(DOMException):
-    code = NOT_SUPPORTED_ERR
-class InUseAttributeException(DOMException):
-    code = INUSE_ATTRIBUTE_ERR
-
-# Node classes
-# ------------
-
-class ParentNode:
-   """
-   A node that can have children, or, more precisely, that implements
-   the child access methods of the DOM.
-   """
-
-   def getChildNodes(self, type=type, st=type('')):
-      """
-      Returns a NodeList that contains all children of this node.
-      If there are no children, this is a empty NodeList
-      """
-      
-      r=[]
-      for n in self.getChildren():
-         if type(n) is st: n=TextNode(n)
-         r.append(n.__of__(self))
-      
-      return  NodeList(r)
-   
-   def getFirstChild(self, type=type, st=type('')):
-      """
-      The first child of this node. If there is no such node
-      this returns None
-      """
-      children = self.getChildren()
-
-      if not children:
-         return None
-         
-      n=children[0]
-
-      if type(n) is st:
-         n=TextNode(n)
-         
-      return n.__of__(self)
-
-   def getLastChild(self, type=type, st=type('')):
-      """
-      The last child of this node.  If there is no such node
-      this returns None.
-      """
-      children = self.getChildren()
-      if not children: return None
-      n=chidren[-1]
-      if type(n) is st: n=TextNode(n)
-      return n.__of__(self)
-
-   """
-   create aliases for all above functions in the pythony way.
-   """
-   
-   def _get_ChildNodes(self, type=type, st=type('')):
-      return self.getChildNodes(type,st)
-   
-   def _get_FirstChild(self, type=type, st=type('')):
-      return self.getFirstChild(type,st)
-
-   def _get_LastChild(self, type=type, st=type('')):
-      return self.getLastChild(type,st)
-  
-class NodeWrapper(ParentNode):
-   """
-   This is an acquisition-like wrapper that provides parent access for 
-   DOM sans circular references!
-   """
-
-   def __init__(self, aq_self, aq_parent):
-      self.aq_self=aq_self
-      self.aq_parent=aq_parent
-
-   def __getattr__(self, name):
-      return getattr(self.aq_self, name)
-    
-   def getParentNode(self):
-      """
-      The parent of this node.  All nodes except Document
-      DocumentFragment and Attr may have a parent
-      """
-      return self.aq_parent
-
-   def _getDOMIndex(self, children, getattr=getattr):
-      i=0
-      self=self.aq_self
-      for child in children:
-         if getattr(child, 'aq_self', child) is self:
-            self._DOMIndex=i
-            return i
-         i=i+1
-      return None
-
-   def getPreviousSibling(self,
-                          type=type,
-                          st=type(''),
-                          getattr=getattr,
-                          None=None):
-
-      """
-      The node immediately preceding this node.  If
-      there is no such node, this returns None.
-      """
-      
-      children = self.aq_parent.getChildren()
-      if not children:
-         return None
-
-      index=getattr(self, '_DOMIndex', None)
-      if index is None:
-         index=self._getDOMIndex(children)
-         if index is None: return None
-
-      index=index-1
-      if index < 0: return None
-      try: n=children[index]
-      except IndexError: return None
-      else:
-         if type(n) is st:
-            n=TextNode(n)
-         n._DOMIndex=index
-         return n.__of__(self)
-
-
-   def getNextSibling(self, type=type, st=type('')):
-      """
-      The node immediately preceding this node.  If
-      there is no such node, this returns None.
-      """
-      children = self.aq_parent.getChildren()
-      if not children:
-         return None
-
-      index=getattr(self, '_DOMIndex', None)
-      if index is None:
-         index=self._getDOMIndex(children)
-         if index is None:
-            return None
-
-      index=index+1
-      try: n=children[index]
-      except IndexError:
-         return None
-      else:
-         if type(n) is st:
-            n=TextNode(n)
-         n._DOMIndex=index
-         return n.__of__(self)
-
-   def getOwnerDocument(self):
-      """
-      The Document object associated with this node, if any.
-      """
-      return self.aq_parent.getOwnerDocument()
-
-   """
-   create aliases for all above functions in the pythony way.   
-   """
-   
-   def _get_ParentNode(self):
-      return self.getParentNode()
-
-   def _get_DOMIndex(self, children, getattr=getattr):
-      return self._getDOMIndex(children,getattr)
-      
-   def _get_PreviousSibling(self,
-                          type=type,
-                          st=type(''),
-                          getattr=getattr,
-                          None=None):
-
-      return self.getPreviousSibling(type,st,getattr,None)
-      
-   def _get_NextSibling(self, type=type, st=type('')):
-      return self.getNextSibling(type,st)
-      
-   def _get_OwnerDocument(self):
-      return self.getOwnerDocument()
-      
-class Node(ParentNode):
-   """
-   Node Interface
-   """
-
-   # Get a DOM wrapper with a parent link
-   def __of__(self, parent):
-      return NodeWrapper(self, parent)
-
-   # DOM attributes    
-   # --------------
-    
-   def getNodeName(self):
-      """
-      The name of this node, depending on its type
-      """
-
-   def getNodeValue(self):
-      """
-      The value of this node, depending on its type
-      """
-      return None
-
-   def getParentNode(self):
-      """
-      The parent of this node.  All nodes except Document
-      DocumentFragment and Attr may have a parent
-      """
-
-   def getChildren(self):
-      """
-      Get a Python sequence of children
-      """
-      return ()
-
-   def getPreviousSibling(self,
-                          type=type,
-                          st=type(''),
-                          getattr=getattr,
-                          None=None):
-      """
-      The node immediately preceding this node.  If
-      there is no such node, this returns None.
-      """
-
-   def getNextSibling(self, type=type, st=type('')):
-      """
-      The node immediately preceding this node.  If
-      there is no such node, this returns None.
-      """
-
-   def getAttributes(self):
-      """
-      Returns a NamedNodeMap containing the attributes
-      of this node (if it is an element) or None otherwise.
-      """
-      return None
-
-   def getOwnerDocument(self):
-      """
-      The Document object associated with this node, if any.
-      """
-        
-    # DOM Methods    
-    # -----------
-    
-   def hasChildNodes(self):
-      """
-      Returns true if the node has any children, false
-      if it doesn't.
-      """
-      return len(self.getChildren())
-
-   """
-   create aliases for all above functions in the pythony way.
-   """
-
-   def _get_NodeName(self):
-      return self.getNodeName()
-      
-   def _get_NodeValue(self):
-      return self.getNodeValue()
-      
-   def _get_ParentNode(self):
-      return self.getParentNode()
-
-   def _get_Children(self):
-      return self.getChildren()
-
-   def _get_PreviousSibling(self,
-                          type=type,
-                          st=type(''),
-                          getattr=getattr,
-                          None=None):
-      
-      return self.getPreviousSibling(type,st,getattr,None)
-      
-   def _get_NextSibling(self, type=type, st=type('')):
-      return self.getNextSibling()
-
-   def _get_Attributes(self):
-      return self.getAttributes()
-
-   def _get_OwnerDocument(self):
-      return self.getOwnerDocument()
-    
-   def _has_ChildNodes(self):
-      return self.hasChildNodes()
-      
-         
-class TextNode(Node):
-
-   def __init__(self, str): self._value=str
-      
-   def getNodeType(self):
-      return TEXT_NODE
-      
-   def getNodeName(self):
-      return '#text'
-
-   def getNodeValue(self):
-      return self._value
-   
-   """
-   create aliases for all above functions in the pythony way.
-   """
-   
-   def _get_NodeType(self):
-      return self.getNodeType()
-      
-   def _get_NodeName(self):
-      return self.getNodeName()
-
-   def _get_NodeValue(self):
-      return self.getNodeValue()
-
-class Element(Node):
-   """
-   Element interface
-   """
-    
-   # Element Attributes
-   # ------------------
-    
-   def getTagName(self):
-      """The name of the element"""
-      return self.__class__.__name__
-    
-   def getNodeName(self):
-      """The name of this node, depending on its type"""
-      return self.__class__.__name__
-      
-   def getNodeType(self):
-      """A code representing the type of the node."""
-      return ELEMENT_NODE
-
-   def getNodeValue(self, type=type, st=type('')):
-      r=[]
-      for c in self.getChildren():
-         if type(c) is not st:
-            c=c.getNodeValue()
-         r.append(c)
-      return string.join(r,'')
-    
-   def getParentNode(self):
-      """
-      The parent of this node.  All nodes except Document
-      DocumentFragment and Attr may have a parent
-      """
-      
-   # Element Methods
-   # ---------------
-    
-   _attributes=()
-
-   def getAttribute(self, name): return getattr(self, name, None)
-   def getAttributeNode(self, name):
-      if hasattr(self, name):
-         return Attr(name, getattr(self, name))
-
-   def getAttributes(self):
-      d={}
-      for a in self._attributes:
-         d[a]=getattr(self, a, '')
-      return NamedNodeMap(d)
-
-   def getAttribute(self, name):
-      """Retrieves an attribute value by name."""
-      return None
-
-   def getAttributeNode(self, name):
-      """ Retrieves an Attr node by name or None if
-      there is no such attribute. """
-      return None
-
-   def getElementsByTagName(self, tagname):
-      """
-      Returns a NodeList of all the Elements with a given tag
-      name in the order in which they would be encountered in a
-      preorder traversal of the Document tree.  Parameter: tagname
-      The name of the tag to match (* = all tags). Return Value: A new
-      NodeList object containing all the matched Elements.
-      """
-      nodeList = []
-      for child in self.getChildren():
-         if (child.getNodeType()==ELEMENT_NODE and \
-             child.getTagName()==tagname or tagname== '*'):
-                
-            nodeList.append(child)
-               
-         if hasattr(child, 'getElementsByTagName'):
-            n1       = child.getElementsByTagName(tagname)
-            nodeList = nodeList + n1._data
-      return NodeList(nodeList)
-   
-   """
-   create aliases for all above functions in the pythony way.
-   """
-
-   def _get_TagName(self):
-      return self.getTagName()
-      
-   def _get_NodeName(self):
-      return self.getNodeName()
-      
-   def _get_NodeType(self):
-      return self.getNodeType()
-      
-   def _get_NodeValue(self, type=type, st=type('')):
-      return self.getNodeValue(type,st)
-      
-   def _get_ParentNode(self):
-      return self.getParentNode()
-      
-   def _get_Attribute(self, name):
-      return self.getAttribute(name)
-   
-   def _get_AttributeNode(self, name):
-      return self.getAttributeNode(name)
-      
-   def _get_Attributes(self):
-      return self.getAttributes()
-      
-   def _get_Attribute(self, name):
-      return self.getAttribute(name)
-      
-   def _get_AttributeNode(self, name):
-      return self.getAttributeNode(name)
-      
-   def _get_ElementsByTagName(self, tagname):
-      return self.getElementsByTagName(tagname)
-      
-         
-class NodeList:
-   """
-   NodeList interface - Provides the abstraction of an ordered
-   collection of nodes.
-    
-   Python extensions: can use sequence-style 'len', 'getitem', and
-   'for..in' constructs.
-   """
-    
-   def __init__(self,list=None):
-      self._data = list or []
-    
-   def __getitem__(self, index, type=type, st=type('')):
-      return self._data[index]
-
-   def __getslice__(self, i, j):
-      return self._data[i:j]
-    
-   def item(self, index):
-      """
-      Returns the index-th item in the collection
-      """
-      try:  return self._data[index]    
-      except IndexError: return None
-         
-   def getLength(self):
-      """
-      The length of the NodeList
-      """
-      return len(self._data)
-    
-   __len__=getLength
-   
-   """
-   create aliases for all above functions in the pythony way.
-   """
-   
-   def _get_Length(self):
-      return self.getLength()
-class NamedNodeMap:
-   """
-   NamedNodeMap interface - Is used to represent collections
-   of nodes that can be accessed by name.  NamedNodeMaps are not
-   maintained in any particular order.
-    
-   Python extensions: can use sequence-style 'len', 'getitem', and
-   'for..in' constructs, and mapping-style 'getitem'.
-   """
-    
-   def __init__(self, data=None):
-      if data is None:
-         data = {}
-      self._data = data
-
-   def item(self, index):
-      """
-      Returns the index-th item in the map
-      """
-      try: return self._data.values()[index]
-      except IndexError: return None
-        
-   def __getitem__(self, key):
-      if type(key)==type(1):
-         return self._data.values()[key]
-      else:
-         return self._data[key]
-            
-   def getLength(self):
-      """
-      The length of the NodeList
-      """
-      return len(self._data)
-    
-   __len__ = getLength
-    
-   def getNamedItem(self, name):
-      """
-      Retrieves a node specified by name. Parameters:
-      name Name of a node to retrieve. Return Value A Node (of any
-      type) with the specified name, or None if the specified name
-      did not identify any node in the map.
-      """
-      if self._data.has_key(name): 
-         return self._data[name]
-      return None
-
-   """
-   create aliases for all above functions in the pythony way.
-   """
-   def _get_Length(self):
-      return self.getLength()
-      
-   def _get_NamedItem(self, name):
-      return self.getNamedItem(name)
-      
-class Attr(Node):
-   """
-   Attr interface - The Attr interface represents an attriubte in an
-   Element object. Attr objects inherit the Node Interface
-   """
-
-   def __init__(self, name, value, specified=1):
-      self.name = name
-      self.value = value
-      self.specified = specified
-        
-   def getNodeName(self):
-      """
-      The name of this node, depending on its type
-      """
-      return self.name
-
-   def getName(self):
-      """
-      Returns the name of this attribute.
-      """
-      return self.name
-    
-   def getNodeValue(self):
-      """
-      The value of this node, depending on its type
-      """
-      return self.value
-
-   def getNodeType(self):
-      """
-      A code representing the type of the node.
-      """
-      return ATTRIBUTE_NODE
-
-   def getSpecified(self):
-      """
-      If this attribute was explicitly given a value in the
-      original document, this is true; otherwise, it is false.
-      """
-      return self.specified
-        
-   """
-   create aliases for all above functions in the pythony way.
-   """
-   
-   def _get_NodeName(self):
-      return self.getNodeName()
-
-   def _get_Name(self):
-      return self.getName()
-    
-   def _get_NodeValue(self):
-      return self.getNodeValue()
-
-   def _get_NodeType(self):
-      return self.getNodeType()
-
-   def _get_Specified(self):
-      return self.getSpecified()