added insert_at property for the object nodes (patch 1185138)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-04-17 01:35:22 +00:00
parent 17af82fb4c
commit b26a650c10
2 changed files with 41 additions and 25 deletions

View File

@ -30,14 +30,14 @@ Note: see also http://ldaptool.sourceforge.net/XRCGuide/XRCGuideSingle/
1. Terminology
==============
The usual XML terminology applies. In particular, we shall use the terms
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
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">
@ -62,17 +62,17 @@ can think of it as attribute value syntax definition).
=========================
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.
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
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 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
@ -86,7 +86,7 @@ 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 three properties: "name", "class"
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
@ -99,12 +99,17 @@ 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>
<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
@ -129,7 +134,7 @@ Example:
<value>bar</value> <!-- override! -->
</object_ref>
is identical to:
is identical to:
<object name="foo" class="wxTextCtrl">
<value>hello</value>
@ -215,7 +220,7 @@ 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:
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
@ -251,12 +256,12 @@ relativesize Float, font size relative to choosen system font's size;
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>
@ -288,7 +293,7 @@ attribute name attribute type default value, if any
wxBitmap
--------
This is a special case, because it does not create a wxWindow instance but
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.
@ -305,7 +310,7 @@ wxButton
--------
pos Position -1,-1
size Size -1,-1
style Style[wxButton]
style Style[wxButton]
label I18nString
default Boolean false
@ -455,7 +460,7 @@ appear within wxToolBar node. Their attributes are as follows:
tool
----
bitmap Bitmap
bitmap Bitmap
bitmap2 Bitmap wxNullBitmap
toggle Boolean 0
radio Boolean 0
@ -469,7 +474,7 @@ appear within wxToolBar node. Their attributes are as follows:
At most one of "toggle" and "radio" attributes may be 1.
Attribute "pos" may not appear if "label" or "radio" attributes
are used or if parent wxToolBar's style contains wxTB_TEXT.
Note:
Use of "pos" attribute is strongly discouraged, it is deprecated
usage of wxToolBar and it is not supported by MSW and GTK

View File

@ -625,7 +625,18 @@ static void MergeNodes(wxXmlNode& dest, wxXmlNode& with)
}
if ( !dnode )
dest.AddChild(new wxXmlNode(*node));
{
static const wxChar *AT_END = wxT("end");
wxString insert_pos = node->GetPropVal(wxT("insert_at"), AT_END);
if ( insert_pos == AT_END )
{
dest.AddChild(new wxXmlNode(*node));
}
else if ( insert_pos == wxT("begin") )
{
dest.InsertChild(new wxXmlNode(*node), dest.GetChildren());
}
}
}
if ( dest.GetType() == wxXML_TEXT_NODE && with.GetContent().Length() )