finished XRC format specification: added docs for all standard controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
81e0b3d978
commit
be42eeb0c3
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,7 @@ tn0010.htm Compiling wxWidgets applications in the VC++ IDE
|
||||
tn0011.txt All about version numbers
|
||||
tn0012.txt wxWidgets platform, toolkit and library names
|
||||
tn0013.txt How to make a wxGTK distribution
|
||||
tn0014.txt XRC resources format specification
|
||||
tn0014.txt *** REMOVED *** (included in the manual now)
|
||||
tn0015.txt How to add new bitmaps to wxWidgets UI elements
|
||||
tn0016.txt How to add new files and libraries to wxWidgets build system (Bakefile)
|
||||
tn0017.txt How to write unit tests for wxWidgets classes
|
||||
|
@ -1,548 +0,0 @@
|
||||
XRC resources format specification
|
||||
==================================
|
||||
|
||||
!!!!! NOT YET FINISHED !!!!!
|
||||
|
||||
0. Introduction
|
||||
===============
|
||||
|
||||
This note describes the file format used for storing XRC resources that are
|
||||
used by wxXmlResource class. It is probably only useful for those implementing
|
||||
dialog editors with XRC support.
|
||||
|
||||
If you only want to use the resources, you can choose from a number of editors:
|
||||
a) wxDesigner (http://www.roebling.de)
|
||||
b) XRCed (wxPython/tools)
|
||||
c) DialogBlocks (wxPython/tools)
|
||||
|
||||
and others listed on the Resources section of the wxWidgets web
|
||||
site.
|
||||
|
||||
The XRC format is based on XML 1.0 (please consult W3C's specification). There
|
||||
is no DTD available since it is not possible to fully describe the format with
|
||||
the limited expressive power of DTDs.
|
||||
|
||||
|
||||
Note: see also http://ldaptool.sourceforge.net/XRCGuide/XRCGuideSingle/
|
||||
|
||||
|
||||
|
||||
1. Terminology
|
||||
==============
|
||||
|
||||
The usual XML terminology applies. In particular, we shall use the terms
|
||||
NODE, PROPERTY and VALUE in the XML sense:
|
||||
|
||||
<node property1="value1" property2="value2">...</node>
|
||||
|
||||
The term ATTRIBUTE is specific to XRC and refers to a subnode
|
||||
of an <object> or <object_ref> node that is itself not <object> or <object_ref>.
|
||||
In the example below, <pos>, <label> and <style> are attributes, while neither
|
||||
<resource> nor either of <object>s is:
|
||||
|
||||
<?xml version="1.0" encoding="utf-8">
|
||||
<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
|
||||
<object class="wxPanel">
|
||||
<style>wxSUNKEN_BORDER</style> <!-- attr -->
|
||||
<object class="wxStaticText">
|
||||
<label>A label</label> <!-- attr -->
|
||||
<pos>10,10</pos> <!-- attr -->
|
||||
</object>
|
||||
</object>
|
||||
</resource>
|
||||
|
||||
ATTRIBUTE VALUE is the content of all text elements within attribute tag. In the
|
||||
above example, "wxSUNKEN_BORDER", "A label" and "10,10" are attribute values.
|
||||
ATTRIBUTE TYPE defines what attribute values are valid for given attribute (you
|
||||
can think of it as attribute value syntax definition).
|
||||
|
||||
|
||||
|
||||
2. Elementary description
|
||||
=========================
|
||||
|
||||
XRC resource file is a well-formed XML 1.0 document. All elements of XRC file
|
||||
are from the http://www.wxwidgets.org/wxxrc namespace.
|
||||
|
||||
The root node of XRC document must be <resource>. The <resource> node has
|
||||
optional "version" property. Default version (in absence of the version
|
||||
property) is "0.0.0.0". The version consists of four integers separated by
|
||||
periods. Version of XRC format changes only if there was an incompatible
|
||||
change introduced (i.e. either the library cannot understand old resource
|
||||
files or older versions of the library wouldn't understand the new format).
|
||||
The first three integers are major, minor and release number of the wxWidgets
|
||||
release when the change was introduced, the last one is revision number and
|
||||
is 0 for the first incompatible change in given wxWidgets release, 1 for
|
||||
the second etc.
|
||||
|
||||
Differences between versions are described within this document in paragraphs
|
||||
entitled "Version Note".
|
||||
|
||||
The <resource> node contains namespace declaration, too:
|
||||
|
||||
<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
|
||||
|
||||
The <resource> node is only allowed to have <object> and <object_ref>
|
||||
subnodes, all of which must have the "name" property.
|
||||
|
||||
The <object> node represents a single object (GUI element) and it usually maps
|
||||
directly to a wxWidgets class instance. It has the properties: "name", "class"
|
||||
and "subclass". "class" must always be present, it tells XRC what wxWidgets
|
||||
object should be created in this place. The other two are optional. "name" is
|
||||
ID used to identify the object. It is the value passed to the XRCID() macro and
|
||||
is also used to construct wxWindow's id and name attributes and must be unique
|
||||
among all children of the nearest container object (wxDialog, wxFrame,
|
||||
wxPanel, wxNotebook) upside from the object in XML nodes hierarchy (two distinct
|
||||
containers may contain objects with same "name", though). "subclass" is
|
||||
optional name of class whose constructor will be called instead of the
|
||||
constructor for "class". Subclass must be available in the program that loads
|
||||
the resource, must be derived from "class" and must be registered within
|
||||
wxWidgets' RTTI system.
|
||||
|
||||
Finally, an optional "insert_at" property may be present. Currently only the
|
||||
values "begin" and "end" are supported, meaning to insert the object in the
|
||||
beginning of the parent node objects list or to append it at the end (which is
|
||||
the default if this property is absent).
|
||||
|
||||
Example:
|
||||
|
||||
<object name="MyList1" class="wxListCtrl" subclass="MyListCtrlClass">
|
||||
...
|
||||
</object>
|
||||
|
||||
<object> node may have arbitrary child nodes. What child nodes and their
|
||||
semantics are class-dependent and are defined later in this document. The user
|
||||
is allowed to register new object handlers within XRC and extend it to accept
|
||||
new <object> classes (and therefore different <object>'s child nodes).
|
||||
|
||||
<object_ref> node is identical to <object>, except that it does _not_ have
|
||||
"class" property and has additional required property "ref". Its concept is
|
||||
similar to Unix symlinks: value of the "ref" property is equal to the value of
|
||||
"name" property of some existing node (called referred node) in the resources
|
||||
(not necessary top-level). Referred node's "class" property and all subnodes
|
||||
are copied in place of the referee <object_ref> node which is then processed as
|
||||
regular <object> node. If the <object_ref> node itself has child nodes, then
|
||||
these nodes _override_ any nodes from the referred node.
|
||||
|
||||
Example:
|
||||
|
||||
<object name="foo" class="wxTextCtrl">
|
||||
<value>hello</value>
|
||||
<size>100,-1d</size>
|
||||
</object>
|
||||
<object_ref name="bar" ref="foo">
|
||||
<value>bar</value> <!-- override! -->
|
||||
</object_ref>
|
||||
|
||||
is identical to:
|
||||
|
||||
<object name="foo" class="wxTextCtrl">
|
||||
<value>hello</value>
|
||||
<size>100,-1d</size>
|
||||
</object>
|
||||
<object name="bar" class="wxTextCtrl">
|
||||
<value>bar</value>
|
||||
<size>100,-1d</size>
|
||||
</object>
|
||||
|
||||
|
||||
|
||||
3. Common attribute types
|
||||
=========================
|
||||
|
||||
There are several attribute types (see section 1. Terminology) that are common
|
||||
to many attributes of different classes:
|
||||
|
||||
String
|
||||
------
|
||||
Any text. Some characters have special interpretation and are translated
|
||||
by XRC parser according to this table:
|
||||
"_" -> "&" ('&' is used to underline e.g. menu items in wxWidgets)
|
||||
"__" -> "_"
|
||||
"\n" -> line break (C character '\n')
|
||||
"\r" -> carriage return (C character '\r')
|
||||
"\t" -> tab (C character '\t')
|
||||
"\\" -> "\"
|
||||
(introduced in version 2.5.3.0, not done in earlier versions)
|
||||
|
||||
Version Note:
|
||||
'$' was used instead of '_' prior to version 2.3.0.1.
|
||||
|
||||
|
||||
I18nString
|
||||
----------
|
||||
Like String, but the value is translated to native language using wxLocale
|
||||
at runtime (unless it was disabled by not passing wxXRC_USE_LOCALE flag to
|
||||
wxXmlResource constructor). Used for strings that are "visible" in the GUI.
|
||||
|
||||
|
||||
UnsignedInteger
|
||||
---------------
|
||||
This is obvious. Only digits 0-9 may be present and there must be at least
|
||||
one digit.
|
||||
|
||||
|
||||
Integer
|
||||
-------
|
||||
Like UnsignedInteger but may be prefixed with '-' (ints less than zero).
|
||||
|
||||
|
||||
Position
|
||||
--------
|
||||
Specifies (window's) position in 2D space. Syntax is <integer>,<integer>[d]
|
||||
where <integer> is valid value of Integer type.
|
||||
|
||||
|
||||
Size
|
||||
----
|
||||
Syntax is same as Position's syntax, but the values are interpreted as window
|
||||
size (wxSize type) and not position (wxPosition type).
|
||||
|
||||
|
||||
Style[wxSomeClass]
|
||||
------------------
|
||||
List of style flags that can be passed to wxSomeClass' constructor. Flags are
|
||||
written in same way as in C++ code (e.g. "wxSUNKEN_BORDER",
|
||||
"wxHW_SCROLLBAR_NEVER") and are delimited with any combination of whitespaces
|
||||
and '|'. Possible flags are class-dependent and are not described in this
|
||||
technote. Please refer to wxWidgets manual for all styles that given class can
|
||||
accept; if XRC does not accept a flag listed in wxWidgets documentation, it is
|
||||
a bug.
|
||||
|
||||
|
||||
Bitmap
|
||||
------
|
||||
Attribute value is interpreted as filename (either absolute or relative to
|
||||
the location of XRC resource file). In addition, attribute node may have
|
||||
"stock_id" and "stock_client" properties. Their values may be any of wxArtID (or
|
||||
wxArtClient respectively) values as used by wxArtProvider (because the user may
|
||||
define own constants, effectively any string is legal here). Examples are
|
||||
"wxART_FILE_OPEN" (id) or "wxART_MENU" (client).
|
||||
|
||||
Any of "stock_id" or "stock_client" properties or the filename may be omitted.
|
||||
XRC determines the bitmap to use according to this algorithm:
|
||||
1. If there is non-empty "stock_id" property, query wxArtProvider for the
|
||||
bitmap (if there is no "stock_client", use default one, which is usually
|
||||
wxART_OTHER; exceptions are noted in class-specific sections below). If
|
||||
the query fails, continue to 2.
|
||||
2. Load the bitmap from the file in attribute value.
|
||||
|
||||
|
||||
Boolean
|
||||
-------
|
||||
Boolean value, either "0" (false) or "1" (true).
|
||||
|
||||
|
||||
Font
|
||||
----
|
||||
Font value. A font can be described either in terms of its elementary
|
||||
properties, or it can be derived from one of system fonts. The font node
|
||||
may contain following subnodes (the table lists subnode name on the left and
|
||||
variable type as per the definitions above on the right side):
|
||||
|
||||
size UnsignedInteger
|
||||
style normal | italic | slant
|
||||
weight normal | bold | light
|
||||
family roman | script | decorative | swiss | modern | teletype
|
||||
underlined Boolean
|
||||
face comma-separated list of faces
|
||||
encoding charset of the font (meaningless in Unicode build), as string
|
||||
sysfont symbolic name of system standard font
|
||||
(one of wxSYS_*_FONT constants)
|
||||
relativesize Float, font size relative to chosen system font's size;
|
||||
can only be used when 'sysfont' is used and when 'size' is not
|
||||
used
|
||||
|
||||
All of them are optional, if they are missing, wxFont default is used.
|
||||
|
||||
Examples:
|
||||
|
||||
<font>
|
||||
<face>arial,helvetica</face>
|
||||
<size>12</size>
|
||||
</font>
|
||||
|
||||
<font>
|
||||
<sysfont>wxSYS_DEFAULT_GUI_FONT</sysfont>
|
||||
<weight>bold</weight>
|
||||
<relativesize>1.5</relativesize>
|
||||
</font>
|
||||
|
||||
|
||||
Colour
|
||||
------
|
||||
A colour value is either explicit RGB value in the standard #rrggbb format
|
||||
where rr, gg and bb are hexadecimal case-insensitive values in the 00..FF
|
||||
range, or a symbolic name. Symbolic names are wxSYS_COLOUR_* constants defined
|
||||
by wxWidgets, written as strings.
|
||||
|
||||
Example:
|
||||
|
||||
<bg>wxSYS_COLOUR_SCROLLBAR</bg>
|
||||
<fg>#FF0000</fg>
|
||||
|
||||
|
||||
|
||||
4. Supported classes
|
||||
====================
|
||||
|
||||
Attributes are listed in tables in the following format:
|
||||
attribute name attribute type default value, if any
|
||||
[(optional remarks....................
|
||||
...................................)]
|
||||
|
||||
Common attributes
|
||||
-----------------
|
||||
These attributes are supported by all windows:
|
||||
|
||||
exstyle Int
|
||||
bg Colour
|
||||
fg Colour
|
||||
enabled Boolean true
|
||||
focused Boolean false
|
||||
hidden Boolean false
|
||||
tooltip I18nString
|
||||
font Font
|
||||
help I18nString
|
||||
|
||||
wxBitmap
|
||||
--------
|
||||
This is a special case, because it does not create a wxWindow instance but
|
||||
creates wxBitmap instead. Another exceptional thing is that it does not have
|
||||
any attributes. Instead, the node itself is interpreted as if it were attribute
|
||||
of type Bitmap.
|
||||
|
||||
Example: <object class="wxBitmap">bitmaps/foo.gif</object>
|
||||
|
||||
|
||||
wxIcon
|
||||
------
|
||||
Identical to wxBitmap class, except that it creates wxIcon instead of wxBitmap.
|
||||
|
||||
|
||||
wxButton
|
||||
--------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxButton]
|
||||
|
||||
label I18nString
|
||||
default Boolean false
|
||||
(Is the button default button?)
|
||||
|
||||
|
||||
wxCalendarCtrl
|
||||
--------------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxCalendarCtrl]
|
||||
|
||||
|
||||
wxCheckBox
|
||||
----------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxCheckBox]
|
||||
checked Boolean false
|
||||
|
||||
|
||||
wxCheckList
|
||||
-----------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxCheckList]
|
||||
content (see below) (empty)
|
||||
|
||||
Optional "content" attribute does not have attribute value. Instead,
|
||||
arbitrary number of <item> nodes may be rooted under it (the control
|
||||
is filled with strings contained in these nodes). Each <item>
|
||||
node must contain I18nString value and may have "checked" property
|
||||
with possible values "0" or "1" indicating the the item is initially
|
||||
checked.
|
||||
|
||||
Example:
|
||||
<object class="wxCheckList">
|
||||
<content>
|
||||
<item>One</item>
|
||||
<item checked="1">Two</item>
|
||||
<item checked="1">Three</item>
|
||||
<item>Four</item>
|
||||
</content>
|
||||
</object>
|
||||
|
||||
|
||||
wxDatePickerCtrl
|
||||
----------------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxDatePickerCtrl]
|
||||
|
||||
|
||||
wxDialog
|
||||
--------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxDialog] wxDEFAULT_DIALOG_STYLE
|
||||
title I18nString ""
|
||||
icon Bitmap (empty)
|
||||
centered Boolean false
|
||||
|
||||
wxDialog may have children objects.
|
||||
|
||||
|
||||
wxFrame
|
||||
--------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxDialog] wxDEFAULT_FRAME_STYLE
|
||||
title I18nString ""
|
||||
icon Bitmap (empty)
|
||||
centered Boolean false
|
||||
|
||||
wxFrame may have children objects. There can be at most one wxToolBar,
|
||||
wxMenuBar and wxStatusBar children; objects of these types are automatically
|
||||
set as frame's tool-, menu- and statusbar respectively.
|
||||
|
||||
|
||||
wxMenu
|
||||
------
|
||||
|
||||
wxMenu objects can contain objects of class "separator" and "break" as well as
|
||||
normal menu items, of class "wxMenuItem" described below. The menu itself can
|
||||
also have the following elements:
|
||||
|
||||
label I18nString ""
|
||||
help I18nString ""
|
||||
enabled Boolean true
|
||||
style Style[wxMenu] only wxMENU_TEAROFF currently
|
||||
|
||||
wxMenuItem
|
||||
----------
|
||||
|
||||
label I18nString ""
|
||||
accel String ""
|
||||
bitmap Bitmap (empty)
|
||||
bitmap2 Bitmap checked bitmap, wxMSW only
|
||||
checkable Boolean false
|
||||
radio Boolean false
|
||||
enabled Boolean true
|
||||
checked Boolean false ("checkable" and "radio")
|
||||
|
||||
wxMDIParentFrame
|
||||
----------------
|
||||
|
||||
Supports same attributes and children nodes as wxFrame. Additionally, children
|
||||
may be of the wxMDIChildFrame type.
|
||||
|
||||
|
||||
wxMDIChildFrame
|
||||
---------------
|
||||
|
||||
Supports same attributes and children nodes as wxFrame.
|
||||
|
||||
|
||||
wxRadioBox
|
||||
----------
|
||||
|
||||
This control may have "dimension" (major dimension) and (initial) "selection"
|
||||
Integer subelements and a composite "content" element similar to wxCheckList
|
||||
except that <item> subelements can have additional attributes:
|
||||
|
||||
tooltip I18nString ""
|
||||
helptext I18nString ""
|
||||
enabled Boolean 1
|
||||
hidden Boolean 0
|
||||
|
||||
|
||||
wxScrolledWindow
|
||||
----------------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxScrolledWindow] wxHSCROLL | wxVSCROLL
|
||||
scrollrate Size 0,0
|
||||
|
||||
wxScolledWindow may have children objects.
|
||||
|
||||
|
||||
wxSplitterWindow
|
||||
----------------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxSplitterWindow] wxSP_3D
|
||||
sashpos Integer 0
|
||||
(Initial sash position)
|
||||
minsize Integer -1
|
||||
(Minimal panel size)
|
||||
orientation "horizontal"|"vertical" horizontal
|
||||
|
||||
wxSplitterWindow must have at least one and at most two children objects.
|
||||
If there's only one child object, it is passed to wxSplitterWindow::Initialize
|
||||
and the splitter is created unsplit. If there are two children, the
|
||||
splitter is created split, either horizontally or vertically depending
|
||||
on the value of "orientation" attribute.
|
||||
|
||||
|
||||
wxStaticText
|
||||
------------
|
||||
|
||||
wxStaticText supports one class-specific attribute which wraps the controls
|
||||
contents at the specified boundary:
|
||||
|
||||
wrap Integer, in pixels None
|
||||
|
||||
wxStatusBar
|
||||
-----------
|
||||
fields Integer number of fields
|
||||
widths Width1, Width2, Width3, ...
|
||||
|
||||
|
||||
wxToolBar
|
||||
---------
|
||||
pos Position -1,-1
|
||||
size Size -1,-1
|
||||
style Style[wxToolBar] wxNO_BORDER|wxTB_HORIZONTAL
|
||||
bitmapsize Size -1,-1
|
||||
(Size of contained bitmaps)
|
||||
margins Size -1,-1
|
||||
packing Integer -1
|
||||
separation Integer -1
|
||||
bg Background colour None
|
||||
dontattachtoframe Boolean False
|
||||
|
||||
wxToolBar node may have children <object> and <object_ref> nodes. Their class
|
||||
may be either "tool", "separator" or any wxWidgets class derived from
|
||||
wxControl. "tool" and "separator" are special pseudo-classes that may only
|
||||
appear within wxToolBar node. Their attributes are as follows:
|
||||
|
||||
separator
|
||||
---------
|
||||
(doesn't have any attributes)
|
||||
|
||||
tool
|
||||
----
|
||||
bitmap Bitmap
|
||||
bitmap2 Bitmap wxNullBitmap
|
||||
toggle Boolean 0
|
||||
radio Boolean 0
|
||||
disabled Boolean 0
|
||||
label I18nString ""
|
||||
tooltip I18nString ""
|
||||
longhelp I18nString ""
|
||||
|
||||
Constraints:
|
||||
At most one of "toggle" and "radio" attributes may be 1.
|
||||
|
||||
Children objects are added to the toolbar using AddTool for "tool" class,
|
||||
AddSeparator for "separator" and AddControl for other classes.
|
||||
|
||||
|
||||
|
||||
5. More features
|
||||
================
|
||||
|
||||
FIXME -- "platform" property handling
|
||||
|
||||
|
||||
=== EOF ===
|
||||
|
||||
Version: $Id$
|
Loading…
Reference in New Issue
Block a user