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: ... The term "attribute" is specific to XRC and refers to a property-less subnode of an or node. In the example bellow, , 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 . The 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 node contains namespace declaration, too: The node is only allowed to have and subnodes, all of which must have the "name" property. The 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: ... 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 classes (and therefore different 's child nodes). node is identical to , 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 node which is then processed as regular node. If the node itself has child nodes, then these nodes _override_ any nodes from the referred node. Example: hello 100,-1d bar is identical to: hello 100,-1d bar 100,-1d 3. Common attributes -------------------- TODO 4. Supported classes -------------------- TODO === EOF === Version: $Id$