Update the schema and the sample to show it in action. Closes https://github.com/wxWidgets/wxWidgets/pull/1564
		
			
				
	
	
		
			2035 lines
		
	
	
		
			64 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			2035 lines
		
	
	
		
			64 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
 | |
|     | 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"
 | |
|     | "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="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 }*
 | |
|     }
 | |
| 
 | |
| 
 | |
| 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
 | |
|     }
 | |
| 
 | |
| 
 | |
| 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 }*
 | |
|     }
 | |
| 
 | |
| 
 | |
| 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|wxRESERVE_SPACE_EVEN_IF_HIDDEN)" ~
 | |
|                   "( *\| *" ~
 | |
|                   "(wxGROW|wxEXPAND" ~
 | |
|                   "|wxALL|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxNORTH|wxSOUTH|wxEAST|wxWEST|wxSHAPED|wxSTRETCH_NOT|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|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|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|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|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|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|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|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|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|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|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|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|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)
 | |
|         }+
 | |
|     }
 |