| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608 | 
							- #
 
- # RELAX NG schema for XRC files.
 
- #
 
- # See http://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:
 
- #
 
- #     include "xrc_schema.rnc" {
 
- #         customClasses = myExtensionClasses
 
- #     }
 
- #
 
- #     myExtensionClasses = (MyFoo | MyBar | ...)
 
- #     MyFoo =
 
- #         element object {
 
- #             attribute class { "MyFoo" },
 
- #             stdObjectNodeAttributes,
 
- #             ...
 
- #         }
 
- #     ...
 
- #
 
- 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
 
-     | wxAnimationCtrl
 
-     | wxAuiNotebook
 
-     | wxBannerWindow
 
-     | wxBitmapButton
 
-     | wxBitmapComboBox
 
-     | wxBitmapToggleButton
 
-     | wxButton
 
-     | wxCalendarCtrl
 
-     | wxCheckBox
 
-     | wxCheckListBox
 
-     | wxChoice
 
-     | wxChoicebook
 
-     | wxCommandLinkButton
 
-     | wxCollapsiblePane
 
-     | wxColourPickerCtrl
 
-     | wxComboBox
 
-     | wxComboCtrl
 
-     | wxDatePickerCtrl
 
-     | wxDialog
 
-     | wxDirPickerCtrl
 
-     | wxEditableListBox
 
-     | wxFileCtrl
 
-     | wxFilePickerCtrl
 
-     | wxFontPickerCtrl
 
-     | wxFrame
 
-     | wxGauge
 
-     | wxGenericDirCtrl
 
-     | wxGrid
 
-     | wxHtmlWindow
 
-     | wxHyperlinkCtrl
 
-     | wxListBox
 
-     | wxListbook
 
-     | wxListCtrl
 
-     | wxMDIParentFrame
 
-     | wxNotebook
 
-     | wxOwnerDrawnComboBox
 
-     | wxPanel
 
-     | wxPropertySheetDialog
 
-     | wxRadioButton
 
-     | wxRadioBox
 
-     | wxRibbonBar
 
-     | wxRibbonButtonBar
 
-     | wxRibbonControl
 
-     | wxRibbonGallery
 
-     | wxRibbonPage
 
-     | wxRibbonPanel
 
-     | wxRichTextCtrl
 
-     | wxScrollBar
 
-     | wxScrolledWindow
 
-     | wxSimpleHtmlListBox
 
-     | wxSlider
 
-     | wxSpinButton
 
-     | wxSpinCtrl
 
-     | wxSplitterWindow
 
-     | wxSearchCtrl
 
-     | wxStatusBar
 
-     | wxStaticBitmap
 
-     | wxStaticBox
 
-     | wxStaticLine
 
-     | wxStaticText
 
-     | wxTextCtrl
 
-     | wxTimePickerCtrl
 
-     | wxToggleButton
 
-     | wxToolBar
 
-     | wxToolbook
 
-     | wxTreeCtrl
 
-     | wxTreebook
 
-     | wxWizard
 
-     )
 
- builtinSizerClasses =
 
-     ( wxBoxSizer
 
-     | wxStaticBoxSizer
 
-     | wxGridSizer
 
-     | wxFlexGridSizer
 
-     | wxGridBagSizer
 
-     | wxWrapSizer
 
-     | wxStdDialogButtonSizer
 
-     )
 
- builtinClassesNames =
 
-     ( "wxBitmap"
 
-     | "wxIcon"
 
-     | "wxMenuBar"
 
-     | "wxMenu"
 
-     | "unknown"
 
-     | "wxAnimationCtrl"
 
-     | "wxAuiNotebook"
 
-     | "wxBannerWindow"
 
-     | "wxBitmapButton"
 
-     | "wxBitmapComboBox"
 
-     | "wxBitmapToggleButton"
 
-     | "wxButton"
 
-     | "wxCalendarCtrl"
 
-     | "wxCheckBox"
 
-     | "wxCheckListBox"
 
-     | "wxChoice"
 
-     | "wxChoicebook"
 
-     | "wxCommandLinkButton"
 
-     | "wxCollapsiblePane"
 
-     | "wxColourPickerCtrl"
 
-     | "wxComboBox"
 
-     | "wxComboCtrl"
 
-     | "wxDatePickerCtrl"
 
-     | "wxDialog"
 
-     | "wxDirPickerCtrl"
 
-     | "wxEditableListBox"
 
-     | "wxFileCtrl"
 
-     | "wxFilePickerCtrl"
 
-     | "wxFontPickerCtrl"
 
-     | "wxFrame"
 
-     | "wxGauge"
 
-     | "wxGenericDirCtrl"
 
-     | "wxGrid"
 
-     | "wxHtmlWindow"
 
-     | "wxHyperlinkCtrl"
 
-     | "wxListBox"
 
-     | "wxListbook"
 
-     | "wxListCtrl"
 
-     | "wxMDIParentFrame"
 
-     | "wxNotebook"
 
-     | "wxOwnerDrawnComboBox"
 
-     | "wxPanel"
 
-     | "wxPropertySheetDialog"
 
-     | "wxRadioButton"
 
-     | "wxRadioBox"
 
-     | "wxRibbonBar"
 
-     | "wxRibbonButtonBar"
 
-     | "wxRibbonControl"
 
-     | "wxRibbonGallery"
 
-     | "wxRibbonPage"
 
-     | "wxRibbonPanel"
 
-     | "wxRichTextCtrl"
 
-     | "wxScrollBar"
 
-     | "wxScrolledWindow"
 
-     | "wxSimpleHtmlListBox"
 
-     | "wxSlider"
 
-     | "wxSpinButton"
 
-     | "wxSpinCtrl"
 
-     | "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"
 
-     | "tool"
 
-     | "panewindow"
 
-     | "notebookpage"
 
-     | "choicebookpage"
 
-     | "listbookpage"
 
-     | "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 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|os2)( *\| *(win|mac|unix|os2))*" }
 
-         }?
 
- # 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_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_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_integer }* &
 
-                    [xrc:p="o"] element style        {_, ("normal" | "italic" | "slant") }* &
 
-                    [xrc:p="o"] element weight       {_, ("normal" | "bold" | "light") }* &
 
-                    [xrc:p="o"] element family       {_, ("roman" | "script" | "decorative" | "swiss" |
 
-                                                          "modern" | "teletype") }* &
 
-                    [xrc:p="o"] element underlined   {_, 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_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+)*" }
 
- #
 
- # 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
 
-     }
 
- wxAnimationCtrl =
 
-     element object {
 
-         attribute class { "wxAnimationCtrl" } &
 
-         stdObjectNodeAttributes &
 
-         stdWindowProperties &
 
-         [xrc:p="o"] element animation       {_, t_url }* &
 
-         [xrc:p="o"] element inactive-bitmap {_, t_bitmap }*
 
-     }
 
- 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
 
-     }
 
- 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 }* &
 
-         element content {
 
-             platform,
 
-             element item {_, t_text }*
 
-         }?
 
-     }
 
- wxComboCtrl =
 
-     element object {
 
-         attribute class { "wxComboCtrl" } &
 
-         stdObjectNodeAttributes &
 
-         stdWindowProperties &
 
-         [xrc:p="o"] element value {_, t_string }*
 
-     }
 
- 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 }*
 
-     }
 
- 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 }?,
 
-                 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 }* &
 
-         [xrc:p="o"] element hint      {_, t_text }*
 
-     }
 
- 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 }*
 
-         }?
 
-     }
 
- 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") }*
 
-     }
 
- 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 }*
 
-     }
 
- 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 }*
 
-     }
 
- 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 }*
 
-     }
 
- 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* )?
 
-     }
 
- wxSizer_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_size }* &
 
-         # TODO: cell{pos,span} are wxGridBagSizer-only and required in it, this is too lax
 
-         [xrc:p="o"] element cellpos  {_, t_position }* &
 
-         [xrc:p="o"] element cellspan {_, t_size }* &
 
-         [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)( *\| *(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))*"
 
-             }
 
-         }*
 
-     }
 
- wxBoxSizer =
 
-     element object {
 
-         attribute class { "wxBoxSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize {_, t_size }* &
 
-         [xrc:p="o"] element orient  {_, ("wxHORIZONTAL" | "wxVERTICAL") }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxStaticBoxSizer =
 
-     element object {
 
-         attribute class { "wxStaticBoxSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize {_, t_size }* &
 
-         [xrc:p="important"] element label {_, t_text }* &
 
-         [xrc:p="o"] element orient  {_, ("wxHORIZONTAL" | "wxVERTICAL") }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxGridSizer =
 
-     element object {
 
-         attribute class { "wxGridSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize {_, t_size }* &
 
-         [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 }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxFlexGridSizer =
 
-     element object {
 
-         attribute class { "wxFlexGridSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize             {_, t_size }* &
 
-         [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 }* &
 
-         [xrc:p="o"] element growablecols        {_, t_list_of_numbers }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxGridBagSizer =
 
-     element object {
 
-         attribute class { "wxGridBagSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize             {_, t_size }* &
 
-         [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 }* &
 
-         [xrc:p="o"] element growablecols        {_, t_list_of_numbers }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxWrapSizer =
 
-     element object {
 
-         attribute class { "wxWrapSizer" } &
 
-         stdObjectNodeAttributes &
 
-         [xrc:p="o"] element minsize {_, t_size }* &
 
-         [xrc:p="important"] element orient {_, ("wxHORIZONTAL" | "wxVERTICAL") }* &
 
-         [xrc:p="o"] element flag    {_, t_style }* &
 
-         (wxSizer_item | objectRef)*
 
-     }
 
- wxStdDialogButtonSizer =
 
-     element object {
 
-         attribute class { "wxStdDialogButtonSizer" } &
 
-         stdObjectNodeAttributes &
 
-         element object {
 
-             attribute class { "button" },
 
-             platform,
 
-             (wxButton | customClasses | objectRef)
 
-         }+
 
-     }
 
 
  |