]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxSplitterWindow to XRC
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 26 Jan 2003 23:19:04 +0000 (23:19 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 26 Jan 2003 23:19:04 +0000 (23:19 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

24 files changed:
contrib/include/wx/xrc/xh_all.h
contrib/include/wx/xrc/xh_split.h [new file with mode: 0644]
contrib/samples/xrc/rc/controls.xrc
contrib/src/xrc/Makefile.in
contrib/src/xrc/XrcVC.dsp
contrib/src/xrc/makefile.b32
contrib/src/xrc/makefile.g95
contrib/src/xrc/makefile.vc
contrib/src/xrc/makefile.wat
contrib/src/xrc/xh_split.cpp [new file with mode: 0644]
contrib/src/xrc/xmlrsall.cpp
docs/changes.txt
docs/tech/tn0014.txt
include/wx/xrc/xh_all.h
include/wx/xrc/xh_split.h [new file with mode: 0644]
samples/xrc/rc/controls.xrc
src/xrc/Makefile.in
src/xrc/XrcVC.dsp
src/xrc/makefile.b32
src/xrc/makefile.g95
src/xrc/makefile.vc
src/xrc/makefile.wat
src/xrc/xh_split.cpp [new file with mode: 0644]
src/xrc/xmlrsall.cpp

index 2ac1db392c1eebc8e18a82a923d3cee5ac9d1b57..8f62594126525c52403c802d42dcb74f92a9be0f 100644 (file)
@@ -47,5 +47,6 @@
 #include "wx/xrc/xh_gdctl.h"
 #include "wx/xrc/xh_frame.h"
 #include "wx/xrc/xh_scwin.h"
+#include "wx/xrc/xh_split.h"
 
 #endif // _WX_XMLRES_H_
diff --git a/contrib/include/wx/xrc/xh_split.h b/contrib/include/wx/xrc/xh_split.h
new file mode 100644 (file)
index 0000000..010bede
--- /dev/null
@@ -0,0 +1,28 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_split.h
+// Purpose:     XRC resource for wxSplitterWindow
+// Author:      panga@freemail.hu, Vaclav Slavik
+// Created:     2003/01/26
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 panga@freemail.hu, Vaclav Slavik
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_SPLIT_H_
+#define _WX_XH_SPLIT_H_
+
+#if defined(__GNUG__) && !defined(__APPLE__)
+#pragma interface "xh_split.h"
+#endif
+
+#include "wx/xrc/xmlres.h"
+
+class WXXMLDLLEXPORT wxSplitterWindowXmlHandler : public wxXmlResourceHandler
+{
+public:
+    wxSplitterWindowXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // _WX_XH_SPLIT_H_
index 119716ad1bdd38386f1f87fefee43595880dcd52..6972bd4cb7fa1f84152e80390be08e809a5ef6be 100644 (file)
                         </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">
index ca0f650ca84feff66b7667b4c99765544f29ecbc..b6358ea68df6a628684ba3b1f4fe5d57e9533cb3 100644 (file)
@@ -24,7 +24,8 @@ HEADERS=xh_all.h xh_bttn.h xh_chckb.h xh_chckl.h xh_choic.h xh_combo.h \
         xh_radbt.h xh_radbx.h xh_sizer.h xh_slidr.h xh_spin.h xh_stbmp.h \
         xh_sttxt.h xh_text.h xh_listb.h xml.h xmlres.h xh_toolb.h \
         xh_bmpbt.h xh_cald.h xh_listc.h xh_scrol.h xh_stbox.h xh_tree.h \
-        xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h
+        xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h \
+               xh_split.h
 
 OBJECTS=$(EXPAT_OBJECTS) \
         xml.o xmlres.o xmlrsall.o \
@@ -33,7 +34,7 @@ OBJECTS=$(EXPAT_OBJECTS) \
         xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
         xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \
         xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \
-        xh_frame.o xh_gdctl.o xh_scwin.o
+        xh_frame.o xh_gdctl.o xh_scwin.o xh_split.o
 DEPFILES=$(OBJECTS:.o=.d)
 
 APPEXTRADEFS=-I$(top_srcdir)/contrib/include $(EXPAT_DEFS)
index 174c3397114e2b76777f324d99fae6503f7482d2..9dbdbbffc037c19261ffa5cae4ed979d779e0935 100644 (file)
@@ -200,6 +200,10 @@ SOURCE=.\xh_spin.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\xh_split.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\xh_stbmp.cpp
 # End Source File
 # Begin Source File
index 2024abb133c15792067590eccd14fe43a3fc1d59..97f83438e15a2cdaa4f77ef933eae93a1be64241 100644 (file)
@@ -27,7 +27,8 @@ OBJECTS=$(EXPAT_OBJECTS) \
         xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj \
         xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj \
         xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj \
-        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj
+        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj \
+               xh_split.obj
 
 !include $(WXDIR)\src\makelib.b32
 
index 00b31580dca1aebe0a15c51fc1c825c0875e49a4..4c1fde8856d128ff1eb6340dd6341215439bd791 100644 (file)
@@ -28,7 +28,7 @@ OBJECTS= $(XMLPARSEDIR_OBJECTS) $(XMLTOKDIR_OBJECTS) \
         xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
         xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \
         xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \
-        xh_frame.o xh_gdctl.o xh_scwin.o
+        xh_frame.o xh_gdctl.o xh_scwin.o xh_split.o
 
 include $(WXDIR)/src/makelib.g95
 
index 6065d42e49e796eb35e6778d1d728f86bd67dce3..309fd7107a13e02c93a9114f8151fcc86ed6252e 100644 (file)
@@ -57,7 +57,8 @@ OBJECTS=$(EXPAT_OBJS) \
         $(D)\xh_text.obj $(D)\xh_listb.obj $(D)\xh_toolb.obj \
         $(D)\xh_bmpbt.obj $(D)\xh_cald.obj $(D)\xh_listc.obj $(D)\xh_scrol.obj \
         $(D)\xh_stbox.obj $(D)\xh_tree.obj $(D)\xh_stlin.obj $(D)\xh_bmp.obj \
-        $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj
+        $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj \
+        $(D)\xh_split.obj
 
 !include $(WXDIR)\src\makelib.vc
 
index d4069fc0f624d74bdcf75c8584c9a4b750ad6483..a2e3f6aa38c376c9ebe041f81f678d535f1d1f28 100644 (file)
@@ -18,7 +18,7 @@ OBJECTS=xml.obj xmlres.obj xmlrsall.obj &
         xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj &
         xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj &
         xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj &
-        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj
+        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj xh_split.obj
 
 
 all: $(WXXMLLIB)
diff --git a/contrib/src/xrc/xh_split.cpp b/contrib/src/xrc/xh_split.cpp
new file mode 100644 (file)
index 0000000..4b23f9f
--- /dev/null
@@ -0,0 +1,103 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_split.cpp
+// Purpose:     XRC resource for wxSplitterWindow
+// Author:      panga@freemail.hu, Vaclav Slavik
+// Created:     2003/01/26
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 panga@freemail.hu, Vaclav Slavik
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+#ifdef __GNUG__
+#pragma implementation "xh_split.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/xrc/xh_split.h"
+#include "wx/splitter.h"
+#include "wx/log.h"
+
+wxSplitterWindowXmlHandler::wxSplitterWindowXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxSP_3D);
+    XRC_ADD_STYLE(wxSP_3DSASH);
+    XRC_ADD_STYLE(wxSP_3DBORDER);
+    XRC_ADD_STYLE(wxSP_FULLSASH);
+    XRC_ADD_STYLE(wxSP_BORDER);
+    XRC_ADD_STYLE(wxSP_NOBORDER);
+    XRC_ADD_STYLE(wxSP_PERMIT_UNSPLIT);
+    XRC_ADD_STYLE(wxSP_LIVE_UPDATE);
+    AddWindowStyles();
+}
+
+wxObject *wxSplitterWindowXmlHandler::DoCreateResource()
+{
+    XRC_MAKE_INSTANCE(splitter, wxSplitterWindow);
+
+    splitter->Create(m_parentAsWindow,
+                     GetID(),
+                     GetPosition(), GetSize(),
+                     GetStyle(wxT("style"), wxSP_3D),
+                     GetName());
+
+    SetupWindow(splitter);
+
+    long sashpos = GetLong(wxT("sashpos"), 0);
+    long minpanesize = GetLong(wxT("minsize"), -1);
+    if (minpanesize != -1)
+         splitter->SetMinimumPaneSize(minpanesize);
+
+    wxWindow *win1 = NULL, *win2 = NULL;
+    wxXmlNode *n = m_node->GetChildren();
+    while (n)
+    {
+        if ((n->GetType() == wxXML_ELEMENT_NODE) && 
+            (n->GetName() == wxT("object") ||
+             n->GetName() == wxT("object_ref")))
+        {
+            wxObject *created = CreateResFromNode(n, splitter, NULL);
+            wxWindow *win = wxDynamicCast(created, wxWindow);
+            if (win1 == NULL)
+            {
+                win1 = win;
+            }
+            else
+            {
+                win2 = win;
+                break;
+            }            
+        }
+        n = n->GetNext();
+    }
+
+    if (win1 == NULL)
+        wxLogError(wxT("wxSplitterWindow node must contain at least one window."));
+
+    bool horizontal = (GetParamValue(wxT("orientation")) != wxT("vertical"));
+    if (win1 && win2)
+    {
+        if (horizontal)
+            splitter->SplitHorizontally(win1, win2, sashpos);
+        else
+            splitter->SplitVertically(win1, win2, sashpos);
+    }
+    else
+    {
+        splitter->Initialize(win1);
+    }
+
+    return splitter;
+}
+
+bool wxSplitterWindowXmlHandler::CanHandle(wxXmlNode *node)
+{
+     return IsOfClass(node, wxT("wxSplitterWindow"));
+}
+
+
index 5d933f9490524a263ed59baefaf6afac1f4e5213..ea175a776d929f6ec80c66f58b0f99e030727595 100644 (file)
@@ -95,4 +95,5 @@ void wxXmlResource::InitAllHandlers()
 #endif
     AddHandler(new wxFrameXmlHandler);
     AddHandler(new wxScrolledWindowXmlHandler);
+    AddHandler(new wxSplitterWindowXmlHandler);
 }
index ddc9309b7a7e3655f2ad3c90dbcce00fab3f7179..ec792425468dbbf41780634a3e51624cb87f38ac 100644 (file)
@@ -25,6 +25,7 @@ wxBase:
 
 All GUI ports:
 
+- added wxSplitterWindow handler to XRC
 - added wxFlexGridSizer::SetFlexibleDirection() (Szczepan Holyszewski)
 - implemented GetEditControl for wxGenericTreeCtrl (Peter Stieber)
 - improved contrib/utils/convertrc parsing (David J. Cooke)
index 8b8c8e31e681ee0f05dd418a7ba1cad4b66e7c00..af38cf30fef0f98a9fc24f775095cccd01037393 100644 (file)
@@ -303,6 +303,24 @@ size                       Size                    -1,-1
 style                      Style[wxScrolledWindow] wxHSCROLL | wxVSCROLL
 
 
+wxSplitterWindow
+----------------
+position                   Position                -1,-1
+size                       Size                    -1,-1
+style                      Style[wxSplitterWindow] wxSP_3D
+sashpos                    Integer                 0
+                           (Initial sash position)
+minsize                    Integer                 -1
+                           (Minimal panel size)
+orientation                "horizontal"|"vertical" horizontal
+
+wxSplitterWindow must have at least one and at most two children objects.
+If there's only one child object, it is passed to wxSplitterWindow::Initialize
+and the splitter is created unsplitted. If there are two children, the
+splitter is created splitted, either horizontally or vertically depending
+on the value of "orientation" attribute.
+
+
 wxToolBar
 ---------
 position                   Position                -1,-1
index 2ac1db392c1eebc8e18a82a923d3cee5ac9d1b57..8f62594126525c52403c802d42dcb74f92a9be0f 100644 (file)
@@ -47,5 +47,6 @@
 #include "wx/xrc/xh_gdctl.h"
 #include "wx/xrc/xh_frame.h"
 #include "wx/xrc/xh_scwin.h"
+#include "wx/xrc/xh_split.h"
 
 #endif // _WX_XMLRES_H_
diff --git a/include/wx/xrc/xh_split.h b/include/wx/xrc/xh_split.h
new file mode 100644 (file)
index 0000000..010bede
--- /dev/null
@@ -0,0 +1,28 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_split.h
+// Purpose:     XRC resource for wxSplitterWindow
+// Author:      panga@freemail.hu, Vaclav Slavik
+// Created:     2003/01/26
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 panga@freemail.hu, Vaclav Slavik
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_SPLIT_H_
+#define _WX_XH_SPLIT_H_
+
+#if defined(__GNUG__) && !defined(__APPLE__)
+#pragma interface "xh_split.h"
+#endif
+
+#include "wx/xrc/xmlres.h"
+
+class WXXMLDLLEXPORT wxSplitterWindowXmlHandler : public wxXmlResourceHandler
+{
+public:
+    wxSplitterWindowXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // _WX_XH_SPLIT_H_
index 119716ad1bdd38386f1f87fefee43595880dcd52..6972bd4cb7fa1f84152e80390be08e809a5ef6be 100644 (file)
                         </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">
index ca0f650ca84feff66b7667b4c99765544f29ecbc..b6358ea68df6a628684ba3b1f4fe5d57e9533cb3 100644 (file)
@@ -24,7 +24,8 @@ HEADERS=xh_all.h xh_bttn.h xh_chckb.h xh_chckl.h xh_choic.h xh_combo.h \
         xh_radbt.h xh_radbx.h xh_sizer.h xh_slidr.h xh_spin.h xh_stbmp.h \
         xh_sttxt.h xh_text.h xh_listb.h xml.h xmlres.h xh_toolb.h \
         xh_bmpbt.h xh_cald.h xh_listc.h xh_scrol.h xh_stbox.h xh_tree.h \
-        xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h
+        xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h \
+               xh_split.h
 
 OBJECTS=$(EXPAT_OBJECTS) \
         xml.o xmlres.o xmlrsall.o \
@@ -33,7 +34,7 @@ OBJECTS=$(EXPAT_OBJECTS) \
         xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
         xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \
         xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \
-        xh_frame.o xh_gdctl.o xh_scwin.o
+        xh_frame.o xh_gdctl.o xh_scwin.o xh_split.o
 DEPFILES=$(OBJECTS:.o=.d)
 
 APPEXTRADEFS=-I$(top_srcdir)/contrib/include $(EXPAT_DEFS)
index 174c3397114e2b76777f324d99fae6503f7482d2..9dbdbbffc037c19261ffa5cae4ed979d779e0935 100644 (file)
@@ -200,6 +200,10 @@ SOURCE=.\xh_spin.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\xh_split.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\xh_stbmp.cpp
 # End Source File
 # Begin Source File
index 2024abb133c15792067590eccd14fe43a3fc1d59..97f83438e15a2cdaa4f77ef933eae93a1be64241 100644 (file)
@@ -27,7 +27,8 @@ OBJECTS=$(EXPAT_OBJECTS) \
         xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj \
         xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj \
         xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj \
-        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj
+        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj \
+               xh_split.obj
 
 !include $(WXDIR)\src\makelib.b32
 
index 00b31580dca1aebe0a15c51fc1c825c0875e49a4..4c1fde8856d128ff1eb6340dd6341215439bd791 100644 (file)
@@ -28,7 +28,7 @@ OBJECTS= $(XMLPARSEDIR_OBJECTS) $(XMLTOKDIR_OBJECTS) \
         xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
         xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \
         xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \
-        xh_frame.o xh_gdctl.o xh_scwin.o
+        xh_frame.o xh_gdctl.o xh_scwin.o xh_split.o
 
 include $(WXDIR)/src/makelib.g95
 
index 6065d42e49e796eb35e6778d1d728f86bd67dce3..309fd7107a13e02c93a9114f8151fcc86ed6252e 100644 (file)
@@ -57,7 +57,8 @@ OBJECTS=$(EXPAT_OBJS) \
         $(D)\xh_text.obj $(D)\xh_listb.obj $(D)\xh_toolb.obj \
         $(D)\xh_bmpbt.obj $(D)\xh_cald.obj $(D)\xh_listc.obj $(D)\xh_scrol.obj \
         $(D)\xh_stbox.obj $(D)\xh_tree.obj $(D)\xh_stlin.obj $(D)\xh_bmp.obj \
-        $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj
+        $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj \
+        $(D)\xh_split.obj
 
 !include $(WXDIR)\src\makelib.vc
 
index d4069fc0f624d74bdcf75c8584c9a4b750ad6483..a2e3f6aa38c376c9ebe041f81f678d535f1d1f28 100644 (file)
@@ -18,7 +18,7 @@ OBJECTS=xml.obj xmlres.obj xmlrsall.obj &
         xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj &
         xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj &
         xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj &
-        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj
+        xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj xh_split.obj
 
 
 all: $(WXXMLLIB)
diff --git a/src/xrc/xh_split.cpp b/src/xrc/xh_split.cpp
new file mode 100644 (file)
index 0000000..4b23f9f
--- /dev/null
@@ -0,0 +1,103 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_split.cpp
+// Purpose:     XRC resource for wxSplitterWindow
+// Author:      panga@freemail.hu, Vaclav Slavik
+// Created:     2003/01/26
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 panga@freemail.hu, Vaclav Slavik
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+#ifdef __GNUG__
+#pragma implementation "xh_split.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/xrc/xh_split.h"
+#include "wx/splitter.h"
+#include "wx/log.h"
+
+wxSplitterWindowXmlHandler::wxSplitterWindowXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxSP_3D);
+    XRC_ADD_STYLE(wxSP_3DSASH);
+    XRC_ADD_STYLE(wxSP_3DBORDER);
+    XRC_ADD_STYLE(wxSP_FULLSASH);
+    XRC_ADD_STYLE(wxSP_BORDER);
+    XRC_ADD_STYLE(wxSP_NOBORDER);
+    XRC_ADD_STYLE(wxSP_PERMIT_UNSPLIT);
+    XRC_ADD_STYLE(wxSP_LIVE_UPDATE);
+    AddWindowStyles();
+}
+
+wxObject *wxSplitterWindowXmlHandler::DoCreateResource()
+{
+    XRC_MAKE_INSTANCE(splitter, wxSplitterWindow);
+
+    splitter->Create(m_parentAsWindow,
+                     GetID(),
+                     GetPosition(), GetSize(),
+                     GetStyle(wxT("style"), wxSP_3D),
+                     GetName());
+
+    SetupWindow(splitter);
+
+    long sashpos = GetLong(wxT("sashpos"), 0);
+    long minpanesize = GetLong(wxT("minsize"), -1);
+    if (minpanesize != -1)
+         splitter->SetMinimumPaneSize(minpanesize);
+
+    wxWindow *win1 = NULL, *win2 = NULL;
+    wxXmlNode *n = m_node->GetChildren();
+    while (n)
+    {
+        if ((n->GetType() == wxXML_ELEMENT_NODE) && 
+            (n->GetName() == wxT("object") ||
+             n->GetName() == wxT("object_ref")))
+        {
+            wxObject *created = CreateResFromNode(n, splitter, NULL);
+            wxWindow *win = wxDynamicCast(created, wxWindow);
+            if (win1 == NULL)
+            {
+                win1 = win;
+            }
+            else
+            {
+                win2 = win;
+                break;
+            }            
+        }
+        n = n->GetNext();
+    }
+
+    if (win1 == NULL)
+        wxLogError(wxT("wxSplitterWindow node must contain at least one window."));
+
+    bool horizontal = (GetParamValue(wxT("orientation")) != wxT("vertical"));
+    if (win1 && win2)
+    {
+        if (horizontal)
+            splitter->SplitHorizontally(win1, win2, sashpos);
+        else
+            splitter->SplitVertically(win1, win2, sashpos);
+    }
+    else
+    {
+        splitter->Initialize(win1);
+    }
+
+    return splitter;
+}
+
+bool wxSplitterWindowXmlHandler::CanHandle(wxXmlNode *node)
+{
+     return IsOfClass(node, wxT("wxSplitterWindow"));
+}
+
+
index 5d933f9490524a263ed59baefaf6afac1f4e5213..ea175a776d929f6ec80c66f58b0f99e030727595 100644 (file)
@@ -95,4 +95,5 @@ void wxXmlResource::InitAllHandlers()
 #endif
     AddHandler(new wxFrameXmlHandler);
     AddHandler(new wxScrolledWindowXmlHandler);
+    AddHandler(new wxSplitterWindowXmlHandler);
 }