aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx/examples/xrc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wx/examples/xrc')
-rwxr-xr-xlib/wx/examples/xrc/Makefile76
-rw-r--r--lib/wx/examples/xrc/rc/appicon.icobin0 -> 1078 bytes
-rw-r--r--lib/wx/examples/xrc/rc/appicon.xpm52
-rw-r--r--lib/wx/examples/xrc/rc/artprov.xpm23
-rw-r--r--lib/wx/examples/xrc/rc/artprov.xrc67
-rw-r--r--lib/wx/examples/xrc/rc/basicdlg.xpm24
-rw-r--r--lib/wx/examples/xrc/rc/basicdlg.xrc44
-rw-r--r--lib/wx/examples/xrc/rc/controls.xpm25
-rw-r--r--lib/wx/examples/xrc/rc/controls.xrc1243
-rw-r--r--lib/wx/examples/xrc/rc/custclas.xpm26
-rw-r--r--lib/wx/examples/xrc/rc/custclas.xrc42
-rw-r--r--lib/wx/examples/xrc/rc/derivdlg.xpm25
-rw-r--r--lib/wx/examples/xrc/rc/derivdlg.xrc78
-rw-r--r--lib/wx/examples/xrc/rc/fileopen.gifbin0 -> 949 bytes
-rw-r--r--lib/wx/examples/xrc/rc/filesave.gifbin0 -> 927 bytes
-rw-r--r--lib/wx/examples/xrc/rc/frame.xrc27
-rw-r--r--lib/wx/examples/xrc/rc/fuzzy.gifbin0 -> 116 bytes
-rw-r--r--lib/wx/examples/xrc/rc/menu.xrc84
-rw-r--r--lib/wx/examples/xrc/rc/platform.xpm28
-rw-r--r--lib/wx/examples/xrc/rc/platform.xrc145
-rw-r--r--lib/wx/examples/xrc/rc/quotes.gifbin0 -> 82 bytes
-rw-r--r--lib/wx/examples/xrc/rc/resource.xrc154
-rw-r--r--lib/wx/examples/xrc/rc/stop.xpm164
-rw-r--r--lib/wx/examples/xrc/rc/throbber.gifbin0 -> 2704 bytes
-rw-r--r--lib/wx/examples/xrc/rc/toolbar.xrc51
-rw-r--r--lib/wx/examples/xrc/rc/uncenter.xpm24
-rw-r--r--lib/wx/examples/xrc/rc/uncenter.xrc47
-rw-r--r--lib/wx/examples/xrc/rc/update.gifbin0 -> 124 bytes
-rw-r--r--lib/wx/examples/xrc/rc/variable.xpm21
-rw-r--r--lib/wx/examples/xrc/rc/variable.xrc59
-rw-r--r--lib/wx/examples/xrc/xrc.erl323
31 files changed, 2852 insertions, 0 deletions
diff --git a/lib/wx/examples/xrc/Makefile b/lib/wx/examples/xrc/Makefile
new file mode 100755
index 0000000000..1dfaae9689
--- /dev/null
+++ b/lib/wx/examples/xrc/Makefile
@@ -0,0 +1,76 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+
+include ../../vsn.mk
+include ../../config.mk
+
+TOPDIR = ../..
+EBIN = .
+ERLINC = $(TOPDIR)/include
+ERLC = erlc
+TESTMODS = xrc
+TESTTARGETS = $(TESTMODS:%=%.beam)
+TESTSRC = $(TESTMODS:%=%.erl)
+
+RESOURCEFILES = appicon.ico basicdlg.xpm custclas.xpm fileopen.gif menu.xrc \
+ resource.xrc uncenter.xpm variable.xrc appicon.xpm basicdlg.xrc \
+ custclas.xrc filesave.gif platform.xpm stop.xpm uncenter.xrc \
+ artprov.xpm controls.xpm derivdlg.xpm frame.xrc platform.xrc \
+ throbber.gif update.gif artprov.xrc controls.xrc derivdlg.xrc \
+ fuzzy.gif quotes.gif toolbar.xrc variable.xpm
+
+TESTRESOURCE = $(RESOURCEFILES:%=rc/%)
+
+# Targets
+opt debug: $(TESTTARGETS)
+clean:
+ rm -f $(TESTTARGETS)
+ rm -f *~ core erl_crash.dump
+
+docs:
+
+run: opt
+ erl -smp -detached -pa $(TOPDIR)/ebin -s xrc
+
+ifneq ($(INSIDE_ERLSRC),true)
+
+%.beam: %.erl
+ $(ERLC) -W -I$(ERLINC) -bbeam -o$(BIN) $<
+
+else
+EXRELSYSDIR = $(RELSYSDIR)/examples/xrc
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+docs:
+
+release_spec:
+ $(INSTALL_DIR) $(EXRELSYSDIR)
+ $(INSTALL_DATA) $(TESTSRC) $(EXRELSYSDIR)
+ $(INSTALL_DATA) $(TESTTARGETS) $(EXRELSYSDIR)
+ $(INSTALL_DIR) $(EXRELSYSDIR)/rc
+ $(INSTALL_DATA) $(TESTRESOURCE) $(EXRELSYSDIR)/rc
+
+release_tests_spec:
+
+release_docs_spec:
+
+endif
+
+
+
diff --git a/lib/wx/examples/xrc/rc/appicon.ico b/lib/wx/examples/xrc/rc/appicon.ico
new file mode 100644
index 0000000000..f3ef7918d2
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/appicon.ico
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/appicon.xpm b/lib/wx/examples/xrc/rc/appicon.xpm
new file mode 100644
index 0000000000..7c61a99318
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/appicon.xpm
@@ -0,0 +1,52 @@
+/* XPM */
+static char * appicon_xpm[] = {
+"32 32 17 1",
+" c None",
+". c #000000",
+"+ c #800000",
+"@ c #008000",
+"# c #808000",
+"$ c #000080",
+"% c #800080",
+"& c #008080",
+"* c #C0C0C0",
+"= c #808080",
+"- c #FF0000",
+"; c #00FF00",
+"> c #FFFF00",
+", c #0000FF",
+"' c #FF00FF",
+") c #00FFFF",
+"! c #FFFFFF",
+" ",
+"===============================.",
+"=*****************************=.",
+"=*$$$$$$$$$$$$$$$$$$$$$$$$$$$$=.",
+"=*$$$$$$$$$$$$$$$$$$$**.**.**.=.",
+"=*$$$$$$$$$$$$$$$$$$$**.**.**.=.",
+"=*$$$$$$$$$$$$$$$$$$$.........=.",
+"=*****************************=.",
+"=*=============================.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*=!!!!!!!,!!!!!!!!!!!,!!!!!!*=.",
+"=*=!!!!!!,,!!!!!!!!!!!,,!!!!!*=.",
+"=*=!!!!!,,!!!!!!!!!!!!!,,!!!!*=.",
+"=*=!!!!,,!!...........!!,,!!!*=.",
+"=*=!!!,,!!!.$$$$$$!!!.!!!,,!!*=.",
+"=*=!!,,!!!!.$$$$$$!!!.!!!!,,!*=.",
+"=*=!!,,!!!!.$$$$$$!!!.!!!!,,!*=.",
+"=*=!!!,,!!!.$$$$$$!!!.!!!,,!!*=.",
+"=*=!!!!,,!!...........!!,,!!!*=.",
+"=*=!!!!!,,!!!!!!!!!!!!!,,!!!!*=.",
+"=*=!!!!!!,,!!!!!!!!!!!,,!!!!!*=.",
+"=*=!!!!!!!,!!!!!!!!!!!,!!!!!!*=.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*=!!!!!!!!!!!!!!!!!!!!!!!!!!*=.",
+"=*****************************=.",
+"===============================.",
+"................................",
+" ",
+" "};
diff --git a/lib/wx/examples/xrc/rc/artprov.xpm b/lib/wx/examples/xrc/rc/artprov.xpm
new file mode 100644
index 0000000000..55e204881b
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/artprov.xpm
@@ -0,0 +1,23 @@
+/* XPM */
+static char * artprov_xpm[] = {
+"16 16 4 1",
+" c None",
+". c #000000",
+"+ c #0E2CEF",
+"@ c #FFFFFF",
+" . ",
+" . . ",
+" . . ",
+"++++++++++++++++",
+"+@@@@@@@@@@@@@@+",
+"+@@@@@@++@@@@@@+",
+"+@@@@@@@@@@@@@@+",
+"+@@@@@+++@@@@@@+",
+"+@@@@@@++@@@@@@+",
+"+@@@@@@++@@@@@@+",
+"+@@@@@@++@@@@@@+",
+"+@@@@@++++@@@@@+",
+"+@@@@@@@@@@@@@@+",
+"++++++++++++++++",
+" ",
+" "};
diff --git a/lib/wx/examples/xrc/rc/artprov.xrc b/lib/wx/examples/xrc/rc/artprov.xrc
new file mode 100644
index 0000000000..2256b73ebf
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/artprov.xrc
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="art_provider_dialog">
+ <title>wxArtProvider Example</title>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>You can specify wxArtProvider icons in your XRC resources. These icons will be retrieved from the active wxArtProvider (see wxArtProvider in docs and /samples/artprov for more information on wxArtProvider).\n\nThe most common usage for this is that you want a dialog, toolbar or menu item to have the correct platform-specific icon in your interface, such as a custom "Don't show this again" checkbox message dialog that has the appropriate icon, as shown below.\n\nYou can also use it to manage your own custom bitmaps though, too--instead of having to write multiple versions of an XRC file that only differ in their bitmaps, you can instead just write one XRC file with the bitmap to be retrieved from the wxArtProvider at runtime, having your custom wxArtProvider use some code to serve out the desired bitmap based on such things as a wxConfig n entry of a desired icon set, what OS the application is running on, what size or resolution the display is, and so on.\n\nNote that your application's custom bitmaps are the only thing that will differ between OS's in order to ensure proper Look And Feel, as everything else: windows decoration, colors, fonts, widgets, etc already match perfectly since wxWindows runs natively.\n\nTo use a wxArtProvider bitmap instead of usual bitmap, in your XRC, instead of &lt;bitmap&gt;somefile.png&lt;/bitmap&gt;, use &lt;bitmap stock__id="SOME__ART__ID" client="SOME__CLIENT__ID"&gt;somefile.png&lt;/bitmap&gt;. The stock__id parameter is required for a bitmap to be read from wxArtProvider, stock__client is optional. The image filename is also optional, and is just used as a fallback in case the wxArtProvider couldn't return a bitmap for that particular stock__id (and particular stock__client if your wxArtProvider is set up to also filter stock__client).</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>1</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticBitmap" name="my_bitmap">
+ <bitmap stock_id="wxART_INFORMATION" stock_client="wxART_MESSAGE_BOX">derivdlg.xpm</bitmap>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="message_statictext">
+ <label>Your web connection is optimized perfectly.</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="dont_show_checkbox">
+ <label>Don't show this message again</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/basicdlg.xpm b/lib/wx/examples/xrc/rc/basicdlg.xpm
new file mode 100644
index 0000000000..19054822ba
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/basicdlg.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static char * basicdlg_xpm[] = {
+"16 16 5 1",
+" c None",
+". c #000000",
+"+ c #808080",
+"@ c #0000FF",
+"# c #FFFFFF",
+" ",
+"................",
+".++++++++++++++.",
+".+@@@@@@@@@@@@+.",
+".++++++++++++++.",
+".+############+.",
+".+############+.",
+".+############+.",
+".+############+.",
+".+############+.",
+".+############+.",
+".+############+.",
+".+############+.",
+".++++++++++++++.",
+"................",
+" "};
diff --git a/lib/wx/examples/xrc/rc/basicdlg.xrc b/lib/wx/examples/xrc/rc/basicdlg.xrc
new file mode 100644
index 0000000000..ae632f6e10
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/basicdlg.xrc
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="non_derived_dialog">
+ <title>Non-Derived Dialog Example</title>
+ <centered>1</centered>
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>This is the basic non-derived XRC dialog. It is just an instance of wxDialog, not a instance of a class derived from wxDialog that was given some added functionality.\n\nYou can put whatever controls you want on these non-derived dialogs, but the dialog won't interact with the controls, nor do anything in response to any of their events. It only has the built-in functionality of a wxDialog, and that is it. A non-derived dialog can automatically close itself when you hit either the OK or Cancel button (returning a return code of what button you pressed), and not much else.\n\nThese are useful for an About dialog, or a message dialog popup, but that's about it. For the rest you will almost certainly use a derived dialog (see next example).</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxEXPAND|wxALL</flag>
+ <border>5</border>
+ <object class="wxStdDialogButtonSizer">
+ <object class="button">
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ <object class="button">
+ <object class="wxButton" name="wxID_CANCEL">
+ <label>Cancel</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/controls.xpm b/lib/wx/examples/xrc/rc/controls.xpm
new file mode 100644
index 0000000000..2bbdd34857
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/controls.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * controls_xpm[] = {
+"16 16 6 1",
+" c None",
+". c #000000",
+"+ c #808080",
+"@ c #0000FF",
+"# c #FFFFFF",
+"$ c #0E2CEF",
+" ",
+" ",
+" ",
+" ",
+" ",
+"................",
+".++++++++++++++.",
+".+@@@@@@@@####+.",
+".+$$$$$$$$####+.",
+".+$$$$$$$$####+.",
+".++++++++++++++.",
+"................",
+" ",
+" ",
+" ",
+" "};
diff --git a/lib/wx/examples/xrc/rc/controls.xrc b/lib/wx/examples/xrc/rc/controls.xrc
new file mode 100644
index 0000000000..77d5daac3e
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/controls.xrc
@@ -0,0 +1,1243 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!-- $Id: controls.xrc 43684 2006-11-27 15:02:49Z VZ $ -->
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="controls_dialog">
+ <title>Controls Example</title>
+ <style>wxCAPTION|wxSYSTEM_MENU|wxRESIZE_BORDER</style>
+ <exstyle>wxDIALOG_EX_CONTEXTHELP</exstyle>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxNotebook" name="controls_notebook">
+ <usenotebooksizer>1</usenotebooksizer>
+ <size>550,250</size>
+ <object class="notebookpage">
+ <label>wxTreebook</label>
+ <object class="wxTreebook" name="controls_treebook">
+ <size>350,280</size>
+ <style>wxSUNKEN_BORDER</style>
+ <object class="treebookpage">
+ <label>Page 1</label>
+ <depth>0</depth>
+ <object class="wxButton" name="controls_treebook_button1">
+ <size>200,180</size>
+ <label>Button N1</label>
+ </object>
+ </object>
+ <object class="treebookpage">
+ <label>Empty Page 2</label>
+ <depth>1</depth>
+ </object>
+ <object class="treebookpage">
+ <label>Page 3</label>
+ <depth>2</depth>
+ <object class="wxButton" name="controls_treebook_button3">
+ <size>200,180</size>
+ <label>Button N3</label>
+ </object>
+ </object>
+ <object class="treebookpage">
+ <label>Page 4</label>
+ <depth>1</depth>
+ <object class="wxButton" name="controls_treebook_button4">
+ <size>200,180</size>
+ <label>Button N4</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxToolBar</label>
+ <object class="wxPanel" name="button">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_normal_button">
+ <label>Transparent background:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <size>300,60</size>
+ <object class="wxToolBar">
+ <style>wxTB_FLAT|wxTB_NODIVIDER</style>
+ <margins>2,2</margins>
+ <object class="tool" name="non_derived_dialog_tool_or_menuitem">
+ <tooltip>Non-Derived Dialog Example</tooltip>
+ <bitmap>basicdlg.xpm</bitmap>
+ <longhelp>The basic instance of wxDialog loaded via XRC</longhelp>
+ </object>
+ <object class="tool" name="derived_tool_or_menuitem">
+ <tooltip>Derived Dialog Example</tooltip>
+ <bitmap>derivdlg.xpm</bitmap>
+ <longhelp>The most important example: load an XRC for a derived dialog</longhelp>
+ </object>
+ <object class="tool" name="controls_tool_or_menuitem">
+ <tooltip>Controls Example</tooltip>
+ <bitmap>controls.xpm</bitmap>
+ <longhelp>A notebook displaying all the wxWidgets controls</longhelp>
+ </object>
+ <object class="tool" name="uncentered_tool_or_menuitem">
+ <tooltip>Uncentered Example</tooltip>
+ <bitmap>uncenter.xpm</bitmap>
+ <longhelp>Disable autocentering of a dialog on its parent</longhelp>
+ </object>
+ <separator/>
+ <object class="tool" name="custom_class_tool_or_menuitem">
+ <tooltip>Custom Class Example</tooltip>
+ <bitmap>custclas.xpm</bitmap>
+ <longhelp>Embed your own custom classes into an XRC</longhelp>
+ </object>
+ <object class="tool" name="platform_property_tool_or_menuitem">
+ <tooltip>Platform Specific Example</tooltip>
+ <bitmap>platform.xpm</bitmap>
+ <longhelp>Customize parts of an interface for a desired platform</longhelp>
+ </object>
+ <object class="tool" name="art_provider_tool_or_menuitem">
+ <tooltip>wxArtProvider Example</tooltip>
+ <bitmap>artprov.xpm</bitmap>
+ <longhelp>Use wxArtProvider to insert desired icons at runtime</longhelp>
+ </object>
+ <object class="tool" name="variable_expansion_tool_or_menuitem">
+ <tooltip>Variable Expansion Example</tooltip>
+ <bitmap>variable.xpm</bitmap>
+ <longhelp>Replace variables in the XRC file at runtime</longhelp>
+ </object>
+ <object class="wxComboBox">
+ <content>
+ <item>Just</item>
+ <item>a combobox</item>
+ <item>in the toolbar</item>
+ </content>
+ </object>
+ <object class="wxOwnerDrawnComboBox">
+ <content>
+ <item>Owner Drawn</item>
+ <item>combobox</item>
+ <item>in the toolbar</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_statictext2_button">
+ <label>Fixed color background:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxToolBar">
+ <style>wxTB_FLAT|wxTB_NODIVIDER</style>
+ <bg>#bbbbff</bg>
+ <margins>2,2</margins>
+ <object class="tool" name="non_derived_dialog_tool_or_menuitem">
+ <tooltip>Non-Derived Dialog Example</tooltip>
+ <bitmap>basicdlg.xpm</bitmap>
+ <longhelp>The basic instance of wxDialog loaded via XRC</longhelp>
+ </object>
+ <object class="tool" name="derived_tool_or_menuitem">
+ <tooltip>Derived Dialog Example</tooltip>
+ <bitmap>derivdlg.xpm</bitmap>
+ <longhelp>The most important example: load an XRC for a derived dialog</longhelp>
+ </object>
+ <object class="tool" name="controls_tool_or_menuitem">
+ <tooltip>Controls Example</tooltip>
+ <bitmap>controls.xpm</bitmap>
+ <longhelp>A notebook displaying all the wxWidgets controls</longhelp>
+ </object>
+ <object class="tool" name="uncentered_tool_or_menuitem">
+ <tooltip>Uncentered Example</tooltip>
+ <bitmap>uncenter.xpm</bitmap>
+ <longhelp>Disable autocentering of a dialog on its parent</longhelp>
+ </object>
+ <separator/>
+ <object class="tool" name="custom_class_tool_or_menuitem">
+ <tooltip>Custom Class Example</tooltip>
+ <bitmap>custclas.xpm</bitmap>
+ <longhelp>Embed your own custom classes into an XRC</longhelp>
+ </object>
+ <object class="tool" name="platform_property_tool_or_menuitem">
+ <tooltip>Platform Specific Example</tooltip>
+ <bitmap>platform.xpm</bitmap>
+ <longhelp>Customize parts of an interface for a desired platform</longhelp>
+ </object>
+ <object class="tool" name="art_provider_tool_or_menuitem">
+ <tooltip>wxArtProvider Example</tooltip>
+ <bitmap>artprov.xpm</bitmap>
+ <longhelp>Use wxArtProvider to insert desired icons at runtime</longhelp>
+ </object>
+ <object class="tool" name="variable_expansion_tool_or_menuitem">
+ <tooltip>Variable Expansion Example</tooltip>
+ <bitmap>variable.xpm</bitmap>
+ <longhelp>Replace variables in the XRC file at runtime</longhelp>
+ </object>
+ <object class="wxComboBox">
+ <content>
+ <item>Just</item>
+ <item>a combobox</item>
+ <item>in the toolbar</item>
+ </content>
+ </object>
+ <object class="wxOwnerDrawnComboBox">
+ <content>
+ <item>Owner Drawn</item>
+ <item>combobox</item>
+ <item>in the toolbar</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+
+
+ <object class="notebookpage">
+ <label>wxBitmapButton</label>
+ <object class="wxPanel" name="bitmapbutton">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxBitmapButton" name="controls_bitmapbutton">
+ <bitmap>controls.xpm</bitmap>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxButton</label>
+ <object class="wxPanel" name="button">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_normal_button">
+ <label>Normal button:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="controls_normal_button">
+ <label>OK</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_statictext2_button">
+ <label>wxNO_BORDER style:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="controls_flat_button">
+ <style>wxNO_BORDER</style>
+ <label>OK</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxCalendarControl</label>
+ <object class="wxPanel" name="calendar">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCalendarCtrl" name="controls_calendarctrl">
+ <size>-1,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxCheckBox</label>
+ <object class="wxPanel" name="checkbox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="controls_unchecked_checkbox">
+ <label>Unchecked initially</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="controls_checked_checkbox">
+ <label>Checked initially</label>
+ <checked>1</checked>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxCheckListBox</label>
+ <object class="wxPanel" name="checklist">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckListBox" name="conrols_checklist">
+ <size>180,180</size>
+ <content>
+ <item checked="1">Download library</item>
+ <item checked="1">Compile samples</item>
+ <item checked="1">Skim docs</item>
+ <item checked="1">Finish project</item>
+ <item>Wash car</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+
+ <object class="notebookpage">
+ <label>wxChoice</label>
+ <object class="wxPanel" name="choice">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxChoice" name="controls_choice">
+ <size>180,-1</size>
+ <content>
+ <item>See</item>
+ <item>Hear</item>
+ <item>Feel</item>
+ <item>Smell</item>
+ <item>Taste</item>
+ <item>The Sixth Sense!</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxComboBox</label>
+ <object class="wxPanel" name="combobox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxComboBox" name="controls_combobox">
+ <size>200,-1</size>
+ <style>wxCB_DROPDOWN</style>
+ <selection>4</selection>
+ <content>
+ <item>vim</item>
+ <item>emacs</item>
+ <item>notepad.exe</item>
+ <item>bbedit</item>
+ <item>nedit</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_TOP|wxALIGN_CENTRE_HORIZONTAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxBitmapComboBox">
+ <size>200,-1</size>
+ <style>wxCB_READONLY</style>
+ <selection>2</selection>
+ <object class="ownerdrawnitem">
+ <text>This is a</text>
+ <bitmap>basicdlg.xpm</bitmap>
+ </object>
+ <object class="ownerdrawnitem">
+ <text>read-only</text>
+ <bitmap>derivdlg.xpm</bitmap>
+ </object>
+ <object class="ownerdrawnitem">
+ <text>wxBitmapComboBox</text>
+ <bitmap>uncenter.xpm</bitmap>
+ </object>
+ <object class="ownerdrawnitem">
+ <text>control</text>
+ <bitmap>custclas.xpm</bitmap>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxGauge</label>
+ <object class="wxPanel" name="gauge">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_guage1_statictext">
+ <label>Horizontal smooth:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxGauge" name="controls_horizontal_gauge">
+ <style>wxGA_SMOOTH</style>
+ <size>100,-1</size>
+ <max>100</max>
+ <value>50</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_gauge2_statictext">
+ <label>Vertical: custom width</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxGauge" name="controls_vertical_gauge">
+ <style>wxGA_VERTICAL</style>
+ <size>40,60</size>
+ <max>100</max>
+ <value>40</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxGenericDirCtrl</label>
+ <object class="wxPanel" name="genericdirctrl">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxGenericDirCtrl" name="controls_genericdirctrl">
+ <size>200,200</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxHtmlWindow</label>
+ <object class="wxPanel" name="htmlwindow">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxHtmlWindow" name="controls_htmlwindow">
+ <size>450,250</size>
+ <htmlcode>
+ &lt;h2&gt;XRC Resources HTML&lt;/h2&gt;
+ &lt;p&gt;&lt;font color="#0000FF"&gt;XRC=Blue skies ahead.&lt;/font&gt;
+ &lt;p&gt;Italics useful for quoted or emphasized text:&lt;i&gt;"Some see things as they are and say why.
+ I dream things that never were, and say why not"&lt;/i&gt;
+ &lt;p&gt;&lt;pre&gt;Fixed width for code snippets.&lt;/pre&gt;
+ &lt;p&gt;Horizontal rules to organize sections: &lt;hr&gt;
+ &lt;p&gt;A wxImage is worth a thousand words and can be also used.
+ </htmlcode>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxListBox</label>
+ <object class="wxPanel" name="listbox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER|wxALL</flag>
+ <border>5</border>
+ <object class="wxListBox" name="controls_listbox">
+ <size>250,160</size>
+ <style>wxLB_SINGLE</style>
+ <content>
+ <item>Milk</item>
+ <item>Pizza</item>
+ <item>Bread</item>
+ <item>Orange juice</item>
+ <item>Paper towels</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxSimpleHtmlListBox</label>
+ <object class="wxPanel" name="simplehtmllistbox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER|wxALL</flag>
+ <border>5</border>
+ <object class="wxSimpleHtmlListBox" name="controls_simplehtmllistbox">
+ <size>250,160</size>
+ <style>wxHLB_MULTIPLE|wxHLB_DEFAULT_STYLE</style>
+ <content>
+ <item>&lt;b&gt;Bold&lt;/b&gt; Milk</item>
+ <item>&lt;i&gt;Rainbow &lt;font color="red"&gt;P&lt;/font&gt;&lt;font color="blue"&gt;i&lt;/font&gt;&lt;font color="yellow"&gt;z&lt;/font&gt;&lt;font color="green"&gt;z&lt;/font&gt;&lt;font color="purple"&gt;a&lt;/font&gt;&lt;/i&gt;</item>
+ <item>&lt;tt&gt;Plain bread&lt;/tt&gt;</item>
+ <item>&lt;font color="orange" size="+1"&gt;Orange juice&lt;/font&gt;</item>
+ <item>Paper towels</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxListCtrl</label>
+ <object class="wxPanel" name="listctrl">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER|wxALL</flag>
+ <border>5</border>
+ <object class="wxListCtrl" name="controls_listctrl">
+ <size>220,160</size>
+ <style>wxLC_REPORT|wxSUNKEN_BORDER</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxPanel</label>
+ <object class="wxPanel" name="panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxPanel" name="controls_panel">
+ <size>200,160</size>
+ <bg>#0000FF</bg>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxSplitterWindow</label>
+ <object class="wxPanel" name="panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxSplitterWindow">
+ <minsize>50</minsize>
+ <sashpos>100</sashpos>
+ <size>400,200</size>
+ <object class="wxPanel" name="controls_panel">
+ <bg>#0000FF</bg>
+ </object>
+ <object class="wxPanel" name="controls_panel">
+ <bg>#00FF00</bg>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxRadioButton</label>
+ <object class="wxPanel" name="radiobutton">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxRadioButton" name="controls_unselected_radiobutton">
+ <label>Not selected</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxRadioButton" name="controls_selected_radiobutton">
+ <label>Selected</label>
+ <value>1</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxRadioBox</label>
+ <object class="wxPanel" name="radiobox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxRadioBox" name="controls_radiobox">
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Radio stations</label>
+ <dimension>1</dimension>
+ <selection>0</selection>
+ <content>
+ <item tooltip="Powerful radio station" helptext="This station is for amateurs of hard rock and heavy metal">Power 108</item>
+ <item tooltip="">WMMS 100.7</item>
+ <item tooltip="E=mc^2">Energy 98.3</item>
+ <item helptext="Favourite chukcha's radio">CHUM FM</item>
+ <item>92FM</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxScrollBar</label>
+ <object class="wxPanel" name="scrollbar">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxScrollBar" name="controls_scrollbar">
+ <size>-1,160</size>
+ <value>50</value>
+ <range>100</range>
+ <thumbsize>30</thumbsize>
+ <style>wxSB_VERTICAL</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxSlider</label>
+ <object class="wxPanel" name="slider">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_slider1_statictext">
+ <label>Without ticks:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxSlider" name="controls_noticks_slider">
+ <size>100,-1</size>
+ <style>wxSL_HORIZONTAL</style>
+ <max>100</max>
+ <value>0</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_slider2_statictext">
+ <label>With ticks:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxSlider" name="controls_ticks_slider">
+ <size>100,-1</size>
+ <style>wxSL_HORIZONTAL|wxSL_LABELS</style>
+ <max>100</max>
+ <value>0</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxSpinButton</label>
+ <object class="wxPanel" name="spinbutton">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxSpinButton" name="controls_spinbutton">
+ <style>wxSP_WRAP</style>
+ <max>100</max>
+ <value>0</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxSpinCtrl</label>
+ <object class="wxPanel" name="spinctrl">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxSpinCtrl" name="controls_spinctrl">
+ <size>100,-1</size>
+ <max>100</max>
+ <value>0</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxStaticBitmap</label>
+ <object class="wxPanel" name="staticbitmap">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticBitmap" name="controls_staticbitmap">
+ <bitmap>appicon.xpm</bitmap>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxStaticBox</label>
+ <object class="wxPanel" name="staticbox">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Internet options</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxStaticLine</label>
+ <object class="wxPanel" name="staticline">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticLine" name="controls_v_staticline">
+ <size>-1,100</size>
+ <style>wxLI_VERTICAL</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticLine" name="controls_h_staticline">
+ <size>150,-1</size>
+ <style>wxLI_HORIZONTAL</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxStaticText</label>
+ <object class="wxPanel" name="statictext">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_statictext">
+ <label>It was a dark and stormy night.</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxTextCtrl</label>
+ <object class="wxPanel" name="textctrl">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1,2</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_textctrl1_statictext">
+ <label>Single line:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="controls_single_textctrl">
+ <size>180,-1</size>
+ <value>A.A. Milne</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_textctrl2_statictext">
+ <label>Password:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="controls_password_textctrl">
+ <size>180,-1</size>
+ <style>wxTE_PASSWORD</style>
+ <value>TooManySecrets</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_textctrl3_statictext">
+ <label>Multiline:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="controls_multiline_textctrl">
+ <size>180,90</size>
+ <style>wxTE_MULTILINE</style>
+ <value>"So many pretty widgets" said Pooh, said he. "So many pretty widgets", said Pooh.</value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="notebookpage">
+ <label>wxTreeCtrl</label>
+ <object class="wxPanel" name="treectrl">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxTreeCtrl" name="controls_treectrl">
+ <size>280,180</size>
+ <style>wxTR_HAS_BUTTONS|wxSUNKEN_BORDER</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+
+ <object class="notebookpage">
+ <label>wx*PickerCtrl</label>
+ <object class="wxPanel" name="pickers">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <vgap>10</vgap>
+ <hgap>10</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1,2,3</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_pickers_statictext">
+ <label>wxColourPickerCtrl:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <option>1</option>
+ <border>5</border>
+ <object class="wxColourPickerCtrl" name="controls_colourpicker">
+ <value>#00ff00</value>
+ <style>wxCLRP_SHOW_LABEL</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_pickers_statictext2">
+ <label>wxFilePickerCtrl:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <option>1</option>
+ <border>5</border>
+ <object class="wxFilePickerCtrl" name="controls_filepicker">
+ <message>Here goes a message</message>
+ <style>wxFLP_OPEN</style>
+ <wildcard>*.png</wildcard>
+ <value/>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_pickers_statictext3">
+ <label>wxDirPickerCtrl:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <option>1</option>
+ <border>5</border>
+ <object class="wxDirPickerCtrl" name="controls_dirpicker">
+ <value/>
+ <style>wxDIRP_CHANGE_DIR</style>
+ <message>Here goes a message</message>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_pickers_statictext4">
+ <label>wxFontPickerCtrl:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <option>1</option>
+ <border>5</border>
+ <object class="wxFontPickerCtrl" name="controls_fontpicker">
+ <style>wxFNTP_USEFONT_FOR_LABEL</style>
+ <value>
+ <size>20</size>
+ <sysfont>wxSYS_DEFAULT_GUI_FONT</sysfont>
+ </value>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+
+ <object class="notebookpage">
+ <label>wxAnimationCtrl</label>
+ <object class="wxPanel" name="animctrl">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0,1</growablecols>
+ <growablerows>0</growablerows>
+
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="controls_animation_button_play">
+ <label>Play</label>
+ </object>
+ </object>
+
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxAnimationCtrl" name="controls_animation_ctrl">
+ <animation>throbber.gif</animation>
+ <inactive-bitmap>stop.xpm</inactive-bitmap>
+ </object>
+ </object>
+
+ </object>
+ </object>
+ </object>
+
+ <object class="notebookpage">
+ <label>wxCollapsiblePane</label>
+ <object class="wxPanel" name="collpane">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>1</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>5</border>
+ <option>1</option>
+ <object class="wxCollapsiblePane" name="controls_collpane">
+ <label>Details:</label>
+ <collapsed>0</collapsed>
+ <object class="panewindow">
+
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>1</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_dialog_statictext">
+ <label>
+Inside a wxCollapsiblePane you can put everything you want and
+lay them out using wxSizers, absolute positioning, everything you like!
+ </label>
+ </object>
+ </object>
+ </object>
+
+ </object>
+ </object>
+ </object>
+
+ </object>
+ </object>
+ </object>
+
+ <object class="notebookpage">
+ <label>The Rest</label>
+ <object class="wxPanel" name="Rest">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0,1,2,3,4,5,6</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_dialog_statictext">
+ <label>wxDialog (This dialog is one)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_frame_statictext">
+ <label>wxFrame (This application's main frame is one)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_menu_statictext">
+ <label>wxMenu (This application's main frame uses one)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_notebook_statictextT">
+ <label>wxNotebook (This dialog uses one)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_sizer">
+ <label>wxSizer (Used throughout application)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_toolbar_statictext">
+ <label>wxToolbar (This application's main frame uses one)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_unknown_statictext">
+ <label>unknown controls (See Custom Class example)</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ <default>1</default>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/custclas.xpm b/lib/wx/examples/xrc/rc/custclas.xpm
new file mode 100644
index 0000000000..49e82d4587
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/custclas.xpm
@@ -0,0 +1,26 @@
+/* XPM */
+static char * custclas_xpm[] = {
+"16 16 7 1",
+" c None",
+". c #EBF70E",
+"+ c #000000",
+"@ c #808080",
+"# c #0000FF",
+"$ c #FFFFFF",
+"% c #0E2CEF",
+" ",
+" . ",
+" . ",
+" . . . ",
+" ... ",
+"...+....++++++++",
+"+@...@@@@@@@@@@+",
+"+.#.#.####$$$$@+",
+"+@%.%%%%%%$$$$@+",
+"+@%.%%%%%%$$$$@+",
+"+@@@@@@@@@@@@@@+",
+"++++++++++++++++",
+" ",
+" ",
+" ",
+" "};
diff --git a/lib/wx/examples/xrc/rc/custclas.xrc b/lib/wx/examples/xrc/rc/custclas.xrc
new file mode 100644
index 0000000000..4f0109a992
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/custclas.xrc
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="custom_class_dialog">
+ <title>Custom Class Example</title>
+ <centered>1</centered>
+ <style>wxCAPTION|wxSYSTEM_MENU|wxRESIZE_BORDER</style>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>You can embed your own custom classes into an XRC file. This is referred to as attaching an unknown control.\n\nThere are 3 main cases when you would want to do this:\n\n(A) Most commonly: you have derived a class from one of the main wxWidgets controls, so that it can manage its own state and look after its own events, because it is better management to have a portable class with all the code for that control in there with the class, instead of being having many event handlers for that control scattered up in its parent dialog (which is allowed, but gets messy if a control has alot of methods). For example, if you require a wxListCtrl that popups a menu when right-clicked on an item, and you want the wxListCtrl to resize its columns in response to an OnSize(), and a few more methods, it makes better sourcecode logic to package all these methods into by a standalone derived wxListCtrl class, instead of having the parent dialog manage all these events and other functions. This is what the example below shows: it does a custom behaviour of resizing its first column to appropriately fill up the width of the control on a resize event, and it pops up a context-menu in response to a left click (and shades out popup menu item appropriately if there is no item currenty selected in the listctrl).\n\n(B)You have an utterly new widget that has no equivalent in the wxWindows class heirarchy, so you thus need to embed your class to get the needed functionality.\n\n(C) You are using one of the rarely used wxWindows controls that doesn't have an XRC handler in the XRC library. However, all of the major controls: wxButton, wxTextCtrl, etc have an XRC handler, so this is pretty rare, and you could always write your own XRC handler for that control if you wanted. You can choose the "Controls example" from the XRC demo menu to see all the controls that have an XRC handler.\n\nThe typical formula for attaching an unknown control is:\n\n(1) If you are deriving your own custom class to be embedded into the XRC, describe that class with its own .cpp and .h file. In this example it is custclass.cpp and custclass.h\n\n(2)Specify an "unknown" tag in the XRC file that you want to embed it into (see the unknown tag in custclass.xrc). This will be the placeholder of the new class.\n\n(3) Load the XRC dialog as usual, but before you show the dialog to the user, construct an instance of your custom control, and then use wxXmlResource::Get()-&gt;AttachUnknownControl() to put the custom class into its "unknown" placeholder in the XRC file.\n\nThe result is what you see below, a custom class control that fits in seemlessly with the whole dialog, the same as if it was read from XRC directly. Try out resizing this dialog, and watch the listctrl column resize, and right-click to call up its popup menu. By the way, if you look at the source of this XRC dialog, you will that this dialog node has a set of style flags that includes wxRESIZE__BORDER--that is why this dialog is resizable, whereas most of the rest of the dialogs in the XRC sample that don't include this tag, are not resizable.</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="unknown" name="custom_control_placeholder">
+ <size>100,100</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/derivdlg.xpm b/lib/wx/examples/xrc/rc/derivdlg.xpm
new file mode 100644
index 0000000000..ed1978b7f2
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/derivdlg.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * derivdlg_xpm[] = {
+"16 16 6 1",
+" c None",
+". c #EBF70E",
+"+ c #000000",
+"@ c #808080",
+"# c #0000FF",
+"$ c #FFFFFF",
+" . ",
+"+++.++++++++++++",
+"+.@.@.@@@@@@@@@+",
+"+@...#########@+",
+"...@....@@@@@@@+",
+"+@...$$$$$$$$$@+",
+"+.$.@.@@@@@@$$@+",
+"+@$.@@@@@@@@$$@+",
+"+@$.$$$$$$$$$$@+",
+"+@$$$$$$$$$$$$@+",
+"+@$$$$@@@@$$$$@+",
+"+@$$$$@@@@$$$$@+",
+"+@$$$$$$$$$$$$@+",
+"+@@@@@@@@@@@@@@+",
+"++++++++++++++++",
+" "};
diff --git a/lib/wx/examples/xrc/rc/derivdlg.xrc b/lib/wx/examples/xrc/rc/derivdlg.xrc
new file mode 100644
index 0000000000..cb67b9ae87
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/derivdlg.xrc
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="derived_dialog">
+ <title>Derived Dialog Example</title>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>This is a derived dialog using XRC. This type of derived dialog will likely be the heart of your project, and thus is the most important example in this demonstration.\n\nIt is recommended to open up derivdlg.cpp, derivdlg.h and derivdlg.xrc and follow along what is going on.\n\nThe steps to use a derived dialog are:\n\n(1) Derive your own dialog from wxDialog (derivdlg.cpp and derivdlg.h are an example).\n\n(2) In the source of the constructor of the derived dialog, load the XRC into the file, using the code as shown in the derivdlg.cpp\n\n(3)Add to the derived dilog's sourcecode some event handlers and other methods you want the dialog to do.\n\n(4)You can now just make an instance of the derived dialog and show it using ShowModal(), as is done in the MyFrame::OnDerivedDialogToolOrMenuCommand() method.\n\nThe remainder of this docuent will talk about how to use events with derived dialogs and XRC. There are 3 bits of an extra event functionality that this derived dialog can do, these will be described in turn:\n\n(A) Something to do when a user clicks on your custom button: This is straightforward. You name a control in the XRC file (in this example it is "my__button"). Then in the .cpp file, put an entry in the event table that will connect button clicks with that ID to a function that will be fired. The event table entry in the example is EVT__BUTTON( XRCID( "my__button" ), PreferencesDialog::OnMyButtonClicked ) This event table entry has 3 parts: The first part, EVT__BUTTON tells that you are describing a button click event. The final part, PreferencesDialog::OnMyButtonClicked() is what you want done in response to a button event. The middle part, XRCID( "my__button" ) is the restriction that only button events generated by a wxButton of that ID should trigger go on to do the function. This XRCID is the name of the wxButton in your XRC file. Now just describe, in the .h file and .cpp file, what you want your custom OnMyButtonClicked() function to do.\n\n(B) The second example is a very common requirement: that a checkbox or radiobutton disables some other control. The event table is set up the same as the "My Button" example above. However, it isn't an EVT__BUTTON event, it is an EVT__UPDATE__UI event: when the dialog does an updating of its UI (and thus fires this event) if the updating if of a control matching that XRCID, then it will do the specified function (which in this case looks at whether or not the checkbox is checked, and if it isn't checked, then disable the textctrl).\n\n(C) The last example shows how to handle the OK button. You will likely want to do something when the user presses OK, like save preferences or start some action (this example shows a simple case of just popping up a dialog and stopping a close). OK buttons are always named wxID__OK, so the XRC file should have it as wxID__OK also. The Event table has an EVT__BUTTON entry for wxID__OK (no XRCID though). Since this is a derived dialog with an event table, in response to an EVT__BUTTON event from a wxID__OK button, it will first look around in its own event table to see if there was any EVT__BUTTON entries, and since there is, it will do that one--if there wasn't it then checks out the base class's event table and sees if there was one there, and so on up the chain of inherited classes. Note that this is exactly what happens with the derived dialog's wxID__CANCEL button. You didn't put any EVT__BUTTON entries with an identifier of wxID__CANCEL, so after it scans your derived dialog's event table, it will then look at wxDialog's event table and see if there is one in that event table, and so on until it finds one. It will find a wxID__CANCEL handler, which will connect to the proper function (which causes the dialog to close).
+ </value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="my_button">
+ <label>My Button</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="my_checkbox">
+ <label>Enable listbox</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="my_textctrl">
+ <size>80,-1</size>
+ <value></value>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_CANCEL">
+ <label>Cancel</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/fileopen.gif b/lib/wx/examples/xrc/rc/fileopen.gif
new file mode 100644
index 0000000000..bc51b401b9
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/fileopen.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/filesave.gif b/lib/wx/examples/xrc/rc/filesave.gif
new file mode 100644
index 0000000000..6dd1fd98b5
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/filesave.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/frame.xrc b/lib/wx/examples/xrc/rc/frame.xrc
new file mode 100644
index 0000000000..ad7b03f7d6
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/frame.xrc
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxFrame" name="main_frame">
+ <title>XML Resources Demo</title>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,280</size>
+ <style>wxTE_MULTILINE</style>
+ <value>Welcome to the wxWidgets XmlResource (XRC) sample! Using wxWidgets XML resources makes your GUI C++ programming much faster and easier.\n\nView the examples under the "Basic" menu to learn how to get up and running with XRC quickly, and later have a look at the examples under the "Advanced" menu for advanced techniques.\n\nThe XML file that described this frame is the sample's frame.xrc file, with the menu in menu.xrc, and the toolbar in toolbar.xrc. The frame XRC file structure is exactly the same as the XRC files for the dialogs, except that the top level node is a wxFrame, not a wxDialog. Each of the other dialog in this example is a separate XRC file, each of which can be examined for how they work.</value>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/fuzzy.gif b/lib/wx/examples/xrc/rc/fuzzy.gif
new file mode 100644
index 0000000000..b6296c5135
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/fuzzy.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/menu.xrc b/lib/wx/examples/xrc/rc/menu.xrc
new file mode 100644
index 0000000000..91409e5c21
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/menu.xrc
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxMenuBar" name="main_menu">
+<style>wxMB_DOCKABLE</style>
+ <object class="wxMenu" name="file_tool_or_menuitem">
+ <label>_File</label>
+ <style>wxMENU_TEAROFF</style>
+ <object class="wxMenuItem" name="unload_resource_menuitem">
+ <label>_Unload resource\tCtrl-U</label>
+ <help>Unload basic dialog resource</help>
+ </object>
+ <object class="wxMenuItem" name="reload_resource_menuitem">
+ <label>_Reload resource\tCtrl-R</label>
+ <help>Reload basic dialog resource</help>
+ </object>
+
+ <!-- we use wxID_EXIT name here to get the default menu item stock icon -->
+ <object class="wxMenuItem" name="wxID_EXIT">
+ <label>E_xit\tAlt-X</label>
+ <help>Exit this application</help>
+ </object>
+ </object>
+ <object class="wxMenu" name="basic_demos_menu">
+ <label>_Basic</label>
+ <help>Basic techniques with XRC</help>
+ <object class="wxMenuItem" name="non_derived_dialog_tool_or_menuitem">
+ <label>_Non-Derived Dialog Example</label>
+ <bitmap>basicdlg.xpm</bitmap>
+ <help>The basic instance of wxDialog loaded via XRC</help>
+ </object>
+ <object class="wxMenuItem" name="derived_tool_or_menuitem">
+ <label>_Derived Dialog Example</label>
+ <bitmap>derivdlg.xpm</bitmap>
+ <help>The most important example: load an XRC for a derived dialog</help>
+ </object>
+ <object class="wxMenuItem" name="controls_tool_or_menuitem">
+ <label>_Controls Example</label>
+ <bitmap>controls.xpm</bitmap>
+ <help>A notebook displaying all the wxWidgets controls</help>
+ </object>
+ <object class="wxMenuItem" name="uncentered_tool_or_menuitem">
+ <label>_Uncentered Example</label>
+ <bitmap>uncenter.xpm</bitmap>
+ <help>Disable autocentering of a dialog on its parent</help>
+ </object>
+ </object>
+ <object class="wxMenu" name="advanced_demos_menu">
+ <label>_Advanced</label>
+ <help>Advanced techniques with XRC</help>
+ <object class="wxMenuItem" name="custom_class_tool_or_menuitem">
+ <label>_Custom Class Example</label>
+ <bitmap>custclas.xpm</bitmap>
+ <help>Embed your own custom classes into an XRC</help>
+ </object>
+ <object class="wxMenuItem" name="platform_property_tool_or_menuitem">
+ <label>_Platform Specific Example</label>
+ <bitmap>platform.xpm</bitmap>
+ <help>Customize parts of an interface for a desired platform</help>
+ </object>
+ <object class="wxMenuItem" name="art_provider_tool_or_menuitem">
+ <label>wx_ArtProvider Example</label>
+ <bitmap>artprov.xpm</bitmap>
+ <help>Use wxArtProvider to insert desired icons at runtime</help>
+ </object>
+ <object class="wxMenuItem" name="variable_expansion_tool_or_menuitem">
+ <label>_Variable Expansion Example</label>
+ <bitmap>variable.xpm</bitmap>
+ <help>Replace variables in the XRC file at runtime</help>
+ </object>
+ </object>
+ <object class="wxMenu" name="help_menu">
+ <label>_Help</label>
+
+ <!-- we use wxID_ABOUT name here to get the default menu item stock icon -->
+ <object class="wxMenuItem" name="wxID_ABOUT">
+ <label>_About...</label>
+ <help>About this application</help>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/platform.xpm b/lib/wx/examples/xrc/rc/platform.xpm
new file mode 100644
index 0000000000..3737055fe7
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/platform.xpm
@@ -0,0 +1,28 @@
+/* XPM */
+static char *platform_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 6 1",
+". c Black",
+"o c #FFFFFF",
+"X c #000080",
+"O c #FFFF00",
+" c None",
+"+ c #FF0000",
+/* pixels */
+" ",
+" ",
+" ",
+" ....... ",
+" .XXXXX. ",
+" .oXXXX. ",
+" .oXXX.......",
+".....oXXX.OOOOO.",
+".+++.XXXX.oOOOO.",
+".o++......oOOOO.",
+".o++++. .oOOOO.",
+".o++++. .OOOOO.",
+".+++++. .......",
+"....... ",
+" ",
+" "
+};
diff --git a/lib/wx/examples/xrc/rc/platform.xrc b/lib/wx/examples/xrc/rc/platform.xrc
new file mode 100644
index 0000000000..43313cb853
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/platform.xrc
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="platform_property_dialog">
+ <title>Platform Property Example</title>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>You can specify certain nodes of an XRC file to only be used for a certain platform.\n\nTo do this, there is a "platform" property that can be placed in any node [ie inside an opening tag]. The value of the tag can be any combination of the following: mac, win, unix, or os2. Use a | symbol between multiple platforms, for example &lt;label platform="win|mac"&gt;\n\nAt runtime, if there is a platform property in the tag, if it matches the current operating system, that node will be included, otherwise it won't.\n\nThe notebook example below shows how you can specify a high level node to only appear on a certain platform: the example here being a page of preferences that only make sense on a certain platform.\n\nThe second example shows how to replace a single attribute of a control: here the label of a download link. It is also very useful for specifying menu item accelerators keystrokes on the target platform.</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxNotebook" name="platform_notebook">
+ <usenotebooksizer>1</usenotebooksizer>
+ <size>200,160</size>
+ <object class="notebookpage">
+ <label>Shared options</label>
+ <object class="wxPanel" name="shared_tab">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="shared_checkbox">
+ <label>This preference is for all operating systems</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object platform="mac" class="notebookpage">
+ <label>Macintosh options</label>
+ <object class="wxPanel" name="mac_specific">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="mac_checkbox">
+ <label>Save output in iMovie compatible format</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object platform="win" class="notebookpage">
+ <label>Windows options</label>
+ <object class="wxPanel" name="win_specific">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="win_checkbox">
+ <label>Show application in icon tray instead of taskbar</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object platform="unix" class="notebookpage">
+ <label>Linux options</label>
+ <object class="wxPanel" name="unix_specific">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="unix_checkbox">
+ <label>Check my home directory for previous files</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object platform="os2" class="notebookpage">
+ <label>OS2 options</label>
+ <object class="wxPanel" name="os2_specific">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxCheckBox" name="os2_checkbox">
+ <label>Use WarpIn installer</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object platform="mac" class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="download_mac_statictext">
+ <label>Get latest update at www.mycompany.com/download/mac</label>
+ </object>
+ </object>
+ <object platform="win" class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="download_win_statictext">
+ <label>Get latest update at www.mycompany.com/download/win</label>
+ </object>
+ </object>
+ <object platform="unix" class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="download_unix_statictext">
+ <label>Get latest update at www.mycompany.com/download/unix</label>
+ </object>
+ </object>
+ <object platform="os2kurva" class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="download_os2_statictext">
+ <label>Get latest update at www.mycompany.com/download/os2</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/quotes.gif b/lib/wx/examples/xrc/rc/quotes.gif
new file mode 100644
index 0000000000..3ea61bde43
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/quotes.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/resource.xrc b/lib/wx/examples/xrc/rc/resource.xrc
new file mode 100644
index 0000000000..6673e0e8f2
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/resource.xrc
@@ -0,0 +1,154 @@
+<?xml version="1.0"?>
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+ <object class="wxMenuBar" name="mainmenu">
+ <style>wxMB_DOCKABLE</style>
+ <object class="wxMenu" name="menu_file">
+ <label>_File</label>
+ <style>wxMENU_TEAROFF</style>
+ <object class="wxMenuItem" name="menu_about">
+ <label>_About...</label>
+ <bitmap>filesave.gif</bitmap>
+ </object>
+ <object class="separator"/>
+ <object class="wxMenuItem" name="menu_dlg1">
+ <label>Dialog 1</label>
+ </object>
+ <object class="wxMenuItem" name="menu_dlg2">
+ <label>Dialog 2</label>
+ </object>
+ <object class="separator"/>
+ <object class="wxMenuItem" name="menu_quit">
+ <label>E_xit\tAlt-X</label>
+ </object>
+ </object>
+ </object>
+ <object class="wxToolBar" name="toolbar">
+ <style>wxTB_FLAT|wxTB_DOCKABLE</style>
+ <margins>2,2</margins>
+ <object class="tool" name="menu_open">
+ <bitmap>fileopen.gif</bitmap>
+ <tooltip>Open catalog</tooltip>
+ </object>
+ <object class="tool" name="menu_save">
+ <bitmap>filesave.gif</bitmap>
+ <tooltip>Save catalog</tooltip>
+ </object>
+ <object class="tool" name="menu_update">
+ <bitmap>update.gif</bitmap>
+ <tooltip>Update catalog - synchronize it with sources</tooltip>
+ </object>
+ <separator/>
+ <object class="tool" name="menu_quotes">
+ <bitmap>quotes.gif</bitmap>
+ <toggle>1</toggle>
+ <tooltip>Display quotes around the string?</tooltip>
+ </object>
+ <object class="separator"/>
+ <object class="tool" name="menu_fuzzy">
+ <bitmap>fuzzy.gif</bitmap>
+ <tooltip>Toggled if selected string is fuzzy translation</tooltip>
+ <toggle>1</toggle>
+ </object>
+ </object>
+ <object class="wxDialog" name="dlg1">
+ <object class="wxBoxSizer">
+ <object class="sizeritem">
+ <object class="wxBitmapButton">
+ <bitmap>fuzzy.gif</bitmap>
+ <focus>fileopen.gif</focus>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <object class="wxPanel">
+ <object class="wxStaticText">
+ <label>fdgdfgdfgdfg</label>
+ </object>
+ <style>wxSUNKEN_BORDER</style>
+ </object>
+ <flag>wxALIGN_CENTER</flag>
+ </object>
+ <object class="sizeritem">
+ <object class="wxButton">
+ <label>Buttonek</label>
+ </object>
+ <border>10d</border>
+ <flag>wxALL</flag>
+ </object>
+ <object class="sizeritem">
+ <object class="wxHtmlWindow">
+ <htmlcode>&lt;h1&gt;Hi,&lt;/h1&gt;man</htmlcode>
+ <size>100,45d</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <object class="wxNotebook">
+ <object class="notebookpage">
+ <object class="wxPanel">
+ <object class="wxBoxSizer">
+ <object class="sizeritem">
+ <object class="wxHtmlWindow">
+ <htmlcode>Hello, we are inside a &lt;u&gt;NOTEBOOK&lt;/u&gt;...</htmlcode>
+ <size>50,50d</size>
+ </object>
+ <option>1</option>
+ </object>
+ </object>
+ </object>
+ <label>Page</label>
+ </object>
+ <object class="notebookpage">
+ <object class="wxPanel">
+ <object class="wxBoxSizer">
+ <object class="sizeritem">
+ <object class="wxHtmlWindow">
+ <htmlcode>Hello, we are inside a &lt;u&gt;NOTEBOOK&lt;/u&gt;...</htmlcode>
+ <size>50,50d</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ <label>Page 2</label>
+ </object>
+ <usenotebooksizer>1</usenotebooksizer>
+ </object>
+ <flag>wxEXPAND</flag>
+ </object>
+ <orient>wxVERTICAL</orient>
+ </object>
+ </object>
+ <object class="wxDialog" name="dlg2">
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem" name="dfgdfg">
+ <object class="wxTextCtrl">
+ <size>200,200d</size>
+ <style>wxTE_MULTILINE|wxSUNKEN_BORDER</style>
+ <value>Hello, this is an ordinary multiline\n textctrl....</value>
+ </object>
+ <option>1</option>
+ <flag>wxEXPAND|wxALL</flag>
+ <border>10</border>
+ </object>
+ <object class="sizeritem">
+ <object class="wxBoxSizer">
+ <object class="sizeritem">
+ <object class="wxButton" name="wxID_OK">
+ <label>Ok</label>
+ <default>1</default>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <object class="wxButton" name="wxID_CANCEL">
+ <label>Cancel</label>
+ </object>
+ <border>10</border>
+ <flag>wxLEFT</flag>
+ </object>
+ </object>
+ <flag>wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT</flag>
+ <border>10</border>
+ </object>
+ </object>
+ <title>Second testing dialog</title>
+ </object>
+</resource>
diff --git a/lib/wx/examples/xrc/rc/stop.xpm b/lib/wx/examples/xrc/rc/stop.xpm
new file mode 100644
index 0000000000..7c26312696
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/stop.xpm
@@ -0,0 +1,164 @@
+/* XPM */
+static char * stop_xpm[] = {
+"32 32 129 2",
+" c None",
+". c #C9CBC8",
+"+ c #C3C4C1",
+"@ c #C4C6C3",
+"# c #C1C3C0",
+"$ c #C3C5C2",
+"% c #C3C3C0",
+"& c #C4C4C1",
+"* c #C2C4C1",
+"= c #C6C6C3",
+"- c #C0C2BF",
+"; c #C7C9C6",
+"> c #636662",
+", c #201F1B",
+"' c #242621",
+") c #171B16",
+"! c #1F221E",
+"~ c #1E1B17",
+"{ c #222621",
+"] c #221F1B",
+"^ c #1B1F1A",
+"/ c #292622",
+"( c #141713",
+"_ c #5D605C",
+": c #050904",
+"< c #60635F",
+"[ c #0F0904",
+"} c #B50701",
+"| c #E40600",
+"1 c #850702",
+"2 c #C8CAC7",
+"3 c #616460",
+"4 c #060A05",
+"5 c #0E0904",
+"6 c #A30701",
+"7 c #FF0600",
+"8 c #BB0701",
+"9 c #0C0904",
+"0 c #BC0701",
+"a c #8E0702",
+"b c #646763",
+"c c #676A66",
+"d c #AB0701",
+"e c #FC0600",
+"f c #9B0702",
+"g c #5F625E",
+"h c #0B0904",
+"i c #B30701",
+"j c #686B67",
+"k c #5B5E5A",
+"l c #090904",
+"m c #9D0702",
+"n c #FA0A04",
+"o c #6C6F6B",
+"p c #BABCB9",
+"q c #AD0701",
+"r c #F91B15",
+"s c #E35651",
+"t c #ED0600",
+"u c #FE0802",
+"v c #E95753",
+"w c #EE211B",
+"x c #CC6A66",
+"y c #DA3630",
+"z c #950702",
+"A c #323631",
+"B c #EC0600",
+"C c #FE0903",
+"D c #CAC8C5",
+"E c #F23732",
+"F c #EA524E",
+"G c #CFB4B1",
+"H c #FB150F",
+"I c #E11D18",
+"J c #EB4D48",
+"K c #E85A55",
+"L c #F62621",
+"M c #F42D27",
+"N c #E60903",
+"O c #F2241E",
+"P c #FA140E",
+"Q c #EE433E",
+"R c #EE1C16",
+"S c #F50600",
+"T c #FD0D07",
+"U c #E6625D",
+"V c #C48581",
+"W c #F20B05",
+"X c #CD6762",
+"Y c #F03C36",
+"Z c #FD0F09",
+"` c #EF302A",
+" . c #F62822",
+".. c #E56661",
+"+. c #FC100A",
+"@. c #FA1A14",
+"#. c #F91C16",
+"$. c #F62823",
+"%. c #F91D17",
+"&. c #E70600",
+"*. c #F03E39",
+"=. c #FD0E08",
+"-. c #DB534E",
+";. c #BEC0BD",
+">. c #10140F",
+",. c #FD0C06",
+"'. c #F90802",
+"). c #D26A66",
+"!. c #FB1510",
+"~. c #FF0701",
+"{. c #FE0600",
+"]. c #110904",
+"^. c #C50701",
+"/. c #8A0702",
+"(. c #1A0904",
+"_. c #BF0701",
+":. c #B60701",
+"<. c #A40701",
+"[. c #BA0701",
+"}. c #080C07",
+"|. c #1B0904",
+"1. c #C70701",
+"2. c #FD0600",
+"3. c #920702",
+"4. c #70736F",
+"5. c #380803",
+"6. c #340803",
+"7. c #5C5F5B",
+"8. c #BCBEBB",
+". . . . . . . . . . + @ # $ $ % @ & * = - * . . . . . . . . . . ",
+". . . . . . . . ; > , ' ) ! ! ~ { ] ^ / ( ^ > ; . . . . . . . . ",
+". . . . . . . . _ : : : : : : : : : : : : : : _ . . . . . . . . ",
+". . . . . . . < : [ } | | | | | | | | | | 1 [ : < . . . . . . . ",
+". . . . . 2 3 4 5 6 7 7 7 7 7 7 7 7 7 7 7 7 8 9 4 3 2 . . . . . ",
+". . . . 2 > : : 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 a : : > 2 . . . . ",
+". . . . b : : 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 a [ : b . . . . ",
+". . . c : 5 d e 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f 5 : c . . . ",
+". - g 4 h f 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 i h 4 j . . ",
+"$ k : l m 7 7 7 7 7 7 7 7 7 7 7 7 7 n 7 7 7 7 7 7 7 7 7 l : o . ",
+"p : : q 7 r . . s t . . . . . . u v . . w 7 7 . . . x y z : A . ",
+"p : : B C . . . D E . . . . . . F . . . . 7 7 . . . . G B : A . ",
+"p : : B H . . I . . J K . . K L . . . . . . 7 . . K . . B : A . ",
+"p : : B H . . 7 . . 7 7 . . 7 M . . 7 N . . 7 . . 7 O . B : A . ",
+"p : : B P . . . 7 7 7 7 . . 7 Q . . 7 7 . . 7 . . 7 R . B : A . ",
+"p : : B S . . . . T 7 7 . . 7 Q . . 7 7 . . 7 . . U V . B : A . ",
+"p : : B 7 W X . . . 7 7 . . 7 Q . . 7 7 . . 7 . . . . . B : A . ",
+"p : : B 7 7 7 Y . . Z 7 . . 7 Q . . 7 7 . . 7 . . . . ` B : A . ",
+"p : : B .. . 7 ... +.7 . . 7 @.. . 7 #.. . 7 . . 7 7 7 B : A . ",
+"p : : B $.. . %.. . 7 7 . . 7 &.* . . . . *.7 . . 7 7 7 B : A . ",
+"p : : B =.. . . . . 7 7 . . 7 7 -.. . . . 7 7 . . 7 7 7 B : A . ",
+";.>.: q 7 r . . . ,.7 7 . . 7 7 '.).. . !.7 7 . . 7 7 7 z : A . ",
+". o : l } 7 7 n 7 7 7 7 7 7 7 7 7 7 C ~.7 7 7 7 7 7 {.m l : o . ",
+". . j 4 ].^.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 /.: 4 j . . ",
+". . . c : (._.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 e d 5 : c . . . ",
+". . . . b : [ :.7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 f : : b . . . . ",
+". . . . 2 > : 9 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 <.9 : > 2 . . . . ",
+". . . . . 2 3 4 5 8 7 7 7 7 7 7 7 7 7 7 7 {.[.5 }.3 2 . . . . . ",
+". . . . . . . < : |.1.7 7 7 7 7 7 7 7 7 2.3.: : 4.. . . . . . . ",
+". . . . . . . . _ : ].5.5.5.5.5.5.5.5.5.6.: : _ . . . . . . . . ",
+". . . . . . . . ; 7.: : : : : : : : : : : : 7.; . . . . . . . . ",
+". . . . . . . . . ; 8.8.8.8.8.8.8.8.8.8.8.8.; . . . . . . . . . "};
diff --git a/lib/wx/examples/xrc/rc/throbber.gif b/lib/wx/examples/xrc/rc/throbber.gif
new file mode 100644
index 0000000000..82c2170acc
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/throbber.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/toolbar.xrc b/lib/wx/examples/xrc/rc/toolbar.xrc
new file mode 100644
index 0000000000..ee7833309b
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/toolbar.xrc
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxToolBar" name="main_toolbar">
+ <style>wxTB_FLAT|wxTB_DOCKABLE</style>
+ <margins>2,2</margins>
+ <object class="tool" name="non_derived_dialog_tool_or_menuitem">
+ <tooltip>Non-Derived Dialog Example</tooltip>
+ <bitmap>basicdlg.xpm</bitmap>
+ <longhelp>The basic instance of wxDialog loaded via XRC</longhelp>
+ </object>
+ <object class="tool" name="derived_tool_or_menuitem">
+ <tooltip>Derived Dialog Example</tooltip>
+ <bitmap>derivdlg.xpm</bitmap>
+ <longhelp>The most important example: load an XRC for a derived dialog</longhelp>
+ </object>
+ <object class="tool" name="controls_tool_or_menuitem">
+ <tooltip>Controls Example</tooltip>
+ <bitmap>controls.xpm</bitmap>
+ <longhelp>A notebook displaying all the wxWidgets controls</longhelp>
+ </object>
+ <object class="tool" name="uncentered_tool_or_menuitem">
+ <tooltip>Uncentered Example</tooltip>
+ <bitmap>uncenter.xpm</bitmap>
+ <longhelp>Disable autocentering of a dialog on its parent</longhelp>
+ </object>
+ <separator/>
+ <object class="tool" name="custom_class_tool_or_menuitem">
+ <tooltip>Custom Class Example</tooltip>
+ <bitmap>custclas.xpm</bitmap>
+ <longhelp>Embed your own custom classes into an XRC</longhelp>
+ </object>
+ <object class="tool" name="platform_property_tool_or_menuitem">
+ <tooltip>Platform Specific Example</tooltip>
+ <bitmap>platform.xpm</bitmap>
+ <longhelp>Customize parts of an interface for a desired platform</longhelp>
+ </object>
+ <object class="tool" name="art_provider_tool_or_menuitem">
+ <tooltip>wxArtProvider Example</tooltip>
+ <bitmap>artprov.xpm</bitmap>
+ <longhelp>Use wxArtProvider to insert desired icons at runtime</longhelp>
+ </object>
+ <object class="tool" name="variable_expansion_tool_or_menuitem">
+ <tooltip>Variable Expansion Example</tooltip>
+ <bitmap>variable.xpm</bitmap>
+ <longhelp>Replace variables in the XRC file at runtime</longhelp>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/uncenter.xpm b/lib/wx/examples/xrc/rc/uncenter.xpm
new file mode 100644
index 0000000000..103b1cb301
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/uncenter.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static char * uncenter_xpm[] = {
+"16 16 5 1",
+" c None",
+". c #000000",
+"+ c #808080",
+"@ c #0000FF",
+"# c #FFFFFF",
+" ",
+"................",
+".++++++++++++++.",
+".+@@@@@@@@@@@@+.",
+".++++++++++++++.",
+".+############+.",
+".+###....#####+.",
+".+###..#######+.",
+".+###.#.######+.",
+".+###.##.#####+.",
+".+#######.####+.",
+".+########.###+.",
+".+############+.",
+".++++++++++++++.",
+"................",
+" "};
diff --git a/lib/wx/examples/xrc/rc/uncenter.xrc b/lib/wx/examples/xrc/rc/uncenter.xrc
new file mode 100644
index 0000000000..4f6f6ce532
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/uncenter.xrc
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="uncentered_dialog">
+ <title>Uncentered Example</title>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>All of the dialogs in the XRC demo, except for this dialog, center themselves automatically on their parent window, since that is what is most commonly needed. The centering for the other dialogs was done automatically simply by including a &lt;centered&gt;1&lt;/centered&gt; as a tag directly under the dialog node.\n\nHowever, there may be some times when you don't want autocentering. If you don't want the dialog centered, just don't use the &lt;centered&gt; tag and the dialog will be placed in the default window position (which is at screen coordinate 0,0 in the upper left corner of the screen). This dialog is an example of when centering is turned off.</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_CANCEL">
+ <label>Cancel</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/rc/update.gif b/lib/wx/examples/xrc/rc/update.gif
new file mode 100644
index 0000000000..9b66868827
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/update.gif
Binary files differ
diff --git a/lib/wx/examples/xrc/rc/variable.xpm b/lib/wx/examples/xrc/rc/variable.xpm
new file mode 100644
index 0000000000..3e95bd869d
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/variable.xpm
@@ -0,0 +1,21 @@
+/* XPM */
+static char * variable_xpm[] = {
+"16 16 2 1",
+" c None",
+". c #0E2CEF",
+" ",
+" . ",
+" ... .. ",
+" .... .. ",
+" ...... .. ",
+" . ... .. ",
+" . ..... ",
+" ... ",
+" .... ",
+" ..... . ",
+" .. ... . ",
+" .. ..... ",
+" .. ... ",
+" . ... ",
+" ",
+" "};
diff --git a/lib/wx/examples/xrc/rc/variable.xrc b/lib/wx/examples/xrc/rc/variable.xrc
new file mode 100644
index 0000000000..91d7d5cc24
--- /dev/null
+++ b/lib/wx/examples/xrc/rc/variable.xrc
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1">
+
+<object class="wxDialog" name="variable_expansion_dialog">
+ <title>Variable Expansion Example</title>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxTextCtrl" name="message_textctrl">
+ <size>500,150</size>
+ <style>wxTE_MULTILINE</style>
+ <value>VARIABLE EXPANSION ISN'T IMPLEMENTED CURRENTLY. You can use variable expansion in your XRC files. The steps to do this are:\n\n(1)Enclose a variable inside a dollarsign and round brackets, like this: dollarsign(version).\n\n(2) Set the XmlResource flags to allow expansion of variables.\n\n(3)Before you use that XML resource, inform the XmlResourceHandler what you want that variable's value to be, via wxResourceHandler::Get()-&gt;SetVariable( "version", "2.4.0")\n\n Now, at runtime, the variable will be automatically replace by its value before the control is constructed.\n\nThe number in the version at the bottom of this dialog is an example of this expansion in action.\n\nThis is very handy for things like replacing the text in a wxStaticText, since it is a much simpler way to make a wxStaticText be a proper size: by creating it the proper size. This is in contrast to the alternative way of having using some static non-variable value in your XRC, having XRC construct it, then your application having code to change the text of it, then your app getting its best size, then setting the statictext's size, then laying out the dialog's sizer again, and other work.</value>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_BOTTOM</flag>
+ <object class="wxFlexGridSizer">
+ <cols>3</cols>
+ <rows>0</rows>
+ <vgap>0</vgap>
+ <hgap>0</hgap>
+ <growablecols>2</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="build_information_statictext">
+ <label>This build is:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTRE|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="version_statictext">
+ <label>$(version)</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/lib/wx/examples/xrc/xrc.erl b/lib/wx/examples/xrc/xrc.erl
new file mode 100644
index 0000000000..6478171b4f
--- /dev/null
+++ b/lib/wx/examples/xrc/xrc.erl
@@ -0,0 +1,323 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%%
+%%% Description : Testing and demo xrc's
+%%% This mimics the xrc demo from wxwidgets.
+%%% Created : 4 Dec 2007 by Dan Gudmundsson <[email protected]>
+%%%-------------------------------------------------------------------
+
+-module(xrc).
+-compile(export_all).
+
+-include("../../include/wx.hrl").
+
+
+%% I've put all "classes" in the same file, but you can see the follow
+%% the code in xrcdemo from the samples directory in wxWidgets src package
+
+start() ->
+ %% Starts wxwidgets
+ WX = wx:new(),
+ %% In erlang wx, all image handlers are initilized already.
+ %% wxImage::AddHandler(new wxXPMHandler);
+
+ %% Initialize all the XRC handlers. Always required (unless you feel like
+ %% going through and initializing a handler of each control type you will
+ %% be using (ie initialize the spinctrl handler, initialize the textctrl
+ %% handler). However, if you are only using a few control types, it will
+ %% save some space to only initialize the ones you will be using. See
+ %% wxXRC docs for details.
+
+ Xrc = wxXmlResource:get(),
+ wxXmlResource:initAllHandlers(Xrc),
+ true = wxXmlResource:load(Xrc, rc_dir("menu.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("toolbar.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("basicdlg.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("derivdlg.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("controls.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("frame.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("uncenter.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("custclas.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("artprov.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("platform.xrc")),
+ true = wxXmlResource:load(Xrc, rc_dir("variable.xrc")),
+ Frame = wxFrame:new(),
+ myframe(WX,Frame),
+ wxFrame:show(Frame),
+ loop(Frame),
+ wx:destroy().
+
+rc_dir(File) ->
+ SelfDir = filename:dirname(code:which(?MODULE)),
+ filename:join([SelfDir,rc,File]).
+
+loop(Frame) ->
+ receive
+ #wx{id=Id, event=#wxCommand{}} ->
+ handle_cmd(get(Id), Id, Frame),
+ loop(Frame);
+ #wx{event=#wxClose{}} ->
+ catch wxWindows:'Destroy'(Frame),
+ ok;
+ Ev = #wx{} ->
+ io:format("Got ~p ~n", [Ev]),
+ loop(Frame)
+ end.
+
+myframe(Parent, Frame) ->
+ Xrc = wxXmlResource:get(),
+ wxXmlResource:loadFrame(Xrc, Frame, Parent, "main_frame"),
+ %% wxTopLevelWindow:setIcon(Frame, wxXmlResource:loadIcon(Xrc,"appicon")),
+ %% Load and setup menubar
+ wxFrame:setMenuBar(Frame, wxXmlResource:loadMenuBar(Xrc, "main_menu")),
+ %% hmm wxSystemOptions::SetOption ( wxT("msw.remap"), 0 );
+ wxFrame:setToolBar(Frame, wxXmlResource:loadToolBar(Xrc, Frame, "main_toolbar")),
+ wxFrame:createStatusBar(Frame, [{number,1}]),
+ ok = wxFrame:connect(Frame, close_window),
+ connect(Frame).
+
+connect(Frame) ->
+ Menues = [unload_resource_menuitem, reload_resource_menuitem,
+ non_derived_dialog_tool_or_menuitem, derived_tool_or_menuitem,
+ controls_tool_or_menuitem, uncentered_tool_or_menuitem,
+ custom_class_tool_or_menuitem, platform_property_tool_or_menuitem,
+ art_provider_tool_or_menuitem, variable_expansion_tool_or_menuitem
+ ],
+ wxFrame:connect(Frame,command_menu_selected, [{id, ?wxID_EXIT}]),
+ wxFrame:connect(Frame,command_menu_selected, [{id, ?wxID_ABOUT}]),
+ [connect_xrcid(Str,Frame) || Str <- Menues],
+ ok.
+
+connect_xrcid(Name,Frame) ->
+ ID = wxXmlResource:getXRCID(atom_to_list(Name)),
+ put(ID, Name),
+ wxFrame:connect(Frame,command_menu_selected,[{id,ID}]).
+
+%% Handle commands
+
+handle_cmd(unload_resource_menuitem, _, _Frame) ->
+ Xrc = wxXmlResource:get(),
+ case wxXmlResource:unload(Xrc, "rc/basicdlg") of
+ true ->
+ io:format("Basic dialog unloaded~n",[]);
+ false ->
+ io:format("Failed to unload basic dialog~n",[])
+ end;
+
+handle_cmd(reload_resource_menuitem, _, _Frame) ->
+ Xrc = wxXmlResource:get(),
+ case wxXmlResource:reload(Xrc, "rc/basicdlg") of
+ true ->
+ io:format("Basic dialog reloaded~n",[]);
+ false ->
+ io:format("Failed to reload basic dialog~n",[])
+ end;
+
+handle_cmd(_, ?wxID_EXIT, Frame) ->
+ wxFrame:close(Frame);
+
+handle_cmd(non_derived_dialog_tool_or_menuitem, _, Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ %% "non_derived_dialog" is the name of the wxDialog XRC node that should
+ %% be loaded.
+ case wxXmlResource:loadDialog(Xrc, Dlg, Frame, "non_derived_dialog") of
+ true ->
+ wxDialog:showModal(Dlg);
+ false ->
+ io:format("Failed to load non_derived_dialog~n",[])
+ end,
+ %% In Erlang you should delete the dialog afterwards
+ wxDialog:destroy(Dlg);
+
+handle_cmd(derived_tool_or_menuitem, _, Frame) ->
+ Pref = prefDialog(Frame),
+ wxDialog:showModal(Pref);
+
+handle_cmd(animation_ctrl_play, _, _Frame) ->
+ %% Not yet implemented
+ ok;
+
+handle_cmd(controls_tool_or_menuitem,_,Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "controls_dialog"),
+
+ LCtrl = wxXmlResource:xrcctrl(Dlg, "controls_listctrl", wxListCtrl),
+ wxListCtrl:insertColumn(LCtrl, 0, "Name", [{width, 200}]),
+ wxListCtrl:insertItem(LCtrl, 0, "Todd Hope"),
+ wxListCtrl:insertItem(LCtrl, 1, "Kim Wynd"),
+ wxListCtrl:insertItem(LCtrl, 2, "Leon Li"),
+
+ TCtrl = wxXmlResource:xrcctrl(Dlg, "controls_treectrl", wxTreeCtrl),
+ wxTreeCtrl:addRoot(TCtrl, "Godfather"),
+ TRoot = wxTreeCtrl:getRootItem(TCtrl),
+ wxTreeCtrl:appendItem(TCtrl,TRoot, "Evil henchmen 1"),
+ wxTreeCtrl:appendItem(TCtrl,TRoot, "Evil henchmen 2"),
+ wxTreeCtrl:appendItem(TCtrl,TRoot, "Evil accountant"),
+
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+
+handle_cmd(uncentered_tool_or_menuitem,_,Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "uncentered_dialog"),
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+
+handle_cmd(custom_class_tool_or_menuitem,_,Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "custom_class_dialog"),
+
+ ResizeableLC = myResizeableListCtrl(Dlg, ?wxID_ANY, {-1,-1}, {-1,-1},?wxLC_REPORT),
+ %% "custom_control_placeholder" is the name of the "unknown" tag in the
+ %% custctrl.xrc XRC file.
+ wxXmlResource:attachUnknownControl(Xrc, "custom_control_placeholder", ResizeableLC),
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+
+handle_cmd(platform_property_tool_or_menuitem, _, Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "platform_property_dialog"),
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+
+handle_cmd(art_provider_tool_or_menuitem, _, Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "art_provider_dialog"),
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+
+handle_cmd(variable_expansion_tool_or_menuitem, _, Frame) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "variable_expansion_dialog"),
+ wxDialog:showModal(Dlg),
+ wxDialog:destroy(Dlg);
+handle_cmd(_, ?wxID_ABOUT, Frame) ->
+ Msg = "This is the about dialog of XML resources demo.\n",
+ MD = wxMessageDialog:new(Frame,Msg,
+ [{style, ?wxOK bor ?wxICON_INFORMATION},
+ {caption, "About"}]),
+ wxDialog:showModal(MD),
+ wxDialog:destroy(MD);
+handle_cmd(Dialog, Id, _) ->
+ io:format("Not implemented yet ~p (~p) ~n",[Dialog, Id]).
+
+
+%%%%%%%%%%%%%%%%
+%% Trying to mimic the derived dialog example
+%%%%%%%%%%%%%%%%
+
+prefDialog(Parent) ->
+ Xrc = wxXmlResource:get(),
+ Dlg = wxDialog:new(),
+ true = wxXmlResource:loadDialog(Xrc, Dlg, Parent, "derived_dialog"),
+
+ %% Shows that callbacks can be used it doesn't need to though.
+ OnMyButtonClicked = fun(_EvRec, _wxEvent) ->
+ MD = wxMessageDialog:new(Dlg, "You clicked on My Button"),
+ wxMessageDialog:showModal(MD),
+ wxMessageDialog:destroy(MD)
+ end,
+ wxDialog:connect(Dlg, command_button_clicked,
+ [{id,wxXmlResource:getXRCID("my_button")},
+ {callback,OnMyButtonClicked}]),
+
+ OnMyCheckBox = fun(_EvRec, _Event) ->
+ CheckB = wxXmlResource:xrcctrl(Dlg, "my_checkbox", wxCheckBox),
+ Text = wxXmlResource:xrcctrl(Dlg, "my_textctrl", wxTextCtrl),
+ Bool = wxCheckBox:isChecked(CheckB),
+ wxTextCtrl:enable(Text, [{enable,Bool}])
+ end,
+ wxDialog:connect(Dlg,update_ui,[{id,wxXmlResource:getXRCID("my_checkbox")},
+ {callback,OnMyCheckBox}]),
+
+ %% Keep updateUI event interval at 250ms
+ wxUpdateUIEvent:setUpdateInterval(250),
+
+ OnOk = fun(_,_) ->
+ Str =
+ "Press Ok to close derived dialog, or Cancel to abort"
+ "Overriding base class ok button handler",
+ MD = wxMessageDialog:new(Dlg, Str, [{style, ?wxOK bor ?wxCANCEL bor ?wxCENTER}]),
+ case wxMessageDialog:showModal(MD) of
+ ?wxID_OK ->
+ wxMessageDialog:endModal(Dlg, ?wxID_OK);
+ _R ->
+ ignore
+ end,
+ wxMessageDialog:destroy(MD)
+ end,
+ wxDialog:connect(Dlg,command_button_clicked,[{id,?wxID_OK},{callback,OnOk}]),
+ Dlg.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+-define(RECORD_COLUMN, 0).
+-define(ACTION_COLUMN, 1).
+-define(PRIORITY_COLUMN,2).
+
+-define(PU_ADD_RECORD, ?wxID_HIGHEST+1).
+-define(PU_EDIT_RECORD, ?wxID_HIGHEST+2).
+-define(PU_DELETE_RECORD, ?wxID_HIGHEST+3).
+
+myResizeableListCtrl(Parent,Id,Pos,Size,Style) ->
+ LC = wxListCtrl:new(Parent, [{winid,Id}, {pos,Pos}, {size,Size}, {style,Style}]),
+ wxListCtrl:insertColumn(LC,?RECORD_COLUMN, "Record", [{width, 140}]),
+ wxListCtrl:insertColumn(LC,?ACTION_COLUMN, "Action", [{width, 70}]),
+ wxListCtrl:insertColumn(LC,?PRIORITY_COLUMN, "Priority", [{width, 70}]),
+ wxListCtrl:connect(LC, right_down, [{id,Id}, {callback, fun lc_onRightClick/2}]),
+ wxListCtrl:connect(LC, size, [{id,Id}, {callback, fun lc_onSize/2}]),
+ LC.
+
+lc_onRightClick(#wx{obj=ListCtrl, event=#wxMouse{x=X,y=Y}},_Ev) ->
+ Menu = wxMenu:new(),
+ wxMenu:append(Menu, ?PU_ADD_RECORD, "Add a new record"),
+ wxMenu:append(Menu, ?PU_EDIT_RECORD,"Edit selected record"),
+ wxMenu:append(Menu, ?PU_DELETE_RECORD, "Delete selected record"),
+ case wxListCtrl:getSelectedItemCount(ListCtrl) of
+ 0 ->
+ wxMenu:enable(Menu, ?PU_EDIT_RECORD, false),
+ wxMenu:enable(Menu, ?PU_DELETE_RECORD, false);
+ _ ->
+ ignore
+ end,
+ MenuCB = fun(_,_) -> io:format("Menu selected~n",[]) end,
+ wxWindow:connect(ListCtrl, command_menu_selected, [{callback, MenuCB}]),
+ wxWindow:popupMenu(ListCtrl, Menu, [{pos, {X,Y}}]),
+ wxMenu:destroy(Menu).
+
+lc_onSize(#wx{obj=ListCtrl},EvObj) ->
+ {LeftMostColW0,_} = wxListCtrl:getSize(ListCtrl),
+ LeftMostColW1 = LeftMostColW0 - wxListCtrl:getColumnWidth(ListCtrl, ?ACTION_COLUMN),
+ LeftMostColW2 = LeftMostColW1 - wxListCtrl:getColumnWidth(ListCtrl, ?PRIORITY_COLUMN),
+ %% Hmm missing wxSystemSettings::GetMetric( wxSYS_VSCROLL_X );
+ LeftMostColW = LeftMostColW2 - 5,
+ wxListCtrl:setColumnWidth(ListCtrl, ?RECORD_COLUMN, LeftMostColW),
+ %% REQURED event.Skip() call to allow this event to propagate
+ %% upwards so others can do what they need to do in response to
+ %% this size event.
+ wxEvent:skip(EvObj),
+ io:format("Successfully set column width~n").
+
+%%%%%