From 1549aafdc9a631ac83a8158dd9a367c8b5acbc40 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 24 Feb 2022 01:07:21 +0000 Subject: [PATCH] Factor out common code from most wxBookCtrl-related XRC handlers Add new wxBookCtrlXmlHandlerBase and inherit the XRC handlers of all the wxBookCtrlBase-derived classes except for wxTreebookXmlHandler, which will require special handling, from it to avoid duplicating the same code in all of them. This commit is best viewed with --color-moved git option. --- Makefile.in | 21 +- build/bakefiles/files.bkl | 2 + build/cmake/files.cmake | 2 + build/files | 2 + build/msw/makefile.gcc | 20 +- build/msw/makefile.vc | 20 +- build/msw/wx_vc8_core.vcproj | 4 + build/msw/wx_vc8_xrc.vcproj | 8 + build/msw/wx_vc9_core.vcproj | 4 + build/msw/wx_vc9_xrc.vcproj | 8 + build/msw/wx_xrc.vcxproj | 2 + build/msw/wx_xrc.vcxproj.filters | 908 ++++++++++++++++--------------- include/wx/xrc/xh_bookctrlbase.h | 62 +++ include/wx/xrc/xh_choicbk.h | 7 +- include/wx/xrc/xh_listbk.h | 7 +- include/wx/xrc/xh_notbk.h | 7 +- include/wx/xrc/xh_propdlg.h | 7 +- include/wx/xrc/xh_toolbk.h | 16 +- src/xrc/xh_bookctrlbase.cpp | 160 ++++++ src/xrc/xh_choicbk.cpp | 79 +-- src/xrc/xh_listbk.cpp | 79 +-- src/xrc/xh_notbk.cpp | 79 +-- src/xrc/xh_propdlg.cpp | 62 +-- src/xrc/xh_toolbk.cpp | 92 +--- 24 files changed, 801 insertions(+), 857 deletions(-) create mode 100644 include/wx/xrc/xh_bookctrlbase.h create mode 100644 src/xrc/xh_bookctrlbase.cpp diff --git a/Makefile.in b/Makefile.in index d284555c69..33d2ae637e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1878,7 +1878,8 @@ XRCDLL_OBJECTS = \ xrcdll_xh_unkwn.o \ xrcdll_xh_wizrd.o \ xrcdll_xmlres.o \ - xrcdll_xmlrsall.o + xrcdll_xmlrsall.o \ + xrcdll_xh_bookctrlbase.o XRCDLL_ODEP = $(_____pch_wxprec_xrcdll_wx_wxprec_h_gch___depname) XRCLIB_CXXFLAGS = $(__xrclib_PCH_INC) $(__INC_TIFF_BUILD_p) $(__INC_TIFF_p) \ $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) $(__INC_REGEX_p) \ @@ -1953,7 +1954,8 @@ XRCLIB_OBJECTS = \ xrclib_xh_unkwn.o \ xrclib_xh_wizrd.o \ xrclib_xmlres.o \ - xrclib_xmlrsall.o + xrclib_xmlrsall.o \ + xrclib_xh_bookctrlbase.o XRCLIB_ODEP = $(_____pch_wxprec_xrclib_wx_wxprec_h_gch___depname) AUIDLL_CXXFLAGS = $(__auidll_PCH_INC) $(__INC_TIFF_BUILD_p) $(__INC_TIFF_p) \ $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) $(__INC_REGEX_p) \ @@ -4147,6 +4149,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS = \ wx/xrc/xh_unkwn.h \ wx/xrc/xh_wizrd.h \ wx/xrc/xmlres.h \ + wx/xrc/xh_bookctrlbase.h \ wx/aui/framemanager.h \ wx/aui/dockart.h \ wx/aui/floatpane.h \ @@ -4465,6 +4468,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS = \ monodll_xh_wizrd.o \ monodll_xmlres.o \ monodll_xmlrsall.o \ + monodll_xh_bookctrlbase.o \ monodll_framemanager.o \ monodll_dockart.o \ monodll_floatpane.o \ @@ -6475,6 +6479,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 = \ monolib_xh_wizrd.o \ monolib_xmlres.o \ monolib_xmlrsall.o \ + monolib_xh_bookctrlbase.o \ monolib_framemanager.o \ monolib_dockart.o \ monolib_floatpane.o \ @@ -17643,6 +17648,9 @@ monodll_xmlres.o: $(srcdir)/src/xrc/xmlres.cpp $(MONODLL_ODEP) monodll_xmlrsall.o: $(srcdir)/src/xrc/xmlrsall.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xmlrsall.cpp +monodll_xh_bookctrlbase.o: $(srcdir)/src/xrc/xh_bookctrlbase.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_bookctrlbase.cpp + monodll_framemanager.o: $(srcdir)/src/aui/framemanager.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/aui/framemanager.cpp @@ -22962,6 +22970,9 @@ monolib_xmlres.o: $(srcdir)/src/xrc/xmlres.cpp $(MONOLIB_ODEP) monolib_xmlrsall.o: $(srcdir)/src/xrc/xmlrsall.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xmlrsall.cpp +monolib_xh_bookctrlbase.o: $(srcdir)/src/xrc/xh_bookctrlbase.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_bookctrlbase.cpp + monolib_framemanager.o: $(srcdir)/src/aui/framemanager.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/aui/framemanager.cpp @@ -36693,6 +36704,9 @@ xrcdll_xmlres.o: $(srcdir)/src/xrc/xmlres.cpp $(XRCDLL_ODEP) xrcdll_xmlrsall.o: $(srcdir)/src/xrc/xmlrsall.cpp $(XRCDLL_ODEP) $(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xmlrsall.cpp +xrcdll_xh_bookctrlbase.o: $(srcdir)/src/xrc/xh_bookctrlbase.cpp $(XRCDLL_ODEP) + $(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_bookctrlbase.cpp + xrclib_xh_activityindicator.o: $(srcdir)/src/xrc/xh_activityindicator.cpp $(XRCLIB_ODEP) $(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_activityindicator.cpp @@ -36897,6 +36911,9 @@ xrclib_xmlres.o: $(srcdir)/src/xrc/xmlres.cpp $(XRCLIB_ODEP) xrclib_xmlrsall.o: $(srcdir)/src/xrc/xmlrsall.cpp $(XRCLIB_ODEP) $(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xmlrsall.cpp +xrclib_xh_bookctrlbase.o: $(srcdir)/src/xrc/xh_bookctrlbase.cpp $(XRCLIB_ODEP) + $(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_bookctrlbase.cpp + auidll_version_rc.o: $(srcdir)/src/msw/version.rc $(AUIDLL_ODEP) $(WINDRES) -i$< -o$@ $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_67) $(__INC_REGEX_p_65) $(__INC_EXPAT_p_65) --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_66) $(__DEBUG_DEFINE_p_66) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include --define WXUSINGDLL --define WXMAKINGDLL_AUI diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index c5e5c3bf04..0b16b7d632 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -3111,6 +3111,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/xrc/xh_wizrd.cpp src/xrc/xmlres.cpp src/xrc/xmlrsall.cpp + src/xrc/xh_bookctrlbase.cpp wx/xrc/xh_activityindicator.h @@ -3181,6 +3182,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/xrc/xh_unkwn.h wx/xrc/xh_wizrd.h wx/xrc/xmlres.h + wx/xrc/xh_bookctrlbase.h diff --git a/build/cmake/files.cmake b/build/cmake/files.cmake index 26a97a170f..8c9bcf58b5 100644 --- a/build/cmake/files.cmake +++ b/build/cmake/files.cmake @@ -2951,6 +2951,7 @@ set(XRC_SRC src/xrc/xmlres.cpp src/xrc/xmlrsall.cpp src/xrc/xh_dataview.cpp + src/xrc/xh_bookctrlbase.cpp ) set(XRC_HDR @@ -3022,6 +3023,7 @@ set(XRC_HDR wx/xrc/xh_wizrd.h wx/xrc/xmlres.h wx/xrc/xh_dataview.h + wx/xrc/xh_bookctrlbase.h ) set(XML_SRC diff --git a/build/files b/build/files index f521f2af38..ca7e119b61 100644 --- a/build/files +++ b/build/files @@ -2832,6 +2832,7 @@ XRC_SRC = src/xrc/xh_bmp.cpp src/xrc/xh_bmpcbox.cpp src/xrc/xh_bmpbt.cpp + src/xrc/xh_bookctrlbase.cpp src/xrc/xh_bttn.cpp src/xrc/xh_cald.cpp src/xrc/xh_chckb.cpp @@ -2902,6 +2903,7 @@ XRC_HDR = wx/xrc/xh_bmpbt.h wx/xrc/xh_bmp.h wx/xrc/xh_bmpcbox.h + wx/xrc/xh_bookctrlbase.h wx/xrc/xh_bttn.h wx/xrc/xh_cald.h wx/xrc/xh_chckb.h diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 23025a287a..00dd6f4818 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -1329,7 +1329,8 @@ XRCDLL_OBJECTS = \ $(OBJS)\xrcdll_xh_unkwn.o \ $(OBJS)\xrcdll_xh_wizrd.o \ $(OBJS)\xrcdll_xmlres.o \ - $(OBJS)\xrcdll_xmlrsall.o + $(OBJS)\xrcdll_xmlrsall.o \ + $(OBJS)\xrcdll_xh_bookctrlbase.o XRCLIB_CXXFLAGS = -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png \ -I..\..\src\zlib -I..\..\3rdparty\pcre\src\wx -I..\..\src\expat\expat\lib \ $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ \ @@ -1407,7 +1408,8 @@ XRCLIB_OBJECTS = \ $(OBJS)\xrclib_xh_unkwn.o \ $(OBJS)\xrclib_xh_wizrd.o \ $(OBJS)\xrclib_xmlres.o \ - $(OBJS)\xrclib_xmlrsall.o + $(OBJS)\xrclib_xmlrsall.o \ + $(OBJS)\xrclib_xh_bookctrlbase.o AUIDLL_CXXFLAGS = -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png \ -I..\..\src\zlib -I..\..\3rdparty\pcre\src\wx -I..\..\src\expat\expat\lib \ $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ \ @@ -1817,6 +1819,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_xh_wizrd.o \ $(OBJS)\monodll_xmlres.o \ $(OBJS)\monodll_xmlrsall.o \ + $(OBJS)\monodll_xh_bookctrlbase.o \ $(OBJS)\monodll_framemanager.o \ $(OBJS)\monodll_dockart.o \ $(OBJS)\monodll_floatpane.o \ @@ -2666,6 +2669,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_xh_wizrd.o \ $(OBJS)\monolib_xmlres.o \ $(OBJS)\monolib_xmlrsall.o \ + $(OBJS)\monolib_xh_bookctrlbase.o \ $(OBJS)\monolib_framemanager.o \ $(OBJS)\monolib_dockart.o \ $(OBJS)\monolib_floatpane.o \ @@ -7962,6 +7966,9 @@ $(OBJS)\monodll_xmlres.o: ../../src/xrc/xmlres.cpp $(OBJS)\monodll_xmlrsall.o: ../../src/xrc/xmlrsall.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monodll_xh_bookctrlbase.o: ../../src/xrc/xh_bookctrlbase.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monodll_framemanager.o: ../../src/aui/framemanager.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -10554,6 +10561,9 @@ $(OBJS)\monolib_xmlres.o: ../../src/xrc/xmlres.cpp $(OBJS)\monolib_xmlrsall.o: ../../src/xrc/xmlrsall.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monolib_xh_bookctrlbase.o: ../../src/xrc/xh_bookctrlbase.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monolib_framemanager.o: ../../src/aui/framemanager.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -16911,6 +16921,9 @@ $(OBJS)\xrcdll_xmlres.o: ../../src/xrc/xmlres.cpp $(OBJS)\xrcdll_xmlrsall.o: ../../src/xrc/xmlrsall.cpp $(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\xrcdll_xh_bookctrlbase.o: ../../src/xrc/xh_bookctrlbase.cpp + $(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\xrclib_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $< @@ -17118,6 +17131,9 @@ $(OBJS)\xrclib_xmlres.o: ../../src/xrc/xmlres.cpp $(OBJS)\xrclib_xmlrsall.o: ../../src/xrc/xmlrsall.cpp $(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\xrclib_xh_bookctrlbase.o: ../../src/xrc/xh_bookctrlbase.cpp + $(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\auidll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(AUIDLL_CXXFLAGS) $(CPPDEPS) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 9a8bfcc6dd..d01748ffc8 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -1474,7 +1474,8 @@ XRCDLL_OBJECTS = \ $(OBJS)\xrcdll_xh_unkwn.obj \ $(OBJS)\xrcdll_xh_wizrd.obj \ $(OBJS)\xrcdll_xmlres.obj \ - $(OBJS)\xrcdll_xmlrsall.obj + $(OBJS)\xrcdll_xmlrsall.obj \ + $(OBJS)\xrcdll_xh_bookctrlbase.obj XRCDLL_RESOURCES = \ $(OBJS)\xrcdll_version.res XRCLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_441)$(__DEBUGRUNTIME) /DWIN32 \ @@ -1559,7 +1560,8 @@ XRCLIB_OBJECTS = \ $(OBJS)\xrclib_xh_unkwn.obj \ $(OBJS)\xrclib_xh_wizrd.obj \ $(OBJS)\xrclib_xmlres.obj \ - $(OBJS)\xrclib_xmlrsall.obj + $(OBJS)\xrclib_xmlrsall.obj \ + $(OBJS)\xrclib_xh_bookctrlbase.obj AUIDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_457)$(__DEBUGRUNTIME) /DWIN32 \ /I..\..\src\tiff\libtiff /I..\..\src\jpeg /I..\..\src\png /I..\..\src\zlib \ /I..\..\3rdparty\pcre\src\wx /I..\..\src\expat\expat\lib $(__DEBUGINFO) \ @@ -2148,6 +2150,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_xh_wizrd.obj \ $(OBJS)\monodll_xmlres.obj \ $(OBJS)\monodll_xmlrsall.obj \ + $(OBJS)\monodll_xh_bookctrlbase.obj \ $(OBJS)\monodll_framemanager.obj \ $(OBJS)\monodll_dockart.obj \ $(OBJS)\monodll_floatpane.obj \ @@ -2997,6 +3000,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_xh_wizrd.obj \ $(OBJS)\monolib_xmlres.obj \ $(OBJS)\monolib_xmlrsall.obj \ + $(OBJS)\monolib_xh_bookctrlbase.obj \ $(OBJS)\monolib_framemanager.obj \ $(OBJS)\monolib_dockart.obj \ $(OBJS)\monolib_floatpane.obj \ @@ -8420,6 +8424,9 @@ $(OBJS)\monodll_xmlres.obj: ..\..\src\xrc\xmlres.cpp $(OBJS)\monodll_xmlrsall.obj: ..\..\src\xrc\xmlrsall.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xmlrsall.cpp +$(OBJS)\monodll_xh_bookctrlbase.obj: ..\..\src\xrc\xh_bookctrlbase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_bookctrlbase.cpp + $(OBJS)\monodll_framemanager.obj: ..\..\src\aui\framemanager.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\aui\framemanager.cpp @@ -11012,6 +11019,9 @@ $(OBJS)\monolib_xmlres.obj: ..\..\src\xrc\xmlres.cpp $(OBJS)\monolib_xmlrsall.obj: ..\..\src\xrc\xmlrsall.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xmlrsall.cpp +$(OBJS)\monolib_xh_bookctrlbase.obj: ..\..\src\xrc\xh_bookctrlbase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_bookctrlbase.cpp + $(OBJS)\monolib_framemanager.obj: ..\..\src\aui\framemanager.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\aui\framemanager.cpp @@ -17369,6 +17379,9 @@ $(OBJS)\xrcdll_xmlres.obj: ..\..\src\xrc\xmlres.cpp $(OBJS)\xrcdll_xmlrsall.obj: ..\..\src\xrc\xmlrsall.cpp $(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xmlrsall.cpp +$(OBJS)\xrcdll_xh_bookctrlbase.obj: ..\..\src\xrc\xh_bookctrlbase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_bookctrlbase.cpp + $(OBJS)\xrclib_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp @@ -17576,6 +17589,9 @@ $(OBJS)\xrclib_xmlres.obj: ..\..\src\xrc\xmlres.cpp $(OBJS)\xrclib_xmlrsall.obj: ..\..\src\xrc\xmlrsall.cpp $(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xmlrsall.cpp +$(OBJS)\xrclib_xh_bookctrlbase.obj: ..\..\src\xrc\xh_bookctrlbase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_bookctrlbase.cpp + $(OBJS)\auidll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(AUIDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj index 011a5df729..58af7fa24d 100644 --- a/build/msw/wx_vc8_core.vcproj +++ b/build/msw/wx_vc8_core.vcproj @@ -4572,6 +4572,10 @@ RelativePath="..\..\include\wx\xrc\xh_bmpcbox.h" > + + diff --git a/build/msw/wx_vc8_xrc.vcproj b/build/msw/wx_vc8_xrc.vcproj index b66e1c4e47..91224e16d9 100644 --- a/build/msw/wx_vc8_xrc.vcproj +++ b/build/msw/wx_vc8_xrc.vcproj @@ -1081,6 +1081,10 @@ RelativePath="..\..\include\wx\xrc\xh_bmpcbox.h" > + + @@ -1355,6 +1359,10 @@ RelativePath="..\..\src\xrc\xh_bmpcbox.cpp" > + + diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj index a19fd2073a..65bdd6cdbc 100644 --- a/build/msw/wx_vc9_core.vcproj +++ b/build/msw/wx_vc9_core.vcproj @@ -4568,6 +4568,10 @@ RelativePath="..\..\include\wx\xrc\xh_bmpcbox.h" > + + diff --git a/build/msw/wx_vc9_xrc.vcproj b/build/msw/wx_vc9_xrc.vcproj index dd5f1f7d8d..8e337fb20b 100644 --- a/build/msw/wx_vc9_xrc.vcproj +++ b/build/msw/wx_vc9_xrc.vcproj @@ -1077,6 +1077,10 @@ RelativePath="..\..\include\wx\xrc\xh_bmpcbox.h" > + + @@ -1351,6 +1355,10 @@ RelativePath="..\..\src\xrc\xh_bmpcbox.cpp" > + + diff --git a/build/msw/wx_xrc.vcxproj b/build/msw/wx_xrc.vcxproj index e0d159b735..63818d4f93 100644 --- a/build/msw/wx_xrc.vcxproj +++ b/build/msw/wx_xrc.vcxproj @@ -461,6 +461,7 @@ + @@ -560,6 +561,7 @@ + diff --git a/build/msw/wx_xrc.vcxproj.filters b/build/msw/wx_xrc.vcxproj.filters index 805c605a43..9ee1e14095 100644 --- a/build/msw/wx_xrc.vcxproj.filters +++ b/build/msw/wx_xrc.vcxproj.filters @@ -1,452 +1,458 @@ - - - - - {A6A5C30D-BDB6-5050-906D-10A96065136C} - - - {D030D8C2-53EE-5B96-8F89-D78157B06140} - - - {63537534-1833-5C1F-8DBD-359A84F294C8} - - - {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} - - - {8C07E926-65B0-5F00-B0D6-7F40DA69BB25} - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Common Sources - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - MSW Sources - - - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - Common Headers - - - - - Setup Headers - - - MSW Headers - - + + + + + {A6A5C30D-BDB6-5050-906D-10A96065136C} + + + {D030D8C2-53EE-5B96-8F89-D78157B06140} + + + {63537534-1833-5C1F-8DBD-359A84F294C8} + + + {5AFFF20E-29F9-512B-B80A-7DC45976CDAC} + + + {8C07E926-65B0-5F00-B0D6-7F40DA69BB25} + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Common Sources + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + MSW Sources + + + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + Common Headers + + + + + Setup Headers + + + MSW Headers + + \ No newline at end of file diff --git a/include/wx/xrc/xh_bookctrlbase.h b/include/wx/xrc/xh_bookctrlbase.h new file mode 100644 index 0000000000..f4dc9ae309 --- /dev/null +++ b/include/wx/xrc/xh_bookctrlbase.h @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/xrc/xh_bookctrlbase.h +// Purpose: Base class for wxBookCtrl-derived classes XRC handlers +// Author: Vadim Zeitlin +// Created: 2022-02-23 +// Copyright: (c) 2022 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_XRC_XH_BOOKCTRLBASE_H_ +#define _WX_XRC_XH_BOOKCTRLBASE_H_ + +#include "wx/xrc/xmlres.h" + +#if wxUSE_XRC && wxUSE_BOOKCTRL + +class WXDLLIMPEXP_FWD_CORE wxBookCtrlBase; + +// ---------------------------------------------------------------------------- +// wxBookCtrlXmlHandlerBase: base class of handlers for wxBookCtrl subclasses +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_XRC wxBookCtrlXmlHandlerBase : public wxXmlResourceHandler +{ +protected: + wxBookCtrlXmlHandlerBase(); + virtual ~wxBookCtrlXmlHandlerBase(); + + // Create all pages under the current node and add them to the book control. + // + // This should be called instead of calling CreateChildren() directly by + // the derived class to deal with the contents of the book control node. + void DoCreatePages(wxBookCtrlBase* book); + + // Create a new page using the contents of the current node. + // + // This should be called to handle the book control page node. + wxObject* DoCreatePage(wxBookCtrlBase* book); + + // Return true if we're parsing the book control node itself. + bool IsInside() const { return m_isInside; } + +private: + // This struct contains the actual page, created by DoCreatePage(), and all + // its attributes read from wxXmlNode. + struct PageWithAttrs; + + // And this vector contains all the pages created so far. + wxVector m_bookPages; + + // All bitmaps defined for the pages, may be empty. + wxVector m_bookImages; + + // True if we're used for parsing the contents of the book control node. + bool m_isInside; + + wxDECLARE_NO_COPY_CLASS(wxBookCtrlXmlHandlerBase); +}; + +#endif // wxUSE_XRC && wxUSE_BOOKCTRL + +#endif // _WX_XRC_XH_BOOKCTRLBASE_H_ diff --git a/include/wx/xrc/xh_choicbk.h b/include/wx/xrc/xh_choicbk.h index b383001842..4cfe757b68 100644 --- a/include/wx/xrc/xh_choicbk.h +++ b/include/wx/xrc/xh_choicbk.h @@ -9,13 +9,13 @@ #ifndef _WX_XH_CHOICEBK_H_ #define _WX_XH_CHOICEBK_H_ -#include "wx/xrc/xmlres.h" +#include "wx/xrc/xh_bookctrlbase.h" #if wxUSE_XRC && wxUSE_CHOICEBOOK class WXDLLIMPEXP_FWD_CORE wxChoicebook; -class WXDLLIMPEXP_XRC wxChoicebookXmlHandler : public wxXmlResourceHandler +class WXDLLIMPEXP_XRC wxChoicebookXmlHandler : public wxBookCtrlXmlHandlerBase { wxDECLARE_DYNAMIC_CLASS(wxChoicebookXmlHandler); @@ -25,10 +25,7 @@ public: virtual bool CanHandle(wxXmlNode *node) wxOVERRIDE; private: - bool m_isInside; wxChoicebook *m_choicebook; - wxVector m_bookImages; - wxVector m_bookImagesIdx; }; #endif // wxUSE_XRC && wxUSE_CHOICEBOOK diff --git a/include/wx/xrc/xh_listbk.h b/include/wx/xrc/xh_listbk.h index 7b99952f25..e5852fbe5a 100644 --- a/include/wx/xrc/xh_listbk.h +++ b/include/wx/xrc/xh_listbk.h @@ -9,13 +9,13 @@ #ifndef _WX_XH_LISTBK_H_ #define _WX_XH_LISTBK_H_ -#include "wx/xrc/xmlres.h" +#include "wx/xrc/xh_bookctrlbase.h" #if wxUSE_XRC && wxUSE_LISTBOOK class WXDLLIMPEXP_FWD_CORE wxListbook; -class WXDLLIMPEXP_XRC wxListbookXmlHandler : public wxXmlResourceHandler +class WXDLLIMPEXP_XRC wxListbookXmlHandler : public wxBookCtrlXmlHandlerBase { wxDECLARE_DYNAMIC_CLASS(wxListbookXmlHandler); @@ -25,10 +25,7 @@ public: virtual bool CanHandle(wxXmlNode *node) wxOVERRIDE; private: - bool m_isInside; wxListbook *m_listbook; - wxVector m_bookImages; - wxVector m_bookImagesIdx; }; #endif // wxUSE_XRC && wxUSE_LISTBOOK diff --git a/include/wx/xrc/xh_notbk.h b/include/wx/xrc/xh_notbk.h index 9ada21c1e5..d39e44d960 100644 --- a/include/wx/xrc/xh_notbk.h +++ b/include/wx/xrc/xh_notbk.h @@ -9,13 +9,13 @@ #ifndef _WX_XH_NOTBK_H_ #define _WX_XH_NOTBK_H_ -#include "wx/xrc/xmlres.h" +#include "wx/xrc/xh_bookctrlbase.h" #if wxUSE_XRC && wxUSE_NOTEBOOK class WXDLLIMPEXP_FWD_CORE wxNotebook; -class WXDLLIMPEXP_XRC wxNotebookXmlHandler : public wxXmlResourceHandler +class WXDLLIMPEXP_XRC wxNotebookXmlHandler : public wxBookCtrlXmlHandlerBase { wxDECLARE_DYNAMIC_CLASS(wxNotebookXmlHandler); @@ -25,10 +25,7 @@ public: virtual bool CanHandle(wxXmlNode *node) wxOVERRIDE; private: - bool m_isInside; wxNotebook *m_notebook; - wxVector m_bookImages; - wxVector m_bookImagesIdx; }; #endif // wxUSE_XRC && wxUSE_NOTEBOOK diff --git a/include/wx/xrc/xh_propdlg.h b/include/wx/xrc/xh_propdlg.h index cf0e8aa7ef..ad746ce15d 100644 --- a/include/wx/xrc/xh_propdlg.h +++ b/include/wx/xrc/xh_propdlg.h @@ -10,13 +10,13 @@ #ifndef _WX_XH_PROPDLG_H_ #define _WX_XH_PROPDLG_H_ -#include "wx/xrc/xmlres.h" +#include "wx/xrc/xh_bookctrlbase.h" #if wxUSE_XRC && wxUSE_BOOKCTRL class WXDLLIMPEXP_FWD_CORE wxPropertySheetDialog; -class WXDLLIMPEXP_XRC wxPropertySheetDialogXmlHandler : public wxXmlResourceHandler +class WXDLLIMPEXP_XRC wxPropertySheetDialogXmlHandler : public wxBookCtrlXmlHandlerBase { wxDECLARE_DYNAMIC_CLASS(wxPropertySheetDialogXmlHandler); @@ -26,10 +26,7 @@ public: virtual bool CanHandle(wxXmlNode *node) wxOVERRIDE; private: - bool m_isInside; wxPropertySheetDialog *m_dialog; - wxVector m_bookImages; - wxVector m_bookImagesIdx; }; #endif // wxUSE_XRC && wxUSE_BOOKCTRL diff --git a/include/wx/xrc/xh_toolbk.h b/include/wx/xrc/xh_toolbk.h index 5d342bd6db..29e7181c73 100644 --- a/include/wx/xrc/xh_toolbk.h +++ b/include/wx/xrc/xh_toolbk.h @@ -10,13 +10,13 @@ #ifndef _WX_XH_TOOLBK_H_ #define _WX_XH_TOOLBK_H_ -#include "wx/xrc/xmlres.h" +#include "wx/xrc/xh_bookctrlbase.h" #if wxUSE_XRC && wxUSE_TOOLBOOK class WXDLLIMPEXP_FWD_CORE wxToolbook; -class WXDLLIMPEXP_XRC wxToolbookXmlHandler : public wxXmlResourceHandler +class WXDLLIMPEXP_XRC wxToolbookXmlHandler : public wxBookCtrlXmlHandlerBase { public: wxToolbookXmlHandler(); @@ -25,19 +25,7 @@ public: virtual bool CanHandle(wxXmlNode *node) wxOVERRIDE; private: - struct newPage - { - wxWindow* wnd; - wxString label; - bool selected; - int imgId; // index in image list - int bmpId; // index in wxVector - }; - - bool m_isInside; wxToolbook *m_toolbook; - wxVector m_bookPages; - wxVector m_bookImages; wxDECLARE_DYNAMIC_CLASS(wxToolbookXmlHandler); }; diff --git a/src/xrc/xh_bookctrlbase.cpp b/src/xrc/xh_bookctrlbase.cpp new file mode 100644 index 0000000000..93b08132dc --- /dev/null +++ b/src/xrc/xh_bookctrlbase.cpp @@ -0,0 +1,160 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/xrc/xh_bookctrlbase.cpp +// Purpose: wxBookCtrlXmlHandlerBase implementation +// Author: Vadim Zeitlin +// Created: 2022-02-24 +// Copyright: (c) 2022 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#if wxUSE_XRC && wxUSE_BOOKCTRL + +#include "wx/xrc/xh_bookctrlbase.h" + +#include "wx/bookctrl.h" + +// ---------------------------------------------------------------------------- +// private types +// ---------------------------------------------------------------------------- + +struct wxBookCtrlXmlHandlerBase::PageWithAttrs +{ + PageWithAttrs() + { + wnd = NULL; + selected = false; + imgId = + bmpId = wxWithImages::NO_IMAGE; + } + + wxWindow* wnd; + wxString label; + bool selected; + int imgId; // index in the image list + int bmpId; // index in m_bookImages vector +}; + +// ============================================================================ +// wxBookCtrlXmlHandlerBase implementation +// ============================================================================ + +wxBookCtrlXmlHandlerBase::wxBookCtrlXmlHandlerBase() + : m_isInside(false) +{ +} + +wxBookCtrlXmlHandlerBase::~wxBookCtrlXmlHandlerBase() +{ + // Dtor is trivial but has to be defined here because it implicitly uses + // PageWithAttrs which is not fully declared in the header. +} + +void wxBookCtrlXmlHandlerBase::DoCreatePages(wxBookCtrlBase* book) +{ + bool old_ins = m_isInside; + m_isInside = true; + + wxVector pagesSave; + m_bookPages.swap(pagesSave); + + wxVector imagesSave; + m_bookImages.swap(imagesSave); + + wxImageList *imagelist = GetImageList(); + if ( imagelist ) + book->AssignImageList(imagelist); + + CreateChildren(book, true /* only use this handler */); + + if ( !m_bookImages.empty() ) + book->SetImages(m_bookImages); + + for ( size_t i = 0; i < m_bookPages.size(); ++i ) + { + const PageWithAttrs& currentPage = m_bookPages.at(i); + int imgId = currentPage.bmpId; + if ( imgId == -1 ) + { + imgId = currentPage.imgId; + } + + book->AddPage(currentPage.wnd, + currentPage.label, + currentPage.selected, + imgId); + } + + m_bookImages.swap(imagesSave); + m_bookPages.swap(pagesSave); + + m_isInside = old_ins; +} + +wxObject* +wxBookCtrlXmlHandlerBase::DoCreatePage(wxBookCtrlBase* book) +{ + wxXmlNode *n = GetParamNode(wxT("object")); + + if ( !n ) + n = GetParamNode(wxT("object_ref")); + + if (n) + { + bool old_ins = m_isInside; + m_isInside = false; + wxObject *item = CreateResFromNode(n, book, NULL); + m_isInside = old_ins; + wxWindow *wnd = wxDynamicCast(item, wxWindow); + + if (wnd) + { + PageWithAttrs currentPage; + + if ( HasParam(wxT("bitmap")) ) + { + m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); + currentPage.bmpId = m_bookImages.size() - 1; + } + else if ( HasParam(wxT("image")) ) + { + if ( book->GetImageList() ) + { + currentPage.imgId = (int)GetLong(wxT("image")); + } + else // image without image list? + { + ReportError(n, "image can only be used in conjunction " + "with imagelist"); + } + } + + currentPage.wnd = wnd; + currentPage.label = GetText(wxT("label")); + currentPage.selected = GetBool(wxT("selected")); + m_bookPages.push_back(currentPage); + } + else + { + ReportError(n, wxString::Format("%s child must be a window", m_class)); + } + return wnd; + } + else + { + ReportError(wxString::Format("%s must have a window child", m_class)); + return NULL; + } +} + +#endif // wxUSE_XRC && wxUSE_BOOKCTRL diff --git a/src/xrc/xh_choicbk.cpp b/src/xrc/xh_choicbk.cpp index c19b32f64e..4f62d0acfc 100644 --- a/src/xrc/xh_choicbk.cpp +++ b/src/xrc/xh_choicbk.cpp @@ -26,9 +26,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxChoicebookXmlHandler, wxXmlResourceHandler); wxChoicebookXmlHandler::wxChoicebookXmlHandler() - :wxXmlResourceHandler(), - m_isInside(false), - m_choicebook(NULL) + : m_choicebook(NULL) { XRC_ADD_STYLE(wxBK_DEFAULT); XRC_ADD_STYLE(wxBK_LEFT); @@ -49,53 +47,7 @@ wxObject *wxChoicebookXmlHandler::DoCreateResource() { if (m_class == wxT("choicebookpage")) { - wxXmlNode *n = GetParamNode(wxT("object")); - - if ( !n ) - n = GetParamNode(wxT("object_ref")); - - if (n) - { - bool old_ins = m_isInside; - m_isInside = false; - wxObject *item = CreateResFromNode(n, m_choicebook, NULL); - m_isInside = old_ins; - wxWindow *wnd = wxDynamicCast(item, wxWindow); - - if (wnd) - { - m_choicebook->AddPage(wnd, GetText(wxT("label")), - GetBool(wxT("selected"))); - if ( HasParam(wxT("bitmap")) ) - { - m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); - m_bookImagesIdx.push_back( m_choicebook->GetPageCount()-1 ); - } - else if ( HasParam(wxT("image")) ) - { - if ( m_choicebook->GetImageList() ) - { - m_choicebook->SetPageImage(m_choicebook->GetPageCount()-1, - GetLong(wxT("image")) ); - } - else // image without image list? - { - ReportError(n, "image can only be used in conjunction " - "with imagelist"); - } - } - } - else - { - ReportError(n, "choicebookpage child must be a window"); - } - return wnd; - } - else - { - ReportError("choicebookpage must have a window child"); - return NULL; - } + return DoCreatePage(m_choicebook); } else @@ -108,33 +60,12 @@ wxObject *wxChoicebookXmlHandler::DoCreateResource() GetStyle(wxT("style")), GetName()); - wxImageList *imagelist = GetImageList(); - if ( imagelist ) - nb->AssignImageList(imagelist); - wxChoicebook *old_par = m_choicebook; m_choicebook = nb; - bool old_ins = m_isInside; - m_isInside = true; - wxVector old_images = m_bookImages; - m_bookImages.clear(); - wxVector old_imageIdx = m_bookImagesIdx; - m_bookImagesIdx.clear(); - CreateChildren(m_choicebook, true/*only this handler*/); - if ( !m_bookImages.empty() ) - { - m_choicebook->SetImages(m_bookImages); - for ( size_t i = 0; i < m_bookImagesIdx.size(); ++i ) - { - m_choicebook->SetPageImage( m_bookImagesIdx[i], i ); - } - } + DoCreatePages(m_choicebook); - m_isInside = old_ins; m_choicebook = old_par; - m_bookImages = old_images; - m_bookImagesIdx = old_imageIdx; return nb; } @@ -142,8 +73,8 @@ wxObject *wxChoicebookXmlHandler::DoCreateResource() bool wxChoicebookXmlHandler::CanHandle(wxXmlNode *node) { - return ((!m_isInside && IsOfClass(node, wxT("wxChoicebook"))) || - (m_isInside && IsOfClass(node, wxT("choicebookpage")))); + return ((!IsInside() && IsOfClass(node, wxT("wxChoicebook"))) || + (IsInside() && IsOfClass(node, wxT("choicebookpage")))); } #endif // wxUSE_XRC && wxUSE_CHOICEBOOK diff --git a/src/xrc/xh_listbk.cpp b/src/xrc/xh_listbk.cpp index f275bd6322..1ee5b78f1e 100644 --- a/src/xrc/xh_listbk.cpp +++ b/src/xrc/xh_listbk.cpp @@ -26,9 +26,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxListbookXmlHandler, wxXmlResourceHandler); wxListbookXmlHandler::wxListbookXmlHandler() - :wxXmlResourceHandler(), - m_isInside(false), - m_listbook(NULL) + : m_listbook(NULL) { XRC_ADD_STYLE(wxBK_DEFAULT); XRC_ADD_STYLE(wxBK_LEFT); @@ -49,53 +47,7 @@ wxObject *wxListbookXmlHandler::DoCreateResource() { if (m_class == wxT("listbookpage")) { - wxXmlNode *n = GetParamNode(wxT("object")); - - if ( !n ) - n = GetParamNode(wxT("object_ref")); - - if (n) - { - bool old_ins = m_isInside; - m_isInside = false; - wxObject *item = CreateResFromNode(n, m_listbook, NULL); - m_isInside = old_ins; - wxWindow *wnd = wxDynamicCast(item, wxWindow); - - if (wnd) - { - m_listbook->AddPage(wnd, GetText(wxT("label")), - GetBool(wxT("selected"))); - if ( HasParam(wxT("bitmap")) ) - { - m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); - m_bookImagesIdx.push_back( m_listbook->GetPageCount()-1 ); - } - else if ( HasParam(wxT("image")) ) - { - if ( m_listbook->GetImageList() ) - { - m_listbook->SetPageImage(m_listbook->GetPageCount()-1, - GetLong(wxT("image")) ); - } - else // image without image list? - { - ReportError(n, "image can only be used in conjunction " - "with imagelist"); - } - } - } - else - { - ReportError(n, "listbookpage child must be a window"); - } - return wnd; - } - else - { - ReportError("listbookpage must have a window child"); - return NULL; - } + return DoCreatePage(m_listbook); } else @@ -108,33 +60,12 @@ wxObject *wxListbookXmlHandler::DoCreateResource() GetStyle(wxT("style")), GetName()); - wxImageList *imagelist = GetImageList(); - if ( imagelist ) - nb->AssignImageList(imagelist); - wxListbook *old_par = m_listbook; m_listbook = nb; - bool old_ins = m_isInside; - m_isInside = true; - wxVector old_images = m_bookImages; - m_bookImages.clear(); - wxVector old_imageIdx = m_bookImagesIdx; - m_bookImagesIdx.clear(); - CreateChildren(m_listbook, true/*only this handler*/); - if ( !m_bookImages.empty() ) - { - m_listbook->SetImages(m_bookImages); - for ( size_t i = 0; i < m_bookImagesIdx.size(); ++i ) - { - m_listbook->SetPageImage( m_bookImagesIdx[i], i ); - } - } + DoCreatePages(m_listbook); - m_isInside = old_ins; m_listbook = old_par; - m_bookImages = old_images; - m_bookImagesIdx = old_imageIdx; return nb; } @@ -142,8 +73,8 @@ wxObject *wxListbookXmlHandler::DoCreateResource() bool wxListbookXmlHandler::CanHandle(wxXmlNode *node) { - return ((!m_isInside && IsOfClass(node, wxT("wxListbook"))) || - (m_isInside && IsOfClass(node, wxT("listbookpage")))); + return ((!IsInside() && IsOfClass(node, wxT("wxListbook"))) || + (IsInside() && IsOfClass(node, wxT("listbookpage")))); } #endif // wxUSE_XRC && wxUSE_LISTBOOK diff --git a/src/xrc/xh_notbk.cpp b/src/xrc/xh_notbk.cpp index bf0be8aecc..b9224b4faa 100644 --- a/src/xrc/xh_notbk.cpp +++ b/src/xrc/xh_notbk.cpp @@ -26,9 +26,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxNotebookXmlHandler, wxXmlResourceHandler); wxNotebookXmlHandler::wxNotebookXmlHandler() - :wxXmlResourceHandler(), - m_isInside(false), - m_notebook(NULL) + : m_notebook(NULL) { XRC_ADD_STYLE(wxBK_DEFAULT); XRC_ADD_STYLE(wxBK_LEFT); @@ -54,53 +52,7 @@ wxObject *wxNotebookXmlHandler::DoCreateResource() { if (m_class == wxT("notebookpage")) { - wxXmlNode *n = GetParamNode(wxT("object")); - - if ( !n ) - n = GetParamNode(wxT("object_ref")); - - if (n) - { - bool old_ins = m_isInside; - m_isInside = false; - wxObject *item = CreateResFromNode(n, m_notebook, NULL); - m_isInside = old_ins; - wxWindow *wnd = wxDynamicCast(item, wxWindow); - - if (wnd) - { - m_notebook->AddPage(wnd, GetText(wxT("label")), - GetBool(wxT("selected"))); - if ( HasParam(wxT("bitmap")) ) - { - m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); - m_bookImagesIdx.push_back( m_notebook->GetPageCount()-1 ); - } - else if ( HasParam(wxT("image")) ) - { - if ( m_notebook->GetImageList() ) - { - m_notebook->SetPageImage(m_notebook->GetPageCount()-1, - GetLong(wxT("image")) ); - } - else // image without image list? - { - ReportError(n, "image can only be used in conjunction " - "with imagelist"); - } - } - } - else - { - ReportError(n, "notebookpage child must be a window"); - } - return wnd; - } - else - { - ReportError("notebookpage must have a window child"); - return NULL; - } + return DoCreatePage(m_notebook); } else @@ -113,35 +65,14 @@ wxObject *wxNotebookXmlHandler::DoCreateResource() GetStyle(wxT("style")), GetName()); - wxImageList *imagelist = GetImageList(); - if ( imagelist ) - nb->AssignImageList(imagelist); - SetupWindow(nb); wxNotebook *old_par = m_notebook; m_notebook = nb; - bool old_ins = m_isInside; - m_isInside = true; - wxVector old_images = m_bookImages; - m_bookImages.clear(); - wxVector old_imageIdx = m_bookImagesIdx; - m_bookImagesIdx.clear(); - CreateChildren(m_notebook, true/*only this handler*/); - if ( !m_bookImages.empty() ) - { - m_notebook->SetImages(m_bookImages); - for ( size_t i = 0; i < m_bookImagesIdx.size(); ++i ) - { - m_notebook->SetPageImage( m_bookImagesIdx[i], i ); - } - } + DoCreatePages(m_notebook); - m_isInside = old_ins; m_notebook = old_par; - m_bookImages = old_images; - m_bookImagesIdx = old_imageIdx; return nb; } @@ -149,8 +80,8 @@ wxObject *wxNotebookXmlHandler::DoCreateResource() bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node) { - return ((!m_isInside && IsOfClass(node, wxT("wxNotebook"))) || - (m_isInside && IsOfClass(node, wxT("notebookpage")))); + return ((!IsInside() && IsOfClass(node, wxT("wxNotebook"))) || + (IsInside() && IsOfClass(node, wxT("notebookpage")))); } #endif // wxUSE_XRC && wxUSE_NOTEBOOK diff --git a/src/xrc/xh_propdlg.cpp b/src/xrc/xh_propdlg.cpp index cefaff8fbc..dd71e88662 100644 --- a/src/xrc/xh_propdlg.cpp +++ b/src/xrc/xh_propdlg.cpp @@ -28,9 +28,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxPropertySheetDialogXmlHandler, wxXmlResourceHandler); wxPropertySheetDialogXmlHandler::wxPropertySheetDialogXmlHandler() - :wxXmlResourceHandler(), - m_isInside(false), - m_dialog(NULL) + : m_dialog(NULL) { XRC_ADD_STYLE(wxSTAY_ON_TOP); XRC_ADD_STYLE(wxCAPTION); @@ -55,39 +53,7 @@ wxObject *wxPropertySheetDialogXmlHandler::DoCreateResource() { if (m_class == wxT("propertysheetpage")) { - wxXmlNode *n = GetParamNode(wxT("object")); - - if (!n) n = GetParamNode(wxT("object_ref")); - - if (n) - { - wxBookCtrlBase *bookctrl = m_dialog->GetBookCtrl(); - bool old_ins = m_isInside; - m_isInside = false; - wxObject *item = CreateResFromNode(n, bookctrl, NULL); - m_isInside = old_ins; - wxWindow *wnd = wxDynamicCast(item, wxWindow); - - if (wnd) - { - bookctrl->AddPage(wnd, GetText(wxT("label")), GetBool(wxT("selected"))); - if (HasParam(wxT("bitmap"))) - { - m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); - m_bookImagesIdx.push_back( bookctrl->GetPageCount()-1 ); - } - } - else - { - ReportError(n, "propertysheetpage child must be a window"); - } - return wnd; - } - else - { - ReportError("propertysheetpage must have a window child"); - return NULL; - } + return DoCreatePage(m_dialog->GetBookCtrl()); } else @@ -109,28 +75,10 @@ wxObject *wxPropertySheetDialogXmlHandler::DoCreateResource() wxPropertySheetDialog *old_par = m_dialog; m_dialog = dlg; - bool old_ins = m_isInside; - m_isInside = true; - wxVector old_images = m_bookImages; - m_bookImages.clear(); - wxVector old_imageIdx = m_bookImagesIdx; - m_bookImagesIdx.clear(); - CreateChildren(m_dialog, true/*only this handler*/); - wxBookCtrlBase *bookctrl = m_dialog->GetBookCtrl(); - if ( !m_bookImages.empty() ) - { - bookctrl->SetImages(m_bookImages); - for ( size_t i = 0; i < m_bookImagesIdx.size(); ++i ) - { - bookctrl->SetPageImage( m_bookImagesIdx[i], i ); - } - } + DoCreatePages(m_dialog->GetBookCtrl()); - m_isInside = old_ins; m_dialog = old_par; - m_bookImages = old_images; - m_bookImagesIdx = old_imageIdx; if (GetBool(wxT("centered"), false)) dlg->Centre(); wxString buttons = GetText(wxT("buttons")); @@ -152,8 +100,8 @@ wxObject *wxPropertySheetDialogXmlHandler::DoCreateResource() bool wxPropertySheetDialogXmlHandler::CanHandle(wxXmlNode *node) { - return ((!m_isInside && IsOfClass(node, wxT("wxPropertySheetDialog"))) || - (m_isInside && IsOfClass(node, wxT("propertysheetpage")))); + return ((!IsInside() && IsOfClass(node, wxT("wxPropertySheetDialog"))) || + (IsInside() && IsOfClass(node, wxT("propertysheetpage")))); } #endif // wxUSE_XRC && wxUSE_BOOKCTRL diff --git a/src/xrc/xh_toolbk.cpp b/src/xrc/xh_toolbk.cpp index d8ae013fca..381c102cac 100644 --- a/src/xrc/xh_toolbk.cpp +++ b/src/xrc/xh_toolbk.cpp @@ -28,9 +28,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxToolbookXmlHandler, wxXmlResourceHandler); wxToolbookXmlHandler::wxToolbookXmlHandler() - :wxXmlResourceHandler(), - m_isInside(false), - m_toolbook(NULL) + : m_toolbook(NULL) { XRC_ADD_STYLE(wxBK_DEFAULT); XRC_ADD_STYLE(wxBK_TOP); @@ -48,59 +46,7 @@ wxObject *wxToolbookXmlHandler::DoCreateResource() { if (m_class == wxT("toolbookpage")) { - wxXmlNode *n = GetParamNode(wxT("object")); - - if ( !n ) - n = GetParamNode(wxT("object_ref")); - - if (n) - { - bool old_ins = m_isInside; - m_isInside = false; - wxObject *item = CreateResFromNode(n, m_toolbook, NULL); - m_isInside = old_ins; - wxWindow *wnd = wxDynamicCast(item, wxWindow); - - if (wnd) - { - newPage currentPage; - currentPage.imgId = -1; - currentPage.bmpId = -1; - - if ( HasParam(wxT("bitmap")) ) - { - m_bookImages.push_back( GetBitmapBundle(wxT("bitmap"), wxART_OTHER) ); - currentPage.bmpId = m_bookImages.size() - 1; - } - else if ( HasParam(wxT("image")) ) - { - if ( m_toolbook->GetImageList() ) - { - currentPage.imgId = (int)GetLong(wxT("image")); - } - else // image without image list? - { - ReportError(n, "image can only be used in conjunction " - "with imagelist"); - } - } - - currentPage.wnd = wnd; - currentPage.label = GetText(wxT("label")); - currentPage.selected = GetBool(wxT("selected")); - m_bookPages.push_back(currentPage); - } - else - { - ReportError(n, "toolbookpage child must be a window"); - } - return wnd; - } - else - { - ReportError("toolbookpage must have a window child"); - return NULL; - } + return DoCreatePage(m_toolbook); } else @@ -113,40 +59,12 @@ wxObject *wxToolbookXmlHandler::DoCreateResource() GetStyle(wxT("style")), GetName() ); - wxImageList *imagelist = GetImageList(); - if ( imagelist ) - nb->AssignImageList(imagelist); - wxToolbook *old_par = m_toolbook; m_toolbook = nb; - bool old_ins = m_isInside; - m_isInside = true; - wxVector old_pages = m_bookPages; - m_bookPages.clear(); - wxVector old_images = m_bookImages; - m_bookImages.clear(); - CreateChildren(m_toolbook, true/*only this handler*/); - if ( !m_bookImages.empty() ) - { - m_toolbook->SetImages(m_bookImages); - } - for ( size_t i = 0; i < m_bookPages.size(); ++i ) - { - const newPage& currentPage = m_bookPages.at(i); - int imgId = currentPage.bmpId; - if ( imgId == -1 ) - { - imgId = currentPage.imgId; - } - m_toolbook->AddPage(currentPage.wnd, currentPage.label, - currentPage.selected, imgId ); - } + DoCreatePages(m_toolbook); - m_isInside = old_ins; m_toolbook = old_par; - m_bookPages = old_pages; - m_bookImages = old_images; return nb; } @@ -154,8 +72,8 @@ wxObject *wxToolbookXmlHandler::DoCreateResource() bool wxToolbookXmlHandler::CanHandle(wxXmlNode *node) { - return ((!m_isInside && IsOfClass(node, wxT("wxToolbook"))) || - (m_isInside && IsOfClass(node, wxT("toolbookpage")))); + return ((!IsInside() && IsOfClass(node, wxT("wxToolbook"))) || + (IsInside() && IsOfClass(node, wxT("toolbookpage")))); } #endif // wxUSE_XRC && wxUSE_TOOLBOOK