git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
142 lines
5.3 KiB
Plaintext
142 lines
5.3 KiB
Plaintext
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) wxWorkshop (http://wxworkshop.sf.net)
|
|
b) wxrcedit (contrib/utils/wxrcedit)
|
|
|
|
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.
|
|
|
|
|
|
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 property-less subnode
|
|
of an <object> or <object_ref> node. In the example bellow, <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.wxwindows.org/wxxrc" version="2.3.0.1">
|
|
<object class="wxPanel">
|
|
<style>wxSUNKEN_BORDER</style>
|
|
<object class="wxStaticText">
|
|
<label>A label</label>
|
|
<pos>10,10</pos>
|
|
</object>
|
|
</object>
|
|
</resource>
|
|
|
|
|
|
2. Elementary description
|
|
-------------------------
|
|
|
|
XRC resource file is a well-formed XML 1.0 document. All elements of XRC file are
|
|
from the http://www.wxwindows.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 wxWindows
|
|
release when the change was introduced, the last one is revision number and
|
|
is 0 for the first incompatible change in given wxWindows 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.wxwindows.org/wxxrc" version="2.3.0.1">
|
|
|
|
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 wxWindows class instance. It three properties: "name", "class"
|
|
and "subclass". "class" must always be present, it tells XRC what wxWindows
|
|
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 neareset container object (wxDialog, wxFrame, wxPanel,
|
|
wxNotebook) upside from the object in XML nodes hiearchy (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 wxWindows' RTTI system.
|
|
|
|
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 additonal required property "ref". It's 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 neccessary 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>
|
|
|
|
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 attributes
|
|
--------------------
|
|
|
|
TODO
|
|
|
|
4. Supported classes
|
|
--------------------
|
|
|
|
TODO
|
|
|
|
=== EOF ===
|
|
|
|
Version: $Id$
|