| 1 | ///////////////////////////////////////////////////////////////////////////// |
| 2 | // Name: xrc_format.h |
| 3 | // Purpose: XRC format specification |
| 4 | // Author: Vaclav Slavik |
| 5 | // RCS-ID: $Id$ |
| 6 | // Licence: wxWindows license |
| 7 | ///////////////////////////////////////////////////////////////////////////// |
| 8 | |
| 9 | |
| 10 | /* |
| 11 | NOTE: To make doxygen happy about <custom-tags> we're forced to |
| 12 | escape all < and > symbols which appear inside a doxygen comment. |
| 13 | Also, don't use < and > symbols in section titles. |
| 14 | */ |
| 15 | |
| 16 | |
| 17 | /** |
| 18 | |
| 19 | @page overview_xrcformat XRC File Format |
| 20 | |
| 21 | Table of contents: |
| 22 | - @ref overview_xrcformat_overview |
| 23 | - @ref overview_xrcformat_root |
| 24 | - @ref overview_xrcformat_objects |
| 25 | - @ref overview_xrcformat_object |
| 26 | - @ref overview_xrcformat_object_ref |
| 27 | - @ref overview_xrcformat_datatypes |
| 28 | - @ref overview_xrcformat_windows |
| 29 | - @ref overview_xrcformat_std_props |
| 30 | - @ref overview_xrcformat_controls |
| 31 | - @ref overview_xrcformat_sizers |
| 32 | - @ref overview_xrcformat_other_objects |
| 33 | - @ref overview_xrcformat_platform |
| 34 | - @ref overview_xrcformat_extending |
| 35 | - @ref overview_xrcformat_extending_subclass |
| 36 | - @ref overview_xrcformat_extending_unknown |
| 37 | - @ref overview_xrcformat_extending_custom |
| 38 | - @ref overview_xrcformat_packed |
| 39 | - @ref overview_xrcformat_oldversions |
| 40 | |
| 41 | This document describes the format of XRC resource files, as used by wxXmlResource. |
| 42 | |
| 43 | |
| 44 | <hr> |
| 45 | |
| 46 | |
| 47 | @section overview_xrcformat_overview Overview |
| 48 | |
| 49 | XRC file is a XML file with all of its elements in the |
| 50 | @c http://www.wxwidgets.org/wxxrc namespace. For backward compatibility, |
| 51 | @c http://www.wxwindows.org/wxxrc namespace is accepted as well (and treated |
| 52 | as identical to @c http://www.wxwidgets.org/wxxrc), but it shouldn't be used |
| 53 | in new XRC files. |
| 54 | |
| 55 | XRC file contains definitions for one or more @em objects -- typically |
| 56 | windows. The objects may themselves contain child objects. |
| 57 | |
| 58 | Objects defined at the top level, under the |
| 59 | @ref overview_xrcformat_root "root element", can be accessed using |
| 60 | wxXmlResource::LoadDialog() and other LoadXXX methods. They must have |
| 61 | @c name attribute that is used as LoadXXX's argument (see |
| 62 | @ref overview_xrcformat_object for details). |
| 63 | |
| 64 | Child objects are not directly accessible via wxXmlResource, they can only |
| 65 | be accessed using XRCCTRL(). |
| 66 | |
| 67 | |
| 68 | @section overview_xrcformat_root Resource Root Element |
| 69 | |
| 70 | The root element is always @c \<resource\>. It has one optional attribute, @c |
| 71 | version. If set, it specifies version of the file. In absence of @c version |
| 72 | attribute, the default is @c "0.0.0.0". |
| 73 | |
| 74 | The version consists of four integers separated by periods. The first three |
| 75 | components are major, minor and release number of the wxWidgets release when |
| 76 | the change was introduced, the last one is revision number and is 0 for the |
| 77 | first incompatible change in given wxWidgets release, 1 for the second and so |
| 78 | on. The version changes only if there was an incompatible change introduced; |
| 79 | merely adding new kind of objects does not constitute incompatible change. |
| 80 | |
| 81 | At the time of writing, the latest version is @c "2.5.3.0". |
| 82 | |
| 83 | Note that even though @c version attribute is optional, it should always be |
| 84 | specified to take advantage of the latest capabilities: |
| 85 | |
| 86 | @code |
| 87 | <?xml version="1.0"?> |
| 88 | <resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0"> |
| 89 | ... |
| 90 | </resource> |
| 91 | @endcode |
| 92 | |
| 93 | @c \<resource\> may have arbitrary number of |
| 94 | @ref overview_xrcformat_objects "object elements" as its children; they are referred |
| 95 | to as @em toplevel objects in the rest of this document. Unlike objects defined |
| 96 | deeper in the hierarchy, toplevel objects @em must have their @c name attribute |
| 97 | set and it must be set to a value unique among root's children. |
| 98 | |
| 99 | |
| 100 | |
| 101 | @section overview_xrcformat_objects Defining Objects |
| 102 | |
| 103 | @subsection overview_xrcformat_object Object Element |
| 104 | |
| 105 | The @c \<object\> element represents a single object (typically a GUI element) |
| 106 | and it usually maps directly to a wxWidgets class instance. It has one |
| 107 | mandatory attribute, @c class, and optional @c name and @c subclass attributes. |
| 108 | |
| 109 | The @c class attribute must always be present, it tells XRC what wxWidgets |
| 110 | object should be created and by which wxXmlResourceHandler. |
| 111 | |
| 112 | @c name is the identifier used to identify the object. This name serves three |
| 113 | purposes: |
| 114 | |
| 115 | -# It is used by wxXmlResource's various LoadXXX() methods to find the |
| 116 | resource by name passed as argument. |
| 117 | -# wxWindow's name (see wxWindow::GetName()) is set to it. |
| 118 | -# Numeric ID of a window or menu item is derived from the name. |
| 119 | If the value represents an integer (in decimal notation), it is used for |
| 120 | the numeric ID unmodified. If it is one of the wxID_XXX literals defined |
| 121 | by wxWidgets (see @ref page_stockitems), its respective value is used. |
| 122 | Otherwise, the name is transformed into dynamically generated ID. See |
| 123 | wxXmlResource::GetXRCID() for more information. |
| 124 | |
| 125 | Name attributes must be unique at the top level (where the name is used to |
| 126 | load resources) and should be unique among all controls within the same |
| 127 | toplevel window (wxDialog, wxFrame). |
| 128 | |
| 129 | The @c subclass attribute optional name of class whose constructor will be |
| 130 | called instead of the constructor for "class". |
| 131 | See @ref overview_xrcformat_extending_subclass for more details. |
| 132 | |
| 133 | @c \<object\> element may -- and almost always do -- have children elements. |
| 134 | These come in two varieties: |
| 135 | |
| 136 | -# Object's properties. A @em property is a value describing part of object's |
| 137 | behaviour, for example the "label" property on wxButton defines its label. |
| 138 | In the most common form, property is a single element with text content |
| 139 | ("<label>Cancel</label>"), but they may use nested subelements too (e.g. |
| 140 | @ref overview_xrcformat_type_font "font property"). A property can only be |
| 141 | listed once in an object's definition. |
| 142 | -# Child objects. Window childs, sizers, sizer items or notebook pages |
| 143 | are all examples of child objects. They are represented using nested |
| 144 | @c \<object\> elements and are can be repeated more than once. The specifics |
| 145 | of which object classes are allowed as children are class-specific and |
| 146 | are documented below in @ref overview_xrcformat_controls. |
| 147 | |
| 148 | Example: |
| 149 | @code |
| 150 | <object class="wxDialog" name="example_dialog"> |
| 151 | <!-- properties: --> |
| 152 | <title>Non-Derived Dialog Example</title> |
| 153 | <centered>1</centered> |
| 154 | <!-- child objects: --> |
| 155 | <object class="wxBoxSizer"> |
| 156 | <orient>wxVERTICAL</orient> |
| 157 | <cols>1</cols> |
| 158 | <rows>0</rows> |
| 159 | ... |
| 160 | </object> |
| 161 | </object> |
| 162 | @endcode |
| 163 | |
| 164 | |
| 165 | @subsection overview_xrcformat_object_ref Object References |
| 166 | |
| 167 | Anywhere an @c \<object\> element can be used, @c \<object_ref\> may be used |
| 168 | instead. @c \<object_ref\> is a @em reference to another named (i.e. with the |
| 169 | @c name attribute) @c \<object\> element. It has one mandatory attribute, |
| 170 | @c ref, with value containing the name of a named @c \<object\> element. When an |
| 171 | @c \<object_ref\> is encountered, a copy of the referenced @c \<object\> element |
| 172 | is made in place of @c \<object_ref\> occurrence and processed as usual. |
| 173 | |
| 174 | For example, the following code: |
| 175 | @code |
| 176 | <object class="wxDialog" name="my_dlg"> |
| 177 | ... |
| 178 | </object> |
| 179 | <object_ref name="my_dlg_alias" ref="my_dlg"/> |
| 180 | @endcode |
| 181 | is equivalent to |
| 182 | @code |
| 183 | <object class="wxDialog" name="my_dlg"> |
| 184 | ... |
| 185 | </object> |
| 186 | <object class="wxDialog" name="my_dlg_alias"> |
| 187 | ... <!-- same as in my_dlg --> |
| 188 | </object> |
| 189 | @endcode |
| 190 | |
| 191 | Additionally, it is possible to override some parts of the referenced object |
| 192 | in the @c \<object_ref\> pointing to it. This is useful for putting repetitive |
| 193 | parts of XRC definitions into a template that can be reused and customized in |
| 194 | several places. The two parts are merged as follows: |
| 195 | |
| 196 | -# The referred object is used as the initial content. |
| 197 | -# All attributes set on @c \<object_ref\> are added to it. |
| 198 | -# All child elements of @c \<object_ref\> are scanned. If an element with |
| 199 | the same name (and, if specified, the @c name attribute too) is found |
| 200 | in the referred object, they are recursively merged. |
| 201 | -# Child elements in @c \<object_ref\> that do not have a match in the referred |
| 202 | object are appended to the list of children of the resulting element by |
| 203 | default. Optionally, they may have @c insert_at attribute with two possible |
| 204 | values, "begin" or "end". When set to "begin", the element is prepended to |
| 205 | the list of children instead of appended. |
| 206 | |
| 207 | For example, "my_dlg" in this snippet: |
| 208 | @code |
| 209 | <object class="wxDialog" name="template"> |
| 210 | <title>Dummy dialog</title> |
| 211 | <size>400,400</size> |
| 212 | </object> |
| 213 | <object_ref ref="template" name="my_dlg"> |
| 214 | <title>My dialog</title> |
| 215 | <centered>1</centered> |
| 216 | </object> |
| 217 | @endcode |
| 218 | is identical to: |
| 219 | @code |
| 220 | <object_ref ref="template" name="my_dlg"> |
| 221 | <title>My dialog</title> |
| 222 | <size>400,400</size> |
| 223 | <centered>1</centered> |
| 224 | </object> |
| 225 | @endcode |
| 226 | |
| 227 | |
| 228 | @section overview_xrcformat_datatypes Data Types |
| 229 | |
| 230 | There are several property data types that are frequently reused by different |
| 231 | properties. Rather than describing their format in the documentation of |
| 232 | every property, we list commonly used types in this section and document |
| 233 | their format. |
| 234 | |
| 235 | |
| 236 | @subsection overview_xrcformat_type_bool Boolean |
| 237 | |
| 238 | Boolean values are expressed using either "1" literal (true) or "0" (false). |
| 239 | |
| 240 | |
| 241 | @subsection overview_xrcformat_type_float Floating-point value |
| 242 | |
| 243 | Floating point values use POSIX (C locale) formatting -- decimal separator |
| 244 | is "." regardless of the locale. |
| 245 | |
| 246 | |
| 247 | @subsection overview_xrcformat_type_colour Colour |
| 248 | |
| 249 | Colour specification can be either any string colour representation accepted |
| 250 | by wxColour::Set() or any wxSYS_COLOUR_XXX symbolic name accepted by |
| 251 | wxSystemSettings::GetColour(). In particular, the following forms are supported: |
| 252 | |
| 253 | @li named colours from wxColourDatabase |
| 254 | @li HTML-like "#rrggbb" syntax (but not "#rgb") |
| 255 | @li CSS-style "rgb(r,g,b)" and "rgba(r,g,b,a)" |
| 256 | @li wxSYS_COLOUR_XXX symbolic names |
| 257 | |
| 258 | Some examples: |
| 259 | @code |
| 260 | <fg>red</fg> |
| 261 | <fg>#ff0000</fg> |
| 262 | <fg>rgb(255,0,0)</fg> |
| 263 | <fg>wxSYS_COLOUR_HIGHLIGHT</fg> |
| 264 | @endcode |
| 265 | |
| 266 | |
| 267 | @subsection overview_xrcformat_type_size Size |
| 268 | |
| 269 | Sizes and positions have the form of string with two comma-separated integer |
| 270 | components, with optional "d" suffix. Semi-formally: |
| 271 | |
| 272 | size := x "," y ["d"] |
| 273 | |
| 274 | where x and y are integers. Either of the components (or both) may be "-1" to |
| 275 | signify default value. As a shortcut, empty string is equivalent to "-1,-1" |
| 276 | (= wxDefaultSize or wxDefaultPosition). |
| 277 | |
| 278 | When the "d" suffix is used, integer values are interpreted as |
| 279 | @ref wxWindow::ConvertDialogToPixels() "dialog units" in the parent window. |
| 280 | |
| 281 | Examples: |
| 282 | @code |
| 283 | 42,-1 |
| 284 | 100,100 |
| 285 | 100,50d |
| 286 | @endcode |
| 287 | |
| 288 | @subsection overview_xrcformat_type_pos Position |
| 289 | |
| 290 | Same as @ref overview_xrcformat_type_size. |
| 291 | |
| 292 | |
| 293 | @subsection overview_xrcformat_type_dimension Dimension |
| 294 | |
| 295 | Similarly to @ref overview_xrcformat_type_size "sizes", dimensions are expressed |
| 296 | as integers with optional "d" suffix. When "d" suffix is used, the integer |
| 297 | preceding it is interpreted as dialog units in the parent window. |
| 298 | |
| 299 | |
| 300 | @subsection overview_xrcformat_type_text Text |
| 301 | |
| 302 | String properties use several escape sequences that are translated according to |
| 303 | the following table: |
| 304 | @beginDefList |
| 305 | @itemdef{ "_", "&" (used for accelerators in wxWidgets) } |
| 306 | @itemdef{ "__", "_" } |
| 307 | @itemdef{ "\n", line break } |
| 308 | @itemdef{ "\r", carriage return } |
| 309 | @itemdef{ "\t", tab } |
| 310 | @itemdef{ "\\", "\" } |
| 311 | @endDefList |
| 312 | |
| 313 | By default, the text is translated using wxLocale::GetTranslation() before |
| 314 | it is used. This can be disabled either globally by not passing |
| 315 | wxXRC_USE_LOCALE to wxXmlResource constructor, or by setting the @c translate |
| 316 | attribute on the property node to "0": |
| 317 | @code |
| 318 | <!-- this is not translated: --> |
| 319 | <label translate="0">_Unix</label> |
| 320 | <!-- but this is: --> |
| 321 | <help>Use Unix-style newlines</help> |
| 322 | @endcode |
| 323 | |
| 324 | @note Even though the "_" character is used instead of "&" for accelerators, |
| 325 | it is still possible to use "&". The latter has to be encoded as "&", |
| 326 | though, so using "_" is more convenient. |
| 327 | |
| 328 | @see @ref overview_xrcformat_pre_v2530, @ref overview_xrcformat_pre_v2301 |
| 329 | |
| 330 | |
| 331 | @subsection overview_xrcformat_type_text_notrans Non-Translatable Text |
| 332 | |
| 333 | Like @ref overview_xrcformat_type_text, but the text is never translated and |
| 334 | @c translate attribute cannot be used. |
| 335 | |
| 336 | |
| 337 | @subsection overview_xrcformat_type_string String |
| 338 | |
| 339 | An unformatted string. Unlike with @ref overview_xrcformat_type_text, no escaping |
| 340 | or translations are done. |
| 341 | |
| 342 | |
| 343 | @subsection overview_xrcformat_type_url URL |
| 344 | |
| 345 | Any URL accepted by wxFileSystem (typically relative to XRC file's location, |
| 346 | but can be absolute too). Unlike with @ref overview_xrcformat_type_text, no escaping |
| 347 | or translations are done. |
| 348 | |
| 349 | |
| 350 | @subsection overview_xrcformat_type_bitmap Bitmap |
| 351 | |
| 352 | Bitmap properties contain specification of a single bitmap or icon. In the most |
| 353 | basic form, their text value is simply a relative filename (or another |
| 354 | wxFileSystem URL) of the bitmap to use. For example: |
| 355 | @code |
| 356 | <object class="tool" name="wxID_NEW"> |
| 357 | <tooltip>New</tooltip> |
| 358 | <bitmap>new.png</bitmap> |
| 359 | </object> |
| 360 | @endcode |
| 361 | The value is interpreted as path relative to the location of XRC file where the |
| 362 | reference occurs. |
| 363 | |
| 364 | Alternatively, it is possible to specify the bitmap using wxArtProvider IDs. |
| 365 | In this case, the property element has no textual value (filename) and instead |
| 366 | has the @c stock_id XML attribute that contains stock art ID as accepted by |
| 367 | wxArtProvider::GetBitmap(). This can be either custom value (if the app uses |
| 368 | app-specific art provider) or one of the predefined wxART_XXX constants. |
| 369 | |
| 370 | Optionally, @c stock_client attribute may be specified too and contain one of |
| 371 | the predefined wxArtClient values. If it is not specified, the default client |
| 372 | ID most appropriate in the context where the bitmap is referenced will be used. |
| 373 | In most cases, specifying @c stock_client is not needed. |
| 374 | |
| 375 | Examples of stock bitmaps usage: |
| 376 | @code |
| 377 | <bitmap stock_id="fixed-width"/> <!-- custom app-specific art --> |
| 378 | <bitmap stock_id="wxART_FILE_OPEN"/> <!-- standard art --> |
| 379 | @endcode |
| 380 | |
| 381 | Specifying the bitmap directly and using @c stock_id are mutually exclusive. |
| 382 | |
| 383 | |
| 384 | @subsection overview_xrcformat_type_style Style |
| 385 | |
| 386 | Style properties (such as window's style or sizer flags) use syntax similar to |
| 387 | C++: the style value is OR-combination of individual flags. Symbolic names |
| 388 | identical to those used in C++ code are used for the flags. Flags are separated |
| 389 | with "|" (whitespace is allowed but not required around it). |
| 390 | |
| 391 | The flags that are allowed for a given property are context-dependent. |
| 392 | |
| 393 | Examples: |
| 394 | @code |
| 395 | <style>wxCAPTION|wxSYSTEM_MENU | wxRESIZE_BORDER</style> |
| 396 | <exstyle>wxDIALOG_EX_CONTEXTHELP</exstyle> |
| 397 | @endcode |
| 398 | |
| 399 | |
| 400 | @subsection overview_xrcformat_type_font Font |
| 401 | |
| 402 | XRC uses similar, but more flexible, abstract description of fonts to that |
| 403 | used by wxFont class. A font can be described either in terms of its elementary |
| 404 | properties, or it can be derived from one of system fonts. |
| 405 | |
| 406 | The font property element is "composite" element: unlike majority of |
| 407 | properties, it doesn't have text value but contains several child elements |
| 408 | instead. These children are handled in the same way as object properties |
| 409 | and can be one of the following "sub-properties": |
| 410 | |
| 411 | @beginTable |
| 412 | @hdr3col{property, type, description} |
| 413 | @row3col{size, unsigned integer, |
| 414 | Pixel size of the font (default: wxNORMAL_FONT's size or @c sysfont's |
| 415 | size if the @c sysfont property is used.} |
| 416 | @row3col{style, enum, |
| 417 | One of "normal", "italic" or "slant" (default: normal).} |
| 418 | @row3col{weight, enum, |
| 419 | One of "normal", "bold" or "light" (default: normal).} |
| 420 | @row3col{family, enum, |
| 421 | One of "roman", "script", "decorative", "swiss", "modern" or "teletype" |
| 422 | (default: roman).} |
| 423 | @row3col{underlined, @ref overview_xrcformat_type_bool, |
| 424 | Whether the font should be underlined (default: 0).} |
| 425 | @row3col{face, , |
| 426 | Comma-separated list of face names; the first one available is used |
| 427 | (default: unspecified).} |
| 428 | @row3col{encoding, , |
| 429 | Charset of the font, unused in Unicode build), as string |
| 430 | (default: unspecified).} |
| 431 | @row3col{sysfont, , |
| 432 | Symbolic name of system standard font(one of wxSYS_*_FONT constants).} |
| 433 | @row3col{relativesize, float, |
| 434 | Float, font size relative to chosen system font's size; can only be |
| 435 | used when 'sysfont' is used and when 'size' is not used.} |
| 436 | @endTable |
| 437 | |
| 438 | All of them are optional, if they are missing, appropriate wxFont default is |
| 439 | used. If the @c sysfont property is used, then the defaults are taken from it |
| 440 | instead. |
| 441 | |
| 442 | Examples: |
| 443 | @code |
| 444 | <font> |
| 445 | <!-- fixed font: Arial if available, fall back to Helvetica --> |
| 446 | <face>arial,helvetica</face> |
| 447 | <size>12</size> |
| 448 | </font> |
| 449 | |
| 450 | <font> |
| 451 | <!-- enlarged, enboldened standard font: --> |
| 452 | <sysfont>wxSYS_DEFAULT_GUI_FONT</sysfont> |
| 453 | <weight>bold</weight> |
| 454 | <relativesize>1.5</relativesize> |
| 455 | </font> |
| 456 | @endcode |
| 457 | |
| 458 | |
| 459 | @section overview_xrcformat_windows Controls and Windows |
| 460 | |
| 461 | This section describes support wxWindow-derived classes in XRC format. |
| 462 | |
| 463 | @subsection overview_xrcformat_std_props Standard Properties |
| 464 | |
| 465 | The following properties are always (unless stated otherwise in |
| 466 | control-specific docs) available for @em windows objects. They are omitted |
| 467 | from properties lists below. |
| 468 | |
| 469 | @beginTable |
| 470 | @hdr3col{property, type, description} |
| 471 | @row3col{pos, @ref overview_xrcformat_type_pos, |
| 472 | Initial position of the window (default: wxDefaultPosition).} |
| 473 | @row3col{size, @ref overview_xrcformat_type_size, |
| 474 | Initial size of the window (default: wxDefaultSize).} |
| 475 | @row3col{style, @ref overview_xrcformat_type_style, |
| 476 | Window style for this control. The allowed values depend on what |
| 477 | window is being created, consult respective class' constructor |
| 478 | documentation for details (default: window-dependent default, usually |
| 479 | wxFOO_DEFAULT_STYLE if defined for class wxFoo, 0 if not).} |
| 480 | @row3col{exstyle, @ref overview_xrcformat_type_style, |
| 481 | Extra style for the window, if any. See wxWindow::SetExtraStyle() |
| 482 | (default: not set).} |
| 483 | @row3col{fg, @ref overview_xrcformat_type_colour, |
| 484 | Foreground colour of the window (default: window's default).} |
| 485 | @row3col{bg, @ref overview_xrcformat_type_colour, |
| 486 | Background colour of the window (default: window's default).} |
| 487 | @row3col{enabled, @ref overview_xrcformat_type_bool, |
| 488 | If set to 0, the control is disabled (default: 1).} |
| 489 | @row3col{hidden, @ref overview_xrcformat_type_bool, |
| 490 | If set to 1, the control is created hidden (default: 0).} |
| 491 | @row3col{tooltip, @ref overview_xrcformat_type_text, |
| 492 | Tooltip to use for the control (default: not set).} |
| 493 | @row3col{font, @ref overview_xrcformat_type_font, |
| 494 | Font to use for the control (default: window's default).} |
| 495 | @row3col{help, @ref overview_xrcformat_type_text, |
| 496 | Context-sensitive help for the control, used by wxHelpProvider |
| 497 | (default: not set).} |
| 498 | @endTable |
| 499 | |
| 500 | All of these properties are optional. |
| 501 | |
| 502 | |
| 503 | @subsection overview_xrcformat_controls Supported Controls |
| 504 | |
| 505 | This section lists all controls supported by default. For each control, its |
| 506 | control-specific properties are listed. If the control can have child objects, |
| 507 | it is documented there too; unless said otherwise, XRC elements for these |
| 508 | controls cannot have children. |
| 509 | |
| 510 | @subsubsection xrc_wxanimationctrl wxAnimationCtrl |
| 511 | |
| 512 | @beginTable |
| 513 | @hdr3col{property, type, description} |
| 514 | @row3col{animation, @ref overview_xrcformat_type_url, |
| 515 | Animation file to load into the control (required).} |
| 516 | @endTable |
| 517 | |
| 518 | |
| 519 | @subsubsection xrc_wxbitmapbutton wxBitmapButton |
| 520 | |
| 521 | @beginTable |
| 522 | @hdr3col{property, type, description} |
| 523 | @row3col{default, @ref overview_xrcformat_type_bool, |
| 524 | Should this button be the default button in dialog (default: 0)?} |
| 525 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 526 | Bitmap to show on the button (required).} |
| 527 | @row3col{selected, @ref overview_xrcformat_type_bitmap, |
| 528 | Bitmap to show when the button is selected (default: none, same as @c bitmap).} |
| 529 | @row3col{focus, @ref overview_xrcformat_type_bitmap, |
| 530 | Bitmap to show when the button has focus (default: none, same as @c bitmap).} |
| 531 | @row3col{disabled, @ref overview_xrcformat_type_bitmap, |
| 532 | Bitmap to show when the button is disabled (default: none, same as @c bitmap).} |
| 533 | @row3col{hover, @ref overview_xrcformat_type_bitmap, |
| 534 | Bitmap to show when mouse cursor hovers above the bitmap (default: none, same as @c bitmap).} |
| 535 | @endTable |
| 536 | |
| 537 | |
| 538 | @subsubsection xrc_wxbitmapcombobox wxBitmapComboBox |
| 539 | |
| 540 | @beginTable |
| 541 | @hdr3col{property, type, description} |
| 542 | @row3col{selection, integer, |
| 543 | Index of the initially selected item or -1 for no selection (default: -1).} |
| 544 | @row3col{value, @ref overview_xrcformat_type_string, |
| 545 | Initial value in the control (doesn't have to be one of @ content values; |
| 546 | default: empty).} |
| 547 | @endTable |
| 548 | |
| 549 | If both @c value and @c selection are specified and @c selection is not -1, |
| 550 | then @c selection takes precedence. |
| 551 | |
| 552 | A wxBitmapComboBox can have one or more child objects of the @c ownerdrawnitem |
| 553 | pseudo-class. @c ownerdrawnitem objects have the following properties: |
| 554 | |
| 555 | @beginTable |
| 556 | @hdr3col{property, type, description} |
| 557 | @row3col{text, @ref overview_xrcformat_type_text, |
| 558 | Item's label (required).} |
| 559 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 560 | Item's bitmap (default: no bitmap).} |
| 561 | @endTable |
| 562 | |
| 563 | Example: |
| 564 | @code |
| 565 | <object class="wxBitmapComboBox"> |
| 566 | <selection>1</selection> |
| 567 | <object class="ownerdrawnitem"> |
| 568 | <text>Foo</text> |
| 569 | <bitmap>foo.png</bitmap> |
| 570 | </object> |
| 571 | <object class="ownerdrawnitem"> |
| 572 | <text>Bar</text> |
| 573 | <bitmap>bar.png</bitmap> |
| 574 | </object> |
| 575 | </object> |
| 576 | @endcode |
| 577 | |
| 578 | |
| 579 | @subsubsection xrc_wxbutton wxButton |
| 580 | |
| 581 | @beginTable |
| 582 | @hdr3col{property, type, description} |
| 583 | @row3col{label, @ref overview_xrcformat_type_text, |
| 584 | Label to display on the button (required).} |
| 585 | @row3col{default, @ref overview_xrcformat_type_bool, |
| 586 | Should this button be the default button in dialog (default: 0)?} |
| 587 | @endTable |
| 588 | |
| 589 | |
| 590 | @subsubsection xrc_wxcalendarctrl wxCalendarCtrl |
| 591 | |
| 592 | No additional properties. |
| 593 | |
| 594 | |
| 595 | @subsubsection xrc_wxcheckbox wxCheckBox |
| 596 | |
| 597 | @beginTable |
| 598 | @hdr3col{property, type, description} |
| 599 | @row3col{label, @ref overview_xrcformat_type_text, |
| 600 | Label to use for the checkbox (required).} |
| 601 | @row3col{checked, @ref overview_xrcformat_type_bool, |
| 602 | Should the checkbox be checked initially (default: 0)?} |
| 603 | @endTable |
| 604 | |
| 605 | |
| 606 | @subsubsection xrc_wxchecklistbox wxCheckListBox |
| 607 | |
| 608 | @beginTable |
| 609 | @hdr3col{property, type, description} |
| 610 | @row3col{content, items, |
| 611 | Content of the control; this property has any number of @c \<item\> XML |
| 612 | elements as its children, with the items text as their text values |
| 613 | (default: empty).} |
| 614 | @endTable |
| 615 | |
| 616 | The @c \<item\> elements have listbox items' labels as their text values. They |
| 617 | can also have optional @c checked XML attribute -- if set to "1", the value is |
| 618 | initially checked. |
| 619 | |
| 620 | Example: |
| 621 | @code |
| 622 | <object class="wxCheckListBox"> |
| 623 | <content> |
| 624 | <item checked="1">Download library</item> |
| 625 | <item checked="1">Compile samples</item> |
| 626 | <item checked="1">Skim docs</item> |
| 627 | <item checked="1">Finish project</item> |
| 628 | <item>Wash car</item> |
| 629 | </content> |
| 630 | </object> |
| 631 | @endcode |
| 632 | |
| 633 | |
| 634 | @subsubsection xrc_wxchoice wxChoice |
| 635 | |
| 636 | @beginTable |
| 637 | @hdr3col{property, type, description} |
| 638 | @row3col{selection, integer, |
| 639 | Index of the initially selected item or -1 for no selection (default: -1).} |
| 640 | @row3col{content, items, |
| 641 | Content of the control; this property has any number of @c \<item\> XML |
| 642 | elements as its children, with the items text as their text values |
| 643 | (default: empty).} |
| 644 | @endTable |
| 645 | |
| 646 | Example: |
| 647 | @code |
| 648 | <object class="wxChoice" name="controls_choice"> |
| 649 | <content> |
| 650 | <item>See</item> |
| 651 | <item>Hear</item> |
| 652 | <item>Feel</item> |
| 653 | <item>Smell</item> |
| 654 | <item>Taste</item> |
| 655 | <item>The Sixth Sense!</item> |
| 656 | </content> |
| 657 | </object> |
| 658 | @endcode |
| 659 | |
| 660 | |
| 661 | @subsubsection xrc_wxchoicebook wxChoicebook |
| 662 | |
| 663 | No additional properties. |
| 664 | |
| 665 | A choicebook can have one or more child objects of the @c choicebookpage |
| 666 | pseudo-class (similarly to @ref xrc_wxnotebook "wxNotebook" and its |
| 667 | @c notebookpage). @c choicebookpage objects have the following properties: |
| 668 | |
| 669 | @beginTable |
| 670 | @hdr3col{property, type, description} |
| 671 | @row3col{label, @ref overview_xrcformat_type_text, |
| 672 | Sheet page's title (required).} |
| 673 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 674 | Bitmap shown alongside the label (default: none).} |
| 675 | @row3col{selected, @ref overview_xrcformat_type_bool, |
| 676 | Is the page selected initially (only one page can be selected; default: 0)?} |
| 677 | @endTable |
| 678 | |
| 679 | Each @c choicebookpage has exactly one non-toplevel window as its child. |
| 680 | |
| 681 | |
| 682 | @subsubsection xrc_wxcollapsiblepane wxCollapsiblePane |
| 683 | |
| 684 | @beginTable |
| 685 | @hdr3col{property, type, description} |
| 686 | @row3col{label, @ref overview_xrcformat_type_text, |
| 687 | Label to use for the collapsible section (required).} |
| 688 | @row3col{collapsed, @ref overview_xrcformat_type_bool, |
| 689 | Should the pane be collapsed initially (default: 0)?} |
| 690 | @endTable |
| 691 | |
| 692 | wxCollapsiblePane may contain single optional child object of the @c panewindow |
| 693 | pseudo-class type. @c panewindow itself must contain exactly one child that |
| 694 | is a @ref overview_xrcformat_sizers "sizer" or a non-toplevel window |
| 695 | object. |
| 696 | |
| 697 | |
| 698 | @subsubsection xrc_wxcolourpickerctrl wxColourPickerCtrl |
| 699 | |
| 700 | @beginTable |
| 701 | @hdr3col{property, type, description} |
| 702 | @row3col{value, @ref overview_xrcformat_type_colour, |
| 703 | Initial value of the control (default: wxBLACK).} |
| 704 | @endTable |
| 705 | |
| 706 | |
| 707 | @subsubsection xrc_wxcombobox wxComboBox |
| 708 | |
| 709 | @beginTable |
| 710 | @hdr3col{property, type, description} |
| 711 | @row3col{selection, integer, |
| 712 | Index of the initially selected item or -1 for no selection (default: not used).} |
| 713 | @row3col{content, items, |
| 714 | Content of the control; this property has any number of @c \<item\> XML |
| 715 | elements as its children, with the items text as their text values |
| 716 | (default: empty).} |
| 717 | @row3col{value, @ref overview_xrcformat_type_string, |
| 718 | Initial value in the control (doesn't have to be one of @ content values; |
| 719 | default: empty).} |
| 720 | @endTable |
| 721 | |
| 722 | If both @c value and @c selection are specified and @c selection is not -1, |
| 723 | then @c selection takes precedence. |
| 724 | |
| 725 | Example: |
| 726 | @code |
| 727 | <object class="wxComboBox" name="controls_combobox"> |
| 728 | <style>wxCB_DROPDOWN</style> |
| 729 | <value>nedit</value> |
| 730 | <content> |
| 731 | <item>vim</item> |
| 732 | <item>emacs</item> |
| 733 | <item>notepad.exe</item> |
| 734 | <item>bbedit</item> |
| 735 | </content> |
| 736 | </object> |
| 737 | @endcode |
| 738 | |
| 739 | @subsubsection xrc_wxdatepickerctrl wxDatePickerCtrl |
| 740 | |
| 741 | No additional properties. |
| 742 | |
| 743 | |
| 744 | @subsubsection xrc_wxdialog wxDialog |
| 745 | |
| 746 | @beginTable |
| 747 | @hdr3col{property, type, description} |
| 748 | @row3col{title, @ref overview_xrcformat_type_text, |
| 749 | Dialog's title (default: empty).} |
| 750 | @row3col{icon, @ref overview_xrcformat_type_bitmap, |
| 751 | Dialog's icon (default: not used).} |
| 752 | @row3col{centered, @ref overview_xrcformat_type_bool, |
| 753 | Whether the dialog should be centered on the screen (default: 0).} |
| 754 | @endTable |
| 755 | |
| 756 | wxDialog may have optional children: either exactly one |
| 757 | @ref overview_xrcformat_sizers "sizer" child or any number of non-toplevel window |
| 758 | objects. If sizer child is used, it sets |
| 759 | @ref wxSizer::SetSizeHints() "size hints" too. |
| 760 | |
| 761 | @subsubsection xrc_wxdirpickerctrl wxDirPickerCtrl |
| 762 | |
| 763 | @beginTable |
| 764 | @hdr3col{property, type, description} |
| 765 | @row3col{value, @ref overview_xrcformat_type_string, |
| 766 | Initial value of the control (default: empty).} |
| 767 | @row3col{message, @ref overview_xrcformat_type_text, |
| 768 | Message shown to the user in wxDirDialog shown by the control (required).} |
| 769 | @endTable |
| 770 | |
| 771 | |
| 772 | @subsubsection xrc_wxfilepickerctrl wxFilePickerCtrl |
| 773 | |
| 774 | @beginTable |
| 775 | @hdr3col{property, type, description} |
| 776 | @row3col{value, @ref overview_xrcformat_type_string, |
| 777 | Initial value of the control (default: empty).} |
| 778 | @row3col{message, @ref overview_xrcformat_type_text, |
| 779 | Message shown to the user in wxDirDialog shown by the control (required).} |
| 780 | @row3col{wildcard, @ref overview_xrcformat_type_string, |
| 781 | Message shown to the user in wxDirDialog shown by the control (required).} |
| 782 | @endTable |
| 783 | |
| 784 | |
| 785 | @subsubsection xrc_wxfontpickerctrl wxFontPickerCtrl |
| 786 | |
| 787 | @beginTable |
| 788 | @hdr3col{property, type, description} |
| 789 | @row3col{value, @ref overview_xrcformat_type_font, |
| 790 | Initial value of the control (default: wxNORMAL_FONT).} |
| 791 | @endTable |
| 792 | |
| 793 | @subsubsection xrc_wxfrane wxFrame |
| 794 | |
| 795 | @beginTable |
| 796 | @hdr3col{property, type, description} |
| 797 | @row3col{title, @ref overview_xrcformat_type_text, |
| 798 | Frame's title (default: empty).} |
| 799 | @row3col{icon, @ref overview_xrcformat_type_bitmap, |
| 800 | Frame's icon (default: not used).} |
| 801 | @row3col{centered, @ref overview_xrcformat_type_bool, |
| 802 | Whether the frame should be centered on the screen (default: 0).} |
| 803 | @endTable |
| 804 | |
| 805 | wxFrame may have optional children: either exactly one |
| 806 | @ref overview_xrcformat_sizers "sizer" child or any number of non-toplevel window |
| 807 | objects. If sizer child is used, it sets |
| 808 | @ref wxSizer::SetSizeHints() "size hints" too. |
| 809 | |
| 810 | |
| 811 | @subsubsection xrc_wxgauge wxGauge |
| 812 | |
| 813 | @beginTable |
| 814 | @hdr3col{property, type, description} |
| 815 | @row3col{range, integer, |
| 816 | Maximum value of the gauge (default: 100).} |
| 817 | @row3col{value, integer, |
| 818 | Initial value of the control (default: 0).} |
| 819 | @row3col{shadow, @ref overview_xrcformat_type_dimension, |
| 820 | Rendered shadow size (default: none; ignored by most platforms).} |
| 821 | @row3col{bezel, @ref overview_xrcformat_type_dimension, |
| 822 | Rendered bezel size (default: none; ignored by most platforms).} |
| 823 | @endTable |
| 824 | |
| 825 | @subsubsection xrc_wxgenericdirctrl wxGenericDirCtrl |
| 826 | |
| 827 | @beginTable |
| 828 | @hdr3col{property, type, description} |
| 829 | @row3col{defaultfolder, @ref overview_xrcformat_type_text, |
| 830 | Initial folder (default: empty).} |
| 831 | @row3col{filter, @ref overview_xrcformat_type_text, |
| 832 | Filter string, using the same syntax as used by wxFileDialog, e.g. |
| 833 | "All files (*.*)|*.*|JPEG files (*.jpg)|*.jpg" (default: empty).} |
| 834 | @row3col{defaultfilter, integer, |
| 835 | Zero-based index of default filter (default: 0).} |
| 836 | @endTable |
| 837 | |
| 838 | @subsubsection xrc_wxgrid wxGrid |
| 839 | |
| 840 | No additional properties. |
| 841 | |
| 842 | |
| 843 | @subsubsection xrc_wxhtmlwindow wxHtmlWindow |
| 844 | |
| 845 | @beginTable |
| 846 | @hdr3col{property, type, description} |
| 847 | @row3col{url, @ref overview_xrcformat_type_url, |
| 848 | Page to display in the window.} |
| 849 | @row3col{htmlcode, @ref overview_xrcformat_type_text, |
| 850 | HTML markup to display in the window.} |
| 851 | @row3col{borders, @ref overview_xrcformat_type_dimension, |
| 852 | Border around HTML content (default: 0).} |
| 853 | @endTable |
| 854 | |
| 855 | At most one of @c url and @c htmlcode properties may be specified, they are |
| 856 | mutually exclusive. If neither is set, the window is initialized to show empty |
| 857 | page. |
| 858 | |
| 859 | |
| 860 | @subsubsection xrc_wxhyperlinkctrl wxHyperlinkCtrl |
| 861 | |
| 862 | @beginTable |
| 863 | @hdr3col{property, type, description} |
| 864 | @row3col{label, @ref overview_xrcformat_type_text, |
| 865 | Label to display on the control (required).} |
| 866 | @row3col{url, @ref overview_xrcformat_type_url, |
| 867 | URL to open when the link is clicked (required).} |
| 868 | @endTable |
| 869 | |
| 870 | |
| 871 | @subsubsection xrc_wxlistbox wxListBox |
| 872 | |
| 873 | @beginTable |
| 874 | @hdr3col{property, type, description} |
| 875 | @row3col{selection, integer, |
| 876 | Index of the initially selected item or -1 for no selection (default: -1).} |
| 877 | @row3col{content, items, |
| 878 | Content of the control; this property has any number of @c \<item\> XML |
| 879 | elements as its children, with the items text as their text values |
| 880 | (default: empty).} |
| 881 | @endTable |
| 882 | |
| 883 | Example: |
| 884 | @code |
| 885 | <object class="wxListBox" name="controls_listbox"> |
| 886 | <size>250,160</size> |
| 887 | <style>wxLB_SINGLE</style> |
| 888 | <content> |
| 889 | <item>Milk</item> |
| 890 | <item>Pizza</item> |
| 891 | <item>Bread</item> |
| 892 | <item>Orange juice</item> |
| 893 | <item>Paper towels</item> |
| 894 | </content> |
| 895 | </object> |
| 896 | @endcode |
| 897 | |
| 898 | |
| 899 | @subsubsection xrc_wxlistbook wxListbook |
| 900 | |
| 901 | No additional properties. |
| 902 | |
| 903 | A listbook can have one or more child objects of the @c listbookpage |
| 904 | pseudo-class (similarly to @ref xrc_wxnotebook "wxNotebook" and its |
| 905 | @c notebookpage). @c listbookpage objects have the following properties: |
| 906 | |
| 907 | @beginTable |
| 908 | @hdr3col{property, type, description} |
| 909 | @row3col{label, @ref overview_xrcformat_type_text, |
| 910 | Sheet page's title (required).} |
| 911 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 912 | Bitmap shown alongside the label (default: none).} |
| 913 | @row3col{selected, @ref overview_xrcformat_type_bool, |
| 914 | Is the page selected initially (only one page can be selected; default: 0)?} |
| 915 | @endTable |
| 916 | |
| 917 | Each @c listbookpage has exactly one non-toplevel window as its child. |
| 918 | |
| 919 | |
| 920 | @subsubsection xrc_wxlistctrl wxListCtrl |
| 921 | |
| 922 | No additional properties. |
| 923 | |
| 924 | |
| 925 | @subsubsection xrc_wxmdiparentframe wxMDIParentFrame |
| 926 | |
| 927 | wxMDIParentFrame supports the same properties that @ref xrc_wxfrane does. |
| 928 | |
| 929 | wxMDIParentFrame may have optional children. When used, the child objects |
| 930 | must be of wxMDIChildFrame type. |
| 931 | |
| 932 | |
| 933 | @subsubsection xrc_wxmdichildframe wxMDIChildFrame |
| 934 | |
| 935 | wxMDIChildFrame supports the same properties that @ref xrc_wxfrane and |
| 936 | @ref xrc_wxmdiparentframe do. |
| 937 | |
| 938 | wxMDIChildFrame can only be used as as immediate child of @ref |
| 939 | xrc_wxmdiparentframe. |
| 940 | |
| 941 | wxMDIChildFrame may have optional children: either exactly one |
| 942 | @ref overview_xrcformat_sizers "sizer" child or any number of non-toplevel window |
| 943 | objects. If sizer child is used, it sets |
| 944 | @ref wxSizer::SetSizeHints() "size hints" too. |
| 945 | |
| 946 | |
| 947 | @subsubsection xrc_wxmenu wxMenu |
| 948 | |
| 949 | @beginTable |
| 950 | @hdr3col{property, type, description} |
| 951 | @row3col{label, @ref overview_xrcformat_type_text, |
| 952 | Menu's label (default: empty, but required for menus other |
| 953 | than popup menus).} |
| 954 | @row3col{help, @ref overview_xrcformat_type_text, |
| 955 | Help shown in statusbar when the menu is selected (only for submenus |
| 956 | of another wxMenu, default: none).} |
| 957 | @row3col{enabled, @ref overview_xrcformat_type_bool, |
| 958 | Is the submenu item enabled (only for submenus of another wxMenu, |
| 959 | default: 1)?} |
| 960 | @endTable |
| 961 | |
| 962 | Note that unlike most controls, wxMenu does @em not have |
| 963 | @ref overview_xrcformat_std_props. |
| 964 | |
| 965 | A menu object can have one or more child objects of the wxMenuItem or wxMenu |
| 966 | classes or @c break or @c separator pseudo-classes. |
| 967 | |
| 968 | The @c separator pseudo-class is used to insert separators into the menu and |
| 969 | has neither properties nor children. Likewise, @c break inserts a break (see |
| 970 | wxMenu::Break()). |
| 971 | |
| 972 | wxMenuItem objects support the following properties: |
| 973 | |
| 974 | @beginTable |
| 975 | @hdr3col{property, type, description} |
| 976 | @row3col{label, @ref overview_xrcformat_type_text, |
| 977 | Item's label (required).} |
| 978 | @row3col{accel, @ref overview_xrcformat_type_text_notrans, |
| 979 | Item's accelerator (default: none).} |
| 980 | @row3col{radio, @ref overview_xrcformat_type_bool, |
| 981 | Item's kind is wxITEM_RADIO (default: 0)?} |
| 982 | @row3col{checkable, @ref overview_xrcformat_type_bool, |
| 983 | Item's kind is wxITEM_CHECK (default: 0)?} |
| 984 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 985 | Bitmap to show with the item (default: none).} |
| 986 | @row3col{bitmap2, @ref overview_xrcformat_type_bitmap, |
| 987 | Bitmap for the checked state (wxMSW, if checkable; default: none).} |
| 988 | @row3col{help, @ref overview_xrcformat_type_text, |
| 989 | Help shown in statusbar when the item is selected (default: none).} |
| 990 | @row3col{enabled, @ref overview_xrcformat_type_bool, |
| 991 | Is the item enabled (default: 1)?} |
| 992 | @row3col{checked, @ref overview_xrcformat_type_bool, |
| 993 | Is the item checked initially (default: 0)?} |
| 994 | @endTable |
| 995 | |
| 996 | Example: |
| 997 | @code |
| 998 | <object class="wxMenu" name="menu_edit"> |
| 999 | <style>wxMENU_TEAROFF</style> |
| 1000 | <label>_Edit</label> |
| 1001 | <object class="wxMenuItem" name="wxID_FIND"> |
| 1002 | <label>_Find...</label> |
| 1003 | <accel>Ctrl-F</accel> |
| 1004 | </object> |
| 1005 | <object class="separator"/> |
| 1006 | <object class="wxMenuItem" name="menu_fuzzy"> |
| 1007 | <label>Translation is _fuzzy</label> |
| 1008 | <checkable>1</checkable> |
| 1009 | </object> |
| 1010 | <object class="wxMenu" name="submenu"> |
| 1011 | <label>A submenu</label> |
| 1012 | <object class="wxMenuItem" name="foo">...</object> |
| 1013 | ... |
| 1014 | </object> |
| 1015 | <object class="separator" platform="unix"/> |
| 1016 | <object class="wxMenuItem" name="wxID_PREFERENCES" platform="unix"> |
| 1017 | <label>_Preferences</label> |
| 1018 | </object> |
| 1019 | </object> |
| 1020 | @endcode |
| 1021 | |
| 1022 | @subsubsection xrc_wxmenubar wxMenuBar |
| 1023 | |
| 1024 | No properties. Note that unlike most controls, wxMenuBar does @em not have |
| 1025 | @ref overview_xrcformat_std_props. |
| 1026 | |
| 1027 | A menubar can have one or more child objects of the @ref xrc_wxmenu "wxMenu" |
| 1028 | class. |
| 1029 | |
| 1030 | |
| 1031 | @subsubsection xrc_wxnotebook wxNotebook |
| 1032 | |
| 1033 | No additional properties. |
| 1034 | |
| 1035 | A notebook can have one or more child objects of the @c notebookpage |
| 1036 | pseudo-class. @c notebookpage objects have the following properties: |
| 1037 | |
| 1038 | @beginTable |
| 1039 | @hdr3col{property, type, description} |
| 1040 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1041 | Page's title (required).} |
| 1042 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1043 | Bitmap shown alongside the label (default: none).} |
| 1044 | @row3col{selected, @ref overview_xrcformat_type_bool, |
| 1045 | Is the page selected initially (only one page can be selected; default: 0)?} |
| 1046 | @endTable |
| 1047 | |
| 1048 | Each @c notebookpage has exactly one non-toplevel window as its child. |
| 1049 | |
| 1050 | Example: |
| 1051 | @code |
| 1052 | <object class="wxNotebook"> |
| 1053 | <style>wxBK_BOTTOM</style> |
| 1054 | <object class="notebookpage"> |
| 1055 | <label>Page 1</label> |
| 1056 | <object class="wxPanel" name="page_1"> |
| 1057 | ... |
| 1058 | </object> |
| 1059 | </object> |
| 1060 | <object class="notebookpage"> |
| 1061 | <label>Page 2</label> |
| 1062 | <object class="wxPanel" name="page_2"> |
| 1063 | ... |
| 1064 | </object> |
| 1065 | </object> |
| 1066 | </object> |
| 1067 | @endcode |
| 1068 | |
| 1069 | |
| 1070 | @subsubsection xrc_wxownerdrawncombobox wxOwnerDrawnComboBox |
| 1071 | |
| 1072 | wxOwnerDrawnComboBox has the same properties as |
| 1073 | @ref xrc_wxcombobox "wxComboBox", plus the following additional properties: |
| 1074 | |
| 1075 | @beginTable |
| 1076 | @hdr3col{property, type, description} |
| 1077 | @row3col{buttonsize, @ref overview_xrcformat_type_size, |
| 1078 | Size of the dropdown button (default: default).} |
| 1079 | @endTable |
| 1080 | |
| 1081 | |
| 1082 | @subsubsection xrc_wxpanel wxPanel |
| 1083 | |
| 1084 | No additional properties. |
| 1085 | |
| 1086 | wxPanel may have optional children: either exactly one |
| 1087 | @ref overview_xrcformat_sizers "sizer" child or any number of non-toplevel window |
| 1088 | objects. |
| 1089 | |
| 1090 | |
| 1091 | @subsubsection xrc_wxpropertysheetdialog wxPropertySheetDialog |
| 1092 | |
| 1093 | @beginTable |
| 1094 | @hdr3col{property, type, description} |
| 1095 | @row3col{title, @ref overview_xrcformat_type_text, |
| 1096 | Dialog's title (default: empty).} |
| 1097 | @row3col{icon, @ref overview_xrcformat_type_bitmap, |
| 1098 | Dialog's icon (default: not used).} |
| 1099 | @row3col{centered, @ref overview_xrcformat_type_bool, |
| 1100 | Whether the dialog should be centered on the screen (default: 0).} |
| 1101 | @row3col{buttons, @ref overview_xrcformat_type_style, |
| 1102 | Buttons to show, combination of flags accepted by |
| 1103 | wxPropertySheetDialog::CreateButtons() (default: 0).} |
| 1104 | @endTable |
| 1105 | |
| 1106 | A sheet dialog can have one or more child objects of the @c propertysheetpage |
| 1107 | pseudo-class (similarly to @ref xrc_wxnotebook "wxNotebook" and its |
| 1108 | @c notebookpage). @c propertysheetpage objects have the following properties: |
| 1109 | |
| 1110 | @beginTable |
| 1111 | @hdr3col{property, type, description} |
| 1112 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1113 | Sheet page's title (required).} |
| 1114 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1115 | Bitmap shown alongside the label (default: none).} |
| 1116 | @row3col{selected, @ref overview_xrcformat_type_bool, |
| 1117 | Is the page selected initially (only one page can be selected; default: 0)?} |
| 1118 | @endTable |
| 1119 | |
| 1120 | Each @c propertysheetpage has exactly one non-toplevel window as its child. |
| 1121 | |
| 1122 | |
| 1123 | @subsubsection xrc_wxradiobutton wxRadioButton |
| 1124 | |
| 1125 | @beginTable |
| 1126 | @hdr3col{property, type, description} |
| 1127 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1128 | Label shown on the radio button (required).} |
| 1129 | @row3col{value, @ref overview_xrcformat_type_bool, |
| 1130 | Initial value of the control (default: 0).} |
| 1131 | @endTable |
| 1132 | |
| 1133 | |
| 1134 | @subsubsection xrc_wxradiobox wxRadioBox |
| 1135 | |
| 1136 | @beginTable |
| 1137 | @hdr3col{property, type, description} |
| 1138 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1139 | Label for the whole box (required).} |
| 1140 | @row3col{dimension, integer, |
| 1141 | Specifies the maximum number of rows (if style contains |
| 1142 | @c wxRA_SPECIFY_ROWS) or columns (if style contains @c wxRA_SPECIFY_COLS) |
| 1143 | for a two-dimensional radiobox (default: 1).} |
| 1144 | @row3col{selection, integer, |
| 1145 | Index of the initially selected item or -1 for no selection (default: -1).} |
| 1146 | @row3col{content, items, |
| 1147 | Content of the control; this property has any number of @c \<item\> XML |
| 1148 | elements as its children, with the items text as their text values |
| 1149 | (see below; default: empty).} |
| 1150 | @endTable |
| 1151 | |
| 1152 | The @c \<item\> elements have radio buttons' labels as their text values. They |
| 1153 | can also have some optional XML @em attributes (not properties!): |
| 1154 | |
| 1155 | @beginTable |
| 1156 | @hdr3col{attribute, type, description} |
| 1157 | @row3col{tooltip, @ref overview_xrcformat_type_string, |
| 1158 | Tooltip to show over this ratio button (default: none).} |
| 1159 | @row3col{helptext, @ref overview_xrcformat_type_string, |
| 1160 | Contextual help for this radio button (default: none).} |
| 1161 | @row3col{enabled, @ref overview_xrcformat_type_bool, |
| 1162 | Is the button enabled (default: 1)?} |
| 1163 | @row3col{hidden, @ref overview_xrcformat_type_bool, |
| 1164 | Is the button hidden initially (default: 0)?} |
| 1165 | @endTable |
| 1166 | |
| 1167 | Example: |
| 1168 | @code |
| 1169 | <object class="wxRadioBox" name="controls_radiobox"> |
| 1170 | <style>wxRA_SPECIFY_COLS</style> |
| 1171 | <label>Radio stations</label> |
| 1172 | <dimension>1</dimension> |
| 1173 | <selection>0</selection> |
| 1174 | <content> |
| 1175 | <item tooltip="Powerful radio station" helptext="This station is for amateurs of hard rock and heavy metal">Power 108</item> |
| 1176 | <item tooltip="Disabled radio station" enabled="0">Power 0</item> |
| 1177 | <item tooltip="">WMMS 100.7</item> |
| 1178 | <item tooltip="E=mc^2">Energy 98.3</item> |
| 1179 | <item helptext="Favourite chukcha's radio">CHUM FM</item> |
| 1180 | <item>92FM</item> |
| 1181 | <item hidden="1">Very quit station</item> |
| 1182 | </content> |
| 1183 | </object> |
| 1184 | @endcode |
| 1185 | |
| 1186 | |
| 1187 | @subsubsection xrc_wxrichtextctrl wxRichTextCtrl |
| 1188 | |
| 1189 | @beginTable |
| 1190 | @hdr3col{property, type, description} |
| 1191 | @row3col{value, @ref overview_xrcformat_type_text, |
| 1192 | Initial value of the control (default: empty).} |
| 1193 | @row3col{maxlength, integer, |
| 1194 | Maximum length of the text entered (default: unlimited).} |
| 1195 | @endTable |
| 1196 | |
| 1197 | |
| 1198 | @subsubsection xrc_wxscrollbar wxScrollBar |
| 1199 | |
| 1200 | @beginTable |
| 1201 | @hdr3col{property, type, description} |
| 1202 | @row3col{value, integer, |
| 1203 | Initial position of the scrollbar (default: 0).} |
| 1204 | @row3col{range, integer, |
| 1205 | Maximum value of the gauge (default: 10).} |
| 1206 | @row3col{thumbsize, integer, |
| 1207 | Size of the thumb (default: 1).} |
| 1208 | @row3col{pagesize, integer, |
| 1209 | Page size (default: 1).} |
| 1210 | @endTable |
| 1211 | |
| 1212 | @subsubsection xrc_wxscrolledwindow wxScrolledWindow |
| 1213 | |
| 1214 | @beginTable |
| 1215 | @hdr3col{property, type, description} |
| 1216 | @row3col{scrollrate, @ref overview_xrcformat_type_size, |
| 1217 | Scroll rate in @em x and @em y directions (default: not set; |
| 1218 | required if the window has a sizer child).} |
| 1219 | @endTable |
| 1220 | |
| 1221 | wxScrolledWindow may have optional children: either exactly one |
| 1222 | @ref overview_xrcformat_sizers "sizer" child or any number of non-toplevel window |
| 1223 | objects. If sizer child is used, wxSizer::FitInside() is used (instead of |
| 1224 | wxSizer::Fit() as usual) and so the children don't determine scrolled window's |
| 1225 | minimal size, they only affect @em virtual size. Usually, both @c scrollrate |
| 1226 | and either @c size or @c minsize on containing sizer item should be used |
| 1227 | in this case. |
| 1228 | |
| 1229 | |
| 1230 | @subsubsection xrc_wxsimplehtmllistbox wxSimpleHtmlListBox |
| 1231 | |
| 1232 | wxSimpleHtmlListBox has same properties as @ref xrc_wxlistbox "wxListBox". |
| 1233 | The only difference is that the text contained in @c \<item\> elements is |
| 1234 | HTML markup. Note that the markup has to be escaped: |
| 1235 | |
| 1236 | @code |
| 1237 | <object class="wxSimpleHtmlListBox"> |
| 1238 | <content> |
| 1239 | <item><b>Bold</b> Milk</item> |
| 1240 | </content> |
| 1241 | </object> |
| 1242 | @endcode |
| 1243 | |
| 1244 | (X)HTML markup elements cannot be included directly: |
| 1245 | |
| 1246 | @code |
| 1247 | <object class="wxSimpleHtmlListBox"> |
| 1248 | <content> |
| 1249 | <!-- This is incorrect, doesn't work! --> |
| 1250 | <item><b>Bold</b> Milk</item> |
| 1251 | </content> |
| 1252 | </object> |
| 1253 | @endcode |
| 1254 | |
| 1255 | |
| 1256 | @subsubsection xrc_wxslider wxSlider |
| 1257 | |
| 1258 | @beginTable |
| 1259 | @hdr3col{property, type, description} |
| 1260 | @row3col{value, integer, |
| 1261 | Initial value of the control (default: 0).} |
| 1262 | @row3col{min, integer, |
| 1263 | Minimum allowed value (default: 0).} |
| 1264 | @row3col{max, integer, |
| 1265 | Maximum allowed value (default: 100).} |
| 1266 | @row3col{pagesize, integer, |
| 1267 | Line size; number of steps the slider moves when the user moves |
| 1268 | pages up or down (default: unset).} |
| 1269 | @row3col{linesize, integer, |
| 1270 | Line size; number of steps the slider moves when the user moves it |
| 1271 | up or down a line (default: unset).} |
| 1272 | @row3col{tickfreq, integer, |
| 1273 | Tick marks frequency (Windows only; default: unset).} |
| 1274 | @row3col{tick, integer, |
| 1275 | Tick position (Windows only; default: unset).} |
| 1276 | @row3col{thumb, integer, |
| 1277 | Thumb length (Windows only; default: unset).} |
| 1278 | @row3col{selmin, integer, |
| 1279 | Selection start position (Windows only; default: unset).} |
| 1280 | @row3col{selmax, integer, |
| 1281 | Selection end position (Windows only; default: unset).} |
| 1282 | @endTable |
| 1283 | |
| 1284 | |
| 1285 | @subsubsection xrc_wxspinbutton wxSpinButton |
| 1286 | |
| 1287 | @beginTable |
| 1288 | @hdr3col{property, type, description} |
| 1289 | @row3col{value, integer, |
| 1290 | Initial value of the control (default: 0).} |
| 1291 | @row3col{min, integer, |
| 1292 | Minimum allowed value (default: 0).} |
| 1293 | @row3col{max, integer, |
| 1294 | Maximum allowed value (default: 100).} |
| 1295 | @endTable |
| 1296 | |
| 1297 | |
| 1298 | @subsubsection xrc_wxspinctrl wxSpinCtrl |
| 1299 | |
| 1300 | wxSpinCtrl supports the properties as @ref xrc_wxspinbutton. |
| 1301 | |
| 1302 | |
| 1303 | @subsubsection xrc_wxsplitterwindow wxSplitterWindow |
| 1304 | |
| 1305 | @beginTable |
| 1306 | @hdr3col{property, type, description} |
| 1307 | @row3col{orientation, @ref overview_xrcformat_type_string, |
| 1308 | Orientation of the splitter, either "vertical" or "horizontal" (default: horizontal).} |
| 1309 | @row3col{sashpos, integer, |
| 1310 | Initial position of the sash (default: 0).} |
| 1311 | @row3col{minsize, integer, |
| 1312 | Minimum child size (default: not set).} |
| 1313 | @row3col{minsize, @ref overview_xrcformat_type_float, |
| 1314 | Sash gravity, see wxSplitterWindow::SetSashGravity() (default: not set).} |
| 1315 | @endTable |
| 1316 | |
| 1317 | wxSplitterWindow must have one or two children that are non-toplevel window |
| 1318 | objects. If there's only one child, it is used as wxSplitterWindow's only |
| 1319 | visible child. If there are two children, the first one is used for left/top |
| 1320 | child and the second one for right/bottom child window. |
| 1321 | |
| 1322 | |
| 1323 | @subsubsection xrc_wxsearchctrl wxSearchCtrl |
| 1324 | |
| 1325 | @beginTable |
| 1326 | @hdr3col{property, type, description} |
| 1327 | @row3col{value, @ref overview_xrcformat_type_text, |
| 1328 | Initial value of the control (default: empty).} |
| 1329 | @endTable |
| 1330 | |
| 1331 | |
| 1332 | @subsubsection xrc_wxstatusbar wxStatusBar |
| 1333 | |
| 1334 | @beginTable |
| 1335 | @hdr3col{property, type, description} |
| 1336 | @row3col{fields, integer, |
| 1337 | Number of status bar fields (default: 1).} |
| 1338 | @row3col{widths, @ref overview_xrcformat_type_string, |
| 1339 | Comma-separated list of @em fields integers. Each value specifies width |
| 1340 | of one field; the values are interpreted using the same convention used |
| 1341 | by wxStatusBar::SetStatusWidths().} |
| 1342 | @row3col{styles, @ref overview_xrcformat_type_string, |
| 1343 | Comma-separated list of @em fields flags. Each value specifies status bar |
| 1344 | fieldd style and can be one of @c wxSB_NORMAL, @c wxSB_FLAT or |
| 1345 | @c wxSB_RAISED. See wxStatusBar::SetStatusStyles() for their description.} |
| 1346 | @endTable |
| 1347 | |
| 1348 | |
| 1349 | |
| 1350 | @subsubsection xrc_wxstaticbitmap wxStaticBitmap |
| 1351 | |
| 1352 | @beginTable |
| 1353 | @hdr3col{property, type, description} |
| 1354 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1355 | Bitmap to display (required).} |
| 1356 | @endTable |
| 1357 | |
| 1358 | @subsubsection xrc_wxstaticbox wxStaticBox |
| 1359 | |
| 1360 | @beginTable |
| 1361 | @hdr3col{property, type, description} |
| 1362 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1363 | Static box's label (required).} |
| 1364 | @endTable |
| 1365 | |
| 1366 | |
| 1367 | @subsubsection xrc_wxstaticline wxStaticLine |
| 1368 | |
| 1369 | No additional properties. |
| 1370 | |
| 1371 | |
| 1372 | @subsubsection xrc_wxstatictext wxStaticText |
| 1373 | |
| 1374 | @beginTable |
| 1375 | @hdr3col{property, type, description} |
| 1376 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1377 | Label to display (required).} |
| 1378 | @row3col{wrap, integer, |
| 1379 | Number of characters per line to wrap the text for, see |
| 1380 | wxStaticText::Wrap() (default: no wrap).} |
| 1381 | @endTable |
| 1382 | |
| 1383 | @subsubsection xrc_wxtextctrl wxTextCtrl |
| 1384 | |
| 1385 | @beginTable |
| 1386 | @hdr3col{property, type, description} |
| 1387 | @row3col{value, @ref overview_xrcformat_type_text, |
| 1388 | Initial value of the control (default: empty).} |
| 1389 | @row3col{maxlength, integer, |
| 1390 | Maximum length of the text which can be entered by user (default: unlimited).} |
| 1391 | @endTable |
| 1392 | |
| 1393 | |
| 1394 | @subsubsection xrc_wxtogglebuttton wxToggleButton |
| 1395 | |
| 1396 | @beginTable |
| 1397 | @hdr3col{property, type, description} |
| 1398 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1399 | Label to display on the button (required).} |
| 1400 | @row3col{checked, @ref overview_xrcformat_type_bool, |
| 1401 | Should the button be checked/pressed initially (default: 0)?} |
| 1402 | @endTable |
| 1403 | |
| 1404 | @subsubsection xrc_wxtoolbar wxToolBar |
| 1405 | |
| 1406 | @beginTable |
| 1407 | @hdr3col{property, type, description} |
| 1408 | @row3col{bitmapsize, @ref overview_xrcformat_type_size, |
| 1409 | Size of toolbar bitmaps (default: not set).} |
| 1410 | @row3col{margins, @ref overview_xrcformat_type_size, |
| 1411 | Margins (default: platform default).} |
| 1412 | @row3col{packing, integer, |
| 1413 | Packing, see wxToolBar::SetToolPacking() (default: not set).} |
| 1414 | @row3col{separation, integer, |
| 1415 | Default separator size, see wxToolBar::SetToolSeparation() (default: not set).} |
| 1416 | @row3col{dontattachtoframe, @ref overview_xrcformat_type_bool, |
| 1417 | If set to 0 and the toolbar object is child of a wxFrame, |
| 1418 | wxFrame::SetToolBar() is called; otherwise, you have to add it to a frame |
| 1419 | manually. The toolbar is attached by default, you have to set this property |
| 1420 | to 1 to disable this behaviour (default: 0).} |
| 1421 | @endTable |
| 1422 | |
| 1423 | A toolbar can have one or more child objects of any wxControl-derived class or |
| 1424 | one of two pseudo-classes: @c separator or @c tool. |
| 1425 | |
| 1426 | The @c separator pseudo-class is used to insert separators into the toolbar and |
| 1427 | has neither properties nor children. |
| 1428 | |
| 1429 | The @c tool pseudo-class objects specify toolbar buttons and have the following |
| 1430 | properties: |
| 1431 | |
| 1432 | @beginTable |
| 1433 | @hdr3col{property, type, description} |
| 1434 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1435 | Tool's bitmap (required).} |
| 1436 | @row3col{bitmap2, @ref overview_xrcformat_type_bitmap, |
| 1437 | Bitmap for disabled tool (default: derived from @c bitmap).} |
| 1438 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1439 | Label to display on the tool (default: no label).} |
| 1440 | @row3col{radio, @ref overview_xrcformat_type_bool, |
| 1441 | Item's kind is wxITEM_RADIO (default: 0)?} |
| 1442 | @row3col{toggle, @ref overview_xrcformat_type_bool, |
| 1443 | Item's kind is wxITEM_CHECK (default: 0)?} |
| 1444 | @row3col{dropdown, see below, |
| 1445 | Item's kind is wxITEM_DROPDOWN (default: 0)? (only available since wxWidgets 2.9.0)} |
| 1446 | @row3col{tooltip, @ref overview_xrcformat_type_text, |
| 1447 | Tooltip to use for the tool (default: none).} |
| 1448 | @row3col{longhelp, @ref overview_xrcformat_type_text, |
| 1449 | Help text shown in statusbar when the mouse is on the tool (default: none).} |
| 1450 | @row3col{disabled, @ref overview_xrcformat_type_bool, |
| 1451 | Is the tool initially disabled (default: 0)?} |
| 1452 | @endTable |
| 1453 | |
| 1454 | The presence of a @c dropdown property indicates that the tool is of type |
| 1455 | wxITEM_DROPDOWN. It must be either empty or contain exactly one @ref |
| 1456 | xrc_wxmenu child object defining the drop-down button associated menu. |
| 1457 | |
| 1458 | Notice that @c radio, @c toggle and @c dropdown are mutually exclusive. |
| 1459 | |
| 1460 | Children that are neither @c tool nor @c separator must be instances of classes |
| 1461 | derived from wxControl and are added to the toolbar using |
| 1462 | wxToolBar::AddControl(). |
| 1463 | |
| 1464 | Example: |
| 1465 | @code |
| 1466 | <object class="wxToolBar"> |
| 1467 | <style>wxTB_FLAT|wxTB_NODIVIDER</style> |
| 1468 | <object class="tool" name="foo"> |
| 1469 | <bitmap>foo.png</bitmap> |
| 1470 | <label>Foo</label> |
| 1471 | </object> |
| 1472 | <object class="tool" name="bar"> |
| 1473 | <bitmap>bar.png</bitmap> |
| 1474 | <label>Bar</label> |
| 1475 | </object> |
| 1476 | <object class="tool" name="view_auto"> |
| 1477 | <bitmap>view.png</bitmap> |
| 1478 | <label>View</label> |
| 1479 | <dropdown> |
| 1480 | <object class="wxMenu"> |
| 1481 | <object class="wxMenuItem" name="view_as_text"> |
| 1482 | <label>View as text</label> |
| 1483 | </object> |
| 1484 | <object class="wxMenuItem" name="view_as_hex"> |
| 1485 | <label>View as binary</label> |
| 1486 | </object> |
| 1487 | </object> |
| 1488 | </dropdown> |
| 1489 | </object> |
| 1490 | <object class="separator"/> |
| 1491 | <object class="wxComboBox"> |
| 1492 | <content> |
| 1493 | <item>Just</item> |
| 1494 | <item>a combobox</item> |
| 1495 | <item>in the toolbar</item> |
| 1496 | </content> |
| 1497 | </object> |
| 1498 | </object> |
| 1499 | |
| 1500 | @endcode |
| 1501 | |
| 1502 | |
| 1503 | @subsubsection xrc_wxtreectrl wxTreeCtrl |
| 1504 | |
| 1505 | No additional properties. |
| 1506 | |
| 1507 | |
| 1508 | @subsubsection xrc_wxtreebook wxTreebook |
| 1509 | |
| 1510 | No additional properties. |
| 1511 | |
| 1512 | A treebook can have one or more child objects of the @c treebookpage |
| 1513 | pseudo-class (similarly to @ref xrc_wxnotebook "wxNotebook" and its |
| 1514 | @c notebookpage). @c treebookpage objects have the following properties: |
| 1515 | |
| 1516 | @beginTable |
| 1517 | @hdr3col{property, type, description} |
| 1518 | @row3col{depth, integer, |
| 1519 | Page's depth in the labels tree (required; see below).} |
| 1520 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1521 | Sheet page's title (required).} |
| 1522 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1523 | Bitmap shown alongside the label (default: none).} |
| 1524 | @row3col{selected, @ref overview_xrcformat_type_bool, |
| 1525 | Is the page selected initially (only one page can be selected; default: 0)?} |
| 1526 | @endTable |
| 1527 | |
| 1528 | Each @c treebookpage has exactly one non-toplevel window as its child. |
| 1529 | |
| 1530 | The tree of labels is not described using nested @c treebookpage objects, but |
| 1531 | using the @em depth property. Toplevel pages have depth 0, their child pages |
| 1532 | have depth 1 and so on. A @c treebookpage's label is inserted as child of |
| 1533 | the latest preceding page with depth equal to @em depth-1. For example, this |
| 1534 | XRC markup: |
| 1535 | |
| 1536 | @code |
| 1537 | <object class="wxTreebook"> |
| 1538 | ... |
| 1539 | <object class="treebookpage"> |
| 1540 | <depth>0</depth> |
| 1541 | <label>Page 1</label> |
| 1542 | <object class="wxPanel">...</object> |
| 1543 | </object> |
| 1544 | <object class="treebookpage"> |
| 1545 | <depth>1</depth> |
| 1546 | <label>Subpage 1A</label> |
| 1547 | <object class="wxPanel">...</object> |
| 1548 | </object> |
| 1549 | <object class="treebookpage"> |
| 1550 | <depth>2</depth> |
| 1551 | <label>Subsubpage 1</label> |
| 1552 | <object class="wxPanel">...</object> |
| 1553 | </object> |
| 1554 | <object class="treebookpage"> |
| 1555 | <depth>1</depth> |
| 1556 | <label>Subpage 1B</label> |
| 1557 | <object class="wxPanel">...</object> |
| 1558 | </object> |
| 1559 | <object class="treebookpage"> |
| 1560 | <depth>2</depth> |
| 1561 | <label>Subsubpage 2</label> |
| 1562 | <object class="wxPanel">...</object> |
| 1563 | </object> |
| 1564 | <object class="treebookpage"> |
| 1565 | <depth>0</depth> |
| 1566 | <label>Page 2</label> |
| 1567 | <object class="wxPanel">...</object> |
| 1568 | </object> |
| 1569 | </object> |
| 1570 | @endcode |
| 1571 | |
| 1572 | corresponds to the following tree of labels: |
| 1573 | |
| 1574 | - Page 1 |
| 1575 | - Subpage 1A |
| 1576 | - Subsubpage 1 |
| 1577 | - Subpage 1B |
| 1578 | - Subsubpage 2 |
| 1579 | - Page 2 |
| 1580 | |
| 1581 | |
| 1582 | @subsubsection xrc_wxwizard wxWizard |
| 1583 | |
| 1584 | @beginTable |
| 1585 | @hdr3col{property, type, description} |
| 1586 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1587 | Bitmap to display on the left side of the wizard (default: none).} |
| 1588 | @endTable |
| 1589 | |
| 1590 | A wizard object can have one or more child objects of the wxWizardPage or |
| 1591 | wxWizardPageSimple classes. They both support the following properties |
| 1592 | (in addition to @ref overview_xrcformat_std_props): |
| 1593 | |
| 1594 | @beginTable |
| 1595 | @hdr3col{property, type, description} |
| 1596 | @row3col{bitmap, @ref overview_xrcformat_type_bitmap, |
| 1597 | Page-specific bitmap (default: none).} |
| 1598 | @endTable |
| 1599 | |
| 1600 | wxWizardPageSimple pages are automatically chained together; wxWizardPage pages |
| 1601 | transitions must be handled programatically. |
| 1602 | |
| 1603 | |
| 1604 | @section overview_xrcformat_sizers Sizers |
| 1605 | |
| 1606 | Sizers are handled slightly differently in XRC resources than they are in |
| 1607 | wxWindow hierarchy. wxWindow's sizers hierarchy is parallel to the wxWindow |
| 1608 | children hieararchy: child windows are children of their parent window and |
| 1609 | the sizer (or sizers) form separate hierarchy attached to the window with |
| 1610 | wxWindow::SetSizer(). |
| 1611 | |
| 1612 | In XRC, the two hierarchies are merged together: sizers are children of other |
| 1613 | sizers or windows and they can contain child window objects. |
| 1614 | |
| 1615 | If a sizer is child of a window object in the resource, it must be the only |
| 1616 | child and it will be attached to the parent with wxWindow::SetSizer(). |
| 1617 | Additionally, if the window doesn't have its size explicitly set, |
| 1618 | wxSizer::Fit() is used to resize the window. If the parent window is |
| 1619 | toplevel window, wxSizer::SetSizeHints() is called to set its hints. |
| 1620 | |
| 1621 | A sizer object can have one or more child objects of one of two pseudo-classes: |
| 1622 | @c sizeritem or @c spacer (see @ref overview_xrcformat_wxstddialogbuttonsizer for |
| 1623 | an exception). The former specifies an element (another sizer or a window) |
| 1624 | to include in the sizer, the latter adds empty space to the sizer. |
| 1625 | |
| 1626 | @c sizeritem objects have exactly one child object: either another sizer |
| 1627 | object, or a window object. @c spacer objects don't have any children, but |
| 1628 | they have one property: |
| 1629 | |
| 1630 | @beginTable |
| 1631 | @hdr3col{property, type, description} |
| 1632 | @row3col{size, @ref overview_xrcformat_type_size, Size of the empty space (required).} |
| 1633 | @endTable |
| 1634 | |
| 1635 | Both @c sizeritem and @c spacer objects can have any of the following |
| 1636 | properties: |
| 1637 | |
| 1638 | @beginTable |
| 1639 | @hdr3col{property, type, description} |
| 1640 | @row3col{option, integer, |
| 1641 | The "option" value for sizers. Used by wxBoxSizer to set proportion of |
| 1642 | the item in the growable direction (default: 0).} |
| 1643 | @row3col{flag, @ref overview_xrcformat_type_style, |
| 1644 | wxSizerItem flags (default: 0).} |
| 1645 | @row3col{border, @ref overview_xrcformat_type_dimension, |
| 1646 | Size of the border around the item (directions are specified in flags) |
| 1647 | (default: 0).} |
| 1648 | @row3col{minsize, @ref overview_xrcformat_type_size, |
| 1649 | Minimal size of this item (default: no min size).} |
| 1650 | @row3col{ratio, @ref overview_xrcformat_type_size, |
| 1651 | Item ratio, see wxSizer::SetRatio() (default: no ratio).} |
| 1652 | @row3col{cellpos, @ref overview_xrcformat_type_pos, |
| 1653 | (wxGridBagSizer only) Position, see wxGBSizerItem::SetPos() (required). } |
| 1654 | @row3col{cellspan, @ref overview_xrcformat_type_size, |
| 1655 | (wxGridBagSizer only) Span, see wxGBSizerItem::SetSpan() (required). } |
| 1656 | @endTable |
| 1657 | |
| 1658 | Example of sizers XRC code: |
| 1659 | @code |
| 1660 | <object class="wxDialog" name="derived_dialog"> |
| 1661 | <title>Derived Dialog Example</title> |
| 1662 | <centered>1</centered> |
| 1663 | <!-- this sizer is set to be this dialog's sizer: --> |
| 1664 | <object class="wxFlexGridSizer"> |
| 1665 | <cols>1</cols> |
| 1666 | <rows>0</rows> |
| 1667 | <vgap>0</vgap> |
| 1668 | <hgap>0</hgap> |
| 1669 | <growablecols>0</growablecols> |
| 1670 | <growablerows>0</growablerows> |
| 1671 | <object class="sizeritem"> |
| 1672 | <flag>wxALIGN_CENTRE|wxALL</flag> |
| 1673 | <border>5</border> |
| 1674 | <object class="wxButton" name="my_button"> |
| 1675 | <label>My Button</label> |
| 1676 | </object> |
| 1677 | </object> |
| 1678 | <object class="sizeritem"> |
| 1679 | <flag>wxALIGN_CENTRE|wxALL</flag> |
| 1680 | <border>5</border> |
| 1681 | <object class="wxBoxSizer"> |
| 1682 | <orient>wxHORIZONTAL</orient> |
| 1683 | <object class="sizeritem"> |
| 1684 | <flag>wxALIGN_CENTRE|wxALL</flag> |
| 1685 | <border>5</border> |
| 1686 | <object class="wxCheckBox" name="my_checkbox"> |
| 1687 | <label>Enable this text control:</label> |
| 1688 | </object> |
| 1689 | </object> |
| 1690 | <object class="sizeritem"> |
| 1691 | <flag>wxALIGN_CENTRE|wxALL</flag> |
| 1692 | <border>5</border> |
| 1693 | <object class="wxTextCtrl" name="my_textctrl"> |
| 1694 | <size>80,-1</size> |
| 1695 | <value></value> |
| 1696 | </object> |
| 1697 | </object> |
| 1698 | </object> |
| 1699 | </object> |
| 1700 | ... |
| 1701 | </object> |
| 1702 | </object> |
| 1703 | @endcode |
| 1704 | |
| 1705 | The sizer classes that can be used are listed below, together with their |
| 1706 | class-specific properties. All classes support the following properties: |
| 1707 | |
| 1708 | @beginTable |
| 1709 | @hdr3col{property, type, description} |
| 1710 | @row3col{minsize, @ref overview_xrcformat_type_size, |
| 1711 | Minimal size that this sizer will have, see wxSizer::SetMinSize() |
| 1712 | (default: no min size).} |
| 1713 | @endTable |
| 1714 | |
| 1715 | @subsection overview_xrcformat_wxboxsizer wxBoxSizer |
| 1716 | |
| 1717 | @beginTable |
| 1718 | @hdr3col{property, type, description} |
| 1719 | @row3col{orient, @ref overview_xrcformat_type_style, |
| 1720 | Sizer orientation, "wxHORIZONTAL" or "wxVERTICAL" (default: wxHORIZONTAL).} |
| 1721 | @endTable |
| 1722 | |
| 1723 | @subsection overview_xrcformat_wxstaticsboxizer wxStaticBoxSizer |
| 1724 | |
| 1725 | @beginTable |
| 1726 | @hdr3col{property, type, description} |
| 1727 | @row3col{orient, @ref overview_xrcformat_type_style, |
| 1728 | Sizer orientation, "wxHORIZONTAL" or "wxVERTICAL" (default: wxHORIZONTAL).} |
| 1729 | @row3col{label, @ref overview_xrcformat_type_text, |
| 1730 | Label to be used for the static box around the sizer (required).} |
| 1731 | @endTable |
| 1732 | |
| 1733 | @subsection overview_xrcformat_wxgridsizer wxGridSizer |
| 1734 | |
| 1735 | @beginTable |
| 1736 | @hdr3col{property, type, description} |
| 1737 | @row3col{rows, integer, Number of rows in the grid (default: 0 - determine automatically).} |
| 1738 | @row3col{cols, integer, Number of columns in the grid (default: 0 - determine automatically).} |
| 1739 | @row3col{vgap, integer, Vertical gap between children (default: 0).} |
| 1740 | @row3col{hgap, integer, Horizontal gap between children (default: 0).} |
| 1741 | @endTable |
| 1742 | |
| 1743 | @subsection overview_xrcformat_wxflexgridsizer wxFlexGridSizer |
| 1744 | |
| 1745 | @beginTable |
| 1746 | @hdr3col{property, type, description} |
| 1747 | @row3col{rows, integer, Number of rows in the grid (default: 0 - determine automatically).} |
| 1748 | @row3col{cols, integer, Number of columns in the grid (default: 0 - determine automatically).} |
| 1749 | @row3col{vgap, integer, Vertical gap between children (default: 0).} |
| 1750 | @row3col{hgap, integer, Horizontal gap between children (default: 0).} |
| 1751 | @row3col{growablerows, comma-separated integers list, |
| 1752 | Comma-separated list of indexes of rows that are growable |
| 1753 | (default: none).} |
| 1754 | @row3col{growablecols, comma-separated integers list, |
| 1755 | Comma-separated list of indexes of columns that are growable |
| 1756 | (default: none).} |
| 1757 | @endTable |
| 1758 | |
| 1759 | @subsection overview_xrcformat_wxgridbagsizer wxGridBagSizer |
| 1760 | |
| 1761 | @beginTable |
| 1762 | @hdr3col{property, type, description} |
| 1763 | @row3col{vgap, integer, Vertical gap between children (default: 0).} |
| 1764 | @row3col{hgap, integer, Horizontal gap between children (default: 0).} |
| 1765 | @row3col{growablerows, comma-separated integers list, |
| 1766 | Comma-separated list of indexes of rows that are growable |
| 1767 | (default: none).} |
| 1768 | @row3col{growablecols, comma-separated integers list, |
| 1769 | Comma-separated list of indexes of columns that are growable |
| 1770 | (default: none).} |
| 1771 | @endTable |
| 1772 | |
| 1773 | @subsection overview_xrcformat_wxwrapsizer wxWrapSizer |
| 1774 | |
| 1775 | @beginTable |
| 1776 | @hdr3col{property, type, description} |
| 1777 | @row3col{orient, @ref overview_xrcformat_type_style, |
| 1778 | Sizer orientation, "wxHORIZONTAL" or "wxVERTICAL" (required).} |
| 1779 | @row3col{flag, @ref overview_xrcformat_type_style, wxWrapSizer flags (default: 0).} |
| 1780 | @endTable |
| 1781 | |
| 1782 | @subsection overview_xrcformat_wxstddialogbuttonsizer wxStdDialogButtonSizer |
| 1783 | |
| 1784 | Unlike other sizers, wxStdDialogButtonSizer doesn't have neither @c sizeritem |
| 1785 | nor @c spacer children. Instead, it has one or more children of the |
| 1786 | @c button pseudo-class. @c button objects have no properties and they must |
| 1787 | always have exactly one child of the @c wxButton class or a class derived from |
| 1788 | wxButton. |
| 1789 | |
| 1790 | Example: |
| 1791 | @code |
| 1792 | <object class="wxStdDialogButtonSizer"> |
| 1793 | <object class="button"> |
| 1794 | <object class="wxButton" name="wxID_OK"> |
| 1795 | <label>OK</label> |
| 1796 | </object> |
| 1797 | </object> |
| 1798 | <object class="button"> |
| 1799 | <object class="wxButton" name="wxID_CANCEL"> |
| 1800 | <label>Cancel</label> |
| 1801 | </object> |
| 1802 | </object> |
| 1803 | </object> |
| 1804 | @endcode |
| 1805 | |
| 1806 | |
| 1807 | |
| 1808 | @section overview_xrcformat_other_objects Other Objects |
| 1809 | |
| 1810 | In addition to describing UI elements, XRC files can contain non-windows |
| 1811 | objects such as bitmaps or icons. This is a concession to Windows developers |
| 1812 | used to storing them in Win32 resources. |
| 1813 | |
| 1814 | Note that unlike Win32 resources, bitmaps included in XRC files are @em not |
| 1815 | embedded in the XRC file itself. XRC file only contains a reference to another |
| 1816 | file with bitmap data. |
| 1817 | |
| 1818 | @subsection overview_xrcformat_bitmap wxBitmap |
| 1819 | |
| 1820 | Bitmaps are stored in @c \<object\> element with class set to @c wxBitmap. Such |
| 1821 | bitmaps can then be loaded using wxXmlResource::LoadBitmap(). The content of |
| 1822 | the element is exactly same as in the case of |
| 1823 | @ref overview_xrcformat_type_bitmap "bitmap properties", except that toplevel |
| 1824 | @c \<object\> is used. |
| 1825 | |
| 1826 | For example, instead of: |
| 1827 | @code |
| 1828 | <bitmap>mybmp.png</bitmap> |
| 1829 | <bitmap stock_id="wxART_NEW"/> |
| 1830 | @endcode |
| 1831 | toplevel wxBitmap resources would look like: |
| 1832 | @code |
| 1833 | <object class="wxBitmap" name="my_bitmap">mybmp.png</object> |
| 1834 | <object class="wxBitmap" name="my_new_bitmap" stock_id="wxART_NEW"/> |
| 1835 | @endcode |
| 1836 | |
| 1837 | |
| 1838 | @subsection overview_xrcformat_icon wxIcon |
| 1839 | |
| 1840 | wxIcon resources are identical to @ref overview_xrcformat_bitmap "wxBitmap ones", |
| 1841 | except that the class is @c wxIcon. |
| 1842 | |
| 1843 | |
| 1844 | @section overview_xrcformat_platform Platform Specific Content |
| 1845 | |
| 1846 | It is possible to conditionally process parts of XRC files on some platforms |
| 1847 | only and ignore them on other platforms. @em Any element in XRC file, be it |
| 1848 | toplevel or arbitrarily nested one, can have the @c platform attribute. When |
| 1849 | used, @c platform contains |-separated list of platforms that this element |
| 1850 | should be processed on. It is filtered out and ignored on any other platforms. |
| 1851 | |
| 1852 | Possible elemental values are: |
| 1853 | @beginDefList |
| 1854 | @itemdef{ @c win, Windows } |
| 1855 | @itemdef{ @c mac, Mac OS X (or Mac Classic in wxWidgets version supporting it } |
| 1856 | @itemdef{ @c unix, Any Unix platform @em except OS X } |
| 1857 | @itemdef{ @c os2, OS/2 } |
| 1858 | @endDefList |
| 1859 | |
| 1860 | Examples: |
| 1861 | @code |
| 1862 | <label platform="win">Windows</label> |
| 1863 | <label platform="unix">Unix</label> |
| 1864 | <label platform="mac">Mac OS X</label> |
| 1865 | <help platform="mac|unix">Not a Windows machine</help> |
| 1866 | @endcode |
| 1867 | |
| 1868 | |
| 1869 | |
| 1870 | @section overview_xrcformat_extending Extending the XRC Format |
| 1871 | |
| 1872 | The XRC format is designed to be extensible and allows specifying and loading |
| 1873 | custom controls. The three available mechanisms are described in the rest of |
| 1874 | this section in the order of increasing complexity. |
| 1875 | |
| 1876 | @subsection overview_xrcformat_extending_subclass Subclassing |
| 1877 | |
| 1878 | The simplest way to add custom controls is to set the @c subclass attribute |
| 1879 | of @c \<object\> element: |
| 1880 | |
| 1881 | @code |
| 1882 | <object name="my_value" class="wxTextCtrl" subclass="MyTextCtrl"> |
| 1883 | <style>wxTE_MULTILINE</style> |
| 1884 | ...etc., setup wxTextCtrl as usual... |
| 1885 | </object> |
| 1886 | @endcode |
| 1887 | |
| 1888 | In that case, wxXmlResource will create an instance of the specified subclass |
| 1889 | (@c MyTextCtrl in the example above) instead of the class (@c wxTextCtrl above) |
| 1890 | when loading the resource. However, the rest of the object's loading (calling |
| 1891 | its Create() method, setting its properties, loading any children etc.) |
| 1892 | will proceed in @em exactly the same way as it would without @c subclass |
| 1893 | attribute. In other words, this approach is only sufficient when the custom |
| 1894 | class is just a small modification (e.g. overridden methods or customized |
| 1895 | events handling) of an already supported classes. |
| 1896 | |
| 1897 | The subclass must satisfy a number of requirements: |
| 1898 | |
| 1899 | -# It must be derived from the class specified in @c class attribute. |
| 1900 | -# It must be visible in wxWidget's pseudo-RTTI mechanism, i.e. there must be |
| 1901 | a DECLARE_DYNAMIC_CLASS() entry for it. |
| 1902 | -# It must support two-phase creation. In particular, this means that it has |
| 1903 | to have default constructor. |
| 1904 | -# It cannot provide custom Create() method and must be constructible using |
| 1905 | base @c class' Create() method (this is because XRC will call Create() of |
| 1906 | @c class, not @c subclass). In other words, @em creation of the control |
| 1907 | must not be customized. |
| 1908 | |
| 1909 | |
| 1910 | @subsection overview_xrcformat_extending_unknown Unknown Objects |
| 1911 | |
| 1912 | A more flexible solution is to put a @em placeholder in the XRC file and |
| 1913 | replace it with custom control after the resource is loaded. This is done by |
| 1914 | using the @c unknown pseudo-class: |
| 1915 | |
| 1916 | @code |
| 1917 | <object class="unknown" name="my_placeholder"/> |
| 1918 | @endcode |
| 1919 | |
| 1920 | The placeholder is inserted as dummy wxPanel that will hold custom control in |
| 1921 | it. At runtime, after the resource is loaded and a window created from it |
| 1922 | (using e.g. wxXmlResource::LoadDialog()), use code must call |
| 1923 | wxXmlResource::AttachUnknownControl() to insert the desired control into |
| 1924 | placeholder container. |
| 1925 | |
| 1926 | This method makes it possible to insert controls that are not known to XRC at |
| 1927 | all, but it's also impossible to configure the control in XRC description in |
| 1928 | any way. The only properties that can be specified are |
| 1929 | the @ref overview_xrcformat_std_props "standard window properties". |
| 1930 | |
| 1931 | @note @c unknown class cannot be combined with @c subclass attribute, |
| 1932 | they are mutually exclusive. |
| 1933 | |
| 1934 | |
| 1935 | @subsection overview_xrcformat_extending_custom Adding Custom Classes |
| 1936 | |
| 1937 | Finally, XRC allows adding completely new classes in addition to the ones |
| 1938 | listed in this document. A class for which wxXmlResourceHandler is implemented |
| 1939 | can be used as first-class object in XRC simply by passing class name as the |
| 1940 | value of @c class attribute: |
| 1941 | |
| 1942 | @code |
| 1943 | <object name="my_ctrl" class="MyWidget"> |
| 1944 | <my_prop>foo</my_prop> |
| 1945 | ...etc., whatever MyWidget handler accepts... |
| 1946 | </object> |
| 1947 | @endcode |
| 1948 | |
| 1949 | The only requirements on the class are that |
| 1950 | -# the class must derive from wxObject |
| 1951 | -# it must support wxWidget's pseudo-RTTI mechanism |
| 1952 | |
| 1953 | Child elements of @c \<object\> are handled by the custom handler and there are |
| 1954 | no limitations on them imposed by XRC format. |
| 1955 | |
| 1956 | This is the only mechanism that works for toplevel objects -- custom controls |
| 1957 | are accessible using type-unsafe wxXmlResource::LoadObject() method. |
| 1958 | |
| 1959 | |
| 1960 | |
| 1961 | @section overview_xrcformat_packed Packed XRC Files |
| 1962 | |
| 1963 | In addition to plain XRC files, wxXmlResource supports (if wxFileSystem support |
| 1964 | is compiled in) compressed XRC resources. Compressed resources have either |
| 1965 | .zip or .xrs extension and are simply ZIP files that contain arbitrary |
| 1966 | number of XRC files and their dependencies (bitmaps, icons etc.). |
| 1967 | |
| 1968 | |
| 1969 | |
| 1970 | @section overview_xrcformat_oldversions Older Format Versions |
| 1971 | |
| 1972 | This section describes differences in older revisions of XRC format (i.e. |
| 1973 | files with older values of @c version attribute of @c \<resource\>). |
| 1974 | |
| 1975 | |
| 1976 | @subsection overview_xrcformat_pre_v2530 Versions Before 2.5.3.0 |
| 1977 | |
| 1978 | Version 2.5.3.0 introduced C-like handling of "\\" in text. In older versions, |
| 1979 | "\n", "\t" and "\r" escape sequences were replaced with respective characters |
| 1980 | in the same matter it's done in C, but "\\" was left intact instead of being |
| 1981 | replaced with single "\", as one would expect. Starting with 2.5.3.0, all of |
| 1982 | them are handled in C-like manner. |
| 1983 | |
| 1984 | |
| 1985 | @subsection overview_xrcformat_pre_v2301 Versions Before 2.3.0.1 |
| 1986 | |
| 1987 | Prior to version 2.3.0.1, "$" was used for accelerators instead of "_" |
| 1988 | or "&". For example, |
| 1989 | @code |
| 1990 | <label>$File</label> |
| 1991 | @endcode |
| 1992 | was used in place of current version's |
| 1993 | @code |
| 1994 | <label>_File</label> |
| 1995 | @endcode |
| 1996 | (or "&File"). |
| 1997 | |
| 1998 | */ |