-
- XML resources file format
- ===============================
-
- 1. Basics
------------
-
-XML resource is well-formed XML document, i.e. all tags are paired
-and there is only one root node, which is always <resource>.
-
-In the following text, I will use standard XML terminology:
-
-<tag_one prop1="prop" prop2='yes'>
- <tag_two/>
-</tag_one>
-
-Here, tag_one is a node (the word 'tag' refers to the type of the node),
-prop1 and prop2 are properties and tag_two is a child node of tag_one.
-Property's default value is the value that will be assigned to the property
-if you do not specify it explicitly.
-
-I will use the term "primary node" to refer to nodes than represent controls,
-dialogs etc. "Secondary nodes" are nodes used to store data:
-
-<dialog name="my_dlg"> primary
- <title>Demo Dialog...</title> secondary
- <size>100,200d</size> secondary
- <children> secondary
- <button name="wxID_OK"> primary
- <label>Ok</label> secondary
- <pos>10,10d</pos> secondary
- </button>
- </children>
-</dialog>
-
-In the example above, <label>, <pos>, <size> and <title> are "variables",
-i.e. they contain a value and not a list of children (unlike <children> node).
-
-Any node (but the root one) may have property "platform" with possible
-values "unix", "win", "mac" or "os2". All nodes with "platform" property
-specified and other than the platform the program is currently being executed
-on will be removed when reading XML resource file.
-
-Root node may have children of these and only these types: <menu>, <menubar>,
-<dialog>, <panel>
-
-
-
- 2. IDs
---------
-
-Any primary node may have property "name" used to identify it. Default value
-is "-1", any string is legal name. Names
- wxID_OPEN, wxID_CLOSE, wxID_NEW,
- wxID_SAVE, wxID_SAVEAS, wxID_REVERT,
- wxID_EXIT, wxID_UNDO, wxID_REDO,
- wxID_HELP, wxID_PRINT, wxID_PRINT_SETUP,
- wxID_PREVIEW, wxID_ABOUT, wxID_HELP_CONTENTS,
- wxID_HELP_COMMANDS, wxID_HELP_PROCEDURES,
- wxID_CUT, wxID_COPY, wxID_PASTE,
- wxID_CLEAR, wxID_FIND, wxID_DUPLICATE,
- wxID_SELECTALL, wxID_OK, wxID_CANCEL,
- wxID_APPLY, wxID_YES, wxID_NO,
- wxID_STATIC, wxID_FORWARD, wxID_BACKWARD,
- wxID_DEFAULT, wxID_MORE, wxID_SETUP,
- wxID_RESET, wxID_HELP_CONTEXT
-are translated into corresponding wxWindows ID constant, XMLID macro is used
-otherwise to generate unique ID. wxWindows control created from named node
-will have name=name and id=XMLID(name) or wxID_XXXX.
-
-
- 3. Common variables types
----------------------------
-
-Variables are always of a known type:
-
-bool - boolean value. "1", "true", "t", "on" mean TRUE, anything
- else (namely "0", "false", "f", "off") means FALSE.
- FIXME: maybe use only 1/0 ??
-
-integer - integer value, i.e. digits 0-9 plus optional minus sign.
-
-text - anything. Within text node all occurences of $ are replaced
- by & (used for shortcuts, e.g. "E&xit"), $$ by $, \\, \n, \r,
- \t as usual in C++.
-
-style - (also called flags) list of flags delimined by any combination
- of spaces and | characters. Resources parser accepts only
- _registered_ flags -- i.e. flags that are valid for given
- node/control. Example:
- <flag>wxEXPAND | wxTOP|wxBOTTOM</flag>
-
-color - color in HTML format: #rrggbb where rr,gg,bb are hexadecimal
- values (00-FF) for red, green and blue components in
- the RGB color model
-
-coord - size or position information. Consists of two integers
- separated by comma ("x,y"). The values are in pixels
- unless "d" is attached to the right side of it --
- in which case the values are interpreted as dialog units.
- Value of -1 means "use default". Examples:
- 30,30
- -1,-1
- 50,-1
- 145,56d
- 67,-1d
-
-
-
- 4. Layout
------------
-
-Most common nodes layout is as follows:
-
-<primary_node name="name" platform="platform">
- <var_1>...</var_1>
- .
- .
- .
- <var_n>...</var_n>
- <children>
- (n primary nodes)
- </children>
-</primary_node>
-
-where children node is supported only by panels, dialogs etc. -- see
-nodes description for details.
-
-In the following text,
-
- TYPE var_name [ (= default_value) ]
-
-means that given primary node may have child node with name var_name
-and content type TYPE. If default value is given, the node is optional
-and default_value will be used if not specified. Otherwise, the node
-is mandatory and must always be present. For example, "color fg" means
-than variable tag fg, e.g. <fg>#rr0000</fg> is expected.
-
-
-
- 5. Common controls variables
-------------------------------
-
-_All_ nodes that represent wxWindows controls (gauge, panel, dialog,
-textctrl etc.) accept the following properties:
-
-coord pos (= -1,-1) position of the control. Default value
- equals to wxDefaultPosition
-coord size (= -1,-1) size of the control. Default value equals to
- wxDefaultSize
-text tooltip window's tooltip
-color bg background color of the control
-color fg foreground/text color of the control
-style style control style flag. Default value is
- control-dependent (but 0 is common value)
-style exstyle control extended style flag
-bool enabled (= 1) is the control enabled?
-bool hidden (= 0) is the control hidden?
-bool focused (= 0) has the control focus?
-
-
-_Usually_ (but not always, only when it makes sense) controls support text
-variable label which contains displayed text and/or value which contains
-editable text. These are always explicitly mentioned in tag description.
-
-
-
-
- 6. Tags description
----------------------
-
-If 'Control' is derived from wxControl, it supports all variables from '5.'
-'Styles' section lists all acceptable flags for style and exstyle variables.
-
-
- <panel>
----------
- Control:
- wxPanel
-
- Variables:
- only common controls variables
-
- Styles:
- wxNO_3D, wxTAB_TRAVERSAL, wxWS_EX_VALIDATE_RECURSIVELY
-
-
-
- <dialog>
-----------
- Control:
- wxDialog
-
- Variables:
- style style (= wxDEFAULT_DIALOG_style)
- text title dialog's title
-
- Styles:
- wxSTAY_ON_TOP, wxCAPTION, wxDEFAULT_DIALOG_style, wxTHICK_FRAME,
- wxSYSTEM_MENU, wxRESIZE_BORDER, wxRESIZE_BOX, wxDIALOG_MODAL,
- wxDIALOG_MODELESS, wxNO_3D, wxTAB_TRAVERSAL,
- wxWS_EX_VALIDATE_RECURSIVELY
-
-
-
- <boxsizer>
---------------
- Control:
- wxBoxSizer (not a control)
-
- Behaviour:
- boxsizer's parent must be either <panel>, <dialog> or another
- sizer, nothing else!
-
- If the sizer does not have parent sizer, the sizer will attach itself
- to the parent panel/dialog using SetAutoLayout(TRUE) and SetSizer().
- If the parent panel/dialog has default size (i.e. not specified in
- the resource), the sizer will fit it using wxSizer::Fit(). If the
- parent panel/dialog is resizable, size hints will be set
- automatically.
-
- Variables:
- style orient (= wxHORIZONTAL) orientation, either
- wxHORIZONTAL or wxVERTICAL
-
- Styles:
- wxHORIZONTAL, wxVERTICAL (for orient variable)
-
- wxLEFT, wxRIGHT, wxTOP, wxBOTTOM, wxNORTH, wxSOUTH, wxEAST, wxWEST,
- wxALL, wxGROW, wxEXPAND, wxSHAPED, wxSTRETCH_NOT, wxALIGN_CENTER,
- wxALIGN_CENTRE, wxALIGN_LEFT, wxALIGN_TOP, wxALIGN_RIGHT,
- wxALIGN_BOTTOM, wxALIGN_CENTER_HORIZONTAL, wxALIGN_CENTRE_HORIZONTAL,
- wxALIGN_CENTER_HORIZONTAL, wxALIGN_CENTRE_HORIZONTAL (for flag
- variable of <item> or <spacer> child nodes)
-
- Child nodes:
- Contains child node <children> which has arbitrary number of
- <sizeritem> and <spacer> child nodes.
-
- <sizeritem>
- -------------
- Variables:
- integer option (= 0) relative size of the widget
- style flag (= 0) style flag
- integer border (= 0) surrounding border
-
- Has exactly one child node <window> that contains the control
- (or child sizer because sizers may be nested)
- to be inserted into the sizer.
-
- <spacer>
- ----------
- Variables:
- integer option (= 0) relative size of the widget
- style flag (= 0) style flag
- integer border (= 0) surrounding border
-
- Inserts empty space into the sizer
-
-
-
- <staticboxsizer>
-------------------
- Control:
- wxStaticBoxSizer (not a control)
-
- Same as <boxsizer> except that it has additional variable:
-
- text label (= "") label of surrounding static box
-
- wxStaticBox required by wxStaticBoxSizer is created automatically!
-
-
-
- <notebooksizer>
------------------
- Control:
- wxNotebookSizer (not a control)
-
- Behaviour:
- notebooksizer's parent must be a sizer (not notebooksizer,
- see below)!
-
- Variables:
- none
-
- Styles:
- none
-
- Child nodes:
- Has exactly one child node <window> that contains the notebook
- (nothing else is allowed!) to be inserted into the sizer.
-
-
-
- <textctrl>
-------------
- Control:
- wxTextCtrl
-
- Variables:
- text value (= "")default text of the control
-
- Styles:
- wxTE_PROCESS_ENTER, wxTE_PROCESS_TAB, wxTE_MULTILINE, wxTE_PASSWORD,
- wxTE_READONLY, wxHSCROLL
-
-
-
- <htmlwindow>
---------------
- Control:
- wxHtmlWindow
-
- Variables:
- integer borders (= 0) window's borders
- (see wxHtmlWindow::SetBorders)
- text url (= "") if present, given page will be loaded
- text htmlcode (= "") if present, given _text_ will be displayed
- (you will have to use CDATA section
- to embed HTML code into XML document)
-
- Styles:
- wxHW_SCROLLBAR_NEVER, wxHW_SCROLLBAR_AUTO