This requires refactoring NewCloseButton() in order to extract CreateCloseButton() from it, as XRC relies on being able to use two-step creation which was previously impossible for this kind of buttons. CreateCloseButton() is rather unusual, as it has to be declared in the derived, platform-specific class, in order to be able to call its Create(), but is defined only once in common, platform-independent, code. However the only alternative seems to be to have a static function, e.g. InitCloseButton(), which wouldn't be very pretty neither. Closes https://github.com/wxWidgets/wxWidgets/pull/2118
		
			
				
	
	
		
			2051 lines
		
	
	
		
			65 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			2051 lines
		
	
	
		
			65 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#
 | 
						|
# RELAX NG schema for XRC files.
 | 
						|
#
 | 
						|
# See https://docs.wxwidgets.org/trunk/overview_xrcformat.html for freeform
 | 
						|
# description of the format.
 | 
						|
#
 | 
						|
#
 | 
						|
#  Extending the grammar
 | 
						|
# -----------------------
 | 
						|
#
 | 
						|
# The grammar defined below validates all builtin <object> classes. Because the
 | 
						|
# XRC format is extensible, it allows any content in <object> nodes that have
 | 
						|
# non-builtin class.
 | 
						|
#
 | 
						|
# This can be customized by overriding the 'customClasses' rule in the grammar
 | 
						|
# when including it from another custom grammar file.
 | 
						|
#
 | 
						|
# For example, if you wish to validate that only wx's builtin classes are used,
 | 
						|
# you can disallow any custom <object>s (see xrc_schema_builtin_only.rnc):
 | 
						|
#
 | 
						|
#     include "xrc_schema.rnc" {
 | 
						|
#         customClasses = notAllowed
 | 
						|
#     }
 | 
						|
#
 | 
						|
# You can also add validation for custom classes:
 | 
						|
#
 | 
						|
#     default namespace = "http://www.wxwidgets.org/wxxrc"
 | 
						|
#     namespace xrc = "http://www.wxwidgets.org/wxxrc"
 | 
						|
#
 | 
						|
#     include "xrc_schema.rnc" {
 | 
						|
#         customClasses = myExtensionClasses
 | 
						|
#     }
 | 
						|
#
 | 
						|
#     myExtensionClasses = (MyFoo | MyBar | ...)
 | 
						|
#     MyFoo =
 | 
						|
#         element object {
 | 
						|
#             attribute class { "MyFoo" } &
 | 
						|
#             stdObjectNodeAttributes &
 | 
						|
#             [xrc:p="o"] element myElem {_, t_text }*
 | 
						|
#             ...
 | 
						|
#         }
 | 
						|
#     ...
 | 
						|
#
 | 
						|
 | 
						|
default namespace = "http://www.wxwidgets.org/wxxrc"
 | 
						|
namespace xrc = "http://www.wxwidgets.org/wxxrc"
 | 
						|
 | 
						|
start =
 | 
						|
    element resource {
 | 
						|
        # Versions 2.3.0.1 and 2.5.3.0 differ only in how is '\\' interpreted
 | 
						|
        # in textual content. That's not even validated here, so we accept
 | 
						|
        # both.  Additionally, even though the attribute is optional in the
 | 
						|
        # spec, we require it here; in other words, the schema cannot be used
 | 
						|
        # to validate XRC files from previous millennium.
 | 
						|
        attribute version { "2.3.0.1" | "2.5.3.0" },
 | 
						|
 | 
						|
        toplevelObjectNode*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
# IMPLEMENTATION NOTES:
 | 
						|
#
 | 
						|
# The guiding principle for writing this schema is to validate as much as we
 | 
						|
# possible can, but without introducing false negatives; it is not acceptable
 | 
						|
# to fail validation of a valid (per the human-readable XRC spec) XRC file.
 | 
						|
#
 | 
						|
# Unfortunately, there are some noteworthy complications when describing the
 | 
						|
# XRC format with a formal schema. Working around them results in uglier and
 | 
						|
# overly permissive schema:
 | 
						|
#
 | 
						|
#
 | 
						|
# (1) The biggest issue is with the 'platform' attribute, which may be used on
 | 
						|
# _any_ node in an XRC document. There's no way to specify "universal"
 | 
						|
# attributes that can be placed anywhere in RELAX NG, so we must add the
 | 
						|
# attribute everywhere. The 'platform' grammar rule is used for this and it has
 | 
						|
# an alias, '_', for reduced verbosity. Typical use:
 | 
						|
#
 | 
						|
#       element size   {_, t_size }? &
 | 
						|
#
 | 
						|
#
 | 
						|
# (2) The other 'platform'-related issue is that it messes up cardinality of
 | 
						|
# properties elements. Properties can only be specified once, so the two forms
 | 
						|
# for describing properties would be
 | 
						|
#
 | 
						|
#       1. element size {_, t_size }?   # optional property
 | 
						|
#       2. element size {_, t_size }    # required property
 | 
						|
#
 | 
						|
# (Fortunately, all XRC properties are optional, se the second case is a
 | 
						|
# non-issue and can be safely ignored. It is nevertheless briefly mentioned
 | 
						|
# below for explanatory purposes.)
 | 
						|
#
 | 
						|
# But this is problematic with 'platform', because it's reasonable (and,
 | 
						|
# indeed, done in the wild) to set properties differently for different
 | 
						|
# platforms:
 | 
						|
#
 | 
						|
#       <object class="wxMenuItem" name="menu_new_from_pot">
 | 
						|
#           <label platform="win">New catalog from POT file...</label>
 | 
						|
#           <label platform="unix|mac">New Catalog from POT File...</label>
 | 
						|
#       </object>
 | 
						|
#
 | 
						|
# But we now have the 'label' property _twice_ and validation fails. The
 | 
						|
# simplest fix is to change the cardinality of properties to allow this [A]:
 | 
						|
#
 | 
						|
#       1. element size {_, t_size }*    # optional property (0 or more times)
 | 
						|
#       2. element size {_, t_size }+    # required property (at least once)
 | 
						|
#
 | 
						|
# Of course, this is too lax and allows invalid (but gracefully handled by
 | 
						|
# wxXmlResource) markup like this:
 | 
						|
#
 | 
						|
#       <object class="wxMenuItem" name="menu_new_from_pot">
 | 
						|
#           <label>Something</label>
 | 
						|
#           <label>Else</label>
 | 
						|
#       </object>
 | 
						|
#
 | 
						|
# We could make this better by splitting the property declaration into two, one
 | 
						|
# for the case with 'platform' and one for without [B]:
 | 
						|
#
 | 
						|
#       (element size { t_size } | element size { attribute platform{string}, t_size }+)
 | 
						|
#
 | 
						|
# But this is verbose and unreadable with the amount of properties present in
 | 
						|
# the schema. Instead, we use the more-forbidding version and annotate
 | 
						|
# properties with 'p' annotation (for "property") to mark these uses of * as
 | 
						|
# special and enable post-processing of the schema.
 | 
						|
#
 | 
						|
# The value of the annotation is normally just "o" (for "optional" -- remember
 | 
						|
# that there are no required properties) to indicate optional properties.
 | 
						|
#
 | 
						|
# Since we have the annotation anyway, we take advantage of it to indicate
 | 
						|
# properties that are strictly speaking optional, but should almost always be
 | 
						|
# specified, even though they don't _have_ to be. A typical example would be
 | 
						|
# wxStaticText's label: it very rarely makes sense to omit it, but usually
 | 
						|
# doesn't. Such properties are indicated with the "important" value of the
 | 
						|
# annotation:
 | 
						|
#
 | 
						|
#       [xrc:p="o"] element checked { t_bool }*        # optional
 | 
						|
#       [xrc:p="important"] element label { t_text }*  # should be provided
 | 
						|
#
 | 
						|
# This makes it possible to implement tools that translate this schema into a
 | 
						|
# variant that uses [B].
 | 
						|
#
 | 
						|
 | 
						|
toplevelObjectNode = (objectRef | builtinToplevelClasses | customClasses)
 | 
						|
windowNode =         (objectRef | builtinWindowClasses | customClasses)
 | 
						|
sizerNode  =         (objectRef | builtinSizerClasses | customClasses)
 | 
						|
 | 
						|
# The following three lists must be updated when a new class is added
 | 
						|
# to this file.
 | 
						|
 | 
						|
builtinToplevelClasses =
 | 
						|
    ( builtinWindowClasses
 | 
						|
    | idsRange
 | 
						|
    | wxBitmap_or_wxIcon
 | 
						|
    | wxMenuBar
 | 
						|
    | wxMenu
 | 
						|
    )
 | 
						|
 | 
						|
builtinWindowClasses =
 | 
						|
    ( unknown
 | 
						|
    | wxActivityIndicator
 | 
						|
    | wxAnimationCtrl
 | 
						|
    | wxAuiManager
 | 
						|
    | wxAuiNotebook
 | 
						|
    | wxAuiPaneInfo
 | 
						|
    | wxAuiToolBar
 | 
						|
    | wxBannerWindow
 | 
						|
    | wxBitmapButton
 | 
						|
    | wxBitmapComboBox
 | 
						|
    | wxBitmapToggleButton
 | 
						|
    | wxButton
 | 
						|
    | wxCalendarCtrl
 | 
						|
    | wxCheckBox
 | 
						|
    | wxCheckListBox
 | 
						|
    | wxChoice
 | 
						|
    | wxChoicebook
 | 
						|
    | wxCommandLinkButton
 | 
						|
    | wxCollapsiblePane
 | 
						|
    | wxColourPickerCtrl
 | 
						|
    | wxComboBox
 | 
						|
    | wxComboCtrl
 | 
						|
    | wxDataViewCtrl
 | 
						|
    | wxDataViewListCtrl
 | 
						|
    | wxDataViewTreeCtrl
 | 
						|
    | wxDatePickerCtrl
 | 
						|
    | wxDialog
 | 
						|
    | wxDirPickerCtrl
 | 
						|
    | wxEditableListBox
 | 
						|
    | wxFileCtrl
 | 
						|
    | wxFilePickerCtrl
 | 
						|
    | wxFontPickerCtrl
 | 
						|
    | wxFrame
 | 
						|
    | wxGauge
 | 
						|
    | wxGenericAnimationCtrl
 | 
						|
    | wxGenericDirCtrl
 | 
						|
    | wxGrid
 | 
						|
    | wxHtmlWindow
 | 
						|
    | wxHyperlinkCtrl
 | 
						|
    | wxInfoBar
 | 
						|
    | wxListBox
 | 
						|
    | wxListbook
 | 
						|
    | wxListCtrl
 | 
						|
    | wxMDIParentFrame
 | 
						|
    | wxNotebook
 | 
						|
    | wxOwnerDrawnComboBox
 | 
						|
    | wxPanel
 | 
						|
    | wxPropertySheetDialog
 | 
						|
    | wxRadioButton
 | 
						|
    | wxRadioBox
 | 
						|
    | wxRibbonBar
 | 
						|
    | wxRibbonButtonBar
 | 
						|
    | wxRibbonControl
 | 
						|
    | wxRibbonGallery
 | 
						|
    | wxRibbonPage
 | 
						|
    | wxRibbonPanel
 | 
						|
    | wxRichTextCtrl
 | 
						|
    | wxScrollBar
 | 
						|
    | wxScrolledWindow
 | 
						|
    | wxSimpleHtmlListBox
 | 
						|
    | wxSimplebook
 | 
						|
    | wxSlider
 | 
						|
    | wxSpinButton
 | 
						|
    | wxSpinCtrl
 | 
						|
    | wxSpinCtrlDouble
 | 
						|
    | wxSplitterWindow
 | 
						|
    | wxSearchCtrl
 | 
						|
    | wxStatusBar
 | 
						|
    | wxStaticBitmap
 | 
						|
    | wxStaticBox
 | 
						|
    | wxStaticLine
 | 
						|
    | wxStaticText
 | 
						|
    | wxTextCtrl
 | 
						|
    | wxTimePickerCtrl
 | 
						|
    | wxToggleButton
 | 
						|
    | wxToolBar
 | 
						|
    | wxToolbook
 | 
						|
    | wxTreeCtrl
 | 
						|
    | wxTreebook
 | 
						|
    | wxWizard
 | 
						|
    )
 | 
						|
 | 
						|
builtinSizerClasses =
 | 
						|
    ( wxBoxSizer_horz
 | 
						|
    | wxBoxSizer_vert
 | 
						|
    | wxStaticBoxSizer_horz
 | 
						|
    | wxStaticBoxSizer_vert
 | 
						|
    | wxGridSizer
 | 
						|
    | wxFlexGridSizer
 | 
						|
    | wxGridBagSizer
 | 
						|
    | wxWrapSizer_horz
 | 
						|
    | wxWrapSizer_vert
 | 
						|
    | wxStdDialogButtonSizer
 | 
						|
    )
 | 
						|
 | 
						|
builtinClassesNames =
 | 
						|
    ( "wxBitmap"
 | 
						|
    | "wxIcon"
 | 
						|
    | "wxMenuBar"
 | 
						|
    | "wxMenu"
 | 
						|
 | 
						|
    | "unknown"
 | 
						|
 | 
						|
    | "wxActivityIndicator"
 | 
						|
    | "wxAnimationCtrl"
 | 
						|
    | "wxAuiManager"
 | 
						|
    | "wxAuiNotebook"
 | 
						|
    | "wxAuiPaneInfo"
 | 
						|
    | "wxAuiToolBar"
 | 
						|
    | "wxBannerWindow"
 | 
						|
    | "wxBitmapButton"
 | 
						|
    | "wxBitmapComboBox"
 | 
						|
    | "wxBitmapToggleButton"
 | 
						|
    | "wxButton"
 | 
						|
    | "wxCalendarCtrl"
 | 
						|
    | "wxCheckBox"
 | 
						|
    | "wxCheckListBox"
 | 
						|
    | "wxChoice"
 | 
						|
    | "wxChoicebook"
 | 
						|
    | "wxCommandLinkButton"
 | 
						|
    | "wxCollapsiblePane"
 | 
						|
    | "wxColourPickerCtrl"
 | 
						|
    | "wxComboBox"
 | 
						|
    | "wxComboCtrl"
 | 
						|
    | "wxDataViewCtrl"
 | 
						|
    | "wxDataViewListCtrl"
 | 
						|
    | "wxDataViewTreeCtrl"
 | 
						|
    | "wxDatePickerCtrl"
 | 
						|
    | "wxDialog"
 | 
						|
    | "wxDirPickerCtrl"
 | 
						|
    | "wxEditableListBox"
 | 
						|
    | "wxFileCtrl"
 | 
						|
    | "wxFilePickerCtrl"
 | 
						|
    | "wxFontPickerCtrl"
 | 
						|
    | "wxFrame"
 | 
						|
    | "wxGauge"
 | 
						|
    | "wxGenericAnimationCtrl"
 | 
						|
    | "wxGenericDirCtrl"
 | 
						|
    | "wxGrid"
 | 
						|
    | "wxHtmlWindow"
 | 
						|
    | "wxHyperlinkCtrl"
 | 
						|
    | "wxInfoBar"
 | 
						|
    | "wxListBox"
 | 
						|
    | "wxListbook"
 | 
						|
    | "wxListCtrl"
 | 
						|
    | "wxMDIParentFrame"
 | 
						|
    | "wxNotebook"
 | 
						|
    | "wxOwnerDrawnComboBox"
 | 
						|
    | "wxPanel"
 | 
						|
    | "wxPropertySheetDialog"
 | 
						|
    | "wxRadioButton"
 | 
						|
    | "wxRadioBox"
 | 
						|
    | "wxRibbonBar"
 | 
						|
    | "wxRibbonButtonBar"
 | 
						|
    | "wxRibbonControl"
 | 
						|
    | "wxRibbonGallery"
 | 
						|
    | "wxRibbonPage"
 | 
						|
    | "wxRibbonPanel"
 | 
						|
    | "wxRichTextCtrl"
 | 
						|
    | "wxScrollBar"
 | 
						|
    | "wxScrolledWindow"
 | 
						|
    | "wxSimpleHtmlListBox"
 | 
						|
    | "wxSimplebook"
 | 
						|
    | "wxSlider"
 | 
						|
    | "wxSpinButton"
 | 
						|
    | "wxSpinCtrl"
 | 
						|
    | "wxSpinCtrlDouble"
 | 
						|
    | "wxSplitterWindow"
 | 
						|
    | "wxSearchCtrl"
 | 
						|
    | "wxStatusBar"
 | 
						|
    | "wxStaticBitmap"
 | 
						|
    | "wxStaticBox"
 | 
						|
    | "wxStaticLine"
 | 
						|
    | "wxStaticText"
 | 
						|
    | "wxTextCtrl"
 | 
						|
    | "wxTimePickerCtrl"
 | 
						|
    | "wxToggleButton"
 | 
						|
    | "wxToolBar"
 | 
						|
    | "wxToolbook"
 | 
						|
    | "wxTreeCtrl"
 | 
						|
    | "wxTreebook"
 | 
						|
    | "wxWizard"
 | 
						|
 | 
						|
    | "wxBoxSizer"
 | 
						|
    | "wxStaticBoxSizer"
 | 
						|
    | "wxGridSizer"
 | 
						|
    | "wxFlexGridSizer"
 | 
						|
    | "wxGridBagSizer"
 | 
						|
    | "wxWrapSizer"
 | 
						|
    | "wxStdDialogButtonSizer"
 | 
						|
    )
 | 
						|
 | 
						|
# class names not used at toplevel, only within something else
 | 
						|
builtinNestedClassesNames =
 | 
						|
    ( "wxMenuItem"
 | 
						|
    | "separator"
 | 
						|
    | "break"
 | 
						|
    | "space"
 | 
						|
    | "label"
 | 
						|
    | "tool"
 | 
						|
    | "panewindow"
 | 
						|
    | "notebookpage"
 | 
						|
    | "choicebookpage"
 | 
						|
    | "listbookpage"
 | 
						|
    | "simplebookpage"
 | 
						|
    | "treebookpage"
 | 
						|
    | "propertysheetpage"
 | 
						|
    | "ownerdrawnitem"
 | 
						|
    | "listcol"
 | 
						|
    | "listitem"
 | 
						|
    | "wxMDIChildFrame"
 | 
						|
    | "page" | "panel" | "button" | "item"  # wxRibbon classes
 | 
						|
    | "wxWizardPage"
 | 
						|
    | "wxWizardPageSimple"
 | 
						|
    )
 | 
						|
 | 
						|
allPossibleBuiltinClassNames = (builtinClassesNames | builtinNestedClassesNames)
 | 
						|
 | 
						|
 | 
						|
# This grammar rule can be used to plug in any extensions used in an
 | 
						|
# application. By default, it allows any content under custom <object>
 | 
						|
# nodes.
 | 
						|
customClasses =
 | 
						|
    element object {
 | 
						|
        attribute class { string - allPossibleBuiltinClassNames } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        anyXMLContent*
 | 
						|
    }
 | 
						|
 | 
						|
# Helper for specifying arbitrary content.
 | 
						|
anyXMLContent =
 | 
						|
  element * {
 | 
						|
    (attribute * { text }
 | 
						|
     | text
 | 
						|
     | anyXMLContent)*
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
# Annotations used to mark special kinds of content:
 | 
						|
#
 | 
						|
# [xrc:p] marks properties, with two possible values:
 | 
						|
#
 | 
						|
#     [xrc:p="o"]           for normal/optional properties
 | 
						|
#     [xrc:p="important"]   for important properties that
 | 
						|
#                           should almost always be set
 | 
						|
#
 | 
						|
 | 
						|
 | 
						|
# All <object> nodes (except the pseudo-classes) have these attributes.
 | 
						|
stdObjectNodeAttributes =
 | 
						|
        attribute subclass { t_identifier }? &
 | 
						|
        attribute name     { t_identifier }? &
 | 
						|
        platform
 | 
						|
 | 
						|
# All (almost) wxWindow-derived objects have these properties.
 | 
						|
stdWindowProperties =
 | 
						|
        [xrc:p="o"] element pos     {_, t_position }* &
 | 
						|
        [xrc:p="o"] element size    {_, t_size }* &
 | 
						|
        [xrc:p="o"] element style   {_, t_style }* &
 | 
						|
        [xrc:p="o"] element exstyle {_, t_style }* &
 | 
						|
        [xrc:p="o"] element fg      {_, t_colour }* &
 | 
						|
        [xrc:p="o"] element ownfg   {_, t_colour }* &
 | 
						|
        [xrc:p="o"] element bg      {_, t_colour }* &
 | 
						|
        [xrc:p="o"] element ownbg   {_, t_colour }* &
 | 
						|
        [xrc:p="o"] element enabled {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element focused {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element hidden  {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element tooltip {_, t_text }* &
 | 
						|
        [xrc:p="o"] element variant {_, t_variant }* &
 | 
						|
        [xrc:p="o"] element font    {_, t_font }* &
 | 
						|
        [xrc:p="o"] element ownfont {_, t_font }* &
 | 
						|
        [xrc:p="o"] element help    {_, t_text }*
 | 
						|
 | 
						|
platform =
 | 
						|
        attribute platform {
 | 
						|
            xsd:string { pattern = "(win|mac|unix)( *\| *(win|mac|unix))*" }
 | 
						|
        }?
 | 
						|
# shorthand alias for 'platform' for use in properties definitions and
 | 
						|
# elsewhere where 'platform' would be too verbose
 | 
						|
_ = platform
 | 
						|
 | 
						|
 | 
						|
# Basic data types.
 | 
						|
 | 
						|
t_identifier = string
 | 
						|
t_text       = string
 | 
						|
t_string     = string
 | 
						|
t_bool       = "1" | "0"
 | 
						|
t_integer    = xsd:integer
 | 
						|
t_unsigned   = xsd:nonNegativeInteger
 | 
						|
t_float      = xsd:float
 | 
						|
t_direction  = "wxLEFT" | "wxRIGHT" | "wxTOP" | "wxBOTTOM"
 | 
						|
t_style      = xsd:string { pattern = "(wx[A-Z0-9_]+)( *\| *(wx[A-Z0-9_]+))*" }
 | 
						|
t_showeffect = "wxSHOW_EFFECT_NONE" | "wxSHOW_EFFECT_ROLL_TO_LEFT" |
 | 
						|
               "wxSHOW_EFFECT_ROLL_TO_RIGHT" | "wxSHOW_EFFECT_ROLL_TO_TOP" |
 | 
						|
               "wxSHOW_EFFECT_ROLL_TO_BOTTOM" | "wxSHOW_EFFECT_SLIDE_TO_LEFT" |
 | 
						|
               "wxSHOW_EFFECT_SLIDE_TO_RIGHT" | "wxSHOW_EFFECT_SLIDE_TO_TOP" |
 | 
						|
               "wxSHOW_EFFECT_SLIDE_TO_BOTTOM" | "wxSHOW_EFFECT_BLEND" |
 | 
						|
               "wxSHOW_EFFECT_EXPAND"
 | 
						|
 | 
						|
t_url        = string
 | 
						|
t_colour     = xsd:string { pattern = "#[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]" } |
 | 
						|
               xsd:string { pattern = "[^#].*" }
 | 
						|
t_position   = t_size
 | 
						|
t_size       = xsd:string { pattern = "(-?\d+),(-?\d+)d?" }
 | 
						|
t_pair_ints  = xsd:string { pattern = "(-?\d+),(-?\d+)" }
 | 
						|
t_dimension  = xsd:string { pattern = "(-?\d+)d?" }
 | 
						|
 | 
						|
t_bitmap     = t_url?,
 | 
						|
               (
 | 
						|
                   attribute stock_id { t_identifier},
 | 
						|
                   attribute stock_client { t_identifier}?
 | 
						|
               )?
 | 
						|
 | 
						|
t_font       = (
 | 
						|
                   [xrc:p="o"] element size         {_, t_float }* &
 | 
						|
                   [xrc:p="o"] element style        {_, ("normal" | "italic" | "slant") }* &
 | 
						|
                   [xrc:p="o"] element weight       {_, ("normal" | "thin" | "extralight" | "light" | 
 | 
						|
                                                         "medium" | "semibold" | "bold" | "extrabold" | 
 | 
						|
                                                         "heavy" | "extraheavy" | t_integer) }* &
 | 
						|
                   [xrc:p="o"] element family       {_, ("roman" | "script" | "decorative" | "swiss" |
 | 
						|
                                                         "modern" | "teletype") }* &
 | 
						|
                   [xrc:p="o"] element underlined   {_, t_bool }* &
 | 
						|
                   [xrc:p="o"] element strikethrough{_, t_bool }* &
 | 
						|
                   [xrc:p="o"] element face         {_, t_text }* &
 | 
						|
                   [xrc:p="o"] element encoding     {_, t_text }* &
 | 
						|
                   [xrc:p="o"] element sysfont      {_, ("wxSYS_OEM_FIXED_FONT" | "wxSYS_ANSI_FIXED_FONT" |
 | 
						|
                                                         "wxSYS_ANSI_VAR_FONT" | "wxSYS_SYSTEM_FONT" |
 | 
						|
                                                         "wxSYS_DEVICE_DEFAULT_FONT" | "wxSYS_SYSTEM_FIXED_FONT" |
 | 
						|
                                                         "wxSYS_DEFAULT_GUI_FONT") }* &
 | 
						|
                   [xrc:p="o"] element inherit      {_, t_bool }* &
 | 
						|
                   [xrc:p="o"] element relativesize {_, t_float }*
 | 
						|
               )
 | 
						|
 | 
						|
t_variant    = "normal" | "small" | "mini" | "large"
 | 
						|
 | 
						|
t_imagelist  = (
 | 
						|
                   [xrc:p="o"] element mask {_, t_bool }* &
 | 
						|
                   [xrc:p="o"] element size {_, t_size }* &
 | 
						|
                   element bitmap {_, t_bitmap }+
 | 
						|
               )
 | 
						|
 | 
						|
t_list_of_numbers = xsd:string { pattern = "\d+(,\d+)*" }
 | 
						|
 | 
						|
t_list_of_numbers_with_weights = xsd:string { pattern = "\d+(:\d+)?(,\d+(:\d+)?)*" }
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Handlers for non-<object> content:
 | 
						|
#
 | 
						|
 | 
						|
idsRange =
 | 
						|
    element ids-range {
 | 
						|
        attribute name  { t_identifier },
 | 
						|
        attribute size  { t_integer }?,
 | 
						|
        attribute start { t_integer }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
objectRef =
 | 
						|
    element object_ref {
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        attribute ref { t_identifier } &
 | 
						|
        anyXMLContent*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Handlers for specific <object> classes follow:
 | 
						|
#
 | 
						|
 | 
						|
unknown =
 | 
						|
    element object {
 | 
						|
        attribute class { "unknown" } &
 | 
						|
        attribute name  { t_identifier } &
 | 
						|
        platform &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxBitmap_or_wxIcon =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBitmap" | "wxIcon" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        t_bitmap
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxActivityIndicator =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxActivityIndicator" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element running {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxAnimationCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxAnimationCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element animation       {_, t_url }* &
 | 
						|
        [xrc:p="o"] element inactive-bitmap {_, t_bitmap }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxAuiManager =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxAuiManager" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        (wxAuiPaneInfo | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxAuiNotebook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxAuiNotebook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        (wxAuiNotebook_notebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxAuiNotebook_notebookpage =
 | 
						|
    element object {
 | 
						|
        attribute class  { "notebookpage" } &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap   {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxAuiPaneInfo =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxAuiPaneInfo" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="important"] element caption {_, t_text }* &
 | 
						|
        [xrc:p="o"] element caption_visible {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element close_button    {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element minimize_button {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element maximize_button {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element pin_button      {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element gripper         {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element pane_border     {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element dock            {_} * &
 | 
						|
        [xrc:p="o"] element float           {_} * &
 | 
						|
        [xrc:p="o"] element top_dockable    {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element bottom_dockable {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element left_dockable   {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element right_dockable  {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element dock_fixed      {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element resizable       {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element movable         {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element floatable       {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element floating_size   {_, t_size }* &
 | 
						|
        [xrc:p="o"] element min_size        {_, t_size }* &
 | 
						|
        [xrc:p="o"] element max_size        {_, t_size }* &
 | 
						|
        [xrc:p="o"] element best_size       {_, t_size }* &
 | 
						|
        [xrc:p="o"] element row             {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element layer           {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element default_pane    {_} * &
 | 
						|
        [xrc:p="o"] element toolbar_pane    {_} * &
 | 
						|
        [xrc:p="o"] element center_pane     {_} * &
 | 
						|
        [xrc:p="o"] element direction       {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element top             {_} * &
 | 
						|
        [xrc:p="o"] element bottom          {_} * &
 | 
						|
        [xrc:p="o"] element left            {_} * &
 | 
						|
        [xrc:p="o"] element right           {_} * &
 | 
						|
        [xrc:p="o"] element centre          {_} * &
 | 
						|
        [xrc:p="o"] element center          {_} * &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxAuiToolBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxAuiToolBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element bitmapsize        {_, t_size }* &
 | 
						|
        [xrc:p="o"] element margins           {_, t_size }* &
 | 
						|
        [xrc:p="o"] element packing           {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element separation        {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element dontattachtoframe {_, t_bool }* &
 | 
						|
        (
 | 
						|
            windowNode |
 | 
						|
            wxToolBar_tool |
 | 
						|
            wxAuiToolBar_label |
 | 
						|
            element object { attribute class { "separator" }, platform } |
 | 
						|
            element object { attribute class { "space" } &
 | 
						|
                platform &
 | 
						|
                [xrc:p="o"] element width {_, t_integer }* &
 | 
						|
                [xrc:p="o"] element proportion {_, t_integer }*
 | 
						|
            }
 | 
						|
        )*
 | 
						|
    }
 | 
						|
 | 
						|
wxAuiToolBar_label =
 | 
						|
    element object {
 | 
						|
        attribute class { "label" } &
 | 
						|
            platform &
 | 
						|
            attribute name { t_identifier }? &
 | 
						|
            [xrc:p="important"] element label {_, t_text }* &
 | 
						|
            [xrc:p="o"]         element width {_, t_integer }*
 | 
						|
        }
 | 
						|
 | 
						|
wxBannerWindow =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBannerWindow" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element direction {_, t_direction }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
           element bitmap {_, t_bitmap } |
 | 
						|
           (
 | 
						|
               element gradient-start {_, t_colour} &
 | 
						|
               element gradient-end {_, t_colour }
 | 
						|
           )
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element title     {_, t_text }* &
 | 
						|
        [xrc:p="o"] element message   {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxBitmapButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBitmapButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element default  {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element close    {_, t_bool }* &
 | 
						|
        [xrc:p="important"] element bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element focus    {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element disabled {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element hover    {_, t_bitmap }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxBitmapComboBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBitmapComboBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element value     {_, t_text }* &
 | 
						|
        (wxBitmapComboBox_ownerdrawnitem | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxBitmapComboBox_ownerdrawnitem =
 | 
						|
    element object {
 | 
						|
        attribute class  { "ownerdrawnitem" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element text {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap   {_, t_bitmap }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxBitmapToggleButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBitmapToggleButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element checked {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element label          {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap         {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element bitmapposition {_, t_direction }* &
 | 
						|
        [xrc:p="o"] element default        {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxCalendarCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxCalendarCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxCheckBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxCheckBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element checked {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxCheckListBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxCheckListBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {
 | 
						|
                attribute checked { t_bool }?,
 | 
						|
                t_text
 | 
						|
            }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxChoice =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxChoice" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxChoicebook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxChoicebook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        (wxChoicebook_choicebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxChoicebook_choicebookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "choicebookpage" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap {_, t_bitmap } |
 | 
						|
            element image  {_, t_integer }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxCommandLinkButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxCommandLinkButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element note {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element default {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxCollapsiblePane =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxCollapsiblePane" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element collapsed {_, t_bool }* &
 | 
						|
        (wxCollapsiblePane_panewindow | objectRef)?
 | 
						|
    }
 | 
						|
 | 
						|
wxCollapsiblePane_panewindow =
 | 
						|
    element object {
 | 
						|
        attribute class { "panewindow" } &
 | 
						|
        platform &
 | 
						|
        (sizerNode | windowNode)
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxColourPickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxColourPickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_colour }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxComboBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxComboBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element value     {_, t_string }* &
 | 
						|
        [xrc:p="o"] element hint      {_, t_text }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxComboCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxComboCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_string }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDataViewCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDataViewCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDataViewListCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDataViewListCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDataViewTreeCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDataViewTreeCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDatePickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDatePickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element null-text {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDialog =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDialog" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon     {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element centered {_, t_bool }* &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxDirPickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxDirPickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value   {_, t_string }* &
 | 
						|
        [xrc:p="important"] element message {_, t_text}*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxEditableListBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxEditableListBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element label {_, t_text}* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxFileCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxFileCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element defaultdirectory {_, t_string }* &
 | 
						|
        [xrc:p="o"] element defaultfilename  {_, t_string }* &
 | 
						|
        [xrc:p="o"] element wildcard         {_, t_string }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxFilePickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxFilePickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value    {_, t_string }* &
 | 
						|
        [xrc:p="important"] element message  {_, t_text }* &
 | 
						|
        [xrc:p="o"] element wildcard {_, t_string }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxFontPickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxFontPickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_font }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxFrame =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxFrame" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon     {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element centered {_, t_bool }* &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxGauge =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGauge" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element range  {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element value  {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element shadow {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element bezel  {_, t_dimension }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxGenericAnimationCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGenericAnimationCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element animation       {_, t_url }* &
 | 
						|
        [xrc:p="o"] element inactive-bitmap {_, t_bitmap }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxGenericDirCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGenericDirCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element defaultfolder {_, t_string }* &
 | 
						|
        [xrc:p="o"] element filter        {_, t_text }* &
 | 
						|
        [xrc:p="o"] element defaultfilter {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxGrid =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGrid" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxHtmlWindow =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxHtmlWindow" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element url       {_, t_url } |
 | 
						|
            element htmlcode  {_, t_text }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element borders {_, t_dimension }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxHyperlinkCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxHyperlinkCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="important"] element url   {_, t_url }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxInfoBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxInfoBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element effectduration {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element showeffect     {_, t_showeffect }* &
 | 
						|
        [xrc:p="o"] element hideeffect     {_, t_showeffect }* &
 | 
						|
        element object {
 | 
						|
            attribute class { "button" } &
 | 
						|
            attribute name  { t_identifier }? &
 | 
						|
            platform &
 | 
						|
            [xrc:p="o"] element label {_, t_text }*
 | 
						|
        }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxListBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxListBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxListbook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxListbook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        (wxListbook_listbookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxListbook_listbookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "listbookpage" } &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap {_, t_bitmap } |
 | 
						|
            element image  {_, t_integer }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxListCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxListCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        [xrc:p="o"] element imagelist-small {_, t_imagelist }* &
 | 
						|
        (wxListCtrl_listcol | wxListCtrl_listitem | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxListCtrl_listcol =
 | 
						|
    element object {
 | 
						|
        attribute class { "listcol" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="o"] element align   {_, ("wxLIST_FORMAT_LEFT" | "wxLIST_FORMAT_RIGHT" |
 | 
						|
                                         "wxLIST_FORMAT_CENTRE") }* &
 | 
						|
        [xrc:p="o"] element text    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element width   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element image   {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
wxListCtrl_listitem =
 | 
						|
    element object {
 | 
						|
        attribute class { "listitem" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="o"] element align        {_, ("wxLIST_FORMAT_LEFT" | "wxLIST_FORMAT_RIGHT" |
 | 
						|
                                              "wxLIST_FORMAT_CENTRE") }* &
 | 
						|
        [xrc:p="o"] element bg           {_, t_colour }* &
 | 
						|
        [xrc:p="o"] element col          {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element data         {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element font         {_, t_font }* &
 | 
						|
        [xrc:p="o"] element state        {_, ("wxLIST_STATE_FOCUSED" | "wxLIST_STATE_SELECTED") }* &
 | 
						|
        [xrc:p="o"] element text         {_, t_text }* &
 | 
						|
        [xrc:p="o"] element textcolour   {_, t_colour }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap   {_, t_bitmap } |
 | 
						|
            element image    {_, t_integer }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap-small {_, t_bitmap } |
 | 
						|
            element image-small  {_, t_integer }
 | 
						|
        )*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxMDIParentFrame =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxMDIParentFrame" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon     {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element centered {_, t_bool }* &
 | 
						|
        (wxMDIChildFrame | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxMDIChildFrame =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxMDIChildFrame" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon     {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element centered {_, t_bool }* &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxMenuBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxMenuBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element style {_, t_style }* &
 | 
						|
        (wxMenu | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxMenu =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxMenu" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element label   {_, t_text }* &
 | 
						|
        [xrc:p="o"] element style   {_, t_style }* &
 | 
						|
        [xrc:p="o"] element help    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element enabled {_, t_bool }* &
 | 
						|
        (
 | 
						|
            wxMenuItem |
 | 
						|
            wxMenu |
 | 
						|
            objectRef |
 | 
						|
            element object { attribute class { "separator" }, platform } |
 | 
						|
            element object { attribute class { "break" },     platform }
 | 
						|
        )*
 | 
						|
    }
 | 
						|
 | 
						|
wxMenuItem =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxMenuItem" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element label     {_, t_text }* &
 | 
						|
        [xrc:p="o"] element accel     {_, t_text }* &
 | 
						|
        [xrc:p="o"] element radio     {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element checkable {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element bitmap    {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element bitmap2   {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element help      {_, t_text }* &
 | 
						|
        [xrc:p="o"] element enabled   {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element checked   {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxNotebook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxNotebook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        (wxNotebook_notebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxNotebook_notebookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "notebookpage" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        (
 | 
						|
            element bitmap {_, t_bitmap } |
 | 
						|
            element image  {_, t_integer }
 | 
						|
        )? &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxOwnerDrawnComboBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxOwnerDrawnComboBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection  {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element value      {_, t_string }* &
 | 
						|
        [xrc:p="o"] element buttonsize {_, t_size }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxPanel =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxPanel" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxPropertySheetDialog =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxPropertySheetDialog" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon     {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element centered {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element buttons  {_, t_style }* &
 | 
						|
        (wxNotebook_notebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxPropertySheetDialog_propertysheetpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "propertysheetpage" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxRadioButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRadioButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element value {_, t_bool }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxRadioBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRadioBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element dimension {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {
 | 
						|
                platform,
 | 
						|
                attribute tooltip  { t_string }?,
 | 
						|
                attribute helptext { t_string }?,
 | 
						|
                attribute enabled  { t_bool }?,
 | 
						|
                attribute hidden   { t_bool }?,
 | 
						|
                attribute label    { t_bool }?,
 | 
						|
                t_text
 | 
						|
            }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxRibbonBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRibbonBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element art-provider {_, ("default" | "aui" | "msw") }* &
 | 
						|
        (wxRibbonPage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonButtonBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRibbonButtonBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        (wxRibbonButtonBar_button | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonButtonBar_button =
 | 
						|
    element object {
 | 
						|
        attribute class { "button" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element hybrid                {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element disabled              {_, t_bool }* &
 | 
						|
        [xrc:p="important"] element label         {_, t_text }* &
 | 
						|
        [xrc:p="important"] element bitmap        {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element small-bitmap          {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element disabled-bitmap       {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element small-disabled-bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element help                  {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonControl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRibbonControl" } &
 | 
						|
        attribute subclass { t_identifier } & # must be subclassed
 | 
						|
        attribute name     { t_identifier }? &
 | 
						|
        platform
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonGallery =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRibbonGallery" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        (wxRibbonGallery_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonGallery_item =
 | 
						|
    element object {
 | 
						|
        attribute class { "item" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element bitmap {_, t_bitmap }*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonPage =
 | 
						|
    element object {
 | 
						|
        # unfortunately, wxRibbonXmlHandler supports "page" alias
 | 
						|
        attribute class { "wxRibbonPage" | "page" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon  {_, t_bitmap }* &
 | 
						|
        (wxRibbon_anyControl | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbonPanel =
 | 
						|
    element object {
 | 
						|
        # unfortunately, wxRibbonXmlHandler supports "panel" alias
 | 
						|
        attribute class { "wxRibbonPanel" | "panel" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element icon  {_, t_bitmap }* &
 | 
						|
        (sizerNode | wxRibbon_anyControl | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxRibbon_anyControl = wxRibbonBar | wxRibbonButtonBar | wxRibbonControl |
 | 
						|
                      wxRibbonGallery | wxRibbonPanel
 | 
						|
 | 
						|
 | 
						|
wxRichTextCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxRichTextCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value     {_, t_text }* &
 | 
						|
        [xrc:p="o"] element maxlength {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxScrollBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxScrollBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value     {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element range     {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element thumbsize {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element pagesize  {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxScrolledWindow =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxScrolledWindow" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element scrollrate {_, t_size }* &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSimpleHtmlListBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSimpleHtmlListBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element selection {_, t_integer }* &
 | 
						|
        element content {
 | 
						|
            platform,
 | 
						|
            element item {_, t_text }*
 | 
						|
        }?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSimplebook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSimplebook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        (wxSimplebook_simplebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxSimplebook_simplebookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "simplebookpage" } &
 | 
						|
        platform &
 | 
						|
        element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSlider =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSlider" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value    {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element min      {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element max      {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element pagesize {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element linesize {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element tickfreq {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element tick     {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element thumb    {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element selmin   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element selmax   {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSpinButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSpinButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element min   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element max   {_, t_integer }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSpinCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSpinCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element min   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element max   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element base  {_, ("10" | "16") }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSpinCtrlDouble =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSpinCtrlDouble" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_float }* &
 | 
						|
        [xrc:p="o"] element min   {_, t_float }* &
 | 
						|
        [xrc:p="o"] element max   {_, t_float }* &
 | 
						|
        [xrc:p="o"] element inc   {_, t_float}*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSplitterWindow =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSplitterWindow" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element orientation {_, ("vertical" | "horizontal") }* &
 | 
						|
        [xrc:p="o"] element sashpos     {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element minsize     {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element gravity     {_, t_float }* &
 | 
						|
        (windowNode, windowNode?) # 1 or 2 child windows
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxSearchCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxSearchCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value {_, t_text }* &
 | 
						|
        [xrc:p="o"] element hint      {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxStatusBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStatusBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element fields {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element widths {_, t_list_of_numbers }* &
 | 
						|
        [xrc:p="o"] element styles {_, xsd:string { pattern = "wxSB_(NORMAL|FLAT|RAISED|SUNKEN)(,wxSB_(NORMAL|FLAT|RAISED|SUNKEN))*" } }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxStaticBitmap =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticBitmap" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        element bitmap {_, t_bitmap }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxStaticBox =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticBox" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxStaticLine =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticLine" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxStaticText =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticText" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element wrap  {_, t_dimension }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxTextCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxTextCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element value     {_, t_text }* &
 | 
						|
        [xrc:p="o"] element maxlength {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element forceupper{_, t_bool }* &
 | 
						|
        [xrc:p="o"] element hint      {_, t_text }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxTimePickerCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxTimePickerCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxToggleButton =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxToggleButton" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"] element checked {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element bitmap         {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element bitmapposition {_, t_direction }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxToolBar =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxToolBar" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element bitmapsize        {_, t_size }* &
 | 
						|
        [xrc:p="o"] element margins           {_, t_size }* &
 | 
						|
        [xrc:p="o"] element packing           {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element separation        {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element dontattachtoframe {_, t_bool }* &
 | 
						|
        (
 | 
						|
            windowNode |
 | 
						|
            wxToolBar_tool |
 | 
						|
            element object { attribute class { "separator" }, platform } |
 | 
						|
            element object { attribute class { "space" },     platform }
 | 
						|
        )*
 | 
						|
    }
 | 
						|
 | 
						|
wxToolBar_tool =
 | 
						|
    element object {
 | 
						|
        attribute class { "tool" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="important"] element bitmap {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element bitmap2  {_, t_bitmap }* &
 | 
						|
        [xrc:p="o"] element label    {_, t_text }* &
 | 
						|
        [xrc:p="o"] element tooltip  {_, t_text }* &
 | 
						|
        [xrc:p="o"] element longhelp {_, t_text }* &
 | 
						|
        [xrc:p="o"] element disabled {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element checked  {_, t_bool }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element radio    {_, t_bool } |
 | 
						|
            element toggle   {_, t_bool } |
 | 
						|
            element dropdown {_, wxMenu? }
 | 
						|
        )*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxToolbook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxToolbook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        (wxToolbook_toolbookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxToolbook_toolbookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "toolbookpage" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap {_, t_bitmap } |
 | 
						|
            element image  {_, t_integer }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxTreeCtrl =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxTreeCtrl" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }*
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxTreebook =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxTreebook" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element imagelist {_, t_imagelist }* &
 | 
						|
        (wxTreebook_treebookpage | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxTreebook_treebookpage =
 | 
						|
    element object {
 | 
						|
        attribute class { "treebookpage" } &
 | 
						|
        platform &
 | 
						|
        [xrc:p="important"] element depth {_, t_integer }* &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        [xrc:p="o"](
 | 
						|
            element bitmap {_, t_bitmap } |
 | 
						|
            element image  {_, t_integer }
 | 
						|
        )* &
 | 
						|
        [xrc:p="o"] element selected {_, t_bool }* &
 | 
						|
        [xrc:p="o"] element expanded {_, t_bool }* &
 | 
						|
        windowNode
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
wxWizard =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxWizard" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element title  {_, t_text }* &
 | 
						|
        [xrc:p="o"] element bitmap {_, t_bitmap }* &
 | 
						|
        (wxWizardPage_any | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxWizardPage_any =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxWizardPage" | "wxWizardPageSimple" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdWindowProperties &
 | 
						|
        [xrc:p="o"] element bitmap {_, t_bitmap }* &
 | 
						|
        (sizerNode | windowNode* )?
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
# There is no simple way to validate the combination of flags using "|" symbol,
 | 
						|
# so we have to resort to regular expressions here. They are long and unwieldy
 | 
						|
# which is especially bad for the error messages, so we try to make them more
 | 
						|
# clear by inserting a dummy match element providing the description of the
 | 
						|
# expected value.
 | 
						|
#
 | 
						|
# And to make writing and reading patterns simpler in this schema itself, we
 | 
						|
# always put the part containing the always allowed flags on a (very long) line
 | 
						|
# of its own (the one starting with "wxALL").
 | 
						|
 | 
						|
t_sizer_flags_grow = xsd:string {
 | 
						|
        pattern = "(wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_sizer_flags_alignv = xsd:string {
 | 
						|
        pattern = "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_sizer_flags_alignh = xsd:string {
 | 
						|
        pattern = "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_horz_sizer_flags = ("*** Sizer flags excluding horizontal alignment ones ***"
 | 
						|
        | t_sizer_flags_grow
 | 
						|
        | t_sizer_flags_alignv
 | 
						|
        )
 | 
						|
t_vert_sizer_flags = ("*** Sizer flags excluding vertical alignment ones ***"
 | 
						|
        | t_sizer_flags_grow
 | 
						|
        | t_sizer_flags_alignh
 | 
						|
        )
 | 
						|
 | 
						|
t_sizer_flags_grow_alignv = xsd:string {
 | 
						|
        pattern = "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_sizer_flags_grow_alignh = xsd:string {
 | 
						|
        pattern = "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxGROW|wxEXPAND" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_sizer_flags_align = xsd:string {
 | 
						|
        pattern = "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  "( *\| *" ~
 | 
						|
                  "(wxALIGN_CENTER|wxALIGN_CENTRE" ~
 | 
						|
                  "|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL" ~
 | 
						|
                  "|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL" ~
 | 
						|
                  "|wxALIGN_LEFT|wxALIGN_RIGHT" ~
 | 
						|
                  "|wxALIGN_TOP|wxALIGN_BOTTOM" ~
 | 
						|
                  "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | 
						|
                  ")*"
 | 
						|
    }
 | 
						|
 | 
						|
t_grid_sizer_flags = ("*** Sizer flags with either wxGROW/wxEXPAND or alignment in each direction ***"
 | 
						|
        | t_sizer_flags_grow
 | 
						|
        | t_sizer_flags_grow_alignv
 | 
						|
        | t_sizer_flags_grow_alignh
 | 
						|
        | t_sizer_flags_align
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
# The items of different sizers are very similar but not quite identical:
 | 
						|
#  - For 1D sizers we need to define 2 versions to ensure that alignment flags
 | 
						|
#    in the major sizer direction are not accepted.
 | 
						|
#  - Only 1D sizers have "option" attribute.
 | 
						|
#  - For 2D sizers we accept alignment flags in both directions but not when
 | 
						|
#    combined with wxGROW and/or wxEXPAND.
 | 
						|
#  - Only wxGridBagSizer items have cell{pos,span} attributes.
 | 
						|
wxBoxSizer_horz_item =
 | 
						|
    element object {
 | 
						|
        (
 | 
						|
            (
 | 
						|
                attribute class { "spacer" } &
 | 
						|
                [xrc:p="o"] element size {_, t_size }*
 | 
						|
            )
 | 
						|
            |
 | 
						|
            (
 | 
						|
                attribute class { "sizeritem" } &
 | 
						|
                (windowNode | sizerNode)
 | 
						|
            )
 | 
						|
        ) &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element option   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element border   {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element minsize  {_, t_size }* &
 | 
						|
        [xrc:p="o"] element ratio    {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element flag     {_, t_horz_sizer_flags}*
 | 
						|
    }
 | 
						|
 | 
						|
wxBoxSizer_vert_item =
 | 
						|
    element object {
 | 
						|
        (
 | 
						|
            (
 | 
						|
                attribute class { "spacer" } &
 | 
						|
                [xrc:p="o"] element size {_, t_size }*
 | 
						|
            )
 | 
						|
            |
 | 
						|
            (
 | 
						|
                attribute class { "sizeritem" } &
 | 
						|
                (windowNode | sizerNode)
 | 
						|
            )
 | 
						|
        ) &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element option   {_, t_integer }* &
 | 
						|
        [xrc:p="o"] element border   {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element minsize  {_, t_size }* &
 | 
						|
        [xrc:p="o"] element ratio    {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element flag     {_, t_vert_sizer_flags }*
 | 
						|
    }
 | 
						|
 | 
						|
wxGridSizer_item =
 | 
						|
    element object {
 | 
						|
        (
 | 
						|
            (
 | 
						|
                attribute class { "spacer" } &
 | 
						|
                [xrc:p="o"] element size {_, t_size }*
 | 
						|
            )
 | 
						|
            |
 | 
						|
            (
 | 
						|
                attribute class { "sizeritem" } &
 | 
						|
                (windowNode | sizerNode)
 | 
						|
            )
 | 
						|
        ) &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element border   {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element minsize  {_, t_size }* &
 | 
						|
        [xrc:p="o"] element ratio    {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element flag     {_, t_grid_sizer_flags }*
 | 
						|
    }
 | 
						|
 | 
						|
wxSizerGB_item =
 | 
						|
    element object {
 | 
						|
        (
 | 
						|
            (
 | 
						|
                attribute class { "spacer" } &
 | 
						|
                [xrc:p="o"] element size {_, t_size }*
 | 
						|
            )
 | 
						|
            |
 | 
						|
            (
 | 
						|
                attribute class { "sizeritem" } &
 | 
						|
                (windowNode | sizerNode)
 | 
						|
            )
 | 
						|
        ) &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        [xrc:p="o"] element border   {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element minsize  {_, t_size }* &
 | 
						|
        [xrc:p="o"] element ratio    {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element cellpos  {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element cellspan {_, t_pair_ints }* &
 | 
						|
        [xrc:p="o"] element flag     {_,
 | 
						|
            xsd:string {
 | 
						|
                pattern = "(wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxALL|wxGROW|wxEXPAND|wxSHAPED|wxSTRETCH_NOT|wxALIGN_CENTER|wxALIGN_CENTRE|wxALIGN_LEFT|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN)( *\| *(wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxALL|wxGROW|wxEXPAND|wxSHAPED|wxSTRETCH_NOT|wxALIGN_CENTER|wxALIGN_CENTRE|wxALIGN_LEFT|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTRE_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTRE_VERTICAL|wxFIXED_MINSIZE|wxRESERVE_SPACE_EVEN_IF_HIDDEN))*"
 | 
						|
            }
 | 
						|
        }*
 | 
						|
    }
 | 
						|
 | 
						|
# All sizer objects except wxStdDialogButtonSizer have these properties.
 | 
						|
stdSizerProperties =
 | 
						|
        [xrc:p="o"] element minsize   {_, t_size }* &
 | 
						|
        [xrc:p="o"] element hideitems {_, t_bool }*
 | 
						|
 | 
						|
# Notice that horizontal orientation is the default (only for backwards
 | 
						|
# compatibility reasons, it would make more sense to require always specifying
 | 
						|
# it probably).
 | 
						|
wxBoxSizer_horz =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBoxSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="o"] element orient {_, "wxHORIZONTAL" }* &
 | 
						|
        (wxBoxSizer_horz_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxBoxSizer_vert =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxBoxSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        element orient {_, "wxVERTICAL" } &
 | 
						|
        (wxBoxSizer_vert_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxStaticBoxSizer_horz =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticBoxSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        element windowlabel {windowNode}* &
 | 
						|
        [xrc:p="o"] element orient  {_, "wxHORIZONTAL" }* &
 | 
						|
        (wxBoxSizer_horz_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxStaticBoxSizer_vert =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStaticBoxSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="important"] element label {_, t_text }* &
 | 
						|
        element windowlabel {windowNode}* &
 | 
						|
        element orient {_, "wxVERTICAL" } &
 | 
						|
        (wxBoxSizer_vert_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxGridSizer =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGridSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="o"] element rows    {_, t_unsigned }* &
 | 
						|
        [xrc:p="o"] element cols    {_, t_unsigned }* &
 | 
						|
        [xrc:p="o"] element vgap    {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element hgap    {_, t_dimension }* &
 | 
						|
        (wxGridSizer_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxFlexGridSizer =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxFlexGridSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="o"] element rows                {_, t_unsigned }* &
 | 
						|
        [xrc:p="o"] element cols                {_, t_unsigned }* &
 | 
						|
        [xrc:p="o"] element vgap                {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element hgap                {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element flexibledirection   {_, ("wxVERTICAL" | "wxHORIZONTAL" | "wxBOTH") }* &
 | 
						|
        [xrc:p="o"] element nonflexiblegrowmode {_, ("wxFLEX_GROWMODE_NONE" |
 | 
						|
                                                     "wxFLEX_GROWMODE_SPECIFIED" |
 | 
						|
                                                     "wxFLEX_GROWMODE_ALL") }* &
 | 
						|
        [xrc:p="o"] element growablerows        {_, t_list_of_numbers_with_weights }* &
 | 
						|
        [xrc:p="o"] element growablecols        {_, t_list_of_numbers_with_weights }* &
 | 
						|
        (wxGridSizer_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxGridBagSizer =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxGridBagSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="o"] element vgap                {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element hgap                {_, t_dimension }* &
 | 
						|
        [xrc:p="o"] element flexibledirection   {_, ("wxVERTICAL" | "wxHORIZONTAL" | "wxBOTH") }* &
 | 
						|
        [xrc:p="o"] element nonflexiblegrowmode {_, ("wxFLEX_GROWMODE_NONE" |
 | 
						|
                                                     "wxFLEX_GROWMODE_SPECIFIED" |
 | 
						|
                                                     "wxFLEX_GROWMODE_ALL") }* &
 | 
						|
        [xrc:p="o"] element growablerows        {_, t_list_of_numbers_with_weights }* &
 | 
						|
        [xrc:p="o"] element growablecols        {_, t_list_of_numbers_with_weights }* &
 | 
						|
        (wxSizerGB_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxWrapSizer_horz =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxWrapSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        [xrc:p="important"] element orient {_, "wxHORIZONTAL" }* &
 | 
						|
        [xrc:p="o"] element flag    {_, t_style }* &
 | 
						|
        (wxBoxSizer_horz_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxWrapSizer_vert =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxWrapSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        stdSizerProperties &
 | 
						|
        element orient {_, "wxVERTICAL" } &
 | 
						|
        [xrc:p="o"] element flag    {_, t_style }* &
 | 
						|
        (wxBoxSizer_vert_item | objectRef)*
 | 
						|
    }
 | 
						|
 | 
						|
wxStdDialogButtonSizer =
 | 
						|
    element object {
 | 
						|
        attribute class { "wxStdDialogButtonSizer" } &
 | 
						|
        stdObjectNodeAttributes &
 | 
						|
        element object {
 | 
						|
            attribute class { "button" },
 | 
						|
            platform,
 | 
						|
            (wxButton | customClasses | objectRef)
 | 
						|
        }+
 | 
						|
    }
 |