From 1c4293cb91327247ad69e6ec8d589bfaa299db28 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin <vadim@wxwidgets.org> Date: Fri, 12 Sep 2008 20:57:41 +0000 Subject: [PATCH] added wxPropertyGrid from Jaakko Salli (#9934) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 333 +- autoconf_inc.m4 | 132 +- build/bakefiles/common.bkl | 3 + build/bakefiles/config.bkl | 9 + build/bakefiles/files.bkl | 30 +- build/bakefiles/make_dist.mk | 11 +- build/bakefiles/monolithic.bkl | 2 +- build/bakefiles/multilib.bkl | 25 + build/bakefiles/wxpresets/presets/wx.bkl | 3 +- .../bakefiles/wxpresets/presets/wx_win32.bkl | 2 + build/bakefiles/wxwin.py | 4 +- build/msw/config.bcc | 5 + build/msw/config.gcc | 3 + build/msw/config.vc | 3 + build/msw/config.wat | 3 + build/msw/makefile.bcc | 286 +- build/msw/makefile.gcc | 266 +- build/msw/makefile.vc | 308 +- build/msw/makefile.wat | 229 +- build/msw/wx.dsw | 12 + build/msw/wx_core.dsp | 36 + build/msw/wx_propgrid.dsp | 606 ++ build/msw/wx_vc7.sln | 18 + build/msw/wx_vc7_core.vcproj | 18 + build/msw/wx_vc7_propgrid.vcproj | 883 +++ build/msw/wx_vc8.sln | 18 + build/msw/wx_vc8_core.vcproj | 27 + build/msw/wx_vc8_propgrid.vcproj | 1108 +++ configure | 95 +- configure.in | 11 + distrib/msw/generic.rsp | 3 + distrib/msw/makefile.rsp | 1 + distrib/msw/vc.rsp | 2 + distrib/scripts/manifests/dmc.rsp | 2 + distrib/scripts/manifests/generic.rsp | 3 + distrib/scripts/manifests/generic_samples.rsp | 11 + distrib/scripts/manifests/makefile.rsp | 1 + distrib/scripts/manifests/vc.rsp | 2 + docs/changes.txt | 34 +- docs/doxygen/groups/class_propgrid.h | 20 + docs/doxygen/mainpages/cat_classes.h | 7 + docs/doxygen/mainpages/const_cpp.h | 1 + docs/doxygen/mainpages/const_wxusedef.h | 1 + docs/doxygen/mainpages/libs.h | 9 + docs/doxygen/mainpages/samples.h | 16 + docs/doxygen/mainpages/topics.h | 1 + docs/doxygen/overviews/propgrid.h | 1101 +++ docs/msw/install.txt | 4 +- include/wx/dlimpexp.h | 8 + include/wx/motif/setup0.h | 14 +- include/wx/msw/setup0.h | 14 +- include/wx/msw/wince/setup.h | 14 +- include/wx/os2/setup0.h | 14 +- include/wx/osx/setup0.h | 16 +- include/wx/palmos/setup0.h | 14 +- include/wx/propgrid/advprops.h | 510 ++ include/wx/propgrid/editors.h | 651 ++ include/wx/propgrid/manager.h | 792 +++ include/wx/propgrid/property.h | 2455 +++++++ include/wx/propgrid/propgrid.h | 2222 ++++++ include/wx/propgrid/propgriddefs.h | 797 +++ include/wx/propgrid/propgridiface.h | 1542 ++++ include/wx/propgrid/propgridpagestate.h | 692 ++ include/wx/propgrid/props.h | 1290 ++++ include/wx/setup_inc.h | 7 + include/wx/univ/setup0.h | 14 +- interface/wx/propgrid/editors.h | 278 + interface/wx/propgrid/manager.h | 475 ++ interface/wx/propgrid/property.h | 1558 ++++ interface/wx/propgrid/propgrid.h | 839 +++ interface/wx/propgrid/propgridiface.h | 992 +++ interface/wx/propgrid/propgridpagestate.h | 170 + misc/scripts/makemswtags.bat | 2 +- misc/scripts/makeunixtags.sh | 2 + samples/propgrid/Makefile.in | 217 + samples/propgrid/makefile.bcc | 261 + samples/propgrid/makefile.gcc | 261 + samples/propgrid/makefile.unx | 122 + samples/propgrid/makefile.vc | 337 + samples/propgrid/makefile.wat | 288 + samples/propgrid/propgrid.bkl | 21 + samples/propgrid/propgrid.cpp | 3137 ++++++++ samples/propgrid/propgrid.dsp | 276 + samples/propgrid/propgrid.h | 256 + samples/propgrid/propgrid_minimal.cpp | 107 + samples/propgrid/propgrid_vc7.vcproj | 649 ++ samples/propgrid/propgrid_vc8.vcproj | 813 +++ samples/propgrid/sampleprops.cpp | 613 ++ samples/propgrid/sampleprops.h | 125 + samples/propgrid/tests.cpp | 1334 ++++ setup.h.in | 2 + setup.h_vms | 2 + src/propgrid/advprops.cpp | 1993 ++++++ src/propgrid/editors.cpp | 2149 ++++++ src/propgrid/manager.cpp | 1692 +++++ src/propgrid/property.cpp | 2180 ++++++ src/propgrid/propgrid.cpp | 6324 +++++++++++++++++ src/propgrid/propgridiface.cpp | 1183 +++ src/propgrid/propgridpagestate.cpp | 1871 +++++ src/propgrid/props.cpp | 2602 +++++++ 100 files changed, 49642 insertions(+), 263 deletions(-) create mode 100644 build/msw/wx_propgrid.dsp create mode 100644 build/msw/wx_vc7_propgrid.vcproj create mode 100644 build/msw/wx_vc8_propgrid.vcproj create mode 100644 docs/doxygen/groups/class_propgrid.h create mode 100644 docs/doxygen/overviews/propgrid.h create mode 100644 include/wx/propgrid/advprops.h create mode 100644 include/wx/propgrid/editors.h create mode 100644 include/wx/propgrid/manager.h create mode 100644 include/wx/propgrid/property.h create mode 100644 include/wx/propgrid/propgrid.h create mode 100644 include/wx/propgrid/propgriddefs.h create mode 100644 include/wx/propgrid/propgridiface.h create mode 100644 include/wx/propgrid/propgridpagestate.h create mode 100644 include/wx/propgrid/props.h create mode 100644 interface/wx/propgrid/editors.h create mode 100644 interface/wx/propgrid/manager.h create mode 100644 interface/wx/propgrid/property.h create mode 100644 interface/wx/propgrid/propgrid.h create mode 100644 interface/wx/propgrid/propgridiface.h create mode 100644 interface/wx/propgrid/propgridpagestate.h create mode 100644 samples/propgrid/Makefile.in create mode 100644 samples/propgrid/makefile.bcc create mode 100644 samples/propgrid/makefile.gcc create mode 100644 samples/propgrid/makefile.unx create mode 100644 samples/propgrid/makefile.vc create mode 100644 samples/propgrid/makefile.wat create mode 100644 samples/propgrid/propgrid.bkl create mode 100644 samples/propgrid/propgrid.cpp create mode 100644 samples/propgrid/propgrid.dsp create mode 100644 samples/propgrid/propgrid.h create mode 100644 samples/propgrid/propgrid_minimal.cpp create mode 100644 samples/propgrid/propgrid_vc7.vcproj create mode 100644 samples/propgrid/propgrid_vc8.vcproj create mode 100644 samples/propgrid/sampleprops.cpp create mode 100644 samples/propgrid/sampleprops.h create mode 100644 samples/propgrid/tests.cpp create mode 100644 src/propgrid/advprops.cpp create mode 100644 src/propgrid/editors.cpp create mode 100644 src/propgrid/manager.cpp create mode 100644 src/propgrid/property.cpp create mode 100644 src/propgrid/propgrid.cpp create mode 100644 src/propgrid/propgridiface.cpp create mode 100644 src/propgrid/propgridpagestate.cpp create mode 100644 src/propgrid/props.cpp diff --git a/Makefile.in b/Makefile.in index 775be9537a..c091115e48 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1634,6 +1634,38 @@ AUILIB_OBJECTS = \ auilib_auibar.o \ auilib_tabmdi.o AUILIB_ODEP = $(___pch_wxprec_auilib_wx_wxprec_h_gch___depname) +PROPGRIDDLL_CXXFLAGS = $(__propgriddll_PCH_INC) -D__WX$(TOOLKIT)__ \ + $(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) -DWXBUILDING $(__INC_TIFF_BUILD_p) $(__INC_TIFF_p) \ + $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) $(__INC_REGEX_p) \ + $(__INC_EXPAT_p) -DWXUSINGDLL -DWXMAKINGDLL_PROPGRID $(PIC_FLAG) \ + $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDDLL_OBJECTS = \ + $(__propgriddll___win32rc) \ + propgriddll_advprops.o \ + propgriddll_editors.o \ + propgriddll_manager.o \ + propgriddll_property.o \ + propgriddll_propgrid.o \ + propgriddll_propgridiface.o \ + propgriddll_propgridpagestate.o \ + propgriddll_props.o +PROPGRIDDLL_ODEP = $(___pch_wxprec_propgriddll_wx_wxprec_h_gch___depname) +PROPGRIDLIB_CXXFLAGS = $(__propgridlib_PCH_INC) -D__WX$(TOOLKIT)__ \ + $(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) -DWXBUILDING $(__INC_TIFF_BUILD_p) $(__INC_TIFF_p) \ + $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) $(__INC_REGEX_p) \ + $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDLIB_OBJECTS = \ + propgridlib_advprops.o \ + propgridlib_editors.o \ + propgridlib_manager.o \ + propgridlib_property.o \ + propgridlib_propgrid.o \ + propgridlib_propgridiface.o \ + propgridlib_propgridpagestate.o \ + propgridlib_props.o +PROPGRIDLIB_ODEP = $(___pch_wxprec_propgridlib_wx_wxprec_h_gch___depname) RICHTEXTDLL_CXXFLAGS = $(__richtextdll_PCH_INC) -D__WX$(TOOLKIT)__ \ $(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ $(__THREAD_DEFINE_p) -DWXBUILDING $(__INC_TIFF_BUILD_p) $(__INC_TIFF_p) \ @@ -3725,6 +3757,15 @@ COND_USE_GUI_1_ALL_GUI_HEADERS = \ wx/aui/auibar.h \ wx/aui/tabmdi.h \ wx/aui/aui.h \ + wx/propgrid/advprops.h \ + wx/propgrid/editors.h \ + wx/propgrid/manager.h \ + wx/propgrid/property.h \ + wx/propgrid/propgrid.h \ + wx/propgrid/propgriddefs.h \ + wx/propgrid/propgridiface.h \ + wx/propgrid/propgridpagestate.h \ + wx/propgrid/props.h \ wx/richtext/richtextctrl.h \ wx/richtext/richtextbuffer.h \ wx/richtext/richtexthtml.h \ @@ -3974,6 +4015,14 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS = \ monodll_auibook.o \ monodll_auibar.o \ monodll_tabmdi.o \ + monodll_advprops.o \ + monodll_editors.o \ + monodll_manager.o \ + monodll_property.o \ + monodll_propgrid.o \ + monodll_propgridiface.o \ + monodll_propgridpagestate.o \ + monodll_props.o \ monodll_richtextctrl.o \ monodll_richtextbuffer.o \ monodll_richtextstyles.o \ @@ -5770,6 +5819,14 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 = \ monolib_auibook.o \ monolib_auibar.o \ monolib_tabmdi.o \ + monolib_advprops.o \ + monolib_editors.o \ + monolib_manager.o \ + monolib_property.o \ + monolib_propgrid.o \ + monolib_propgridiface.o \ + monolib_propgridpagestate.o \ + monolib_props.o \ monolib_richtextctrl.o \ monolib_richtextbuffer.o \ monolib_richtextstyles.o \ @@ -11362,6 +11419,73 @@ COND_MONOLITHIC_0_SHARED_0_USE_AUI_1___auilib___depname = \ @COND_USE_PCH_1@ = .pch/wxprec_auilib/wx/wxprec.h.gch @COND_SHARED_1@____wxaui_namedll_DEP = $(__auidll___depname) @COND_SHARED_0@____wxaui_namelib_DEP = $(__auilib___depname) +COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1___propgriddll___depname = \ + $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@__propgriddll___depname = $(COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1___propgriddll___depname) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@__install_propgriddll___depname \ +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ = install_propgriddll +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@__uninstall_propgriddll___depname \ +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ = uninstall_propgriddll +COND_PLATFORM_MACOSX_1___propgriddll___macinstnamecmd = -install_name \ + $(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) +@COND_PLATFORM_MACOSX_1@__propgriddll___macinstnamecmd = $(COND_PLATFORM_MACOSX_1___propgriddll___macinstnamecmd) +COND_PLATFORM_OS2_1___propgriddll___importlib = -import \ + $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) +@COND_PLATFORM_OS2_1@__propgriddll___importlib = $(COND_PLATFORM_OS2_1___propgriddll___importlib) +COND_WINDOWS_IMPLIB_1___propgriddll___importlib = \ + -Wl,--out-implib=$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) +@COND_WINDOWS_IMPLIB_1@__propgriddll___importlib = $(COND_WINDOWS_IMPLIB_1___propgriddll___importlib) +@COND_GCC_PCH_1@__propgriddll_PCH_INC = -I.pch/wxprec_propgriddll +@COND_ICC_PCH_1@__propgriddll_PCH_INC = -use_pch \ +@COND_ICC_PCH_1@ .pch/wxprec_propgriddll/wx/wxprec.h.gch +@COND_USE_PCH_1@___pch_wxprec_propgriddll_wx_wxprec_h_gch___depname \ +@COND_USE_PCH_1@ = .pch/wxprec_propgriddll/wx/wxprec.h.gch +COND_USE_SOVERLINUX_1___propgriddll___soname_flags = \ + $(SONAME_FLAG)$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) +@COND_USE_SOVERLINUX_1@__propgriddll___soname_flags = $(COND_USE_SOVERLINUX_1___propgriddll___soname_flags) +COND_USE_SOVERSOLARIS_1___propgriddll___soname_flags = \ + $(SONAME_FLAG)$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) +@COND_USE_SOVERSOLARIS_1@__propgriddll___soname_flags = $(COND_USE_SOVERSOLARIS_1___propgriddll___soname_flags) +COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_cmd = (cd $(LIBDIRNAME)/; rm \ + -f \ + $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2); \ + $(LN_S) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2); \ + $(LN_S) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) \ + $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)) +@COND_USE_SOSYMLINKS_1@__propgriddll___so_symlinks_cmd = $(COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_cmd) +COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_inst_cmd = rm -f \ + $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2); \ + $(LN_S) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2); \ + $(LN_S) \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) \ + $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) +@COND_USE_SOSYMLINKS_1@__propgriddll___so_symlinks_inst_cmd = $(COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_inst_cmd) +COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_uninst_cmd = rm -f \ + $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) \ + $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) +@COND_USE_SOSYMLINKS_1@__propgriddll___so_symlinks_uninst_cmd = $(COND_USE_SOSYMLINKS_1___propgriddll___so_symlinks_uninst_cmd) +@COND_PLATFORM_WIN32_1@__propgriddll___win32rc = propgriddll_version_rc.o +COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1___propgridlib___depname = \ + $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@__propgridlib___depname = $(COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1___propgridlib___depname) +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@__install_propgridlib___depname \ +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ = install_propgridlib +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@__uninstall_propgridlib___depname \ +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ = uninstall_propgridlib +@COND_GCC_PCH_1@__propgridlib_PCH_INC = -I.pch/wxprec_propgridlib +@COND_ICC_PCH_1@__propgridlib_PCH_INC = -use_pch \ +@COND_ICC_PCH_1@ .pch/wxprec_propgridlib/wx/wxprec.h.gch +@COND_USE_PCH_1@___pch_wxprec_propgridlib_wx_wxprec_h_gch___depname \ +@COND_USE_PCH_1@ = .pch/wxprec_propgridlib/wx/wxprec.h.gch +@COND_SHARED_1@____wxpropgrid_namedll_DEP = $(__propgriddll___depname) +@COND_SHARED_0@____wxpropgrid_namelib_DEP = $(__propgridlib___depname) COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1___richtextdll___depname = \ $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) @COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1@__richtextdll___depname = $(COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1___richtextdll___depname) @@ -12248,10 +12372,10 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ = \ -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html-$(WX_RELEASE)$(HOST_SUFFIX) @COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1@__htmldll_library_link_LIBR_0 = $(COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0) -@COND_WXUNIV_1@__WXUNIV_DEFINE_p_54 = --define __WXUNIVERSAL__ -@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_53 = --define wxNO_EXCEPTIONS -@COND_USE_RTTI_0@__RTTI_DEFINE_p_53 = --define wxNO_RTTI -@COND_USE_THREADS_0@__THREAD_DEFINE_p_53 = --define wxNO_THREADS +@COND_WXUNIV_1@__WXUNIV_DEFINE_p_58 = --define __WXUNIVERSAL__ +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_57 = --define wxNO_EXCEPTIONS +@COND_USE_RTTI_0@__RTTI_DEFINE_p_57 = --define wxNO_RTTI +@COND_USE_THREADS_0@__THREAD_DEFINE_p_57 = --define wxNO_THREADS @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@dll___targetsuf2 = .$(SO_SUFFIX).0 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@dll___targetsuf2 = .0.$(SO_SUFFIX) @COND_USE_SOVERSION_0@dll___targetsuf2 = .$(SO_SUFFIX) @@ -12264,20 +12388,20 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll_library_link_LIBR_0 \ @COND_USE_SOVERSION_0@dll___targetsuf3 = .$(SO_SUFFIX) @COND_TOOLKIT_MSW@__RCDEFDIR_p = --include-dir \ @COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME) -@COND_WXUSE_LIBTIFF_BUILTIN@__INC_TIFF_BUILD_p_54 \ +@COND_WXUSE_LIBTIFF_BUILTIN@__INC_TIFF_BUILD_p_58 \ @COND_WXUSE_LIBTIFF_BUILTIN@ = --include-dir \ @COND_WXUSE_LIBTIFF_BUILTIN@ $(wx_top_builddir)/src/tiff/libtiff -@COND_WXUSE_LIBTIFF_BUILTIN@__INC_TIFF_p_54 = \ +@COND_WXUSE_LIBTIFF_BUILTIN@__INC_TIFF_p_58 = \ @COND_WXUSE_LIBTIFF_BUILTIN@ --include-dir $(top_srcdir)/src/tiff/libtiff -@COND_WXUSE_LIBJPEG_BUILTIN@__INC_JPEG_p_54 = \ +@COND_WXUSE_LIBJPEG_BUILTIN@__INC_JPEG_p_58 = \ @COND_WXUSE_LIBJPEG_BUILTIN@ --include-dir $(top_srcdir)/src/jpeg -@COND_WXUSE_LIBPNG_BUILTIN@__INC_PNG_p_53 = \ +@COND_WXUSE_LIBPNG_BUILTIN@__INC_PNG_p_57 = \ @COND_WXUSE_LIBPNG_BUILTIN@ --include-dir $(top_srcdir)/src/png -@COND_WXUSE_ZLIB_BUILTIN@__INC_ZLIB_p_55 = \ +@COND_WXUSE_ZLIB_BUILTIN@__INC_ZLIB_p_59 = \ @COND_WXUSE_ZLIB_BUILTIN@ --include-dir $(top_srcdir)/src/zlib -@COND_WXUSE_REGEX_BUILTIN@__INC_REGEX_p_53 = \ +@COND_WXUSE_REGEX_BUILTIN@__INC_REGEX_p_57 = \ @COND_WXUSE_REGEX_BUILTIN@ --include-dir $(top_srcdir)/src/regex -@COND_WXUSE_EXPAT_BUILTIN@__INC_EXPAT_p_53 = \ +@COND_WXUSE_EXPAT_BUILTIN@__INC_EXPAT_p_57 = \ @COND_WXUSE_EXPAT_BUILTIN@ --include-dir $(top_srcdir)/src/expat/lib @COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \ @COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \ @@ -12310,9 +12434,9 @@ COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \ ### Targets: ### -all: $(__wxregex___depname) $(__wxzlib___depname) $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(__wxexpat___depname) $(__wxscintilla___depname) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) $(__sound_sdl___depname) $(__wxrc___depname) $(__cocoa_res___depname) +all: $(__wxregex___depname) $(__wxzlib___depname) $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(__wxexpat___depname) $(__wxscintilla___depname) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__propgriddll___depname) $(__propgridlib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) $(__sound_sdl___depname) $(__wxrc___depname) $(__cocoa_res___depname) -install: all $(__install_wxregex___depname) $(__install_wxzlib___depname) $(__install_wxpng___depname) $(__install_wxjpeg___depname) $(__install_wxtiff___depname) $(__install_wxexpat___depname) $(__install_wxscintilla___depname) $(__install_monodll___depname) $(__install_monolib___depname) $(__install_basedll___depname) $(__install_baselib___depname) $(__install_netdll___depname) $(__install_netlib___depname) $(__install_coredll___depname) $(__install_corelib___depname) $(__install_advdll___depname) $(__install_advlib___depname) $(__install_mediadll___depname) $(__install_medialib___depname) $(__install_htmldll___depname) $(__install_htmllib___depname) $(__install_qadll___depname) $(__install_qalib___depname) $(__install_xmldll___depname) $(__install_xmllib___depname) $(__install_xrcdll___depname) $(__install_xrclib___depname) $(__install_auidll___depname) $(__install_auilib___depname) $(__install_richtextdll___depname) $(__install_richtextlib___depname) $(__install_stcdll___depname) $(__install_stclib___depname) $(__install_gldll___depname) $(__install_gllib___depname) $(__install_sound_sdl___depname) $(__install_wxrc___depname) install-wxconfig locale_install locale_msw_install $(__cocoa_res_install___depname) +install: all $(__install_wxregex___depname) $(__install_wxzlib___depname) $(__install_wxpng___depname) $(__install_wxjpeg___depname) $(__install_wxtiff___depname) $(__install_wxexpat___depname) $(__install_wxscintilla___depname) $(__install_monodll___depname) $(__install_monolib___depname) $(__install_basedll___depname) $(__install_baselib___depname) $(__install_netdll___depname) $(__install_netlib___depname) $(__install_coredll___depname) $(__install_corelib___depname) $(__install_advdll___depname) $(__install_advlib___depname) $(__install_mediadll___depname) $(__install_medialib___depname) $(__install_htmldll___depname) $(__install_htmllib___depname) $(__install_qadll___depname) $(__install_qalib___depname) $(__install_xmldll___depname) $(__install_xmllib___depname) $(__install_xrcdll___depname) $(__install_xrclib___depname) $(__install_auidll___depname) $(__install_auilib___depname) $(__install_propgriddll___depname) $(__install_propgridlib___depname) $(__install_richtextdll___depname) $(__install_richtextlib___depname) $(__install_stcdll___depname) $(__install_stclib___depname) $(__install_gldll___depname) $(__install_gllib___depname) $(__install_sound_sdl___depname) $(__install_wxrc___depname) install-wxconfig locale_install locale_msw_install $(__cocoa_res_install___depname) $(INSTALL_DIR) $(DESTDIR)$(datadir)/aclocal (cd $(srcdir) ; $(INSTALL_DATA) wxwin.m4 $(DESTDIR)$(datadir)/aclocal) $(INSTALL_DIR) $(DESTDIR)$(datadir)/bakefile/presets @@ -12347,7 +12471,7 @@ install: all $(__install_wxregex___depname) $(__install_wxzlib___depname) $(__in @echo " ------------------------------------------------------" @echo " " -uninstall: $(__uninstall_wxregex___depname) $(__uninstall_wxzlib___depname) $(__uninstall_wxpng___depname) $(__uninstall_wxjpeg___depname) $(__uninstall_wxtiff___depname) $(__uninstall_wxexpat___depname) $(__uninstall_wxscintilla___depname) $(__uninstall_monodll___depname) $(__uninstall_monolib___depname) $(__uninstall_basedll___depname) $(__uninstall_baselib___depname) $(__uninstall_netdll___depname) $(__uninstall_netlib___depname) $(__uninstall_coredll___depname) $(__uninstall_corelib___depname) $(__uninstall_advdll___depname) $(__uninstall_advlib___depname) $(__uninstall_mediadll___depname) $(__uninstall_medialib___depname) $(__uninstall_htmldll___depname) $(__uninstall_htmllib___depname) $(__uninstall_qadll___depname) $(__uninstall_qalib___depname) $(__uninstall_xmldll___depname) $(__uninstall_xmllib___depname) $(__uninstall_xrcdll___depname) $(__uninstall_xrclib___depname) $(__uninstall_auidll___depname) $(__uninstall_auilib___depname) $(__uninstall_richtextdll___depname) $(__uninstall_richtextlib___depname) $(__uninstall_stcdll___depname) $(__uninstall_stclib___depname) $(__uninstall_gldll___depname) $(__uninstall_gllib___depname) $(__uninstall_sound_sdl___depname) locale_uninstall locale_msw_uninstall +uninstall: $(__uninstall_wxregex___depname) $(__uninstall_wxzlib___depname) $(__uninstall_wxpng___depname) $(__uninstall_wxjpeg___depname) $(__uninstall_wxtiff___depname) $(__uninstall_wxexpat___depname) $(__uninstall_wxscintilla___depname) $(__uninstall_monodll___depname) $(__uninstall_monolib___depname) $(__uninstall_basedll___depname) $(__uninstall_baselib___depname) $(__uninstall_netdll___depname) $(__uninstall_netlib___depname) $(__uninstall_coredll___depname) $(__uninstall_corelib___depname) $(__uninstall_advdll___depname) $(__uninstall_advlib___depname) $(__uninstall_mediadll___depname) $(__uninstall_medialib___depname) $(__uninstall_htmldll___depname) $(__uninstall_htmllib___depname) $(__uninstall_qadll___depname) $(__uninstall_qalib___depname) $(__uninstall_xmldll___depname) $(__uninstall_xmllib___depname) $(__uninstall_xrcdll___depname) $(__uninstall_xrclib___depname) $(__uninstall_auidll___depname) $(__uninstall_auilib___depname) $(__uninstall_propgriddll___depname) $(__uninstall_propgridlib___depname) $(__uninstall_richtextdll___depname) $(__uninstall_richtextlib___depname) $(__uninstall_stcdll___depname) $(__uninstall_stclib___depname) $(__uninstall_gldll___depname) $(__uninstall_gllib___depname) $(__uninstall_sound_sdl___depname) locale_uninstall locale_msw_uninstall (cd $(DESTDIR)$(datadir)/aclocal ; rm -f wxwin.m4) (cd $(DESTDIR)$(datadir)/bakefile/presets ; rm -f wx.bkl wx_unix.bkl wx_win32.bkl) for f in setup.h $(RCDEFS_H); do \ @@ -12369,6 +12493,7 @@ install-strip: install $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) + $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) @@ -12428,6 +12553,10 @@ clean: $(__clean_wxrc___depname) rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) + rm -f $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) + rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) + rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) + rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) rm -f $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf2) @@ -12926,6 +13055,42 @@ distclean: clean @COND_MONOLITHIC_0_USE_AUI_1@wxaui: $(____wxaui_namedll_DEP) $(____wxaui_namelib_DEP) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@$(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3): $(PROPGRIDDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla___depname) $(__wxexpat___depname) $(__wxzlib___depname) $(__wxregex___depname) $(__propgriddll___win32rc) $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ $(SHARED_LD_CXX) $@ $(PROPGRIDDLL_OBJECTS) -L$(LIBDIRNAME) -L$(LIBDIRNAME) -L$(LIBDIRNAME) $(LDFLAGS) -L$(LIBDIRNAME) $(__propgriddll___macinstnamecmd) $(__propgriddll___importlib) $(__propgriddll___soname_flags) $(WXMACVERSION_CMD) $(LIBS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv-$(WX_RELEASE)$(HOST_SUFFIX) -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX) -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ $(__propgriddll___so_symlinks_cmd) + +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@install_propgriddll: +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ $(INSTALL_DIR) $(DESTDIR)$(libdir) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(DESTDIR)$(libdir) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ $(INSTALL_PROGRAM) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) $(DESTDIR)$(libdir) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ (cd $(DESTDIR)$(libdir) ; $(__propgriddll___so_symlinks_inst_cmd)) + +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@uninstall_propgriddll: +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3) +@COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1@ (cd $(DESTDIR)$(libdir) ; $(__propgriddll___so_symlinks_uninst_cmd)) + +@COND_USE_PCH_1@.pch/wxprec_propgriddll/wx/wxprec.h.gch: +@COND_USE_PCH_1@ $(BK_MAKE_PCH) .pch/wxprec_propgriddll/wx/wxprec.h.gch wx/wxprec.h $(CXX) $(PROPGRIDDLL_CXXFLAGS) + +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT): $(PROPGRIDLIB_OBJECTS) +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ rm -f $@ +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ $(AR) $(AROPTIONS) $@ $(PROPGRIDLIB_OBJECTS) +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ $(RANLIB) $@ + +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@install_propgridlib: +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ $(INSTALL_DIR) $(DESTDIR)$(libdir) +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) $(DESTDIR)$(libdir) + +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@uninstall_propgridlib: +@COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) + +@COND_USE_PCH_1@.pch/wxprec_propgridlib/wx/wxprec.h.gch: +@COND_USE_PCH_1@ $(BK_MAKE_PCH) .pch/wxprec_propgridlib/wx/wxprec.h.gch wx/wxprec.h $(CXX) $(PROPGRIDLIB_CXXFLAGS) + +@COND_MONOLITHIC_0_USE_PROPGRID_1@wxpropgrid: $(____wxpropgrid_namedll_DEP) $(____wxpropgrid_namelib_DEP) + @COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1@$(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(dll___targetsuf3): $(RICHTEXTDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla___depname) $(__wxexpat___depname) $(__wxzlib___depname) $(__wxregex___depname) $(__richtextdll___win32rc) $(__advdll___depname) $(__htmldll_library_link_DEP) $(__xmldll___depname) $(__coredll___depname) $(__basedll___depname) @COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1@ $(SHARED_LD_CXX) $@ $(RICHTEXTDLL_OBJECTS) -L$(LIBDIRNAME) -L$(LIBDIRNAME) -L$(LIBDIRNAME) $(__htmldll_library_link_LIBR) -L$(LIBDIRNAME) $(LDFLAGS) -L$(LIBDIRNAME) $(__richtextdll___macinstnamecmd) $(__richtextdll___importlib) $(__richtextdll___soname_flags) $(WXMACVERSION_CMD) $(LIBS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv-$(WX_RELEASE)$(HOST_SUFFIX) $(__htmldll_library_link_LIBR_0) -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml-$(WX_RELEASE)$(HOST_SUFFIX) -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX) -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) @COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1@ @@ -14538,6 +14703,30 @@ monodll_auibar.o: $(srcdir)/src/aui/auibar.cpp $(MONODLL_ODEP) monodll_tabmdi.o: $(srcdir)/src/aui/tabmdi.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/aui/tabmdi.cpp +monodll_advprops.o: $(srcdir)/src/propgrid/advprops.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/advprops.cpp + +monodll_editors.o: $(srcdir)/src/propgrid/editors.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/editors.cpp + +monodll_manager.o: $(srcdir)/src/propgrid/manager.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/manager.cpp + +monodll_property.o: $(srcdir)/src/propgrid/property.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/property.cpp + +monodll_propgrid.o: $(srcdir)/src/propgrid/propgrid.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/propgrid.cpp + +monodll_propgridiface.o: $(srcdir)/src/propgrid/propgridiface.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/propgridiface.cpp + +monodll_propgridpagestate.o: $(srcdir)/src/propgrid/propgridpagestate.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/propgridpagestate.cpp + +monodll_props.o: $(srcdir)/src/propgrid/props.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/propgrid/props.cpp + monodll_richtextctrl.o: $(srcdir)/src/richtext/richtextctrl.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/richtext/richtextctrl.cpp @@ -18391,7 +18580,7 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/html/chm.cpp monodll_version_rc.o: $(srcdir)/src/msw/version.rc $(MONODLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS monolib_appbase.o: $(srcdir)/src/common/appbase.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/appbase.cpp @@ -19182,6 +19371,30 @@ monolib_auibar.o: $(srcdir)/src/aui/auibar.cpp $(MONOLIB_ODEP) monolib_tabmdi.o: $(srcdir)/src/aui/tabmdi.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/aui/tabmdi.cpp +monolib_advprops.o: $(srcdir)/src/propgrid/advprops.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/advprops.cpp + +monolib_editors.o: $(srcdir)/src/propgrid/editors.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/editors.cpp + +monolib_manager.o: $(srcdir)/src/propgrid/manager.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/manager.cpp + +monolib_property.o: $(srcdir)/src/propgrid/property.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/property.cpp + +monolib_propgrid.o: $(srcdir)/src/propgrid/propgrid.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgrid.cpp + +monolib_propgridiface.o: $(srcdir)/src/propgrid/propgridiface.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgridiface.cpp + +monolib_propgridpagestate.o: $(srcdir)/src/propgrid/propgridpagestate.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgridpagestate.cpp + +monolib_props.o: $(srcdir)/src/propgrid/props.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/propgrid/props.cpp + monolib_richtextctrl.o: $(srcdir)/src/richtext/richtextctrl.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/richtext/richtextctrl.cpp @@ -23035,7 +23248,7 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/html/chm.cpp basedll_version_rc.o: $(srcdir)/src/msw/version.rc $(BASEDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1 + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1 basedll_appbase.o: $(srcdir)/src/common/appbase.cpp $(BASEDLL_ODEP) $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/appbase.cpp @@ -23968,7 +24181,7 @@ baselib_uma.o: $(srcdir)/src/osx/carbon/uma.cpp $(BASELIB_ODEP) @COND_PLATFORM_OS2_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/os2/utilsexc.cpp netdll_version_rc.o: $(srcdir)/src/msw/version.rc $(NETDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_NET + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_NET netdll_fs_inet.o: $(srcdir)/src/common/fs_inet.cpp $(NETDLL_ODEP) $(CXXC) -c -o $@ $(NETDLL_CXXFLAGS) $(srcdir)/src/common/fs_inet.cpp @@ -24073,7 +24286,7 @@ netlib_net.o: $(srcdir)/src/msw/wince/net.cpp $(NETLIB_ODEP) @COND_PLATFORM_WIN32_1@ $(CXXC) -c -o $@ $(NETLIB_CXXFLAGS) $(srcdir)/src/msw/gsocket.cpp coredll_version_rc.o: $(srcdir)/src/msw/version.rc $(COREDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_CORE --define wxUSE_BASE=0 + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_CORE --define wxUSE_BASE=0 coredll_event.o: $(srcdir)/src/common/event.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/event.cpp @@ -31066,7 +31279,7 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/vscroll.cpp advdll_version_rc.o: $(srcdir)/src/msw/version.rc $(ADVDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_ADV + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_ADV advdll_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVDLL_ODEP) $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp @@ -31675,7 +31888,7 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP) @COND_TOOLKIT_WINCE_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp mediadll_version_rc.o: $(srcdir)/src/msw/version.rc $(MEDIADLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_MEDIA + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_MEDIA mediadll_mediactrlcmn.o: $(srcdir)/src/common/mediactrlcmn.cpp $(MEDIADLL_ODEP) $(CXXC) -c -o $@ $(MEDIADLL_CXXFLAGS) $(srcdir)/src/common/mediactrlcmn.cpp @@ -31762,7 +31975,7 @@ medialib_mediactrlcmn.o: $(srcdir)/src/common/mediactrlcmn.cpp $(MEDIALIB_ODEP) @COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl.cpp htmldll_version_rc.o: $(srcdir)/src/msw/version.rc $(HTMLDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_HTML + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_HTML htmldll_helpbest.o: $(srcdir)/src/msw/helpbest.cpp $(HTMLDLL_ODEP) $(CXXC) -c -o $@ $(HTMLDLL_CXXFLAGS) $(srcdir)/src/msw/helpbest.cpp @@ -31921,7 +32134,7 @@ htmllib_htmllbox.o: $(srcdir)/src/generic/htmllbox.cpp $(HTMLLIB_ODEP) @COND_PLATFORM_MACOSX_1@ $(CXXC) -c -o $@ $(HTMLLIB_CXXFLAGS) $(srcdir)/src/html/chm.cpp qadll_version_rc.o: $(srcdir)/src/msw/version.rc $(QADLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_QA + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_QA qadll_debugrpt.o: $(srcdir)/src/common/debugrpt.cpp $(QADLL_ODEP) $(CXXC) -c -o $@ $(QADLL_CXXFLAGS) $(srcdir)/src/common/debugrpt.cpp @@ -31936,7 +32149,7 @@ qalib_dbgrptg.o: $(srcdir)/src/generic/dbgrptg.cpp $(QALIB_ODEP) $(CXXC) -c -o $@ $(QALIB_CXXFLAGS) $(srcdir)/src/generic/dbgrptg.cpp xmldll_version_rc.o: $(srcdir)/src/msw/version.rc $(XMLDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_XML + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIX)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_XML xmldll_xml.o: $(srcdir)/src/xml/xml.cpp $(XMLDLL_ODEP) $(CXXC) -c -o $@ $(XMLDLL_CXXFLAGS) $(srcdir)/src/xml/xml.cpp @@ -31951,7 +32164,7 @@ xmllib_xtixml.o: $(srcdir)/src/common/xtixml.cpp $(XMLLIB_ODEP) $(CXXC) -c -o $@ $(XMLLIB_CXXFLAGS) $(srcdir)/src/common/xtixml.cpp xrcdll_version_rc.o: $(srcdir)/src/msw/version.rc $(XRCDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_XRC + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_XRC xrcdll_xh_animatctrl.o: $(srcdir)/src/xrc/xh_animatctrl.cpp $(XRCDLL_ODEP) $(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_animatctrl.cpp @@ -32302,7 +32515,7 @@ xrclib_xmlrsall.o: $(srcdir)/src/xrc/xmlrsall.cpp $(XRCLIB_ODEP) $(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xmlrsall.cpp auidll_version_rc.o: $(srcdir)/src/msw/version.rc $(AUIDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_AUI + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_AUI auidll_framemanager.o: $(srcdir)/src/aui/framemanager.cpp $(AUIDLL_ODEP) $(CXXC) -c -o $@ $(AUIDLL_CXXFLAGS) $(srcdir)/src/aui/framemanager.cpp @@ -32340,8 +32553,59 @@ auilib_auibar.o: $(srcdir)/src/aui/auibar.cpp $(AUILIB_ODEP) auilib_tabmdi.o: $(srcdir)/src/aui/tabmdi.cpp $(AUILIB_ODEP) $(CXXC) -c -o $@ $(AUILIB_CXXFLAGS) $(srcdir)/src/aui/tabmdi.cpp +propgriddll_version_rc.o: $(srcdir)/src/msw/version.rc $(PROPGRIDDLL_ODEP) + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_PROPGRID + +propgriddll_advprops.o: $(srcdir)/src/propgrid/advprops.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/advprops.cpp + +propgriddll_editors.o: $(srcdir)/src/propgrid/editors.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/editors.cpp + +propgriddll_manager.o: $(srcdir)/src/propgrid/manager.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/manager.cpp + +propgriddll_property.o: $(srcdir)/src/propgrid/property.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/property.cpp + +propgriddll_propgrid.o: $(srcdir)/src/propgrid/propgrid.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/propgrid.cpp + +propgriddll_propgridiface.o: $(srcdir)/src/propgrid/propgridiface.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/propgridiface.cpp + +propgriddll_propgridpagestate.o: $(srcdir)/src/propgrid/propgridpagestate.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/propgridpagestate.cpp + +propgriddll_props.o: $(srcdir)/src/propgrid/props.cpp $(PROPGRIDDLL_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(srcdir)/src/propgrid/props.cpp + +propgridlib_advprops.o: $(srcdir)/src/propgrid/advprops.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/advprops.cpp + +propgridlib_editors.o: $(srcdir)/src/propgrid/editors.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/editors.cpp + +propgridlib_manager.o: $(srcdir)/src/propgrid/manager.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/manager.cpp + +propgridlib_property.o: $(srcdir)/src/propgrid/property.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/property.cpp + +propgridlib_propgrid.o: $(srcdir)/src/propgrid/propgrid.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgrid.cpp + +propgridlib_propgridiface.o: $(srcdir)/src/propgrid/propgridiface.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgridiface.cpp + +propgridlib_propgridpagestate.o: $(srcdir)/src/propgrid/propgridpagestate.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/propgridpagestate.cpp + +propgridlib_props.o: $(srcdir)/src/propgrid/props.cpp $(PROPGRIDLIB_ODEP) + $(CXXC) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(srcdir)/src/propgrid/props.cpp + richtextdll_version_rc.o: $(srcdir)/src/msw/version.rc $(RICHTEXTDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_RICHTEXT + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_RICHTEXT richtextdll_richtextctrl.o: $(srcdir)/src/richtext/richtextctrl.cpp $(RICHTEXTDLL_ODEP) $(CXXC) -c -o $@ $(RICHTEXTDLL_CXXFLAGS) $(srcdir)/src/richtext/richtextctrl.cpp @@ -32398,7 +32662,7 @@ richtextlib_richtextprint.o: $(srcdir)/src/richtext/richtextprint.cpp $(RICHTEXT $(CXXC) -c -o $@ $(RICHTEXTLIB_CXXFLAGS) $(srcdir)/src/richtext/richtextprint.cpp stcdll_version_rc.o: $(srcdir)/src/msw/version.rc $(STCDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS --define WXUSINGDLL --define WXMAKINGDLL_STC + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --include-dir $(top_srcdir)/src/stc/scintilla/include --include-dir $(top_srcdir)/src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS --define WXUSINGDLL --define WXMAKINGDLL_STC stcdll_stc.o: $(srcdir)/src/stc/stc.cpp $(STCDLL_ODEP) $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/src/stc/stc.cpp @@ -32419,7 +32683,7 @@ stclib_ScintillaWX.o: $(srcdir)/src/stc/ScintillaWX.cpp $(STCLIB_ODEP) $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/src/stc/ScintillaWX.cpp gldll_version_rc.o: $(srcdir)/src/msw/version.rc $(GLDLL_ODEP) - $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_54) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_55) $(__INC_REGEX_p_53) $(__INC_EXPAT_p_53) --define WXUSINGDLL --define WXMAKINGDLL_GL + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_58) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_58) $(__INC_TIFF_p_58) $(__INC_JPEG_p_58) $(__INC_PNG_p_57) $(__INC_ZLIB_p_59) $(__INC_REGEX_p_57) $(__INC_EXPAT_p_57) --define WXUSINGDLL --define WXMAKINGDLL_GL gldll_glcmn.o: $(srcdir)/src/common/glcmn.cpp $(GLDLL_ODEP) $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/common/glcmn.cpp @@ -32541,6 +32805,7 @@ COMMDIR = $(WXDIR)/src/common HTMLDIR = $(WXDIR)/src/html RICHTEXTDIR = $(WXDIR)/src/richtext AUIDIR = $(WXDIR)/src/aui +PROPGRIDDIR = $(WXDIR)/src/propgrid STCDIR = $(WXDIR)/src/stc UNIXDIR = $(WXDIR)/src/unix PNGDIR = $(WXDIR)/src/png @@ -32686,6 +32951,7 @@ ALL_GUI_DIST: ALL_DIST mkdir $(DISTDIR)/include/wx/html mkdir $(DISTDIR)/include/wx/richtext mkdir $(DISTDIR)/include/wx/aui + mkdir $(DISTDIR)/include/wx/propgrid mkdir $(DISTDIR)/include/wx/stc mkdir $(DISTDIR)/include/wx/protocol mkdir $(DISTDIR)/include/wx/unix @@ -32699,6 +32965,7 @@ ALL_GUI_DIST: ALL_DIST $(CP_P) $(INCDIR)/wx/html/*.h $(DISTDIR)/include/wx/html $(CP_P) $(INCDIR)/wx/richtext/*.h $(DISTDIR)/include/wx/richtext $(CP_P) $(INCDIR)/wx/aui/*.h $(DISTDIR)/include/wx/aui + $(CP_P) $(INCDIR)/wx/propgrid/*.h $(DISTDIR)/include/wx/propgrid $(CP_P) $(INCDIR)/wx/stc/*.h $(DISTDIR)/include/wx/stc $(CP_P) $(INCDIR)/wx/unix/*.h $(DISTDIR)/include/wx/unix $(CP_P) $(INCDIR)/wx/unix/private/*.h $(DISTDIR)/include/wx/unix/private @@ -32738,7 +33005,10 @@ ALL_GUI_DIST: ALL_DIST mkdir $(DISTDIR)/src/aui $(CP_P) $(AUIDIR)/*.cpp $(DISTDIR)/src/aui - + + mkdir $(DISTDIR)/src/propgrid + $(CP_P) $(PROPGRIDDIR)/*.cpp $(DISTDIR)/src/propgrid + mkdir $(DISTDIR)/src/stc mkdir $(DISTDIR)/src/stc/scintilla mkdir $(DISTDIR)/src/stc/scintilla/src @@ -32800,6 +33070,7 @@ BASE_DIST: ALL_DIST INTL_DIST mkdir $(DISTDIR)/include/wx/html mkdir $(DISTDIR)/include/wx/richtext mkdir $(DISTDIR)/include/wx/aui + mkdir $(DISTDIR)/include/wx/propgrid mkdir $(DISTDIR)/include/wx/stc mkdir $(DISTDIR)/include/wx/osx mkdir $(DISTDIR)/include/wx/osx/carbon @@ -33246,6 +33517,7 @@ MANUAL_DIST: mkdir $(DISTDIR)/interface/wx/msw mkdir $(DISTDIR)/interface/wx/msw/ole mkdir $(DISTDIR)/interface/wx/protocol + mkdir $(DISTDIR)/interface/wx/propgrid mkdir $(DISTDIR)/interface/wx/richtext mkdir $(DISTDIR)/interface/wx/stc mkdir $(DISTDIR)/interface/wx/xml @@ -33257,6 +33529,7 @@ MANUAL_DIST: $(CP_P) $(IFACEDIR)/wx/msw/*.h $(DISTDIR)/interface/wx/msw $(CP_P) $(IFACEDIR)/wx/msw/ole/*.h $(DISTDIR)/interface/wx/msw/ole $(CP_P) $(IFACEDIR)/wx/protocol/*.h $(DISTDIR)/interface/wx/protocol + $(CP_P) $(IFACEDIR)/wx/propgrid/*.h $(DISTDIR)/interface/wx/propgrid $(CP_P) $(IFACEDIR)/wx/richtext/*.h $(DISTDIR)/interface/wx/richtext $(CP_P) $(IFACEDIR)/wx/stc/*.h $(DISTDIR)/interface/wx/stc $(CP_P) $(IFACEDIR)/wx/xml/*.h $(DISTDIR)/interface/wx/xml @@ -33429,4 +33702,4 @@ rpm: bzip-dist # Include dependency info, if present: @IF_GNU_MAKE@-include .deps/*.d -.PHONY: all install uninstall clean distclean install_wxregex uninstall_wxregex install_wxzlib uninstall_wxzlib install_wxpng uninstall_wxpng install_wxjpeg uninstall_wxjpeg install_wxtiff uninstall_wxtiff install_wxexpat uninstall_wxexpat install_wxscintilla uninstall_wxscintilla install_monodll uninstall_monodll install_monolib uninstall_monolib install_basedll uninstall_basedll install_baselib uninstall_baselib wxbase install_netdll uninstall_netdll install_netlib uninstall_netlib wxnet install_coredll uninstall_coredll install_corelib uninstall_corelib wxcore install_advdll uninstall_advdll install_advlib uninstall_advlib wxadv install_mediadll uninstall_mediadll install_medialib uninstall_medialib wxmedia install_htmldll uninstall_htmldll install_htmllib uninstall_htmllib wxhtml install_qadll uninstall_qadll install_qalib uninstall_qalib wxqa install_xmldll uninstall_xmldll install_xmllib uninstall_xmllib wxxml install_xrcdll uninstall_xrcdll install_xrclib uninstall_xrclib wxxrc install_auidll uninstall_auidll install_auilib uninstall_auilib wxaui install_richtextdll uninstall_richtextdll install_richtextlib uninstall_richtextlib wxrichtext install_stcdll uninstall_stcdll install_stclib uninstall_stclib wxstc install_gldll uninstall_gldll install_gllib uninstall_gllib wxgl install_sound_sdl uninstall_sound_sdl samples +.PHONY: all install uninstall clean distclean install_wxregex uninstall_wxregex install_wxzlib uninstall_wxzlib install_wxpng uninstall_wxpng install_wxjpeg uninstall_wxjpeg install_wxtiff uninstall_wxtiff install_wxexpat uninstall_wxexpat install_wxscintilla uninstall_wxscintilla install_monodll uninstall_monodll install_monolib uninstall_monolib install_basedll uninstall_basedll install_baselib uninstall_baselib wxbase install_netdll uninstall_netdll install_netlib uninstall_netlib wxnet install_coredll uninstall_coredll install_corelib uninstall_corelib wxcore install_advdll uninstall_advdll install_advlib uninstall_advlib wxadv install_mediadll uninstall_mediadll install_medialib uninstall_medialib wxmedia install_htmldll uninstall_htmldll install_htmllib uninstall_htmllib wxhtml install_qadll uninstall_qadll install_qalib uninstall_qalib wxqa install_xmldll uninstall_xmldll install_xmllib uninstall_xmllib wxxml install_xrcdll uninstall_xrcdll install_xrclib uninstall_xrclib wxxrc install_auidll uninstall_auidll install_auilib uninstall_auilib wxaui install_propgriddll uninstall_propgriddll install_propgridlib uninstall_propgridlib wxpropgrid install_richtextdll uninstall_richtextdll install_richtextlib uninstall_richtextlib wxrichtext install_stcdll uninstall_stcdll install_stclib uninstall_stclib wxstc install_gldll uninstall_gldll install_gllib uninstall_gllib wxgl install_sound_sdl uninstall_sound_sdl samples diff --git a/autoconf_inc.m4 b/autoconf_inc.m4 index b8b33c6e11..08ad6d7c5b 100644 --- a/autoconf_inc.m4 +++ b/autoconf_inc.m4 @@ -1,4 +1,4 @@ -dnl ### begin block 00_header[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 00_header[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### dnl dnl This macro was generated by dnl Bakefile 0.2.3 (http://www.bakefile.org) @@ -8,85 +8,85 @@ BAKEFILE_AUTOCONF_INC_M4_VERSION="0.2.3" dnl ### begin block 10_AC_BAKEFILE_PRECOMP_HEADERS[../../tests/test.bkl,wx.bkl] ### AC_BAKEFILE_PRECOMP_HEADERS -dnl ### begin block 20_COND_BUILD_DEBUG[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_DEBUG[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_DEBUG="#" if test "x$BUILD" = "xdebug" ; then COND_BUILD_DEBUG="" fi AC_SUBST(COND_BUILD_DEBUG) -dnl ### begin block 20_COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT="#" if test "x$BUILD" = "xdebug" -a "x$DEBUG_FLAG" = "xdefault" ; then COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT="" fi AC_SUBST(COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT) -dnl ### begin block 20_COND_BUILD_DEBUG_DEBUG_INFO_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_DEBUG_DEBUG_INFO_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_DEBUG_DEBUG_INFO_DEFAULT="#" if test "x$BUILD" = "xdebug" -a "x$DEBUG_INFO" = "xdefault" ; then COND_BUILD_DEBUG_DEBUG_INFO_DEFAULT="" fi AC_SUBST(COND_BUILD_DEBUG_DEBUG_INFO_DEFAULT) -dnl ### begin block 20_COND_BUILD_DEBUG_UNICODE_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_DEBUG_UNICODE_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_DEBUG_UNICODE_0="#" if test "x$BUILD" = "xdebug" -a "x$UNICODE" = "x0" ; then COND_BUILD_DEBUG_UNICODE_0="" fi AC_SUBST(COND_BUILD_DEBUG_UNICODE_0) -dnl ### begin block 20_COND_BUILD_DEBUG_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_DEBUG_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_DEBUG_UNICODE_1="#" if test "x$BUILD" = "xdebug" -a "x$UNICODE" = "x1" ; then COND_BUILD_DEBUG_UNICODE_1="" fi AC_SUBST(COND_BUILD_DEBUG_UNICODE_1) -dnl ### begin block 20_COND_BUILD_RELEASE[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_RELEASE[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_RELEASE="#" if test "x$BUILD" = "xrelease" ; then COND_BUILD_RELEASE="" fi AC_SUBST(COND_BUILD_RELEASE) -dnl ### begin block 20_COND_BUILD_RELEASE_DEBUG_INFO_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_RELEASE_DEBUG_INFO_DEFAULT[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_RELEASE_DEBUG_INFO_DEFAULT="#" if test "x$BUILD" = "xrelease" -a "x$DEBUG_INFO" = "xdefault" ; then COND_BUILD_RELEASE_DEBUG_INFO_DEFAULT="" fi AC_SUBST(COND_BUILD_RELEASE_DEBUG_INFO_DEFAULT) -dnl ### begin block 20_COND_BUILD_RELEASE_UNICODE_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_RELEASE_UNICODE_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_RELEASE_UNICODE_0="#" if test "x$BUILD" = "xrelease" -a "x$UNICODE" = "x0" ; then COND_BUILD_RELEASE_UNICODE_0="" fi AC_SUBST(COND_BUILD_RELEASE_UNICODE_0) -dnl ### begin block 20_COND_BUILD_RELEASE_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_BUILD_RELEASE_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_BUILD_RELEASE_UNICODE_1="#" if test "x$BUILD" = "xrelease" -a "x$UNICODE" = "x1" ; then COND_BUILD_RELEASE_UNICODE_1="" fi AC_SUBST(COND_BUILD_RELEASE_UNICODE_1) -dnl ### begin block 20_COND_DEBUG_FLAG_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_DEBUG_FLAG_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_DEBUG_FLAG_1="#" if test "x$DEBUG_FLAG" = "x1" ; then COND_DEBUG_FLAG_1="" fi AC_SUBST(COND_DEBUG_FLAG_1) -dnl ### begin block 20_COND_DEBUG_INFO_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_DEBUG_INFO_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_DEBUG_INFO_0="#" if test "x$DEBUG_INFO" = "x0" ; then COND_DEBUG_INFO_0="" fi AC_SUBST(COND_DEBUG_INFO_0) -dnl ### begin block 20_COND_DEBUG_INFO_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_DEBUG_INFO_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_DEBUG_INFO_1="#" if test "x$DEBUG_INFO" = "x1" ; then COND_DEBUG_INFO_1="" fi AC_SUBST(COND_DEBUG_INFO_1) -dnl ### begin block 20_COND_DEPS_TRACKING_0[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_DEPS_TRACKING_0[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_DEPS_TRACKING_0="#" if test "x$DEPS_TRACKING" = "x0" ; then COND_DEPS_TRACKING_0="" fi AC_SUBST(COND_DEPS_TRACKING_0) -dnl ### begin block 20_COND_DEPS_TRACKING_1[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_DEPS_TRACKING_1[../../demos/bombs/bombs.bkl,../../demos/demos.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/html_samples.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/mobile_samples.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/opengl_samples.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/utils.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_DEPS_TRACKING_1="#" if test "x$DEPS_TRACKING" = "x1" ; then COND_DEPS_TRACKING_1="" @@ -104,7 +104,7 @@ dnl ### begin block 20_COND_ICC_PCH_1[../../tests/test.bkl,wx.bkl] ### COND_ICC_PCH_1="" fi AC_SUBST(COND_ICC_PCH_1) -dnl ### begin block 20_COND_MONOLITHIC_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_MONOLITHIC_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_MONOLITHIC_0="#" if test "x$MONOLITHIC" = "x0" ; then COND_MONOLITHIC_0="" @@ -146,6 +146,12 @@ dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1[wx.bkl] ### COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1="" fi AC_SUBST(COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1) +dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1[wx.bkl] ### + COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x0" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1="" + fi + AC_SUBST(COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1) dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1[wx.bkl] ### COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1="#" if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x0" -a "x$USE_RICHTEXT" = "x1" ; then @@ -200,6 +206,12 @@ dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1[wx.bkl] ### COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1="" fi AC_SUBST(COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1) +dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1[wx.bkl] ### + COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x1" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1="" + fi + AC_SUBST(COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1) dnl ### begin block 20_COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1[wx.bkl] ### COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1="#" if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x1" -a "x$USE_RICHTEXT" = "x1" ; then @@ -242,12 +254,18 @@ dnl ### begin block 20_COND_MONOLITHIC_0_USE_HTML_1[wx.bkl] ### COND_MONOLITHIC_0_USE_HTML_1="" fi AC_SUBST(COND_MONOLITHIC_0_USE_HTML_1) -dnl ### begin block 20_COND_MONOLITHIC_0_USE_MEDIA_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_MONOLITHIC_0_USE_MEDIA_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_MONOLITHIC_0_USE_MEDIA_1="#" if test "x$MONOLITHIC" = "x0" -a "x$USE_MEDIA" = "x1" ; then COND_MONOLITHIC_0_USE_MEDIA_1="" fi AC_SUBST(COND_MONOLITHIC_0_USE_MEDIA_1) +dnl ### begin block 20_COND_MONOLITHIC_0_USE_PROPGRID_1[wx.bkl] ### + COND_MONOLITHIC_0_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_USE_PROPGRID_1="" + fi + AC_SUBST(COND_MONOLITHIC_0_USE_PROPGRID_1) dnl ### begin block 20_COND_MONOLITHIC_0_USE_QA_1[wx.bkl] ### COND_MONOLITHIC_0_USE_QA_1="#" if test "x$MONOLITHIC" = "x0" -a "x$USE_QA" = "x1" ; then @@ -272,7 +290,7 @@ dnl ### begin block 20_COND_MONOLITHIC_0_USE_XRC_1[wx.bkl] ### COND_MONOLITHIC_0_USE_XRC_1="" fi AC_SUBST(COND_MONOLITHIC_0_USE_XRC_1) -dnl ### begin block 20_COND_MONOLITHIC_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_MONOLITHIC_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_MONOLITHIC_1="#" if test "x$MONOLITHIC" = "x1" ; then COND_MONOLITHIC_1="" @@ -290,13 +308,13 @@ dnl ### begin block 20_COND_MONOLITHIC_1_SHARED_1[wx.bkl] ### COND_MONOLITHIC_1_SHARED_1="" fi AC_SUBST(COND_MONOLITHIC_1_SHARED_1) -dnl ### begin block 20_COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1="#" if test "x$OFFICIAL_BUILD" = "x0" -a "x$PLATFORM_WIN32" = "x1" ; then COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1="" fi AC_SUBST(COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1) -dnl ### begin block 20_COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1="#" if test "x$OFFICIAL_BUILD" = "x1" -a "x$PLATFORM_WIN32" = "x1" ; then COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1="" @@ -314,7 +332,7 @@ dnl ### begin block 20_COND_PLATFORM_MACOSX_0_USE_SOVERSION_1[wx.bkl] ### COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="" fi AC_SUBST(COND_PLATFORM_MACOSX_0_USE_SOVERSION_1) -dnl ### begin block 20_COND_PLATFORM_MACOSX_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_MACOSX_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_MACOSX_1="#" if test "x$PLATFORM_MACOSX" = "x1" ; then COND_PLATFORM_MACOSX_1="" @@ -368,19 +386,19 @@ dnl ### begin block 20_COND_PLATFORM_MACOSX_1_USE_SOVERSION_1[wx.bkl] ### COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="" fi AC_SUBST(COND_PLATFORM_MACOSX_1_USE_SOVERSION_1) -dnl ### begin block 20_COND_PLATFORM_MACOS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_MACOS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_MACOS_1="#" if test "x$PLATFORM_MACOS" = "x1" ; then COND_PLATFORM_MACOS_1="" fi AC_SUBST(COND_PLATFORM_MACOS_1) -dnl ### begin block 20_COND_PLATFORM_MAC_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl] ### +dnl ### begin block 20_COND_PLATFORM_MAC_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl] ### COND_PLATFORM_MAC_0="#" if test "x$PLATFORM_MAC" = "x0" ; then COND_PLATFORM_MAC_0="" fi AC_SUBST(COND_PLATFORM_MAC_0) -dnl ### begin block 20_COND_PLATFORM_MAC_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl] ### +dnl ### begin block 20_COND_PLATFORM_MAC_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl] ### COND_PLATFORM_MAC_1="#" if test "x$PLATFORM_MAC" = "x1" ; then COND_PLATFORM_MAC_1="" @@ -392,25 +410,25 @@ dnl ### begin block 20_COND_PLATFORM_MSDOS_0[../../samples/dialup/dialup.bkl] ## COND_PLATFORM_MSDOS_0="" fi AC_SUBST(COND_PLATFORM_MSDOS_0) -dnl ### begin block 20_COND_PLATFORM_MSDOS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_MSDOS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_MSDOS_1="#" if test "x$PLATFORM_MSDOS" = "x1" ; then COND_PLATFORM_MSDOS_1="" fi AC_SUBST(COND_PLATFORM_MSDOS_1) -dnl ### begin block 20_COND_PLATFORM_OS2_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_OS2_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_OS2_1="#" if test "x$PLATFORM_OS2" = "x1" ; then COND_PLATFORM_OS2_1="" fi AC_SUBST(COND_PLATFORM_OS2_1) -dnl ### begin block 20_COND_PLATFORM_UNIX_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_UNIX_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_UNIX_0="#" if test "x$PLATFORM_UNIX" = "x0" ; then COND_PLATFORM_UNIX_0="" fi AC_SUBST(COND_PLATFORM_UNIX_0) -dnl ### begin block 20_COND_PLATFORM_UNIX_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_UNIX_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_UNIX_1="#" if test "x$PLATFORM_UNIX" = "x1" ; then COND_PLATFORM_UNIX_1="" @@ -440,13 +458,13 @@ dnl ### begin block 20_COND_PLATFORM_UNIX_1_USE_PLUGINS_0[wx.bkl] ### COND_PLATFORM_UNIX_1_USE_PLUGINS_0="" fi AC_SUBST(COND_PLATFORM_UNIX_1_USE_PLUGINS_0) -dnl ### begin block 20_COND_PLATFORM_WIN32_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_WIN32_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_WIN32_0="#" if test "x$PLATFORM_WIN32" = "x0" ; then COND_PLATFORM_WIN32_0="" fi AC_SUBST(COND_PLATFORM_WIN32_0) -dnl ### begin block 20_COND_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_PLATFORM_WIN32_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_PLATFORM_WIN32_1="#" if test "x$PLATFORM_WIN32" = "x1" ; then COND_PLATFORM_WIN32_1="" @@ -524,7 +542,7 @@ dnl ### begin block 20_COND_SHARED_0_WXUSE_ZLIB_BUILTIN[wx.bkl] ### COND_SHARED_0_WXUSE_ZLIB_BUILTIN="" fi AC_SUBST(COND_SHARED_0_WXUSE_ZLIB_BUILTIN) -dnl ### begin block 20_COND_SHARED_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_SHARED_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_SHARED_1="#" if test "x$SHARED" = "x1" ; then COND_SHARED_1="" @@ -542,7 +560,7 @@ dnl ### begin block 20_COND_TOOLKIT_[wx.bkl] ### COND_TOOLKIT_="" fi AC_SUBST(COND_TOOLKIT_) -dnl ### begin block 20_COND_TOOLKIT_COCOA[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_COCOA[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### COND_TOOLKIT_COCOA="#" if test "x$TOOLKIT" = "xCOCOA" ; then COND_TOOLKIT_COCOA="" @@ -626,7 +644,7 @@ dnl ### begin block 20_COND_TOOLKIT_GTK_USE_GUI_1[wx.bkl] ### COND_TOOLKIT_GTK_USE_GUI_1="" fi AC_SUBST(COND_TOOLKIT_GTK_USE_GUI_1) -dnl ### begin block 20_COND_TOOLKIT_MAC[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_MAC[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_TOOLKIT_MAC="#" if test "x$TOOLKIT" = "xMAC" ; then COND_TOOLKIT_MAC="" @@ -662,7 +680,7 @@ dnl ### begin block 20_COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0[wx.bkl] ### COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0="" fi AC_SUBST(COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0) -dnl ### begin block 20_COND_TOOLKIT_MSW[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_MSW[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_TOOLKIT_MSW="#" if test "x$TOOLKIT" = "xMSW" ; then COND_TOOLKIT_MSW="" @@ -686,7 +704,7 @@ dnl ### begin block 20_COND_TOOLKIT_MSW_WXUNIV_0[wx.bkl] ### COND_TOOLKIT_MSW_WXUNIV_0="" fi AC_SUBST(COND_TOOLKIT_MSW_WXUNIV_0) -dnl ### begin block 20_COND_TOOLKIT_OSX_CARBON[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_OSX_CARBON[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### COND_TOOLKIT_OSX_CARBON="#" if test "x$TOOLKIT" = "xOSX_CARBON" ; then COND_TOOLKIT_OSX_CARBON="" @@ -704,7 +722,7 @@ dnl ### begin block 20_COND_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0[wx.bkl] ### COND_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0="" fi AC_SUBST(COND_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0) -dnl ### begin block 20_COND_TOOLKIT_OSX_COCOA[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_OSX_COCOA[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl,wx.bkl] ### COND_TOOLKIT_OSX_COCOA="#" if test "x$TOOLKIT" = "xOSX_COCOA" ; then COND_TOOLKIT_OSX_COCOA="" @@ -722,7 +740,7 @@ dnl ### begin block 20_COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0[wx.bkl] ### COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0="" fi AC_SUBST(COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0) -dnl ### begin block 20_COND_TOOLKIT_OSX_IPHONE[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl] ### +dnl ### begin block 20_COND_TOOLKIT_OSX_IPHONE[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/test.bkl,../../utils/helpview/src/helpview.bkl] ### COND_TOOLKIT_OSX_IPHONE="#" if test "x$TOOLKIT" = "xOSX_IPHONE" ; then COND_TOOLKIT_OSX_IPHONE="" @@ -782,31 +800,31 @@ dnl ### begin block 20_COND_TOOLKIT_X11_USE_GUI_1[wx.bkl] ### COND_TOOLKIT_X11_USE_GUI_1="" fi AC_SUBST(COND_TOOLKIT_X11_USE_GUI_1) -dnl ### begin block 20_COND_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_UNICODE_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_UNICODE_1="#" if test "x$UNICODE" = "x1" ; then COND_UNICODE_1="" fi AC_SUBST(COND_UNICODE_1) -dnl ### begin block 20_COND_USE_EXCEPTIONS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_EXCEPTIONS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_EXCEPTIONS_0="#" if test "x$USE_EXCEPTIONS" = "x0" ; then COND_USE_EXCEPTIONS_0="" fi AC_SUBST(COND_USE_EXCEPTIONS_0) -dnl ### begin block 20_COND_USE_EXCEPTIONS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_EXCEPTIONS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_EXCEPTIONS_1="#" if test "x$USE_EXCEPTIONS" = "x1" ; then COND_USE_EXCEPTIONS_1="" fi AC_SUBST(COND_USE_EXCEPTIONS_1) -dnl ### begin block 20_COND_USE_GUI_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_GUI_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_GUI_0="#" if test "x$USE_GUI" = "x0" ; then COND_USE_GUI_0="" fi AC_SUBST(COND_USE_GUI_0) -dnl ### begin block 20_COND_USE_GUI_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_GUI_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_GUI_1="#" if test "x$USE_GUI" = "x1" ; then COND_USE_GUI_1="" @@ -830,19 +848,19 @@ dnl ### begin block 20_COND_USE_GUI_1_WXUNIV_1[wx.bkl] ### COND_USE_GUI_1_WXUNIV_1="" fi AC_SUBST(COND_USE_GUI_1_WXUNIV_1) -dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN="#" if test "x$USE_GUI" = "x1" -a "x$wxUSE_LIBJPEG" = "xbuiltin" ; then COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN="" fi AC_SUBST(COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN) -dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN="#" if test "x$USE_GUI" = "x1" -a "x$wxUSE_LIBPNG" = "xbuiltin" ; then COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN="" fi AC_SUBST(COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN) -dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN="#" if test "x$USE_GUI" = "x1" -a "x$wxUSE_LIBTIFF" = "xbuiltin" ; then COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN="" @@ -860,19 +878,19 @@ dnl ### begin block 20_COND_USE_PCH_1[../../tests/test.bkl,wx.bkl] ### COND_USE_PCH_1="" fi AC_SUBST(COND_USE_PCH_1) -dnl ### begin block 20_COND_USE_PLUGINS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_PLUGINS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_PLUGINS_0="#" if test "x$USE_PLUGINS" = "x0" ; then COND_USE_PLUGINS_0="" fi AC_SUBST(COND_USE_PLUGINS_0) -dnl ### begin block 20_COND_USE_RTTI_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_RTTI_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_RTTI_0="#" if test "x$USE_RTTI" = "x0" ; then COND_USE_RTTI_0="" fi AC_SUBST(COND_USE_RTTI_0) -dnl ### begin block 20_COND_USE_RTTI_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_RTTI_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_RTTI_1="#" if test "x$USE_RTTI" = "x1" ; then COND_USE_RTTI_1="" @@ -914,13 +932,13 @@ dnl ### begin block 20_COND_USE_STC_1[wx.bkl] ### COND_USE_STC_1="" fi AC_SUBST(COND_USE_STC_1) -dnl ### begin block 20_COND_USE_THREADS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_THREADS_0[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_THREADS_0="#" if test "x$USE_THREADS" = "x0" ; then COND_USE_THREADS_0="" fi AC_SUBST(COND_USE_THREADS_0) -dnl ### begin block 20_COND_USE_THREADS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_USE_THREADS_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_USE_THREADS_1="#" if test "x$USE_THREADS" = "x1" ; then COND_USE_THREADS_1="" @@ -950,43 +968,43 @@ dnl ### begin block 20_COND_WXUNIV_0[wx.bkl] ### COND_WXUNIV_0="" fi AC_SUBST(COND_WXUNIV_0) -dnl ### begin block 20_COND_WXUNIV_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUNIV_1[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUNIV_1="#" if test "x$WXUNIV" = "x1" ; then COND_WXUNIV_1="" fi AC_SUBST(COND_WXUNIV_1) -dnl ### begin block 20_COND_WXUSE_EXPAT_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_EXPAT_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_EXPAT_BUILTIN="#" if test "x$wxUSE_EXPAT" = "xbuiltin" ; then COND_WXUSE_EXPAT_BUILTIN="" fi AC_SUBST(COND_WXUSE_EXPAT_BUILTIN) -dnl ### begin block 20_COND_WXUSE_LIBJPEG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_LIBJPEG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_LIBJPEG_BUILTIN="#" if test "x$wxUSE_LIBJPEG" = "xbuiltin" ; then COND_WXUSE_LIBJPEG_BUILTIN="" fi AC_SUBST(COND_WXUSE_LIBJPEG_BUILTIN) -dnl ### begin block 20_COND_WXUSE_LIBPNG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_LIBPNG_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_LIBPNG_BUILTIN="#" if test "x$wxUSE_LIBPNG" = "xbuiltin" ; then COND_WXUSE_LIBPNG_BUILTIN="" fi AC_SUBST(COND_WXUSE_LIBPNG_BUILTIN) -dnl ### begin block 20_COND_WXUSE_LIBTIFF_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_LIBTIFF_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_LIBTIFF_BUILTIN="#" if test "x$wxUSE_LIBTIFF" = "xbuiltin" ; then COND_WXUSE_LIBTIFF_BUILTIN="" fi AC_SUBST(COND_WXUSE_LIBTIFF_BUILTIN) -dnl ### begin block 20_COND_WXUSE_REGEX_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_REGEX_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_REGEX_BUILTIN="#" if test "x$wxUSE_REGEX" = "xbuiltin" ; then COND_WXUSE_REGEX_BUILTIN="" fi AC_SUBST(COND_WXUSE_REGEX_BUILTIN) -dnl ### begin block 20_COND_WXUSE_ZLIB_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### +dnl ### begin block 20_COND_WXUSE_ZLIB_BUILTIN[../../demos/bombs/bombs.bkl,../../demos/forty/forty.bkl,../../demos/fractal/fractal.bkl,../../demos/life/life.bkl,../../demos/poem/poem.bkl,../../samples/access/access.bkl,../../samples/animate/anitest.bkl,../../samples/artprov/artprov.bkl,../../samples/aui/auidemo.bkl,../../samples/calendar/calendar.bkl,../../samples/caret/caret.bkl,../../samples/collpane/collpane.bkl,../../samples/combo/combo.bkl,../../samples/config/config.bkl,../../samples/console/console.bkl,../../samples/controls/controls.bkl,../../samples/dataview/dataview.bkl,../../samples/debugrpt/debugrpt.bkl,../../samples/dialogs/dialogs.bkl,../../samples/dialup/dialup.bkl,../../samples/display/display.bkl,../../samples/dnd/dnd.bkl,../../samples/docview/docview.bkl,../../samples/docvwmdi/docvwmdi.bkl,../../samples/dragimag/dragimag.bkl,../../samples/drawing/drawing.bkl,../../samples/editlbox/editlbox.bkl,../../samples/erase/erase.bkl,../../samples/event/event.bkl,../../samples/except/except.bkl,../../samples/exec/exec.bkl,../../samples/font/font.bkl,../../samples/grid/grid.bkl,../../samples/help/help.bkl,../../samples/htlbox/htlbox.bkl,../../samples/html/about/about.bkl,../../samples/html/help/help.bkl,../../samples/html/helpview/helpview.bkl,../../samples/html/htmlctrl/htmlctrl.bkl,../../samples/html/printing/printing.bkl,../../samples/html/test/test.bkl,../../samples/html/virtual/virtual.bkl,../../samples/html/widget/widget.bkl,../../samples/html/zip/zip.bkl,../../samples/image/image.bkl,../../samples/internat/internat.bkl,../../samples/ipc/ipc.bkl,../../samples/joytest/joytest.bkl,../../samples/keyboard/keyboard.bkl,../../samples/layout/layout.bkl,../../samples/listctrl/listctrl.bkl,../../samples/mdi/mdi.bkl,../../samples/mediaplayer/mediaplayer.bkl,../../samples/memcheck/memcheck.bkl,../../samples/menu/menu.bkl,../../samples/mfc/mfc.bkl,../../samples/minimal/minimal.bkl,../../samples/mobile/styles/styles.bkl,../../samples/mobile/wxedit/wxedit.bkl,../../samples/nativdlg/nativdlg.bkl,../../samples/notebook/notebook.bkl,../../samples/oleauto/oleauto.bkl,../../samples/opengl/cube/cube.bkl,../../samples/opengl/isosurf/isosurf.bkl,../../samples/opengl/penguin/penguin.bkl,../../samples/ownerdrw/ownerdrw.bkl,../../samples/popup/popup.bkl,../../samples/power/power.bkl,../../samples/printing/printing.bkl,../../samples/propgrid/propgrid.bkl,../../samples/regtest/regtest.bkl,../../samples/render/render.bkl,../../samples/richtext/richtext.bkl,../../samples/sashtest/sashtest.bkl,../../samples/scroll/scroll.bkl,../../samples/scrollsub/scrollsub.bkl,../../samples/shaped/shaped.bkl,../../samples/sockets/sockets.bkl,../../samples/sound/sound.bkl,../../samples/splash/splash.bkl,../../samples/splitter/splitter.bkl,../../samples/statbar/statbar.bkl,../../samples/stc/stctest.bkl,../../samples/svg/svgtest.bkl,../../samples/taborder/taborder.bkl,../../samples/taskbar/taskbar.bkl,../../samples/text/text.bkl,../../samples/thread/thread.bkl,../../samples/toolbar/toolbar.bkl,../../samples/treectrl/treectrl.bkl,../../samples/typetest/typetest.bkl,../../samples/validate/validate.bkl,../../samples/vscroll/vscroll.bkl,../../samples/widgets/widgets.bkl,../../samples/wizard/wizard.bkl,../../samples/wrapsizer/wrapsizer.bkl,../../samples/xrc/xrcdemo.bkl,../../tests/benchmarks/bench.bkl,../../tests/test.bkl,../../utils/HelpGen/src/helpgen.bkl,../../utils/emulator/src/emulator.bkl,../../utils/helpview/src/helpview.bkl,../../utils/hhp2cached/hhp2cached.bkl,../../utils/ifacecheck/ifacecheck.bkl,../../utils/ifacecheck/src/ifacecheck.bkl,../../utils/tex2rtf/src/tex2rtf.bkl,../../utils/wxrc/wxrc.bkl,wx.bkl] ### COND_WXUSE_ZLIB_BUILTIN="#" if test "x$wxUSE_ZLIB" = "xbuiltin" ; then COND_WXUSE_ZLIB_BUILTIN="" diff --git a/build/bakefiles/common.bkl b/build/bakefiles/common.bkl index 89080fa27e..f2abec66fd 100644 --- a/build/bakefiles/common.bkl +++ b/build/bakefiles/common.bkl @@ -145,6 +145,9 @@ <set var="WXLIB_AUI"> <if cond="MONOLITHIC=='0'">$(mk.evalExpr(wxwin.mkLibName('aui')))</if> </set> + <set var="WXLIB_PROPGRID"> + <if cond="MONOLITHIC=='0'">$(mk.evalExpr(wxwin.mkLibName('propgrid')))</if> + </set> <set var="WXLIB_RICHTEXT"> <if cond="MONOLITHIC=='0'">$(mk.evalExpr(wxwin.mkLibName('richtext')))</if> </set> diff --git a/build/bakefiles/config.bkl b/build/bakefiles/config.bkl index e9e8505137..37ed41dc6d 100644 --- a/build/bakefiles/config.bkl +++ b/build/bakefiles/config.bkl @@ -213,6 +213,14 @@ Acts according to BUILD by default. </description> </option> + <option name="USE_PROPGRID"> + <values>0,1</values> + <default-value>1</default-value> + <description> + Build wxPropertyGrid library (USE_GUI must be 1)? + </description> + </option> + <option name="USE_RICHTEXT"> <values>0,1</values> <default-value>1</default-value> @@ -444,6 +452,7 @@ Set the version of your Mingw installation here. <set var="RUNTIME_LIBS">dynamic</set> <set var="OFFICIAL_BUILD">0</set> <set var="USE_AUI">1</set> + <set var="USE_PROPGRID">1</set> <set var="USE_RICHTEXT">1</set> <set var="USE_STC">1</set> <set var="USE_HTML">1</set> diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 8e222c4e35..f7f5ccc49f 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -3456,6 +3456,32 @@ src/osx/iphone/window.mm wx/aui/aui.h </set> +<!-- ====================================================================== --> +<!-- wxPropertyGrid --> +<!-- ====================================================================== --> + +<set var="PROPGRID_SRC" hints="files"> + src/propgrid/advprops.cpp + src/propgrid/editors.cpp + src/propgrid/manager.cpp + src/propgrid/property.cpp + src/propgrid/propgrid.cpp + src/propgrid/propgridiface.cpp + src/propgrid/propgridpagestate.cpp + src/propgrid/props.cpp +</set> +<set var="PROPGRID_HDR" hints="files"> + wx/propgrid/advprops.h + wx/propgrid/editors.h + wx/propgrid/manager.h + wx/propgrid/property.h + wx/propgrid/propgrid.h + wx/propgrid/propgriddefs.h + wx/propgrid/propgridiface.h + wx/propgrid/propgridpagestate.h + wx/propgrid/props.h +</set> + <!-- ====================================================================== --> <!-- wxRichTextCtrl --> <!-- ====================================================================== --> @@ -3744,8 +3770,8 @@ src/osx/iphone/window.mm $(LOWLEVEL_HDR) $(GUI_CORE_HEADERS) $(ADVANCED_HDR) $(MEDIA_HDR) $(HTML_HDR) - $(OPENGL_HDR) $(QA_HDR) $(XRC_HDR) $(AUI_HDR) $(RICHTEXT_HDR) - $(STC_HDR) + $(OPENGL_HDR) $(QA_HDR) $(XRC_HDR) $(AUI_HDR) $(PROPGRID_HDR) + $(RICHTEXT_HDR) $(STC_HDR) </if> </set> diff --git a/build/bakefiles/make_dist.mk b/build/bakefiles/make_dist.mk index 3dbe39db71..fc74933a09 100644 --- a/build/bakefiles/make_dist.mk +++ b/build/bakefiles/make_dist.mk @@ -15,6 +15,7 @@ COMMDIR = $(WXDIR)/src/common HTMLDIR = $(WXDIR)/src/html RICHTEXTDIR = $(WXDIR)/src/richtext AUIDIR = $(WXDIR)/src/aui +PROPGRIDDIR = $(WXDIR)/src/propgrid STCDIR = $(WXDIR)/src/stc UNIXDIR = $(WXDIR)/src/unix PNGDIR = $(WXDIR)/src/png @@ -160,6 +161,7 @@ ALL_GUI_DIST: ALL_DIST mkdir $(DISTDIR)/include/wx/html mkdir $(DISTDIR)/include/wx/richtext mkdir $(DISTDIR)/include/wx/aui + mkdir $(DISTDIR)/include/wx/propgrid mkdir $(DISTDIR)/include/wx/stc mkdir $(DISTDIR)/include/wx/protocol mkdir $(DISTDIR)/include/wx/unix @@ -173,6 +175,7 @@ ALL_GUI_DIST: ALL_DIST $(CP_P) $(INCDIR)/wx/html/*.h $(DISTDIR)/include/wx/html $(CP_P) $(INCDIR)/wx/richtext/*.h $(DISTDIR)/include/wx/richtext $(CP_P) $(INCDIR)/wx/aui/*.h $(DISTDIR)/include/wx/aui + $(CP_P) $(INCDIR)/wx/propgrid/*.h $(DISTDIR)/include/wx/propgrid $(CP_P) $(INCDIR)/wx/stc/*.h $(DISTDIR)/include/wx/stc $(CP_P) $(INCDIR)/wx/unix/*.h $(DISTDIR)/include/wx/unix $(CP_P) $(INCDIR)/wx/unix/private/*.h $(DISTDIR)/include/wx/unix/private @@ -212,7 +215,10 @@ ALL_GUI_DIST: ALL_DIST mkdir $(DISTDIR)/src/aui $(CP_P) $(AUIDIR)/*.cpp $(DISTDIR)/src/aui - + + mkdir $(DISTDIR)/src/propgrid + $(CP_P) $(PROPGRIDDIR)/*.cpp $(DISTDIR)/src/propgrid + mkdir $(DISTDIR)/src/stc mkdir $(DISTDIR)/src/stc/scintilla mkdir $(DISTDIR)/src/stc/scintilla/src @@ -274,6 +280,7 @@ BASE_DIST: ALL_DIST INTL_DIST mkdir $(DISTDIR)/include/wx/html mkdir $(DISTDIR)/include/wx/richtext mkdir $(DISTDIR)/include/wx/aui + mkdir $(DISTDIR)/include/wx/propgrid mkdir $(DISTDIR)/include/wx/stc mkdir $(DISTDIR)/include/wx/osx mkdir $(DISTDIR)/include/wx/osx/carbon @@ -720,6 +727,7 @@ MANUAL_DIST: mkdir $(DISTDIR)/interface/wx/msw mkdir $(DISTDIR)/interface/wx/msw/ole mkdir $(DISTDIR)/interface/wx/protocol + mkdir $(DISTDIR)/interface/wx/propgrid mkdir $(DISTDIR)/interface/wx/richtext mkdir $(DISTDIR)/interface/wx/stc mkdir $(DISTDIR)/interface/wx/xml @@ -731,6 +739,7 @@ MANUAL_DIST: $(CP_P) $(IFACEDIR)/wx/msw/*.h $(DISTDIR)/interface/wx/msw $(CP_P) $(IFACEDIR)/wx/msw/ole/*.h $(DISTDIR)/interface/wx/msw/ole $(CP_P) $(IFACEDIR)/wx/protocol/*.h $(DISTDIR)/interface/wx/protocol + $(CP_P) $(IFACEDIR)/wx/propgrid/*.h $(DISTDIR)/interface/wx/propgrid $(CP_P) $(IFACEDIR)/wx/richtext/*.h $(DISTDIR)/interface/wx/richtext $(CP_P) $(IFACEDIR)/wx/stc/*.h $(DISTDIR)/interface/wx/stc $(CP_P) $(IFACEDIR)/wx/xml/*.h $(DISTDIR)/interface/wx/xml diff --git a/build/bakefiles/monolithic.bkl b/build/bakefiles/monolithic.bkl index d8c18e2949..82a35dd4cf 100644 --- a/build/bakefiles/monolithic.bkl +++ b/build/bakefiles/monolithic.bkl @@ -5,7 +5,7 @@ <set var="MONOLIB_GUI_SRC"> <if cond="USE_GUI=='1'"> $(CORE_SRC) $(ADVANCED_SRC) $(MEDIA_SRC) $(HTML_SRC) $(QA_SRC) - $(XRC_SRC) $(AUI_SRC) $(RICHTEXT_SRC) $(STC_SRC) + $(XRC_SRC) $(AUI_SRC) $(PROPGRID_SRC) $(RICHTEXT_SRC) $(STC_SRC) </if> </set> <set var="MONOLIB_SRC"> diff --git a/build/bakefiles/multilib.bkl b/build/bakefiles/multilib.bkl index d94bf39ee8..93e5848a4e 100644 --- a/build/bakefiles/multilib.bkl +++ b/build/bakefiles/multilib.bkl @@ -283,6 +283,31 @@ <set var="MSVC6PRJ_MERGED_TARGETS_MULTILIB" append="1">aui=auilib+auidll</set> + <!-- ================================================================ --> + <!-- PROPGRID --> + <!-- ================================================================ --> + + <dll id="propgriddll" template="wx_dll" + cond="SHARED=='1' and USE_PROPGRID=='1' and MONOLITHIC=='0'"> + <define>WXUSINGDLL</define> + <define>WXMAKINGDLL_PROPGRID</define> + <sources>$(PROPGRID_SRC)</sources> + <library>advdll</library> + <library>coredll</library> + <library>basedll</library> + <msvc-headers>$(PROPGRID_HDR)</msvc-headers> + </dll> + + <lib id="propgridlib" template="wx_lib" + cond="SHARED=='0' and USE_PROPGRID=='1' and MONOLITHIC=='0'"> + <sources>$(PROPGRID_SRC)</sources> + <msvc-headers>$(PROPGRID_HDR)</msvc-headers> + </lib> + + <wxshortcut id="wxpropgrid" cond="MONOLITHIC=='0' and USE_PROPGRID=='1'"/> + + <set var="MSVC6PRJ_MERGED_TARGETS_MULTILIB" append="1">propgrid=propgridlib+propgriddll</set> + <!-- ================================================================ --> <!-- RICHTEXT --> <!-- ================================================================ --> diff --git a/build/bakefiles/wxpresets/presets/wx.bkl b/build/bakefiles/wxpresets/presets/wx.bkl index bb48de3a18..31778ddabe 100644 --- a/build/bakefiles/wxpresets/presets/wx.bkl +++ b/build/bakefiles/wxpresets/presets/wx.bkl @@ -87,6 +87,7 @@ <wx-lib>richtext</wx-lib> <wx-lib>aui</wx-lib> + <wx-lib>propgrid</wx-lib> <wx-lib>stc</wx-lib> <wx-lib>qa</wx-lib> <wx-lib>gl</wx-lib> @@ -117,7 +118,7 @@ tag definitions. --> <set var="WX_LIB_LIST"> - base core net xml xrc html adv media gl qa aui richtext stc + base core net xml xrc html adv media gl qa aui propgrid richtext stc </set> <!-- if you define this variable to 0 before including wx presets, the diff --git a/build/bakefiles/wxpresets/presets/wx_win32.bkl b/build/bakefiles/wxpresets/presets/wx_win32.bkl index 541e9fecf8..b056dc2223 100644 --- a/build/bakefiles/wxpresets/presets/wx_win32.bkl +++ b/build/bakefiles/wxpresets/presets/wx_win32.bkl @@ -123,6 +123,7 @@ <define-wxlib-name>adv</define-wxlib-name> <define-wxlib-name>qa</define-wxlib-name> <define-wxlib-name>aui</define-wxlib-name> + <define-wxlib-name>propgrid</define-wxlib-name> <define-wxlib-name>stc</define-wxlib-name> <define-wxlib-name>richtext</define-wxlib-name> @@ -162,6 +163,7 @@ <if cond="value=='adv'"><sys-lib>$(WXLIB_ADV_NAME)</sys-lib></if> <if cond="value=='qa'"><sys-lib>$(WXLIB_QA_NAME)</sys-lib></if> <if cond="value=='aui'"><sys-lib>$(WXLIB_AUI_NAME)</sys-lib></if> + <if cond="value=='propgrid'"><sys-lib>$(WXLIB_PROPGRID_NAME)</sys-lib></if> <if cond="value=='richtext'"><sys-lib>$(WXLIB_RICHTEXT_NAME)</sys-lib></if> <!-- The GL lib isn't part of the monolithic build, treat it as a contrib: --> diff --git a/build/bakefiles/wxwin.py b/build/bakefiles/wxwin.py index 8b9192c59c..bad7270fa0 100644 --- a/build/bakefiles/wxwin.py +++ b/build/bakefiles/wxwin.py @@ -40,11 +40,11 @@ def mk_wxid(id): # All libs that are part of the main library: MAIN_LIBS = ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net', - 'media', 'qa', 'xrc', 'aui', 'richtext', 'stc'] + 'media', 'qa', 'xrc', 'aui', 'propgrid', 'richtext', 'stc'] # List of library names/ids for categories with different names: LIBS_NOGUI = ['xml', 'net'] LIBS_GUI = ['core', 'adv', 'html', 'gl', 'qa', 'xrc', 'media', - 'aui', 'richtext', 'stc'] + 'aui', 'propgrid', 'richtext', 'stc'] # Additional libraries that must be linked in: EXTRALIBS = { 'gl' : '$(EXTRALIBS_OPENGL)', diff --git a/build/msw/config.bcc b/build/msw/config.bcc index c7343b863e..5cf7055c9d 100644 --- a/build/msw/config.bcc +++ b/build/msw/config.bcc @@ -113,6 +113,11 @@ USE_XRC = 1 USE_AUI = 1 !endif +# Build wxPropertyGrid library (USE_GUI must be 1)? [0,1] +!ifndef USE_PROPGRID +USE_PROPGRID = 1 +!endif + # Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1] !ifndef USE_RICHTEXT USE_RICHTEXT = 1 diff --git a/build/msw/config.gcc b/build/msw/config.gcc index b4e121dd9e..a193947311 100644 --- a/build/msw/config.gcc +++ b/build/msw/config.gcc @@ -79,6 +79,9 @@ USE_XRC := 1 # Build wxAUI library (USE_GUI must be 1)? [0,1] USE_AUI := 1 +# Build wxPropertyGrid library (USE_GUI must be 1)? [0,1] +USE_PROPGRID := 1 + # Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1] USE_RICHTEXT := 1 diff --git a/build/msw/config.vc b/build/msw/config.vc index 53fae08ef5..b32d5b6864 100644 --- a/build/msw/config.vc +++ b/build/msw/config.vc @@ -86,6 +86,9 @@ USE_XRC = 1 # Build wxAUI library (USE_GUI must be 1)? [0,1] USE_AUI = 1 +# Build wxPropertyGrid library (USE_GUI must be 1)? [0,1] +USE_PROPGRID = 1 + # Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1] USE_RICHTEXT = 1 diff --git a/build/msw/config.wat b/build/msw/config.wat index 28806dc827..16374f0c83 100644 --- a/build/msw/config.wat +++ b/build/msw/config.wat @@ -77,6 +77,9 @@ USE_XRC = 1 # Build wxAUI library (USE_GUI must be 1)? [0,1] USE_AUI = 1 +# Build wxPropertyGrid library (USE_GUI must be 1)? [0,1] +USE_PROPGRID = 1 + # Build wxRichTextCtrl library (USE_GUI must be 1)? [0,1] USE_RICHTEXT = 1 diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index b48c6d6730..554b510c9b 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -28,8 +28,9 @@ MAKEARGS = -DCC="$(CC)" -DCXX="$(CXX)" -DCFLAGS="$(CFLAGS)" \ -DDEBUG_INFO="$(DEBUG_INFO)" -DDEBUG_FLAG="$(DEBUG_FLAG)" \ -DMONOLITHIC="$(MONOLITHIC)" -DUSE_GUI="$(USE_GUI)" \ -DUSE_HTML="$(USE_HTML)" -DUSE_MEDIA="$(USE_MEDIA)" -DUSE_XRC="$(USE_XRC)" \ - -DUSE_AUI="$(USE_AUI)" -DUSE_RICHTEXT="$(USE_RICHTEXT)" \ - -DUSE_STC="$(USE_STC)" -DUSE_OPENGL="$(USE_OPENGL)" -DUSE_QA="$(USE_QA)" \ + -DUSE_AUI="$(USE_AUI)" -DUSE_PROPGRID="$(USE_PROPGRID)" \ + -DUSE_RICHTEXT="$(USE_RICHTEXT)" -DUSE_STC="$(USE_STC)" \ + -DUSE_OPENGL="$(USE_OPENGL)" -DUSE_QA="$(USE_QA)" \ -DUSE_EXCEPTIONS="$(USE_EXCEPTIONS)" -DUSE_RTTI="$(USE_RTTI)" \ -DUSE_THREADS="$(USE_THREADS)" -DUSE_GDIPLUS="$(USE_GDIPLUS)" \ -DOFFICIAL_BUILD="$(OFFICIAL_BUILD)" -DVENDOR="$(VENDOR)" \ @@ -1223,6 +1224,42 @@ AUILIB_OBJECTS = \ $(OBJS)\auilib_auibook.obj \ $(OBJS)\auilib_auibar.obj \ $(OBJS)\auilib_tabmdi.obj +PROPGRIDDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \ + $(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include -DWXBUILDING \ + -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib \ + -I..\..\src\regex -I..\..\src\expat\lib -DWXUSINGDLL -DWXMAKINGDLL_PROPGRID \ + -Hu -H=$(OBJS)\wxprec_propgriddll.csm $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDDLL_OBJECTS = \ + $(OBJS)\propgriddll_dummy.obj \ + $(OBJS)\propgriddll_advprops.obj \ + $(OBJS)\propgriddll_editors.obj \ + $(OBJS)\propgriddll_manager.obj \ + $(OBJS)\propgriddll_property.obj \ + $(OBJS)\propgriddll_propgrid.obj \ + $(OBJS)\propgriddll_propgridiface.obj \ + $(OBJS)\propgriddll_propgridpagestate.obj \ + $(OBJS)\propgriddll_props.obj +PROPGRIDLIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \ + $(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include -DWXBUILDING \ + -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib \ + -I..\..\src\regex -I..\..\src\expat\lib -Hu \ + -H=$(OBJS)\wxprec_propgridlib.csm $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDLIB_OBJECTS = \ + $(OBJS)\propgridlib_dummy.obj \ + $(OBJS)\propgridlib_advprops.obj \ + $(OBJS)\propgridlib_editors.obj \ + $(OBJS)\propgridlib_manager.obj \ + $(OBJS)\propgridlib_property.obj \ + $(OBJS)\propgridlib_propgrid.obj \ + $(OBJS)\propgridlib_propgridiface.obj \ + $(OBJS)\propgridlib_propgridpagestate.obj \ + $(OBJS)\propgridlib_props.obj RICHTEXTDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \ $(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ @@ -1469,6 +1506,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_auibook.obj \ $(OBJS)\monodll_auibar.obj \ $(OBJS)\monodll_tabmdi.obj \ + $(OBJS)\monodll_advprops.obj \ + $(OBJS)\monodll_editors.obj \ + $(OBJS)\monodll_manager.obj \ + $(OBJS)\monodll_property.obj \ + $(OBJS)\monodll_propgrid.obj \ + $(OBJS)\monodll_propgridiface.obj \ + $(OBJS)\monodll_propgridpagestate.obj \ + $(OBJS)\monodll_props.obj \ $(OBJS)\monodll_richtextctrl.obj \ $(OBJS)\monodll_richtextbuffer.obj \ $(OBJS)\monodll_richtextstyles.obj \ @@ -2126,6 +2171,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_auibook.obj \ $(OBJS)\monolib_auibar.obj \ $(OBJS)\monolib_tabmdi.obj \ + $(OBJS)\monolib_advprops.obj \ + $(OBJS)\monolib_editors.obj \ + $(OBJS)\monolib_manager.obj \ + $(OBJS)\monolib_property.obj \ + $(OBJS)\monolib_propgrid.obj \ + $(OBJS)\monolib_propgridiface.obj \ + $(OBJS)\monolib_propgridpagestate.obj \ + $(OBJS)\monolib_props.obj \ $(OBJS)\monolib_richtextctrl.obj \ $(OBJS)\monolib_richtextbuffer.obj \ $(OBJS)\monolib_richtextstyles.obj \ @@ -3893,6 +3946,20 @@ ____wxaui_namedll_DEP = $(__auidll___depname) !if "$(SHARED)" == "0" ____wxaui_namelib_DEP = $(__auilib___depname) !endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_PROPGRID)" == "1" +__propgriddll___depname = \ + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).dll +!endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_PROPGRID)" == "1" +__propgridlib___depname = \ + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +!if "$(SHARED)" == "1" +____wxpropgrid_namedll_DEP = $(__propgriddll___depname) +!endif +!if "$(SHARED)" == "0" +____wxpropgrid_namelib_DEP = $(__propgridlib___depname) +!endif !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_RICHTEXT)" == "1" __richtextdll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).dll @@ -3958,10 +4025,10 @@ __htmldll_library_link_LIBR = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html.lib !endif !if "$(USE_THREADS)" == "0" -__THREADSFLAG_11 = +__THREADSFLAG_12 = !endif !if "$(USE_THREADS)" == "1" -__THREADSFLAG_11 = mt +__THREADSFLAG_12 = mt !endif !if "$(RUNTIME_LIBS)" == "dynamic" __RUNTIME_LIBS_4 = i @@ -3970,34 +4037,34 @@ __RUNTIME_LIBS_4 = i __RUNTIME_LIBS_4 = !endif !if "$(WXUNIV)" == "1" -__WXUNIV_DEFINE_p_54 = -d__WXUNIVERSAL__ +__WXUNIV_DEFINE_p_58 = -d__WXUNIVERSAL__ !endif !if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" -__DEBUG_DEFINE_p_53 = -d__WXDEBUG__ +__DEBUG_DEFINE_p_57 = -d__WXDEBUG__ !endif !if "$(DEBUG_FLAG)" == "1" -__DEBUG_DEFINE_p_53 = -d__WXDEBUG__ +__DEBUG_DEFINE_p_57 = -d__WXDEBUG__ !endif !if "$(USE_EXCEPTIONS)" == "0" -__EXCEPTIONS_DEFINE_p_53 = -dwxNO_EXCEPTIONS +__EXCEPTIONS_DEFINE_p_57 = -dwxNO_EXCEPTIONS !endif !if "$(USE_RTTI)" == "0" -__RTTI_DEFINE_p_53 = -dwxNO_RTTI +__RTTI_DEFINE_p_57 = -dwxNO_RTTI !endif !if "$(USE_THREADS)" == "0" -__THREAD_DEFINE_p_53 = -dwxNO_THREADS +__THREAD_DEFINE_p_57 = -dwxNO_THREADS !endif !if "$(UNICODE)" == "0" -__UNICODE_DEFINE_p_54 = -dwxUSE_UNICODE=0 +__UNICODE_DEFINE_p_58 = -dwxUSE_UNICODE=0 !endif !if "$(UNICODE)" == "1" -__UNICODE_DEFINE_p_54 = -d_UNICODE +__UNICODE_DEFINE_p_58 = -d_UNICODE !endif !if "$(MSLU)" == "1" -__MSLU_DEFINE_p_53 = -dwxUSE_UNICODE_MSLU=1 +__MSLU_DEFINE_p_57 = -dwxUSE_UNICODE_MSLU=1 !endif !if "$(USE_GDIPLUS)" == "1" -__GFXCTX_DEFINE_p_53 = -dwxUSE_GRAPHICS_CONTEXT=1 +__GFXCTX_DEFINE_p_57 = -dwxUSE_GRAPHICS_CONTEXT=1 !endif !if "$(USE_GUI)" == "1" __LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib @@ -4088,7 +4155,7 @@ $(OBJS): ### Targets: ### -all: setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file +all: setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__propgriddll___depname) $(__propgridlib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file clean: -if exist $(OBJS)\*.obj del $(OBJS)\*.obj @@ -4189,6 +4256,14 @@ clean: -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_bcc$(VENDORTAG).ils del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_bcc$(VENDORTAG).ils -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).dll + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).tds del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).tds + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ilc del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ilc + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ild del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ild + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ilf del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ilf + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ils del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).ils + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).dll -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).tds del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).tds -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).ilc del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).ilc @@ -4273,7 +4348,7 @@ $(LIBDIRNAME)\wxscintilla$(WXDEBUGFLAG).lib: $(WXSCINTILLA_OBJECTS) !if "$(MONOLITHIC)" == "1" && "$(SHARED)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG).dll: $(OBJS)\monodll_dummy.obj $(MONODLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\monodll_version.res $(__wxscintilla_library_link_DEP) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(MONODLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__wxscintilla) import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\monodll_version.res + c0d32.obj $(MONODLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__wxscintilla) import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\monodll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) $@ !endif @@ -4289,7 +4364,7 @@ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXD !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" $(LIBDIRNAME)\wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG).dll: $(OBJS)\basedll_dummy.obj $(BASEDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\basedll_version.res ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(BASEDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\basedll_version.res + c0d32.obj $(BASEDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\basedll_version.res | implib -f $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) $@ !endif @@ -4309,7 +4384,7 @@ wxbase: $(____wxbase_namedll_DEP) $(____wxbase_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" $(LIBDIRNAME)\wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_bcc$(VENDORTAG).dll: $(OBJS)\netdll_dummy.obj $(NETDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\netdll_version.res $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(NETDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\netdll_version.res + c0d32.obj $(NETDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\netdll_version.res | implib -f $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net $@ !endif @@ -4329,7 +4404,7 @@ wxnet: $(____wxnet_namedll_DEP) $(____wxnet_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_bcc$(VENDORTAG).dll: $(OBJS)\coredll_dummy.obj $(COREDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\coredll_version.res $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(COREDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\coredll_version.res + c0d32.obj $(COREDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\coredll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core $@ !endif @@ -4349,7 +4424,7 @@ wxcore: $(____wxcore_namedll_DEP) $(____wxcore_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_bcc$(VENDORTAG).dll: $(OBJS)\advdll_dummy.obj $(ADVDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\advdll_version.res $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(ADVDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\advdll_version.res + c0d32.obj $(ADVDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\advdll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv $@ !endif @@ -4369,7 +4444,7 @@ wxadv: $(____wxadv_namedll_DEP) $(____wxadv_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_MEDIA)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_bcc$(VENDORTAG).dll: $(OBJS)\mediadll_dummy.obj $(MEDIADLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\mediadll_version.res $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(MEDIADLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\mediadll_version.res + c0d32.obj $(MEDIADLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\mediadll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media $@ !endif @@ -4389,7 +4464,7 @@ wxmedia: $(____wxmedia_namedll_DEP) $(____wxmedia_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_HTML)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_bcc$(VENDORTAG).dll: $(OBJS)\htmldll_dummy.obj $(HTMLDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\htmldll_version.res $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(HTMLDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\htmldll_version.res + c0d32.obj $(HTMLDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\htmldll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html $@ !endif @@ -4409,7 +4484,7 @@ wxhtml: $(____wxhtml_namedll_DEP) $(____wxhtml_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_QA)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_bcc$(VENDORTAG).dll: $(OBJS)\qadll_dummy.obj $(QADLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\qadll_version.res $(__coredll___depname) $(__basedll___depname) $(__xmldll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(QADLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\qadll_version.res + c0d32.obj $(QADLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\qadll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa $@ !endif @@ -4429,7 +4504,7 @@ wxqa: $(____wxqa_namedll_DEP) $(____wxqa_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" $(LIBDIRNAME)\wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_bcc$(VENDORTAG).dll: $(OBJS)\xmldll_dummy.obj $(XMLDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\xmldll_version.res $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(XMLDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\xmldll_version.res + c0d32.obj $(XMLDLL_OBJECTS),$@,, wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\xmldll_version.res | implib -f $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml $@ !endif @@ -4449,7 +4524,7 @@ wxxml: $(____wxxml_namedll_DEP) $(____wxxml_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_XRC)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_bcc$(VENDORTAG).dll: $(OBJS)\xrcdll_dummy.obj $(XRCDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\xrcdll_version.res $(__htmldll_library_link_DEP) $(__advdll___depname) $(__coredll___depname) $(__xmldll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(XRCDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__htmldll_library_link_LIBR) $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\xrcdll_version.res + c0d32.obj $(XRCDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__htmldll_library_link_LIBR) $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\xrcdll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc $@ !endif @@ -4469,7 +4544,7 @@ wxxrc: $(____wxxrc_namedll_DEP) $(____wxxrc_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_AUI)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_bcc$(VENDORTAG).dll: $(OBJS)\auidll_dummy.obj $(AUIDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\auidll_version.res $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(AUIDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\auidll_version.res + c0d32.obj $(AUIDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\auidll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui $@ !endif @@ -4486,10 +4561,30 @@ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXD wxaui: $(____wxaui_namedll_DEP) $(____wxaui_namelib_DEP) !endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_PROPGRID)" == "1" +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG).dll: $(OBJS)\propgriddll_dummy.obj $(PROPGRIDDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\propgriddll_version.res $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) + ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| + c0d32.obj $(PROPGRIDDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\propgriddll_version.res +| + implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid $@ +!endif + +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_PROPGRID)" == "1" +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib: $(OBJS)\propgridlib_dummy.obj $(PROPGRIDLIB_OBJECTS) + if exist $@ del $@ + tlib /a /p4096 $@ @&&| + $(PROPGRIDLIB_OBJECTS) +| +!endif + +!if "$(MONOLITHIC)" == "0" && "$(USE_PROPGRID)" == "1" +wxpropgrid: $(____wxpropgrid_namedll_DEP) $(____wxpropgrid_namelib_DEP) +!endif + !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_RICHTEXT)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG).dll: $(OBJS)\richtextdll_dummy.obj $(RICHTEXTDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\richtextdll_version.res $(__advdll___depname) $(__htmldll_library_link_DEP) $(__xmldll___depname) $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(RICHTEXTDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(__htmldll_library_link_LIBR) $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\richtextdll_version.res + c0d32.obj $(RICHTEXTDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(__htmldll_library_link_LIBR) $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\richtextdll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext $@ !endif @@ -4509,7 +4604,7 @@ wxrichtext: $(____wxrichtext_namedll_DEP) $(____wxrichtext_namelib_DEP) !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_STC)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).dll: $(OBJS)\stcdll_dummy.obj $(STCDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(__wxscintilla) $(OBJS)\stcdll_version.res $(__coredll___depname) $(__basedll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(STCDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxscintilla$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\stcdll_version.res + c0d32.obj $(STCDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wxscintilla$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\stcdll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc $@ !endif @@ -4529,7 +4624,7 @@ wxstc: $(____wxstc_namedll_DEP) $(____wxstc_namelib_DEP) !if "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_OPENGL)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_bcc$(VENDORTAG).dll: $(OBJS)\gldll_dummy.obj $(GLDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\gldll_version.res $(__basedll___depname) $(__coredll___depname) $(__monodll___depname) ilink32 -Tpd -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) @&&| - c0d32.obj $(GLDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) import32.lib cw32$(__THREADSFLAG_11)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\gldll_version.res + c0d32.obj $(GLDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) import32.lib cw32$(__THREADSFLAG_12)$(__RUNTIME_LIBS_4).lib,, $(OBJS)\gldll_version.res | implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl $@ !endif @@ -6009,6 +6104,30 @@ $(OBJS)\monodll_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\monodll_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\monodll_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\monodll_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\monodll_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\monodll_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\monodll_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\monodll_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\monodll_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\monodll_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\monodll_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -7392,7 +7511,7 @@ $(OBJS)\monodll_joystick.obj: ..\..\src\msw\joystick.cpp !endif $(OBJS)\monodll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_BASE=1 -dWXMAKINGDLL -i..\..\src\stc\scintilla\include -i..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_BASE=1 -dWXMAKINGDLL -i..\..\src\stc\scintilla\include -i..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS ..\..\src\msw\version.rc $(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp @@ -8168,6 +8287,30 @@ $(OBJS)\monolib_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\monolib_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\monolib_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\monolib_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\monolib_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\monolib_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\monolib_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\monolib_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\monolib_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\monolib_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\monolib_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -9554,7 +9697,7 @@ $(OBJS)\basedll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\basedll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXMAKINGDLL_BASE -dwxUSE_BASE=1 ..\..\src\msw\version.rc $(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp @@ -10175,7 +10318,7 @@ $(OBJS)\netdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\netdll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXUSINGDLL -dWXMAKINGDLL_NET ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXUSINGDLL -dWXMAKINGDLL_NET ..\..\src\msw\version.rc $(OBJS)\netdll_fs_inet.obj: ..\..\src\common\fs_inet.cpp $(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) ..\..\src\common\fs_inet.cpp @@ -10262,7 +10405,7 @@ $(OBJS)\coredll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\coredll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_CORE -dwxUSE_BASE=0 ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_CORE -dwxUSE_BASE=0 ..\..\src\msw\version.rc $(OBJS)\coredll_event.obj: ..\..\src\common\event.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\event.cpp @@ -12937,7 +13080,7 @@ $(OBJS)\advdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\advdll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_ADV ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_ADV ..\..\src\msw\version.rc $(OBJS)\advdll_bmpcbox.obj: ..\..\src\msw\bmpcbox.cpp $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\bmpcbox.cpp @@ -13166,7 +13309,7 @@ $(OBJS)\mediadll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(MEDIADLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\mediadll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_MEDIA ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_MEDIA ..\..\src\msw\version.rc $(OBJS)\mediadll_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp $(CXX) -q -c -P -o$@ $(MEDIADLL_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp @@ -13205,7 +13348,7 @@ $(OBJS)\htmldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(HTMLDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\htmldll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_HTML ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_HTML ..\..\src\msw\version.rc $(OBJS)\htmldll_helpbest.obj: ..\..\src\msw\helpbest.cpp $(CXX) -q -c -P -o$@ $(HTMLDLL_CXXFLAGS) ..\..\src\msw\helpbest.cpp @@ -13358,7 +13501,7 @@ $(OBJS)\qadll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(QADLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\qadll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_QA ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_QA ..\..\src\msw\version.rc $(OBJS)\qadll_debugrpt.obj: ..\..\src\common\debugrpt.cpp $(CXX) -q -c -P -o$@ $(QADLL_CXXFLAGS) ..\..\src\common\debugrpt.cpp @@ -13379,7 +13522,7 @@ $(OBJS)\xmldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(XMLDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\xmldll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXUSINGDLL -dWXMAKINGDLL_XML ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dwxUSE_GUI=0 -dWXUSINGDLL -dWXMAKINGDLL_XML ..\..\src\msw\version.rc $(OBJS)\xmldll_xml.obj: ..\..\src\xml\xml.cpp $(CXX) -q -c -P -o$@ $(XMLDLL_CXXFLAGS) ..\..\src\xml\xml.cpp @@ -13400,7 +13543,7 @@ $(OBJS)\xrcdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\xrcdll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_XRC ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_XRC ..\..\src\msw\version.rc $(OBJS)\xrcdll_xh_animatctrl.obj: ..\..\src\xrc\xh_animatctrl.cpp $(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_animatctrl.cpp @@ -13757,7 +13900,7 @@ $(OBJS)\auidll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(AUIDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\auidll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_AUI ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_AUI ..\..\src\msw\version.rc $(OBJS)\auidll_framemanager.obj: ..\..\src\aui\framemanager.cpp $(CXX) -q -c -P -o$@ $(AUIDLL_CXXFLAGS) ..\..\src\aui\framemanager.cpp @@ -13798,11 +13941,68 @@ $(OBJS)\auilib_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\auilib_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) -q -c -P -o$@ $(AUILIB_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\propgriddll_dummy.obj: ..\..\src\common\dummy.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp + +$(OBJS)\propgriddll_version.res: ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_PROPGRID ..\..\src\msw\version.rc + +$(OBJS)\propgriddll_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\propgriddll_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\propgriddll_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\propgriddll_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\propgriddll_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\propgriddll_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\propgriddll_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\propgriddll_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\props.cpp + +$(OBJS)\propgridlib_dummy.obj: ..\..\src\common\dummy.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp + +$(OBJS)\propgridlib_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\propgridlib_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\propgridlib_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\propgridlib_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\propgridlib_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\propgridlib_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\propgridlib_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\propgridlib_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) -q -c -P -o$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\richtextdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(RICHTEXTDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\richtextdll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_RICHTEXT ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_RICHTEXT ..\..\src\msw\version.rc $(OBJS)\richtextdll_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) -q -c -P -o$@ $(RICHTEXTDLL_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -13865,7 +14065,7 @@ $(OBJS)\stcdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\stcdll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -i..\..\src\stc\scintilla\include -i..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS -dWXUSINGDLL -dWXMAKINGDLL_STC ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -i..\..\src\stc\scintilla\include -i..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS -dWXUSINGDLL -dWXMAKINGDLL_STC ..\..\src\msw\version.rc $(OBJS)\stcdll_stc.obj: ..\..\src\stc\stc.cpp $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) ..\..\src\stc\stc.cpp @@ -13892,7 +14092,7 @@ $(OBJS)\gldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) -q -c -P -o$@ $(GLDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp $(OBJS)\gldll_version.res: ..\..\src\msw\version.rc - brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_GL ..\..\src\msw\version.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) -i$(SETUPHDIR) -i..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_bcc$(VENDORTAG) -i..\..\src\tiff\libtiff -i..\..\src\jpeg -i..\..\src\png -i..\..\src\zlib -i..\..\src\regex -i..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_GL ..\..\src\msw\version.rc $(OBJS)\gldll_glcmn.obj: ..\..\src\common\glcmn.cpp $(CXX) -q -c -P -o$@ $(GLDLL_CXXFLAGS) ..\..\src\common\glcmn.cpp diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 220796800f..14db0c9b20 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -20,8 +20,8 @@ MAKEARGS = LINK_DLL_FLAGS="$(LINK_DLL_FLAGS)" \ DEBUG_INFO="$(DEBUG_INFO)" DEBUG_FLAG="$(DEBUG_FLAG)" \ MONOLITHIC="$(MONOLITHIC)" USE_GUI="$(USE_GUI)" USE_HTML="$(USE_HTML)" \ USE_MEDIA="$(USE_MEDIA)" USE_XRC="$(USE_XRC)" USE_AUI="$(USE_AUI)" \ - USE_RICHTEXT="$(USE_RICHTEXT)" USE_STC="$(USE_STC)" \ - USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" \ + USE_PROPGRID="$(USE_PROPGRID)" USE_RICHTEXT="$(USE_RICHTEXT)" \ + USE_STC="$(USE_STC)" USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" \ USE_EXCEPTIONS="$(USE_EXCEPTIONS)" USE_RTTI="$(USE_RTTI)" \ USE_THREADS="$(USE_THREADS)" USE_GDIPLUS="$(USE_GDIPLUS)" \ OFFICIAL_BUILD="$(OFFICIAL_BUILD)" VENDOR="$(VENDOR)" \ @@ -1227,6 +1227,44 @@ AUILIB_OBJECTS = \ $(OBJS)\auilib_auibook.o \ $(OBJS)\auilib_auibar.o \ $(OBJS)\auilib_tabmdi.o +PROPGRIDDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \ + $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include -W -Wall -DWXBUILDING \ + -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib \ + -I..\..\src\regex -I..\..\src\expat\lib -DWXUSINGDLL -DWXMAKINGDLL_PROPGRID \ + $(__RTTIFLAG) $(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy $(CPPFLAGS) \ + $(CXXFLAGS) +PROPGRIDDLL_OBJECTS = \ + $(OBJS)\propgriddll_dummy.o \ + $(OBJS)\propgriddll_version_rc.o \ + $(OBJS)\propgriddll_advprops.o \ + $(OBJS)\propgriddll_editors.o \ + $(OBJS)\propgriddll_manager.o \ + $(OBJS)\propgriddll_property.o \ + $(OBJS)\propgriddll_propgrid.o \ + $(OBJS)\propgriddll_propgridiface.o \ + $(OBJS)\propgriddll_propgridpagestate.o \ + $(OBJS)\propgriddll_props.o +PROPGRIDLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \ + $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I..\..\include -W -Wall -DWXBUILDING \ + -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib \ + -I..\..\src\regex -I..\..\src\expat\lib $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \ + -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDLIB_OBJECTS = \ + $(OBJS)\propgridlib_dummy.o \ + $(OBJS)\propgridlib_advprops.o \ + $(OBJS)\propgridlib_editors.o \ + $(OBJS)\propgridlib_manager.o \ + $(OBJS)\propgridlib_property.o \ + $(OBJS)\propgridlib_propgrid.o \ + $(OBJS)\propgridlib_propgridiface.o \ + $(OBJS)\propgridlib_propgridpagestate.o \ + $(OBJS)\propgridlib_props.o RICHTEXTDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \ $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ @@ -1485,6 +1523,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_auibook.o \ $(OBJS)\monodll_auibar.o \ $(OBJS)\monodll_tabmdi.o \ + $(OBJS)\monodll_advprops.o \ + $(OBJS)\monodll_editors.o \ + $(OBJS)\monodll_manager.o \ + $(OBJS)\monodll_property.o \ + $(OBJS)\monodll_propgrid.o \ + $(OBJS)\monodll_propgridiface.o \ + $(OBJS)\monodll_propgridpagestate.o \ + $(OBJS)\monodll_props.o \ $(OBJS)\monodll_richtextctrl.o \ $(OBJS)\monodll_richtextbuffer.o \ $(OBJS)\monodll_richtextstyles.o \ @@ -2148,6 +2194,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_auibook.o \ $(OBJS)\monolib_auibar.o \ $(OBJS)\monolib_tabmdi.o \ + $(OBJS)\monolib_advprops.o \ + $(OBJS)\monolib_editors.o \ + $(OBJS)\monolib_manager.o \ + $(OBJS)\monolib_property.o \ + $(OBJS)\monolib_propgrid.o \ + $(OBJS)\monolib_propgridiface.o \ + $(OBJS)\monolib_propgridpagestate.o \ + $(OBJS)\monolib_props.o \ $(OBJS)\monolib_richtextctrl.o \ $(OBJS)\monolib_richtextbuffer.o \ $(OBJS)\monolib_richtextstyles.o \ @@ -4009,6 +4063,28 @@ ____wxaui_namelib_DEP = $(__auilib___depname) endif ifeq ($(MONOLITHIC),0) ifeq ($(SHARED),1) +ifeq ($(USE_PROPGRID),1) +__propgriddll___depname = \ + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_gcc$(VENDORTAG).dll +endif +endif +endif +ifeq ($(MONOLITHIC),0) +ifeq ($(SHARED),0) +ifeq ($(USE_PROPGRID),1) +__propgridlib___depname = \ + $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a +endif +endif +endif +ifeq ($(SHARED),1) +____wxpropgrid_namedll_DEP = $(__propgriddll___depname) +endif +ifeq ($(SHARED),0) +____wxpropgrid_namelib_DEP = $(__propgridlib___depname) +endif +ifeq ($(MONOLITHIC),0) +ifeq ($(SHARED),1) ifeq ($(USE_RICHTEXT),1) __richtextdll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_gcc$(VENDORTAG).dll @@ -4108,36 +4184,36 @@ endif endif endif ifeq ($(WXUNIV),1) -__WXUNIV_DEFINE_p_54 = --define __WXUNIVERSAL__ +__WXUNIV_DEFINE_p_58 = --define __WXUNIVERSAL__ endif ifeq ($(BUILD),debug) ifeq ($(DEBUG_FLAG),default) -__DEBUG_DEFINE_p_53 = --define __WXDEBUG__ +__DEBUG_DEFINE_p_57 = --define __WXDEBUG__ endif endif ifeq ($(DEBUG_FLAG),1) -__DEBUG_DEFINE_p_53 = --define __WXDEBUG__ +__DEBUG_DEFINE_p_57 = --define __WXDEBUG__ endif ifeq ($(USE_EXCEPTIONS),0) -__EXCEPTIONS_DEFINE_p_53 = --define wxNO_EXCEPTIONS +__EXCEPTIONS_DEFINE_p_57 = --define wxNO_EXCEPTIONS endif ifeq ($(USE_RTTI),0) -__RTTI_DEFINE_p_53 = --define wxNO_RTTI +__RTTI_DEFINE_p_57 = --define wxNO_RTTI endif ifeq ($(USE_THREADS),0) -__THREAD_DEFINE_p_53 = --define wxNO_THREADS +__THREAD_DEFINE_p_57 = --define wxNO_THREADS endif ifeq ($(UNICODE),0) -__UNICODE_DEFINE_p_54 = --define wxUSE_UNICODE=0 +__UNICODE_DEFINE_p_58 = --define wxUSE_UNICODE=0 endif ifeq ($(UNICODE),1) -__UNICODE_DEFINE_p_54 = --define _UNICODE +__UNICODE_DEFINE_p_58 = --define _UNICODE endif ifeq ($(MSLU),1) -__MSLU_DEFINE_p_53 = --define wxUSE_UNICODE_MSLU=1 +__MSLU_DEFINE_p_57 = --define wxUSE_UNICODE_MSLU=1 endif ifeq ($(USE_GDIPLUS),1) -__GFXCTX_DEFINE_p_53 = --define wxUSE_GRAPHICS_CONTEXT=1 +__GFXCTX_DEFINE_p_57 = --define wxUSE_GRAPHICS_CONTEXT=1 endif ifeq ($(USE_GUI),1) __LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG) @@ -4240,7 +4316,7 @@ $(OBJS): ### Targets: ### -all: setup_h $(LIBDIRNAME)\libwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxzlib$(WXDEBUGFLAG).a $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\libwxexpat$(WXDEBUGFLAG).a $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file +all: setup_h $(LIBDIRNAME)\libwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxzlib$(WXDEBUGFLAG).a $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\libwxexpat$(WXDEBUGFLAG).a $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__propgriddll___depname) $(__propgridlib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file clean: -if exist $(OBJS)\*.o del $(OBJS)\*.o @@ -4285,6 +4361,9 @@ clean: -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_gcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_gcc$(VENDORTAG).dll -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.a -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.a + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_gcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_gcc$(VENDORTAG).dll + -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a + -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_gcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_gcc$(VENDORTAG).dll -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.a -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.a @@ -4613,6 +4692,32 @@ wxaui: $(____wxaui_namedll_DEP) $(____wxaui_namelib_DEP) endif endif +ifeq ($(MONOLITHIC),0) +ifeq ($(SHARED),1) +ifeq ($(USE_PROPGRID),1) +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_gcc$(VENDORTAG).dll: $(PROPGRIDDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\libwxexpat$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxzlib$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).a $(OBJS)\propgriddll_version_rc.o $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) + $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(PROPGRIDDLL_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib=$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.a $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.a $(LIBDIRNAME)\libwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).a +endif +endif +endif + +ifeq ($(MONOLITHIC),0) +ifeq ($(SHARED),0) +ifeq ($(USE_PROPGRID),1) +$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.a: $(PROPGRIDLIB_OBJECTS) + if exist $@ del $@ + ar rcu $@ $(PROPGRIDLIB_OBJECTS) + ranlib $@ +endif +endif +endif + +ifeq ($(MONOLITHIC),0) +ifeq ($(USE_PROPGRID),1) +wxpropgrid: $(____wxpropgrid_namedll_DEP) $(____wxpropgrid_namelib_DEP) +endif +endif + ifeq ($(MONOLITHIC),0) ifeq ($(SHARED),1) ifeq ($(USE_RICHTEXT),1) @@ -6151,6 +6256,30 @@ $(OBJS)\monodll_auibar.o: ../../src/aui/auibar.cpp $(OBJS)\monodll_tabmdi.o: ../../src/aui/tabmdi.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monodll_advprops.o: ../../src/propgrid/advprops.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_editors.o: ../../src/propgrid/editors.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_manager.o: ../../src/propgrid/manager.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_property.o: ../../src/propgrid/property.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_propgrid.o: ../../src/propgrid/propgrid.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_propgridiface.o: ../../src/propgrid/propgridiface.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_propgridpagestate.o: ../../src/propgrid/propgridpagestate.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monodll_props.o: ../../src/propgrid/props.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monodll_richtextctrl.o: ../../src/richtext/richtextctrl.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -7648,7 +7777,7 @@ $(OBJS)\monodll_joystick.o: ../../src/msw/joystick.cpp endif $(OBJS)\monodll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir ../../src/stc/scintilla/include --include-dir ../../src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_BASE=1 --define WXMAKINGDLL --include-dir ../../src/stc/scintilla/include --include-dir ../../src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS $(OBJS)\monolib_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -8424,6 +8553,30 @@ $(OBJS)\monolib_auibar.o: ../../src/aui/auibar.cpp $(OBJS)\monolib_tabmdi.o: ../../src/aui/tabmdi.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monolib_advprops.o: ../../src/propgrid/advprops.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_editors.o: ../../src/propgrid/editors.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_manager.o: ../../src/propgrid/manager.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_property.o: ../../src/propgrid/property.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_propgrid.o: ../../src/propgrid/propgrid.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_propgridiface.o: ../../src/propgrid/propgridiface.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_propgridpagestate.o: ../../src/propgrid/propgridpagestate.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\monolib_props.o: ../../src/propgrid/props.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monolib_richtextctrl.o: ../../src/richtext/richtextctrl.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -9924,7 +10077,7 @@ $(OBJS)\basedll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\basedll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1 + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXMAKINGDLL_BASE --define wxUSE_BASE=1 $(OBJS)\basedll_appbase.o: ../../src/common/appbase.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< @@ -10545,7 +10698,7 @@ $(OBJS)\netdll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\netdll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_NET + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_NET $(OBJS)\netdll_fs_inet.o: ../../src/common/fs_inet.cpp $(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $< @@ -10632,7 +10785,7 @@ $(OBJS)\coredll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\coredll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_CORE --define wxUSE_BASE=0 + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_CORE --define wxUSE_BASE=0 $(OBJS)\coredll_event.o: ../../src/common/event.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< @@ -13531,7 +13684,7 @@ $(OBJS)\advdll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\advdll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_ADV + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_ADV $(OBJS)\advdll_bmpcbox.o: ../../src/msw/bmpcbox.cpp $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $< @@ -13760,7 +13913,7 @@ $(OBJS)\mediadll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(MEDIADLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\mediadll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_MEDIA + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_MEDIA $(OBJS)\mediadll_mediactrlcmn.o: ../../src/common/mediactrlcmn.cpp $(CXX) -c -o $@ $(MEDIADLL_CXXFLAGS) $(CPPDEPS) $< @@ -13799,7 +13952,7 @@ $(OBJS)\htmldll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(HTMLDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\htmldll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_HTML + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_HTML $(OBJS)\htmldll_helpbest.o: ../../src/msw/helpbest.cpp $(CXX) -c -o $@ $(HTMLDLL_CXXFLAGS) $(CPPDEPS) $< @@ -13952,7 +14105,7 @@ $(OBJS)\qadll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(QADLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\qadll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_QA + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_QA $(OBJS)\qadll_debugrpt.o: ../../src/common/debugrpt.cpp $(CXX) -c -o $@ $(QADLL_CXXFLAGS) $(CPPDEPS) $< @@ -13973,7 +14126,7 @@ $(OBJS)\xmldll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(XMLDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\xmldll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_XML + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define wxUSE_GUI=0 --define WXUSINGDLL --define WXMAKINGDLL_XML $(OBJS)\xmldll_xml.o: ../../src/xml/xml.cpp $(CXX) -c -o $@ $(XMLDLL_CXXFLAGS) $(CPPDEPS) $< @@ -13994,7 +14147,7 @@ $(OBJS)\xrcdll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\xrcdll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_XRC + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_XRC $(OBJS)\xrcdll_xh_animatctrl.o: ../../src/xrc/xh_animatctrl.cpp $(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14351,7 +14504,7 @@ $(OBJS)\auidll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(AUIDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\auidll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_AUI + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_AUI $(OBJS)\auidll_framemanager.o: ../../src/aui/framemanager.cpp $(CXX) -c -o $@ $(AUIDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14392,11 +14545,68 @@ $(OBJS)\auilib_auibar.o: ../../src/aui/auibar.cpp $(OBJS)\auilib_tabmdi.o: ../../src/aui/tabmdi.cpp $(CXX) -c -o $@ $(AUILIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\propgriddll_dummy.o: ../../src/common/dummy.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_version_rc.o: ../../src/msw/version.rc + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_PROPGRID + +$(OBJS)\propgriddll_advprops.o: ../../src/propgrid/advprops.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_editors.o: ../../src/propgrid/editors.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_manager.o: ../../src/propgrid/manager.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_property.o: ../../src/propgrid/property.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_propgrid.o: ../../src/propgrid/propgrid.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_propgridiface.o: ../../src/propgrid/propgridiface.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_propgridpagestate.o: ../../src/propgrid/propgridpagestate.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgriddll_props.o: ../../src/propgrid/props.cpp + $(CXX) -c -o $@ $(PROPGRIDDLL_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_dummy.o: ../../src/common/dummy.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_advprops.o: ../../src/propgrid/advprops.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_editors.o: ../../src/propgrid/editors.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_manager.o: ../../src/propgrid/manager.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_property.o: ../../src/propgrid/property.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_propgrid.o: ../../src/propgrid/propgrid.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_propgridiface.o: ../../src/propgrid/propgridiface.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_propgridpagestate.o: ../../src/propgrid/propgridpagestate.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgridlib_props.o: ../../src/propgrid/props.cpp + $(CXX) -c -o $@ $(PROPGRIDLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\richtextdll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(RICHTEXTDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\richtextdll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_RICHTEXT + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_RICHTEXT $(OBJS)\richtextdll_richtextctrl.o: ../../src/richtext/richtextctrl.cpp $(CXX) -c -o $@ $(RICHTEXTDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14459,7 +14669,7 @@ $(OBJS)\stcdll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\stcdll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --include-dir ../../src/stc/scintilla/include --include-dir ../../src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS --define WXUSINGDLL --define WXMAKINGDLL_STC + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --include-dir ../../src/stc/scintilla/include --include-dir ../../src/stc/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS --define WXUSINGDLL --define WXMAKINGDLL_STC $(OBJS)\stcdll_stc.o: ../../src/stc/stc.cpp $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14486,7 +14696,7 @@ $(OBJS)\gldll_dummy.o: ../../src/common/dummy.cpp $(CXX) -c -o $@ $(GLDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\gldll_version_rc.o: ../../src/msw/version.rc - windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_GL + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) --include-dir $(SETUPHDIR) --include-dir ../../include --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_gcc$(VENDORTAG) --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/lib --define WXUSINGDLL --define WXMAKINGDLL_GL $(OBJS)\gldll_glcmn.o: ../../src/common/glcmn.cpp $(CXX) -c -o $@ $(GLDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14503,7 +14713,7 @@ $(OBJS)\gllib_glcmn.o: ../../src/common/glcmn.cpp $(OBJS)\gllib_glcanvas.o: ../../src/msw/glcanvas.cpp $(CXX) -c -o $@ $(GLLIB_CXXFLAGS) $(CPPDEPS) $< -.PHONY: all clean setup_h wxbase wxnet wxcore wxadv wxmedia wxhtml wxqa wxxml wxxrc wxaui wxrichtext wxstc wxgl samples build_cfg_file +.PHONY: all clean setup_h wxbase wxnet wxcore wxadv wxmedia wxhtml wxqa wxxml wxxrc wxaui wxpropgrid wxrichtext wxstc wxgl samples build_cfg_file SHELL := $(COMSPEC) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index e8dcc8eb07..d481bbb88b 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -19,8 +19,8 @@ MAKEARGS = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \ DEBUG_FLAG="$(DEBUG_FLAG)" DEBUG_RUNTIME_LIBS="$(DEBUG_RUNTIME_LIBS)" \ MONOLITHIC="$(MONOLITHIC)" USE_GUI="$(USE_GUI)" USE_HTML="$(USE_HTML)" \ USE_MEDIA="$(USE_MEDIA)" USE_XRC="$(USE_XRC)" USE_AUI="$(USE_AUI)" \ - USE_RICHTEXT="$(USE_RICHTEXT)" USE_STC="$(USE_STC)" \ - USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" \ + USE_PROPGRID="$(USE_PROPGRID)" USE_RICHTEXT="$(USE_RICHTEXT)" \ + USE_STC="$(USE_STC)" USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" \ USE_EXCEPTIONS="$(USE_EXCEPTIONS)" USE_RTTI="$(USE_RTTI)" \ USE_THREADS="$(USE_THREADS)" USE_GDIPLUS="$(USE_GDIPLUS)" \ OFFICIAL_BUILD="$(OFFICIAL_BUILD)" VENDOR="$(VENDOR)" \ @@ -1304,7 +1304,50 @@ AUILIB_OBJECTS = \ $(OBJS)\auilib_auibook.obj \ $(OBJS)\auilib_auibar.obj \ $(OBJS)\auilib_tabmdi.obj -RICHTEXTDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_397)$(__DEBUGRUNTIME) /DWIN32 \ +PROPGRIDDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_397)$(__DEBUGRUNTIME) /DWIN32 \ + $(__DEBUGINFO) \ + /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).pdb \ + $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ + $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ + $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \ + $(__MSLU_DEFINE_p) $(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I..\..\include /W4 \ + /DWXBUILDING /I..\..\src\tiff\libtiff /I..\..\src\jpeg /I..\..\src\png \ + /I..\..\src\zlib /I..\..\src\regex /I..\..\src\expat\lib /DWXUSINGDLL \ + /DWXMAKINGDLL_PROPGRID $(__RTTIFLAG) $(__EXCEPTIONSFLAG) /Yu"wx/wxprec.h" \ + /Fp"$(OBJS)\wxprec_propgriddll.pch" $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDDLL_OBJECTS = \ + $(OBJS)\propgriddll_dummy.obj \ + $(OBJS)\propgriddll_version.res \ + $(OBJS)\propgriddll_advprops.obj \ + $(OBJS)\propgriddll_editors.obj \ + $(OBJS)\propgriddll_manager.obj \ + $(OBJS)\propgriddll_property.obj \ + $(OBJS)\propgriddll_propgrid.obj \ + $(OBJS)\propgriddll_propgridiface.obj \ + $(OBJS)\propgriddll_propgridpagestate.obj \ + $(OBJS)\propgriddll_props.obj +PROPGRIDLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_410)$(__DEBUGRUNTIME) /DWIN32 \ + $(__DEBUGINFO) \ + /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.pdb \ + $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ + $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \ + $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \ + $(__MSLU_DEFINE_p) $(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I..\..\include /W4 \ + /DWXBUILDING /I..\..\src\tiff\libtiff /I..\..\src\jpeg /I..\..\src\png \ + /I..\..\src\zlib /I..\..\src\regex /I..\..\src\expat\lib $(__RTTIFLAG) \ + $(__EXCEPTIONSFLAG) /Yu"wx/wxprec.h" /Fp"$(OBJS)\wxprec_propgridlib.pch" \ + $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDLIB_OBJECTS = \ + $(OBJS)\propgridlib_dummy.obj \ + $(OBJS)\propgridlib_advprops.obj \ + $(OBJS)\propgridlib_editors.obj \ + $(OBJS)\propgridlib_manager.obj \ + $(OBJS)\propgridlib_property.obj \ + $(OBJS)\propgridlib_propgrid.obj \ + $(OBJS)\propgridlib_propgridiface.obj \ + $(OBJS)\propgridlib_propgridpagestate.obj \ + $(OBJS)\propgridlib_props.obj +RICHTEXTDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_424)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1327,7 +1370,7 @@ RICHTEXTDLL_OBJECTS = \ $(OBJS)\richtextdll_richtextsymboldlg.obj \ $(OBJS)\richtextdll_richtextstyledlg.obj \ $(OBJS)\richtextdll_richtextprint.obj -RICHTEXTLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_410)$(__DEBUGRUNTIME) /DWIN32 \ +RICHTEXTLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_437)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1349,7 +1392,7 @@ RICHTEXTLIB_OBJECTS = \ $(OBJS)\richtextlib_richtextsymboldlg.obj \ $(OBJS)\richtextlib_richtextstyledlg.obj \ $(OBJS)\richtextlib_richtextprint.obj -STCDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_424)$(__DEBUGRUNTIME) /DWIN32 \ +STCDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_451)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1368,7 +1411,7 @@ STCDLL_OBJECTS = \ $(OBJS)\stcdll_stc.obj \ $(OBJS)\stcdll_PlatWX.obj \ $(OBJS)\stcdll_ScintillaWX.obj -STCLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_437)$(__DEBUGRUNTIME) /DWIN32 \ +STCLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_464)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1385,7 +1428,7 @@ STCLIB_OBJECTS = \ $(OBJS)\stclib_stc.obj \ $(OBJS)\stclib_PlatWX.obj \ $(OBJS)\stclib_ScintillaWX.obj -GLDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_451)$(__DEBUGRUNTIME) /DWIN32 \ +GLDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_478)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_vc$(VENDORTAG).pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1401,7 +1444,7 @@ GLDLL_OBJECTS = \ $(OBJS)\gldll_version.res \ $(OBJS)\gldll_glcmn.obj \ $(OBJS)\gldll_glcanvas.obj -GLLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_464)$(__DEBUGRUNTIME) /DWIN32 \ +GLLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_491)$(__DEBUGRUNTIME) /DWIN32 \ $(__DEBUGINFO) \ /Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.pdb \ $(____DEBUGRUNTIME) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ \ @@ -1643,6 +1686,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_auibook.obj \ $(OBJS)\monodll_auibar.obj \ $(OBJS)\monodll_tabmdi.obj \ + $(OBJS)\monodll_advprops.obj \ + $(OBJS)\monodll_editors.obj \ + $(OBJS)\monodll_manager.obj \ + $(OBJS)\monodll_property.obj \ + $(OBJS)\monodll_propgrid.obj \ + $(OBJS)\monodll_propgridiface.obj \ + $(OBJS)\monodll_propgridpagestate.obj \ + $(OBJS)\monodll_props.obj \ $(OBJS)\monodll_richtextctrl.obj \ $(OBJS)\monodll_richtextbuffer.obj \ $(OBJS)\monodll_richtextstyles.obj \ @@ -2306,6 +2357,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_auibook.obj \ $(OBJS)\monolib_auibar.obj \ $(OBJS)\monolib_tabmdi.obj \ + $(OBJS)\monolib_advprops.obj \ + $(OBJS)\monolib_editors.obj \ + $(OBJS)\monolib_manager.obj \ + $(OBJS)\monolib_property.obj \ + $(OBJS)\monolib_propgrid.obj \ + $(OBJS)\monolib_propgridiface.obj \ + $(OBJS)\monolib_propgridpagestate.obj \ + $(OBJS)\monolib_props.obj \ $(OBJS)\monolib_richtextctrl.obj \ $(OBJS)\monolib_richtextbuffer.obj \ $(OBJS)\monolib_richtextstyles.obj \ @@ -4193,25 +4252,51 @@ ____wxaui_namedll_DEP = $(__auidll___depname) !if "$(SHARED)" == "0" ____wxaui_namelib_DEP = $(__auilib___depname) !endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_PROPGRID)" == "1" +__propgriddll___depname = \ + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).dll +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_397 = D +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_397 = $(__THREADSFLAG) +!endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_PROPGRID)" == "1" +__propgridlib___depname = \ + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_410 = D +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_410 = $(__THREADSFLAG) +!endif +!if "$(SHARED)" == "1" +____wxpropgrid_namedll_DEP = $(__propgriddll___depname) +!endif +!if "$(SHARED)" == "0" +____wxpropgrid_namelib_DEP = $(__propgridlib___depname) +!endif !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_RICHTEXT)" == "1" __richtextdll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).dll !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_397 = D +__RUNTIME_LIBS_424 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_397 = $(__THREADSFLAG) +__RUNTIME_LIBS_424 = $(__THREADSFLAG) !endif !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_RICHTEXT)" == "1" __richtextlib___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.lib !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_410 = D +__RUNTIME_LIBS_437 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_410 = $(__THREADSFLAG) +__RUNTIME_LIBS_437 = $(__THREADSFLAG) !endif !if "$(SHARED)" == "1" ____wxrichtext_namedll_DEP = $(__richtextdll___depname) @@ -4224,20 +4309,20 @@ __stcdll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).dll !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_424 = D +__RUNTIME_LIBS_451 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_424 = $(__THREADSFLAG) +__RUNTIME_LIBS_451 = $(__THREADSFLAG) !endif !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_STC)" == "1" __stclib___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.lib !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_437 = D +__RUNTIME_LIBS_464 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_437 = $(__THREADSFLAG) +__RUNTIME_LIBS_464 = $(__THREADSFLAG) !endif !if "$(SHARED)" == "1" ____wxstc_namedll_DEP = $(__stcdll___depname) @@ -4250,10 +4335,10 @@ __gldll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_vc$(VENDORTAG).dll !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_451 = D +__RUNTIME_LIBS_478 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_451 = $(__THREADSFLAG) +__RUNTIME_LIBS_478 = $(__THREADSFLAG) !endif !if "$(MONOLITHIC)" == "0" __WXLIBGLDEP_CORE_p = \ @@ -4272,10 +4357,10 @@ __gllib___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.lib !endif !if "$(RUNTIME_LIBS)" == "dynamic" -__RUNTIME_LIBS_464 = D +__RUNTIME_LIBS_491 = D !endif !if "$(RUNTIME_LIBS)" == "static" -__RUNTIME_LIBS_464 = $(__THREADSFLAG) +__RUNTIME_LIBS_491 = $(__THREADSFLAG) !endif !if "$(SHARED)" == "1" ____wxgl_namedll_DEP = $(__gldll___depname) @@ -4318,40 +4403,40 @@ ____DEBUGRUNTIME_4 = ____DEBUGRUNTIME_4 = /d _DEBUG !endif !if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0" -__NO_VC_CRTDBG_p_60 = /d __NO_VC_CRTDBG__ +__NO_VC_CRTDBG_p_64 = /d __NO_VC_CRTDBG__ !endif !if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1" -__NO_VC_CRTDBG_p_60 = /d __NO_VC_CRTDBG__ +__NO_VC_CRTDBG_p_64 = /d __NO_VC_CRTDBG__ !endif !if "$(WXUNIV)" == "1" -__WXUNIV_DEFINE_p_54 = /d __WXUNIVERSAL__ +__WXUNIV_DEFINE_p_58 = /d __WXUNIVERSAL__ !endif !if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" -__DEBUG_DEFINE_p_53 = /d __WXDEBUG__ +__DEBUG_DEFINE_p_57 = /d __WXDEBUG__ !endif !if "$(DEBUG_FLAG)" == "1" -__DEBUG_DEFINE_p_53 = /d __WXDEBUG__ +__DEBUG_DEFINE_p_57 = /d __WXDEBUG__ !endif !if "$(USE_EXCEPTIONS)" == "0" -__EXCEPTIONS_DEFINE_p_53 = /d wxNO_EXCEPTIONS +__EXCEPTIONS_DEFINE_p_57 = /d wxNO_EXCEPTIONS !endif !if "$(USE_RTTI)" == "0" -__RTTI_DEFINE_p_53 = /d wxNO_RTTI +__RTTI_DEFINE_p_57 = /d wxNO_RTTI !endif !if "$(USE_THREADS)" == "0" -__THREAD_DEFINE_p_53 = /d wxNO_THREADS +__THREAD_DEFINE_p_57 = /d wxNO_THREADS !endif !if "$(UNICODE)" == "0" -__UNICODE_DEFINE_p_54 = /d wxUSE_UNICODE=0 +__UNICODE_DEFINE_p_58 = /d wxUSE_UNICODE=0 !endif !if "$(UNICODE)" == "1" -__UNICODE_DEFINE_p_54 = /d _UNICODE +__UNICODE_DEFINE_p_58 = /d _UNICODE !endif !if "$(MSLU)" == "1" -__MSLU_DEFINE_p_53 = /d wxUSE_UNICODE_MSLU=1 +__MSLU_DEFINE_p_57 = /d wxUSE_UNICODE_MSLU=1 !endif !if "$(USE_GDIPLUS)" == "1" -__GFXCTX_DEFINE_p_53 = /d wxUSE_GRAPHICS_CONTEXT=1 +__GFXCTX_DEFINE_p_57 = /d wxUSE_GRAPHICS_CONTEXT=1 !endif !if "$(USE_GUI)" == "1" __LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib @@ -4478,7 +4563,7 @@ $(OBJS): ### Targets: ### -all: setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file +all: setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__propgriddll___depname) $(__propgridlib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file clean: -if exist $(OBJS)\*.obj del $(OBJS)\*.obj @@ -4546,6 +4631,11 @@ clean: -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_vc$(VENDORTAG).pdb del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_vc$(VENDORTAG).pdb -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).dll + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).ilk del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).ilk + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).pdb del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).pdb + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).dll -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).ilk del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).ilk -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).pdb del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).pdb @@ -4822,6 +4912,25 @@ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXD wxaui: $(____wxaui_namedll_DEP) $(____wxaui_namelib_DEP) !endif +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_PROPGRID)" == "1" +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).dll: $(OBJS)\propgriddll_dummy.obj $(PROPGRIDDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\propgriddll_version.res $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) + link /DLL /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_4) /pdb:"$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG).pdb" $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) @<< + $(PROPGRIDDLL_OBJECTS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +<< +!endif + +!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "0" && "$(USE_PROPGRID)" == "1" +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib: $(OBJS)\propgridlib_dummy.obj $(PROPGRIDLIB_OBJECTS) + if exist $@ del $@ + link /LIB /NOLOGO /OUT:$@ @<< + $(PROPGRIDLIB_OBJECTS) +<< +!endif + +!if "$(MONOLITHIC)" == "0" && "$(USE_PROPGRID)" == "1" +wxpropgrid: $(____wxpropgrid_namedll_DEP) $(____wxpropgrid_namelib_DEP) +!endif + !if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_RICHTEXT)" == "1" $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).dll: $(OBJS)\richtextdll_dummy.obj $(RICHTEXTDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\richtextdll_version.res $(__advdll___depname) $(__htmldll_library_link_DEP) $(__xmldll___depname) $(__coredll___depname) $(__basedll___depname) link /DLL /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_4) /pdb:"$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG).pdb" $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) @<< @@ -6341,6 +6450,30 @@ $(OBJS)\monodll_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\monodll_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\monodll_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\monodll_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\monodll_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\monodll_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\monodll_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\monodll_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\monodll_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\monodll_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\monodll_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -7724,7 +7857,7 @@ $(OBJS)\monodll_joystick.obj: ..\..\src\msw\joystick.cpp !endif $(OBJS)\monodll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_BASE=1 /d WXMAKINGDLL /i ..\..\src\stc\scintilla\include /i ..\..\src\stc\scintilla\src /d __WX__ /d SCI_LEXER /d LINK_LEXERS ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_BASE=1 /d WXMAKINGDLL /i ..\..\src\stc\scintilla\include /i ..\..\src\stc\scintilla\src /d __WX__ /d SCI_LEXER /d LINK_LEXERS ..\..\src\msw\version.rc $(OBJS)\monolib_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp @@ -8500,6 +8633,30 @@ $(OBJS)\monolib_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\monolib_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\monolib_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\monolib_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\monolib_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\monolib_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\monolib_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\monolib_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\monolib_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\monolib_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\monolib_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -9886,7 +10043,7 @@ $(OBJS)\basedll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\basedll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXMAKINGDLL_BASE /d wxUSE_BASE=1 ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXMAKINGDLL_BASE /d wxUSE_BASE=1 ..\..\src\msw\version.rc $(OBJS)\basedll_appbase.obj: ..\..\src\common\appbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\appbase.cpp @@ -10507,7 +10664,7 @@ $(OBJS)\netdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\netdll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXUSINGDLL /d WXMAKINGDLL_NET ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXUSINGDLL /d WXMAKINGDLL_NET ..\..\src\msw\version.rc $(OBJS)\netdll_fs_inet.obj: ..\..\src\common\fs_inet.cpp $(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) ..\..\src\common\fs_inet.cpp @@ -10594,7 +10751,7 @@ $(OBJS)\coredll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\coredll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_CORE /d wxUSE_BASE=0 ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_CORE /d wxUSE_BASE=0 ..\..\src\msw\version.rc $(OBJS)\coredll_event.obj: ..\..\src\common\event.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\event.cpp @@ -13269,7 +13426,7 @@ $(OBJS)\advdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\advdll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_ADV ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_ADV ..\..\src\msw\version.rc $(OBJS)\advdll_bmpcbox.obj: ..\..\src\msw\bmpcbox.cpp $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\bmpcbox.cpp @@ -13498,7 +13655,7 @@ $(OBJS)\mediadll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(MEDIADLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\mediadll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_MEDIA ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_MEDIA ..\..\src\msw\version.rc $(OBJS)\mediadll_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(MEDIADLL_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp @@ -13537,7 +13694,7 @@ $(OBJS)\htmldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(HTMLDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\htmldll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_HTML ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_HTML ..\..\src\msw\version.rc $(OBJS)\htmldll_helpbest.obj: ..\..\src\msw\helpbest.cpp $(CXX) /c /nologo /TP /Fo$@ $(HTMLDLL_CXXFLAGS) ..\..\src\msw\helpbest.cpp @@ -13690,7 +13847,7 @@ $(OBJS)\qadll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(QADLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\qadll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_QA ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_qa_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_QA ..\..\src\msw\version.rc $(OBJS)\qadll_debugrpt.obj: ..\..\src\common\debugrpt.cpp $(CXX) /c /nologo /TP /Fo$@ $(QADLL_CXXFLAGS) ..\..\src\common\debugrpt.cpp @@ -13711,7 +13868,7 @@ $(OBJS)\xmldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(XMLDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\xmldll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXUSINGDLL /d WXMAKINGDLL_XML ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wxbase$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d wxUSE_GUI=0 /d WXUSINGDLL /d WXMAKINGDLL_XML ..\..\src\msw\version.rc $(OBJS)\xmldll_xml.obj: ..\..\src\xml\xml.cpp $(CXX) /c /nologo /TP /Fo$@ $(XMLDLL_CXXFLAGS) ..\..\src\xml\xml.cpp @@ -13732,7 +13889,7 @@ $(OBJS)\xrcdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\xrcdll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_XRC ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xrc_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_XRC ..\..\src\msw\version.rc $(OBJS)\xrcdll_xh_animatctrl.obj: ..\..\src\xrc\xh_animatctrl.cpp $(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_animatctrl.cpp @@ -14089,7 +14246,7 @@ $(OBJS)\auidll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(AUIDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\auidll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_AUI ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_AUI ..\..\src\msw\version.rc $(OBJS)\auidll_framemanager.obj: ..\..\src\aui\framemanager.cpp $(CXX) /c /nologo /TP /Fo$@ $(AUIDLL_CXXFLAGS) ..\..\src\aui\framemanager.cpp @@ -14130,11 +14287,68 @@ $(OBJS)\auilib_auibar.obj: ..\..\src\aui\auibar.cpp $(OBJS)\auilib_tabmdi.obj: ..\..\src\aui\tabmdi.cpp $(CXX) /c /nologo /TP /Fo$@ $(AUILIB_CXXFLAGS) ..\..\src\aui\tabmdi.cpp +$(OBJS)\propgriddll_dummy.obj: ..\..\src\common\dummy.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp + +$(OBJS)\propgriddll_version.res: ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_PROPGRID ..\..\src\msw\version.rc + +$(OBJS)\propgriddll_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\propgriddll_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\propgriddll_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\propgriddll_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\propgriddll_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\propgriddll_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\propgriddll_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\propgriddll_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDDLL_CXXFLAGS) ..\..\src\propgrid\props.cpp + +$(OBJS)\propgridlib_dummy.obj: ..\..\src\common\dummy.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp + +$(OBJS)\propgridlib_advprops.obj: ..\..\src\propgrid\advprops.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp + +$(OBJS)\propgridlib_editors.obj: ..\..\src\propgrid\editors.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\editors.cpp + +$(OBJS)\propgridlib_manager.obj: ..\..\src\propgrid\manager.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\manager.cpp + +$(OBJS)\propgridlib_property.obj: ..\..\src\propgrid\property.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\property.cpp + +$(OBJS)\propgridlib_propgrid.obj: ..\..\src\propgrid\propgrid.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgrid.cpp + +$(OBJS)\propgridlib_propgridiface.obj: ..\..\src\propgrid\propgridiface.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgridiface.cpp + +$(OBJS)\propgridlib_propgridpagestate.obj: ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\propgridpagestate.cpp + +$(OBJS)\propgridlib_props.obj: ..\..\src\propgrid\props.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRIDLIB_CXXFLAGS) ..\..\src\propgrid\props.cpp + $(OBJS)\richtextdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(RICHTEXTDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\richtextdll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_RICHTEXT ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_RICHTEXT ..\..\src\msw\version.rc $(OBJS)\richtextdll_richtextctrl.obj: ..\..\src\richtext\richtextctrl.cpp $(CXX) /c /nologo /TP /Fo$@ $(RICHTEXTDLL_CXXFLAGS) ..\..\src\richtext\richtextctrl.cpp @@ -14197,7 +14411,7 @@ $(OBJS)\stcdll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\stcdll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /i ..\..\src\stc\scintilla\include /i ..\..\src\stc\scintilla\src /d __WX__ /d SCI_LEXER /d LINK_LEXERS /d WXUSINGDLL /d WXMAKINGDLL_STC ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /i ..\..\src\stc\scintilla\include /i ..\..\src\stc\scintilla\src /d __WX__ /d SCI_LEXER /d LINK_LEXERS /d WXUSINGDLL /d WXMAKINGDLL_STC ..\..\src\msw\version.rc $(OBJS)\stcdll_stc.obj: ..\..\src\stc\stc.cpp $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) ..\..\src\stc\stc.cpp @@ -14224,7 +14438,7 @@ $(OBJS)\gldll_dummy.obj: ..\..\src\common\dummy.cpp $(CXX) /c /nologo /TP /Fo$@ $(GLDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp $(OBJS)\gldll_version.res: ..\..\src\msw\version.rc - rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_60) /d __WXMSW__ $(__WXUNIV_DEFINE_p_54) $(__DEBUG_DEFINE_p_53) $(__EXCEPTIONS_DEFINE_p_53) $(__RTTI_DEFINE_p_53) $(__THREAD_DEFINE_p_53) $(__UNICODE_DEFINE_p_54) $(__MSLU_DEFINE_p_53) $(__GFXCTX_DEFINE_p_53) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_GL ..\..\src\msw\version.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_4) $(__NO_VC_CRTDBG_p_64) /d __WXMSW__ $(__WXUNIV_DEFINE_p_58) $(__DEBUG_DEFINE_p_57) $(__EXCEPTIONS_DEFINE_p_57) $(__RTTI_DEFINE_p_57) $(__THREAD_DEFINE_p_57) $(__UNICODE_DEFINE_p_58) $(__MSLU_DEFINE_p_57) $(__GFXCTX_DEFINE_p_57) /i $(SETUPHDIR) /i ..\..\include /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl_vc$(VENDORTAG) /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\lib /d WXUSINGDLL /d WXMAKINGDLL_GL ..\..\src\msw\version.rc $(OBJS)\gldll_glcmn.obj: ..\..\src\common\glcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(GLDLL_CXXFLAGS) ..\..\src\common\glcmn.cpp diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat index 198ec7fc2c..491aedae4b 100644 --- a/build/msw/makefile.wat +++ b/build/msw/makefile.wat @@ -195,6 +195,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = & $(OBJS)\monodll_auibook.obj & $(OBJS)\monodll_auibar.obj & $(OBJS)\monodll_tabmdi.obj & + $(OBJS)\monodll_advprops.obj & + $(OBJS)\monodll_editors.obj & + $(OBJS)\monodll_manager.obj & + $(OBJS)\monodll_property.obj & + $(OBJS)\monodll_propgrid.obj & + $(OBJS)\monodll_propgridiface.obj & + $(OBJS)\monodll_propgridpagestate.obj & + $(OBJS)\monodll_props.obj & $(OBJS)\monodll_richtextctrl.obj & $(OBJS)\monodll_richtextbuffer.obj & $(OBJS)\monodll_richtextstyles.obj & @@ -863,6 +871,14 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = & $(OBJS)\monolib_auibook.obj & $(OBJS)\monolib_auibar.obj & $(OBJS)\monolib_tabmdi.obj & + $(OBJS)\monolib_advprops.obj & + $(OBJS)\monolib_editors.obj & + $(OBJS)\monolib_manager.obj & + $(OBJS)\monolib_property.obj & + $(OBJS)\monolib_propgrid.obj & + $(OBJS)\monolib_propgridiface.obj & + $(OBJS)\monolib_propgridpagestate.obj & + $(OBJS)\monolib_props.obj & $(OBJS)\monolib_richtextctrl.obj & $(OBJS)\monolib_richtextbuffer.obj & $(OBJS)\monolib_richtextstyles.obj & @@ -2768,6 +2784,32 @@ ____wxaui_namelib_DEP = !ifeq SHARED 0 ____wxaui_namelib_DEP = $(__auilib___depname) !endif +__propgriddll___depname = +!ifeq MONOLITHIC 0 +!ifeq SHARED 1 +!ifeq USE_PROPGRID 1 +__propgriddll___depname = & + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_wat$(VENDORTAG).dll +!endif +!endif +!endif +__propgridlib___depname = +!ifeq MONOLITHIC 0 +!ifeq SHARED 0 +!ifeq USE_PROPGRID 1 +__propgridlib___depname = & + $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +!endif +!endif +____wxpropgrid_namedll_DEP = +!ifeq SHARED 1 +____wxpropgrid_namedll_DEP = $(__propgriddll___depname) +!endif +____wxpropgrid_namelib_DEP = +!ifeq SHARED 0 +____wxpropgrid_namelib_DEP = $(__propgridlib___depname) +!endif __richtextdll___depname = !ifeq MONOLITHIC 0 !ifeq SHARED 1 @@ -3023,8 +3065,8 @@ MAKEARGS = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" & DEBUG_INFO="$(DEBUG_INFO)" DEBUG_FLAG="$(DEBUG_FLAG)" & MONOLITHIC="$(MONOLITHIC)" USE_GUI="$(USE_GUI)" USE_HTML="$(USE_HTML)" & USE_MEDIA="$(USE_MEDIA)" USE_XRC="$(USE_XRC)" USE_AUI="$(USE_AUI)" & - USE_RICHTEXT="$(USE_RICHTEXT)" USE_STC="$(USE_STC)" & - USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" & + USE_PROPGRID="$(USE_PROPGRID)" USE_RICHTEXT="$(USE_RICHTEXT)" & + USE_STC="$(USE_STC)" USE_OPENGL="$(USE_OPENGL)" USE_QA="$(USE_QA)" & USE_EXCEPTIONS="$(USE_EXCEPTIONS)" USE_RTTI="$(USE_RTTI)" & USE_THREADS="$(USE_THREADS)" USE_GDIPLUS="$(USE_GDIPLUS)" & OFFICIAL_BUILD="$(OFFICIAL_BUILD)" VENDOR="$(VENDOR)" & @@ -4222,6 +4264,43 @@ AUILIB_OBJECTS = & $(OBJS)\auilib_auibook.obj & $(OBJS)\auilib_auibar.obj & $(OBJS)\auilib_tabmdi.obj +PROPGRIDDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) & + $(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) & + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) & + $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=..\..\include & + -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -dWXBUILDING -i=..\..\src\tiff\libtiff & + -i=..\..\src\jpeg -i=..\..\src\png -i=..\..\src\zlib -i=..\..\src\regex & + -i=..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_PROPGRID & + /fh=$(OBJS)\wxprec_propgriddll.pch $(__RTTIFLAG) $(__EXCEPTIONSFLAG) & + $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDDLL_OBJECTS = & + $(OBJS)\propgriddll_dummy.obj & + $(OBJS)\propgriddll_advprops.obj & + $(OBJS)\propgriddll_editors.obj & + $(OBJS)\propgriddll_manager.obj & + $(OBJS)\propgriddll_property.obj & + $(OBJS)\propgriddll_propgrid.obj & + $(OBJS)\propgriddll_propgridiface.obj & + $(OBJS)\propgriddll_propgridpagestate.obj & + $(OBJS)\propgriddll_props.obj +PROPGRIDLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) & + $(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) & + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) & + $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=..\..\include & + -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -dWXBUILDING -i=..\..\src\tiff\libtiff & + -i=..\..\src\jpeg -i=..\..\src\png -i=..\..\src\zlib -i=..\..\src\regex & + -i=..\..\src\expat\lib /fh=$(OBJS)\wxprec_propgridlib.pch $(__RTTIFLAG) & + $(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS) +PROPGRIDLIB_OBJECTS = & + $(OBJS)\propgridlib_dummy.obj & + $(OBJS)\propgridlib_advprops.obj & + $(OBJS)\propgridlib_editors.obj & + $(OBJS)\propgridlib_manager.obj & + $(OBJS)\propgridlib_property.obj & + $(OBJS)\propgridlib_propgrid.obj & + $(OBJS)\propgridlib_propgridiface.obj & + $(OBJS)\propgridlib_propgridpagestate.obj & + $(OBJS)\propgridlib_props.obj RICHTEXTDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) & $(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) & $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) & @@ -4325,7 +4404,7 @@ $(OBJS) : ### Targets: ### -all : .SYMBOLIC setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file +all : .SYMBOLIC setup_h $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(__wxpng___depname) $(__wxjpeg___depname) $(__wxtiff___depname) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(__wxscintilla) $(__monodll___depname) $(__monolib___depname) $(__basedll___depname) $(__baselib___depname) $(__netdll___depname) $(__netlib___depname) $(__coredll___depname) $(__corelib___depname) $(__advdll___depname) $(__advlib___depname) $(__mediadll___depname) $(__medialib___depname) $(__htmldll___depname) $(__htmllib___depname) $(__qadll___depname) $(__qalib___depname) $(__xmldll___depname) $(__xmllib___depname) $(__xrcdll___depname) $(__xrclib___depname) $(__auidll___depname) $(__auilib___depname) $(__propgriddll___depname) $(__propgridlib___depname) $(__richtextdll___depname) $(__richtextlib___depname) $(__stcdll___depname) $(__stclib___depname) $(__gldll___depname) $(__gllib___depname) build_cfg_file clean : .SYMBOLIC -if exist $(OBJS)\*.obj del $(OBJS)\*.obj @@ -4373,6 +4452,9 @@ clean : .SYMBOLIC -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_wat$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui_wat$(VENDORTAG).dll -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_aui.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_wat$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_wat$(VENDORTAG).dll + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib + -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_wat$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext_wat$(VENDORTAG).dll -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.lib -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_richtext.lib @@ -4813,6 +4895,42 @@ wxaui : .SYMBOLIC $(____wxaui_namedll_DEP) $(____wxaui_namelib_DEP) !endif !endif +!ifeq MONOLITHIC 0 +!ifeq SHARED 1 +!ifeq USE_PROPGRID 1 +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_wat$(VENDORTAG).dll : $(PROPGRIDDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\propgriddll_version.res $(__advdll___depname) $(__coredll___depname) $(__basedll___depname) + @%create $(OBJS)\propgriddll.lbc + @%append $(OBJS)\propgriddll.lbc option quiet + @%append $(OBJS)\propgriddll.lbc name $^@ + @%append $(OBJS)\propgriddll.lbc option caseexact + @%append $(OBJS)\propgriddll.lbc $(LDFLAGS) $(__DEBUGINFO_3) libpath $(LIBDIRNAME) + @for %i in ($(PROPGRIDDLL_OBJECTS)) do @%append $(OBJS)\propgriddll.lbc file %i + @for %i in ( $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib) do @%append $(OBJS)\propgriddll.lbc library %i + @%append $(OBJS)\propgriddll.lbc option resource=$(OBJS)\propgriddll_version.res + @%append $(OBJS)\propgriddll.lbc system nt_dll + wlink @$(OBJS)\propgriddll.lbc + wlib -q -n -b $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +$^@ +!endif +!endif +!endif + +!ifeq MONOLITHIC 0 +!ifeq SHARED 0 +!ifeq USE_PROPGRID 1 +$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib : $(PROPGRIDLIB_OBJECTS) + @%create $(OBJS)\propgridlib.lbc + @for %i in ($(PROPGRIDLIB_OBJECTS)) do @%append $(OBJS)\propgridlib.lbc +%i + wlib -q -p4096 -n -b $^@ @$(OBJS)\propgridlib.lbc +!endif +!endif +!endif + +!ifeq MONOLITHIC 0 +!ifeq USE_PROPGRID 1 +wxpropgrid : .SYMBOLIC $(____wxpropgrid_namedll_DEP) $(____wxpropgrid_namelib_DEP) +!endif +!endif + !ifeq MONOLITHIC 0 !ifeq SHARED 1 !ifeq USE_RICHTEXT 1 @@ -6383,6 +6501,30 @@ $(OBJS)\monodll_auibar.obj : .AUTODEPEND ..\..\src\aui\auibar.cpp $(OBJS)\monodll_tabmdi.obj : .AUTODEPEND ..\..\src\aui\tabmdi.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< +$(OBJS)\monodll_advprops.obj : .AUTODEPEND ..\..\src\propgrid\advprops.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_editors.obj : .AUTODEPEND ..\..\src\propgrid\editors.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_manager.obj : .AUTODEPEND ..\..\src\propgrid\manager.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_property.obj : .AUTODEPEND ..\..\src\propgrid\property.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_propgrid.obj : .AUTODEPEND ..\..\src\propgrid\propgrid.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_propgridiface.obj : .AUTODEPEND ..\..\src\propgrid\propgridiface.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_propgridpagestate.obj : .AUTODEPEND ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + +$(OBJS)\monodll_props.obj : .AUTODEPEND ..\..\src\propgrid\props.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + $(OBJS)\monodll_richtextctrl.obj : .AUTODEPEND ..\..\src\richtext\richtextctrl.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< @@ -8656,6 +8798,30 @@ $(OBJS)\monolib_auibar.obj : .AUTODEPEND ..\..\src\aui\auibar.cpp $(OBJS)\monolib_tabmdi.obj : .AUTODEPEND ..\..\src\aui\tabmdi.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< +$(OBJS)\monolib_advprops.obj : .AUTODEPEND ..\..\src\propgrid\advprops.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_editors.obj : .AUTODEPEND ..\..\src\propgrid\editors.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_manager.obj : .AUTODEPEND ..\..\src\propgrid\manager.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_property.obj : .AUTODEPEND ..\..\src\propgrid\property.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_propgrid.obj : .AUTODEPEND ..\..\src\propgrid\propgrid.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_propgridiface.obj : .AUTODEPEND ..\..\src\propgrid\propgridiface.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_propgridpagestate.obj : .AUTODEPEND ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + +$(OBJS)\monolib_props.obj : .AUTODEPEND ..\..\src\propgrid\props.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + $(OBJS)\monolib_richtextctrl.obj : .AUTODEPEND ..\..\src\richtext\richtextctrl.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< @@ -14624,6 +14790,63 @@ $(OBJS)\auilib_auibar.obj : .AUTODEPEND ..\..\src\aui\auibar.cpp $(OBJS)\auilib_tabmdi.obj : .AUTODEPEND ..\..\src\aui\tabmdi.cpp $(CXX) -bt=nt -zq -fo=$^@ $(AUILIB_CXXFLAGS) $< +$(OBJS)\propgriddll_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_version.res : .AUTODEPEND ..\..\src\msw\version.rc + wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=..\..\include -dWXBUILDING -dWXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid_wat$(VENDORTAG) -i=..\..\src\tiff\libtiff -i=..\..\src\jpeg -i=..\..\src\png -i=..\..\src\zlib -i=..\..\src\regex -i=..\..\src\expat\lib -dWXUSINGDLL -dWXMAKINGDLL_PROPGRID $< + +$(OBJS)\propgriddll_advprops.obj : .AUTODEPEND ..\..\src\propgrid\advprops.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_editors.obj : .AUTODEPEND ..\..\src\propgrid\editors.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_manager.obj : .AUTODEPEND ..\..\src\propgrid\manager.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_property.obj : .AUTODEPEND ..\..\src\propgrid\property.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_propgrid.obj : .AUTODEPEND ..\..\src\propgrid\propgrid.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_propgridiface.obj : .AUTODEPEND ..\..\src\propgrid\propgridiface.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_propgridpagestate.obj : .AUTODEPEND ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgriddll_props.obj : .AUTODEPEND ..\..\src\propgrid\props.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDDLL_CXXFLAGS) $< + +$(OBJS)\propgridlib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_advprops.obj : .AUTODEPEND ..\..\src\propgrid\advprops.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_editors.obj : .AUTODEPEND ..\..\src\propgrid\editors.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_manager.obj : .AUTODEPEND ..\..\src\propgrid\manager.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_property.obj : .AUTODEPEND ..\..\src\propgrid\property.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_propgrid.obj : .AUTODEPEND ..\..\src\propgrid\propgrid.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_propgridiface.obj : .AUTODEPEND ..\..\src\propgrid\propgridiface.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_propgridpagestate.obj : .AUTODEPEND ..\..\src\propgrid\propgridpagestate.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + +$(OBJS)\propgridlib_props.obj : .AUTODEPEND ..\..\src\propgrid\props.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRIDLIB_CXXFLAGS) $< + $(OBJS)\richtextdll_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp $(CXX) -bt=nt -zq -fo=$^@ $(RICHTEXTDLL_CXXFLAGS) $< diff --git a/build/msw/wx.dsw b/build/msw/wx.dsw index 1d9a241d7d..9f841d28ec 100644 --- a/build/msw/wx.dsw +++ b/build/msw/wx.dsw @@ -206,6 +206,18 @@ Package=<4> ############################################################################### +Project: "propgrid"=wx_propgrid.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Project: "richtext"=wx_richtext.dsp - Package Owner=<4> Package=<5> diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp index 10716937ce..1fe9214bf9 100644 --- a/build/msw/wx_core.dsp +++ b/build/msw/wx_core.dsp @@ -5631,6 +5631,10 @@ SOURCE=..\..\include\wx\access.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\propgrid\advprops.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\anidecod.h # End Source File # Begin Source File @@ -5879,6 +5883,10 @@ SOURCE=..\..\include\wx\editlbox.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\propgrid\editors.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\effects.h # End Source File # Begin Source File @@ -6087,6 +6095,10 @@ SOURCE=..\..\include\wx\listctrl.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\propgrid\manager.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\matrix.h # End Source File # Begin Source File @@ -6199,6 +6211,30 @@ SOURCE=..\..\include\wx\propdlg.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\propgrid\property.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgrid.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgriddefs.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgridiface.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgridpagestate.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\props.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\quantize.h # End Source File # Begin Source File diff --git a/build/msw/wx_propgrid.dsp b/build/msw/wx_propgrid.dsp new file mode 100644 index 0000000000..e80b0b51cf --- /dev/null +++ b/build/msw/wx_propgrid.dsp @@ -0,0 +1,606 @@ +# Microsoft Developer Studio Project File - Name="wx_propgrid" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=propgrid - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "wx_propgrid.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "wx_propgrid.mak" CFG="propgrid - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "propgrid - Win32 DLL Universal Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "propgrid - Win32 DLL Universal Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "propgrid - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "propgrid - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "propgrid - Win32 Universal Release" (based on "Win32 (x86) Static Library") +!MESSAGE "propgrid - Win32 Universal Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "propgrid - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "propgrid - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_dll" +# PROP BASE Intermediate_Dir "vc_mswunivudll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_dll" +# PROP Intermediate_Dir "vc_mswunivudll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_dll\mswunivu" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswunivudll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_dll\mswunivu" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswunivudll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswunivu" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmswuniv290u_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswunivu" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmswuniv290u_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29u_adv.lib ..\..\lib\vc_dll\wxmswuniv29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" +# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29u_adv.lib ..\..\lib\vc_dll\wxmswuniv29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_dll" +# PROP BASE Intermediate_Dir "vc_mswunivuddll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_dll" +# PROP Intermediate_Dir "vc_mswunivuddll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_dll\mswunivud" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswunivuddll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_dll\mswunivud" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswunivuddll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswunivud" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswunivud" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29ud_adv.lib ..\..\lib\vc_dll\wxmswuniv29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" +# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29ud_adv.lib ..\..\lib\vc_dll\wxmswuniv29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_dll" +# PROP BASE Intermediate_Dir "vc_mswudll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_dll" +# PROP Intermediate_Dir "vc_mswudll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_dll\mswu" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswudll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_dll\mswu" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswudll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswu" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmsw290u_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswu" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmsw290u_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29u_adv.lib ..\..\lib\vc_dll\wxmsw29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmsw29u_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" +# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29u_adv.lib ..\..\lib\vc_dll\wxmsw29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmsw29u_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_dll" +# PROP BASE Intermediate_Dir "vc_mswuddll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_dll" +# PROP Intermediate_Dir "vc_mswuddll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_dll\mswud" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswuddll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_dll\mswud" /I "..\..\include" /W4 /Yu"wx/wxprec.h" /Fp"vc_mswuddll\wxprec_propgriddll.pch" /Zi /Fd..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswud" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmsw290ud_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\lib\vc_dll\mswud" /i "..\..\include" /d "WXBUILDING" /d WXDLLNAME=wxmsw290ud_propgrid_vc_custom /i "..\..\src\tiff\libtiff" /i "..\..\src\jpeg" /i "..\..\src\png" /i "..\..\src\zlib" /i "..\..\src\regex" /i "..\..\src\expat\lib" /d "WXUSINGDLL" /d WXMAKINGDLL_PROPGRID +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29ud_adv.lib ..\..\lib\vc_dll\wxmsw29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmsw29ud_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" +# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29ud_adv.lib ..\..\lib\vc_dll\wxmsw29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib /nologo /dll /machine:i386 /out:"..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll" /libpath:"..\..\lib\vc_dll" /implib:"..\..\lib\vc_dll\wxmsw29ud_propgrid.lib" /debug /pdb:"..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_lib" +# PROP BASE Intermediate_Dir "vc_mswunivu\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_lib" +# PROP Intermediate_Dir "vc_mswunivu\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_lib\mswunivu" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswunivu\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_lib\mswunivu" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswunivu\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib" +# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib" + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_lib" +# PROP BASE Intermediate_Dir "vc_mswunivud\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_lib" +# PROP Intermediate_Dir "vc_mswunivud\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_lib\mswunivud" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswunivud\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_lib\mswunivud" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswunivud\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib" +# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib" + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_lib" +# PROP BASE Intermediate_Dir "vc_mswu\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_lib" +# PROP Intermediate_Dir "vc_mswu\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_lib\mswu" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmsw29u_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswu\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD CPP /nologo /FD /MD /O2 /GR /EHsc /I "..\..\lib\vc_lib\mswu" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmsw29u_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswu\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29u_propgrid.lib" +# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29u_propgrid.lib" + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "..\..\lib\vc_lib" +# PROP BASE Intermediate_Dir "vc_mswud\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\lib\vc_lib" +# PROP Intermediate_Dir "vc_mswud\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_lib\mswud" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswud\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD CPP /nologo /FD /MDd /Od /Gm /GR /EHsc /I "..\..\lib\vc_lib\mswud" /I "..\..\include" /W4 /Zi /Fd..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb /Yu"wx/wxprec.h" /Fp"vc_mswud\wxprec_propgridlib.pch" /I "..\..\src\tiff\libtiff" /I "..\..\src\jpeg" /I "..\..\src\png" /I "..\..\src\zlib" /I "..\..\src\regex" /I "..\..\src\expat\lib" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXBUILDING" /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29ud_propgrid.lib" +# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29ud_propgrid.lib" + +!ENDIF + +# Begin Target + +# Name "propgrid - Win32 DLL Universal Release" +# Name "propgrid - Win32 DLL Universal Debug" +# Name "propgrid - Win32 DLL Release" +# Name "propgrid - Win32 DLL Debug" +# Name "propgrid - Win32 Universal Release" +# Name "propgrid - Win32 Universal Debug" +# Name "propgrid - Win32 Release" +# Name "propgrid - Win32 Debug" +# Begin Group "Common Sources" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\common\dummy.cpp +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" +# End Source File +# End Group +# Begin Group "MSW Sources" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\msw\version.rc + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Group "Setup Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\wx\univ\setup.h + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h +InputPath=..\..\include\wx\univ\setup.h + +"..\..\lib\vc_dll\mswunivu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h +InputPath=..\..\include\wx\univ\setup.h + +"..\..\lib\vc_dll\mswunivud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h +InputPath=..\..\include\wx\univ\setup.h + +"..\..\lib\vc_lib\mswunivu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h +InputPath=..\..\include\wx\univ\setup.h + +"..\..\lib\vc_lib\mswunivud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# Begin Custom Build - + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\msw\setup.h + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswu\wx\setup.h +InputPath=..\..\include\wx\msw\setup.h + +"..\..\lib\vc_dll\mswu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswud\wx\setup.h +InputPath=..\..\include\wx\msw\setup.h + +"..\..\lib\vc_dll\mswud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# Begin Custom Build - + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswu\wx\setup.h +InputPath=..\..\include\wx\msw\setup.h + +"..\..\lib\vc_lib\mswu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswud\wx\setup.h +InputPath=..\..\include\wx\msw\setup.h + +"..\..\lib\vc_lib\mswud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h + +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "MSW Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\wx\msw\genrcdefs.h + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswunivu\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswunivud\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswu\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswud\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswunivu\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswunivud\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswu\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" + +# End Custom Build + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# Begin Custom Build - Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h +InputPath=..\..\include\wx\msw\genrcdefs.h + +"..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswud\wx\msw" + cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" + +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "Common Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\advprops.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\editors.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\manager.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\property.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgrid.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgriddefs.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgridiface.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\propgridpagestate.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\propgrid\props.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\propgrid\advprops.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\editors.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\manager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\property.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\propgrid.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\propgridiface.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\propgridpagestate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\propgrid\props.cpp +# End Source File +# End Group +# End Target +# End Project + diff --git a/build/msw/wx_vc7.sln b/build/msw/wx_vc7.sln index 5151fa3f91..8f7fb2f1be 100644 --- a/build/msw/wx_vc7.sln +++ b/build/msw/wx_vc7.sln @@ -33,6 +33,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "wx_vc7_xrc.vcproj", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "wx_vc7_aui.vcproj", "{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "propgrid", "wx_vc7_propgrid.vcproj", "{F7A944F0-250D-57CD-8F71-BC38B2513B28}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "wx_vc7_richtext.vcproj", "{52F16F53-E13D-55CA-AD64-ACB0274B0704}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stc", "wx_vc7_stc.vcproj", "{4B498696-42F2-5547-B159-87E4CAF436C1}" @@ -326,6 +328,22 @@ Global {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Release|Win32.Build.0 = Release|Win32 {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug|Win32.ActiveCfg = Debug|Win32 {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug|Win32.Build.0 = Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Release|Win32.Build.0 = DLL Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Release|Win32.ActiveCfg = Universal Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Release|Win32.Build.0 = Universal Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Debug|Win32.Build.0 = Universal Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Release|Win32.ActiveCfg = Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Release|Win32.Build.0 = Release|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Debug|Win32.Build.0 = Debug|Win32 {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 diff --git a/build/msw/wx_vc7_core.vcproj b/build/msw/wx_vc7_core.vcproj index 6067294f97..36e26c8911 100644 --- a/build/msw/wx_vc7_core.vcproj +++ b/build/msw/wx_vc7_core.vcproj @@ -3148,6 +3148,8 @@ RelativePath="..\..\include\wx\accel.h"/> <File RelativePath="..\..\include\wx\access.h"/> + <File + RelativePath="..\..\include\wx\propgrid\advprops.h"/> <File RelativePath="..\..\include\wx\anidecod.h"/> <File @@ -3272,6 +3274,8 @@ RelativePath="..\..\include\wx\dragimag.h"/> <File RelativePath="..\..\include\wx\editlbox.h"/> + <File + RelativePath="..\..\include\wx\propgrid\editors.h"/> <File RelativePath="..\..\include\wx\effects.h"/> <File @@ -3376,6 +3380,8 @@ RelativePath="..\..\include\wx\listbox.h"/> <File RelativePath="..\..\include\wx\listctrl.h"/> + <File + RelativePath="..\..\include\wx\propgrid\manager.h"/> <File RelativePath="..\..\include\wx\matrix.h"/> <File @@ -3432,6 +3438,18 @@ RelativePath="..\..\include\wx\progdlg.h"/> <File RelativePath="..\..\include\wx\propdlg.h"/> + <File + RelativePath="..\..\include\wx\propgrid\property.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgrid.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgriddefs.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgridiface.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"/> + <File + RelativePath="..\..\include\wx\propgrid\props.h"/> <File RelativePath="..\..\include\wx\quantize.h"/> <File diff --git a/build/msw/wx_vc7_propgrid.vcproj b/build/msw/wx_vc7_propgrid.vcproj new file mode 100644 index 0000000000..68fb39acc7 --- /dev/null +++ b/build/msw/wx_vc7_propgrid.vcproj @@ -0,0 +1,883 @@ +<?xml version="1.0" ?> +<!-- + + This makefile was generated by + Bakefile 0.2.3 (http://www.bakefile.org) + Do not modify, all changes will be overwritten! + +--> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="propgrid" + ProjectGUID="{F7A944F0-250D-57CD-8F71-BC38B2513B28}"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="DLL Universal Release|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswunivudll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivudll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswunivudll\propgrid\" + ObjectFile="vc_mswunivudll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29u_adv.lib ..\..\lib\vc_dll\wxmswuniv29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Universal Debug|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswunivuddll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivuddll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswunivuddll\propgrid\" + ObjectFile="vc_mswunivuddll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29ud_adv.lib ..\..\lib\vc_dll\wxmswuniv29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Release|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswudll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswudll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswudll\propgrid\" + ObjectFile="vc_mswudll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29u_adv.lib ..\..\lib\vc_dll\wxmsw29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmsw29u_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Debug|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswuddll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswuddll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswuddll\propgrid\" + ObjectFile="vc_mswuddll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29ud_adv.lib ..\..\lib\vc_dll\wxmsw29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmsw29ud_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Universal Release|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswunivu\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_LIB;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivu\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswunivu\propgrid\" + ObjectFile="vc_mswunivu\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib" + SuppressStartupBanner="true"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Universal Debug|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswunivud\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivud\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswunivud\propgrid\" + ObjectFile="vc_mswunivud\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib" + SuppressStartupBanner="true"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswu\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_LIB;__WXMSW__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswu\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswu\propgrid\" + ObjectFile="vc_mswu\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29u_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmsw29u_propgrid.lib" + SuppressStartupBanner="true"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswud\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="3" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswud\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswud\propgrid\" + ObjectFile="vc_mswud\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmsw29ud_propgrid.lib" + SuppressStartupBanner="true"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + </Configurations> + <References> + + </References> + <Files> + <Filter + Name="Common Sources" + UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"> + <File + RelativePath="..\..\src\common\dummy.cpp"> + <FileConfiguration + Name="DLL Universal Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="MSW Sources" + UniqueIdentifier="{D030D8C2-53EE-5B96-8F89-D78157B06140}"> + <File + RelativePath="..\..\src\msw\version.rc"> + <FileConfiguration + Name="Universal Release|Win32" + ExcludedFromBuild="true"/> + <FileConfiguration + Name="Universal Debug|Win32" + ExcludedFromBuild="true"/> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true"/> + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true"/> + </File> + </Filter> + <Filter + Name="Setup Headers" + UniqueIdentifier="{63537534-1833-5C1F-8DBD-359A84F294C8}"> + <File + RelativePath="..\..\include\wx\univ\setup.h"> + <FileConfiguration + Name="DLL Universal Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswunivu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswunivud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32"/> + <FileConfiguration + Name="DLL Debug|Win32"/> + <FileConfiguration + Name="Universal Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswunivu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswunivud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"/> + <FileConfiguration + Name="Debug|Win32"/> + </File> + <File + RelativePath="..\..\include\wx\msw\setup.h"> + <FileConfiguration + Name="DLL Universal Release|Win32"/> + <FileConfiguration + Name="DLL Universal Debug|Win32"/> + <FileConfiguration + Name="DLL Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32"/> + <FileConfiguration + Name="Universal Debug|Win32"/> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="MSW Headers" + UniqueIdentifier="{5AFFF20E-29F9-512B-B80A-7DC45976CDAC}"> + <File + RelativePath="..\..\include\wx\msw\genrcdefs.h"> + <FileConfiguration + Name="DLL Universal Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswunivu\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswunivud\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswu\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswud\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswunivu\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswunivud\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswu\wx\msw""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswud\wx\msw""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Common Headers" + UniqueIdentifier="{8C07E926-65B0-5F00-B0D6-7F40DA69BB25}"> + <File + RelativePath="..\..\include\wx\propgrid\advprops.h"/> + <File + RelativePath="..\..\include\wx\propgrid\editors.h"/> + <File + RelativePath="..\..\include\wx\propgrid\manager.h"/> + <File + RelativePath="..\..\include\wx\propgrid\property.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgrid.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgriddefs.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgridiface.h"/> + <File + RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"/> + <File + RelativePath="..\..\include\wx\propgrid\props.h"/> + </Filter> + <Filter + Name="Source Files" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"> + <File + RelativePath="..\..\src\propgrid\advprops.cpp"/> + <File + RelativePath="..\..\src\propgrid\editors.cpp"/> + <File + RelativePath="..\..\src\propgrid\manager.cpp"/> + <File + RelativePath="..\..\src\propgrid\property.cpp"/> + <File + RelativePath="..\..\src\propgrid\propgrid.cpp"/> + <File + RelativePath="..\..\src\propgrid\propgridiface.cpp"/> + <File + RelativePath="..\..\src\propgrid\propgridpagestate.cpp"/> + <File + RelativePath="..\..\src\propgrid\props.cpp"/> + </Filter> + </Files> + <Globals> + + </Globals> +</VisualStudioProject> + diff --git a/build/msw/wx_vc8.sln b/build/msw/wx_vc8.sln index 0a49e46e94..7b145af729 100644 --- a/build/msw/wx_vc8.sln +++ b/build/msw/wx_vc8.sln @@ -34,6 +34,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "wx_vc8_xrc.vcproj", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "wx_vc8_aui.vcproj", "{B361C000-79E7-5B8A-8F5F-BC0168C7002E}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "propgrid", "wx_vc8_propgrid.vcproj", "{93781718-26B6-5541-84C5-78C6A8226AEC}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "wx_vc8_richtext.vcproj", "{4928FA3B-C258-5E39-AE05-E4BD709955B3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stc", "wx_vc8_stc.vcproj", "{FA559111-7B08-54E7-BD3B-0B621C819C78}" @@ -327,6 +329,22 @@ Global {B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Release|Win32.Build.0 = Release|Win32 {B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Debug|Win32.ActiveCfg = Debug|Win32 {B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Debug|Win32.Build.0 = Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Release|Win32.Build.0 = DLL Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Release|Win32.ActiveCfg = Universal Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Release|Win32.Build.0 = Universal Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Debug|Win32.Build.0 = Universal Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Release|Win32.ActiveCfg = Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Release|Win32.Build.0 = Release|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Debug|Win32.ActiveCfg = Debug|Win32 + {93781718-26B6-5541-84C5-78C6A8226AEC}.Debug|Win32.Build.0 = Debug|Win32 {4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 {4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 {4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj index 53306e3288..a835dea333 100644 --- a/build/msw/wx_vc8_core.vcproj +++ b/build/msw/wx_vc8_core.vcproj @@ -4259,6 +4259,9 @@ <File RelativePath="..\..\include\wx\access.h" /> + <File + RelativePath="..\..\include\wx\propgrid\advprops.h" + /> <File RelativePath="..\..\include\wx\anidecod.h" /> @@ -4445,6 +4448,9 @@ <File RelativePath="..\..\include\wx\editlbox.h" /> + <File + RelativePath="..\..\include\wx\propgrid\editors.h" + /> <File RelativePath="..\..\include\wx\effects.h" /> @@ -4601,6 +4607,9 @@ <File RelativePath="..\..\include\wx\listctrl.h" /> + <File + RelativePath="..\..\include\wx\propgrid\manager.h" + /> <File RelativePath="..\..\include\wx\matrix.h" /> @@ -4685,6 +4694,24 @@ <File RelativePath="..\..\include\wx\propdlg.h" /> + <File + RelativePath="..\..\include\wx\propgrid\property.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgrid.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgriddefs.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgridiface.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgridpagestate.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\props.h" + /> <File RelativePath="..\..\include\wx\quantize.h" /> diff --git a/build/msw/wx_vc8_propgrid.vcproj b/build/msw/wx_vc8_propgrid.vcproj new file mode 100644 index 0000000000..979e08e8e1 --- /dev/null +++ b/build/msw/wx_vc8_propgrid.vcproj @@ -0,0 +1,1108 @@ +<?xml version="1.0" ?> +<!-- + + This makefile was generated by + Bakefile 0.2.3 (http://www.bakefile.org) + Do not modify, all changes will be overwritten! + +--> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="propgrid" + ProjectGUID="{93781718-26B6-5541-84C5-78C6A8226AEC}" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + + </ToolFiles> + <Configurations> + <Configuration + Name="DLL Universal Release|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswunivudll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivudll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswunivudll\propgrid\" + ObjectFile="vc_mswunivudll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29u_adv.lib ..\..\lib\vc_dll\wxmswuniv29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Universal Debug|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswunivuddll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivuddll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswunivuddll\propgrid\" + ObjectFile="vc_mswunivuddll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmswuniv29ud_adv.lib ..\..\lib\vc_dll\wxmswuniv29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Release|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswudll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswudll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswudll\propgrid\" + ObjectFile="vc_mswudll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29u_adv.lib ..\..\lib\vc_dll\wxmsw29u_core.lib ..\..\lib\vc_dll\wxbase29u.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmsw29u_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Debug|Win32" + OutputDirectory="..\..\lib\vc_dll" + IntermediateDirectory="vc_mswuddll\propgrid" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswuddll\wxprec_propgriddll.pch" + AssemblerListingLocation="vc_mswuddll\propgrid\" + ObjectFile="vc_mswuddll\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib ..\..\lib\vc_dll\wxmsw29ud_adv.lib ..\..\lib\vc_dll\wxmsw29ud_core.lib ..\..\lib\vc_dll\wxbase29ud.lib" + AdditionalOptions="" + OutputFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll" + LinkIncremental="2" + ImportLibrary="..\..\lib\vc_dll\wxmsw29ud_propgrid.lib" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Universal Release|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswunivu\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_LIB;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivu\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswunivu\propgrid\" + ObjectFile="vc_mswunivu\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib" + SuppressStartupBanner="true" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Universal Debug|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswunivud\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswunivud\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswunivud\propgrid\" + ObjectFile="vc_mswunivud\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib" + SuppressStartupBanner="true" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswu\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="_LIB;__WXMSW__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswu\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswu\propgrid\" + ObjectFile="vc_mswu\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29u_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmsw29u_propgrid.lib" + SuppressStartupBanner="true" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="..\..\lib\vc_lib" + IntermediateDirectory="vc_mswud\propgrid" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="wx/wxprec.h" + PrecompiledHeaderFile="vc_mswud\wxprec_propgridlib.pch" + AssemblerListingLocation="vc_mswud\propgrid\" + ObjectFile="vc_mswud\propgrid\" + ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="..\..\lib\vc_lib\wxmsw29ud_propgrid.lib" + SuppressStartupBanner="true" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + + </References> + <Files> + <Filter + Name="Common Sources" + UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}" + > + <File + RelativePath="..\..\src\common\dummy.cpp" + > + <FileConfiguration + Name="DLL Universal Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="MSW Sources" + UniqueIdentifier="{D030D8C2-53EE-5B96-8F89-D78157B06140}" + > + <File + RelativePath="..\..\src\msw\version.rc" + > + <FileConfiguration + Name="Universal Release|Win32" + ExcludedFromBuild="true" + /> + <FileConfiguration + Name="Universal Debug|Win32" + ExcludedFromBuild="true" + /> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + /> + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + /> + </File> + </Filter> + <Filter + Name="Setup Headers" + UniqueIdentifier="{63537534-1833-5C1F-8DBD-359A84F294C8}" + > + <File + RelativePath="..\..\include\wx\univ\setup.h" + > + <FileConfiguration + Name="DLL Universal Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswunivu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswunivud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32" + /> + <FileConfiguration + Name="DLL Debug|Win32" + /> + <FileConfiguration + Name="Universal Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswunivu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswunivud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + /> + <FileConfiguration + Name="Debug|Win32" + /> + </File> + <File + RelativePath="..\..\include\wx\msw\setup.h" + > + <FileConfiguration + Name="DLL Universal Release|Win32" + /> + <FileConfiguration + Name="DLL Universal Debug|Win32" + /> + <FileConfiguration + Name="DLL Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h" + Outputs="..\..\lib\vc_dll\mswud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32" + /> + <FileConfiguration + Name="Universal Debug|Win32" + /> + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswu\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswu\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswud\wx\setup.h" + CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h" + Outputs="..\..\lib\vc_lib\mswud\wx\setup.h" + AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)"" + /> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="MSW Headers" + UniqueIdentifier="{5AFFF20E-29F9-512B-B80A-7DC45976CDAC}" + > + <File + RelativePath="..\..\include\wx\msw\genrcdefs.h" + > + <FileConfiguration + Name="DLL Universal Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswunivu\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Universal Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswunivud\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswu\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="DLL Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_dll\mswud\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswunivu\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="Universal Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswunivud\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswu\wx\msw"" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" + CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"" + Outputs="..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" + AdditionalDependencies=""..\..\lib\vc_lib\mswud\wx\msw"" + /> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Common Headers" + UniqueIdentifier="{8C07E926-65B0-5F00-B0D6-7F40DA69BB25}" + > + <File + RelativePath="..\..\include\wx\propgrid\advprops.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\editors.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\manager.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\property.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgrid.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgriddefs.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgridiface.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\propgridpagestate.h" + /> + <File + RelativePath="..\..\include\wx\propgrid\props.h" + /> + </Filter> + <Filter + Name="Source Files" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + > + <File + RelativePath="..\..\src\propgrid\advprops.cpp" + /> + <File + RelativePath="..\..\src\propgrid\editors.cpp" + /> + <File + RelativePath="..\..\src\propgrid\manager.cpp" + /> + <File + RelativePath="..\..\src\propgrid\property.cpp" + /> + <File + RelativePath="..\..\src\propgrid\propgrid.cpp" + /> + <File + RelativePath="..\..\src\propgrid\propgridiface.cpp" + /> + <File + RelativePath="..\..\src\propgrid\propgridpagestate.cpp" + /> + <File + RelativePath="..\..\src\propgrid\props.cpp" + /> + </Filter> + </Files> + <Globals> + + </Globals> +</VisualStudioProject> + diff --git a/configure b/configure index 240ab5588e..ba232baee2 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Id: configure.in 55464 2008-09-05 08:03:35Z RR . +# From configure.in Id: configure.in 55511 2008-09-07 16:54:21Z SC . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0. # @@ -832,6 +832,7 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1 COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_HTML_1 COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1 COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1 +COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1 COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1 COND_MONOLITHIC_0_SHARED_0_USE_STC_1 COND_MONOLITHIC_0_SHARED_0_USE_XRC_1 @@ -841,6 +842,7 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1 COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1 COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_MEDIA_1 COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1 +COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1 COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1 COND_MONOLITHIC_0_SHARED_1_USE_STC_1 COND_MONOLITHIC_0_SHARED_1_USE_XRC_1 @@ -849,6 +851,7 @@ COND_MONOLITHIC_0_USE_GUI_1 COND_MONOLITHIC_0_USE_GUI_1_USE_MEDIA_1 COND_MONOLITHIC_0_USE_HTML_1 COND_MONOLITHIC_0_USE_MEDIA_1 +COND_MONOLITHIC_0_USE_PROPGRID_1 COND_MONOLITHIC_0_USE_QA_1 COND_MONOLITHIC_0_USE_RICHTEXT_1 COND_MONOLITHIC_0_USE_STC_1 @@ -1739,6 +1742,7 @@ Optional Features: --enable-htmlhelp use wxHTML-based help --enable-xrc use XRC resources sub-library --enable-aui use AUI docking library + --enable-propgrid use wxPropertyGrid library --enable-stc use wxStyledTextCtrl library --enable-constraints use layout-constraints system --enable-loggui use standard GUI logger @@ -8558,6 +8562,50 @@ fi echo "${ECHO_T}$result" >&6; } + enablestring= + defaultval=$wxUSE_ALL_FEATURES + if test -z "$defaultval"; then + if test x"$enablestring" = xdisable; then + defaultval=yes + else + defaultval=no + fi + fi + + { echo "$as_me:$LINENO: checking for --${enablestring:-enable}-propgrid" >&5 +echo $ECHO_N "checking for --${enablestring:-enable}-propgrid... $ECHO_C" >&6; } + # Check whether --enable-propgrid was given. +if test "${enable_propgrid+set}" = set; then + enableval=$enable_propgrid; + if test "$enableval" = yes; then + wx_cv_use_propgrid='wxUSE_PROPGRID=yes' + else + wx_cv_use_propgrid='wxUSE_PROPGRID=no' + fi + +else + + wx_cv_use_propgrid='wxUSE_PROPGRID=${'DEFAULT_wxUSE_PROPGRID":-$defaultval}" + +fi + + + eval "$wx_cv_use_propgrid" + + if test x"$enablestring" = xdisable; then + if test $wxUSE_PROPGRID = yes; then + result=no + else + result=yes + fi + else + result=$wxUSE_PROPGRID + fi + + { echo "$as_me:$LINENO: result: $result" >&5 +echo "${ECHO_T}$result" >&6; } + + enablestring= defaultval=$wxUSE_ALL_FEATURES if test -z "$defaultval"; then @@ -46209,6 +46257,16 @@ _ACEOF SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS aui" fi +USE_PROPGRID=0 +if test "$wxUSE_PROPGRID" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define wxUSE_PROPGRID 1 +_ACEOF + + USE_PROPGRID=1 + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS propgrid" +fi + USE_STC=0 if test "$wxUSE_STC" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -46898,6 +46956,9 @@ if test "$wxUSE_GUI" = "yes"; then if test "$wxUSE_AUI" = "yes" ; then BUILT_WX_LIBS="aui $BUILT_WX_LIBS" fi + if test "$wxUSE_PROPGRID" = "yes" ; then + BUILT_WX_LIBS="propgrid $BUILT_WX_LIBS" + fi if test "$wxUSE_STC" = "yes" ; then BUILT_WX_LIBS="stc $BUILT_WX_LIBS" fi @@ -49562,6 +49623,11 @@ EOF COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1="" fi + COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x0" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1="" + fi + COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1="#" if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x0" -a "x$USE_RICHTEXT" = "x1" ; then COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1="" @@ -49607,6 +49673,11 @@ EOF COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1="" fi + COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x1" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1="" + fi + COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1="#" if test "x$MONOLITHIC" = "x0" -a "x$SHARED" = "x1" -a "x$USE_RICHTEXT" = "x1" ; then COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1="" @@ -49647,6 +49718,11 @@ EOF COND_MONOLITHIC_0_USE_MEDIA_1="" fi + COND_MONOLITHIC_0_USE_PROPGRID_1="#" + if test "x$MONOLITHIC" = "x0" -a "x$USE_PROPGRID" = "x1" ; then + COND_MONOLITHIC_0_USE_PROPGRID_1="" + fi + COND_MONOLITHIC_0_USE_QA_1="#" if test "x$MONOLITHIC" = "x0" -a "x$USE_QA" = "x1" ; then COND_MONOLITHIC_0_USE_QA_1="" @@ -51693,6 +51769,7 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1!$COND_MONOLITHIC_0_SHARED_0_USE_GUI_1$ac_de COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_HTML_1!$COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_HTML_1$ac_delim COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1!$COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1$ac_delim COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1!$COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_QA_1$ac_delim +COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1!$COND_MONOLITHIC_0_SHARED_0_USE_PROPGRID_1$ac_delim COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1!$COND_MONOLITHIC_0_SHARED_0_USE_RICHTEXT_1$ac_delim COND_MONOLITHIC_0_SHARED_0_USE_STC_1!$COND_MONOLITHIC_0_SHARED_0_USE_STC_1$ac_delim COND_MONOLITHIC_0_SHARED_0_USE_XRC_1!$COND_MONOLITHIC_0_SHARED_0_USE_XRC_1$ac_delim @@ -51702,6 +51779,7 @@ COND_MONOLITHIC_0_SHARED_1_USE_GUI_1!$COND_MONOLITHIC_0_SHARED_1_USE_GUI_1$ac_de COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1!$COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1$ac_delim COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_MEDIA_1!$COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_MEDIA_1$ac_delim COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1!$COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_QA_1$ac_delim +COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1!$COND_MONOLITHIC_0_SHARED_1_USE_PROPGRID_1$ac_delim COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1!$COND_MONOLITHIC_0_SHARED_1_USE_RICHTEXT_1$ac_delim COND_MONOLITHIC_0_SHARED_1_USE_STC_1!$COND_MONOLITHIC_0_SHARED_1_USE_STC_1$ac_delim COND_MONOLITHIC_0_SHARED_1_USE_XRC_1!$COND_MONOLITHIC_0_SHARED_1_USE_XRC_1$ac_delim @@ -51710,6 +51788,7 @@ COND_MONOLITHIC_0_USE_GUI_1!$COND_MONOLITHIC_0_USE_GUI_1$ac_delim COND_MONOLITHIC_0_USE_GUI_1_USE_MEDIA_1!$COND_MONOLITHIC_0_USE_GUI_1_USE_MEDIA_1$ac_delim COND_MONOLITHIC_0_USE_HTML_1!$COND_MONOLITHIC_0_USE_HTML_1$ac_delim COND_MONOLITHIC_0_USE_MEDIA_1!$COND_MONOLITHIC_0_USE_MEDIA_1$ac_delim +COND_MONOLITHIC_0_USE_PROPGRID_1!$COND_MONOLITHIC_0_USE_PROPGRID_1$ac_delim COND_MONOLITHIC_0_USE_QA_1!$COND_MONOLITHIC_0_USE_QA_1$ac_delim COND_MONOLITHIC_0_USE_RICHTEXT_1!$COND_MONOLITHIC_0_USE_RICHTEXT_1$ac_delim COND_MONOLITHIC_0_USE_STC_1!$COND_MONOLITHIC_0_USE_STC_1$ac_delim @@ -51765,9 +51844,6 @@ COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0!$COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0$ac_ COND_TOOLKIT_DFB!$COND_TOOLKIT_DFB$ac_delim COND_TOOLKIT_DFB_USE_GUI_1!$COND_TOOLKIT_DFB_USE_GUI_1$ac_delim COND_TOOLKIT_GTK!$COND_TOOLKIT_GTK$ac_delim -COND_TOOLKIT_GTK_TOOLKIT_VERSION_!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_$ac_delim -COND_TOOLKIT_GTK_TOOLKIT_VERSION_2!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2$ac_delim -COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -51809,6 +51885,9 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +COND_TOOLKIT_GTK_TOOLKIT_VERSION_!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_$ac_delim +COND_TOOLKIT_GTK_TOOLKIT_VERSION_2!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2$ac_delim +COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1$ac_delim COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0$ac_delim COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_WXUNIV_0!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_WXUNIV_0$ac_delim COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1!$COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1$ac_delim @@ -51903,9 +51982,6 @@ WXCONFIG_RESFLAGS!$WXCONFIG_RESFLAGS$ac_delim GUIDIST!$GUIDIST$ac_delim DISTDIR!$DISTDIR$ac_delim SAMPLES_SUBDIRS!$SAMPLES_SUBDIRS$ac_delim -LDFLAGS_GL!$LDFLAGS_GL$ac_delim -OPENGL_LIBS!$OPENGL_LIBS$ac_delim -DMALLOC_LIBS!$DMALLOC_LIBS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -51947,6 +52023,9 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +LDFLAGS_GL!$LDFLAGS_GL$ac_delim +OPENGL_LIBS!$OPENGL_LIBS$ac_delim +DMALLOC_LIBS!$DMALLOC_LIBS$ac_delim WX_VERSION_TAG!$WX_VERSION_TAG$ac_delim RESCOMP!$RESCOMP$ac_delim RESFLAGS!$RESFLAGS$ac_delim @@ -51963,7 +52042,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 14; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 17; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure.in b/configure.in index db93bd3754..dd28b3b47d 100644 --- a/configure.in +++ b/configure.in @@ -767,6 +767,7 @@ WX_ARG_FEATURE(html, [ --enable-html use wxHTML sub-library], WX_ARG_FEATURE(htmlhelp, [ --enable-htmlhelp use wxHTML-based help], wxUSE_WXHTML_HELP) WX_ARG_FEATURE(xrc, [ --enable-xrc use XRC resources sub-library], wxUSE_XRC) WX_ARG_FEATURE(aui, [ --enable-aui use AUI docking library], wxUSE_AUI) +WX_ARG_FEATURE(propgrid, [ --enable-propgrid use wxPropertyGrid library], wxUSE_PROPGRID) WX_ARG_FEATURE(stc, [ --enable-stc use wxStyledTextCtrl library], wxUSE_STC) WX_ARG_FEATURE(constraints, [ --enable-constraints use layout-constraints system], wxUSE_CONSTRAINTS) WX_ARG_FEATURE(loggui, [ --enable-loggui use standard GUI logger], wxUSE_LOGGUI) @@ -6939,6 +6940,13 @@ if test "$wxUSE_AUI" = "yes"; then SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS aui" fi +USE_PROPGRID=0 +if test "$wxUSE_PROPGRID" = "yes"; then + AC_DEFINE(wxUSE_PROPGRID) + USE_PROPGRID=1 + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS propgrid" +fi + USE_STC=0 if test "$wxUSE_STC" = "yes"; then AC_DEFINE(wxUSE_STC) @@ -7320,6 +7328,9 @@ if test "$wxUSE_GUI" = "yes"; then if test "$wxUSE_AUI" = "yes" ; then BUILT_WX_LIBS="aui $BUILT_WX_LIBS" fi + if test "$wxUSE_PROPGRID" = "yes" ; then + BUILT_WX_LIBS="propgrid $BUILT_WX_LIBS" + fi if test "$wxUSE_STC" = "yes" ; then BUILT_WX_LIBS="stc $BUILT_WX_LIBS" fi diff --git a/distrib/msw/generic.rsp b/distrib/msw/generic.rsp index 730767ce72..75a3d0be61 100644 --- a/distrib/msw/generic.rsp +++ b/distrib/msw/generic.rsp @@ -102,6 +102,8 @@ src/richtext/*.cpp src/aui/*.cpp +src/propgrid/*.cpp + src/unix/*.cpp src/unix/*.c @@ -159,6 +161,7 @@ include/wx/html/msw/*.ico include/wx/html/msw/*.rc include/wx/richtext/*.h include/wx/aui/*.h +include/wx/propgrid/*.h lib/dummy tools/gettext/*.* diff --git a/distrib/msw/makefile.rsp b/distrib/msw/makefile.rsp index 198d01c294..55fa88a60f 100644 --- a/distrib/msw/makefile.rsp +++ b/distrib/msw/makefile.rsp @@ -64,6 +64,7 @@ samples/ownerdrw/Makefile.in samples/png/Makefile.in samples/popup/Makefile.in samples/printing/Makefile.in +samples/propgrid/Makefile.in samples/propsize/Makefile.in samples/regtest/Makefile.in samples/render/Makefile.in diff --git a/distrib/msw/vc.rsp b/distrib/msw/vc.rsp index 2dc4ab8c21..bb2c48d200 100644 --- a/distrib/msw/vc.rsp +++ b/distrib/msw/vc.rsp @@ -149,6 +149,8 @@ samples/popup/popup.dsp samples/printing/printing.dsp +samples/propgrid/propgrid.dsp + samples/propsize/propsize.dsp samples/regtest/regtest.dsp diff --git a/distrib/scripts/manifests/dmc.rsp b/distrib/scripts/manifests/dmc.rsp index 427237abb6..974e2a7c8e 100644 --- a/distrib/scripts/manifests/dmc.rsp +++ b/distrib/scripts/manifests/dmc.rsp @@ -160,6 +160,8 @@ samples/power/makefile.dmc samples/power/makefile.dms samples/printing/makefile.dmc samples/printing/makefile.dms +samples/propgrid/makefile.dmc +samples/propgrid/makefile.dms samples/propsize/makefile.dmc samples/propsize/makefile.dms samples/regtest/makefile.dmc diff --git a/distrib/scripts/manifests/generic.rsp b/distrib/scripts/manifests/generic.rsp index 6a6b85a940..da91705164 100644 --- a/distrib/scripts/manifests/generic.rsp +++ b/distrib/scripts/manifests/generic.rsp @@ -80,6 +80,8 @@ src/richtext/*.cpp src/aui/*.cpp +src/propgrid/*.cpp + src/png/*.c src/png/*.h src/png/makefile* @@ -103,6 +105,7 @@ include/wx/generic/*.xpm include/wx/html/*.h include/wx/richtext/*.h include/wx/aui/*.h +include/wx/propgrid/*.h lib/dummy utils/*.bkl diff --git a/distrib/scripts/manifests/generic_samples.rsp b/distrib/scripts/manifests/generic_samples.rsp index d81957d382..d6c551f5d0 100644 --- a/distrib/scripts/manifests/generic_samples.rsp +++ b/distrib/scripts/manifests/generic_samples.rsp @@ -1007,6 +1007,17 @@ samples/printing/makefile.unx samples/printing/makefile.wat samples/printing/makefile.vc samples/printing/printing.cpp +samples/propgrid/propgrid.bkl +samples/propgrid/propgrid.dsp +samples/propgrid/Makefile.in +samples/propgrid/makefile.bcc +samples/propgrid/makefile.gcc +samples/propgrid/propgrid.cpp +samples/propgrid/propgrid.h +samples/propgrid/propgrid_minimal.cpp +samples/propgrid/sampleprops.cpp +samples/propgrid/sampleprops.h +samples/propgrid/tests.cpp samples/regtest/key1.ico samples/regtest/key2.ico samples/regtest/key3.ico diff --git a/distrib/scripts/manifests/makefile.rsp b/distrib/scripts/manifests/makefile.rsp index 3d863fad34..ae02497cc0 100644 --- a/distrib/scripts/manifests/makefile.rsp +++ b/distrib/scripts/manifests/makefile.rsp @@ -79,6 +79,7 @@ samples/png/Makefile.in samples/popup/Makefile.in samples/power/Makefile.in samples/printing/Makefile.in +samples/propgrid/Makefile.in samples/propsize/Makefile.in samples/regtest/Makefile.in samples/render/Makefile.in diff --git a/distrib/scripts/manifests/vc.rsp b/distrib/scripts/manifests/vc.rsp index ceb7b9321e..11e70b8c50 100644 --- a/distrib/scripts/manifests/vc.rsp +++ b/distrib/scripts/manifests/vc.rsp @@ -171,6 +171,8 @@ samples/power/power.dsp samples/power/power.dsw samples/printing/printing.dsp samples/printing/printing.dsw +samples/propgrid/propgrid.dsp +samples/propgrid/propgrid.dsw samples/propsize/propsize.dsp samples/propsize/propsize.dsw samples/regtest/regtest.dsp diff --git a/docs/changes.txt b/docs/changes.txt index 114b4b2000..1bcb97e7f3 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -242,6 +242,9 @@ Major new features in this release - wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally, depending on what is optimal for the target platform. +- New propgrid library containing wxPropertyGrid and related classes, many + enhancements to wxDataViewCtrl. + - Events loops, timers and sockets can now be used in wxBase, without GUI. @@ -300,32 +303,33 @@ All (Unix): All (GUI): -- Added wxDataViewCtrl class and helper classes -- Provide native implementation of wxCalendarCtrl under wxMSW and wxGTK -- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames() +- Added wxDataViewCtrl class and helper classes. +- Integrated wxPropertyGrid in wxWidgets itself (Jaakko Salli). +- Provide native implementation of wxCalendarCtrl under wxMSW and wxGTK. +- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames(). - Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty). -- Added wxNotificationMessage class for non-intrusive notifications -- Added wxWindow::Show/HideWithEffect() -- Added wxWrapSizer (Arne Steinarson) -- Added wxSpinCtrlDouble (John Labenski) +- Added wxNotificationMessage class for non-intrusive notifications. +- Added wxWindow::Show/HideWithEffect(). +- Added wxWrapSizer (Arne Steinarson). +- Added wxSpinCtrlDouble (John Labenski). - Support custom labels in wxMessageDialog (Gareth Simpson for wxMac version). - Also added wxCANCEL_DEFAULT to wxMessageDialog. - Allow copying text in the log dialogs. - Added multisample (anti-aliasing) support to wxGLCanvas (Olivier Playez). - Initialize wx{Client,Paint,Window}DC with fonts/colours of its window. -- Added wxNativeContainerWindow to allow embedding wx into native windows -- Added custom controls support to wxFileDialog (Diaa Sami and Marcin Wojdyr) +- Added wxNativeContainerWindow to allow embedding wx into native windows. +- Added custom controls support to wxFileDialog (Diaa Sami and Marcin Wojdyr). - Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron). - Added support for drop down toolbar buttons (Tim Kosse). - Added support for labels for toolbar controls (Vince Harron). - Added wxMessageDialog::SetMessage() and SetExtendedMessage(). -- Added wxListCtrl::Set/GetColumnsOrder() (Yury Voronov) +- Added wxListCtrl::Set/GetColumnsOrder() (Yury Voronov). - Made wxLogWindow thread-safe (Barbara Maren Winkler). -- Added wxWindow::AlwaysShowScrollbars() (Julian Scheid) -- Added wxMouseEvent::GetClickCount() (Julian Scheid) -- Added wxBG_STYLE_TRANSPARENT background style (Julian Scheid) -- Added XRCSIZERITEM() macro for obtaining sizers from XRC (Brian Vanderburg II) -- New and improved wxFileCtrl (Diaa Sami and Marcin Wojdyr) +- Added wxWindow::AlwaysShowScrollbars() (Julian Scheid). +- Added wxMouseEvent::GetClickCount() (Julian Scheid). +- Added wxBG_STYLE_TRANSPARENT background style (Julian Scheid). +- Added XRCSIZERITEM() macro for obtaining sizers from XRC (Brian Vanderburg II). +- New and improved wxFileCtrl (Diaa Sami and Marcin Wojdyr). - Added wxEventBlocker class (Francesco Montorsi). - Added wxFile/DirPickerCtrl::Get/SetFile/DirName() (Francesco Montorsi). - Added wxSizerFlags::Top() and Bottom(). diff --git a/docs/doxygen/groups/class_propgrid.h b/docs/doxygen/groups/class_propgrid.h new file mode 100644 index 0000000000..d850e5eca7 --- /dev/null +++ b/docs/doxygen/groups/class_propgrid.h @@ -0,0 +1,20 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: class_propgrid.h +// Purpose: wxPropertyGrid classes group docs +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +/** + +@defgroup group_class_propgrid wxPropertyGrid +@ingroup group_class + +wxPropertyGrid is a specialized grid for editing properties (that is, +name=value pairs). + +Related Overviews: @ref overview_propgrid + +*/ + diff --git a/docs/doxygen/mainpages/cat_classes.h b/docs/doxygen/mainpages/cat_classes.h index ea42b6da35..28f225d2db 100644 --- a/docs/doxygen/mainpages/cat_classes.h +++ b/docs/doxygen/mainpages/cat_classes.h @@ -27,6 +27,7 @@ This page contains a summarized listing of classes, please see the @li @ref page_class_cat_richtext @li @ref page_class_cat_grid @li @ref page_class_cat_miscwnd +@li @ref page_class_cat_propgrid </td><td> @li @ref page_class_cat_dc @li @ref page_class_cat_gdi @@ -372,6 +373,12 @@ data. @li wxGridTypeRegistry: Contains information about the data types supported by the grid. +@section page_class_cat_propgrid Property Grid + +wxPropertyGrid is a property sheet control, which API consists of +various classes listed here. + + @section page_class_cat_dc Device Contexts Device contexts are surfaces that may be drawn on, and provide an abstraction diff --git a/docs/doxygen/mainpages/const_cpp.h b/docs/doxygen/mainpages/const_cpp.h index 86c85e2c27..3de6c8b68f 100644 --- a/docs/doxygen/mainpages/const_cpp.h +++ b/docs/doxygen/mainpages/const_cpp.h @@ -220,6 +220,7 @@ with the corresponding library. The following symbols are honoured: - wxNO_HTML_LIB - wxNO_MEDIA_LIB - wxNO_NET_LIB + - wxNO_PROPGRID_LIB - wxNO_QA_LIB - wxNO_RICHTEXT_LIB - wxNO_XML_LIB diff --git a/docs/doxygen/mainpages/const_wxusedef.h b/docs/doxygen/mainpages/const_wxusedef.h index d80ac6aa89..c1799d1f7b 100644 --- a/docs/doxygen/mainpages/const_wxusedef.h +++ b/docs/doxygen/mainpages/const_wxusedef.h @@ -191,6 +191,7 @@ library: @itemdef{wxUSE_PRINTF_POS_PARAMS, Use wxVsnprintf which supports positional parameters.} @itemdef{wxUSE_PRINTING_ARCHITECTURE, Enable printer classes.} @itemdef{wxUSE_PROGRESSDLG, Enables progress dialog classes.} +@itemdef{wxUSE_PROPGRID, Use wxPropertyGrid library.} @itemdef{wxUSE_PROTOCOL, Use wxProtocol and derived classes.} @itemdef{wxUSE_PROTOCOL_FILE, Use wxFileProto class. (requires wxProtocol)} @itemdef{wxUSE_PROTOCOL_FTP, Use wxFTP class. (requires wxProtocol)} diff --git a/docs/doxygen/mainpages/libs.h b/docs/doxygen/mainpages/libs.h index 7806b6dedf..eb61bbe289 100644 --- a/docs/doxygen/mainpages/libs.h +++ b/docs/doxygen/mainpages/libs.h @@ -33,6 +33,7 @@ digraph Dependancies wxGL [fillcolor = green, URL = "\ref page_libs_wxgl"]; wxHTML [fillcolor = green, URL = "\ref page_libs_wxhtml"]; wxMedia [fillcolor = green, URL = "\ref page_libs_wxmedia"]; + wxPropertyGrid [fillcolor = green, URL = "\ref page_libs_wxpropgrid"]; wxQA [fillcolor = green, URL = "\ref page_libs_wxqa"]; wxRichText [fillcolor = green, URL = "\ref page_libs_wxrichtext"]; wxSTC [fillcolor = green, URL = "\ref page_libs_wxstc"]; @@ -47,6 +48,7 @@ digraph Dependancies wxGL -> wxCore; wxHTML -> wxCore; wxMedia -> wxCore; + wxPropertyGrid -> wxAdvanced; wxQA -> wxCore; wxQA -> wxXML; wxRichText -> wxAdvanced; wxRichText -> wxHTML; wxRichText -> wxXML; wxSTC -> wxCore; @@ -99,6 +101,13 @@ Classes for network access: Requires @ref page_libs_wxbase. +@section page_libs_wxpropgrid wxPropertyGrid + +This contains the wxPropertyGrid control. + +Requires @ref page_libs_wxadv, @ref page_libs_wxcore, @ref page_libs_wxbase. + + @section page_libs_wxrichtext wxRichText This contains generic rich text control functionality. diff --git a/docs/doxygen/mainpages/samples.h b/docs/doxygen/mainpages/samples.h index 366018b15f..7334903ff7 100644 --- a/docs/doxygen/mainpages/samples.h +++ b/docs/doxygen/mainpages/samples.h @@ -107,6 +107,7 @@ TODO: Organize them in a more human-readable way. @li @sample{popup} @li @sample{power} @li @sample{printing} +@li @sample{propgrid} </td><td> @li @sample{regtest} @li @sample{render} @@ -688,6 +689,21 @@ commands through menu. @sampledir{printing} +@section page_samples_propgrid wxPropertyGrid Sample + +Sample application has following additional examples of custom properties: +- wxFontDataProperty ( edits wxFontData ) +- wxPointProperty ( edits wxPoint ) +- wxSizeProperty ( edits wxSize ) +- wxAdvImageFileProperty ( like wxImageFileProperty, but also has a drop-down + for recent image selection ) +- wxDirsProperty ( edits a wxArrayString consisting of directory strings) +- wxArrayDoubleProperty ( edits wxArrayDouble ) + +@sampleabout{wxPropertyGrid} + +@sampledir{propgrid} + @section page_samples_regtest Registry Sample @sampleabout{wxRegKey} diff --git a/docs/doxygen/mainpages/topics.h b/docs/doxygen/mainpages/topics.h index c00ab438c4..69fd3ec7a1 100644 --- a/docs/doxygen/mainpages/topics.h +++ b/docs/doxygen/mainpages/topics.h @@ -91,6 +91,7 @@ The following is a basic categorization of them: @li @subpage overview_html @li @subpage overview_richtextctrl @li @subpage overview_aui +@li @subpage overview_propgrid @li @subpage overview_cmndlg @li @subpage overview_toolbar @li @subpage overview_grid diff --git a/docs/doxygen/overviews/propgrid.h b/docs/doxygen/overviews/propgrid.h new file mode 100644 index 0000000000..f78b7e818c --- /dev/null +++ b/docs/doxygen/overviews/propgrid.h @@ -0,0 +1,1101 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: propgrid.h +// Purpose: topic overview +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +/** + +@page overview_propgrid wxPropertyGrid Overview + +Key Classes: +@li wxPGProperty +@li wxPropertyGrid +@li wxPropertyGridEvent +@li wxPropertyGridManager +@li wxPropertyGridPage + + wxPropertyGrid is a specialized grid for editing properties such as strings, +numbers, flagsets, fonts, and colours. It is possible, for example, to categorize +properties, set up a complete tree-hierarchy, add multiple columns, and set +arbitrary per-property attributes. + +@li @ref basics +@li @ref categories +@li @ref parentprops +@li @ref enumandflags +@li @ref advprops +@li @ref iterating +@li @ref operations +@li @ref events +@li @ref validating +@li @ref populating +@li @ref cellrender +@li @ref customizing +@li @ref usage2 +@li @ref subclassing +@li @ref misc +@li @ref proplist +@li @ref userhelp +@li @ref notes +@li @ref newprops +@li @ref neweditors + +@section basics Creating and Populating wxPropertyGrid + +As seen here, wxPropertyGrid is constructed in the same way as +other wxWidgets controls: + +@code + +// Necessary header file +#include <wx/propgrid/propgrid.h> + +... + + // Assumes code is in frame/dialog constructor + + // Construct wxPropertyGrid control + wxPropertyGrid* pg = new wxPropertyGrid( + this, // parent + PGID, // id + wxDefaultPosition, // position + wxDefaultSize, // size + // Here are just some of the supported window styles + wxPG_AUTO_SORT | // Automatic sorting after items added + wxPG_SPLITTER_AUTO_CENTER | // Automatically center splitter until user manually adjusts it + // Default style + wxPG_DEFAULT_STYLE ); + + // Window style flags are at premium, so some less often needed ones are + // available as extra window styles (wxPG_EX_xxx) which must be set using + // SetExtraStyle member function. wxPG_EX_HELP_AS_TOOLTIPS, for instance, + // allows displaying help strings as tooltips. + pg->SetExtraStyle( wxPG_EX_HELP_AS_TOOLTIPS ); + +@endcode + + (for complete list of new window styles: @link wndflags Additional Window Styles@endlink) + + wxPropertyGrid is usually populated with lines like this: + +@code + pg->Append( new wxStringProperty(wxT("Label"),wxT("Name"),wxT("Initial Value")) ); +@endcode + +Naturally, wxStringProperty is a property class. Only the first function argument (label) +is mandatory. Second one, name, defaults to label and, third, the initial value, to +default value. If constant wxPG_LABEL is used as the name argument, then the label is +automatically used as a name as well (this is more efficient than manually +defining both as the same). Empty name is also allowed, but in this case the +property cannot be accessed by its name. Note that all property class constructors have +quite similar constructor argument list. + +To demonstrate other common property classes, here's another code snippet: + +@code + + // Add int property + pg->Append( new wxIntProperty(wxT("IntProperty"), wxPG_LABEL, 12345678) ); + + // Add float property (value type is actually double) + pg->Append( new wxFloatProperty(wxT("FloatProperty"), wxPG_LABEL, 12345.678) ); + + // Add a bool property + pg->Append( new wxBoolProperty(wxT("BoolProperty"), wxPG_LABEL, false) ); + + // A string property that can be edited in a separate editor dialog. + pg->Append( new wxLongStringProperty(wxT("LongStringProperty"), + wxPG_LABEL, + wxT("This is much longer string than the ") + wxT("first one. Edit it by clicking the button."))); + + // String editor with dir selector button. + pg->Append( new wxDirProperty(wxT("DirProperty"), wxPG_LABEL, ::wxGetUserHome()) ); + + // wxArrayStringProperty embeds a wxArrayString. + pg->Append( new wxArrayStringProperty(wxT("Label of ArrayStringProperty"), + wxT("NameOfArrayStringProp"))); + + // A file selector property. + pg->Append( new wxFileProperty(wxT("FileProperty"), wxPG_LABEL, wxEmptyString) ); + + // Extra: set wildcard for file property (format same as in wxFileDialog). + pg->SetPropertyAttribute( wxT("FileProperty"), + wxPG_FILE_WILDCARD, + wxT("All files (*.*)|*.*") ); + +@endcode + + Operations on properties should be done either via wxPropertyGrid's +(or wxPropertyGridManager's) methods, or by acquiring pointer to a property +(Append returns a wxPGProperty* or wxPGId, which is typedef for same), and then +calling its method. Note however that property's methods generally do not +automatically update grid graphics. + + Property container functions operating on properties, such as SetPropertyValue or +DisableProperty, all accept a special wxPGPropArg, argument which can automatically +convert name of a property to a pointer. For instance: + +@code + // A file selector property. + wxPGPropety* p = pg->Append( new wxFileProperty(wxT("FileProperty"), wxPG_LABEL, wxEmptyString) ); + + // Valid: Set wildcard by name + pg->SetPropertyAttribute( wxT("FileProperty"), + wxPG_FILE_WILDCARD, + wxT("All files (*.*)|*.*") ); + + // Also Valid: Set wildcard by ptr + pg->SetPropertyAttribute( p, + wxPG_FILE_WILDCARD, + wxT("All files (*.*)|*.*") ); +@endcode + +Using pointer is faster, since it doesn't require hash map lookup. Anyway, you can allways +get property pointer (wxPGProperty*) as Append/Insert return value, or by calling +GetPropertyByName. + + Below are samples for using some of the more commong operations. See +wxPropertyGridInterface and wxPropertyGrid class references for complete list. + +@code + + // wxPGId is a short-hand for wxPGProperty*. Let's use it this time. + wxPGId id = pg->GetPropertyByName( wxT("MyProperty") ); + + // There are many overloaded versions of this method, of which each accept + // different type of value. + pg->SetPropertyValue( wxT("MyProperty"), 200 ); + + // Setting a string works for all properties - conversion is done + // automatically. + pg->SetPropertyValue( id, wxT("400") ); + + // Getting property value as wxVariant. + wxVariant value = pg->GetPropertyValue( wxT("MyProperty") ); + + // Getting property value as String (again, works for all typs). + wxString value = pg->GetPropertyValueAsString( id ); + + // Getting property value as int. Provokes a run-time error + // if used with property which value type is not "long". + long value = pg->GetPropertyValueAsLong( wxT("MyProperty") ); + + // Set new name. + pg->SetPropertyName( wxT("MyProperty"), wxT("X") ); + + // Set new label - we need to use the new name. + pg->SetPropertyLabel( wxT("X"), wxT("New Label") ); + + // Disable the property. It's text will appear greyed. + // This is probably the closest you can get if you want + // a "read-only" property. + pg->DisableProperty( id ); + +@endcode + + +@section categories Categories + + wxPropertyGrid has a hierarchial property storage and display model, which +allows property categories to hold child properties and even other +categories. Other than that, from the programmer's point of view, categories +can be treated exactly the same as "other" properties. For example, despite +its name, GetPropertyByName also returns a category by name, and SetPropertyLabel +also sets label of a category. Note however that sometimes the label of a +property category may be referred as caption (for example, there is +SetCaptionForegroundColour method that sets text colour of a property category's label). + + When category is added at the top (i.e. root) level of the hierarchy, +it becomes a *current category*. This means that all other (non-category) +properties after it are automatically added to it. You may add +properties to specific categories by using wxPropertyGrid::Insert or wxPropertyGrid::AppendIn. + + Category code sample: + +@code + + // One way to add category (similar to how other properties are added) + pg->Append( new wxPropertyCategory(wxT("Main")) ); + + // All these are added to "Main" category + pg->Append( new wxStringProperty(wxT("Name")) ); + pg->Append( new wxIntProperty(wxT("Age"),wxPG_LABEL,25) ); + pg->Append( new wxIntProperty(wxT("Height"),wxPG_LABEL,180) ); + pg->Append( new wxIntProperty(wxT("Weight")) ); + + // Another one + pg->Append( new wxPropertyCategory(wxT("Attrikbutes")) ); + + // All these are added to "Attributes" category + pg->Append( new wxIntProperty(wxT("Intelligence")) ); + pg->Append( new wxIntProperty(wxT("Agility")) ); + pg->Append( new wxIntProperty(wxT("Strength")) ); + +@endcode + + +@section parentprops Tree-like Property Structure + + As a new feature in version 1.3.1, basicly any property can have children. There +are few limitations, however. + +@remarks +- Names of properties with non-category, non-root parents are not stored in hash map. + Instead, they can be accessed with strings like "Parent.Child". For instance, in + the sample below, child property named "Max. Speed (mph)" can be accessed by global + name "Car.Speeds.Max Speed (mph)". +- If you want to property's value to be a string composed based on the values of + child properties, you must use wxStringProperty as parent and use value "<composed>". +- Events (eg. change of value) that occur in parent do not propagate to children. Events + that occur in children will propagate to parents, but only if they are wxStringProperties + with "<composed>" value. +- Old wxParentProperty class is deprecated, and remains as a typedef of wxStringProperty. + If you want old value behavior, you must specify "<composed>" as wxStringProperty's + value. + +Sample: + +@code + wxPGId pid = pg->Append( new wxStringProperty(wxT("Car"),wxPG_LABEL,wxT("<composed>")) ); + + pg->AppendIn( pid, new wxStringProperty(wxT("Model"), + wxPG_LABEL, + wxT("Lamborghini Diablo SV")) ); + + pg->AppendIn( pid, new wxIntProperty(wxT("Engine Size (cc)"), + wxPG_LABEL, + 5707) ); + + wxPGId speedId = pg->AppendIn( pid, new wxStringProperty(wxT("Speeds"),wxPG_LABEL,wxT("<composed>")) ); + pg->AppendIn( speedId, new wxIntProperty(wxT("Max. Speed (mph)"),wxPG_LABEL,290) ); + pg->AppendIn( speedId, new wxFloatProperty(wxT("0-100 mph (sec)"),wxPG_LABEL,3.9) ); + pg->AppendIn( speedId, new wxFloatProperty(wxT("1/4 mile (sec)"),wxPG_LABEL,8.6) ); + + // Make sure the child properties can be accessed correctly + pg->SetPropertyValue( wxT("Car.Speeds.Max. Speed (mph)"), 300 ); + + pg->AppendIn( pid, new wxIntProperty(wxT("Price ($)"), + wxPG_LABEL, + 300000) ); + // Displayed value of "Car" property is now: + // "Lamborghini Diablo SV; [300; 3.9; 8.6]; 300000" + +@endcode + +@section enumandflags wxEnumProperty and wxFlagsProperty + + wxEnumProperty is used when you want property's (integer or string) value +to be selected from a popup list of choices. + + Creating wxEnumProperty is more complex than those described earlier. +You have to provide list of constant labels, and optionally relevant values +(if label indexes are not sufficient). + +@remarks + +- Value wxPG_INVALID_VALUE (equals 2147483647 which usually equals INT_MAX) is not + allowed as value. + +A very simple example: + +@code + + // + // Using wxArrayString + // + wxArrayString arrDiet; + arr.Add(wxT("Herbivore")); + arr.Add(wxT("Carnivore")); + arr.Add(wxT("Omnivore")); + + pg->Append( new wxEnumProperty(wxT("Diet"), + wxPG_LABEL, + arrDiet) ); + + + + // + // Using wxChar* array + // + const wxChar* arrayDiet[] = + { wxT("Herbivore"), wxT("Carnivore"), wxT("Omnivore"), NULL }; + + pg->Append( new wxEnumProperty(wxT("Diet"), + wxPG_LABEL, + arrayDiet) ); + + +@endcode + +Here's extended example using values as well: + +@code + + // + // Using wxArrayString and wxArrayInt + // + wxArrayString arrDiet; + arr.Add(wxT("Herbivore")); + arr.Add(wxT("Carnivore")); + arr.Add(wxT("Omnivore")); + + wxArrayInt arrIds; + arrIds.Add(40); + arrIds.Add(45); + arrIds.Add(50); + + // Note that the initial value (the last argument) is the actual value, + // not index or anything like that. Thus, our value selects "Omnivore". + pg->Append( new wxEnumProperty(wxT("Diet"), + wxPG_LABEL, + arrDiet, + arrIds, + 50)); + + + // + // Using wxChar* and long arrays + // + const wxChar* array_diet[] = + { wxT("Herbivore"), wxT("Carnivore"), wxT("Omnivore"), NULL }; + + long array_diet_ids[] = + { 40, 45, 50 }; + + // Value can be set from string as well + pg->Append( new wxEnumProperty(wxT("Diet"), + wxPG_LABEL, + array_diet, + array_diet_ids); + +@endcode + + wxPGChoices is a class where wxEnumProperty, and other properties which + require label storage, actually stores strings and values. It is used + to facilitiate reference counting, and therefore recommended way of + adding items when multiple properties share the same set. + + You can use wxPGChoices directly as well, filling it and then passing it + to the constructor. Infact, if you wish to display bitmaps next to labels, + your best choice is to use this approach. + +@code + + wxPGChoices chs; + chs.Add(wxT("Herbivore"),40); + chs.Add(wxT("Carnivore"),45); + chs.Add(wxT("Omnivore"),50); + + // Let's add an item with bitmap, too + chs.Add(wxT("None of the above"), wxBitmap(), 60); + + // Note: you can add even whole arrays to wxPGChoices + + pg->Append( new wxEnumProperty(wxT("Diet"), + wxPG_LABEL, + chs) ); + + // Add same choices to another property as well - this is efficient due + // to reference counting + pg->Append( new wxEnumProperty(wxT("Diet 2"), + wxPG_LABEL, + chs) ); + + @endcode + +If you later need to change choices used by a property, there is function +for that as well. + +@code + + // + // Example 1: Add one extra item + wxPGChoices& choices = pg->GetPropertyChoices(wxT("Diet")); + choices.Add(wxT("Custom"),55); + + // + // Example 2: Replace all the choices + wxPGChoices chs; + chs.Add(wxT("<No valid items yet>"),0); + pg->SetPropertyChoices(wxT("Diet"),chs); + +@endcode + +If you want to create your enum properties with simple (label,name,value) +constructor, then you need to create a new property class using one of the +supplied macro pairs. See @ref newprops for details. + +<b>wxEditEnumProperty</b> is works exactly like wxEnumProperty, except +is uses non-readonly combobox as default editor, and value is stored as +string when it is not any of the choices. + +wxFlagsProperty is similar: + +@code + + const wxChar* flags_prop_labels[] = { wxT("wxICONIZE"), + wxT("wxCAPTION"), wxT("wxMINIMIZE_BOX"), wxT("wxMAXIMIZE_BOX"), NULL }; + + // this value array would be optional if values matched string indexes + long flags_prop_values[] = { wxICONIZE, wxCAPTION, wxMINIMIZE_BOX, + wxMAXIMIZE_BOX }; + + pg->Append( new wxFlagsProperty(wxT("Window Style"), + wxPG_LABEL, + flags_prop_labels, + flags_prop_values, + wxDEFAULT_FRAME_STYLE) ); + +@endcode + +wxFlagsProperty can use wxPGChoices just the same way as wxEnumProperty +(and also custom property classes can be created with similar macro pairs). +<b>Note: </b> When changing "choices" (ie. flag labels) of wxFlagsProperty, +you will need to use SetPropertyChoices - otherwise they will not get updated +properly. + +@section advprops Specialized Properties + + This section describes the use of less often needed property classes. +To use them, you have to include <wx/propgrid/advprops.h>. + +@code + +// Necessary extra header file +#include <wx/propgrid/advprops.h> + +... + + // Date property. + pg->Append( new wxDateProperty(wxT("MyDateProperty"), + wxPG_LABEL, + wxDateTime::Now()) ); + + // Image file property. Wildcard is auto-generated from available + // image handlers, so it is not set this time. + pg->Append( new wxImageFileProperty(wxT("Label of ImageFileProperty"), + wxT("NameOfImageFileProp")) ); + + // Font property has sub-properties. Note that we give window's font as + // initial value. + pg->Append( new wxFontProperty(wxT("Font"), + wxPG_LABEL, + GetFont()) ); + + // Colour property with arbitrary colour. + pg->Append( new wxColourProperty(wxT("My Colour 1"), + wxPG_LABEL, + wxColour(242,109,0) ) ); + + // System colour property. + pg->Append( new wxSystemColourProperty(wxT("My SysColour 1"), + wxPG_LABEL, + wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)) ); + + // System colour property with custom colour. + pg->Append( new wxSystemColourProperty(wxT("My SysColour 2"), + wxPG_LABEL, + wxColour(0,200,160) ) ); + + // Cursor property + pg->Append( new wxCursorProperty(wxT("My Cursor"), + wxPG_LABEL, + wxCURSOR_ARROW)); + +@endcode + + +@section iterating Iterating through a property container + +You can use somewhat STL'ish iterator classes to iterate through the grid. +Here is a simple example of forward iterating through all individual +properties (not categories or sub-propeties that are normally 'transparent' +to application code): + +@code + + wxPropertyGridIterator it; + + for ( it = pg->GetIterator(); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + // Do something with the property + } + +@endcode + +As expected there is also a const iterator: + +@code + + wxPropertyGridConstIterator it; + + for ( it = pg->GetIterator(); + !it.AtEnd(); + it++ ) + { + const wxPGProperty* p = *it; + // Do something with the property + } + +@endcode + +You can give some arguments to GetIterator to determine which properties +get automatically filtered out. For complete list of options, see +@link iteratorflags List of Property Iterator Flags@endlink. GetIterator() +also accepts other arguments. See wxPropertyGridInterface::GetIterator() +for details. + +This example reverse-iterates through all visible items: + +@code + + wxPropertyGridIterator it; + + for ( it = pg->GetIterator(wxPG_ITERATE_VISIBLE, wxBOTTOM); + !it.AtEnd(); + it-- ) + { + wxPGProperty* p = *it; + // Do something with the property + } + +@endcode + +<b>wxPython Note:</b> Instead of ++ operator, use Next() method, and instead of +* operator, use GetProperty() method. + +GetIterator() only works with wxPropertyGrid and the individual pages +of wxPropertyGridManager. In order to iterate through an arbitrary +property container, you need to use wxPropertyGridInterface::GetVIterator(). +Note however that this virtual iterater is limited to forward iteration. + +@code + + wxPGVIterator it; + + for ( it = manager->GetVIterator(); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + // Do something with the property + } + +@endcode + + +@section operations More About Operating with Properties + +Getting value of selected wxSystemColourProperty (which value type is derived +from wxObject): + +@code + + wxPGId id = pg->GetSelection(); + + if ( id ) + { + // Get name of property + const wxString& name = pg->GetPropertyName( id ); + + // If type is not correct, GetColour() method will produce run-time error + if ( pg->GetPropertyValueType() == wxT("wxColourPropertyValue") ) ) + { + wxColourPropertyValue* pcolval = + wxDynamicCast(pg->GetPropertyValueAsWxObjectPtr(id), + wxColourPropertyValue); + + // Report value + wxString text; + if ( pcolval->m_type == wxPG_CUSTOM_COLOUR ) + text.Printf( wxT("It is custom colour: (%i,%i,%i)"), + (int)pcolval->m_colour.Red(), + (int)pcolval->m_colour.Green(), + (int)pcolval->m_colour.Blue()); + else + text.Printf( wxT("It is wx system colour (number=%i): (%i,%i,%i)"), + (int)pcolval->m_type, + (int)pcolval->m_colour.Red(), + (int)pcolval->m_colour.Green(), + (int)pcolval->m_colour.Blue()); + + wxMessageBox( text ); + } + } + +@endcode + +@section populating Populating wxPropertyGrid Automatically + +@subsection fromvariants Populating from List of wxVariants + +Example of populating an empty wxPropertyGrid from a values stored +in an arbitrary list of wxVariants. + +@code + + // This is a static method that initializes *all* builtin type handlers + // available, including those for wxColour and wxFont. Refers to *all* + // included properties, so when compiling with static library, this + // method may increase the executable size significantly. + pg->InitAllTypeHandlers(); + + // Get contents of the grid as a wxVariant list + wxVariant all_values = pg->GetPropertyValues(); + + // Populate the list with values. If a property with appropriate + // name is not found, it is created according to the type of variant. + pg->SetPropertyValues( my_list_variant ); + + // In order to get wxObject ptr from a variant value, + // wxGetVariantCast(VARIANT,CLASSNAME) macro has to be called. + // Like this: + wxVariant v_txcol = pg->GetPropertyValue(wxT("Text Colour")); + const wxColour& txcol = wxGetVariantCast(v_txcol,wxColour); + +@endcode + +@subsection fromfile Loading Population from a Text-based Storage + +Class wxPropertyGridPopulator may be helpful when writing code that +loads properties from a text-source. In fact, the supplied xrc handler +(src/xh_propgrid.cpp) uses it. See that code for more info. +NOTE: src/xh_propgrid.cpp is not included in the library by default, +to avoid dependency to wxXRC. You will need to add it to your application +separately. + +@subsection editablestate Saving and Restoring User-Editable State + +You can use wxPGEditableState and wxPGMEditableState classes, and +wxPropertyGrid::SaveEditableState() and wxPropertyGrid::RestoreEditableState() +to save and restore user-editable state (selected property, expanded/ +collapsed properties, and scrolled position). For convience with +program configuration, wxPGEditableState has functions to save/load +its value in wxString. For instance: + +@code + // Save state into config + wxPGEditableState edState; + pg->SaveEditableState(&edState); + programConfig->Store(wxT("PropertyGridState"), edState.GetAsString()); + + // Restore state from config + wxPGEditableState edState; + edState.SetFromString(programConfig->Load(wxT("PropertyGridState"))); + pg->RestoreEditableState(edState); +@endcode + + +@section events Event Handling + +Probably the most important event is the Changed event which occurs when +value of any property is changed by the user. Use EVT_PG_CHANGED(id,func) +in your event table to use it. + +For complete list of event types, see wxPropertyGrid class reference. + +The custom event class, wxPropertyGridEvent, has methods to directly +access the property that triggered the event. + +Here's a small sample: + +@code + +// Portion of an imaginary event table +BEGIN_EVENT_TABLE(MyForm, wxFrame) + + ... + + // This occurs when a property value changes + EVT_PG_CHANGED( PGID, MyForm::OnPropertyGridChange ) + + ... + +END_EVENT_TABLE() + +void MyForm::OnPropertyGridChange( wxPropertyGridEvent& event ) +{ + wxPGProperty *property = event.GetProperty(); + + // It may be NULL + if ( !property ) + return; + + // Get name of changed property + const wxString& name = property->GetName(); + + // Get resulting value + wxVariant value = property->GetValue(); +} + +@endcode + +Another event type you might find useful is EVT_PG_CHANGING, which occurs +just prior property value is being changed by user. You can acquire pending +value using wxPropertyGridEvent::GetValue(), and if it is not acceptable, +call wxPropertyGridEvent::Veto() to prevent the value change from taking +place. + +@code + +// Portion of an imaginary event table +BEGIN_EVENT_TABLE(MyForm, wxFrame) + + ... + + // This occurs when a property value changes + EVT_PG_CHANGING( PGID, MyForm::OnPropertyGridChanging ) + + ... + +END_EVENT_TABLE() + +void MyForm::OnPropertyGridChanging( wxPropertyGridEvent& event ) +{ + wxPGProperty* property = event.GetProperty(); + + if ( property == m_pWatchThisProperty ) + { + // GetValue() returns the pending value, but is only + // supported by wxEVT_PG_CHANGING. + if ( event.GetValue().GetString() == g_pThisTextIsNotAllowed ) + { + event.Veto(); + return; + } + } +} + +@endcode + +@remarks On Sub-property Event Handling +- For aggregate type properties (wxFontProperty, wxFlagsProperty, etc), events + occur for the main parent property only. For other properties events occur + for the children themselves.. + +- When property's child gets changed, you can use wxPropertyGridEvent::GetMainParent + to obtain its topmost non-category parent (useful, if you have deeply nested + properties). + + +@section validating Validating Property Values + +There are various ways to make sure user enters only correct values. First, you +can use wxValidators similar to as you would with ordinary controls. Use +wxPropertyGridInterface::SetPropertyValidator() to assign wxValidator to +property. + +Second, you can subclass a property and override wxPGProperty::ValidateValue(), +or handle wxEVT_PG_CHANGING for the same effect. Both of these methods do not +actually prevent user from temporarily entering invalid text, but they do give +you an opportunity to warn the user and block changed value from being committed +in a property. + +Various validation failure options can be controlled globally with +wxPropertyGrid::SetValidationFailureBehavior(), or on an event basis by +calling wxEvent::SetValidationFailureBehavior(). Here's a code snippet of +how to handle wxEVT_PG_CHANGING, and to set custom failure behaviour and +message. + +@code + void MyFrame::OnPropertyGridChanging(wxPropertyGridEvent& event) + { + wxPGProperty* property = event.GetProperty(); + + // You must use wxPropertyGridEvent::GetValue() to access + // the value to be validated. + wxVariant pendingValue = event.GetValue(); + + if ( property->GetName() == wxT("Font") ) + { + // Make sure value is not unspecified + if ( !pendingValue.IsNull() ) + { + wxFont font << pendingValue; + + // Let's just allow Arial font + if ( font.GetFaceName() != wxT("Arial") ) + { + event.Veto(); + event.SetValidationFailureBehavior(wxPG_VFB_STAY_IN_PROPERTY | + wxPG_VFB_BEEP | + wxPG_VFB_SHOW_MESSAGE); + } + } + } + } +@endcode + + +@section cellrender Customizing Individual Cell Appearance + +You can control text colour, background colour, and attached image of +each cell in the property grid. Use wxPropertyGridInterface::SetPropertyCell() or +wxPGProperty::SetCell() for this purpose. + +In addition, it is possible to control these characteristics for +wxPGChoices list items. See wxPGChoices::Item() and wxPGChoiceEntry class +reference for more info. + + +@section customizing Customizing Properties (without sub-classing) + +In this section are presented miscellaneous ways to have custom appearance +and behavior for your properties without all the necessary hassle +of sub-classing a property class etc. + +@subsection customimage Setting Value Image + +Every property can have a small value image placed in front of the +actual value text. Built-in example of this can be seen with +wxColourProperty and wxImageFileProperty, but for others it can +be set using wxPropertyGrid::SetPropertyImage method. + +@subsection customvalidator Setting Validator + +You can set wxValidator for a property using wxPropertyGrid::SetPropertyValidator. + +Validator will work just like in wxWidgets (ie. editorControl->SetValidator(validator) +is called). + +@subsection customeditor Setting Property's Editor Control(s) + +You can set editor control (or controls, in case of a control and button), +of any property using wxPropertyGrid::SetPropertyEditor. Editors are passed +using wxPG_EDITOR(EditorName) macro, and valid built-in EditorNames are +TextCtrl, Choice, ComboBox, CheckBox, TextCtrlAndButton, ChoiceAndButton, +SpinCtrl, and DatePickerCtrl. Two last mentioned ones require call to +static member function wxPropertyGrid::RegisterAdditionalEditors(). + +Following example changes wxColourProperty's editor from default Choice +to TextCtrlAndButton. wxColourProperty has its internal event handling set +up so that button click events of the button will be used to trigger +colour selection dialog. + +@code + + wxPGId colProp = pg->Append(wxColourProperty(wxT("Text Colour"))); + + pg->SetPropertyEditor(colProp,wxPG_EDITOR(TextCtrlAndButton)); + +@endcode + +Naturally, creating and setting custom editor classes is a possibility as +well. For more information, see wxPGEditor class reference. + +@subsection editorattrs Property Attributes Recognized by Editors + +<b>SpinCtrl</b> editor can make use of property's "Min", "Max", "Step" and "Wrap" attributes. + +@subsection multiplebuttons Adding Multiple Buttons Next to an Editor + +See wxPGMultiButton class reference. + +@subsection customeventhandling Handling Events Passed from Properties + +<b>wxEVT_COMMAND_BUTTON_CLICKED </b>(corresponds to event table macro EVT_BUTTON): +Occurs when editor button click is not handled by the property itself +(as is the case, for example, if you set property's editor to TextCtrlAndButton +from the original TextCtrl). + +@subsection attributes Property Attributes + +Miscellaneous values, often specific to a property type, can be set +using wxPropertyGrid::SetPropertyAttribute and wxPropertyGrid::SetPropertyAttributeAll +methods. + +Attribute names are strings and values wxVariant. Arbitrary names are allowed +inorder to store user values. Constant equivalents of all attribute string names are +provided. Some of them are defined as cached strings, so using constants can provide +for smaller binary size. + +For complete list of attributes, see @link attrids Property Attributes@endlink. + +@subsection boolcheckbox Setting wxBoolProperties to Use Check Box + +To have all wxBoolProperties to use CheckBox editor instead of Choice, use +following (call after bool properties have been added): + +@code + pg->SetPropertyAttributeAll(wxPG_BOOL_USE_CHECKBOX,true); +@endcode + + +@section usage2 Using wxPropertyGridManager + +wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid, +which can optionally have toolbar for mode and page selection, and a help text +box. + +wxPropertyGridManager inherits from wxPropertyGridInterface, and as such +it has most property manipulation functions. However, only some of them affect +properties on all pages (eg. GetPropertyByName() and ExpandAll()), while some +(eg. Append()) only apply to the currently selected page. + +To operate explicitly on properties on specific page, use wxPropertyGridManager::GetPage() +to obtain pointer to page's wxPropertyGridPage object. + +Visual methods, such as SetCellBackgroundColour and GetNextVisible are only +available in wxPropertyGrid. Use wxPropertyGridManager::GetGrid() to obtain +pointer to it. + +Iteration methods will not work in wxPropertyGridManager. Instead, you must acquire +the internal grid (GetGrid()) or wxPropertyGridPage object (GetPage()). + +wxPropertyGridManager constructor has exact same format as wxPropertyGrid +constructor, and basicly accepts same extra window style flags (albeit also +has some extra ones). + +Here's some example code for creating and populating a wxPropertyGridManager: + +@code + + wxPropertyGridManager* pgMan = new wxPropertyGridManager(this, PGID, + wxDefaultPosition, wxDefaultSize, + // These and other similar styles are automatically + // passed to the embedded wxPropertyGrid. + wxPG_BOLD_MODIFIED|wxPG_SPLITTER_AUTO_CENTER| + // Include toolbar. + wxPG_TOOLBAR | + // Include description box. + wxPG_DESCRIPTION | + // Include compactor. + wxPG_COMPACTOR | + // Plus defaults. + wxPGMAN_DEFAULT_STYLE + ); + + wxPropertyGridPage* page; + + // Adding a page sets target page to the one added, so + // we don't have to call SetTargetPage if we are filling + // it right after adding. + pgMan->AddPage(wxT("First Page")); + page = pgMan->GetLastPage(); + + page->Append( new wxPropertyCategory(wxT("Category A1")) ); + + page->Append( new wxIntProperty(wxT("Number"),wxPG_LABEL,1) ); + + page->Append( new wxColourProperty(wxT("Colour"),wxPG_LABEL,*wxWHITE) ); + + pgMan->AddPage(wxT("Second Page")); + page = pgMan->GetLastPage(); + + page->Append( wxT("Text"),wxPG_LABEL,wxT("(no text)") ); + + page->Append( new wxFontProperty(wxT("Font"),wxPG_LABEL) ); + +@endcode + +@subsection propgridpage wxPropertyGridPage + +wxPropertyGridPage is holder of properties for one page in manager. It is derived from +wxEvtHandler, so you can subclass it to process page-specific property grid events. Hand +over your page instance in wxPropertyGridManager::AddPage. + +Please note that the wxPropertyGridPage itself only sports subset of wxPropertyGrid API +(but unlike manager, this include item iteration). Naturally it inherits from +wxPropertyGridMethods and wxPropertyGridPageState. + + +@section subclassing Subclassing wxPropertyGrid and wxPropertyGridManager + +Few things to note: + +- Only a small percentage of member functions are virtual. If you need more, + just e-mail to wx-dev mailing list. + +- Data manipulation is done in wxPropertyGridPageState class. So, instead of + overriding wxPropertyGrid::Insert, you'll probably want to override wxPropertyGridPageState::DoInsert. + +- Override wxPropertyGrid::CreateState to instantiate your derivate wxPropertyGridPageState. + For wxPropertyGridManager, you'll need to subclass wxPropertyGridPage instead (since it + is derived from wxPropertyGridPageState), and hand over instances in wxPropertyGridManager::AddPage + calls. + +- You can use a derivate wxPropertyGrid with manager by overriding wxPropertyGridManager::CreatePropertyGrid + member function. + + +@section misc Miscellaneous Topics + +@subsection namescope Property Name Scope + +- All properties which parent is category or root have their names + globally accessible. + +- Sub-properties (i.e. private child properties which have parent that is not category or + root or non-aggregate property) can not be accessed globally by their name. Instead, use + "<property>.<subproperty>". + +@subsection boolproperty wxBoolProperty + + There are few points about wxBoolProperty that require futher discussion: + - wxBoolProperty can be shown as either normal combobox or as a checkbox. + Property attribute wxPG_BOOL_USE_CHECKBOX is used to change this. + For example, if you have a wxFlagsProperty, you can + set its all items to use check box using the following: + @code + pg->SetPropertyAttribute(wxT("MyFlagsProperty"),wxPG_BOOL_USE_CHECKBOX,true,wxPG_RECURSE); + @endcode + + - Default item names for wxBoolProperty are [wxT("False"),wxT("True")]. This can be + changed using wxPropertyGrid::SetBoolChoices(trueChoice,falseChoice). + +@subsection textctrlupdates Updates from wxTextCtrl Based Editor + + Changes from wxTextCtrl based property editors are committed (ie. +wxEVT_PG_CHANGED is sent etc.) *only* when (1) user presser enter, (2) +user moves to edit another property, or (3) when focus leaves +the grid. + + Because of this, you may find it useful, in some apps, to call +wxPropertyGrid::CommitChangesFromEditor() just before you need to do any +computations based on property grid values. Note that CommitChangesFromEditor() +will dispatch wxEVT_PG_CHANGED with ProcessEvent, so any of your event handlers +will be called immediately. + +@subsection splittercentering Centering the Splitter + + If you need to center the splitter, but only once when the program starts, +then do <b>not</b> use the wxPG_SPLITTER_AUTO_CENTER window style, but the +wxPropertyGrid::CenterSplitter() method. <b>However, be sure to call it after +the sizer setup and SetSize calls!</b> (ie. usually at the end of the +frame/dialog constructor) + +@subsection splittersetting Setting Splitter Position When Creating Property Grid + +Splitter position cannot exceed grid size, and therefore setting it during +form creation may fail as initial grid size is often smaller than desired +splitter position, especially when sizers are being used. + +@subsection colourproperty wxColourProperty and wxSystemColourProperty + +Through subclassing, these two property classes provide substantial customization +features. Subclass wxSystemColourProperty if you want to use wxColourPropertyValue +(which features colour type in addition to wxColour), and wxColourProperty if plain +wxColour is enough. + +Override wxSystemColourProperty::ColourToString() to redefine how colours are +printed as strings. + +Override wxSystemColourProperty::GetCustomColourIndex() to redefine location of +the item that triggers colour picker dialog (default is last). + +Override wxSystemColourProperty::GetColour() to determine which colour matches +which choice entry. + +@section proplist Property Class Descriptions + +See @ref pgproperty_properties + +*/ + diff --git a/docs/msw/install.txt b/docs/msw/install.txt index d5e295a6a3..77054b6db7 100644 --- a/docs/msw/install.txt +++ b/docs/msw/install.txt @@ -140,8 +140,8 @@ Using project files (VC++ 6 and later): If you want to build DLL configurations in wx.dsw project you unfortunately need to build them in the proper order (jpeg, png, tiff, zlib, regex, expat, - base, net, odbc, core, gl, html, media, qa, adv, dbgrid, xrc, aui, richtext) - manually because VC6 doesn't always respect the correct build order. + base, net, odbc, core, gl, html, media, qa, adv, dbgrid, xrc, aui, richtext, + propgrid) manually because VC6 doesn't always respect the correct build order. Alternatively, use the special wx_dll.dsw project which adds the dependencies to force the correct order (but, because of this, doesn't work diff --git a/include/wx/dlimpexp.h b/include/wx/dlimpexp.h index 8b88602f04..9c120f99b6 100644 --- a/include/wx/dlimpexp.h +++ b/include/wx/dlimpexp.h @@ -193,6 +193,14 @@ # define WXDLLIMPEXP_AUI #endif +#ifdef WXMAKINGDLL_PROPGRID +# define WXDLLIMPEXP_PROPGRID WXEXPORT +#elif defined(WXUSINGDLL) +# define WXDLLIMPEXP_PROPGRID WXIMPORT +#else /* not making nor using DLL */ +# define WXDLLIMPEXP_PROPGRID +#endif + #ifdef WXMAKINGDLL_RICHTEXT # define WXDLLIMPEXP_RICHTEXT WXEXPORT #elif defined(WXUSINGDLL) diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h index 41bddf1435..9fe1df35cd 100644 --- a/include/wx/motif/setup0.h +++ b/include/wx/motif/setup0.h @@ -577,9 +577,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -606,6 +607,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1174,7 +1182,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h index 2c78ac864c..90f4a097cd 100644 --- a/include/wx/msw/setup0.h +++ b/include/wx/msw/setup0.h @@ -577,9 +577,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -606,6 +607,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1174,7 +1182,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h index a5b561330f..f6457c1fab 100644 --- a/include/wx/msw/wince/setup.h +++ b/include/wx/msw/wince/setup.h @@ -577,9 +577,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -606,6 +607,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1174,7 +1182,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h index d9604eb552..95a7152fed 100644 --- a/include/wx/os2/setup0.h +++ b/include/wx/os2/setup0.h @@ -577,9 +577,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -606,6 +607,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1174,7 +1182,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/osx/setup0.h b/include/wx/osx/setup0.h index 6eef938057..7a0d0a5804 100644 --- a/include/wx/osx/setup0.h +++ b/include/wx/osx/setup0.h @@ -578,9 +578,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -607,6 +608,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -616,7 +624,7 @@ // Enable the new wxGraphicsPath and wxGraphicsContext classes for an advanced -// 2D drawing API. (Default on OSX, on other platforms still somewhat experimental) +// 2D drawing API. (Still somewhat experimental) // // Please note that on Windows you will need to link with gdiplus.lib (use // USE_GDIPLUS=1 for makefile builds) and distribute gdiplus.dll with your @@ -1175,7 +1183,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h index 0433d57944..d25999c067 100644 --- a/include/wx/palmos/setup0.h +++ b/include/wx/palmos/setup0.h @@ -577,9 +577,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -606,6 +607,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1174,7 +1182,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/include/wx/propgrid/advprops.h b/include/wx/propgrid/advprops.h new file mode 100644 index 0000000000..98c47c0193 --- /dev/null +++ b/include/wx/propgrid/advprops.h @@ -0,0 +1,510 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/advprops.h +// Purpose: wxPropertyGrid Advanced Properties (font, colour, etc.) +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_ADVPROPS_H_ +#define _WX_PROPGRID_ADVPROPS_H_ + +#include "wx/propgrid/props.h" + +// ----------------------------------------------------------------------- + + +// +// Additional Value Type Handlers +// +#ifndef SWIG +bool WXDLLIMPEXP_PROPGRID operator==(const wxFont&, const wxFont&); + +bool WXDLLIMPEXP_PROPGRID +operator==(const wxArrayInt& array1, const wxArrayInt& array2); +#endif + + +// +// Additional Property Editors +// +#if wxUSE_SPINBTN +WX_PG_DECLARE_EDITOR_WITH_DECL(SpinCtrl,WXDLLIMPEXP_PROPGRID) +#endif + +#if wxUSE_DATEPICKCTRL +WX_PG_DECLARE_EDITOR_WITH_DECL(DatePickerCtrl,WXDLLIMPEXP_PROPGRID) +#endif + +// ----------------------------------------------------------------------- + + +// Web colour is currently unsupported +#define wxPG_COLOUR_WEB_BASE 0x10000 +//#define wxPG_TO_WEB_COLOUR(A) ((wxUint32)(A+wxPG_COLOUR_WEB_BASE)) + + +#define wxPG_COLOUR_CUSTOM 0xFFFFFF +#define wxPG_COLOUR_UNSPECIFIED (wxPG_COLOUR_CUSTOM+1) + +/** @class wxColourPropertyValue + + Because text, background and other colours tend to differ between + platforms, wxSystemColourProperty must be able to select between system + colour and, when necessary, to pick a custom one. wxSystemColourProperty + value makes this possible. +*/ +class WXDLLIMPEXP_PROPGRID wxColourPropertyValue : public wxObject +{ +public: + /** An integer value relating to the colour, and which exact + meaning depends on the property with which it is used. + + For wxSystemColourProperty: + + Any of wxSYS_COLOUR_XXX, or any web-colour ( use wxPG_TO_WEB_COLOUR + macro - (currently unsupported) ), or wxPG_COLOUR_CUSTOM. + + For custom colour properties without values array specified: + + index or wxPG_COLOUR_CUSTOM + + For custom colour properties <b>with</b> values array specified: + + m_arrValues[index] or wxPG_COLOUR_CUSTOM + */ + wxUint32 m_type; + + /** Resulting colour. Should be correct regardless of type. */ + wxColour m_colour; + + wxColourPropertyValue() + { + m_type = 0; + } + + virtual ~wxColourPropertyValue() + { + } + + wxColourPropertyValue( const wxColourPropertyValue& v ) + { + m_type = v.m_type; + m_colour = v.m_colour; + } + + void Init( wxUint32 type, const wxColour& colour ) + { + m_type = type; + m_colour = colour; + } + + wxColourPropertyValue( const wxColour& colour ) + { + m_type = wxPG_COLOUR_CUSTOM; + m_colour = colour; + } + + wxColourPropertyValue( wxUint32 type ) + { + m_type = type; + } + + wxColourPropertyValue( wxUint32 type, const wxColour& colour ) + { + Init( type, colour ); + } + +#ifndef SWIG + void operator=(const wxColourPropertyValue& cpv) + { + Init( cpv.m_type, cpv.m_colour ); + } + +private: + DECLARE_DYNAMIC_CLASS(wxColourPropertyValue) +#endif +}; + + +#ifndef SWIG +bool WXDLLIMPEXP_PROPGRID +operator==(const wxColourPropertyValue&, const wxColourPropertyValue&); + +WX_PG_DECLARE_WXOBJECT_VARIANT_DATA(wxPGVariantDataColourPropertyValue, + wxColourPropertyValue, WXDLLIMPEXP_PROPGRID) +#endif + +#ifndef SWIG + #define wxPG_EMPTY_CPV (*((wxColourPropertyValue*)NULL)) + #define wxPG_NORMAL_FONT (*wxNORMAL_FONT) +#else + #define wxPG_EMPTY_CPV wxCPV_wxPG_EMPTY + #define wxPG_NORMAL_FONT wxFONT_wxPG_NORMAL_FONT +#endif + + +// ----------------------------------------------------------------------- +// Declare part of custom colour property macro pairs. + +#if wxUSE_IMAGE || defined(SWIG) + #include "wx/image.h" +#endif + +// ----------------------------------------------------------------------- + +// Exclude class from wxPython bindings +#ifndef SWIG + +/** @class wxFontProperty + @ingroup classes + Property representing wxFont. +*/ +class WXDLLIMPEXP_PROPGRID wxFontProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxFontProperty) +public: + + wxFontProperty(const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxFont& value = wxFont()); + virtual ~wxFontProperty(); + virtual void OnSetValue(); + virtual wxString GetValueAsString( int argFlags = 0 ) const; + + WX_PG_DECLARE_EVENT_METHODS() + WX_PG_DECLARE_PARENTAL_METHODS() + //WX_PG_DECLARE_CUSTOM_PAINT_METHODS() + +protected: +}; + +#endif // !SWIG + +// ----------------------------------------------------------------------- + + +/** If set, then match from list is searched for a custom colour. */ +#define wxPG_PROP_TRANSLATE_CUSTOM wxPG_PROP_CLASS_SPECIFIC_1 + + +/** @class wxSystemColourProperty + @ingroup classes + Has dropdown list of wxWidgets system colours. Value used is + of wxColourPropertyValue type. +*/ +class WXDLLIMPEXP_PROPGRID wxSystemColourProperty : public wxEnumProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxSystemColourProperty) +public: + + wxSystemColourProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxColourPropertyValue& + value = wxColourPropertyValue() ); + virtual ~wxSystemColourProperty(); + + virtual void OnSetValue(); + virtual bool IntToValue(wxVariant& variant, + int number, + int argFlags = 0) const; + + /** + Override in derived class to customize how colours are printed as + strings. + */ + virtual wxString ColourToString( const wxColour& col, int index ) const; + + /** Returns index of entry that triggers colour picker dialog + (default is last). + */ + virtual int GetCustomColourIndex() const; + + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_EVENT_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() + + WX_PG_DECLARE_CUSTOM_PAINT_METHODS() + //virtual wxSize GetImageSize( int item ) const; + //virtual wxPGCellRenderer* GetCellRenderer( int column ) const; + + // Helper function to show the colour dialog + bool QueryColourFromUser( wxVariant& variant ) const; + + /** Default is to use wxSystemSettings::GetColour(index). Override to use + custom colour tables etc. + */ + virtual wxColour GetColour( int index ) const; + + wxColourPropertyValue GetVal( const wxVariant* pVariant = NULL ) const; + +protected: + + // Special constructors to be used by derived classes. + wxSystemColourProperty( const wxString& label, const wxString& name, + const wxChar** labels, const long* values, wxPGChoices* choicesCache, + const wxColourPropertyValue& value ); + wxSystemColourProperty( const wxString& label, const wxString& name, + const wxChar** labels, const long* values, wxPGChoices* choicesCache, + const wxColour& value ); + + void Init( int type, const wxColour& colour ); + + // Utility functions for internal use + virtual wxVariant DoTranslateVal( wxColourPropertyValue& v ) const; + wxVariant TranslateVal( wxColourPropertyValue& v ) const + { + return DoTranslateVal( v ); + } + wxVariant TranslateVal( int type, const wxColour& colour ) const + { + wxColourPropertyValue v(type, colour); + return DoTranslateVal( v ); + } + + // Translates colour to a int value, return wxNOT_FOUND if no match. + int ColToInd( const wxColour& colour ) const; +}; + +// ----------------------------------------------------------------------- + +WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL( + wxColourProperty, class WXDLLIMPEXP_PROPGRID) + +// Exclude classes from wxPython bindings +#ifndef SWIG + +// ----------------------------------------------------------------------- + +/** @class wxCursorProperty + @ingroup classes + Property representing wxCursor. +*/ +class WXDLLIMPEXP_PROPGRID wxCursorProperty : public wxEnumProperty +{ + DECLARE_DYNAMIC_CLASS(wxCursorProperty) + + wxCursorProperty( const wxString& label= wxPG_LABEL, + const wxString& name= wxPG_LABEL, + int value = 0 ); + virtual ~wxCursorProperty(); + + WX_PG_DECLARE_CUSTOM_PAINT_METHODS() + //virtual wxSize GetImageSize( int item ) const; + //virtual wxPGCellRenderer* GetCellRenderer( int column ) const; +}; + +// ----------------------------------------------------------------------- + +#if wxUSE_IMAGE + +WXDLLIMPEXP_PROPGRID const wxString& wxPGGetDefaultImageWildcard(); + +/** @class wxImageFileProperty + @ingroup classes + Property representing image file(name). +*/ +class WXDLLIMPEXP_PROPGRID wxImageFileProperty : public wxFileProperty +{ + DECLARE_DYNAMIC_CLASS(wxImageFileProperty) +public: + + wxImageFileProperty( const wxString& label= wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString); + virtual ~wxImageFileProperty(); + + virtual void OnSetValue(); + + WX_PG_DECLARE_CUSTOM_PAINT_METHODS() + +protected: + wxBitmap* m_pBitmap; // final thumbnail area + wxImage* m_pImage; // intermediate thumbnail area +}; + +#endif + +#if wxUSE_CHOICEDLG || defined(SWIG) + +/** @class wxMultiChoiceProperty + @ingroup classes + Property that manages a value resulting from wxMultiChoiceDialog. Value is + array of strings. You can get value as array of choice values/indices by + calling wxMultiChoiceProperty::GetValueAsArrayInt(). + + <b>Supported special attributes:</b> + - "UserStringMode": If > 0, allow user to manually enter strings that are + not in the list of choices. If this value is 1, user strings are + preferably placed in front of valid choices. If value is 2, then those + strings will placed behind valid choices. +*/ +class WXDLLIMPEXP_PROPGRID wxMultiChoiceProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxMultiChoiceProperty) +public: + + wxMultiChoiceProperty( const wxString& label, + const wxString& name, + const wxArrayString& strings, + const wxArrayString& value ); +#ifndef SWIG + wxMultiChoiceProperty( const wxString& label, + const wxString& name, + const wxPGChoices& choices, + const wxArrayString& value = wxArrayString() ); + + wxMultiChoiceProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayString& value = wxArrayString() ); +#endif + virtual ~wxMultiChoiceProperty(); + + virtual void OnSetValue(); + virtual wxString GetValueAsString( int flags = 0 ) const; + virtual bool StringToValue(wxVariant& variant, + const wxString& text, + int argFlags = 0) const; + WX_PG_DECLARE_EVENT_METHODS() + + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + + wxArrayInt GetValueAsArrayInt() const + { + return m_choices.GetValuesForStrings(m_value.GetArrayString()); + } + +protected: + + void GenerateValueAsString(); + + // Returns translation of values into string indices. + wxArrayInt GetValueAsIndices() const; + + wxArrayString m_valueAsStrings; // Value as array of strings + + wxPGChoices m_choices; + + // Cache displayed text since generating it is relatively complicated. + wxString m_display; +}; + +#endif // wxUSE_CHOICEDLG + +// ----------------------------------------------------------------------- + +#if wxUSE_DATETIME + +/** @class wxDateProperty + @ingroup classes + Property representing wxDateTime. + + <b>Supported special attributes:</b> + - "DateFormat": Determines displayed date format. + - "PickerStyle": Determines window style used with wxDatePickerCtrl. + Default is wxDP_DEFAULT | wxDP_SHOWCENTURY. +*/ +class WXDLLIMPEXP_PROPGRID wxDateProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxDateProperty) +public: + + wxDateProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxDateTime& value = wxDateTime() ); + virtual ~wxDateProperty(); + + virtual wxString GetValueAsString( int flags = 0 ) const; + virtual bool StringToValue(wxVariant& variant, + const wxString& text, + int argFlags = 0) const; + + WX_PG_DECLARE_ATTRIBUTE_METHODS() + + void SetFormat( const wxString& format ) + { + m_format = format; + } + + const wxString& GetFormat() const + { + return m_format; + } + + void SetDateValue( const wxDateTime& dt ) + { + //m_valueDateTime = dt; + m_value = dt; + } + + wxDateTime GetDateValue() const + { + //return m_valueDateTime; + return m_value; + } + + long GetDatePickerStyle() const + { + return m_dpStyle; + } + +protected: + wxString m_format; + long m_dpStyle; // DatePicker style + + static wxString ms_defaultDateFormat; + static wxString DetermineDefaultDateFormat( bool showCentury ); +}; + +#endif // wxUSE_DATETIME + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +#if wxUSE_SPINBTN + +// +// Implement an editor control that allows using wxSpinCtrl (actually, a +// combination of wxTextCtrl and wxSpinButton) to edit value of wxIntProperty +// and wxFloatProperty (and similar). +// +// Note that new editor classes needs to be registered before use. This can be +// accomplished using wxPGRegisterEditorClass macro, which is used for SpinCtrl +// in wxPropertyGridInterface::RegisterAdditionalEditors (see below). +// Registration can also be performed in a constructor of a property that is +// likely to require the editor in question. +// + + +#include "wx/spinbutt.h" +#include "wx/propgrid/editors.h" + + +// NOTE: Regardless that this class inherits from a working editor, it has +// all necessary methods to work independently. wxTextCtrl stuff is only +// used for event handling here. +class WXDLLIMPEXP_PROPGRID wxPGSpinCtrlEditor : public wxPGTextCtrlEditor +{ + WX_PG_DECLARE_EDITOR_CLASS(wxPGSpinCtrlEditor) +public: + virtual ~wxPGSpinCtrlEditor(); + + // See below for short explanations of what these are suppposed to do. + wxPG_DECLARE_CREATECONTROLS + + virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* wnd, wxEvent& event ) const; + +private: + mutable wxString m_tempString; +}; + +#endif // wxUSE_SPINBTN + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_ADVPROPS_H_ diff --git a/include/wx/propgrid/editors.h b/include/wx/propgrid/editors.h new file mode 100644 index 0000000000..1fb6a096d7 --- /dev/null +++ b/include/wx/propgrid/editors.h @@ -0,0 +1,651 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/editors.h +// Purpose: wxPropertyGrid editors +// Author: Jaakko Salli +// Modified by: +// Created: 2007-04-14 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_EDITORS_H_ +#define _WX_PROPGRID_EDITORS_H_ + +// ----------------------------------------------------------------------- +// wxPGWindowList contains list of editor windows returned by CreateControls. + +class wxPGWindowList +{ +public: + wxPGWindowList() + { + m_primary = m_secondary = NULL; + } + + void SetSecondary( wxWindow* secondary ) { m_secondary = secondary; } + + wxWindow* m_primary; + wxWindow* m_secondary; + +#ifndef SWIG + wxPGWindowList( wxWindow* a ) + { + m_primary = a; + m_secondary = NULL; + }; + wxPGWindowList( wxWindow* a, wxWindow* b ) + { + m_primary = a; + m_secondary = b; + }; +#endif +}; + +// ----------------------------------------------------------------------- + +/** @class wxPGEditor + + Base class for custom wxPropertyGrid editors. + + @remarks + - Names of builtin property editors are: TextCtrl, Choice, + ComboBox, CheckBox, TextCtrlAndButton, and ChoiceAndButton. Additional + editors include SpinCtrl and DatePickerCtrl, but using them requires + calling wxPropertyGrid::RegisterAdditionalEditors() prior use. + + - Pointer to builtin editor is available as wxPGEditor_EditorName + (eg. wxPGEditor_TextCtrl). + + - To add new editor you need to register it first using static function + wxPropertyGrid::RegisterEditorClass(), with code like this: + @code + wxPGEditor *editorPointer = wxPropertyGrid::RegisterEditorClass( + new MyEditorClass(), "MyEditor"); + @endcode + After that, wxPropertyGrid will take ownership of the given object, but + you should still store editorPointer somewhere, so you can pass it to + wxPGProperty::SetEditor(), or return it from + wxPGEditor::DoGetEditorClass(). + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGEditor : public wxObject +{ +#ifndef SWIG + DECLARE_ABSTRACT_CLASS(wxPGEditor) +#endif +public: + + /** Constructor. */ + wxPGEditor() + : wxObject() + { + m_clientData = NULL; + } + + /** Destructor. */ + virtual ~wxPGEditor(); + + /** + Returns pointer to the name of the editor. For example, + wxPG_EDITOR(TextCtrl) has name "TextCtrl". This method is autogenerated + for custom editors. + */ + virtual wxString GetName() const = 0; + + /** + Instantiates editor controls. + + @param propgrid + wxPropertyGrid to which the property belongs (use as parent for + control). + @param property + Property for which this method is called. + @param pos + Position, inside wxPropertyGrid, to create control(s) to. + @param size + Initial size for control(s). + + @remarks + - Primary control shall use id wxPG_SUBID1, and secondary (button) + control shall use wxPG_SUBID2. + - Implementation shoud use connect all necessary events to the + wxPropertyGrid::OnCustomEditorEvent. For Example: + @code + // Relays wxEVT_COMMAND_TEXT_UPDATED events of primary editor + // control to the OnEvent. + // NOTE: This event in particular is actually automatically + // conveyed, but it is just used as an example. + propgrid->Connect(wxPG_SUBID1, wxEVT_COMMAND_TEXT_UPDATED, + wxCommandEventHandler( + wxPropertyGrid::OnCustomEditorEvent)); + @endcode + OnCustomEditorEvent will then forward events, first to + wxPGEditor::OnEvent and then to wxPGProperty::OnEvent. + + */ + virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& size) const = 0; + #define wxPG_DECLARE_CREATECONTROLS \ + virtual wxPGWindowList \ + CreateControls( wxPropertyGrid* propgrid, wxPGProperty* property, \ + const wxPoint& pos, const wxSize& sz ) const; + + /** Loads value from property to the control. */ + virtual void UpdateControl( wxPGProperty* property, + wxWindow* ctrl ) const = 0; + + /** + Used to get the renderer to draw the value with when the control is + hidden. + + Default implementation returns g_wxPGDefaultRenderer. + */ + //virtual wxPGCellRenderer* GetCellRenderer() const; + + /** Draws value for given property. + */ + virtual void DrawValue( wxDC& dc, + const wxRect& rect, + wxPGProperty* property, + const wxString& text ) const; + + /** Handles events. Returns true if value in control was modified + (see wxPGProperty::OnEvent for more information). + */ + virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* wnd_primary, wxEvent& event ) const = 0; + +#if !defined(SWIG) || defined(CREATE_VCW) + /** Returns value from control, via parameter 'variant'. + Usually ends up calling property's StringToValue or IntToValue. + Returns true if value was different. + */ + virtual bool GetValueFromControl( wxVariant& variant, + wxPGProperty* property, + wxWindow* ctrl ) const; +#endif + + /** Sets value in control to unspecified. */ + virtual void SetValueToUnspecified( wxPGProperty* property, + wxWindow* ctrl ) const = 0; + + /** Sets control's value specifically from string. */ + virtual void SetControlStringValue( wxPGProperty* property, + wxWindow* ctrl, + const wxString& txt ) const; + + /** Sets control's value specifically from int (applies to choice etc.). */ + virtual void SetControlIntValue( wxPGProperty* property, + wxWindow* ctrl, + int value ) const; + + /** Inserts item to existing control. Index -1 means appending. + Default implementation does nothing. Returns index of item added. + */ + virtual int InsertItem( wxWindow* ctrl, + const wxString& label, + int index ) const; + + /** Deletes item from existing control. + Default implementation does nothing. + */ + virtual void DeleteItem( wxWindow* ctrl, int index ) const; + + /** Extra processing when control gains focus. For example, wxTextCtrl + based controls should select all text. + */ + virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; + + /** Returns true if control itself can contain the custom image. Default is + to return false. + */ + virtual bool CanContainCustomImage() const; + + // + // This member is public so scripting language bindings + // wrapper code can access it freely. + void* m_clientData; +}; + + +// +// Note that we don't use this macro in this file because +// otherwise doxygen gets confused. +// +#define WX_PG_DECLARE_EDITOR_CLASS(CLASSNAME) \ + DECLARE_DYNAMIC_CLASS(CLASSNAME) \ +public: \ + virtual wxString GetName() const; \ +private: + + +#define WX_PG_IMPLEMENT_EDITOR_CLASS(EDITOR,CLASSNAME,BASECLASS) \ +IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, BASECLASS) \ +wxString CLASSNAME::GetName() const \ +{ \ + return wxS(#EDITOR); \ +} \ +wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL; \ +wxPGEditor* wxPGConstruct##EDITOR##EditorClass() \ +{ \ + wxASSERT( !wxPGEditor_##EDITOR ); \ + return new CLASSNAME(); \ +} + + +#define WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS() \ +wxPG_DECLARE_CREATECONTROLS \ +virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const; \ +virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, \ + wxWindow* primary, wxEvent& event ) const; \ +virtual bool GetValueFromControl( wxVariant& variant, \ + wxPGProperty* property, \ + wxWindow* ctrl ) const; \ +virtual void SetValueToUnspecified( wxPGProperty* property, \ + wxWindow* ctrl ) const; + + +// +// Following are the built-in editor classes. +// + +class WXDLLIMPEXP_PROPGRID wxPGTextCtrlEditor : public wxPGEditor +{ +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxPGTextCtrlEditor) +#endif +public: + wxPGTextCtrlEditor() {} + virtual ~wxPGTextCtrlEditor(); + + WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS() + virtual wxString GetName() const; + + //virtual wxPGCellRenderer* GetCellRenderer() const; + virtual void SetControlStringValue( wxPGProperty* property, + wxWindow* ctrl, + const wxString& txt ) const; + virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; + + // Provided so that, for example, ComboBox editor can use the same code + // (multiple inheritance would get way too messy). + static bool OnTextCtrlEvent( wxPropertyGrid* propgrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ); + + static bool GetTextCtrlValueFromControl( wxVariant& variant, + wxPGProperty* property, + wxWindow* ctrl ); + +}; + + +class WXDLLIMPEXP_PROPGRID wxPGChoiceEditor : public wxPGEditor +{ +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxPGChoiceEditor) +#endif +public: + wxPGChoiceEditor() {} + virtual ~wxPGChoiceEditor(); + + WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS() + virtual wxString GetName() const; + + virtual void SetControlIntValue( wxPGProperty* property, + wxWindow* ctrl, + int value ) const; + virtual void SetControlStringValue( wxPGProperty* property, + wxWindow* ctrl, + const wxString& txt ) const; + + virtual int InsertItem( wxWindow* ctrl, + const wxString& label, + int index ) const; + virtual void DeleteItem( wxWindow* ctrl, int index ) const; + virtual bool CanContainCustomImage() const; + + // CreateControls calls this with CB_READONLY in extraStyle + wxWindow* CreateControlsBase( wxPropertyGrid* propgrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz, + long extraStyle ) const; + +}; + + +class WXDLLIMPEXP_PROPGRID wxPGComboBoxEditor : public wxPGChoiceEditor +{ +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxPGComboBoxEditor) +#endif +public: + wxPGComboBoxEditor() {} + virtual ~wxPGComboBoxEditor(); + + // Macro is used for convenience due to different signature with wxPython + wxPG_DECLARE_CREATECONTROLS + + virtual wxString GetName() const; + + virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const; + + virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* ctrl, wxEvent& event ) const; + + virtual bool GetValueFromControl( wxVariant& variant, + wxPGProperty* property, + wxWindow* ctrl ) const; + + virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; + +}; + + +// Exclude classes from being able to be derived from in wxPython bindings +#ifndef SWIG + +class WXDLLIMPEXP_PROPGRID wxPGChoiceAndButtonEditor : public wxPGChoiceEditor +{ +public: + wxPGChoiceAndButtonEditor() {} + virtual ~wxPGChoiceAndButtonEditor(); + virtual wxString GetName() const; + + // Macro is used for convenience due to different signature with wxPython + wxPG_DECLARE_CREATECONTROLS + + DECLARE_DYNAMIC_CLASS(wxPGChoiceAndButtonEditor) +}; + +class WXDLLIMPEXP_PROPGRID +wxPGTextCtrlAndButtonEditor : public wxPGTextCtrlEditor +{ +public: + wxPGTextCtrlAndButtonEditor() {} + virtual ~wxPGTextCtrlAndButtonEditor(); + virtual wxString GetName() const; + wxPG_DECLARE_CREATECONTROLS + + DECLARE_DYNAMIC_CLASS(wxPGTextCtrlAndButtonEditor) +}; + +#endif // !SWIG + + +#if wxPG_INCLUDE_CHECKBOX || defined(DOXYGEN) + +// +// Use custom check box code instead of native control +// for cleaner (ie. more integrated) look. +// +class WXDLLIMPEXP_PROPGRID wxPGCheckBoxEditor : public wxPGEditor +{ +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxPGCheckBoxEditor) +#endif +public: + wxPGCheckBoxEditor() {} + virtual ~wxPGCheckBoxEditor(); + + virtual wxString GetName() const; + WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS() + + virtual void DrawValue( wxDC& dc, + const wxRect& rect, + wxPGProperty* property, + const wxString& text ) const; + //virtual wxPGCellRenderer* GetCellRenderer() const; + + virtual void SetControlIntValue( wxPGProperty* property, + wxWindow* ctrl, + int value ) const; +}; + +#endif + + +// ----------------------------------------------------------------------- +// Editor class registeration macros + +#define wxPGRegisterEditorClass(EDITOR) \ + if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \ + { \ + wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \ + wxPGConstruct##EDITOR##EditorClass(), wxS(#EDITOR) ); \ + } + +// Use this in RegisterDefaultEditors. +#define wxPGRegisterDefaultEditorClass(EDITOR) \ +if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \ + { \ + wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \ + wxPGConstruct##EDITOR##EditorClass(), wxS(#EDITOR), true ); \ + } + +#define wxPG_INIT_REQUIRED_EDITOR(T) \ + wxPGRegisterEditorClass(T) + + +// ----------------------------------------------------------------------- + +/** @class wxPGEditorDialogAdapter + + Derive a class from this to adapt an existing editor dialog or function to + be used when editor button of a property is pushed. + + You only need to derive class and implement DoShowDialog() to create and + show the dialog, and finally submit the value returned by the dialog + via SetValue(). + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGEditorDialogAdapter : public wxObject +{ +#ifndef SWIG + DECLARE_ABSTRACT_CLASS(wxPGEditorDialogAdapter) +#endif +public: + wxPGEditorDialogAdapter() + : wxObject() + { + m_clientData = NULL; + } + + virtual ~wxPGEditorDialogAdapter() { } + + bool ShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property ); + + virtual bool DoShowDialog( wxPropertyGrid* propGrid, + wxPGProperty* property ) = 0; + + void SetValue( wxVariant value ) + { + m_value = value; + } + + /** + This method is typically only used if deriving class from existing + adapter with value conversion purposes. + */ + wxVariant& GetValue() { return m_value; } + + // + // This member is public so scripting language bindings + // wrapper code can access it freely. + void* m_clientData; + +private: + wxVariant m_value; +}; + +// ----------------------------------------------------------------------- + + +/** @class wxPGMultiButton + + This class can be used to have multiple buttons in a property editor. + You will need to create a new property editor class, override + CreateControls, and have it return wxPGMultiButton instance in + wxPGWindowList::SetSecondary(). For instance, here we add three buttons to + a textctrl editor: + + @code + + #include <wx/propgrid/editors.h> + + class wxMultiButtonTextCtrlEditor : public wxPGTextCtrlEditor + { + WX_PG_DECLARE_EDITOR_CLASS(wxMultiButtonTextCtrlEditor) + public: + wxMultiButtonTextCtrlEditor() {} + virtual ~wxMultiButtonTextCtrlEditor() {} + + wxPG_DECLARE_CREATECONTROLS + virtual bool OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const; + + }; + + WX_PG_IMPLEMENT_EDITOR_CLASS(MultiButtonTextCtrlEditor, + wxMultiButtonTextCtrlEditor, + wxPGTextCtrlEditor) + + wxPGWindowList + wxMultiButtonTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const + { + // Create and populate buttons-subwindow + wxPGMultiButton* buttons = new wxPGMultiButton( propGrid, sz ); + + // Add two regular buttons + buttons->Add( "..." ); + buttons->Add( "A" ); + // Add a bitmap button + buttons->Add( wxArtProvider::GetBitmap(wxART_FOLDER) ); + + // Create the 'primary' editor control (textctrl in this case) + wxPGWindowList wndList = wxPGTextCtrlEditor::CreateControls( + propGrid, + property, + pos, + buttons->GetPrimarySize() + ); + + // Finally, move buttons-subwindow to correct position and make sure + // returned wxPGWindowList contains our custom button list. + buttons->FinalizePosition(pos); + + wndList.SetSecondary( buttons ); + return wndList; + } + + bool wxMultiButtonTextCtrlEditor::OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const + { + if ( event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) + { + wxPGMultiButton* buttons = (wxPGMultiButton*) + propGrid->GetEditorControlSecondary(); + + if ( event.GetId() == buttons->GetButtonId(0) ) + { + // Do something when first button is pressed + return true; + } + if ( event.GetId() == buttons->GetButtonId(1) ) + { + // Do something when first button is pressed + return true; + } + if ( event.GetId() == buttons->GetButtonId(2) ) + { + // Do something when second button is pressed + return true; + } + } + return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event); + } + + @endcode + + Further to use this editor, code like this can be used: + + @code + + // Register editor class - needs only to be called once + wxPGRegisterEditorClass( MultiButtonTextCtrlEditor ); + + // Insert the property that will have multiple buttons + propGrid->Append( new wxLongStringProperty("MultipleButtons", + wxPG_LABEL) ); + + // Change property to use editor created in the previous code segment + propGrid->SetPropertyEditor( "MultipleButtons", + wxPG_EDITOR(MultiButtonTextCtrlEditor) ); + + @endcode + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGMultiButton : public wxWindow +{ +public: + wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz ); + + wxWindow* GetButton( unsigned int i ) { return (wxWindow*) m_buttons[i]; } + const wxWindow* GetButton( unsigned int i ) const + { return (const wxWindow*) m_buttons[i]; } + + /** Utility function to be used in event handlers. + */ + int GetButtonId( unsigned int i ) const { return GetButton(i)->GetId(); } + + /** Returns number of buttons. + */ + int GetCount() const { return m_buttons.Count(); } + + void Add( const wxString& label, int id = -2 ); +#if wxUSE_BMPBUTTON + void Add( const wxBitmap& bitmap, int id = -2 ); +#endif + + wxSize GetPrimarySize() const + { + return wxSize(m_fullEditorSize.x - m_buttonsWidth, m_fullEditorSize.y); + } + + void FinalizePosition( const wxPoint& pos ) + { + Move( pos.x + m_fullEditorSize.x - m_buttonsWidth, pos.y ); + } + +#ifndef DOXYGEN +protected: + + int GenId( int id ) const; + + wxArrayPtrVoid m_buttons; + wxSize m_fullEditorSize; + int m_buttonsWidth; +#endif // !DOXYGEN +}; + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_EDITORS_H_ diff --git a/include/wx/propgrid/manager.h b/include/wx/propgrid/manager.h new file mode 100644 index 0000000000..42c44b81f4 --- /dev/null +++ b/include/wx/propgrid/manager.h @@ -0,0 +1,792 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/manager.h +// Purpose: wxPropertyGridManager +// Author: Jaakko Salli +// Modified by: +// Created: 2005-01-14 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_MANAGER_H_ +#define _WX_PROPGRID_MANAGER_H_ + +#include "wx/propgrid/propgrid.h" + +#include "wx/dcclient.h" +#include "wx/scrolwin.h" +#include "wx/toolbar.h" +#include "wx/stattext.h" +#include "wx/button.h" +#include "wx/textctrl.h" +#include "wx/dialog.h" + +// ----------------------------------------------------------------------- + +#ifndef SWIG +extern WXDLLIMPEXP_PROPGRID const wxChar *wxPropertyGridManagerNameStr; +#endif + +/** @class wxPropertyGridPage + + Holder of property grid page information. You can subclass this and + give instance in wxPropertyGridManager::AddPage. It inherits from + wxEvtHandler and can be used to process events specific to this + page (id of events will still be same as manager's). If you don't + want to use it to process all events of the page, you need to + return false in the derived wxPropertyGridPage::IsHandlingAllEvents. + + Please note that wxPropertyGridPage lacks many non-const property + manipulation functions found in wxPropertyGridManager. Please use + parent manager (m_manager member variable) when needed. + + Please note that most member functions are inherited and as such not + documented on this page. This means you will probably also want to read + wxPropertyGridInterface class reference. + + @section propgridpage_event_handling Event Handling + + wxPropertyGridPage receives events emitted by its wxPropertyGridManager, but + only those events that are specific to that page. If + wxPropertyGridPage::IsHandlingAllEvents returns false, then unhandled + events are sent to the manager's parent, as usual. + + See @ref propgrid_event_handling "wxPropertyGrid Event Handling" + for more information. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridPage : public wxEvtHandler, + public wxPropertyGridInterface, + public wxPropertyGridPageState +{ + friend class wxPropertyGridManager; +#ifndef SWIG + DECLARE_CLASS(wxPropertyGridPage) +#endif +public: + + wxPropertyGridPage(); + virtual ~wxPropertyGridPage(); + + /** Deletes all properties on page. + */ + virtual void Clear(); + + /** + Reduces column sizes to minimum possible that contents are still + visibly (naturally some margin space will be applied as well). + + @return + Minimum size for the page to still display everything. + + @remarks + This function only works properly if size of containing grid was + already fairly large. + + Note that you can also get calculated column widths by calling + GetColumnWidth() immediately after this function returns. + */ + wxSize FitColumns(); + + /** Returns page index in manager; + */ + inline int GetIndex() const; + + /** Returns x-coordinate position of splitter on a page. + */ + int GetSplitterPosition( int col = 0 ) const + { return GetStatePtr()->DoGetSplitterPosition(col); } + + /** Returns "root property". It does not have name, etc. and it is not + visible. It is only useful for accessing its children. + */ + wxPGProperty* GetRoot() const { return GetStatePtr()->DoGetRoot(); } + + /** Return pointer to contained property grid state. + */ + wxPropertyGridPageState* GetStatePtr() + { + return this; + } + + /** Return pointer to contained property grid state. + */ + const wxPropertyGridPageState* GetStatePtr() const + { + return this; + } + + /** + Returns id of the tool bar item that represents this page on + wxPropertyGridManager's wxToolBar. + */ + int GetToolId() const + { + return m_id; + } + + /** Do any member initialization in this method. + @remarks + - Called every time the page is added into a manager. + - You can add properties to the page here. + */ + virtual void Init() {} + + /** Return false here to indicate unhandled events should be + propagated to manager's parent, as normal. + */ + virtual bool IsHandlingAllEvents() const { return true; } + + /** Called every time page is about to be shown. + Useful, for instance, creating properties just-in-time. + */ + virtual void OnShow(); + + virtual void RefreshProperty( wxPGProperty* p ); + + /** Sets splitter position on page. + @remarks + Splitter position cannot exceed grid size, and therefore setting it + during form creation may fail as initial grid size is often smaller + than desired splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int splitterPos, int col = 0 ); + +protected: + + /** Propagate to other pages. + */ + virtual void DoSetSplitterPosition( int pos, + int splitterColumn = 0, + bool allPages = false ); + + /** Propagate to other pages. + */ + void DoSetSplitterPositionThisPage( int pos, int splitterColumn = 0 ) + { + wxPropertyGridPageState::DoSetSplitterPosition( pos, splitterColumn ); + } + + /** Page label (may be referred as name in some parts of documentation). + Can be set in constructor, or passed in + wxPropertyGridManager::AddPage(), but *not* in both. + */ + wxString m_label; + +#ifndef SWIG + + //virtual bool ProcessEvent( wxEvent& event ); + + wxPropertyGridManager* m_manager; + + int m_id; // toolbar index + +private: + bool m_isDefault; // is this base page object? + +private: + DECLARE_EVENT_TABLE() +#endif +}; + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGridManager + + wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid, + which can optionally have toolbar for mode and page selection, and help + text box. + Use window flags to select components to include. + + @section propgridmanager_window_styles_ Window Styles + + See @ref propgrid_window_styles. + + @section propgridmanager_event_handling Event Handling + + See @ref propgrid_event_handling "wxPropertyGrid Event Handling" + for more information. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID + wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface +{ +#ifndef SWIG + DECLARE_CLASS(wxPropertyGridManager) +#endif + friend class wxPropertyGridPage; +public: + +#ifdef SWIG + %pythonAppend wxPropertyGridManager { + self._setOORInfo(self) + self.DoDefaultTypeMappings() + self.edited_objects = {} + self.DoDefaultValueTypeMappings() + if not hasattr(self.__class__,'_vt2setter'): + self.__class__._vt2setter = {} + } + %pythonAppend wxPropertyGridManager() "" + + wxPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPGMAN_DEFAULT_STYLE, + const wxChar* name = + wxPyPropertyGridManagerNameStr ); + %RenameCtor(PrePropertyGridManager, wxPropertyGridManager()); + +#else + + /** + Two step constructor. + Call Create when this constructor is called to build up the + wxPropertyGridManager. + */ + wxPropertyGridManager(); + + /** The default constructor. The styles to be used are styles valid for + the wxWindow. + @see @link wndflags Additional Window Styles@endlink + */ + wxPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPGMAN_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridManagerNameStr ); + + /** Destructor */ + virtual ~wxPropertyGridManager(); + +#endif + + /** Creates new property page. Note that the first page is not created + automatically. + @param label + A label for the page. This may be shown as a toolbar tooltip etc. + @param bmp + Bitmap image for toolbar. If wxNullBitmap is used, then a built-in + default image is used. + @param pageObj + wxPropertyGridPage instance. Manager will take ownership of this object. + NULL indicates that a default page instance should be created. + @return + Returns index to the page created. + @remarks + If toolbar is used, it is highly recommended that the pages are + added when the toolbar is not turned off using window style flag + switching. + */ + int AddPage( const wxString& label = wxEmptyString, + const wxBitmap& bmp = wxPG_NULL_BITMAP, + wxPropertyGridPage* pageObj = (wxPropertyGridPage*) NULL ) + { + return InsertPage(-1,label,bmp,pageObj); + } + + void ClearModifiedStatus ( wxPGPropArg id ); + + void ClearModifiedStatus () + { + m_pPropGrid->ClearModifiedStatus(); + } + + /** Deletes all all properties and all pages. + */ + virtual void Clear(); + + /** Deletes all properties on given page. + */ + void ClearPage( int page ); + + /** Forces updating the value of property from the editor control. + Returns true if DoPropertyChanged was actually called. + */ + bool CommitChangesFromEditor( wxUint32 flags = 0 ) + { + return m_pPropGrid->CommitChangesFromEditor(flags); + } + + /** + Two step creation. + Whenever the control is created without any parameters, use Create to + actually create it. Don't access the control's public methods before + this is called. + @see @link wndflags Additional Window Styles@endlink + */ + bool Create( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPGMAN_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridManagerNameStr ); + + /** + Enables or disables (shows/hides) categories according to parameter + enable. + + WARNING: Not tested properly, use at your own risk. + */ + bool EnableCategories( bool enable ) + { + long fl = m_windowStyle | wxPG_HIDE_CATEGORIES; + if ( enable ) fl = m_windowStyle & ~(wxPG_HIDE_CATEGORIES); + SetWindowStyleFlag(fl); + return true; + } + + /** Selects page, scrolls and/or expands items to ensure that the + given item is visible. Returns true if something was actually done. + */ + bool EnsureVisible( wxPGPropArg id ); + + /** Returns number of children of the root property of the selected page. */ + size_t GetChildrenCount() + { + return GetChildrenCount( m_pPropGrid->m_pState->m_properties ); + } + + /** Returns number of children of the root property of given page. */ + size_t GetChildrenCount( int pageIndex ); + + /** Returns number of children for the property. + + NB: Cannot be in container methods class due to name hiding. + */ + size_t GetChildrenCount( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(0) + return p->GetChildCount(); + } + + /** Returns number of columns on given page. By the default, + returns number of columns on current page. */ + int GetColumnCount( int page = -1 ) const; + + /** Returns height of the description text box. */ + int GetDescBoxHeight() const; + + /** Returns pointer to the contained wxPropertyGrid. This does not change + after wxPropertyGridManager has been created, so you can safely obtain + pointer once and use it for the entire lifetime of the instance. + */ + wxPropertyGrid* GetGrid() + { + wxASSERT(m_pPropGrid); + return m_pPropGrid; + }; + + const wxPropertyGrid* GetGrid() const + { + wxASSERT(m_pPropGrid); + return (const wxPropertyGrid*)m_pPropGrid; + }; + + /** Returns iterator class instance. + @remarks + Calling this method in wxPropertyGridManager causes run-time assertion + failure. Please only iterate through individual pages or use + CreateVIterator(). + */ + wxPropertyGridIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, + wxPGProperty* firstProp = NULL ) + { + wxFAIL_MSG( "Please only iterate through individual pages " + "or use CreateVIterator()" ); + return wxPropertyGridInterface::GetIterator( flags, firstProp ); + } + + wxPropertyGridConstIterator + GetIterator(int flags = wxPG_ITERATE_DEFAULT, + wxPGProperty* firstProp = NULL) const + { + wxFAIL_MSG( "Please only iterate through individual pages " + " or use CreateVIterator()" ); + return wxPropertyGridInterface::GetIterator( flags, firstProp ); + } + + /** Returns iterator class instance. + @remarks + Calling this method in wxPropertyGridManager causes run-time assertion + failure. Please only iterate through individual pages or use + CreateVIterator(). + */ + wxPropertyGridIterator GetIterator( int flags, int startPos ) + { + wxFAIL_MSG( "Please only iterate through individual pages " + "or use CreateVIterator()" ); + + return wxPropertyGridInterface::GetIterator( flags, startPos ); + } + + wxPropertyGridConstIterator GetIterator( int flags, int startPos ) const + { + wxFAIL_MSG( "Please only iterate through individual pages " + "or use CreateVIterator()" ); + return wxPropertyGridInterface::GetIterator( flags, startPos ); + } + + /** Similar to GetIterator, but instead returns wxPGVIterator instance, + which can be useful for forward-iterating through arbitrary property + containers. + */ + virtual wxPGVIterator GetVIterator( int flags ) const; + + /** Returns currently selected page. + */ + wxPropertyGridPage* GetCurrentPage() const + { + return GetPage(m_selPage); + } + + /** Returns last page. + */ + wxPropertyGridPage* GetLastPage() const + { + return GetPage(m_arrPages.size()-1); + } + + /** Returns page object for given page index. + */ + wxPropertyGridPage* GetPage( unsigned int ind ) const + { + return (wxPropertyGridPage*)m_arrPages.Item(ind); + } + + /** Returns page object for given page name. + */ + wxPropertyGridPage* GetPage( const wxString& name ) const + { + return GetPage(GetPageByName(name)); + } + + /** + Returns index for a page name. + + If no match is found, wxNOT_FOUND is returned. + */ + int GetPageByName( const wxString& name ) const; + + /** Returns index for a relevant propertygrid state. + + If no match is found, wxNOT_FOUND is returned. + */ + int GetPageByState( const wxPropertyGridPageState* pstate ) const; + + /** Returns wxPropertyGridPageState of given page, current page's for -1. + */ + virtual wxPropertyGridPageState* GetPageState( int page ) const; + + /** Returns number of managed pages. */ + size_t GetPageCount() const; + + /** Returns name of given page. */ + const wxString& GetPageName( int index ) const; + + /** Returns "root property" of the given page. It does not have name, etc. + and it is not visible. It is only useful for accessing its children. + */ + wxPGProperty* GetPageRoot( int index ) const; + + /** Returns index to currently selected page. */ + int GetSelectedPage() const { return m_selPage; } + + /** Shortcut for GetGrid()->GetSelection(). */ + wxPGProperty* GetSelectedProperty() const + { + return m_pPropGrid->GetSelection(); + } + + /** Synonyme for GetSelectedPage. */ + int GetSelection() const { return m_selPage; } + + /** Returns a pointer to the toolbar currently associated with the + wxPropertyGridManager (if any). */ + wxToolBar* GetToolBar() const { return m_pToolbar; } + + /** Creates new property page. Note that the first page is not created + automatically. + @param index + Add to this position. -1 will add as the last item. + @param label + A label for the page. This may be shown as a toolbar tooltip etc. + @param bmp + Bitmap image for toolbar. If wxNullBitmap is used, then a built-in + default image is used. + @param pageObj + wxPropertyGridPage instance. Manager will take ownership of this object. + If NULL, default page object is constructed. + @return + Returns index to the page created. + */ + virtual int InsertPage( int index, + const wxString& label, + const wxBitmap& bmp = wxNullBitmap, + wxPropertyGridPage* pageObj = NULL ); + + /** + Returns true if any property on any page has been modified by the user. + */ + bool IsAnyModified() const; + + /** + Returns true if updating is frozen (ie Freeze() called but not yet + Thaw() ). + */ + bool IsFrozen() const { return m_pPropGrid->m_frozen > 0; } + + /** + Returns true if any property on given page has been modified by the + user. + */ + bool IsPageModified( size_t index ) const; + + virtual void Refresh( bool eraseBackground = true, + const wxRect* rect = (const wxRect*) NULL ); + + /** Removes a page. + @return + Returns false if it was not possible to remove page in question. + */ + virtual bool RemovePage( int page ); + + /** Select and displays a given page. Also makes it target page for + insert operations etc. + @param index + Index of page being seleced. Can be -1 to select nothing. + */ + void SelectPage( int index ); + + /** Select and displays a given page (by label). */ + void SelectPage( const wxString& label ) + { + int index = GetPageByName(label); + wxCHECK_RET( index >= 0, wxT("No page with such name") ); + SelectPage( index ); + } + + /** Select and displays a given page. */ + void SelectPage( wxPropertyGridPage* ptr ) + { + SelectPage( GetPageByState(ptr) ); + } + + /** Select a property. */ + bool SelectProperty( wxPGPropArg id, bool focus = false ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->GetParentState()->DoSelectProperty(p, focus); + } + + /** Sets number of columns on given page (default is current page). + */ + void SetColumnCount( int colCount, int page = -1 ); + + /** Sets label and text in description box. + */ + void SetDescription( const wxString& label, const wxString& content ); + + /** Sets y coordinate of the description box splitter. */ + void SetDescBoxHeight( int ht, bool refresh = true ); + + /** Sets property attribute for all applicapple properties. + Be sure to use this method after all properties have been + added to the grid. + */ + void SetPropertyAttributeAll( const wxString& name, wxVariant value ); + + /** Moves splitter as left as possible, while still allowing all + labels to be shown in full. + @param subProps + If false, will still allow sub-properties (ie. properties which + parent is not root or category) to be cropped. + @param allPages + If true, takes labels on all pages into account. + */ + void SetSplitterLeft( bool subProps = false, bool allPages = true ); + + /** Sets splitter position on individual page. */ + void SetPageSplitterPosition( int page, int pos, int column = 0 ) + { + GetPage(page)->DoSetSplitterPosition( pos, column ); + } + + /** Sets splitter position for all pages. + @remarks + Splitter position cannot exceed grid size, and therefore setting it + during form creation may fail as initial grid size is often smaller + than desired splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int pos, int column = 0 ); + + /** Synonyme for SelectPage(name). */ + void SetStringSelection( const wxChar* name ) + { + SelectPage( GetPageByName(name) ); + } + +#ifdef SWIG + %pythoncode { + def GetValuesFromPage(self, + page, + dict_=None, + as_strings=False, + inc_attributes=False): + """ + Same as GetValues, but returns values from specific page only. + For argument descriptions, see GetValues. + """ + return page.GetPropertyValues(dict_, as_strings, inc_attributes) + } +#endif + +protected: + + // + // Subclassing helpers + // + + /** Creates property grid for the manager. Override to use subclassed + wxPropertyGrid. + */ + virtual wxPropertyGrid* CreatePropertyGrid() const; + + virtual void RefreshProperty( wxPGProperty* p ); + +public: + +#ifndef DOXYGEN + + // + // Overridden functions - no documentation required. + // + + virtual wxSize DoGetBestSize() const; + void SetId( wxWindowID winid ); + + virtual void Freeze(); + virtual void Thaw(); + virtual void SetExtraStyle ( long exStyle ); + virtual bool SetFont ( const wxFont& font ); + virtual void SetWindowStyleFlag ( long style ); + +protected: + +public: + +#ifndef SWIG + + // + // Event handlers + // + void OnMouseMove( wxMouseEvent &event ); + void OnMouseClick( wxMouseEvent &event ); + void OnMouseUp( wxMouseEvent &event ); + void OnMouseEntry( wxMouseEvent &event ); + + void OnPaint( wxPaintEvent &event ); + + void OnToolbarClick( wxCommandEvent &event ); + void OnResize( wxSizeEvent& event ); + void OnPropertyGridSelect( wxPropertyGridEvent& event ); + +protected: + + wxPropertyGrid* m_pPropGrid; + + wxArrayPtrVoid m_arrPages; + +#if wxUSE_TOOLBAR + wxToolBar* m_pToolbar; +#endif + wxStaticText* m_pTxtHelpCaption; + wxStaticText* m_pTxtHelpContent; + + wxPropertyGridPage* m_emptyPage; + + long m_iFlags; + + // Selected page index. + int m_selPage; + + int m_width; + + int m_height; + + int m_extraHeight; + + int m_splitterY; + + int m_splitterHeight; + + int m_nextTbInd; + + int m_dragOffset; + + wxCursor m_cursorSizeNS; + + int m_nextDescBoxSize; + + wxWindowID m_baseId; + + unsigned char m_dragStatus; + + unsigned char m_onSplitter; + + virtual wxPGProperty* DoGetPropertyByName( const wxString& name ) const; + + /** Select and displays a given page. */ + virtual bool DoSelectPage( int index ); + + // Sets some members to defaults. + void Init1(); + + // Initializes some members. + void Init2( int style ); + +/*#ifdef __WXMSW__ + virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const; +#endif*/ + + /** Recalculates new positions for components, according to the + given size. + */ + void RecalculatePositions( int width, int height ); + + /** (Re)creates/destroys controls, according to the window style bits. */ + void RecreateControls(); + + void RefreshHelpBox( int new_splittery, int new_width, int new_height ); + + void RepaintSplitter( wxDC& dc, + int new_splittery, + int new_width, + int new_height, + bool desc_too ); + + void SetDescribedProperty( wxPGProperty* p ); + + virtual bool ProcessEvent( wxEvent& event ); + +private: + DECLARE_EVENT_TABLE() +#endif // #ifndef SWIG +#endif // #ifndef DOXYGEN +}; + +// ----------------------------------------------------------------------- + +inline int wxPropertyGridPage::GetIndex() const +{ + if ( !m_manager ) + return wxNOT_FOUND; + return m_manager->GetPageByState(this); +} + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_MANAGER_H_ diff --git a/include/wx/propgrid/property.h b/include/wx/propgrid/property.h new file mode 100644 index 0000000000..4fa1488b0e --- /dev/null +++ b/include/wx/propgrid/property.h @@ -0,0 +1,2455 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/property.h +// Purpose: wxPGProperty and related support classes +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-23 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_PROPERTY_H_ +#define _WX_PROPGRID_PROPERTY_H_ + +#include "wx/propgrid/propgriddefs.h" + +// ----------------------------------------------------------------------- + +#define wxNullProperty ((wxPGProperty*)NULL) + + +/** @class wxPGPaintData + + Contains information relayed to property's OnCustomPaint. +*/ +struct wxPGPaintData +{ + /** wxPropertyGrid. */ + const wxPropertyGrid* m_parent; + + /** + Normally -1, otherwise index to drop-down list item that has to be + drawn. + */ + int m_choiceItem; + + /** Set to drawn width in OnCustomPaint (optional). */ + int m_drawnWidth; + + /** + In a measure item call, set this to the height of item at m_choiceItem + index. + */ + int m_drawnHeight; +}; + + +// Structure for relaying choice/list info. +struct wxPGChoiceInfo +{ + wxPGChoices* m_choices; +}; + + +#ifndef SWIG + + +// space between vertical sides of a custom image +#define wxPG_CUSTOM_IMAGE_SPACINGY 1 + +// space between caption and selection rectangle, +#define wxPG_CAPRECTXMARGIN 2 + +// horizontally and vertically +#define wxPG_CAPRECTYMARGIN 1 + + +/** @class wxPGCellRenderer + + Base class for wxPropertyGrid cell renderers. +*/ +class WXDLLIMPEXP_PROPGRID wxPGCellRenderer +{ +public: + + wxPGCellRenderer( unsigned int refCount = 1 ) + : m_refCount(refCount) { } + virtual ~wxPGCellRenderer() { } + + // Render flags + enum + { + Selected = 0x00010000, + Control = 0x00020000 + }; + + virtual void Render( wxDC& dc, + const wxRect& rect, + const wxPropertyGrid* propertyGrid, + wxPGProperty* property, + int column, + int item, + int flags ) const = 0; + + /** Returns size of the image in front of the editable area. + @remarks + If property is NULL, then this call is for a custom value. In that case + the item is index to wxPropertyGrid's custom values. + */ + virtual wxSize GetImageSize( const wxPGProperty* property, + int column, + int item ) const; + + /** Paints property category selection rectangle. + */ + virtual void DrawCaptionSelectionRect( wxDC& dc, + int x, int y, + int w, int h ) const; + + /** Utility to draw vertically centered text. + */ + void DrawText( wxDC& dc, + const wxRect& rect, + int imageWidth, + const wxString& text ) const; + + /** + Utility to draw editor's value, or vertically aligned text if editor is + NULL. + */ + void DrawEditorValue( wxDC& dc, const wxRect& rect, + int xOffset, const wxString& text, + wxPGProperty* property, + const wxPGEditor* editor ) const; + + /** Utility to render cell bitmap and set text colour plus bg brush colour. + + Returns image width that, for instance, can be passed to DrawText. + */ + int PreDrawCell( wxDC& dc, + const wxRect& rect, + const wxPGCell& cell, + int flags ) const; + + void IncRef() + { + m_refCount++; + } + + void DecRef() + { + m_refCount--; + if ( !m_refCount ) + delete this; + } +protected: + +private: + unsigned int m_refCount; +}; + + +/** @class wxPGCell + + Base class for simple wxPropertyGrid cell information. +*/ +class WXDLLIMPEXP_PROPGRID wxPGCell +{ +public: + wxPGCell(); + wxPGCell( const wxString& text, + const wxBitmap& bitmap = wxNullBitmap, + const wxColour& fgCol = wxNullColour, + const wxColour& bgCol = wxNullColour ); + + virtual ~wxPGCell() { } + + void SetText( const wxString& text ) { m_text = text; } + void SetBitmap( const wxBitmap& bitmap ) { m_bitmap = bitmap; } + void SetFgCol( const wxColour& col ) { m_fgCol = col; } + void SetBgCol( const wxColour& col ) { m_bgCol = col; } + + const wxString& GetText() const { return m_text; } + const wxBitmap& GetBitmap() const { return m_bitmap; } + const wxColour& GetFgCol() const { return m_fgCol; } + const wxColour& GetBgCol() const { return m_bgCol; } + +protected: + wxString m_text; + wxBitmap m_bitmap; + wxColour m_fgCol; + wxColour m_bgCol; +}; + + +/** @class wxPGDefaultRenderer + + Default cell renderer, that can handles the common + scenarios. +*/ +class WXDLLIMPEXP_PROPGRID wxPGDefaultRenderer : public wxPGCellRenderer +{ +public: + virtual void Render( wxDC& dc, + const wxRect& rect, + const wxPropertyGrid* propertyGrid, + wxPGProperty* property, + int column, + int item, + int flags ) const; + + virtual wxSize GetImageSize( const wxPGProperty* property, + int column, + int item ) const; + +protected: +}; + +// ----------------------------------------------------------------------- + +/** @class wxPGAttributeStorage + + wxPGAttributeStorage is somewhat optimized storage for + key=variant pairs (ie. a map). +*/ +class WXDLLIMPEXP_PROPGRID wxPGAttributeStorage +{ +public: + wxPGAttributeStorage(); + ~wxPGAttributeStorage(); + + void Set( const wxString& name, const wxVariant& value ); + size_t GetCount() const { return m_map.size(); } + wxVariant FindValue( const wxString& name ) const + { + wxPGHashMapS2P::const_iterator it = m_map.find(name); + if ( it != m_map.end() ) + { + wxVariantData* data = (wxVariantData*) it->second; + data->IncRef(); + return wxVariant(data, it->first); + } + return wxVariant(); + } + + typedef wxPGHashMapS2P::const_iterator const_iterator; + const_iterator StartIteration() const + { + return m_map.begin(); + } + bool GetNext( const_iterator& it, wxVariant& variant ) const + { + if ( it == m_map.end() ) + return false; + + wxVariantData* data = (wxVariantData*) it->second; + data->IncRef(); + variant.SetData(data); + variant.SetName(it->first); + it++; + return true; + } + +protected: + wxPGHashMapS2P m_map; +}; + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +/** @section propgrid_propflags wxPGProperty Flags + @{ +*/ + +enum wxPG_PROPERTY_FLAGS +{ + +/** Indicates bold font. +*/ +wxPG_PROP_MODIFIED = 0x0001, + +/** Disables ('greyed' text and editor does not activate) property. +*/ +wxPG_PROP_DISABLED = 0x0002, + +/** Hider button will hide this property. +*/ +wxPG_PROP_HIDDEN = 0x0004, + +/** This property has custom paint image just in front of its value. + If property only draws custom images into a popup list, then this + flag should not be set. +*/ +wxPG_PROP_CUSTOMIMAGE = 0x0008, + +/** Do not create text based editor for this property (but button-triggered + dialog and choice are ok). +*/ +wxPG_PROP_NOEDITOR = 0x0010, + +/** Property is collapsed, ie. it's children are hidden. +*/ +wxPG_PROP_COLLAPSED = 0x0020, + +/** + If property is selected, then indicates that validation failed for pending + value. + + If property is not selected, then indicates that the the actual property + value has failed validation (NB: this behavior is not currently supported, + but may be used in future). +*/ +wxPG_PROP_INVALID_VALUE = 0x0040, + +// 0x0080, + +/** Switched via SetWasModified(). Temporary flag - only used when + setting/changing property value. +*/ +wxPG_PROP_WAS_MODIFIED = 0x0200, + +/** + If set, then child properties (if any) are private, and should be + "invisible" to the application. +*/ +wxPG_PROP_AGGREGATE = 0x0400, + +/** If set, then child properties (if any) are copies and should not + be deleted in dtor. +*/ +wxPG_PROP_CHILDREN_ARE_COPIES = 0x0800, + +/** + Classifies this item as a non-category. + + Used for faster item type identification. +*/ +wxPG_PROP_PROPERTY = 0x1000, + +/** + Classifies this item as a category. + + Used for faster item type identification. +*/ +wxPG_PROP_CATEGORY = 0x2000, + +/** Classifies this item as a property that has children, but is not aggregate + (ie children are not private). +*/ +wxPG_PROP_MISC_PARENT = 0x4000, + +/** Property is read-only. Editor is still created. +*/ +wxPG_PROP_READONLY = 0x8000, + +// +// NB: FLAGS ABOVE 0x8000 CANNOT BE USED WITH PROPERTY ITERATORS +// + +/** Property's value is composed from values of child properties. + @remarks + This flag cannot be used with property iterators. +*/ +wxPG_PROP_COMPOSED_VALUE = 0x00010000, + +/** Common value of property is selectable in editor. + @remarks + This flag cannot be used with property iterators. +*/ +wxPG_PROP_USES_COMMON_VALUE = 0x00020000, + +/** Property can be set to unspecified value via editor. + Currently, this applies to following properties: + - wxIntProperty, wxUIntProperty, wxFloatProperty, wxEditEnumProperty: + Clear the text field + + @remarks + This flag cannot be used with property iterators. +*/ +wxPG_PROP_AUTO_UNSPECIFIED = 0x00040000, + +/** Indicates the bit useable by derived properties. +*/ +wxPG_PROP_CLASS_SPECIFIC_1 = 0x00080000, + +/** Indicates the bit useable by derived properties. +*/ +wxPG_PROP_CLASS_SPECIFIC_2 = 0x00100000 + +}; + +/** Topmost flag. +*/ +#define wxPG_PROP_MAX wxPG_PROP_AUTO_UNSPECIFIED + +/** Property with children must have one of these set, otherwise iterators + will not work correctly. + Code should automatically take care of this, however. +*/ +#define wxPG_PROP_PARENTAL_FLAGS \ + (wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY|wxPG_PROP_MISC_PARENT) + +/** @} +*/ + +// Amalgam of flags that should be inherited by sub-properties +#define wxPG_INHERITED_PROPFLAGS (wxPG_PROP_HIDDEN|wxPG_PROP_NOEDITOR) + +// Combination of flags that can be stored by GetFlagsAsString +#define wxPG_STRING_STORED_FLAGS \ + (wxPG_PROP_DISABLED|wxPG_PROP_HIDDEN|wxPG_PROP_NOEDITOR|wxPG_PROP_COLLAPSED) + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** + @section propgrid_property_attributes wxPropertyGrid Property Attribute + Identifiers. + + wxPGProperty::SetAttribute() and + wxPropertyGridInterfaces::SetPropertyAttribute() accept one of these as + attribute name argument. + + You can use strings instead of constants. However, some of these + constants are redefined to use cached strings which may reduce + your binary size by some amount. + + @{ +*/ + +/** Set default value for property. +*/ +#define wxPG_ATTR_DEFAULT_VALUE wxS("DefaultValue") + +/** Universal, int or double. Minimum value for numeric properties. +*/ +#define wxPG_ATTR_MIN wxS("Min") + +/** Universal, int or double. Maximum value for numeric properties. +*/ +#define wxPG_ATTR_MAX wxS("Max") + +/** Universal, string. When set, will be shown as text after the displayed + text value. Alternatively, if third column is enabled, text will be shown + there (for any type of property). +*/ +#define wxPG_ATTR_UNITS wxS("Units") + +/** Universal, string. When set, will be shown in property's value cell + when displayed value string is empty, or value is unspecified. +*/ +#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp") + +/** wxBoolProperty specific, int, default 0. When 1 sets bool property to + use checkbox instead of choice. +*/ +#define wxPG_BOOL_USE_CHECKBOX wxS("UseCheckbox") + +/** wxBoolProperty specific, int, default 0. When 1 sets bool property value + to cycle on double click (instead of showing the popup listbox). +*/ +#define wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING wxS("UseDClickCycling") + +/** + wxFloatProperty (and similar) specific, int, default -1. + + Sets the (max) precision used when floating point value is rendered as + text. The default -1 means infinite precision. +*/ +#define wxPG_FLOAT_PRECISION wxS("Precision") + +/** + The text will be echoed as asterisks (wxTE_PASSWORD will be passed to + textctrl etc). +*/ +#define wxPG_STRING_PASSWORD wxS("Password") + +/** Define base used by a wxUIntProperty. Valid constants are + wxPG_BASE_OCT, wxPG_BASE_DEC, wxPG_BASE_HEX and wxPG_BASE_HEXL + (lowercase characters). +*/ +#define wxPG_UINT_BASE wxS("Base") + +/** Define prefix rendered to wxUIntProperty. Accepted constants + wxPG_PREFIX_NONE, wxPG_PREFIX_0x, and wxPG_PREFIX_DOLLAR_SIGN. + <b>Note:</b> Only wxPG_PREFIX_NONE works with Decimal and Octal + numbers. +*/ +#define wxPG_UINT_PREFIX wxS("Prefix") + +/** + wxFileProperty/wxImageFileProperty specific, wxChar*, default is + detected/varies. + Sets the wildcard used in the triggered wxFileDialog. Format is the same. +*/ +#define wxPG_FILE_WILDCARD wxS("Wildcard") + +/** wxFileProperty/wxImageFileProperty specific, int, default 1. + When 0, only the file name is shown (i.e. drive and directory are hidden). +*/ +#define wxPG_FILE_SHOW_FULL_PATH wxS("ShowFullPath") + +/** Specific to wxFileProperty and derived properties, wxString, default empty. + If set, then the filename is shown relative to the given path string. +*/ +#define wxPG_FILE_SHOW_RELATIVE_PATH wxS("ShowRelativePath") + +/** + Specific to wxFileProperty and derived properties, wxString, default is + empty. + + Sets the initial path of where to look for files. +*/ +#define wxPG_FILE_INITIAL_PATH wxS("InitialPath") + +/** Specific to wxFileProperty and derivatives, wxString, default is empty. + Sets a specific title for the dir dialog. +*/ +#define wxPG_FILE_DIALOG_TITLE wxS("DialogTitle") + +/** Specific to wxDirProperty, wxString, default is empty. + Sets a specific message for the dir dialog. +*/ +#define wxPG_DIR_DIALOG_MESSAGE wxS("DialogMessage") + +/** Sets displayed date format for wxDateProperty. +*/ +#define wxPG_DATE_FORMAT wxS("DateFormat") + +/** Sets wxDatePickerCtrl window style used with wxDateProperty. Default + is wxDP_DEFAULT | wxDP_SHOWCENTURY. +*/ +#define wxPG_DATE_PICKER_STYLE wxS("PickerStyle") + +/** SpinCtrl editor, int or double. How much number changes when button is + pressed (or up/down on keybard). +*/ +#define wxPG_ATTR_SPINCTRL_STEP wxS("Step") + +/** SpinCtrl editor, bool. If true, value wraps at Min/Max. +*/ +#define wxPG_ATTR_SPINCTRL_WRAP wxS("Wrap") + +/** + wxMultiChoiceProperty, int. + If 0, no user strings allowed. If 1, user strings appear before list + strings. If 2, user strings appear after list string. +*/ +#define wxPG_ATTR_MULTICHOICE_USERSTRINGMODE wxS("UserStringMode") + +/** + wxColourProperty and its kind, int, default 1. + + Setting this attribute to 0 hides custom colour from property's list of + choices. +*/ +#define wxPG_COLOUR_ALLOW_CUSTOM wxS("AllowCustom") + +/** First attribute id that is guaranteed not to be used built-in + properties. +*/ +//#define wxPG_USER_ATTRIBUTE 192 + +/** @} +*/ + +#ifndef DOXYGEN + +// Redefine attribute macros to use cached strings +#undef wxPG_ATTR_MIN +#define wxPG_ATTR_MIN wxPGGlobalVars->m_strMin +#undef wxPG_ATTR_MAX +#define wxPG_ATTR_MAX wxPGGlobalVars->m_strMax +#undef wxPG_ATTR_UNITS +#define wxPG_ATTR_UNITS wxPGGlobalVars->m_strUnits +#undef wxPG_ATTR_INLINE_HELP +#define wxPG_ATTR_INLINE_HELP wxPGGlobalVars->m_strInlineHelp + +#endif // !DOXYGEN + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +/** @class wxPGProperty + + wxPGProperty is base class for all wxPropertyGrid properties. In + sections below we cover few related topics. + + @li @ref pgproperty_properties + @li @ref pgproperty_creating + + @section pgproperty_properties Supplied Ready-to-use Property Classes + + Here is a list and short description of supplied fully-functional + property classes. They are located in either props.h or advprops.h. + + @li @ref wxArrayStringProperty + @li @ref wxBoolProperty + @li @ref wxColourProperty + @li @ref wxCursorProperty + @li @ref wxDateProperty + @li @ref wxDirProperty + @li @ref wxEditEnumProperty + @li @ref wxEnumProperty + @li @ref wxFileProperty + @li @ref wxFlagsProperty + @li @ref wxFloatProperty + @li @ref wxFontProperty + @li @ref wxImageFileProperty + @li @ref wxIntProperty + @li @ref wxLongStringProperty + @li @ref wxMultiChoiceProperty + @li @ref wxPropertyCategory + @li @ref wxStringProperty + @li @ref wxSystemColourProperty + @li @ref wxUIntProperty + + @subsection wxPropertyCategory + + Not an actual property per se, but a header for a group of properties. + Regardless inherits from wxPGProperty. + + @subsection wxStringProperty + + Simple string property. wxPG_STRING_PASSWORD attribute may be used + to echo value as asterisks and use wxTE_PASSWORD for wxTextCtrl. + + @remarks + * wxStringProperty has a special trait: if it has value of "<composed>", + and also has child properties, then its displayed value becomes + composition of child property values, similar as with wxFontProperty, + for instance. + + @subsection wxIntProperty + + Like wxStringProperty, but converts text to a signed long integer. + wxIntProperty seamlessly supports 64-bit integers (ie. wxLongLong). + + @subsection wxUIntProperty + + Like wxIntProperty, but displays value as unsigned int. To set + the prefix used globally, manipulate wxPG_UINT_PREFIX string attribute. + To set the globally used base, manipulate wxPG_UINT_BASE int + attribute. Regardless of current prefix, understands (hex) values starting + with both "0x" and "$". + wxUIntProperty seamlessly supports 64-bit unsigned integers (ie. + wxULongLong). + + @subsection wxFloatProperty + + Like wxStringProperty, but converts text to a double-precision floating + point. Default float-to-text precision is 6 decimals, but this can be + changed by modifying wxPG_FLOAT_PRECISION attribute. + + @subsection wxBoolProperty + + Represents a boolean value. wxChoice is used as editor control, by the + default. wxPG_BOOL_USE_CHECKBOX attribute can be set to true inorder to use + check box instead. + + @subsection wxLongStringProperty + + Like wxStringProperty, but has a button that triggers a small text editor + dialog. Note that in long string values, tabs are represented by "\t" and + line break by "\n". + + @subsection wxDirProperty + + Like wxLongStringProperty, but the button triggers dir selector instead. + Supported properties (all with string value): wxPG_DIR_DIALOG_MESSAGE. + + @subsection wxFileProperty + + Like wxLongStringProperty, but the button triggers file selector instead. + Default wildcard is "All files..." but this can be changed by setting + wxPG_FILE_WILDCARD attribute (see wxFileDialog for format details). + Attribute wxPG_FILE_SHOW_FULL_PATH can be set to false inorder to show + only the filename, not the entire path. + + @subsection wxEnumProperty + + Represents a single selection from a list of choices - + wxOwnerDrawnComboBox is used to edit the value. + + @subsection wxFlagsProperty + + Represents a bit set that fits in a long integer. wxBoolProperty + sub-properties are created for editing individual bits. Textctrl is created + to manually edit the flags as a text; a continous sequence of spaces, + commas and semicolons is considered as a flag id separator. + <b>Note: </b> When changing "choices" (ie. flag labels) of wxFlagsProperty, + you will need to use SetPropertyChoices - otherwise they will not get + updated properly. + + @subsection wxArrayStringProperty + + Allows editing of a list of strings in wxTextCtrl and in a separate dialog. + + @subsection wxDateProperty + + wxDateTime property. Default editor is DatePickerCtrl, altough TextCtrl + should work as well. wxPG_DATE_FORMAT attribute can be used to change + string wxDateTime::Format uses (altough default is recommended as it is + locale-dependant), and wxPG_DATE_PICKER_STYLE allows changing window + style given to DatePickerCtrl (default is wxDP_DEFAULT|wxDP_SHOWCENTURY). + + @subsection wxEditEnumProperty + + Represents a string that can be freely edited or selected from list of + choices - custom combobox control is used to edit the value. + + @subsection wxMultiChoiceProperty + + Allows editing a multiple selection from a list of strings. This is + property is pretty much built around concept of wxMultiChoiceDialog. + It uses wxArrayString value. + + @subsection wxImageFileProperty + + Like wxFileProperty, but has thumbnail of the image in front of + the filename and autogenerates wildcard from available image handlers. + + @subsection wxColourProperty + + <b>Useful alternate editor:</b> Choice. + + Represents wxColour. wxButton is used to trigger a colour picker dialog. + + @subsection wxFontProperty + + Represents wxFont. Various sub-properties are used to edit individual + subvalues. + + @subsection wxSystemColourProperty + + Represents wxColour and a system colour index. wxChoice is used to edit + the value. Drop-down list has color images. Note that value type + is wxColourPropertyValue instead of wxColour. + @code + class wxColourPropertyValue : public wxObject + { + public: + // An integer value relating to the colour, and which exact + // meaning depends on the property with which it is used. + // + // For wxSystemColourProperty: + // Any of wxSYS_COLOUR_XXX, or any web-colour (use + // wxPG_TO_WEB_COLOUR macro - (currently unsupported) ), + // or wxPG_COLOUR_CUSTOM. + wxUint32 m_type; + + // Resulting colour. Should be correct regardless of type. + wxColour m_colour; + }; + @endcode + + @subsection wxCursorProperty + + Represents a wxCursor. wxChoice is used to edit the value. + Drop-down list has cursor images under some (wxMSW) platforms. + + + @section pgproperty_creating Creating Custom Properties + + New properties can be created by subclassing wxPGProperty or one + of the provided property classes, and (re)implementing necessary + member functions. Below, each virtual member function has ample + documentation about its purpose and any odd details which to keep + in mind. + + Here is a very simple 'template' code: + + @code + class MyProperty : public wxPGProperty + { + public: + // All arguments of ctor must have a default value - + // use wxPG_LABEL for label and name + MyProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ) + { + // m_value is wxVariant + m_value = value; + } + + virtual ~MyProperty() { } + + const wxPGEditor* DoGetEditorClass() const + { + // Determines editor used by property. + // You can replace 'TextCtrl' below with any of these + // builtin-in property editor identifiers: Choice, ComboBox, + // TextCtrlAndButton, ChoiceAndButton, CheckBox, SpinCtrl, + // DatePickerCtrl. + return wxPGEditor_TextCtrl; + } + + virtual wxString GetValueAsString( int argFlags ) const + { + // TODO: Return property value in string format + } + + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int argFlags ) + { + // TODO: Adapt string to property value. + } + + protected: + }; + @endcode + + Since wxPGProperty derives from wxObject, you can use standard + DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS macros. From the + above example they were omitted for sake of simplicity, and besides, + they are only really needed if you need to use wxRTTI with your + property class. + + You can change the 'value type' of a property by simply assigning different + type of variant with SetValue. <b>It is mandatory to implement + wxVariantData class for all data types used as property values.</b> Also, + it is further recommended to derive your class from wxPGVariantData, like + this: + + @code + // In header file: + // (replace DECL with required data declaration, use + // wxEMPTY_PARAMETER_VALUE if none) + WX_PG_DECLARE_VARIANT_DATA(wxPGVariantMyDataClass, MyDataClass, DECL) + + // In sources file: + WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantMyDataClass, MyDataClass) + @endcode + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGProperty : public wxObject +{ + friend class wxPropertyGrid; + friend class wxPropertyGridInterface; + friend class wxPropertyGridPageState; + friend class wxPropertyGridPopulator; + friend class wxStringProperty; // Proper "<composed>" support requires this +#ifndef SWIG + DECLARE_ABSTRACT_CLASS(wxPGProperty) +#endif +public: + typedef wxUint32 FlagType; + + /** Basic constructor. + */ + wxPGProperty(); + + /** Constructor. + Non-abstract property classes should have constructor of this style: + + @code + + // If T is a class, then it should be a constant reference + // (e.g. const T& ) instead. + MyProperty( const wxString& label, const wxString& name, T value ) + : wxPGProperty() + { + // Generally recommended way to set the initial value + // (as it should work in pretty much 100% of cases). + wxVariant variant; + variant << value; + SetValue(variant); + + // If has private child properties then create them here, e.g.: + // AddChild( new wxStringProperty( "Subprop 1", + // wxPG_LABEL, + // value.GetSubProp1() ) ); + } + + @endcode + */ + wxPGProperty( const wxString& label, const wxString& name ); + + /** + Virtual destructor. + It is customary for derived properties to implement this. + */ + virtual ~wxPGProperty(); + + /** This virtual function is called after m_value has been set. + + @remarks + - If m_value was set to Null variant (ie. unspecified value), + OnSetValue() will not be called. + - m_value may be of any variant type. Typically properties internally + support only one variant type, and as such OnSetValue() provides a + good opportunity to convert + supported values into internal type. + - Default implementation does nothing. + */ + virtual void OnSetValue(); + + /** Override this to return something else than m_value as the value. + */ + virtual wxVariant DoGetValue() const { return m_value; } + +#if !defined(SWIG) || defined(CREATE_VCW) + /** Implement this function in derived class to check the value. + Return true if it is ok. Returning false prevents property change events + from occurring. + + @remarks + - Default implementation always returns true. + */ + virtual bool ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const; + + /** + Converts 'text' into proper value 'variant'. + Returns true if new (different than m_value) value could be interpreted + from the text. + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable value instead + of displayable one (they may be different). + If wxPG_COMPOSITE_FRAGMENT is set, text is interpreted as a part of + composite property string value (as generated by GetValueAsString() + called with this same flag). + + @remarks + Default implementation converts semicolon delimited tokens into child + values. Only works for properties with children. + */ + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int argFlags = 0 ) const; + + /** + Converts 'number' (including choice selection) into proper value + 'variant'. + + Returns true if new (different than m_value) value could be interpreted + from the integer. + + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable value instead + of displayable one. + + @remarks + - If property is not supposed to use choice or spinctrl or other editor + with int-based value, it is not necessary to implement this method. + - Default implementation simply assign given int to m_value. + - If property uses choice control, and displays a dialog on some choice + items, then it is preferred to display that dialog in IntToValue + instead of OnEvent. + */ + virtual bool IntToValue( wxVariant& value, + int number, + int argFlags = 0 ) const; +#endif // !defined(SWIG) || defined(CREATE_VCW) + +public: + /** Returns text representation of property's value. + + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable string value + instead of displayable. If wxPG_EDITABLE_VALUE is set, returns + string value that must be editable in textctrl. If + wxPG_COMPOSITE_FRAGMENT is set, returns text that is appropriate to + display as a part of composite property string value. + + @remarks + Default implementation returns string composed from text + representations of child properties. + */ + virtual wxString GetValueAsString( int argFlags = 0 ) const; + + /** Converts string to a value, and if successful, calls SetValue() on it. + Default behavior is to do nothing. + @param text + String to get the value from. + @return + true if value was changed. + */ + bool SetValueFromString( const wxString& text, int flags = 0 ); + + /** Converts integer to a value, and if succesful, calls SetValue() on it. + Default behavior is to do nothing. + @param value + Int to get the value from. + @param flags + If has wxPG_FULL_VALUE, then the value given is a actual value and + not an index. + @return + True if value was changed. + */ + bool SetValueFromInt( long value, int flags = 0 ); + + /** + Returns size of the custom painted image in front of property. + + This method must be overridden to return non-default value if + OnCustomPaint is to be called. + @param item + Normally -1, but can be an index to the property's list of items. + @remarks + - Default behavior is to return wxSize(0,0), which means no image. + - Default image width or height is indicated with dimension -1. + - You can also return wxPG_DEFAULT_IMAGE_SIZE, i.e. wxSize(-1, -1). + */ + virtual wxSize OnMeasureImage( int item = -1 ) const; + + /** + Events received by editor widgets are processed here. + + Note that editor class usually processes most events. Some, such as + button press events of TextCtrlAndButton class, can be handled here. + Also, if custom handling for regular events is desired, then that can + also be done (for example, wxSystemColourProperty custom handles + wxEVT_COMMAND_CHOICE_SELECTED to display colour picker dialog when + 'custom' selection is made). + + If the event causes value to be changed, SetValueInEvent() + should be called to set the new value. + + @param event + Associated wxEvent. + @return + Should return true if any changes in value should be reported. + @remarks + If property uses choice control, and displays a dialog on some choice + items, then it is preferred to display that dialog in IntToValue + instead of OnEvent. + */ + virtual bool OnEvent( wxPropertyGrid* propgrid, + wxWindow* wnd_primary, + wxEvent& event ); + + /** + Called after value of a child property has been altered. + + Note that this function is usually called at the time that value of + this property, or given child property, is still pending for change. + + Sample pseudo-code implementation: + + @code + void MyProperty::ChildChanged( wxVariant& thisValue, + int childIndex, + wxVariant& childValue ) const + { + // Acquire reference to actual type of data stored in variant + // (TFromVariant only exists if wxPropertyGrid's wxVariant-macros + // were used to create the variant class). + T& data = TFromVariant(thisValue); + + // Copy childValue into data. + switch ( childIndex ) + { + case 0: + data.SetSubProp1( childvalue.GetLong() ); + break; + case 1: + data.SetSubProp2( childvalue.GetString() ); + break; + ... + } + } + @endcode + + @param thisValue + Value of this property, that should be altered. + @param childIndex + Index of child changed (you can use Item(childIndex) to get). + @param childValue + Value of the child property. + */ + virtual void ChildChanged( wxVariant& thisValue, + int childIndex, + wxVariant& childValue ) const; + + /** Returns pointer to an instance of used editor. + */ + virtual const wxPGEditor* DoGetEditorClass() const; + + /** Returns pointer to the wxValidator that should be used + with the editor of this property (NULL for no validator). + Setting validator explicitly via SetPropertyValidator + will override this. + + In most situations, code like this should work well + (macros are used to maintain one actual validator instance, + so on the second call the function exits within the first + macro): + + @code + + wxValidator* wxMyPropertyClass::DoGetValidator () const + { + WX_PG_DOGETVALIDATOR_ENTRY() + + wxMyValidator* validator = new wxMyValidator(...); + + ... prepare validator... + + WX_PG_DOGETVALIDATOR_EXIT(validator) + } + + @endcode + + @remarks + You can get common filename validator by returning + wxFileProperty::GetClassValidator(). wxDirProperty, + for example, uses it. + */ + virtual wxValidator* DoGetValidator () const; + + /** + Returns current value's index to the choice control. + + May also return, through pointer arguments, strings that should be + inserted to that control. Irrelevant to classes which do not employ + wxPGEditor_Choice or similar. + + @remarks + - If returns NULL in choiceinfo.m_choices, then this class must be + derived from wxBaseEnumProperty. + - Must be able to cope situation where property's set of choices is + uninitialized. + */ + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + + /** + Override to paint an image in front of the property value text or + drop-down list item (but only if wxPGProperty::OnMeasureImage is + overridden as well). + + If property's OnMeasureImage() returns size that has height != 0 but + less than row height ( < 0 has special meanings), wxPropertyGrid calls + this method to draw a custom image in a limited area in front of the + editor control or value text/graphics, and if control has drop-down + list, then the image is drawn there as well (even in the case + OnMeasureImage() returned higher height than row height). + + NOTE: Following applies when OnMeasureImage() returns a "flexible" + height ( using wxPG_FLEXIBLE_SIZE(W,H) macro), which implies variable + height items: If rect.x is < 0, then this is a measure item call, which + means that dc is invalid and only thing that should be done is to set + paintdata.m_drawnHeight to the height of the image of item at index + paintdata.m_choiceItem. This call may be done even as often as once + every drop-down popup show. + + @param dc + wxDC to paint on. + @param rect + Box reserved for custom graphics. Includes surrounding rectangle, + if any. If x is < 0, then this is a measure item call (see above). + @param paintdata + wxPGPaintData structure with much useful data. + + @remarks + - You can actually exceed rect width, but if you do so then + paintdata.m_drawnWidth must be set to the full width drawn in + pixels. + - Due to technical reasons, rect's height will be default even if + custom height was reported during measure call. + - Brush is guaranteed to be default background colour. It has been + already used to clear the background of area being painted. It + can be modified. + - Pen is guaranteed to be 1-wide 'black' (or whatever is the proper + colour) pen for drawing framing rectangle. It can be changed as + well. + + @see GetValueAsString() + */ + virtual void OnCustomPaint( wxDC& dc, + const wxRect& rect, + wxPGPaintData& paintdata ); + + /** + Returns used wxPGCellRenderer instance for given property column + (label=0, value=1). + + Default implementation returns editor's renderer for all columns. + */ + virtual wxPGCellRenderer* GetCellRenderer( int column ) const; + + /** + Refresh values of child properties. + + Automatically called after value is set. + */ + virtual void RefreshChildren(); + + /** Special handling for attributes of this property. + + If returns false, then the attribute will be automatically stored in + m_attributes. + + Default implementation simply returns false. + */ + virtual bool DoSetAttribute( const wxString& name, wxVariant& value ); + + /** Returns value of an attribute. + + Override if custom handling of attributes is needed. + + Default implementation simply return NULL variant. + */ + virtual wxVariant DoGetAttribute( const wxString& name ) const; + + /** Returns instance of a new wxPGEditorDialogAdapter instance, which is + used when user presses the (optional) button next to the editor control; + + Default implementation returns NULL (ie. no action is generated when + button is pressed). + */ + virtual wxPGEditorDialogAdapter* GetEditorDialog() const; + + /** + Adds entry to property's wxPGChoices and editor control (if it is + active). + + Returns index of item added. + */ + int AppendChoice( const wxString& label, int value = wxPG_INVALID_VALUE ) + { + return InsertChoice(label,-1,value); + } + + /** Returns wxPGCell of given column, NULL if none. If valid + object is returned, caller will gain its ownership. + */ + wxPGCell* AcquireCell( unsigned int column ) + { + if ( column >= m_cells.size() ) + return NULL; + + wxPGCell* cell = (wxPGCell*) m_cells[column]; + m_cells[column] = NULL; + return cell; + } + + /** + Returns true if children of this property are component values (for + instance, points size, face name, and is_underlined are component + values of a font). + */ + bool AreChildrenComponents() const + { + if ( m_flags & (wxPG_PROP_COMPOSED_VALUE|wxPG_PROP_AGGREGATE) ) + return true; + + return false; + } + + /** + Removes entry from property's wxPGChoices and editor control (if it is + active). + + If selected item is deleted, then the value is set to unspecified. + */ + void DeleteChoice( int index ); + + /** + Call to enable or disable usage of common value (integer value that can + be selected for properties instead of their normal values) for this + property. + + Common values are disabled by the default for all properties. + */ + void EnableCommonValue( bool enable = true ) + { + if ( enable ) SetFlag( wxPG_PROP_USES_COMMON_VALUE ); + else ClearFlag( wxPG_PROP_USES_COMMON_VALUE ); + } + + /** Composes text from values of child properties. */ + void GenerateComposedValue( wxString& text, int argFlags = 0 ) const; + + /** Returns property's label. */ + const wxString& GetLabel() const { return m_label; } + + /** Returns property's name with all (non-category, non-root) parents. */ + wxString GetName() const; + + /** + Returns property's base name (ie parent's name is not added in any + case) + */ + const wxString& GetBaseName() const { return m_name; } + + wxPGChoices& GetChoices(); + + const wxPGChoices& GetChoices() const; + + const wxPGChoiceEntry* GetCurrentChoice() const; + + /** Returns coordinate to the top y of the property. Note that the + position of scrollbars is not taken into account. + */ + int GetY() const; + + wxVariant GetValue() const + { + return DoGetValue(); + } + +#ifndef SWIG + /** Returns reference to the internal stored value. GetValue is preferred + way to get the actual value, since GetValueRef ignores DoGetValue, + which may override stored value. + */ + wxVariant& GetValueRef() + { + return m_value; + } + + const wxVariant& GetValueRef() const + { + return m_value; + } +#endif + + /** Same as GetValueAsString, except takes common value into account. + */ + wxString GetValueString( int argFlags = 0 ) const; + + void UpdateControl( wxWindow* primary ); + + /** Returns wxPGCell of given column, NULL if none. wxPGProperty + will retain ownership of the cell object. + */ + wxPGCell* GetCell( unsigned int column ) const + { + if ( column >= m_cells.size() ) + return NULL; + + return (wxPGCell*) m_cells[column]; + } + + unsigned int GetChoiceCount() const; + + wxString GetChoiceString( unsigned int index ); + + /** Return number of displayed common values for this property. + */ + int GetDisplayedCommonValueCount() const; + + wxString GetDisplayedString() const + { + return GetValueString(0); + } + + /** Returns property grid where property lies. */ + wxPropertyGrid* GetGrid() const; + + /** Returns owner wxPropertyGrid, but only if one is currently on a page + displaying this property. */ + wxPropertyGrid* GetGridIfDisplayed() const; + + /** Returns highest level non-category, non-root parent. Useful when you + have nested wxCustomProperties/wxParentProperties. + @remarks + Thus, if immediate parent is root or category, this will return the + property itself. + */ + wxPGProperty* GetMainParent() const; + + /** Return parent of property */ + wxPGProperty* GetParent() const { return m_parent; } + + /** Returns true if property has editable wxTextCtrl when selected. + + @remarks + Altough disabled properties do not displayed editor, they still + return True here as being disabled is considered a temporary + condition (unlike being read-only or having limited editing enabled). + */ + bool IsTextEditable() const; + + bool IsValueUnspecified() const + { + return m_value.IsNull(); + } + + FlagType HasFlag( FlagType flag ) const + { + return ( m_flags & flag ); + } + + /** Returns comma-delimited string of property attributes. + */ + const wxPGAttributeStorage& GetAttributes() const + { + return m_attributes; + } + + /** Returns m_attributes as list wxVariant. + */ + wxVariant GetAttributesAsList() const; + + FlagType GetFlags() const + { + return m_flags; + } + + const wxPGEditor* GetEditorClass() const; + + wxString GetValueType() const + { + return m_value.GetType(); + } + + /** Returns editor used for given column. NULL for no editor. + */ + const wxPGEditor* GetColumnEditor( int column ) const + { + if ( column == 1 ) + return GetEditorClass(); + + return NULL; + } + + /** Returns common value selected for this property. -1 for none. + */ + int GetCommonValue() const + { + return m_commonValue; + } + + /** Returns true if property has even one visible child. + */ + bool HasVisibleChildren() const; + + /** + Adds entry to property's wxPGChoices and editor control (if it is + active). + + Returns index of item added. + */ + int InsertChoice( const wxString& label, + int index, + int value = wxPG_INVALID_VALUE ); + + /** + Returns true if this property is actually a wxPropertyCategory. + */ + bool IsCategory() const { return HasFlag(wxPG_PROP_CATEGORY)?true:false; } + + /** Returns true if this property is actually a wxRootProperty. + */ + bool IsRoot() const { return (m_parent == NULL); } + + /** Returns true if this is a sub-property. */ + bool IsSubProperty() const + { + wxPGProperty* parent = (wxPGProperty*)m_parent; + if ( parent && !parent->IsCategory() ) + return true; + return false; + } + + /** Returns last visible sub-property, recursively. + */ + const wxPGProperty* GetLastVisibleSubItem() const; + + wxVariant GetDefaultValue() const; + + int GetMaxLength() const + { + return (int) m_maxLen; + } + + /** + Determines, recursively, if all children are not unspecified. + + Takes values in given list into account. + */ + bool AreAllChildrenSpecified( wxVariant* pendingList = NULL ) const; + + /** Updates composed values of parent non-category properties, recursively. + Returns topmost property updated. + + @remarks + - Must not call SetValue() (as can be called in it). + */ + wxPGProperty* UpdateParentValues(); + + /** Returns true if containing grid uses wxPG_EX_AUTO_UNSPECIFIED_VALUES. + */ + FlagType UsesAutoUnspecified() const + { + return HasFlag(wxPG_PROP_AUTO_UNSPECIFIED); + } + + wxBitmap* GetValueImage() const + { + return m_valueBitmap; + } + + wxVariant GetAttribute( const wxString& name ) const; + + /** + Returns named attribute, as string, if found. + + Otherwise defVal is returned. + */ + wxString GetAttribute( const wxString& name, const wxString& defVal ) const; + + /** + Returns named attribute, as long, if found. + + Otherwise defVal is returned. + */ + long GetAttributeAsLong( const wxString& name, long defVal ) const; + + /** + Returns named attribute, as double, if found. + + Otherwise defVal is returned. + */ + double GetAttributeAsDouble( const wxString& name, double defVal ) const; + + unsigned int GetArrIndex() const { return m_arrIndex; } + + unsigned int GetDepth() const { return (unsigned int)m_depth; } + + /** Gets flags as a'|' delimited string. Note that flag names are not + prepended with 'wxPG_PROP_'. + @param flagsMask + String will only be made to include flags combined by this parameter. + */ + wxString GetFlagsAsString( FlagType flagsMask ) const; + + /** Returns position in parent's array. */ + unsigned int GetIndexInParent() const + { + return (unsigned int)m_arrIndex; + } + + /** Hides or reveals the property. + @param hide + true for hide, false for reveal. + @param flags + By default changes are applied recursively. Set this paramter + wxPG_DONT_RECURSE to prevent this. + */ + inline bool Hide( bool hide, int flags = wxPG_RECURSE ); + + bool IsExpanded() const + { return (!(m_flags & wxPG_PROP_COLLAPSED) && GetChildCount()); } + + /** Returns true if all parents expanded. + */ + bool IsVisible() const; + + bool IsEnabled() const { return !(m_flags & wxPG_PROP_DISABLED); } + + /** If property's editor is created this forces its recreation. + Useful in SetAttribute etc. Returns true if actually did anything. + */ + bool RecreateEditor(); + + /** If property's editor is active, then update it's value. + */ + void RefreshEditor(); + + /** Sets an attribute for this property. + @param name + Text identifier of attribute. See @ref propgrid_property_attributes. + @param value + Value of attribute. + */ + void SetAttribute( const wxString& name, wxVariant value ); + + void SetAttributes( const wxPGAttributeStorage& attributes ); + +#ifndef SWIG + /** Sets editor for a property. + + @param editor + For builtin editors, use wxPGEditor_X, where X is builtin editor's + name (TextCtrl, Choice, etc. see wxPGEditor documentation for full + list). + + For custom editors, use pointer you received from + wxPropertyGrid::RegisterEditorClass(). + */ + void SetEditor( const wxPGEditor* editor ) + { + m_customEditor = editor; + } +#endif + + /** Sets editor for a property. + */ + inline void SetEditor( const wxString& editorName ); + + /** Sets cell information for given column. + + Note that the property takes ownership of given wxPGCell instance. + */ + void SetCell( int column, wxPGCell* cellObj ); + + /** Changes value of a property with choices, but only + works if the value type is long or string. */ + void SetChoiceSelection( int newValue, const wxPGChoiceInfo& choiceInfo ); + + /** Sets common value selected for this property. -1 for none. + */ + void SetCommonValue( int commonValue ) + { + m_commonValue = commonValue; + } + + /** Sets flags from a '|' delimited string. Note that flag names are not + prepended with 'wxPG_PROP_'. + */ + void SetFlagsFromString( const wxString& str ); + + /** Sets property's "is it modified?" flag. Affects children recursively. + */ + void SetModifiedStatus( bool modified ) + { + SetFlagRecursively(wxPG_PROP_MODIFIED, modified); + } + + /** Call in OnEvent(), OnButtonClick() etc. to change the property value + based on user input. + + @remarks + This method is const since it doesn't actually modify value, but posts + given variant as pending value, stored in wxPropertyGrid. + */ + void SetValueInEvent( wxVariant value ) const; + + /** + Call this to set value of the property. + + Unlike methods in wxPropertyGrid, this does not automatically update + the display. + + @remarks + Use wxPropertyGrid::ChangePropertyValue() instead if you need to run + through validation process and send property change event. + + If you need to change property value in event, based on user input, use + SetValueInEvent() instead. + + @param pList + Pointer to list variant that contains child values. Used to indicate + which children should be marked as modified. + @param flags + Various flags (for instance, wxPG_SETVAL_REFRESH_EDITOR). + */ + void SetValue( wxVariant value, wxVariant* pList = NULL, int flags = 0 ); + + /** Set wxBitmap in front of the value. This bitmap may be ignored + by custom cell renderers. + */ + void SetValueImage( wxBitmap& bmp ); + + /** If property has choices and they are not yet exclusive, new such copy + of them will be created. + */ + void SetChoicesExclusive(); + + void SetExpanded( bool expanded ) + { + if ( !expanded ) m_flags |= wxPG_PROP_COLLAPSED; + else m_flags &= ~wxPG_PROP_COLLAPSED; + } + + void SetFlag( FlagType flag ) { m_flags |= flag; } + + void SetFlagRecursively( FlagType flag, bool set ); + + void SetHelpString( const wxString& helpString ) + { + m_helpString = helpString; + } + + void SetLabel( const wxString& label ) { m_label = label; } + + inline void SetName( const wxString& newName ); + + void SetValueToUnspecified() + { + wxVariant val; // Create NULL variant + SetValue(val); + } + +#if wxUSE_VALIDATORS + /** Sets wxValidator for a property*/ + void SetValidator( const wxValidator& validator ) + { + m_validator = wxDynamicCast(validator.Clone(),wxValidator); + } + + /** Gets assignable version of property's validator. */ + wxValidator* GetValidator() const + { + if ( m_validator ) + return m_validator; + return DoGetValidator(); + } +#endif // #if wxUSE_VALIDATORS + + /** Updates property value in case there were last minute + changes. If value was unspecified, it will be set to default. + Use only for properties that have TextCtrl-based editor. + @remarks + If you have code similar to + @code + // Update the value in case of last minute changes + if ( primary && propgrid->IsEditorsValueModified() ) + GetEditorClass()->CopyValueFromControl( this, primary ); + @endcode + in wxPGProperty::OnEvent wxEVT_COMMAND_BUTTON_CLICKED handler, + then replace it with call to this method. + @return + True if value changed. + */ + bool PrepareValueForDialogEditing( wxPropertyGrid* propgrid ); + +#ifndef SWIG + /** Returns client data (void*) of a property. + */ + void* GetClientData() const + { + return m_clientData; + } + + /** Sets client data (void*) of a property. + @remarks + This untyped client data has to be deleted manually. + */ + void SetClientData( void* clientData ) + { + m_clientData = clientData; + } + + /** Returns client object of a property. + */ + void SetClientObject(wxClientData* clientObject) + { + delete m_clientObject; + m_clientObject = clientObject; + } + + /** Sets managed client object of a property. + */ + wxClientData *GetClientObject() const { return m_clientObject; } +#endif + + /** Sets new set of choices for property. + + @remarks + This operation clears the property value. + */ + bool SetChoices( wxPGChoices& choices ); + + /** Sets new set of choices for property. + */ + inline bool SetChoices( const wxArrayString& labels, + const wxArrayInt& values = wxArrayInt() ); + + /** Set max length of text in text editor. + */ + inline bool SetMaxLength( int maxLen ); + + /** Call with 'false' in OnSetValue to cancel value changes after all + (ie. cancel 'true' returned by StringToValue() or IntToValue()). + */ + void SetWasModified( bool set = true ) + { + if ( set ) m_flags |= wxPG_PROP_WAS_MODIFIED; + else m_flags &= ~wxPG_PROP_WAS_MODIFIED; + } + + const wxString& GetHelpString() const + { + return m_helpString; + } + + void ClearFlag( FlagType flag ) { m_flags &= ~(flag); } + + // Use, for example, to detect if item is inside collapsed section. + bool IsSomeParent( wxPGProperty* candidate_parent ) const; + + /** + Adapts list variant into proper value using consecutive + ChildChanged-calls. + */ + void AdaptListToValue( wxVariant& list, wxVariant* value ) const; + + /** This is used by properties that have fixed sub-properties. */ + void AddChild( wxPGProperty* prop ); + + /** Returns height of children, recursively, and + by taking expanded/collapsed status into account. + + iMax is used when finding property y-positions. + */ + int GetChildrenHeight( int lh, int iMax = -1 ) const; + + /** Returns number of child properties */ + unsigned int GetChildCount() const { return m_children.GetCount(); } + + /** Returns sub-property at index i. */ + wxPGProperty* Item( size_t i ) const + { return (wxPGProperty*)m_children.Item(i); } + + /** Returns last sub-property. + */ + wxPGProperty* Last() const { return (wxPGProperty*)m_children.Last(); } + + /** Returns index of given sub-property. */ + int Index( const wxPGProperty* p ) const + { return m_children.Index((wxPGProperty*)p); } + + /** Deletes all sub-properties. */ + void Empty(); + + // Puts correct indexes to children + void FixIndexesOfChildren( size_t starthere = 0 ); + +#ifndef SWIG + // Returns wxPropertyGridPageState in which this property resides. + wxPropertyGridPageState* GetParentState() const { return m_parentState; } +#endif + + wxPGProperty* GetItemAtY( unsigned int y, + unsigned int lh, + unsigned int* nextItemY ) const; + + /** Returns (direct) child property with given name (or NULL if not found). + */ + wxPGProperty* GetPropertyByName( const wxString& name ) const; + +#ifdef SWIG + %extend { + DocStr(GetClientData, + "Returns the client data object for a property", ""); + PyObject* GetClientData() { + wxPyClientData* data = (wxPyClientData*)self->GetClientObject(); + if (data) { + Py_INCREF(data->m_obj); + return data->m_obj; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + + DocStr(SetClientData, + "Associate the given client data.", ""); + void SetClientData(PyObject* clientData) { + wxPyClientData* data = new wxPyClientData(clientData); + self->SetClientObject(data); + } + } + %pythoncode { + GetClientObject = GetClientData + SetClientObject = SetClientData + } +#endif + +#ifndef SWIG + + static wxString* sm_wxPG_LABEL; + + /** This member is public so scripting language bindings + wrapper code can access it freely. + */ + void* m_clientData; + +protected: + /** Returns text for given column. + */ + wxString GetColumnText( unsigned int col ) const; + + /** Returns (direct) child property with given label (or NULL if not found), + with hint index. + + @param hintIndex + Start looking for the child at this index. + + @remarks + Does not support scope (ie. Parent.Child notation). + */ + wxPGProperty* GetPropertyByLabelWH( const wxString& label, + unsigned int hintIndex ) const; + + /** This is used by Insert etc. */ + void AddChild2( wxPGProperty* prop, + int index = -1, + bool correct_mode = true ); + + void DoSetName(const wxString& str) { m_name = str; } + + // Call for after sub-properties added with AddChild + void PrepareSubProperties(); + + void SetParentalType( int flag ) + { + m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS); + m_flags |= flag; + } + + void SetParentState( wxPropertyGridPageState* pstate ) + { m_parentState = pstate; } + + // Call after fixed sub-properties added/removed after creation. + // if oldSelInd >= 0 and < new max items, then selection is + // moved to it. + void SubPropsChanged( int oldSelInd = -1 ); + + int GetY2( int lh ) const; + + wxString m_label; + wxString m_name; + wxPGProperty* m_parent; + wxPropertyGridPageState* m_parentState; + + wxClientData* m_clientObject; + + // Overrides editor returned by property class + const wxPGEditor* m_customEditor; +#if wxUSE_VALIDATORS + // Editor is going to get this validator + wxValidator* m_validator; +#endif + // Show this in front of the value + // + // TODO: Can bitmap be implemented with wxPGCell? + wxBitmap* m_valueBitmap; + + wxVariant m_value; + wxPGAttributeStorage m_attributes; + wxArrayPtrVoid m_children; + + // Extended cell information + wxArrayPtrVoid m_cells; + + // Help shown in statusbar or help box. + wxString m_helpString; + + // Index in parent's property array. + unsigned int m_arrIndex; + + // If not -1, then overrides m_value + int m_commonValue; + + FlagType m_flags; + + // Maximum length (mainly for string properties). Could be in some sort of + // wxBaseStringProperty, but currently, for maximum flexibility and + // compatibility, we'll stick it here. Anyway, we had 3 excess bytes to use + // so short int will fit in just fine. + short m_maxLen; + + // Root has 0, categories etc. at that level 1, etc. + unsigned char m_depth; + + // m_depthBgCol indicates width of background colour between margin and item + // (essentially this is category's depth, if none then equals m_depth). + unsigned char m_depthBgCol; + + unsigned char m_bgColIndex; // Background brush index. + unsigned char m_fgColIndex; // Foreground colour index. + +private: + // Called in constructors. + void Init(); + void Init( const wxString& label, const wxString& name ); +#endif // #ifndef SWIG +}; + +// ----------------------------------------------------------------------- + +// +// Property class declaration helper macros +// (wxPGRootPropertyClass and wxPropertyCategory require this). +// + +#define WX_PG_DECLARE_DOGETEDITORCLASS \ + virtual const wxPGEditor* DoGetEditorClass() const; + +#ifndef SWIG + #define WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \ + public: \ + DECLARE_DYNAMIC_CLASS(CLASSNAME) \ + WX_PG_DECLARE_DOGETEDITORCLASS \ + private: +#else + #define WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) +#endif + +// Implements sans constructor function. Also, first arg is class name, not +// property name. +#define WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(PROPNAME,T,EDITOR) \ +const wxPGEditor* PROPNAME::DoGetEditorClass() const \ +{ \ + return wxPGEditor_##EDITOR; \ +} + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** @class wxPGRootProperty + @ingroup classes + Root parent property. +*/ +class WXDLLIMPEXP_PROPGRID wxPGRootProperty : public wxPGProperty +{ +public: + WX_PG_DECLARE_PROPERTY_CLASS(wxPGRootProperty) +public: + + /** Constructor. */ + wxPGRootProperty(); + virtual ~wxPGRootProperty(); + + virtual bool StringToValue( wxVariant&, const wxString&, int ) const + { + return false; + } + +protected: +}; + +// ----------------------------------------------------------------------- + +/** @class wxPropertyCategory + @ingroup classes + Category (caption) property. +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyCategory : public wxPGProperty +{ + friend class wxPropertyGrid; + friend class wxPropertyGridPageState; + WX_PG_DECLARE_PROPERTY_CLASS(wxPropertyCategory) +public: + + /** Default constructor is only used in special cases. */ + wxPropertyCategory(); + + wxPropertyCategory( const wxString& label, + const wxString& name = wxPG_LABEL ); + ~wxPropertyCategory(); + + int GetTextExtent( const wxWindow* wnd, const wxFont& font ) const; + +protected: + virtual wxString GetValueAsString( int argFlags ) const; + + void SetTextColIndex( unsigned int colInd ) + { m_capFgColIndex = (wxByte) colInd; } + unsigned int GetTextColIndex() const + { return (unsigned int) m_capFgColIndex; } + + void CalculateTextExtent( wxWindow* wnd, const wxFont& font ); + + int m_textExtent; // pre-calculated length of text + wxByte m_capFgColIndex; // caption text colour index + +private: + void Init(); +}; + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** @class wxPGChoiceEntry + Data of a single wxPGChoices choice. +*/ +class WXDLLIMPEXP_PROPGRID wxPGChoiceEntry : public wxPGCell +{ +public: + wxPGChoiceEntry(); + wxPGChoiceEntry( const wxPGChoiceEntry& entry ); + wxPGChoiceEntry( const wxString& label, + int value = wxPG_INVALID_VALUE ) + : wxPGCell(), m_value(value) + { + m_text = label; + } + + wxPGChoiceEntry( const wxString& label, + int value, + const wxBitmap& bitmap, + const wxColour& fgCol = wxNullColour, + const wxColour& bgCol = wxNullColour ) + : wxPGCell(label, bitmap, fgCol, bgCol), m_value(value) + { + } + + virtual ~wxPGChoiceEntry() + { + } + + void SetValue( int value ) { m_value = value; } + + int GetValue() const { return m_value; } + + bool HasValue() const { return (m_value != wxPG_INVALID_VALUE); } + +protected: + int m_value; +}; + + +typedef void* wxPGChoicesId; + +class WXDLLIMPEXP_PROPGRID wxPGChoicesData +{ + friend class wxPGChoices; +public: + // Constructor sets m_refCount to 1. + wxPGChoicesData(); + + void CopyDataFrom( wxPGChoicesData* data ); + + // Takes ownership of 'item' + void Insert( int index, wxPGChoiceEntry* item ) + { + wxArrayPtrVoid::iterator it; + if ( index == -1 ) + { + it = m_items.end(); + index = m_items.size(); + } + else + { + it = m_items.begin() + index; + } + + // Need to fix value? + if ( item->GetValue() == wxPG_INVALID_VALUE ) + item->SetValue(index); + + m_items.insert(it, item); + } + + // Delete all entries + void Clear(); + + size_t GetCount() const + { + return m_items.size(); + } + + wxPGChoiceEntry* Item( unsigned int i ) const + { + return (wxPGChoiceEntry*) m_items[i]; + } + + void DecRef() + { + m_refCount--; + wxASSERT( m_refCount >= 0 ); + if ( m_refCount == 0 ) + delete this; + } + +private: + wxArrayPtrVoid m_items; + + // So that multiple properties can use the same set + int m_refCount; + + virtual ~wxPGChoicesData(); +}; + +#define wxPGChoicesEmptyData ((wxPGChoicesData*)NULL) + +#endif // SWIG + + +/** @class wxPGChoices + + Helper class for managing choices of wxPropertyGrid properties. + Each entry can have label, value, bitmap, text colour, and background + colour. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGChoices +{ +public: + typedef long ValArrItem; + + /** Default constructor. */ + wxPGChoices() + { + Init(); + } + + /** Copy constructor. */ + wxPGChoices( const wxPGChoices& a ) + { + if ( a.m_data != wxPGChoicesEmptyData ) + { + m_data = a.m_data; + m_data->m_refCount++; + } + } + + /** Constructor. */ + wxPGChoices( const wxChar** labels, const long* values = NULL ) + { + Init(); + Set(labels,values); + } + + /** Constructor. */ + wxPGChoices( const wxArrayString& labels, + const wxArrayInt& values = wxArrayInt() ) + { + Init(); + Set(labels,values); + } + + /** Simple interface constructor. */ + wxPGChoices( wxPGChoicesData* data ) + { + wxASSERT(data); + m_data = data; + data->m_refCount++; + } + + /** Destructor. */ + ~wxPGChoices() + { + Free(); + } + + /** + Adds to current. + + If did not have own copies, creates them now. If was empty, identical + to set except that creates copies. + */ + void Add( const wxChar** labels, const ValArrItem* values = NULL ); + + /** Version that works with wxArrayString. */ + void Add( const wxArrayString& arr, const ValArrItem* values = NULL ); + + /** Version that works with wxArrayString and wxArrayInt. */ + void Add( const wxArrayString& arr, const wxArrayInt& arrint ); + + /** Adds single item. */ + wxPGChoiceEntry& Add( const wxString& label, + int value = wxPG_INVALID_VALUE ); + + /** Adds a single item, with bitmap. */ + wxPGChoiceEntry& Add( const wxString& label, + const wxBitmap& bitmap, + int value = wxPG_INVALID_VALUE ); + + /** Adds a single item with full entry information. */ + wxPGChoiceEntry& Add( const wxPGChoiceEntry& entry ) + { + return Insert(entry, -1); + } + + /** Adds single item. */ + wxPGChoiceEntry& AddAsSorted( const wxString& label, + int value = wxPG_INVALID_VALUE ); + + void Assign( const wxPGChoices& a ) + { + AssignData(a.m_data); + } + + void AssignData( wxPGChoicesData* data ); + + /** Delete all choices. */ + void Clear() + { + if ( m_data != wxPGChoicesEmptyData ) + m_data->Clear(); + } + + void EnsureData() + { + if ( m_data == wxPGChoicesEmptyData ) + m_data = new wxPGChoicesData(); + } + + /** Gets a unsigned number identifying this list. */ + wxPGChoicesId GetId() const { return (wxPGChoicesId) m_data; }; + + const wxString& GetLabel( size_t ind ) const + { + wxASSERT( ind >= 0 && ind < GetCount() ); + return Item(ind).GetText(); + } + + size_t GetCount () const + { + wxASSERT_MSG( m_data, "When checking if wxPGChoices is valid, " + "use IsOk() instead of GetCount()" ); + return m_data->GetCount(); + } + + int GetValue( size_t ind ) const { return Item(ind).GetValue(); } + + /** Returns array of values matching the given strings. Unmatching strings + result in wxPG_INVALID_VALUE entry in array. + */ + wxArrayInt GetValuesForStrings( const wxArrayString& strings ) const; + + /** Returns array of indices matching given strings. Unmatching strings + are added to 'unmatched', if not NULL. + */ + wxArrayInt GetIndicesForStrings( const wxArrayString& strings, + wxArrayString* unmatched = NULL ) const; + + /** Returns true if choices in general are likely to have values + (depens on that all entries have values or none has) + */ + bool HasValues() const; + + bool HasValue( unsigned int i ) const + { return (m_data->GetCount() > i && m_data->Item(i)->HasValue()); } + + int Index( const wxString& str ) const; + int Index( int val ) const; + + /** Inserts single item. */ + wxPGChoiceEntry& Insert( const wxString& label, + int index, + int value = wxPG_INVALID_VALUE ); + + /** Inserts a single item with full entry information. */ + wxPGChoiceEntry& Insert( const wxPGChoiceEntry& entry, int index ); + + /** Returns false if this is a constant empty set of choices, + which should not be modified. + */ + bool IsOk() const + { + return ( m_data != wxPGChoicesEmptyData ); + } + + const wxPGChoiceEntry& Item( unsigned int i ) const + { + wxASSERT( IsOk() ); + return *m_data->Item(i); + } + + wxPGChoiceEntry& Item( unsigned int i ) + { + wxASSERT( IsOk() ); + return *m_data->Item(i); + } + + /** Removes count items starting at position nIndex. */ + void RemoveAt(size_t nIndex, size_t count = 1); + +#ifndef SWIG + /** Does not create copies for itself. */ + void Set( const wxChar** labels, const long* values = NULL ) + { + Free(); + Add(labels,values); + } + + /** Version that works with wxArrayString. + TODO: Deprecate this. + */ + void Set( wxArrayString& arr, const long* values = (const long*) NULL ) + { + Free(); + Add(arr,values); + } +#endif // SWIG + + /** Version that works with wxArrayString and wxArrayInt. */ + void Set( const wxArrayString& labels, + const wxArrayInt& values = wxArrayInt() ) + { + Free(); + if ( &values ) + Add(labels,values); + else + Add(labels); + } + + // Creates exclusive copy of current choices + void SetExclusive() + { + if ( m_data->m_refCount != 1 ) + { + wxPGChoicesData* data = new wxPGChoicesData(); + data->CopyDataFrom(m_data); + Free(); + m_data = data; + } + } + + // Returns data, increases refcount. + wxPGChoicesData* GetData() + { + wxASSERT( m_data->m_refCount != 0xFFFFFFF ); + m_data->m_refCount++; + return m_data; + } + + // Returns plain data ptr - no refcounting stuff is done. + wxPGChoicesData* GetDataPtr() const { return m_data; } + + // Changes ownership of data to you. + wxPGChoicesData* ExtractData() + { + wxPGChoicesData* data = m_data; + m_data = wxPGChoicesEmptyData; + return data; + } + + wxArrayString GetLabels() const; + +#ifndef SWIG + void operator= (const wxPGChoices& a) + { + AssignData(a.m_data); + } + + wxPGChoiceEntry& operator[](unsigned int i) + { + return Item(i); + } + + const wxPGChoiceEntry& operator[](unsigned int i) const + { + return Item(i); + } + +protected: + wxPGChoicesData* m_data; + + void Init(); + void Free(); +#endif // !SWIG +}; + +inline bool wxPGProperty::SetChoices( const wxArrayString& labels, + const wxArrayInt& values ) +{ + wxPGChoices chs(labels, values); + return SetChoices(chs); +} + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_PROPERTY_H_ diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h new file mode 100644 index 0000000000..2666cee1b4 --- /dev/null +++ b/include/wx/propgrid/propgrid.h @@ -0,0 +1,2222 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/propgrid.h +// Purpose: wxPropertyGrid +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_PROPGRID_H_ +#define _WX_PROPGRID_PROPGRID_H_ + +#include "wx/dcclient.h" +#include "wx/scrolwin.h" +#include "wx/tooltip.h" +#include "wx/datetime.h" + +#include "wx/propgrid/property.h" +#include "wx/propgrid/propgridiface.h" + + +#ifndef SWIG +extern WXDLLIMPEXP_PROPGRID const wxChar *wxPropertyGridNameStr; +#endif + + +// ----------------------------------------------------------------------- +// Global variables +// ----------------------------------------------------------------------- + +#ifndef SWIG + +// This is required for sharing common global variables. +class WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass +{ +public: + + wxPGGlobalVarsClass(); + ~wxPGGlobalVarsClass(); + + // Used by advprops, but here to make things easier. + wxString m_pDefaultImageWildcard; + + // Map of editor class instances (keys are name string). + wxPGHashMapS2P m_mapEditorClasses; + +#if wxUSE_VALIDATORS + wxArrayPtrVoid m_arrValidators; // These wxValidators need to be freed +#endif + + wxPGHashMapS2P m_dictPropertyClassInfo; // PropertyName -> ClassInfo + + wxPGChoices* m_fontFamilyChoices; + + // Replace with your own to affect all properties using default renderer. + wxPGCellRenderer* m_defaultRenderer; + + // These are for fast variant type comparison + wxPGVariantDataClassInfo wxVariantClassInfo_long; + wxPGVariantDataClassInfo wxVariantClassInfo_string; + wxPGVariantDataClassInfo wxVariantClassInfo_double; + wxPGVariantDataClassInfo wxVariantClassInfo_bool; + wxPGVariantDataClassInfo wxVariantClassInfo_arrstring; + wxPGVariantDataClassInfo wxVariantClassInfo_wxobject; + wxPGVariantDataClassInfo wxVariantClassInfo_list; + wxPGVariantDataClassInfo wxVariantClassInfo_wxColour; +#if wxUSE_DATETIME + wxPGVariantDataClassInfo wxVariantClassInfo_datetime; +#endif + + wxPGChoices m_boolChoices; + + wxVariant m_vEmptyString; + wxVariant m_vZero; + wxVariant m_vMinusOne; + wxVariant m_vTrue; + wxVariant m_vFalse; + + // Cached constant strings + wxPGCachedString m_strMin; + wxPGCachedString m_strMax; + wxPGCachedString m_strUnits; + wxPGCachedString m_strInlineHelp; + + // If true then some things are automatically translated + bool m_autoGetTranslation; + + // > 0 if errors cannot or should not be shown in statusbar etc. + int m_offline; + + int m_extraStyle; // global extra style + +#ifdef __WXDEBUG__ + int m_warnings; +#endif + + int HasExtraStyle( int style ) const { return (m_extraStyle & style); } +}; + +extern WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass* wxPGGlobalVars; + +#define wxPGIsVariantType(VARIANT, T) \ + ((VARIANT).GetData() && \ + typeid(*(VARIANT).GetData()) == *wxPGGlobalVars->wxVariantClassInfo_##T) + +#define wxPGIsVariantClassInfo(CLASSINFO, T) \ + (*CLASSINFO == *wxPGGlobalVars->wxVariantClassInfo_##T) + +#define wxPGVariant_EmptyString (wxPGGlobalVars->m_vEmptyString) +#define wxPGVariant_Zero (wxPGGlobalVars->m_vZero) +#define wxPGVariant_MinusOne (wxPGGlobalVars->m_vMinusOne) +#define wxPGVariant_True (wxPGGlobalVars->m_vTrue) +#define wxPGVariant_False (wxPGGlobalVars->m_vFalse) + +#define wxPGVariant_Bool(A) (A?wxPGVariant_True:wxPGVariant_False) + +#define wxPGVariantAssign(A, B) A = B + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +/** @section propgrid_window_styles wxPropertyGrid Window Styles + + SetWindowStyleFlag method can be used to modify some of these at run-time. + @{ +*/ +enum wxPG_WINDOW_STYLES +{ + +/** This will cause Sort() automatically after an item is added. + When inserting a lot of items in this mode, it may make sense to + use Freeze() before operations and Thaw() afterwards to increase + performance. +*/ +wxPG_AUTO_SORT = 0x00000010, + +/** Categories are not initially shown (even if added). + IMPORTANT NOTE: If you do not plan to use categories, then this + style will waste resources. + This flag can also be changed using wxPropertyGrid::EnableCategories method. +*/ +wxPG_HIDE_CATEGORIES = 0x00000020, + +/* This style combines non-categoric mode and automatic sorting. +*/ +wxPG_ALPHABETIC_MODE = (wxPG_HIDE_CATEGORIES|wxPG_AUTO_SORT), + +/** Modified values are shown in bold font. Changing this requires Refresh() + to show changes. +*/ +wxPG_BOLD_MODIFIED = 0x00000040, + +/** When wxPropertyGrid is resized, splitter moves to the center. This + behavior stops once the user manually moves the splitter. +*/ +wxPG_SPLITTER_AUTO_CENTER = 0x00000080, + +/** Display tooltips for cell text that cannot be shown completely. If + wxUSE_TOOLTIPS is 0, then this doesn't have any effect. +*/ +wxPG_TOOLTIPS = 0x00000100, + +/** Disables margin and hides all expand/collapse buttons that would appear + outside the margin (for sub-properties). Toggling this style automatically + expands all collapsed items. +*/ +wxPG_HIDE_MARGIN = 0x00000200, + +/** This style prevents user from moving the splitter. +*/ +wxPG_STATIC_SPLITTER = 0x00000400, + +/** Combination of other styles that make it impossible for user to modify + the layout. +*/ +wxPG_STATIC_LAYOUT = (wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER), + +/** Disables wxTextCtrl based editors for properties which + can be edited in another way. + + Equals calling wxPropertyGrid::LimitPropertyEditing for all added + properties. +*/ +wxPG_LIMITED_EDITING = 0x00000800, + +/** wxPropertyGridManager only: Show toolbar for mode and page selection. */ +wxPG_TOOLBAR = 0x00001000, + +/** wxPropertyGridManager only: Show adjustable text box showing description + or help text, if available, for currently selected property. +*/ +wxPG_DESCRIPTION = 0x00002000 + +}; + +enum wxPG_EX_WINDOW_STYLES +{ + +/** + NOTE: wxPG_EX_xxx are extra window styles and must be set using + SetExtraStyle() member function. + + Speeds up switching to wxPG_HIDE_CATEGORIES mode. Initially, if + wxPG_HIDE_CATEGORIES is not defined, the non-categorized data storage is + not activated, and switching the mode first time becomes somewhat slower. + wxPG_EX_INIT_NOCAT activates the non-categorized data storage right away. + IMPORTANT NOTE: If you do plan not switching to non-categoric mode, or if + you don't plan to use categories at all, then using this style will result + in waste of resources. + +*/ +wxPG_EX_INIT_NOCAT = 0x00001000, + +/** Extended window style that sets wxPropertyGridManager toolbar to not + use flat style. +*/ +wxPG_EX_NO_FLAT_TOOLBAR = 0x00002000, + +/** Shows alphabetic/categoric mode buttons from toolbar. +*/ +wxPG_EX_MODE_BUTTONS = 0x00008000, + +/** Show property help strings as tool tips instead as text on the status bar. + You can set the help strings using SetPropertyHelpString member function. +*/ +wxPG_EX_HELP_AS_TOOLTIPS = 0x00010000, + +/** Prevent TAB from focusing to wxButtons. This behavior was default + in version 1.2.0 and earlier. + NOTE! Tabbing to button doesn't work yet. Problem seems to be that on wxMSW + atleast the button doesn't properly propagate key events (yes, I'm using + wxWANTS_CHARS). +*/ +//wxPG_EX_NO_TAB_TO_BUTTON = 0x00020000, + +/** Allows relying on native double-buffering. +*/ +wxPG_EX_NATIVE_DOUBLE_BUFFERING = 0x00080000, + +/** Set this style to let user have ability to set values of properties to + unspecified state. Same as setting wxPG_PROP_AUTO_UNSPECIFIED for + all properties. +*/ +wxPG_EX_AUTO_UNSPECIFIED_VALUES = 0x00200000, + +/** + If this style is used, built-in attributes (such as wxPG_FLOAT_PRECISION + and wxPG_STRING_PASSWORD) are not stored into property's attribute storage + (thus they are not readable). + + Note that this option is global, and applies to all wxPG property + containers. +*/ +wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES = 0x00400000, + +/** + With this style Validators on properties will work same as in + wxPropertyGrid 1.2. +*/ +wxPG_EX_LEGACY_VALIDATORS = 0x00800000, + +/** Hides page selection buttons from toolbar. +*/ +wxPG_EX_HIDE_PAGE_BUTTONS = 0x01000000 + +}; + +/** Combines various styles. +*/ +#define wxPG_DEFAULT_STYLE (0) + +/** Combines various styles. +*/ +#define wxPGMAN_DEFAULT_STYLE (0) + +/** @} +*/ + +// ----------------------------------------------------------------------- + +// +// Ids for sub-controls +// NB: It should not matter what these are. +#define wxPG_SUBID1 2 +#define wxPG_SUBID2 3 +#define wxPG_SUBID_TEMP1 4 + +// ----------------------------------------------------------------------- + +/** @class wxPGCommonValue + + wxPropertyGrid stores information about common values in these + records. + + NB: Common value feature is not complete, and thus not mentioned in + documentation. +*/ +class WXDLLIMPEXP_PROPGRID wxPGCommonValue +{ +public: + + wxPGCommonValue( const wxString& label, wxPGCellRenderer* renderer ) + { + m_label = label; + m_renderer = renderer; + renderer->IncRef(); + } + virtual ~wxPGCommonValue() + { + m_renderer->DecRef(); + } + + virtual wxString GetEditableText() const { return m_label; } + const wxString& GetLabel() const { return m_label; } + wxPGCellRenderer* GetRenderer() const { return m_renderer; } + +protected: + wxString m_label; + wxPGCellRenderer* m_renderer; +}; + +// ----------------------------------------------------------------------- + +/** @section propgrid_vfbflags wxPropertyGrid Validation Failure Behavior Flags + @{ +*/ + +enum wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS +{ + +/** Prevents user from leaving property unless value is valid. If this + behavior flag is not used, then value change is instead cancelled. +*/ +wxPG_VFB_STAY_IN_PROPERTY = 0x01, + +/** Calls wxBell() on validation failure. +*/ +wxPG_VFB_BEEP = 0x02, + +/** Cell with invalid value will be marked (with red colour). +*/ +wxPG_VFB_MARK_CELL = 0x04, + +/** Display customizable text message explaining the situation. +*/ +wxPG_VFB_SHOW_MESSAGE = 0x08, + +/** Defaults. */ +wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP, + +/** Only used internally. */ +wxPG_VFB_UNDEFINED = 0x80 + +}; + +/** @} +*/ + +typedef wxByte wxPGVFBFlags; + +/** @class wxPGValidationInfo + + Used to convey validation information to and from functions that + actually perform validation. +*/ +struct wxPGValidationInfo +{ + /** Value to be validated. + */ + wxVariant* m_pValue; + + /** Message displayed on validation failure. + */ + wxString m_failureMessage; + + /** Validation failure behavior. Use wxPG_VFB_XXX flags. + */ + wxPGVFBFlags m_failureBehavior; + + wxPGVFBFlags GetFailureBehavior() const { return m_failureBehavior; } + + void SetFailureBehavior(wxPGVFBFlags failureBehavior) + { m_failureBehavior = failureBehavior; } + + const wxString& GetFailureMessage() const { return m_failureMessage; } + + void SetFailureMessage(const wxString& message) + { m_failureMessage = message; } +}; + +// ----------------------------------------------------------------------- + +/** @section propgrid_pgactions wxPropertyGrid Action Identifiers + + These are used with wxPropertyGrid::AddActionTrigger() and + wxPropertyGrid::ClearActionTriggers(). + @{ +*/ + +enum wxPG_KEYBOARD_ACTIONS +{ + wxPG_ACTION_INVALID = 0, + wxPG_ACTION_NEXT_PROPERTY, + wxPG_ACTION_PREV_PROPERTY, + wxPG_ACTION_EXPAND_PROPERTY, + wxPG_ACTION_COLLAPSE_PROPERTY, + wxPG_ACTION_CANCEL_EDIT, + wxPG_ACTION_CUT, + wxPG_ACTION_COPY, + wxPG_ACTION_PASTE, + wxPG_ACTION_MAX +}; + +/** @} +*/ + +// ----------------------------------------------------------------------- + + +// wxPropertyGrid::DoSelectProperty flags (selFlags) + +// Focuses to created editor +#define wxPG_SEL_FOCUS 0x01 +// Forces deletion and recreation of editor +#define wxPG_SEL_FORCE 0x02 +// For example, doesn't cause EnsureVisible +#define wxPG_SEL_NONVISIBLE 0x04 +// Do not validate editor's value before selecting +#define wxPG_SEL_NOVALIDATE 0x08 +// Property being deselected is about to be deleted +#define wxPG_SEL_DELETING 0x10 +// Property's values was set to unspecified by the user +#define wxPG_SEL_SETUNSPEC 0x20 +// Property's event handler changed the value +#define wxPG_SEL_DIALOGVAL 0x40 + + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +// Internal flags +#define wxPG_FL_INITIALIZED 0x0001 +// Set when creating editor controls if it was clicked on. +#define wxPG_FL_ACTIVATION_BY_CLICK 0x0002 +#define wxPG_FL_DONT_CENTER_SPLITTER 0x0004 +#define wxPG_FL_FOCUSED 0x0008 +#define wxPG_FL_MOUSE_CAPTURED 0x0010 +#define wxPG_FL_MOUSE_INSIDE 0x0020 +#define wxPG_FL_VALUE_MODIFIED 0x0040 +// don't clear background of m_wndEditor +#define wxPG_FL_PRIMARY_FILLS_ENTIRE 0x0080 +// currently active editor uses custom image +#define wxPG_FL_CUR_USES_CUSTOM_IMAGE 0x0100 +// cell colours override selection colours for selected cell +#define wxPG_FL_CELL_OVERRIDES_SEL 0x0200 +#define wxPG_FL_SCROLLED 0x0400 +// set when all added/inserted properties get hideable flag +#define wxPG_FL_ADDING_HIDEABLES 0x0800 +// Disables showing help strings on statusbar. +#define wxPG_FL_NOSTATUSBARHELP 0x1000 +// Marks that we created the state, so we have to destroy it too. +#define wxPG_FL_CREATEDSTATE 0x2000 +// Set if scrollbar's existence was detected in last onresize. +#define wxPG_FL_SCROLLBAR_DETECTED 0x4000 +// Set if wxPGMan requires redrawing of description text box. +#define wxPG_FL_DESC_REFRESH_REQUIRED 0x8000 +// Set if contained in wxPropertyGridManager +#define wxPG_FL_IN_MANAGER 0x00020000 +// Set after wxPropertyGrid is shown in its initial good size +#define wxPG_FL_GOOD_SIZE_SET 0x00040000 +// Next navigation key event will get ignored +#define wxPG_FL_IGNORE_NEXT_NAVKEY 0x00080000 +// Set when in SelectProperty. +#define wxPG_FL_IN_SELECT_PROPERTY 0x00100000 +// Set when help string is shown in status bar +#define wxPG_FL_STRING_IN_STATUSBAR 0x00200000 +// Splitter position has been custom-set by the user +#define wxPG_FL_SPLITTER_PRE_SET 0x00400000 +// Validation failed. Clear on modify event. +#define wxPG_FL_VALIDATION_FAILED 0x00800000 +// Set if selected is fully painted (ie. both image and text) +//#define wxPG_FL_SELECTED_IS_FULL_PAINT 0x01000000 +// Set after page has been inserted to manager +#define wxPG_MAN_FL_PAGE_INSERTED 0x02000000 +// Active editor control is abnormally large +#define wxPG_FL_ABNORMAL_EDITOR 0x04000000 +// Recursion guard for OnCustomEditorEvent +#define wxPG_FL_IN_ONCUSTOMEDITOREVENT 0x08000000 +#define wxPG_FL_VALUE_CHANGE_IN_EVENT 0x10000000 +// Editor control width should not change on resize +#define wxPG_FL_FIXED_WIDTH_EDITOR 0x20000000 +// Width of panel can be different than width of grid +#define wxPG_FL_HAS_VIRTUAL_WIDTH 0x40000000 +// Prevents RecalculateVirtualSize re-entrancy +#define wxPG_FL_RECALCULATING_VIRTUAL_SIZE 0x80000000 + +#endif // #ifndef SWIG + +#if !defined(__wxPG_SOURCE_FILE__) && !defined(SWIG) + // Reduce compile time, but still include in user app + #include "wx/propgrid/props.h" +#endif + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGrid + + wxPropertyGrid is a specialized grid for editing properties + such as strings, numbers, flagsets, fonts, and colours. wxPropertySheet + used to do the very same thing, but it hasn't been updated for a while + and it is currently deprecated. + + Please note that most member functions are inherited and as such not + documented on this page. This means you will probably also want to read + wxPropertyGridInterface class reference. + + See also @ref overview_propgrid. + + @section propgrid_window_styles_ Window Styles + + See @ref propgrid_window_styles. + + @section propgrid_event_handling Event Handling + + To process input from a propertygrid control, use these event handler + macros to direct input to member functions that take a wxPropertyGridEvent + argument. + + @beginEventTable{wxPropertyGridEvent} + @event{EVT_PG_SELECTED (id, func)} + Respond to wxEVT_PG_SELECTED event, generated when property value + has been changed by user. + @event{EVT_PG_CHANGING(id, func)} + Respond to wxEVT_PG_CHANGING event, generated when property value + is about to be changed by user. Use wxPropertyGridEvent::GetValue() + to take a peek at the pending value, and wxPropertyGridEvent::Veto() + to prevent change from taking place, if necessary. + @event{EVT_PG_HIGHLIGHTED(id, func)} + Respond to wxEVT_PG_HIGHLIGHTED event, which occurs when mouse + moves over a property. Event's property is NULL if hovered area does + not belong to any property. + @event{EVT_PG_RIGHT_CLICK(id, func)} + Respond to wxEVT_PG_RIGHT_CLICK event, which occurs when property is + clicked on with right mouse button. + @event{EVT_PG_DOUBLE_CLICK(id, func)} + Respond to wxEVT_PG_DOUBLE_CLICK event, which occurs when property is + double-clicked onwith left mouse button. + @event{EVT_PG_ITEM_COLLAPSED(id, func)} + Respond to wxEVT_PG_ITEM_COLLAPSED event, generated when user collapses + a property or category.. + @event{EVT_PG_ITEM_EXPANDED(id, func)} + Respond to wxEVT_PG_ITEM_EXPANDED event, generated when user expands + a property or category.. + @endEventTable + + @remarks + + - Use Freeze() and Thaw() respectively to disable and enable drawing. This + will also delay sorting etc. miscellaneous calculations to the last + possible moment. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID + wxPropertyGrid : public wxScrolledWindow, public wxPropertyGridInterface +{ + friend class wxPropertyGridPageState; + friend class wxPropertyGridInterface; + friend class wxPropertyGridManager; + friend class wxPGCanvas; + +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxPropertyGrid) +#endif +public: + +#ifdef SWIG + %pythonAppend wxPropertyGrid { + self._setOORInfo(self) + self.DoDefaultTypeMappings() + self.edited_objects = {} + self.DoDefaultValueTypeMappings() + if not hasattr(self.__class__,'_vt2setter'): + self.__class__._vt2setter = {} + } + %pythonAppend wxPropertyGrid() "" + + wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPG_DEFAULT_STYLE, + const wxChar* name = wxPyPropertyGridNameStr ); + %RenameCtor(PrePropertyGrid, wxPropertyGrid()); +#else + + /** + Two step constructor. + + Call Create when this constructor is called to build up the + wxPropertyGrid + */ + wxPropertyGrid(); + + /** The default constructor. The styles to be used are styles valid for + the wxWindow and wxScrolledWindow. + @see @link wndflags Additional Window Styles@endlink + */ + wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPG_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridNameStr ); + + /** Destructor */ + virtual ~wxPropertyGrid(); +#endif + + /** Adds given key combination to trigger given action. + @param action + Which action to trigger. See @link pgactions List of list of + wxPropertyGrid actions@endlink. + */ + void AddActionTrigger( int action, int keycode, int modifiers = 0 ); + + /** + This static function enables or disables automatic use of + wxGetTranslation for following strings: wxEnumProperty list labels, + wxFlagsProperty sub-property labels. + + Default is false. + */ + static void AutoGetTranslation( bool enable ); + + /** + Changes value of a property, as if from an editor. + + Use this instead of SetPropertyValue() if you need the value to run + through validation process, and also send the property change event. + + @return + Returns true if value was successfully changed. + */ + bool ChangePropertyValue( wxPGPropArg id, wxVariant newValue ); + + /** + Centers the splitter. + + If argument is true, automatic splitter centering is enabled (only + applicapple if style wxPG_SPLITTER_AUTO_CENTER was defined). + */ + void CenterSplitter( bool enable_auto_centering = false ); + + /** Deletes all properties. + */ + virtual void Clear(); + + /** Clears action triggers for given action. + @param action + Which action to trigger. See @link pgactions List of list of + wxPropertyGrid actions@endlink. + */ + void ClearActionTriggers( int action ); + + /** Forces updating the value of property from the editor control. + + Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using + ProcessEvent, meaning your event handlers will be called immediately. + + @return + Returns true if anything was changed. + */ + virtual bool CommitChangesFromEditor( wxUint32 flags = 0 ); + + /** + Two step creation. + + Whenever the control is created without any parameters, use Create to + actually create it. Don't access the control's public methods before + this is called @see @link wndflags Additional Window Styles@endlink + */ + bool Create( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPG_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridNameStr ); + + /** + Call when editor widget's contents is modified. + + For example, this is called when changes text in wxTextCtrl (used in + wxStringProperty and wxIntProperty). + + @remarks + This function should only be called by custom properties. + + @see wxPGProperty::OnEvent() + */ + void EditorsValueWasModified() { m_iFlags |= wxPG_FL_VALUE_MODIFIED; } + + /** Reverse of EditorsValueWasModified(). + + @remarks + This function should only be called by custom properties. + */ + void EditorsValueWasNotModified() + { + m_iFlags &= ~(wxPG_FL_VALUE_MODIFIED); + } + + /** + Enables or disables (shows/hides) categories according to parameter + enable. + */ + bool EnableCategories( bool enable ); + + /** Scrolls and/or expands items to ensure that the given item is visible. + Returns true if something was actually done. + */ + bool EnsureVisible( wxPGPropArg id ); + + /** + Reduces column sizes to minimum possible that contents are still + visibly (naturally some margin space will be applied as well). + + @return + Minimum size for the grid to still display everything. + + @remarks + Does not work well with wxPG_SPLITTER_AUTO_CENTER window style. + + This function only works properly if grid size prior to call was already + fairly large. + + Note that you can also get calculated column widths by calling + GetState->GetColumnWidth() immediately after this function returns. + */ + wxSize FitColumns() + { + wxSize sz = m_pState->DoFitColumns(); + return sz; + } + + /** + Returns wxWindow that the properties are painted on, and which should + be used as the parent for editor controls. + */ + wxPanel* GetPanel() const + { + return m_canvas; + } + + /** Returns current category caption background colour. */ + wxColour GetCaptionBackgroundColour() const { return m_colCapBack; } + + wxFont& GetCaptionFont() { return m_captionFont; } + + const wxFont& GetCaptionFont() const { return m_captionFont; } + + /** Returns current category caption text colour. */ + wxColour GetCaptionForegroundColour() const { return m_colCapFore; } + + /** Returns current cell background colour. */ + wxColour GetCellBackgroundColour() const { return m_colPropBack; } + + /** Returns current cell text colour when disabled. */ + wxColour GetCellDisabledTextColour() const { return m_colDisPropFore; } + + /** Returns current cell text colour. */ + wxColour GetCellTextColour() const { return m_colPropFore; } + + /** Returns number of columns on current page. */ + int GetColumnCount() const + { + return m_pState->m_colWidths.size(); + } + + /** Returns colour of empty space below properties. */ + wxColour GetEmptySpaceColour() const { return m_colEmptySpace; } + + /** Returns height of highest characters of used font. */ + int GetFontHeight() const { return m_fontHeight; } + + /** Returns pointer to itself. Dummy function that enables same kind + of code to use wxPropertyGrid and wxPropertyGridManager. + */ + wxPropertyGrid* GetGrid() { return this; } + + /** Returns rectangle of custom paint image. + */ + wxRect GetImageRect( wxPGProperty* p, int item ) const; + + /** Returns size of the custom paint image in front of property. + If no argument is given, returns preferred size. + */ + wxSize GetImageSize( wxPGProperty* p = NULL, int item = -1 ) const; + + //@{ + /** Returns last item which could be iterated using given flags. + @param flags + See @ref propgrid_iterator_flags. + */ + wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) + { + return m_pState->GetLastItem(flags); + } + + const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const + { + return m_pState->GetLastItem(flags); + } + //@} + + /** Returns colour of lines between cells. */ + wxColour GetLineColour() const { return m_colLine; } + + /** Returns background colour of margin. */ + wxColour GetMarginColour() const { return m_colMargin; } + + /** Returns cell background colour of a property. */ + wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const; + + /** Returns cell background colour of a property. */ + wxColour GetPropertyTextColour( wxPGPropArg id ) const; + + /** Returns "root property". It does not have name, etc. and it is not + visible. It is only useful for accessing its children. + */ + wxPGProperty* GetRoot() const { return m_pState->m_properties; } + + /** Returns height of a single grid row (in pixels). */ + int GetRowHeight() const { return m_lineHeight; } + + /** Returns currently selected property. */ + wxPGProperty* GetSelectedProperty () const { return GetSelection(); } + + /** Returns currently selected property. */ + wxPGProperty* GetSelection() const + { + return m_selected; + } + + /** Returns current selection background colour. */ + wxColour GetSelectionBackgroundColour() const { return m_colSelBack; } + + /** Returns current selection text colour. */ + wxColour GetSelectionForegroundColour() const { return m_colSelFore; } + + /** Returns current splitter x position. */ + int GetSplitterPosition() const + { return m_pState->DoGetSplitterPosition(0); } + + /** Returns wxTextCtrl active in currently selected property, if any. Takes + into account wxOwnerDrawnComboBox. + */ + wxTextCtrl* GetEditorTextCtrl() const; + + wxPGValidationInfo& GetValidationInfo() + { + return m_validationInfo; + } + + /** Returns current vertical spacing. */ + int GetVerticalSpacing() const { return (int)m_vspacing; } + + /** Returns true if editor's value was marked modified. + */ + bool IsEditorsValueModified() const + { return ( m_iFlags & wxPG_FL_VALUE_MODIFIED ) ? true : false; } + + /** Returns information about arbitrary position in the grid. + + For wxPropertyGridHitTestResult definition, see + wxPropertyGridPageState::HitTest(). + */ + wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; + + /** Returns true if any property has been modified by the user. */ + bool IsAnyModified() const { return (m_pState->m_anyModified>0); } + + /** + Returns true if updating is frozen (ie Freeze() called but not yet + Thaw() ). + */ + bool IsFrozen() const { return (m_frozen>0)?true:false; } + + /** Redraws given property. + */ + virtual void RefreshProperty( wxPGProperty* p ); + +#ifndef SWIG + /** Registers a new editor class. + @return + Pointer to the editor class instance that should be used. + */ + static wxPGEditor* RegisterEditorClass( wxPGEditor* editor, + const wxString& name, + bool noDefCheck = false ); +#endif + + /** Resets all colours to the original system values. + */ + void ResetColours(); + + /** + Selects a property. + Editor widget is automatically created, but not focused unless focus is + true. This will generate wxEVT_PG_SELECT event. + @param id + Property to select. + @return + True if selection finished successfully. Usually only fails if + current value in editor is not valid. + @see wxPropertyGrid::Unselect + */ + bool SelectProperty( wxPGPropArg id, bool focus = false ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return DoSelectProperty(p,focus?wxPG_SEL_FOCUS:0); + } + + /** Changes keyboard shortcut to push the editor button. + @remarks + You can set default with keycode 0. Good value for the platform is + guessed, but don't expect it to be very accurate. + */ + void SetButtonShortcut( int keycode, + bool ctrlDown = false, + bool altDown = false ); + + /** Sets category caption background colour. */ + void SetCaptionBackgroundColour(const wxColour& col); + + /** Sets category caption text colour. */ + void SetCaptionTextColour(const wxColour& col); + + /** Sets default cell background colour - applies to property cells. + Note that appearance of editor widgets may not be affected. + */ + void SetCellBackgroundColour(const wxColour& col); + + /** Sets cell text colour for disabled properties. + */ + void SetCellDisabledTextColour(const wxColour& col); + + /** Sets default cell text colour - applies to property name and value text. + Note that appearance of editor widgets may not be affected. + */ + void SetCellTextColour(const wxColour& col); + + /** Set number of columns (2 or more). + */ + void SetColumnCount( int colCount ) + { + m_pState->SetColumnCount(colCount); + Refresh(); + } + + /** + Sets the 'current' category - Append will add non-category properties + under it. + */ + void SetCurrentCategory( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG() + wxPropertyCategory* pc = (wxPropertyCategory*)p; +#ifdef __WXDEBUG__ + if ( pc ) wxASSERT( pc->IsCategory() ); +#endif + m_pState->m_currentCategory = pc; + } + + /** Sets colour of empty space below properties. */ + void SetEmptySpaceColour(const wxColour& col); + + /** Sets colour of lines between cells. */ + void SetLineColour(const wxColour& col); + + /** Sets background colour of margin. */ + void SetMarginColour(const wxColour& col); + + /** Sets property attribute for all applicapple properties. + Be sure to use this method only after all properties have been + added to the grid. + */ + void SetPropertyAttributeAll( const wxString& attrName, wxVariant value ); + + /** Sets background colour of property and all its children. Colours of + captions are not affected. Background brush cache is optimized for often + set colours to be set last. + */ + void SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& col ); + + /** Resets text and background colours of given property. + */ + void SetPropertyColoursToDefault( wxPGPropArg id ); + + /** Sets text colour of property and all its children. + */ + void SetPropertyTextColour( wxPGPropArg id, + const wxColour& col, + bool recursively = true ); + + /** + Sets selection background colour - applies to selected property name + background. + */ + void SetSelectionBackgroundColour(const wxColour& col); + + /** + Sets selection foreground colour - applies to selected property name + text. + */ + void SetSelectionTextColour(const wxColour& col); + + /** Sets x coordinate of the splitter. + @remarks + Splitter position cannot exceed grid size, and therefore setting it + during form creation may fail as initial grid size is often smaller + than desired splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int newxpos, int col = 0 ) + { + DoSetSplitterPosition_(newxpos, true, col); + m_iFlags |= wxPG_FL_SPLITTER_PRE_SET; + } + + /** Set virtual width for this particular page. Width -1 indicates that the + virtual width should be disabled. */ + void SetVirtualWidth( int width ); + + /** Sets name of a property. + @param id + Name or pointer of property which name to change. + @param newname + New name. + */ + void SetPropertyName( wxPGPropArg id, const wxString& newname ) + { + wxPG_PROP_ARG_CALL_PROLOG() + DoSetPropertyName( p, newname ); + } + + /** Moves splitter as left as possible, while still allowing all + labels to be shown in full. + @param subProps + If false, will still allow sub-properties (ie. properties which + parent is not root or category) to be cropped. + */ + void SetSplitterLeft( bool subProps = false ) + { + m_pState->SetSplitterLeft(subProps); + } + + /** Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font + height. Value of 2 should be default on most platforms. + @remarks + On wxMSW, wxComboBox, when used as property editor widget, will spill + out with anything less than 3. + */ + void SetVerticalSpacing( int vspacing ) + { + m_vspacing = (unsigned char)vspacing; + CalculateFontAndBitmapStuff( vspacing ); + if ( !m_pState->m_itemsAdded ) Refresh(); + } + + /** Shows an brief error message that is related to a property. */ + void ShowPropertyError( wxPGPropArg id, const wxString& msg ) + { + wxPG_PROP_ARG_CALL_PROLOG() + DoShowPropertyError(p, msg); + } + + /** Sorts all items at all levels (except sub-properties). */ + void Sort(); + + /** Sorts children of a category. + */ + void SortChildren( wxPGPropArg id ); + + ///////////////////////////////////////////////////////////////// + // + // Following methods do not need to be (currently) documented + // + ///////////////////////////////////////////////////////////////// + + bool HasVirtualWidth() const + { return (m_iFlags & wxPG_FL_HAS_VIRTUAL_WIDTH) ? true : false; } + + const wxPGCommonValue* GetCommonValue( unsigned int i ) const + { + return (wxPGCommonValue*) m_commonValues[i]; + } + + /** Returns number of common values. + */ + unsigned int GetCommonValueCount() const + { + return m_commonValues.size(); + } + + /** Returns label of given common value. + */ + wxString GetCommonValueLabel( unsigned int i ) const + { + wxASSERT( GetCommonValue(i) ); + return GetCommonValue(i)->GetLabel(); + } + + /** + Returns index of common value that will truly change value to + unspecified. + */ + int GetUnspecifiedCommonValue() const { return m_cvUnspecified; } + + /** Set index of common value that will truly change value to unspecified. + Using -1 will set none to have such effect. + Default is 0. + */ + void SetUnspecifiedCommonValue( int index ) { m_cvUnspecified = index; } + + /** + Shortcut for creating dialog-caller button. Used, for example, by + wxFontProperty. + @remarks + This should only be called by properties. + */ + wxWindow* GenerateEditorButton( const wxPoint& pos, const wxSize& sz ); + + /** Fixes position of wxTextCtrl-like control (wxSpinCtrl usually + fits as one). Call after control has been created (but before + shown). + */ + void FixPosForTextCtrl( wxWindow* ctrl, + const wxPoint& offset = wxPoint(0, 0) ); + + /** Shortcut for creating text editor widget. + @param pos + Same as pos given for CreateEditor. + @param sz + Same as sz given for CreateEditor. + @param value + Initial text for wxTextCtrl. + @param secondary + If right-side control, such as button, also created, then create it + first and pass it as this parameter. + @param extraStyle + Extra style flags to pass for wxTextCtrl. + @remarks + Note that this should generally be called only by new classes derived + from wxPGProperty. + */ + wxWindow* GenerateEditorTextCtrl( const wxPoint& pos, + const wxSize& sz, + const wxString& value, + wxWindow* secondary, + int extraStyle = 0, + int maxLen = 0 ); + + /* Generates both textctrl and button. + */ + wxWindow* GenerateEditorTextCtrlAndButton( const wxPoint& pos, + const wxSize& sz, wxWindow** psecondary, int limited_editing, + wxPGProperty* property ); + + /** Generates position for a widget editor dialog box. + @param p + Property for which dialog is positioned. + @param sz + Known or over-approximated size of the dialog. + @return + Position for dialog. + */ + wxPoint GetGoodEditorDialogPosition( wxPGProperty* p, + const wxSize& sz ); + + // Converts escape sequences in src_str to newlines, + // tabs, etc. and copies result to dst_str. + static wxString& ExpandEscapeSequences( wxString& dst_str, + wxString& src_str ); + + // Converts newlines, tabs, etc. in src_str to escape + // sequences, and copies result to dst_str. + static wxString& CreateEscapeSequences( wxString& dst_str, + wxString& src_str ); + + /** + Returns rectangle that fully contains properties between and including + p1 and p2. + */ + wxRect GetPropertyRect( const wxPGProperty* p1, + const wxPGProperty* p2 ) const; + + /** Returns pointer to current active primary editor control (NULL if none). + + If editor uses clipper window, pointer is returned to the actual + editor, not the clipper. + */ + wxWindow* GetEditorControl() const; + + /** Adjusts given position if topCtrlWnd is child of clipper window. + */ + bool AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y ); + + wxWindow* GetPrimaryEditor() const + { + return GetEditorControl(); + } + + /** + Returns pointer to current active secondary editor control (NULL if + none). + */ + wxWindow* GetEditorControlSecondary() const + { + return m_wndEditor2; + } + +#ifndef SWIG + + /** + Generates contents for string dst based on the contents of + wxArrayString src. + + Format will be "(preDelim)str1(postDelim) (preDelim)str2(postDelim) and + so on. Set flags to 1 inorder to convert backslashes to double-back- + slashes and "(preDelims)"'s to "(preDelims)". + */ + static void ArrayStringToString( wxString& dst, const wxArrayString& src, + wxChar preDelim, wxChar postDelim, + int flags ); + + // Mostly useful for page switching. + void SwitchState( wxPropertyGridPageState* pNewState ); + + /** Pass this function to Connect calls in propertyclass::CreateEditor. + */ + void OnCustomEditorEvent( wxCommandEvent &event ); + + long GetInternalFlags() const { return m_iFlags; } + void SetInternalFlag( long flag ) { m_iFlags |= flag; } + void ClearInternalFlag( long flag ) { m_iFlags &= ~(flag); } + void IncFrozen() { m_frozen++; } + void DecFrozen() { m_frozen--; } + + void OnComboItemPaint( wxPGCustomComboControl* pCb,int item,wxDC& dc, + wxRect& rect,int flags ); + + // Used by simple check box for keyboard navigation + void SendNavigationKeyEvent( int dir ); + + /** Standardized double-to-string conversion. + */ + static void DoubleToString( wxString& target, + double value, + int precision, + bool removeZeroes, + wxString* precTemplate ); + + /** + Call this from wxPGProperty::OnEvent() to cause property value to be + changed after the function returns (with true as return value). + ValueChangeInEvent() must be used if you wish the application to be + able to use wxEVT_PG_CHANGING to potentially veto the given value. + */ + void ValueChangeInEvent( wxVariant variant ) + { + m_changeInEventValue = variant; + m_iFlags |= wxPG_FL_VALUE_CHANGE_IN_EVENT; + } + + /** Returns true if given event is from first of an array of buttons + (as can be in case when wxPGMultiButton is used). + */ + bool IsMainButtonEvent( const wxEvent& event ) + { + return (event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED) + && (m_wndSecId == event.GetId()); + } + + /** Pending value is expected to be passed in PerformValidation(). + */ + virtual bool DoPropertyChanged( wxPGProperty* p, + unsigned int selFlags = 0 ); + + /** + Runs all validation functionality (includes sending wxEVT_PG_CHANGING). + Returns true if all tests passed. + */ + virtual bool PerformValidation( wxPGProperty* p, wxVariant& pendingValue ); + + /** Called when validation for given property fails. + @param invalidValue + Value which failed in validation. + @return + Return true if user is allowed to change to another property even + if current has invalid value. + @remarks + To add your own validation failure behavior, override + wxPropertyGrid::DoOnValidationFailure(). + */ + bool OnValidationFailure( wxPGProperty* property, wxVariant& invalidValue ) + { + bool res = DoOnValidationFailure(property, invalidValue); + property->SetFlag(wxPG_PROP_INVALID_VALUE); + return res; + } + + /** Called to indicate property and editor has valid value now. + */ + void OnValidationFailureReset( wxPGProperty* property ) + { + if ( property && property->HasFlag(wxPG_PROP_INVALID_VALUE) ) + { + DoOnValidationFailureReset(property); + property->ClearFlag(wxPG_PROP_INVALID_VALUE); + } + m_validationInfo.m_failureMessage.clear(); + } + + /** Override in derived class to display error messages in custom manner + (these message usually only result from validation failure). + */ + virtual void DoShowPropertyError( wxPGProperty* property, + const wxString& msg ); + + /** Override to customize property validation failure behavior. + @param invalidValue + Value which failed in validation. + @return + Return true if user is allowed to change to another property even + if current has invalid value. + */ + virtual bool DoOnValidationFailure( wxPGProperty* property, + wxVariant& invalidValue ); + + /** Override to customize resetting of property validation failure status. + @remarks + Property is guaranteed to have flag wxPG_PROP_INVALID_VALUE set. + */ + virtual void DoOnValidationFailureReset( wxPGProperty* property ); + + int GetSpacingY() const { return m_spacingy; } + + /** + Must be called in wxPGEditor::CreateControls() if primary editor window + is wxTextCtrl, just before textctrl is created. + @param text + Initial text value of created wxTextCtrl. + */ + void SetupTextCtrlValue( const wxString text ) { m_prevTcValue = text; } + + /** + Unfocuses or closes editor if one was open, but does not deselect + property. + */ + bool UnfocusEditor(); + +protected: + + /** + wxPropertyGridPageState used by the grid is created here. + + If grid is used in wxPropertyGridManager, there is no point overriding + this - instead, set custom wxPropertyGridPage classes. + */ + virtual wxPropertyGridPageState* CreateState() const; + +#ifndef DOXYGEN +public: + + // Control font changer helper. + void SetCurControlBoldFont(); + + // + // Public methods for semi-public use + // (not protected for optimization) + // + bool DoSelectProperty( wxPGProperty* p, unsigned int flags = 0 ); + + // Overridden functions. + virtual bool Destroy(); + virtual wxSize DoGetBestSize() const; + // Returns property at given y coordinate (relative to grid's top left). + wxPGProperty* GetItemAtY( int y ) const { return DoGetItemAtY(y); } + + virtual void Refresh( bool eraseBackground = true, + const wxRect *rect = (const wxRect *) NULL ); + virtual bool SetFont( const wxFont& font ); +#if wxPG_SUPPORT_TOOLTIPS + void SetToolTip( const wxString& tipString ); +#endif + virtual void Freeze(); + virtual void SetExtraStyle( long exStyle ); + virtual void Thaw(); + + +protected: + +#ifndef wxPG_ICON_WIDTH + wxBitmap *m_expandbmp, *m_collbmp; +#endif + + wxCursor *m_cursorSizeWE; + + /** wxWindow pointers to editor control(s). */ + wxWindow *m_wndEditor; + wxWindow *m_wndEditor2; + + /** wxPGCanvas instance. */ + wxPanel *m_canvas; + +#if wxPG_DOUBLE_BUFFER + wxBitmap *m_doubleBuffer; +#endif + + wxArrayPtrVoid *m_windowsToDelete; + + /** Local time ms when control was created. */ + wxLongLong m_timeCreated; + + /** wxPGProperty::OnEvent can change value by setting this. */ + wxVariant m_changeInEventValue; + + /** Id of m_wndEditor2, or its first child, if any. */ + int m_wndSecId; + + /** Extra Y spacing between the items. */ + int m_spacingy; + + /** Control client area width; updated on resize. */ + int m_width; + + /** Control client area height; updated on resize. */ + int m_height; + + /** Current non-client width (needed when auto-centering). */ + int m_ncWidth; + + /** Non-client width (auto-centering helper). */ + //int m_fWidth; + + /** Previously recorded scroll start position. */ + int m_prevVY; + + /** + The gutter spacing in front and back of the image. + This determines the amount of spacing in front of each item + */ + int m_gutterWidth; + + /** Includes separator line. */ + int m_lineHeight; + + /** Gutter*2 + image width. */ + int m_marginWidth; + + // y spacing for expand/collapse button. + int m_buttonSpacingY; + + /** Extra margin for expanded sub-group items. */ + int m_subgroup_extramargin; + + /** + The image width of the [+] icon. + + This is also calculated in the gutter + */ + int m_iconWidth; + +#ifndef wxPG_ICON_WIDTH + + /** + The image height of the [+] icon. + + This is calculated as minimal size and to align + */ + int m_iconHeight; +#endif + + /** Current cursor id. */ + int m_curcursor; + + /** + This captionFont is made equal to the font of the wxScrolledWindow. + + As extra the bold face is set on it when this is wanted by the user + (see flags) + */ + wxFont m_captionFont; + + int m_fontHeight; // Height of the font. + + // Base keycode for triggering push button. + int m_pushButKeyCode; + + /** m_splitterx when drag began. */ + int m_startingSplitterX; + + /** + Index to splitter currently being dragged (0=one after the first + column). + */ + int m_draggedSplitter; + + /** Changed property, calculated in PerformValidation(). */ + wxPGProperty* m_chgInfo_changedProperty; + + /** + Lowest property for which editing happened, but which does not have + aggregate parent + */ + wxPGProperty* m_chgInfo_baseChangedProperty; + + /** Changed property value, calculated in PerformValidation(). */ + wxVariant m_chgInfo_pendingValue; + + /** Passed to SetValue. */ + wxVariant m_chgInfo_valueList; + + /** Validation information. */ + wxPGValidationInfo m_validationInfo; + + /** Actions and keys that trigger them. */ + wxPGHashMapI2I m_actionTriggers; + + // + // Temporary values + // + + /** Bits are used to indicate which colours are customized. */ + unsigned short m_coloursCustomized; + + /** x - m_splitterx. */ + signed char m_dragOffset; + + /** 0 = not dragging, 1 = drag just started, 2 = drag in progress */ + unsigned char m_dragStatus; + + /** 0 = margin, 1 = label, 2 = value. */ + unsigned char m_mouseSide; + + /** True when editor control is focused. */ + unsigned char m_editorFocused; + + /** 1 if m_latsCaption is also the bottommost caption. */ + //unsigned char m_lastCaptionBottomnest; + + /** Set to 1 when graphics frozen. */ + unsigned char m_frozen; + + unsigned char m_vspacing; + + // Does triggering push button need Alt down? + unsigned char m_pushButKeyCodeNeedsAlt; + + // Does triggering push button need Ctrl down? + unsigned char m_pushButKeyCodeNeedsCtrl; + + // Used to track when Alt/Ctrl+Key was consumed. + unsigned char m_keyComboConsumed; + + /** 1 if in DoPropertyChanged() */ + unsigned char m_inDoPropertyChanged; + + /** 1 if in CommitChangesFromEditor() */ + unsigned char m_inCommitChangesFromEditor; + + /** 1 if in DoSelectProperty() */ + unsigned char m_inDoSelectProperty; + + wxPGVFBFlags m_permanentValidationFailureBehavior; // Set by app + + /** Internal flags - see wxPG_FL_XXX constants. */ + wxUint32 m_iFlags; + + /** When drawing next time, clear this many item slots at the end. */ + int m_clearThisMany; + + /** Pointer to selected property. Note that this is duplicated in + m_state for better transiency between pages so that the selected + item can be retained. + */ + wxPGProperty* m_selected; + + // pointer to property that has mouse hovering + wxPGProperty* m_propHover; + + // EventObject for wxPropertyGridEvents + wxWindow* m_eventObject; + + // What (global) window is currently focused (needed to resolve event + // handling mess). + wxWindow* m_curFocused; + + // wxPGTLWHandler + wxEvtHandler* m_tlwHandler; + + // Top level parent + wxWindow* m_tlp; + + // y coordinate of property that mouse hovering + int m_propHoverY; + // Which column's editor is selected (usually 1)? + int m_selColumn; + + // x relative to splitter (needed for resize). + int m_ctrlXAdjust; + + // lines between cells + wxColour m_colLine; + // property labels and values are written in this colour + wxColour m_colPropFore; + // or with this colour when disabled + wxColour m_colDisPropFore; + // background for m_colPropFore + wxColour m_colPropBack; + // text color for captions + wxColour m_colCapFore; + // background color for captions + wxColour m_colCapBack; + // foreground for selected property + wxColour m_colSelFore; + // background for selected property (actually use background color when + // control out-of-focus) + wxColour m_colSelBack; + // background colour for margin + wxColour m_colMargin; + // background colour for empty space below the grid + wxColour m_colEmptySpace; + + // temp property array used in DoDrawItems + wxArrayPtrVoid m_visPropArray; + + // NB: These *cannot* be moved to globals. + + // Array of background colour brushes. + wxArrayPtrVoid m_arrBgBrushes; + // Array of foreground colours. + wxArrayPtrVoid m_arrFgCols; + + // labels when properties use common values + wxArrayPtrVoid m_commonValues; + // Which cv selection really sets value to unspecified? + int m_cvUnspecified; + + // Used to skip excess text editor events + wxString m_prevTcValue; + +protected: + + // Sets some members to defaults (called constructors). + void Init1(); + + // Initializes some members (called by Create and complex constructor). + void Init2(); + + void OnPaint(wxPaintEvent &event ); + + // main event receivers + void OnMouseMove( wxMouseEvent &event ); + void OnMouseMoveBottom( wxMouseEvent &event ); + void OnMouseClick( wxMouseEvent &event ); + void OnMouseRightClick( wxMouseEvent &event ); + void OnMouseDoubleClick( wxMouseEvent &event ); + void OnMouseUp( wxMouseEvent &event ); + void OnKey( wxKeyEvent &event ); + void OnKeyUp( wxKeyEvent &event ); + void OnNavigationKey( wxNavigationKeyEvent& event ); + void OnResize( wxSizeEvent &event ); + + // event handlers + bool HandleMouseMove( int x, unsigned int y, wxMouseEvent &event ); + bool HandleMouseClick( int x, unsigned int y, wxMouseEvent &event ); + bool HandleMouseRightClick( int x, unsigned int y, wxMouseEvent &event ); + bool HandleMouseDoubleClick( int x, unsigned int y, wxMouseEvent &event ); + bool HandleMouseUp( int x, unsigned int y, wxMouseEvent &event ); + void HandleKeyEvent( wxKeyEvent &event ); + // Handle TAB and ESCAPE in control + bool HandleChildKey( wxKeyEvent& event ); + + void OnMouseEntry( wxMouseEvent &event ); + + void OnIdle( wxIdleEvent &event ); + void OnFocusEvent( wxFocusEvent &event ); + void OnChildFocusEvent( wxChildFocusEvent& event ); + + bool OnMouseCommon( wxMouseEvent &event, int* px, int *py ); + bool OnMouseChildCommon( wxMouseEvent &event, int* px, int *py ); + + // sub-control event handlers + void OnMouseClickChild( wxMouseEvent &event ); + void OnMouseRightClickChild( wxMouseEvent &event ); + void OnMouseMoveChild( wxMouseEvent &event ); + void OnMouseUpChild( wxMouseEvent &event ); + void OnChildKeyDown( wxKeyEvent &event ); + void OnChildKeyUp( wxKeyEvent &event ); + + void OnCaptureChange( wxMouseCaptureChangedEvent &event ); + + void OnScrollEvent( wxScrollWinEvent &event ); + + void OnSysColourChanged( wxSysColourChangedEvent &event ); + +protected: + + /** + Adjust the centering of the bitmap icons (collapse / expand) when the + caption font changes. + + They need to be centered in the middle of the font, so a bit of deltaY + adjustment is needed. On entry, m_captionFont must be set to window + font. It will be modified properly. + */ + void CalculateFontAndBitmapStuff( int vspacing ); + + wxRect GetEditorWidgetRect( wxPGProperty* p, int column ) const; + + void CorrectEditorWidgetSizeX(); + + /** Called in RecalculateVirtualSize() to reposition control + on virtual height changes. + */ + void CorrectEditorWidgetPosY(); + +#ifdef __WXDEBUG__ + void _log_items(); + void OnScreenNote( const wxChar* format, ... ); +#endif + + /** Deselect current selection, if any. Returns true if success + (ie. validator did not intercept). */ + bool DoClearSelection(); + + int DoDrawItems( wxDC& dc, + const wxPGProperty* first_item, + const wxPGProperty* last_item, + const wxRect* clip_rect, + bool isBuffered ) const; + + void DoSetPropertyValueUnspecified( wxPGProperty* p ); + + /** Draws an expand/collapse (ie. +/-) button. + */ + virtual void DrawExpanderButton( wxDC& dc, const wxRect& rect, + wxPGProperty* property ) const; + + /** Draws items from topitemy to bottomitemy */ + void DrawItems( wxDC& dc, unsigned int topitemy, unsigned int bottomitemy, + const wxRect* clip_rect = (const wxRect*) NULL ); + + void DrawItems( const wxPGProperty* p1, const wxPGProperty* p2 ); + + void DrawItem( wxPGProperty* p ) + { + DrawItems(p,p); + } + + virtual void DrawItemAndChildren( wxPGProperty* p ); + + /** + Draws item, children, and consequtive parents as long as category is + not met. + */ + void DrawItemAndValueRelated( wxPGProperty* p ); + + // Translate wxKeyEvent to wxPG_ACTION_XXX + int KeyEventToActions(wxKeyEvent &event, int* pSecond) const; + + int KeyEventToAction(wxKeyEvent &event) const + { + return KeyEventToActions(event, NULL); + } + + void ImprovedClientToScreen( int* px, int* py ); + + // Called by focus event handlers. newFocused is the window that becomes + // focused. + void HandleFocusChange( wxWindow* newFocused ); + + /** Reloads all non-customized colours from system settings. */ + void RegainColours(); + + bool DoEditorValidate(); + + wxPGProperty* DoGetItemAtY( int y ) const; + + void DoSetSplitterPosition_( int newxpos, + bool refresh = true, + int splitterIndex = 0, + bool allPages = false ); + + void FreeEditors(); + + virtual bool DoExpand( wxPGProperty* p, bool sendEvent = false ); + + virtual bool DoCollapse( wxPGProperty* p, bool sendEvent = false ); + + // Returns nearest paint visible property (such that will be painted unless + // window is scrolled or resized). If given property is paint visible, then + // it itself will be returned. + wxPGProperty* GetNearestPaintVisible( wxPGProperty* p ) const; + + static void RegisterDefaultEditors(); + + // Sets m_bgColIndex to this property and all its children. + void SetBackgroundColourIndex( wxPGProperty* p, int index ); + + // Sets m_fgColIndex to this property and all its children. + void SetTextColourIndex( wxPGProperty* p, int index, int flags ); + + int CacheColour( const wxColour& colour ); + + void DoSetPropertyName( wxPGProperty* p, const wxString& newname ); + + // Setups event handling for child control + void SetupEventHandling( wxWindow* wnd, int id ); + + void CustomSetCursor( int type, bool override = false ); + + virtual bool ProcessEvent(wxEvent& event); + virtual void SetWindowStyleFlag( long style ); + + /** + Repositions scrollbar and underlying panel according to changed virtual + size. + */ + void RecalculateVirtualSize( int forceXPos = -1 ); + + void PrepareAfterItemsAdded(); + + bool SendEvent( int eventType, + wxPGProperty* p, + wxVariant* pValue = NULL, + unsigned int selFlags = 0 ); + + bool DoHideProperty( wxPGProperty* p, bool hide, int flags ); + +private: + + bool ButtonTriggerKeyTest( wxKeyEvent &event ); + +#endif // DOXYGEN_SHOULD_SKIP_THIS + +private: + DECLARE_EVENT_TABLE() +#endif // #ifndef SWIG +}; + +// ----------------------------------------------------------------------- +// +// Bunch of inlines that need to resolved after all classes have been defined. +// + +#ifndef SWIG +inline bool wxPropertyGridPageState::IsDisplayed() const +{ + return ( this == m_pPropGrid->GetState() ); +} + +inline unsigned int wxPropertyGridPageState::GetActualVirtualHeight() const +{ + return DoGetRoot()->GetChildrenHeight(GetGrid()->GetRowHeight()); +} +#endif + +inline int wxPGProperty::GetDisplayedCommonValueCount() const +{ + if ( HasFlag(wxPG_PROP_USES_COMMON_VALUE) ) + { + wxPropertyGrid* pg = GetGrid(); + if ( pg ) + return pg->GetCommonValueCount(); + } + return 0; +} + +inline void wxPGProperty::SetEditor( const wxString& editorName ) +{ + m_customEditor = wxPropertyGridInterface::GetEditorByName(editorName); +} + +inline void wxPGProperty::SetName( const wxString& newName ) +{ + GetGrid()->SetPropertyName(this, newName); +} + +inline bool wxPGProperty::Hide( bool hide, int flags ) +{ + return GetGrid()->HideProperty(this, hide, flags); +} + +inline bool wxPGProperty::SetMaxLength( int maxLen ) +{ + return GetGrid()->SetPropertyMaxLength(this,maxLen); +} + +// ----------------------------------------------------------------------- + + +#ifndef SWIG + +#define wxPG_BASE_EVT_PRE_ID 1775 + +BEGIN_DECLARE_EVENT_TYPES() + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_SELECTED, wxPG_BASE_EVT_PRE_ID) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGING, wxPG_BASE_EVT_PRE_ID+1) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGED, wxPG_BASE_EVT_PRE_ID+2) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_HIGHLIGHTED, wxPG_BASE_EVT_PRE_ID+3) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_RIGHT_CLICK, wxPG_BASE_EVT_PRE_ID+4) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_PAGE_CHANGED, wxPG_BASE_EVT_PRE_ID+5) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_COLLAPSED, wxPG_BASE_EVT_PRE_ID+6) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_EXPANDED, wxPG_BASE_EVT_PRE_ID+7) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_DOUBLE_CLICK, wxPG_BASE_EVT_PRE_ID+8) +END_DECLARE_EVENT_TYPES() +#else + enum { + wxEVT_PG_SELECTED = wxPG_BASE_EVT_PRE_ID, + wxEVT_PG_CHANGING, + wxEVT_PG_CHANGED, + wxEVT_PG_HIGHLIGHTED, + wxEVT_PG_RIGHT_CLICK, + wxEVT_PG_PAGE_CHANGED, + wxEVT_PG_ITEM_COLLAPSED, + wxEVT_PG_ITEM_EXPANDED, + wxEVT_PG_DOUBLE_CLICK + }; +#endif + + +#define wxPG_BASE_EVT_TYPE wxEVT_PG_SELECTED +#define wxPG_MAX_EVT_TYPE (wxPG_BASE_EVT_TYPE+30) + + +#ifndef SWIG +typedef void (wxEvtHandler::*wxPropertyGridEventFunction)(wxPropertyGridEvent&); + +#define EVT_PG_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_HIGHLIGHTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_HIGHLIGHTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_DOUBLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_DOUBLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_PAGE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_PAGE_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_ITEM_COLLAPSED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#define EVT_PG_ITEM_EXPANDED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), + +#define wxPropertyGridEventHandler(A) \ + ((wxObjectEventFunction)(wxEventFunction)(wxPropertyGridEventFunction)&A) + +#endif + + +/** @class wxPropertyGridEvent + + A propertygrid event holds information about events associated with + wxPropertyGrid objects. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridEvent : public wxCommandEvent +{ +public: + + /** Constructor. */ + wxPropertyGridEvent(wxEventType commandType=0, int id=0); +#ifndef SWIG + /** Copy constructor. */ + wxPropertyGridEvent(const wxPropertyGridEvent& event); +#endif + /** Destructor. */ + ~wxPropertyGridEvent(); + + /** Copyer. */ + virtual wxEvent* Clone() const; + + wxPGProperty* GetMainParent() const + { + wxASSERT(m_property); + return m_property->GetMainParent(); + } + + /** Returns id of associated property. */ + wxPGProperty* GetProperty() const + { + return m_property; + } + + wxPGValidationInfo& GetValidationInfo() + { + wxASSERT(m_validationInfo); + return *m_validationInfo; + } + + /** Returns true if event has associated property. */ + bool HasProperty() const { return ( m_property != (wxPGProperty*) NULL ); } + + /** Returns true if you can veto the action that the event is signaling. + */ + bool CanVeto() const { return m_canVeto; } + + /** + Call this from your event handler to veto action that the event is + signaling. + + You can only veto a shutdown if wxPropertyGridEvent::CanVeto returns + true. + @remarks + Currently only wxEVT_PG_CHANGING supports vetoing. + */ + void Veto( bool veto = true ) { m_wasVetoed = veto; } + + /** Returns value that is about to be set for wxEVT_PG_CHANGING. + */ + const wxVariant& GetValue() const + { + wxASSERT_MSG( m_validationInfo, + "Only call GetValue from a handler " + "of event type that supports it" ); + return *m_validationInfo->m_pValue; + } + + /** + Set override validation failure behavior. + + Only effective if Veto was also called, and only allowed if event type + is wxEVT_PG_CHANGING. + */ + void SetValidationFailureBehavior( int flags ) + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + m_validationInfo->m_failureBehavior = (wxPGVFBFlags) flags; + } + + /** Sets custom failure message for this time only. Only applies if + wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. + */ + void SetValidationFailureMessage( const wxString& message ) + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + m_validationInfo->m_failureMessage = message; + } + +#ifndef SWIG + wxPGVFBFlags GetValidationFailureBehavior() const + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + return m_validationInfo->m_failureBehavior; + } + + void SetCanVeto( bool canVeto ) { m_canVeto = canVeto; } + bool WasVetoed() const { return m_wasVetoed; } + + /** Changes the associated property. */ + void SetProperty( wxPGProperty* p ) { m_property = p; } + + void SetPropertyGrid( wxPropertyGrid* pg ) { m_pg = pg; } + + void SetupValidationInfo() + { + wxASSERT(m_pg); + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + m_validationInfo = &m_pg->GetValidationInfo(); + } + +private: + void Init(); + DECLARE_DYNAMIC_CLASS(wxPropertyGridEvent) + + wxPGProperty* m_property; + wxPropertyGrid* m_pg; + wxPGValidationInfo* m_validationInfo; + + bool m_canVeto; + bool m_wasVetoed; + +#endif +}; + + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGridPopulator + @ingroup classes + Allows populating wxPropertyGrid from arbitrary text source. +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridPopulator +{ +public: + /** Default constructor. + */ + wxPropertyGridPopulator(); + + /** Destructor. */ + virtual ~wxPropertyGridPopulator(); + + void SetState( wxPropertyGridPageState* state ); + + void SetGrid( wxPropertyGrid* pg ); + + /** Appends a new property under bottommost parent. + @param propClass + Property class as string. + */ + wxPGProperty* Add( const wxString& propClass, + const wxString& propLabel, + const wxString& propName, + const wxString* propValue, + wxPGChoices* pChoices = NULL ); + + /** + Pushes property to the back of parent array (ie it becomes bottommost + parent), and starts scanning/adding children for it. + + When finished, parent array is returned to the original state. + */ + void AddChildren( wxPGProperty* property ); + + /** Adds attribute to the bottommost property. + @param type + Allowed values: "string", (same as string), "int", "bool". Empty string + mean autodetect. + */ + bool AddAttribute( const wxString& name, + const wxString& type, + const wxString& value ); + + /** Called once in AddChildren. + */ + virtual void DoScanForChildren() = 0; + + /** + Returns id of parent property for which children can currently be + added. + */ + wxPGProperty* GetCurParent() const + { + return (wxPGProperty*) m_propHierarchy[m_propHierarchy.size()-1]; + } + + wxPropertyGridPageState* GetState() { return m_state; } + const wxPropertyGridPageState* GetState() const { return m_state; } + + /** Like wxString::ToLong, except allows N% in addition of N. + */ + static bool ToLongPCT( const wxString& s, long* pval, long max ); + + /** Parses strings of format "choice1"[=value1] ... "choiceN"[=valueN] into + wxPGChoices. Registers parsed result using idString (if not empty). + Also, if choices with given id already registered, then don't parse but + return those choices instead. + */ + wxPGChoices ParseChoices( const wxString& choicesString, + const wxString& idString ); + + /** Implement in derived class to do custom process when an error occurs. + Default implementation uses wxLogError. + */ + virtual void ProcessError( const wxString& msg ); + +protected: + + /** Used property grid. */ + wxPropertyGrid* m_pg; + + /** Used property grid state. */ + wxPropertyGridPageState* m_state; + + /** Tree-hierarchy of added properties (that can have children). */ + wxArrayPGProperty m_propHierarchy; + + /** Hashmap for string-id to wxPGChoicesData mapping. */ + wxPGHashMapS2P m_dictIdChoices; +}; + +// ----------------------------------------------------------------------- + +// +// Undefine macros that are not needed outside propertygrid sources +// +#ifndef __wxPG_SOURCE_FILE__ + #undef wxPG_FL_DESC_REFRESH_REQUIRED + #undef wxPG_FL_SCROLLBAR_DETECTED + #undef wxPG_FL_CREATEDSTATE + #undef wxPG_FL_NOSTATUSBARHELP + #undef wxPG_FL_SCROLLED + #undef wxPG_FL_FOCUS_INSIDE_CHILD + #undef wxPG_FL_FOCUS_INSIDE + #undef wxPG_FL_MOUSE_INSIDE_CHILD + #undef wxPG_FL_CUR_USES_CUSTOM_IMAGE + #undef wxPG_FL_PRIMARY_FILLS_ENTIRE + #undef wxPG_FL_VALUE_MODIFIED + #undef wxPG_FL_MOUSE_INSIDE + #undef wxPG_FL_FOCUSED + #undef wxPG_FL_MOUSE_CAPTURED + #undef wxPG_FL_INITIALIZED + #undef wxPG_FL_ACTIVATION_BY_CLICK + #undef wxPG_FL_DONT_CENTER_SPLITTER + #undef wxPG_SUPPORT_TOOLTIPS + #undef wxPG_DOUBLE_BUFFER + #undef wxPG_ICON_WIDTH + #undef wxPG_USE_RENDERER_NATIVE +// Following are needed by the manager headers +// #undef const wxString& +#endif + +// Doxygen special +#ifdef DOXYGEN + #include "wx/propgrid/editor.h" + #include "wx/propgrid/manager.h" +#endif + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_PROPGRID_H_ + diff --git a/include/wx/propgrid/propgriddefs.h b/include/wx/propgrid/propgriddefs.h new file mode 100644 index 0000000000..c2e3effbed --- /dev/null +++ b/include/wx/propgrid/propgriddefs.h @@ -0,0 +1,797 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/propgriddefs.h +// Purpose: wxPropertyGrid miscellaneous definitions +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-31 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_PROPGRIDDEFS_H_ +#define _WX_PROPGRID_PROPGRIDDEFS_H_ + +#include "wx/dynarray.h" +#include "wx/hashmap.h" +#include "wx/variant.h" +#include "wx/longlong.h" +#include "wx/clntdata.h" + +// ----------------------------------------------------------------------- + +// +// Here are some platform dependent defines +// NOTE: More in propertygrid.cpp +// + +#ifndef SWIG + +#if defined(__WXMSW__) + + // space between vertical line and value text + #define wxPG_XBEFORETEXT 4 + // space between vertical line and value editor control + #define wxPG_XBEFOREWIDGET 1 + + // x position adjustment for wxTextCtrl (and like) + #define wxPG_TEXTCTRLXADJUST 3 + + // comment to use bitmap buttons + #define wxPG_ICON_WIDTH 9 + // 1 if wxRendererNative should be employed + #define wxPG_USE_RENDERER_NATIVE 0 + + // 1 to use double-buffer that guarantees flicker-free painting + #define wxPG_DOUBLE_BUFFER 1 + + // Enable tooltips + #define wxPG_SUPPORT_TOOLTIPS 1 + + // width of optional bitmap/image in front of property + #define wxPG_CUSTOM_IMAGE_WIDTH 20 + + // 1 to create controls out of sight, hide them, and then move them into + // correct position + #define wxPG_CREATE_CONTROLS_HIDDEN 0 + + // 1 if splitter drag detect margin and control cannot overlap + #define wxPG_NO_CHILD_EVT_MOTION 0 + + // If 1, then setting empty tooltip actually hides it + #define wxPG_ALLOW_EMPTY_TOOLTIPS 1 + + #define wxPG_NAT_BUTTON_BORDER_ANY 1 + #define wxPG_NAT_BUTTON_BORDER_X 1 + #define wxPG_NAT_BUTTON_BORDER_Y 1 + + // If 1 then controls are refreshed after selected was drawn. + #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 0 + +#elif defined(__WXGTK__) + + // space between vertical line and value text + #define wxPG_XBEFORETEXT 5 + // space between vertical line and value editor control + #define wxPG_XBEFOREWIDGET 1 + + // x position adjustment for wxTextCtrl (and like) + #define wxPG_TEXTCTRLXADJUST 3 + + // comment to use bitmap buttons + #define wxPG_ICON_WIDTH 9 + // 1 if wxRendererNative should be employed + #define wxPG_USE_RENDERER_NATIVE 0 + + // 1 to use double-buffer that guarantees flicker-free painting + #define wxPG_DOUBLE_BUFFER 1 + + // Enable tooltips + #define wxPG_SUPPORT_TOOLTIPS 1 + + // width of optional bitmap/image in front of property + #define wxPG_CUSTOM_IMAGE_WIDTH 20 + + // 1 to create controls out of sight, hide them, and then move them into + // correct position + #define wxPG_CREATE_CONTROLS_HIDDEN 0 + + // 1 if splitter drag detect margin and control cannot overlap + #define wxPG_NO_CHILD_EVT_MOTION 1 + + // If 1, then setting empty tooltip actually hides it + #define wxPG_ALLOW_EMPTY_TOOLTIPS 0 + + #define wxPG_NAT_BUTTON_BORDER_ANY 1 + #define wxPG_NAT_BUTTON_BORDER_X 1 + #define wxPG_NAT_BUTTON_BORDER_Y 1 + + // If 1 then controls are refreshed after selected was drawn. + #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 1 + +#elif defined(__WXMAC__) + + // space between vertical line and value text + #define wxPG_XBEFORETEXT 4 + // space between vertical line and value editor widget + #define wxPG_XBEFOREWIDGET 1 + + // x position adjustment for wxTextCtrl (and like) + #define wxPG_TEXTCTRLXADJUST 3 + + // comment to use bitmap buttons + #define wxPG_ICON_WIDTH 11 + // 1 if wxRendererNative should be employed + #define wxPG_USE_RENDERER_NATIVE 1 + + // 1 to use double-buffer that guarantees flicker-free painting + #define wxPG_DOUBLE_BUFFER 0 + + // Enable tooltips + #define wxPG_SUPPORT_TOOLTIPS 1 + + // width of optional bitmap/image in front of property + #define wxPG_CUSTOM_IMAGE_WIDTH 20 + + // 1 to create controls out of sight, hide them, and then move them into + // correct position + #define wxPG_CREATE_CONTROLS_HIDDEN 0 + + // 1 if splitter drag detect margin and control cannot overlap + #define wxPG_NO_CHILD_EVT_MOTION 0 + + // If 1, then setting empty tooltip actually hides it + #define wxPG_ALLOW_EMPTY_TOOLTIPS 1 + + #define wxPG_NAT_BUTTON_BORDER_ANY 0 + #define wxPG_NAT_BUTTON_BORDER_X 0 + #define wxPG_NAT_BUTTON_BORDER_Y 0 + + // If 1 then controls are refreshed after selected was drawn. + #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 0 + +#else // defaults + + // space between vertical line and value text + #define wxPG_XBEFORETEXT 5 + // space between vertical line and value editor widget + #define wxPG_XBEFOREWIDGET 1 + + // x position adjustment for wxTextCtrl (and like) + #define wxPG_TEXTCTRLXADJUST 3 + + // comment to use bitmap buttons + #define wxPG_ICON_WIDTH 9 + // 1 if wxRendererNative should be employed + #define wxPG_USE_RENDERER_NATIVE 0 + + // 1 to use double-buffer that guarantees flicker-free painting + #define wxPG_DOUBLE_BUFFER 0 + + // Enable tooltips + #define wxPG_SUPPORT_TOOLTIPS 0 + + // width of optional bitmap/image in front of property + #define wxPG_CUSTOM_IMAGE_WIDTH 20 + + // 1 to create controls out of sight, hide them, and then move them into + // correct position + #define wxPG_CREATE_CONTROLS_HIDDEN 0 + + // 1 if splitter drag detect margin and control cannot overlap + #define wxPG_NO_CHILD_EVT_MOTION 1 + + // If 1, then setting empty tooltip actually hides it + #define wxPG_ALLOW_EMPTY_TOOLTIPS 0 + + #define wxPG_NAT_BUTTON_BORDER_ANY 0 + #define wxPG_NAT_BUTTON_BORDER_X 0 + #define wxPG_NAT_BUTTON_BORDER_Y 0 + + // If 1 then controls are refreshed after selected was drawn. + #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 1 +#endif // platform + + +#define wxPG_CONTROL_MARGIN 0 // space between splitter and control + +#define wxCC_CUSTOM_IMAGE_MARGIN1 4 // before image +#define wxCC_CUSTOM_IMAGE_MARGIN2 5 // after image + +#define wxPG_DRAG_MARGIN 30 + +#if wxPG_NO_CHILD_EVT_MOTION + #define wxPG_SPLITTERX_DETECTMARGIN1 3 // this much on left + #define wxPG_SPLITTERX_DETECTMARGIN2 2 // this much on right +#else + #define wxPG_SPLITTERX_DETECTMARGIN1 3 // this much on left + #define wxPG_SPLITTERX_DETECTMARGIN2 2 // this much on right +#endif + +// Use this macro to generate standard custom image height from +#define wxPG_STD_CUST_IMAGE_HEIGHT(LINEHEIGHT) (LINEHEIGHT-3) + + +#if defined(__WXWINCE__) + #define wxPG_SMALL_SCREEN 1 + #undef wxPG_DOUBLE_BUFFER + #define wxPG_DOUBLE_BUFFER 0 +#else + #define wxPG_SMALL_SCREEN 0 +#endif + +#endif // #ifndef SWIG + +// Undefine wxPG_ICON_WIDTH to use supplied xpm bitmaps instead +// (for tree buttons) +//#undef wxPG_ICON_WIDTH + +// Need to force disable tooltips? +#if !wxUSE_TOOLTIPS + #undef wxPG_SUPPORT_TOOLTIPS + #define wxPG_SUPPORT_TOOLTIPS 0 +#endif + +// Set 1 to include advanced properties (wxFontProperty, wxColourProperty, etc.) +#ifndef wxPG_INCLUDE_ADVPROPS + #define wxPG_INCLUDE_ADVPROPS 1 +#endif + +// Set 1 to include checkbox editor class +#define wxPG_INCLUDE_CHECKBOX 1 + +// ----------------------------------------------------------------------- + + +// wxPG_CHECK_FOO_DBG - debug check with message that does not +// interrupt program flow. +#define wxPG_CHECK_RET_DBG(A,B) \ + if ( !(A) ) { wxLogWarning(B); return; } +#define wxPG_CHECK_MSG_DBG(A,B,C) \ + if ( !(A) ) { wxLogWarning(C); return B; } + + +class wxPGEditor; +class wxPGProperty; +class wxPropertyCategory; +class wxPGChoices; +class wxPropertyGridPageState; +class wxPGCell; +class wxPGCellRenderer; +class wxPGChoiceEntry; +class wxPGPropArgCls; +class wxPropertyGridInterface; +class wxPropertyGrid; +class wxPropertyGridEvent; +class wxPropertyGridManager; +class wxPGOwnerDrawnComboBox; +class wxPGCustomComboControl; +class wxPGEditorDialogAdapter; +struct wxPGValidationInfo; + + +// ----------------------------------------------------------------------- + +/** @section propgrid_misc wxPropertyGrid Miscellanous + + This section describes some miscellanous values, types and macros. + @{ +*/ + +#ifndef SWIG + // Used to tell wxPGProperty to use label as name as well + #define wxPG_LABEL (*wxPGProperty::sm_wxPG_LABEL) + // This is the value placed in wxPGProperty::sm_wxPG_LABEL + #define wxPG_LABEL_STRING wxS("@!") + #define wxPG_NULL_BITMAP wxNullBitmap + #define wxPG_COLOUR_BLACK (*wxBLACK) +#else + #define wxPG_NULL_BITMAP wxBitmap_NULL + #define wxPG_COLOUR_BLACK wxColour_BLACK +#endif // #ifndef SWIG + +/** Convert Red, Green and Blue to a single 32-bit value. +*/ +#define wxPG_COLOUR(R,G,B) ((wxUint32)(R+(G<<8)+(B<<16))) + + +/** If property is supposed to have custom-painted image, then returning + this in OnMeasureImage() will usually be enough. +*/ +#define wxPG_DEFAULT_IMAGE_SIZE wxSize(-1, -1) + + +typedef wxString wxPGCachedString; + +/** @} +*/ + +// ----------------------------------------------------------------------- + +// Used to indicate wxPGChoices::Add etc that the value is actually not given +// by the caller. +#define wxPG_INVALID_VALUE INT_MAX + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +#if wxUSE_STL +typedef WXDLLIMPEXP_PROPGRID std::vector<wxPGProperty*> wxArrayPGProperty; +#else +WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(wxPGProperty*, wxArrayPGProperty, + wxBaseArrayPtrVoid, + class WXDLLIMPEXP_PROPGRID); +#endif + +// Always use wxString based hashmap with unicode, stl, swig and GCC 4.0+ +WX_DECLARE_STRING_HASH_MAP_WITH_DECL(void*, + wxPGHashMapS2P, + class WXDLLIMPEXP_PROPGRID); + + +WX_DECLARE_VOIDPTR_HASH_MAP_WITH_DECL(void*, + wxPGHashMapP2P, + class WXDLLIMPEXP_PROPGRID); + +WX_DECLARE_HASH_MAP_WITH_DECL(wxInt32, + wxInt32, + wxIntegerHash, + wxIntegerEqual, + wxPGHashMapI2I, + class WXDLLIMPEXP_PROPGRID); + +#endif // #ifndef SWIG + +// ----------------------------------------------------------------------- + +enum wxPG_GETPROPERTYVALUES_FLAGS +{ + +/** Flags for wxPropertyGridInterface::GetPropertyValues */ +wxPG_KEEP_STRUCTURE = 0x00000010, + +/** Flags for wxPropertyGrid::SetPropertyAttribute() etc */ +wxPG_RECURSE = 0x00000020, + +/** Include attributes for GetPropertyValues. */ +wxPG_INC_ATTRIBUTES = 0x00000040, + +/** Used when first starting recursion. */ +wxPG_RECURSE_STARTS = 0x00000080, + +/** Force value change. */ +wxPG_FORCE = 0x00000100 + +}; + +/** Flags for wxPropertyGrid::SetPropertyAttribute() etc */ +#define wxPG_DONT_RECURSE 0x00000000 + +// ----------------------------------------------------------------------- + +// Misc argument flags. +enum wxPG_MISC_ARG_FLAGS +{ + // Get/Store full value instead of displayed value. + wxPG_FULL_VALUE = 0x00000001, + + wxPG_REPORT_ERROR = 0x00000002, + + wxPG_PROPERTY_SPECIFIC = 0x00000004, + + // Get/Store editable value instead of displayed one (should only be + // different in the case of common values) + wxPG_EDITABLE_VALUE = 0x00000008, + + // Used when dealing with fragments of composite string value + wxPG_COMPOSITE_FRAGMENT = 0x00000010, + + // Means property for which final string value is for can not really be + // edited. + wxPG_UNEDITABLE_COMPOSITE_FRAGMENT = 0x00000020 +}; + +// ----------------------------------------------------------------------- + +// wxPGProperty::SetValue() flags +enum wxPG_SETVALUE_FLAGS +{ + wxPG_SETVAL_REFRESH_EDITOR = 0x0001, + wxPG_SETVAL_AGGREGATED = 0x0002, + wxPG_SETVAL_FROM_PARENT = 0x0004 +}; + +// ----------------------------------------------------------------------- + +// +// Valid constants for wxPG_UINT_BASE attribute +// (long because of wxVariant constructor) +#define wxPG_BASE_OCT (long)8 +#define wxPG_BASE_DEC (long)10 +#define wxPG_BASE_HEX (long)16 +#define wxPG_BASE_HEXL (long)32 + +// +// Valid constants for wxPG_UINT_PREFIX attribute +#define wxPG_PREFIX_NONE (long)0 +#define wxPG_PREFIX_0x (long)1 +#define wxPG_PREFIX_DOLLAR_SIGN (long)2 + +// ----------------------------------------------------------------------- +// Editor class. + +#ifndef SWIG + +// Editor accessor. +#define wxPG_EDITOR(T) wxPGEditor_##T + +// Declare editor class, with optional part. +#define WX_PG_DECLARE_EDITOR_WITH_DECL(EDITOR,DECL) \ +extern DECL wxPGEditor* wxPGEditor_##EDITOR; \ +extern DECL wxPGEditor* wxPGConstruct##EDITOR##EditorClass(); + +// Declare editor class. +#define WX_PG_DECLARE_EDITOR(EDITOR) \ +extern wxPGEditor* wxPGEditor_##EDITOR; \ +extern wxPGEditor* wxPGConstruct##EDITOR##EditorClass(); + +// Declare builtin editor classes. +WX_PG_DECLARE_EDITOR_WITH_DECL(TextCtrl,WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_EDITOR_WITH_DECL(Choice,WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_EDITOR_WITH_DECL(ComboBox,WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_EDITOR_WITH_DECL(TextCtrlAndButton,WXDLLIMPEXP_PROPGRID) +#if wxPG_INCLUDE_CHECKBOX +WX_PG_DECLARE_EDITOR_WITH_DECL(CheckBox,WXDLLIMPEXP_PROPGRID) +#endif +WX_PG_DECLARE_EDITOR_WITH_DECL(ChoiceAndButton,WXDLLIMPEXP_PROPGRID) + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** @class wxPGVariantData + @ingroup classes + wxVariantData with additional functionality. + + It is usually enough to use supplied to macros to automatically generate + variant data class. Like so: + + @code + + // In header + WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataMyClass, // Name of the class + MyClass, // Name of the data type + wxEMPTY_PARAMETER_VALUE) // Declaration + + // In source + WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataMyClass, MyClass) + + @endcode + + If your class is derived from wxObject, it is recommended that you use + wxObject-versions of the macros (WX_PG_DECLARE_WXOBJECT_VARIANT_DATA and + WX_PG_IMPLEMENT_WXOBJECT_VARIANT_DATA). + +*/ +class WXDLLIMPEXP_PROPGRID wxPGVariantData : public wxVariantData +{ +public: + virtual void* GetValuePtr() = 0; + virtual wxVariant GetDefaultValue() const = 0; +protected: +}; + + +// +// With wxWidgets 2.9 and later we demand native C++ RTTI support +#ifdef wxNO_RTTI + #error "You need to enable compiler RTTI support for wxPropertyGrid" +#endif +#define WX_PG_DECLARE_DYNAMIC_CLASS_VARIANTDATA(A) +#define WX_PG_IMPLEMENT_DYNAMIC_CLASS_VARIANTDATA(A, B) +typedef const std::type_info* wxPGVariantDataClassInfo; +#define wxPGVariantDataGetClassInfo(A) (&typeid(*A)) +#define wxPG_VARIANT_EQ(A, B) \ + ( ((A).GetData() && \ + (B).GetData() && typeid(*(A).GetData()) == typeid(*(B).GetData()) && \ + (A == B)) || !((A).GetData() && (B).GetData()) ) + +#ifndef wxDynamicCastVariantData + #define wxDynamicCastVariantData wxDynamicCast +#endif + + +inline void wxPGDoesNothing() {} + + +#define _WX_PG_IMPLEMENT_VARIANT_DATA_CLASS(CLASSNAME, \ + DATATYPE, \ + AS_ARG, \ + AS_ARG_CONST, \ + CTOR_CODE, \ + DEFAULT_VALUE, \ + SET_CODE) \ + WX_PG_DECLARE_DYNAMIC_CLASS_VARIANTDATA(CLASSNAME) \ +protected: \ + DATATYPE m_value; \ +public: \ + CLASSNAME() { CTOR_CODE; } \ + CLASSNAME(AS_ARG_CONST value) { CTOR_CODE; SET_CODE; m_value = value; } \ + DATATYPE GetValue() const { return m_value; } \ + AS_ARG_CONST GetValueRef() const { return m_value; } \ + AS_ARG GetValueRef() { return m_value; } \ + void SetValue(AS_ARG_CONST value) { SET_CODE; m_value = value; } \ + virtual bool Eq(wxVariantData&) const { return false; } \ + virtual wxString GetType() const { return wxS(#DATATYPE); } \ + virtual wxVariantData* Clone() { return new CLASSNAME; } \ + virtual bool Read(wxString &) { return false; } \ + virtual bool Write(wxString &) const { return true; } \ + virtual wxVariant GetDefaultValue() const { return DEFAULT_VALUE; } + +// +// Macro WXVARIANT allows creation of wxVariant from any type supported by +// wxWidgets internally, and of all types created using +// WX_PG_DECLARE_VARIANT_DATA. +template<class T> +wxVariant WXVARIANT( const T& value ) +{ + return wxVariant((void*)&value); +} + +template<> inline wxVariant WXVARIANT( const int& value ) + { return wxVariant((long)value); } +template<> inline wxVariant WXVARIANT( const long& value ) + { return wxVariant(value); } +template<> inline wxVariant WXVARIANT( const bool& value ) + { return wxVariant(value); } +template<> inline wxVariant WXVARIANT( const double& value ) + { return wxVariant(value); } +template<> inline wxVariant WXVARIANT( const wxArrayString& value ) + { return wxVariant(value); } +template<> inline wxVariant WXVARIANT( const wxString& value ) + { return wxVariant(value); } +#if wxUSE_DATETIME +template<> inline wxVariant WXVARIANT( const wxDateTime& value ) + { return wxVariant(value); } +#endif + +#define _WX_PG_VARIANT_DATA_CLASSINFO_CONTAINER_DECL(CLASSNAME) \ + extern int CLASSNAME##_d_; +#define _WX_PG_VARIANT_DATA_CLASSINFO_CONTAINER(CLASSNAME) \ + int CLASSNAME##_d_; + +#define _WX_PG_IMPLEMENT_VARIANT_DATA(CLASSNAME, \ + DATATYPE, \ + AS_ARG, \ + AS_CONST_ARG, \ + NULLVAL, \ + BASECLASS) \ +_WX_PG_VARIANT_DATA_CLASSINFO_CONTAINER(CLASSNAME) \ +WX_PG_IMPLEMENT_DYNAMIC_CLASS_VARIANTDATA(CLASSNAME, BASECLASS) \ +AS_ARG operator <<( AS_ARG value, const wxVariant &variant ) \ +{ \ + CLASSNAME *data = wxDynamicCastVariantData( variant.GetData(), CLASSNAME ); \ + wxASSERT( data ); \ + value = data->GetValue(); \ + return value; \ +} \ +wxVariant& operator <<( wxVariant &variant, AS_CONST_ARG value ) \ +{ \ + CLASSNAME *data = new CLASSNAME( value ); \ + variant.SetData( data ); \ + return variant; \ +} \ +AS_ARG DATATYPE##FromVariant( const wxVariant& v ) \ +{ \ + CLASSNAME *data = wxDynamicCastVariantData( v.GetData(), CLASSNAME ); \ + if ( !data ) \ + return NULLVAL; \ + return data->GetValueRef(); \ +} \ +wxVariant DATATYPE##ToVariant( AS_CONST_ARG value ) \ +{ \ + wxVariant variant( new CLASSNAME( value ) ); \ + return variant; \ +} + +#define WX_PG_IMPLEMENT_VARIANT_DATA(CLASSNAME, DATATYPE) \ +class CLASSNAME : public wxPGVariantData \ +{ \ +_WX_PG_IMPLEMENT_VARIANT_DATA_CLASS(CLASSNAME, DATATYPE, DATATYPE&, \ + const DATATYPE&, wxPGDoesNothing(), \ + wxVariant(new CLASSNAME(DATATYPE())), \ + wxPGDoesNothing()) \ +public: \ + virtual void* GetValuePtr() { return (void*)&m_value; } \ +}; \ +_WX_PG_IMPLEMENT_VARIANT_DATA(CLASSNAME, \ + DATATYPE, \ + DATATYPE&, \ + const DATATYPE&, \ + (DATATYPE&)*((DATATYPE*)NULL), \ + wxPGVariantData) + +#define WX_PG_IMPLEMENT_WXOBJECT_VARIANT_DATA(CLASSNAME, DATATYPE) \ +class CLASSNAME : public wxPGVariantData \ +{ \ +_WX_PG_IMPLEMENT_VARIANT_DATA_CLASS(CLASSNAME, DATATYPE, DATATYPE&, \ + const DATATYPE&, wxPGDoesNothing(), \ + wxVariant(new CLASSNAME(DATATYPE())), \ + wxPGDoesNothing()) \ +public: \ + virtual void* GetValuePtr() { return (void*)&m_value; } \ + virtual wxClassInfo* GetValueClassInfo() \ + { return m_value.GetClassInfo(); } \ +}; \ +_WX_PG_IMPLEMENT_VARIANT_DATA(CLASSNAME, DATATYPE, DATATYPE&, \ + const DATATYPE&, \ + (DATATYPE&)*((DATATYPE*)NULL), \ + wxPGVariantData) + + +#define WX_PG_DECLARE_VARIANT_DATA(CLASSNAME, DATATYPE, DECL) \ +DECL DATATYPE& operator <<( DATATYPE& value, const wxVariant &variant ); \ +DECL wxVariant& operator <<( wxVariant &variant, const DATATYPE& value ); \ +DECL DATATYPE& DATATYPE##FromVariant( const wxVariant& variant ); \ +DECL wxVariant DATATYPE##ToVariant( const DATATYPE& value ); \ +template<> inline wxVariant WXVARIANT( const DATATYPE& value ) \ + { return DATATYPE##ToVariant(value); } \ +DECL _WX_PG_VARIANT_DATA_CLASSINFO_CONTAINER_DECL(CLASSNAME); + +#define WX_PG_DECLARE_WXOBJECT_VARIANT_DATA WX_PG_DECLARE_VARIANT_DATA + +#define WX_PG_DECLARE_PTR_VARIANT_DATA(CLASSNAME, DATATYPE, DECL) \ +DECL DATATYPE* operator <<( DATATYPE* value, const wxVariant &variant ); \ +DECL wxVariant& operator <<( wxVariant &variant, DATATYPE* value ); \ +DECL DATATYPE* DATATYPE##FromVariant( const wxVariant& variant ); \ +DECL wxVariant DATATYPE##ToVariant( DATATYPE* value ); \ +DECL _WX_PG_VARIANT_DATA_CLASSINFO_CONTAINER_DECL(CLASSNAME); + + +#define WX_PG_IMPLEMENT_PTR_VARIANT_DATA(CLASSNAME, DATATYPE, DEFAULT) \ +class CLASSNAME : public wxPGVariantData \ +{ \ +_WX_PG_IMPLEMENT_VARIANT_DATA_CLASS(CLASSNAME, DATATYPE*, DATATYPE*, \ + DATATYPE*, m_value = NULL, \ + DEFAULT, \ + if (m_value) Py_DECREF(m_value); \ + if (!value) value = Py_None; \ + Py_INCREF(value) ) \ + ~CLASSNAME() { if (m_value) Py_DECREF(m_value); } \ +public: \ + virtual void* GetValuePtr() { return (void*)m_value; } \ +}; \ +_WX_PG_IMPLEMENT_VARIANT_DATA(CLASSNAME, DATATYPE, DATATYPE*, DATATYPE*, \ + NULL, wxPGVariantData) + + +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataPoint, wxPoint, WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataSize, wxSize, WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataArrayInt, + wxArrayInt, WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataLongLong, + wxLongLong, WXDLLIMPEXP_PROPGRID) +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataULongLong, + wxULongLong, WXDLLIMPEXP_PROPGRID) + +WX_PG_DECLARE_WXOBJECT_VARIANT_DATA(wxPGVariantDataFont, + wxFont, WXDLLIMPEXP_PROPGRID) +template<> inline wxVariant WXVARIANT( const wxColour& value ) +{ + wxVariant variant; + variant << value; + return variant; +} + +#define WX_PG_VARIANT_GETVALUEREF(P, T) \ + (*((T*)((wxPGVariantData*)(P.GetData()))->GetValuePtr())) + +// Safely converts a wxVariant to (long) int. Supports converting from string +// and boolean as well. +WXDLLIMPEXP_PROPGRID +long wxPGVariantToInt( const wxVariant& variant, long defVal = 1 ); + +// Safely converts a wxVariant to wxLongLong_t. Returns true on success. +WXDLLIMPEXP_PROPGRID +bool wxPGVariantToLongLong( const wxVariant& variant, wxLongLong_t* pResult ); + +// Safely converts a wxVariant to wxULongLong_t. Returns true on success. +WXDLLIMPEXP_PROPGRID +bool wxPGVariantToULongLong( const wxVariant& variant, wxULongLong_t* pResult ); + +// Safely converts a wxVariant to double. Supports converting from string and +// wxLongLong as well. +WXDLLIMPEXP_PROPGRID +bool wxPGVariantToDouble( const wxVariant& variant, double* pResult ); + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +WXDLLIMPEXP_PROPGRID +wxObject* +wxPG_VariantToWxObject( const wxVariant& variant, wxClassInfo* classInfo ); + +// +// Redefine wxGetVariantCast to also take propertygrid variantdata +// classes into account. +// +#undef wxGetVariantCast +#define wxGetVariantCast(var,classname) \ + (classname*)wxPG_VariantToWxObject(var,&classname::ms_classInfo) + +// TODO: After a while, remove this. +#define WX_PG_VARIANT_TO_WXOBJECT(VARIANT,CLASSNAME) \ + (CLASSNAME*)wxPG_VariantToWxObject(VARIANT,&CLASSNAME::ms_classInfo) + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +// +// Tokenizer macros. +// NOTE: I have made two versions - worse ones (performance and consistency +// wise) use wxStringTokenizer and better ones (may have unfound bugs) +// use custom code. +// + +#include "wx/tokenzr.h" + +// TOKENIZER1 can be done with wxStringTokenizer +#define WX_PG_TOKENIZER1_BEGIN(WXSTRING,DELIMITER) \ + wxStringTokenizer tkz(WXSTRING,DELIMITER,wxTOKEN_RET_EMPTY); \ + while ( tkz.HasMoreTokens() ) \ + { \ + wxString token = tkz.GetNextToken(); \ + token.Trim(true); \ + token.Trim(false); + +#define WX_PG_TOKENIZER1_END() \ + } + + +// +// 2nd version: tokens are surrounded by DELIMITERs (for example, C-style +// strings). TOKENIZER2 must use custom code (a class) for full compliance with +// " surrounded strings with \" inside. +// +// class implementation is in propgrid.cpp +// + +class WXDLLIMPEXP_PROPGRID wxPGStringTokenizer +{ +public: + wxPGStringTokenizer( const wxString& str, wxChar delimeter ); + ~wxPGStringTokenizer(); + + bool HasMoreTokens(); // not const so we can do some stuff in it + wxString GetNextToken(); + +protected: + const wxString* m_str; + wxString::const_iterator m_curPos; + wxString m_readyToken; + wxUniChar m_delimeter; +}; + +#define WX_PG_TOKENIZER2_BEGIN(WXSTRING,DELIMITER) \ + wxPGStringTokenizer tkz(WXSTRING,DELIMITER); \ + while ( tkz.HasMoreTokens() ) \ + { \ + wxString token = tkz.GetNextToken(); + +#define WX_PG_TOKENIZER2_END() \ + } + +#endif + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_PROPGRIDDEFS_H_ diff --git a/include/wx/propgrid/propgridiface.h b/include/wx/propgrid/propgridiface.h new file mode 100644 index 0000000000..68634c8023 --- /dev/null +++ b/include/wx/propgrid/propgridiface.h @@ -0,0 +1,1542 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgeid/propgridiface.h +// Purpose: wxPropertyGridInterface class +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-24 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef __WX_PROPGRID_PROPGRIDIFACE_H__ +#define __WX_PROPGRID_PROPGRIDIFACE_H__ + +#include "wx/propgrid/property.h" +#include "wx/propgrid/propgridpagestate.h" + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** @section wxPGPropArgCls + + Most property grid functions have this type as their argument, as it can + convey a property by either a pointer or name. +*/ +class WXDLLIMPEXP_PROPGRID wxPGPropArgCls +{ +public: + wxPGPropArgCls() { } + wxPGPropArgCls( const wxPGProperty* property ) + { + m_ptr.property = (wxPGProperty*) property; + m_isName = false; + } + wxPGPropArgCls( const wxString& str ) + { + m_ptr.name = &str; + m_isName = 1; + } + wxPGPropArgCls( const wxPGPropArgCls& id ) + { + m_ptr = id.m_ptr; + m_isName = id.m_isName; + } + // This is only needed for wxPython bindings + wxPGPropArgCls( wxString* str, bool WXUNUSED(deallocPtr) ) + { + m_ptr.name = str; + m_isName = 3; // Like 1, but causes ptr to be deallocated in dtor + } + ~wxPGPropArgCls() + { + if ( m_isName == 3 ) + delete m_ptr.name; + } + wxPGProperty* GetPtr() const + { + wxCHECK( !m_isName, NULL ); + return m_ptr.property; + } + wxPGPropArgCls( const wxChar* str ) + { + m_ptr.rawname = str; + m_isName = 2; + } + /** This constructor is required for NULL. */ + wxPGPropArgCls( int ) + { + m_ptr.property = (wxPGProperty*) NULL; + m_isName = false; + } + wxPGProperty* GetPtr( wxPropertyGridInterface* methods ) const; + wxPGProperty* GetPtr( const wxPropertyGridInterface* methods ) const + { + return GetPtr((wxPropertyGridInterface*)methods); + } + wxPGProperty* GetPtr0() const { return m_ptr.property; } + unsigned char HasName() const { return m_isName; } + const wxString& GetName() const { return *m_ptr.name; } +private: + union + { + wxPGProperty* property; + const wxChar* rawname; + const wxString* name; + } m_ptr; + unsigned char m_isName; +}; + +#endif + +typedef const wxPGPropArgCls& wxPGPropArg; + +// ----------------------------------------------------------------------- + +WXDLLIMPEXP_PROPGRID +void wxPGTypeOperationFailed( const wxPGProperty* p, + const wxChar* typestr, + const wxChar* op ); +WXDLLIMPEXP_PROPGRID +void wxPGGetFailed( const wxPGProperty* p, const wxChar* typestr ); + +// ----------------------------------------------------------------------- + +// Helper macro that does necessary preparations when calling +// some wxPGProperty's member function. +#define wxPG_PROP_ARG_CALL_PROLOG_0(PROPERTY) \ + PROPERTY *p = (PROPERTY*)id.GetPtr(this); \ + if ( !p ) return; + +#define wxPG_PROP_ARG_CALL_PROLOG_RETVAL_0(PROPERTY, RETVAL) \ + PROPERTY *p = (PROPERTY*)id.GetPtr(this); \ + if ( !p ) return RETVAL; + +#define wxPG_PROP_ARG_CALL_PROLOG() \ + wxPG_PROP_ARG_CALL_PROLOG_0(wxPGProperty) + +#define wxPG_PROP_ARG_CALL_PROLOG_RETVAL(RVAL) \ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL_0(wxPGProperty, RVAL) + +#define wxPG_PROP_ID_CONST_CALL_PROLOG() \ + wxPG_PROP_ARG_CALL_PROLOG_0(const wxPGProperty) + +#define wxPG_PROP_ID_CONST_CALL_PROLOG_RETVAL(RVAL) \ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL_0(const wxPGProperty, RVAL) + +// ----------------------------------------------------------------------- + + +/** @class wxPropertyGridInterface + + Most of the shared property manipulation interface shared by wxPropertyGrid, + wxPropertyGridPage, and wxPropertyGridManager is defined in this class. + + @remarks + - In separate wxPropertyGrid component this class was known as + wxPropertyContainerMethods. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridInterface +{ +public: + + /** Destructor */ + virtual ~wxPropertyGridInterface() { } + + /** Adds choice to a property that can accept one. + @remarks + - If you need to make sure that you modify only the set of choices of + a single property (and not also choices of other properties with + initially identical set), call + wxPropertyGrid::SetPropertyChoicesPrivate. + - This usually only works for wxEnumProperty and derivatives + (wxFlagsProperty can get accept new items but its items may not get + updated). + */ + void AddPropertyChoice( wxPGPropArg id, + const wxString& label, + int value = wxPG_INVALID_VALUE ); + + /** + Appends property to the list. + + wxPropertyGrid assumes ownership of the object. + Becomes child of most recently added category. + @remarks + - wxPropertyGrid takes the ownership of the property pointer. + - If appending a category with name identical to a category already in + the wxPropertyGrid, then newly created category is deleted, and most + recently added category (under which properties are appended) is set + to the one with same name. This allows easier adding of items to same + categories in multiple passes. + - Does not automatically redraw the control, so you may need to call + Refresh when calling this function after control has been shown for + the first time. + */ + wxPGProperty* Append( wxPGProperty* property ); + + wxPGProperty* AppendIn( wxPGPropArg id, wxPGProperty* newproperty ); + + /** + In order to add new items into a property with fixed children (for + instance, wxFlagsProperty), you need to call this method. After + populating has been finished, you need to call EndAddChildren. + */ + void BeginAddChildren( wxPGPropArg id ); + + /** Deletes all properties. + */ + virtual void Clear() = 0; + + /** Deselect current selection, if any. Returns true if success + (ie. validator did not intercept). */ + bool ClearSelection(); + + /** Resets modified status of all properties. + */ + void ClearModifiedStatus() + { + SetPropertyModifiedStatus(m_pState->m_properties, false); + m_pState->m_anyModified = false; + } + + /** Collapses given category or property with children. + Returns true if actually collapses. + */ + bool Collapse( wxPGPropArg id ); + + /** Collapses all items that can be collapsed. + + @return + Return false if failed (may fail if editor value cannot be validated). + */ + bool CollapseAll() { return ExpandAll(false); } + + /** + Changes value of a property, as if from an editor. + Use this instead of SetPropertyValue() if you need the value to run + through validation process, and also send the property change event. + + @return + Returns true if value was successfully changed. + */ + bool ChangePropertyValue( wxPGPropArg id, wxVariant newValue ); + + /** Resets value of a property to its default. */ + bool ClearPropertyValue( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + p->SetValue(p->GetDefaultValue()); + RefreshProperty(p); + return true; + } + + /** + Deletes a property by id. If category is deleted, all children are + automatically deleted as well. + */ + void DeleteProperty( wxPGPropArg id ); + + /** Deletes choice from a property. + + If selected item is deleted, then the value is set to unspecified. + + See AddPropertyChoice for more details. + */ + void DeletePropertyChoice( wxPGPropArg id, int index ); + + /** Disables property. */ + bool DisableProperty( wxPGPropArg id ) { return EnableProperty(id,false); } + + /** + Returns true if all property grid data changes have been committed. + + Usually only returns false if value in active editor has been + invalidated by a wxValidator. + */ + bool EditorValidate(); + + /** + Enables or disables property, depending on whether enable is true or + false. + */ + bool EnableProperty( wxPGPropArg id, bool enable = true ); + + /** Called after population of property with fixed children has finished. + */ + void EndAddChildren( wxPGPropArg id ); + + /** Expands given category or property with children. + Returns true if actually expands. + */ + bool Expand( wxPGPropArg id ); + + /** Expands all items that can be expanded. + */ + bool ExpandAll( bool expand = true ); + + /** Returns list of expanded properties. + */ + wxArrayPGProperty GetExpandedProperties() const + { + wxArrayPGProperty array; + GetPropertiesWithFlag(&array, wxPG_PROP_COLLAPSED, true, + wxPG_ITERATE_ALL_PARENTS_RECURSIVELY|wxPG_ITERATE_HIDDEN); + return array; + } + + /** Returns id of first child of given property. + @remarks + Does not return sub-properties! + */ + wxPGProperty* GetFirstChild( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + + if ( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE) ) + return wxNullProperty; + + return p->Item(0); + } + + //@{ + /** Returns iterator class instance. + @param flags + See @ref propgrid_iterator_flags. Value wxPG_ITERATE_DEFAULT causes + iteration over everything except private child properties. + @param firstProp + Property to start iteration from. If NULL, then first child of root + is used. + @param startPos + Either wxTOP or wxBOTTOM. wxTOP will indicate that iterations start + from the first property from the top, and wxBOTTOM means that the + iteration will instead begin from bottommost valid item. + */ + wxPropertyGridIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, + wxPGProperty* firstProp = NULL ) + { + return wxPropertyGridIterator( m_pState, flags, firstProp ); + } + + wxPropertyGridConstIterator + GetIterator( int flags = wxPG_ITERATE_DEFAULT, + wxPGProperty* firstProp = NULL ) const + { + return wxPropertyGridConstIterator( m_pState, flags, firstProp ); + } + + wxPropertyGridIterator GetIterator( int flags, int startPos ) + { + return wxPropertyGridIterator( m_pState, flags, startPos ); + } + + wxPropertyGridConstIterator GetIterator( int flags, int startPos ) const + { + return wxPropertyGridConstIterator( m_pState, flags, startPos ); + } + //@} + + /** Returns id of first item, whether it is a category or property. + @param flags + @link iteratorflags List of iterator flags@endlink + */ + wxPGProperty* GetFirst( int flags = wxPG_ITERATE_ALL ) + { + wxPropertyGridIterator it( m_pState, flags, wxNullProperty, 1 ); + return *it; + } + + const wxPGProperty* GetFirst( int flags = wxPG_ITERATE_ALL ) const + { + return ((wxPropertyGridInterface*)this)->GetFirst(flags); + } + + /** + Returns id of property with given name (case-sensitive). + + If there is no property with such name, returned property id is invalid + ( i.e. it will return false with IsOk method). + @remarks + - Sub-properties (i.e. properties which have parent that is not + category or root) can not be accessed globally by their name. + Instead, use "<property>.<subproperty>" in place of "<subproperty>". + */ + wxPGProperty* GetProperty( const wxString& name ) const + { + return GetPropertyByName(name); + } + + /** Returns map-like storage of property's attributes. + @remarks + Note that if extra style wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES is set, + then builtin-attributes are not included in the storage. + */ + const wxPGAttributeStorage& GetPropertyAttributes( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(*((const wxPGAttributeStorage*)NULL)); + return p->GetAttributes(); + } + + /** Adds to 'targetArr' pointers to properties that have given + flags 'flags' set. However, if 'inverse' is set to true, then + only properties without given flags are stored. + @param flags + Property flags to use. + @param iterFlags + Iterator flags to use. Default is everything expect private children. + */ + void GetPropertiesWithFlag( wxArrayPGProperty* targetArr, + wxPGProperty::FlagType flags, + bool inverse = false, + int iterFlags = wxPG_ITERATE_PROPERTIES | + wxPG_ITERATE_HIDDEN | + wxPG_ITERATE_CATEGORIES) const; + + /** Returns value of given attribute. If none found, returns NULL-variant. + */ + wxVariant GetPropertyAttribute( wxPGPropArg id, + const wxString& attrName ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullVariant) + return p->GetAttribute(attrName); + } + + /** Returns pointer of property's nearest parent category. If no category + found, returns NULL. + */ + wxPropertyCategory* GetPropertyCategory( wxPGPropArg id ) const + { + wxPG_PROP_ID_CONST_CALL_PROLOG_RETVAL(NULL) + return m_pState->GetPropertyCategory(p); + } + +#ifndef SWIG + /** Returns client data (void*) of a property. */ + void* GetPropertyClientData( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetClientData(); + } +#endif + + /** + Returns first property which label matches given string. + + NULL if none found. Note that this operation is extremely slow when + compared to GetPropertyByName(). + */ + wxPGProperty* GetPropertyByLabel( const wxString& label ) const; + + /** Returns property with given name. NULL if none found. + */ + wxPGProperty* GetPropertyByName( const wxString& name ) const; + + /** Returns child property 'subname' of property 'name'. Same as + calling GetPropertyByName("name.subname"), albeit slightly faster. + */ + wxPGProperty* GetPropertyByName( const wxString& name, + const wxString& subname ) const; + + /** Returns writable reference to property's list of choices (and relevant + values). If property does not have any choices, will return reference + to an invalid set of choices that will return false on IsOk call. + */ + wxPGChoices& GetPropertyChoices( wxPGPropArg id ); + + /** Returns property's editor. */ + const wxPGEditor* GetPropertyEditor( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetEditorClass(); + } + + /** Returns help string associated with a property. */ + wxString GetPropertyHelpString( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetHelpString(); + } + + /** Returns property's custom value image (NULL of none). */ + wxBitmap* GetPropertyImage( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetValueImage(); + } + + /** Returns property's position under its parent. */ + unsigned int GetPropertyIndex( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(INT_MAX) + return p->GetIndexInParent(); + } + + /** Returns label of a property. */ + const wxString& GetPropertyLabel( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetLabel(); + } + + /** Returns name of a property, by which it is globally accessible. */ + wxString GetPropertyName( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetName(); + } + + /** Returns parent item of a property. */ + wxPGProperty* GetPropertyParent( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + return p->GetParent(); + } + +#if wxUSE_VALIDATORS + /** Returns validator of a property as a reference, which you + can pass to any number of SetPropertyValidator. + */ + wxValidator* GetPropertyValidator( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetValidator(); + } +#endif + + /** Returns value as wxVariant. To get wxObject pointer from it, + you will have to use WX_PG_VARIANT_TO_WXOBJECT(VARIANT,CLASSNAME) macro. + + If property value is unspecified, Null variant is returned. + */ + wxVariant GetPropertyValue( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxVariant()) + return p->GetValue(); + } + + wxString GetPropertyValueAsString( wxPGPropArg id ) const; + long GetPropertyValueAsLong( wxPGPropArg id ) const; + unsigned long GetPropertyValueAsULong( wxPGPropArg id ) const + { + return (unsigned long) GetPropertyValueAsLong(id); + } +#ifndef SWIG + int GetPropertyValueAsInt( wxPGPropArg id ) const + { return (int)GetPropertyValueAsLong(id); } +#endif + bool GetPropertyValueAsBool( wxPGPropArg id ) const; + double GetPropertyValueAsDouble( wxPGPropArg id ) const; + wxObject* GetPropertyValueAsWxObjectPtr( wxPGPropArg id ) const; + void* GetPropertyValueAsVoidPtr( wxPGPropArg id ) const; + +#define wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(TYPENAME, DEFVAL) \ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(DEFVAL) \ + if ( p->m_value.GetType() != TYPENAME ) \ + { \ + wxPGGetFailed(p, TYPENAME); \ + return DEFVAL; \ + } + +#define wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK(TYPENAME, DEFVAL) \ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(DEFVAL) \ + if ( p->m_value.GetType() != TYPENAME ) \ + return DEFVAL; \ + + wxArrayString GetPropertyValueAsArrayString( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("arrstring"), + wxArrayString()) + return p->m_value.GetArrayString(); + } + + wxPoint GetPropertyValueAsPoint( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxPoint"), wxPoint()) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxPoint); + } + + wxSize GetPropertyValueAsSize( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxSize"), wxSize()) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxSize); + } + + wxLongLong_t GetPropertyValueAsLongLong( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK(wxT("wxLongLong"), + (long) GetPropertyValueAsLong(id)) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxLongLong).GetValue(); + } + + wxULongLong_t GetPropertyValueAsULongLong( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK(wxT("wxULongLong"), + (unsigned long) GetPropertyValueAsULong(id)) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxULongLong).GetValue(); + } + + wxArrayInt GetPropertyValueAsArrayInt( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxArrayInt"), + wxArrayInt()) + wxArrayInt arr = WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxArrayInt); + return arr; + } + +#if wxUSE_DATETIME + wxDateTime GetPropertyValueAsDateTime( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxDateTime()) + + if ( wxStrcmp(p->m_value.GetType(), wxT("datetime")) != 0 ) + { + wxPGGetFailed(p, wxT("datetime")); + return wxDateTime(); + } + return p->m_value.GetDateTime(); + } +#endif + +#ifndef SWIG + /** Returns a wxVariant list containing wxVariant versions of all + property values. Order is not guaranteed. + @param flags + Use wxPG_KEEP_STRUCTURE to retain category structure; each sub + category will be its own wxVariantList of wxVariant. + Use wxPG_INC_ATTRIBUTES to include property attributes as well. + Each attribute will be stored as list variant named + "@@<propname>@@attr." + @remarks + */ + wxVariant GetPropertyValues( const wxString& listname = wxEmptyString, + wxPGProperty* baseparent = NULL, long flags = 0 ) const + { + return m_pState->DoGetPropertyValues(listname, baseparent, flags); + } +#endif + + wxString GetPropertyValueType( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetValueType(); + } + + /** Returns currently selected property. */ + wxPGProperty* GetSelection() const + { + return m_pState->GetSelection(); + } + +#ifndef SWIG + wxPropertyGridPageState* GetState() const { return m_pState; } +#endif + + /** Similar to GetIterator(), but instead returns wxPGVIterator instance, + which can be useful for forward-iterating through arbitrary property + containers. + + @param flags + See @ref propgrid_iterator_flags. + */ + virtual wxPGVIterator GetVIterator( int flags ) const; + + /** Hides or reveals a property. + @param hide + If true, hides property, otherwise reveals it. + @param flags + By default changes are applied recursively. Set this paramter + wxPG_DONT_RECURSE to prevent this. + */ + bool HideProperty( wxPGPropArg id, + bool hide = true, + int flags = wxPG_RECURSE ); + +#if wxPG_INCLUDE_ADVPROPS + /** Initializes *all* property types. Causes references to most object + files in the library, so calling this may cause significant increase + in executable size when linking with static library. + */ + static void InitAllTypeHandlers(); +#else + static void InitAllTypeHandlers() { } +#endif + + //@{ + /** Inserts property to the property container. + + @param priorThis + New property is inserted just prior to this. Available only + in the first variant. There are two versions of this function + to allow this parameter to be either an id or name to + a property. + + @param newproperty + Pointer to the inserted property. wxPropertyGrid will take + ownership of this object. + + @param parent + New property is inserted under this category. Available only + in the second variant. There are two versions of this function + to allow this parameter to be either an id or name to + a property. + + @param index + Index under category. Available only in the second variant. + If index is < 0, property is appended in category. + + @return + Returns id for the property, + + @remarks + + - wxPropertyGrid takes the ownership of the property pointer. + + - While Append may be faster way to add items, make note that when + both types of data storage (categoric and + non-categoric) are active, Insert becomes even more slow. This is + especially true if current mode is non-categoric. + + Example of use: + + @code + + // append category + wxPGProperty* my_cat_id = propertygrid->Append( + new wxPropertyCategory("My Category") ); + + ... + + // insert into category - using second variant + wxPGProperty* my_item_id_1 = propertygrid->Insert( + my_cat_id, 0, new wxStringProperty("My String 1") ); + + // insert before to first item - using first variant + wxPGProperty* my_item_id_2 = propertygrid->Insert( + my_item_id, new wxStringProperty("My String 2") ); + + @endcode + + */ + wxPGProperty* Insert( wxPGPropArg priorThis, wxPGProperty* newproperty ); + wxPGProperty* Insert( wxPGPropArg parent, + int index, + wxPGProperty* newproperty ); + //@} + + /** Returns true if property is a category. */ + bool IsPropertyCategory( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->IsCategory(); + } + + /** Inserts choice to a property that can accept one. + + See AddPropertyChoice for more details. + */ + void InsertPropertyChoice( wxPGPropArg id, + const wxString& label, + int index, + int value = wxPG_INVALID_VALUE ); + + /** Returns true if property is enabled. */ + bool IsPropertyEnabled( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return (!(p->GetFlags() & wxPG_PROP_DISABLED))?true:false; + } + + /** + Returns true if given property is expanded. + + Naturally, always returns false for properties that cannot be expanded. + */ + bool IsPropertyExpanded( wxPGPropArg id ) const; + + /** + Returns true if property has been modified after value set or modify + flag clear by software. + */ + bool IsPropertyModified( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return ( (p->GetFlags() & wxPG_PROP_MODIFIED) ? true : false ); + } + + /** + Returns true if property is shown (ie hideproperty with true not + called for it). + */ + bool IsPropertyShown( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return (!(p->GetFlags() & wxPG_PROP_HIDDEN))?true:false; + } + + /** Returns true if property value is set to unspecified. + */ + bool IsPropertyValueUnspecified( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->IsValueUnspecified(); + } + + /** + Disables (limit = true) or enables (limit = false) wxTextCtrl editor of + a property, if it is not the sole mean to edit the value. + */ + void LimitPropertyEditing( wxPGPropArg id, bool limit = true ); + + /** If state is shown in it's grid, refresh it now. + */ + virtual void RefreshGrid( wxPropertyGridPageState* state = NULL ); + +#if wxPG_INCLUDE_ADVPROPS + /** + Initializes additional property editors (SpinCtrl etc.). Causes + references to most object files in the library, so calling this may + cause significant increase in executable size when linking with static + library. + */ + static void RegisterAdditionalEditors(); +#else + static void RegisterAdditionalEditors() { } +#endif + + /** Replaces property with id with newly created property. For example, + this code replaces existing property named "Flags" with one that + will have different set of items: + @code + pg->ReplaceProperty("Flags", + wxFlagsProperty("Flags", wxPG_LABEL, newItems)) + @endcode + For more info, see wxPropertyGrid::Insert. + */ + wxPGProperty* ReplaceProperty( wxPGPropArg id, wxPGProperty* property ); + + /** @anchor propgridinterface_editablestate_flags + + Flags for wxPropertyGridInterface::SaveEditableState() and + wxPropertyGridInterface::RestoreEditableState(). + */ + enum EditableStateFlags + { + /** Include selected property. */ + SelectionState = 0x01, + /** Include expanded/collapsed property information. */ + ExpandedState = 0x02, + /** Include scrolled position. */ + ScrollPosState = 0x04, + /** Include selected page information. + Only applies to wxPropertyGridManager. */ + PageState = 0x08, + /** Include splitter position. Stored for each page. */ + SplitterPosState = 0x10, + + /** + Include all supported user editable state information. + This is usually the default value. */ + AllStates = SelectionState | + ExpandedState | + ScrollPosState | + PageState | + SplitterPosState + }; + + /** + Restores user-editable state. + + See also wxPropertyGridInterface::SaveEditableState(). + + @param src + String generated by SaveEditableState. + + @param restoreStates + Which parts to restore from source string. See @ref + propgridinterface_editablestate_flags "list of editable state + flags". + + @return + False if there was problem reading the string. + + @remarks + If some parts of state (such as scrolled or splitter position) fail to + restore correctly, please make sure that you call this function after + wxPropertyGrid size has been set (this may sometimes be tricky when + sizers are used). + */ + bool RestoreEditableState( const wxString& src, + int restoreStates = AllStates ); + + /** + Used to acquire user-editable state (selected property, expanded + properties, scrolled position, splitter positions). + + @param includedStates + Which parts of state to include. See @ref + propgridinterface_editablestate_flags "list of editable state flags". + */ + wxString SaveEditableState( int includedStates = AllStates ) const; + + /** + Lets user to set the strings listed in the choice dropdown of a + wxBoolProperty. Defaults are "True" and "False", so changing them to, + say, "Yes" and "No" may be useful in some less technical applications. + */ + static void SetBoolChoices( const wxString& trueChoice, + const wxString& falseChoice ); + + /** Sets or clears flag(s) of all properties in given array. + @param flags + Property flags to set or clear. + @param inverse + Set to true if you want to clear flag instead of setting them. + */ + void SetPropertiesFlag( const wxArrayPGProperty& srcArr, + wxPGProperty::FlagType flags, + bool inverse = false ); + + /** Sets an attribute for this property. + @param name + Text identifier of attribute. See @ref propgrid_property_attributes. + @param value + Value of attribute. + @param argFlags + Optional. Use wxPG_RECURSE to set the attribute to child properties + recursively. + */ + void SetPropertyAttribute( wxPGPropArg id, + const wxString& attrName, + wxVariant value, + long argFlags = 0 ) + { + DoSetPropertyAttribute(id,attrName,value,argFlags); + } + + /** Sets attributes from a wxPGAttributeStorage. + */ + void SetPropertyAttributes( wxPGPropArg id, + const wxPGAttributeStorage& attributes ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetAttributes(attributes); + } + + /** Sets text, bitmap, and colours for given column's cell. + + @remarks + - You can set label cell by setting column to 0. + - You can use wxPG_LABEL as text to use default text for column. + */ + void SetPropertyCell( wxPGPropArg id, + int column, + const wxString& text = wxEmptyString, + const wxBitmap& bitmap = wxNullBitmap, + const wxColour& fgCol = wxNullColour, + const wxColour& bgCol = wxNullColour ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetCell( column, new wxPGCell(text, bitmap, fgCol, bgCol) ); + } + + /** Set choices of a property to specified set of labels and values. + + @remarks + This operation clears the property value. + */ + void SetPropertyChoices( wxPGPropArg id, wxPGChoices& choices) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetChoices(choices); + } + + + /** + If property's set of choices is shared, then calling this method + converts it to private. + */ + void SetPropertyChoicesExclusive( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetChoicesExclusive(); + } + +#ifndef SWIG + /** Sets client data (void*) of a property. + @remarks + This untyped client data has to be deleted manually. + */ + void SetPropertyClientData( wxPGPropArg id, void* clientData ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetClientData(clientData); + } + + /** Sets editor for a property. + + @param editor + For builtin editors, use wxPGEditor_X, where X is builtin editor's + name (TextCtrl, Choice, etc. see wxPGEditor documentation for full + list). + + For custom editors, use pointer you received from + wxPropertyGrid::RegisterEditorClass(). + */ + void SetPropertyEditor( wxPGPropArg id, const wxPGEditor* editor ) + { + wxPG_PROP_ARG_CALL_PROLOG() + wxCHECK_RET( editor, wxT("unknown/NULL editor") ); + p->SetEditor(editor); + RefreshProperty(p); + } +#endif + + /** Sets editor control of a property. As editor argument, use + editor name string, such as "TextCtrl" or "Choice". + */ + void SetPropertyEditor( wxPGPropArg id, const wxString& editorName ) + { + SetPropertyEditor(id,GetEditorByName(editorName)); + } + + /** Sets label of a property. + @remarks + This is the only way to set property's name. There is not + wxPGProperty::SetLabel() method. + */ + void SetPropertyLabel( wxPGPropArg id, const wxString& newproplabel ); + + /** Set modified status of a property and all its children. + */ + void SetPropertyModifiedStatus( wxPGPropArg id, bool modified ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetModifiedStatus(modified); + } + + /** + Sets property (and, recursively, its children) to have read-only value. + In other words, user cannot change the value in the editor, but they + can still copy it. + @remarks + This is mainly for use with textctrl editor. Not all other editors fully + support it. + @param flags + By default changes are applied recursively. Set this paramter + wxPG_DONT_RECURSE to prevent this. + */ + void SetPropertyReadOnly( wxPGPropArg id, + bool set = true, + int flags = wxPG_RECURSE ) + { + wxPG_PROP_ARG_CALL_PROLOG() + if ( flags & wxPG_RECURSE ) + p->SetFlagRecursively(wxPG_PROP_READONLY, set); + else + p->SetFlag(wxPG_PROP_READONLY); + } + + /** Sets property's value to unspecified. + If it has children (it may be category), then the same thing is done to + them. + */ + void SetPropertyValueUnspecified( wxPGPropArg id ); + +#ifndef SWIG + /** Sets various property values from a list of wxVariants. If property with + name is missing from the grid, new property is created under given + default category (or root if omitted). + */ + void SetPropertyValues( const wxVariantList& list, + wxPGPropArg defaultCategory = wxNullProperty ) + { + wxPGProperty *p; + if ( defaultCategory.HasName() ) p = defaultCategory.GetPtr(this); + else p = defaultCategory.GetPtr0(); + m_pState->DoSetPropertyValues(list, p); + } + + void SetPropertyValues( const wxVariant& list, + wxPGPropArg defaultCategory = wxNullProperty ) + { + SetPropertyValues(list.GetList(),defaultCategory); + } +#endif + + /** Associates the help string with property. + @remarks + By default, text is shown either in the manager's "description" + text box or in the status bar. If extra window style + wxPG_EX_HELP_AS_TOOLTIPS is used, then the text will appear as a + tooltip. + */ + void SetPropertyHelpString( wxPGPropArg id, const wxString& helpString ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetHelpString(helpString); + } + + /** Set wxBitmap in front of the value. + @remarks + - Bitmap will be scaled to a size returned by + wxPropertyGrid::GetImageSize(); + */ + void SetPropertyImage( wxPGPropArg id, wxBitmap& bmp ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetValueImage(bmp); + RefreshProperty(p); + } + + /** Sets max length of property's text. + */ + bool SetPropertyMaxLength( wxPGPropArg id, int maxLen ); + +#if wxUSE_VALIDATORS + /** Sets validator of a property. + */ + void SetPropertyValidator( wxPGPropArg id, const wxValidator& validator ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetValidator(validator); + } +#endif + +#ifndef SWIG + /** Sets value (long integer) of a property. + */ + void SetPropertyValue( wxPGPropArg id, long value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + /** Sets value (integer) of a property. + */ + void SetPropertyValue( wxPGPropArg id, int value ) + { + wxVariant v((long)value); + SetPropVal( id, v ); + } + /** Sets value (floating point) of a property. + */ + void SetPropertyValue( wxPGPropArg id, double value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + /** Sets value (bool) of a property. + */ + void SetPropertyValue( wxPGPropArg id, bool value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + void SetPropertyValue( wxPGPropArg id, const wxChar* value ) + { + SetPropertyValueString( id, wxString(value) ); + } + void SetPropertyValue( wxPGPropArg id, const wxString& value ) + { + SetPropertyValueString( id, value ); + } + + /** Sets value (wxArrayString) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxArrayString& value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + +#if wxUSE_DATETIME + void SetPropertyValue( wxPGPropArg id, const wxDateTime& value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } +#endif + + /** Sets value (wxObject*) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxObject* value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + void SetPropertyValue( wxPGPropArg id, wxObject& value ) + { + wxVariant v(&value); + SetPropVal( id, v ); + } + + /** Sets value (wxPoint&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxPoint& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } + /** Sets value (wxSize&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxSize& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } + /** Sets value (wxLongLong&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxLongLong_t value ) + { + wxVariant v = WXVARIANT(wxLongLong(value)); + SetPropVal( id, v ); + } + /** Sets value (wxULongLong&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxULongLong_t value ) + { + wxVariant v = WXVARIANT(wxULongLong(value)); + SetPropVal( id, v ); + } + /** Sets value (wxArrayInt&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxArrayInt& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } +#endif // !SWIG + + /** Sets value (wxString) of a property. + + @remarks + This method uses wxPGProperty::SetValueFromString, which all properties + should implement. This means that there should not be a type error, + and instead the string is converted to property's actual value type. + */ + void SetPropertyValueString( wxPGPropArg id, const wxString& value ); + + /** Sets value (wxVariant&) of a property. + + @remarks + Use wxPropertyGrid::ChangePropertyValue() instead if you need to run + through validation process and send property change event. + */ + void SetPropertyValue( wxPGPropArg id, wxVariant value ) + { + SetPropVal( id, value ); + } + +#ifndef SWIG + /** Sets value (wxVariant&) of a property. Same as SetPropertyValue, but + accepts reference. */ + void SetPropVal( wxPGPropArg id, wxVariant& value ); +#endif + + /** Adjusts how wxPropertyGrid behaves when invalid value is entered + in a property. + @param vfbFlags + See @link vfbflags list of valid flags values@endlink + */ + void SetValidationFailureBehavior( int vfbFlags ); + +#ifdef SWIG + %pythoncode { + def MapType(class_,factory): + "Registers Python type/class to property mapping.\n\nfactory: Property builder function/class." + global _type2property + try: + mappings = _type2property + except NameError: + raise AssertionError("call only after a propertygrid or manager instance constructed") + + mappings[class_] = factory + + + def DoDefaultTypeMappings(self): + "Map built-in properties." + global _type2property + try: + mappings = _type2property + + return + except NameError: + mappings = {} + _type2property = mappings + + mappings[str] = StringProperty + mappings[unicode] = StringProperty + mappings[int] = IntProperty + mappings[float] = FloatProperty + mappings[bool] = BoolProperty + mappings[list] = ArrayStringProperty + mappings[tuple] = ArrayStringProperty + mappings[wx.Font] = FontProperty + mappings[wx.Colour] = ColourProperty + "mappings[wx.Size] = SizeProperty" + "mappings[wx.Point] = PointProperty" + "mappings[wx.FontData] = FontDataProperty" + + def DoDefaultValueTypeMappings(self): + "Map pg value type ids to getter methods." + global _vt2getter + try: + vt2getter = _vt2getter + + return + except NameError: + vt2getter = {} + _vt2getter = vt2getter + + def GetPropertyValues(self,dict_=None, as_strings=False, inc_attributes=False): + "Returns values in the grid." + "" + "dict_: if not given, then a new one is created. dict_ can be" + " object as well, in which case it's __dict__ is used." + "as_strings: if True, then string representations of values" + " are fetched instead of native types. Useful for config and such." + "inc_attributes: if True, then property attributes are added" + " as @<propname>@<attr>." + "" + "Return value: dictionary with values. It is always a dictionary," + "so if dict_ was object with __dict__ attribute, then that attribute" + "is returned." + + if dict_ is None: + dict_ = {} + elif hasattr(dict_,'__dict__'): + dict_ = dict_.__dict__ + + if not as_strings: + getter = self.GetPropertyValue + else: + getter = self.GetPropertyValueAsString + + it = self.GetVIterator(PG_ITERATE_PROPERTIES) + while not it.AtEnd(): + p = it.GetProperty() + name = p.GetName() + + dict_[name] = getter(p) + + if inc_attributes: + attrs = p.GetAttributes() + if attrs and len(attrs): + dict_['@%s@attr'%name] = attrs + + it.Next() + + return dict_ + + GetValues = GetPropertyValues + + + def SetPropertyValues(self,dict_): + "Sets property values from dict_, which can be either\ndictionary or an object with __dict__ attribute." + "" + "autofill: If true, keys with not relevant properties" + " are auto-created. For more info, see AutoFill." + "" + "Notes:" + " * Keys starting with underscore are ignored." + " * Attributes can be set with entries named @<propname>@<attr>." + "" + + autofill = False + + if dict_ is None: + dict_ = {} + elif hasattr(dict_,'__dict__'): + dict_ = dict_.__dict__ + + attr_dicts = [] + + def set_sub_obj(k0,dict_): + for k,v in dict_.iteritems(): + if k[0] != '_': + if k.endswith('@attr'): + attr_dicts.append((k[1:-5],v)) + else: + try: + self.SetPropertyValue(k,v) + except: + try: + if autofill: + self._AutoFillOne(k0,k,v) + continue + except: + if isinstance(v,dict): + set_sub_obj(k,v) + elif hasattr(v,'__dict__'): + set_sub_obj(k,v.__dict__) + + + for k,v in attr_dicts: + p = GetPropertyByName(k) + if not p: + raise AssertionError("No such property: '%s'"%k) + for an,av in v.iteritems(): + p.SetAttribute(an, av) + + + cur_page = False + is_manager = isinstance(self,PropertyGridManager) + + try: + set_sub_obj(self.GetGrid().GetRoot(),dict_) + except: + import traceback + traceback.print_exc() + + self.Refresh() + + SetValues = SetPropertyValues + + def _AutoFillMany(self,cat,dict_): + for k,v in dict_.iteritems(): + self._AutoFillOne(cat,k,v) + + + def _AutoFillOne(self,cat,k,v): + global _type2property + + factory = _type2property.get(v.__class__,None) + + if factory: + self.AppendIn( cat, factory(k,k,v) ) + elif hasattr(v,'__dict__'): + cat2 = self.AppendIn( cat, PropertyCategory(k) ) + self._AutoFillMany(cat2,v.__dict__) + elif isinstance(v,dict): + cat2 = self.AppendIn( cat, PropertyCategory(k) ) + self._AutoFillMany(cat2,v) + elif not k.startswith('_'): + raise AssertionError("member '%s' is of unregisted type/class '%s'"%(k,v.__class__)) + + + def AutoFill(self,obj,parent=None): + "Clears properties and re-fills to match members and\nvalues of given object or dictionary obj." + + self.edited_objects[parent] = obj + + cur_page = False + is_manager = isinstance(self,PropertyGridManager) + + if not parent: + if is_manager: + page = self.GetCurrentPage() + page.Clear() + parent = page.GetRoot() + else: + self.Clear() + parent = self.GetGrid().GetRoot() + else: + it = self.GetIterator(PG_ITERATE_PROPERTIES, parent) + it.Next() # Skip the parent + while not it.AtEnd(): + p = it.GetProperty() + if not p.IsSomeParent(parent): + break + + self.DeleteProperty(p) + + name = p.GetName() + it.Next() + + if not is_manager or page == self.GetCurrentPage(): + self.Freeze() + cur_page = True + + try: + self._AutoFillMany(parent,obj.__dict__) + except: + import traceback + traceback.print_exc() + + if cur_page: + self.Thaw() + + def RegisterEditor(self, editor, editorName=None): + "Transform class into instance, if necessary." + if not isinstance(editor, PGEditor): + editor = editor() + if not editorName: + editorName = editor.__class__.__name__ + try: + self._editor_instances.append(editor) + except: + self._editor_instances = [editor] + RegisterEditor(editor, editorName) + + def GetPropertyClientData(self, p): + if isinstance(p, basestring): + p = self.GetPropertyByName(p) + return p.GetClientData() + + def SetPropertyClientData(self, p, data): + if isinstance(p, basestring): + p = self.GetPropertyByName(p) + return p.SetClientData(data) + } +#endif + + // GetPropertyByName With nice assertion error message. + wxPGProperty* GetPropertyByNameA( const wxString& name ) const; + + static wxPGEditor* GetEditorByName( const wxString& editorName ); + + virtual void RefreshProperty( wxPGProperty* p ) = 0; + +protected: + + // Returns page state data for given (sub) page (-1 means current page). + virtual wxPropertyGridPageState* GetPageState( int pageIndex ) const + { + if ( pageIndex <= 0 ) + return m_pState; + return NULL; + } + + virtual bool DoSelectPage( int WXUNUSED(index) ) { return true; } + + // Default call's m_pState's BaseGetPropertyByName + virtual wxPGProperty* DoGetPropertyByName( const wxString& name ) const; + +#ifndef SWIG + + // Deriving classes must set this (it must be only or current page). + wxPropertyGridPageState* m_pState; + + // Intermediate version needed due to wxVariant copying inefficiency + void DoSetPropertyAttribute( wxPGPropArg id, + const wxString& name, + wxVariant& value, long argFlags ); + + // Empty string object to return from member functions returning const + // wxString&. + wxString m_emptyString; + +private: + // Cannot be GetGrid() due to ambiguity issues. + wxPropertyGrid* GetPropertyGrid() + { + return m_pState->GetGrid(); + } + + // Cannot be GetGrid() due to ambiguity issues. + const wxPropertyGrid* GetPropertyGrid() const + { + return (const wxPropertyGrid*) m_pState->GetGrid(); + } +#endif // #ifndef SWIG + + friend class wxPropertyGrid; + friend class wxPropertyGridManager; +}; + +#endif // __WX_PROPGRID_PROPGRIDIFACE_H__ diff --git a/include/wx/propgrid/propgridpagestate.h b/include/wx/propgrid/propgridpagestate.h new file mode 100644 index 0000000000..5ff8ab5f57 --- /dev/null +++ b/include/wx/propgrid/propgridpagestate.h @@ -0,0 +1,692 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/propgridpagestate.h +// Purpose: wxPropertyGridPageState class +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-24 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_PROPGRIDPAGESTATE_H_ +#define _WX_PROPGRID_PROPGRIDPAGESTATE_H_ + +#include "wx/propgrid/property.h" + +// ----------------------------------------------------------------------- + +/** @section propgrid_hittestresult wxPropertyGridHitTestResult + + A return value from wxPropertyGrid::HitTest(), + contains all you need to know about an arbitrary location on the grid. +*/ +struct WXDLLIMPEXP_PROPGRID wxPropertyGridHitTestResult +{ + friend class wxPropertyGridPageState; +public: + + wxPGProperty* GetProperty() const { return property; } + + /** Column. -1 for margin. */ + int column; + + /** Index of splitter hit, -1 for none. */ + int splitter; + + /** If splitter hit, offset to that */ + int splitterHitOffset; + +private: + /** Property. NULL if empty space below properties was hit */ + wxPGProperty* property; +}; + +// ----------------------------------------------------------------------- + +#define wxPG_IT_CHILDREN(A) ((A)<<16) + +/** @section propgrid_iterator_flags wxPropertyGridIterator Flags + @{ + + NOTES: At lower 16-bits, there are flags to check if item will be included. + At higher 16-bits, there are same flags, but to instead check if children + will be included. +*/ + +enum wxPG_ITERATOR_FLAGS +{ + +/** + Iterate through 'normal' property items (does not include children of + aggregate or hidden items by default). +*/ +wxPG_ITERATE_PROPERTIES = wxPG_PROP_PROPERTY | + wxPG_PROP_MISC_PARENT | + wxPG_PROP_AGGREGATE | + wxPG_PROP_COLLAPSED | + wxPG_IT_CHILDREN(wxPG_PROP_MISC_PARENT) | + wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY), + +/** Iterate children of collapsed parents, and individual items that are hidden. +*/ +wxPG_ITERATE_HIDDEN = wxPG_PROP_HIDDEN | + wxPG_IT_CHILDREN(wxPG_PROP_COLLAPSED), + +/** + Iterate children of parent that is an aggregate property (ie has fixed + children). +*/ +wxPG_ITERATE_FIXED_CHILDREN = wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE) | + wxPG_ITERATE_PROPERTIES, + +/** Iterate categories. + Note that even without this flag, children of categories are still iterated + through. +*/ +wxPG_ITERATE_CATEGORIES = wxPG_PROP_CATEGORY | + wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY) | + wxPG_PROP_COLLAPSED, + +wxPG_ITERATE_ALL_PARENTS = wxPG_PROP_MISC_PARENT | + wxPG_PROP_AGGREGATE | + wxPG_PROP_CATEGORY, + +wxPG_ITERATE_ALL_PARENTS_RECURSIVELY = wxPG_ITERATE_ALL_PARENTS | + wxPG_IT_CHILDREN( + wxPG_ITERATE_ALL_PARENTS), + +wxPG_ITERATOR_FLAGS_ALL = wxPG_PROP_PROPERTY | + wxPG_PROP_MISC_PARENT | + wxPG_PROP_AGGREGATE | + wxPG_PROP_HIDDEN | + wxPG_PROP_CATEGORY | + wxPG_PROP_COLLAPSED, + +wxPG_ITERATOR_MASK_OP_ITEM = wxPG_ITERATOR_FLAGS_ALL, + +// (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY) +wxPG_ITERATOR_MASK_OP_PARENT = wxPG_ITERATOR_FLAGS_ALL, + +/** Combines all flags needed to iterate through visible properties + (ie hidden properties and children of collapsed parents are skipped). +*/ +wxPG_ITERATE_VISIBLE = wxPG_ITERATE_PROPERTIES | + wxPG_PROP_CATEGORY | + wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE), + +/** Iterate all items. +*/ +wxPG_ITERATE_ALL = wxPG_ITERATE_VISIBLE | + wxPG_ITERATE_HIDDEN, + +/** Iterate through individual properties (ie categories and children of + aggregate properties are skipped). +*/ +wxPG_ITERATE_NORMAL = wxPG_ITERATE_PROPERTIES | + wxPG_ITERATE_HIDDEN, + +/** Default iterator flags. +*/ +wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL + +}; + +/** @} +*/ + + +#define wxPG_ITERATOR_CREATE_MASKS(FLAGS, A, B) \ + A = (FLAGS ^ wxPG_ITERATOR_MASK_OP_ITEM) & \ + wxPG_ITERATOR_MASK_OP_ITEM & 0xFFFF; \ + B = ((FLAGS>>16) ^ wxPG_ITERATOR_MASK_OP_PARENT) & \ + wxPG_ITERATOR_MASK_OP_PARENT & 0xFFFF; + + +// Macro to test if children of PWC should be iterated through +#define wxPG_ITERATOR_PARENTEXMASK_TEST(PWC, PARENTMASK) \ + ( \ + !(PWC->GetFlags() & PARENTMASK) && \ + PWC->GetChildCount() \ + ) + + +// Base for wxPropertyGridIterator classes. +class WXDLLIMPEXP_PROPGRID wxPropertyGridIteratorBase +{ +public: + wxPropertyGridIteratorBase() + { + } + + void Assign( const wxPropertyGridIteratorBase& it ); + + bool AtEnd() const { return m_property == NULL; } + + /** Get current property. + */ + wxPGProperty* GetProperty() const { return m_property; } + + void Init( wxPropertyGridPageState* state, + int flags, + wxPGProperty* property, + int dir = 1 ); + + void Init( wxPropertyGridPageState* state, + int flags, + int startPos = wxTOP, + int dir = 0 ); + + /** Iterate to the next property. + */ + void Next( bool iterateChildren = true ); + + /** Iterate to the previous property. + */ + void Prev(); + + /** + Set base parent, ie a property when, in which iteration returns, it + ends. + + Default base parent is the root of the used wxPropertyGridPageState. + */ + void SetBaseParent( wxPGProperty* baseParent ) + { m_baseParent = baseParent; } + +protected: + + wxPGProperty* m_property; + +private: + wxPropertyGridPageState* m_state; + wxPGProperty* m_baseParent; + + // Masks are used to quickly exclude items + int m_itemExMask; + int m_parentExMask; +}; + + +#define wxPG_IMPLEMENT_ITERATOR(CLASS, PROPERTY, STATE) \ + CLASS( STATE* state, int flags = wxPG_ITERATE_DEFAULT, \ + PROPERTY* property = NULL, int dir = 1 ) \ + : wxPropertyGridIteratorBase() \ + { Init( (wxPropertyGridPageState*)state, flags, \ + (wxPGProperty*)property, dir ); } \ + CLASS( STATE* state, int flags, int startPos, int dir = 0 ) \ + : wxPropertyGridIteratorBase() \ + { Init( (wxPropertyGridPageState*)state, flags, startPos, dir ); } \ + CLASS() \ + : wxPropertyGridIteratorBase() \ + { \ + m_property = NULL; \ + } \ + CLASS( const CLASS& it ) \ + : wxPropertyGridIteratorBase( ) \ + { \ + Assign(it); \ + } \ + ~CLASS() \ + { \ + } \ + const CLASS& operator=( const CLASS& it ) \ + { \ + Assign(it); \ + return *this; \ + } \ + CLASS& operator++() { Next(); return *this; } \ + CLASS operator++(int) { CLASS it=*this;Next();return it; } \ + CLASS& operator--() { Prev(); return *this; } \ + CLASS operator--(int) { CLASS it=*this;Prev();return it; } \ + PROPERTY* operator *() const { return (PROPERTY*)m_property; } \ + static PROPERTY* OneStep( STATE* state, \ + int flags = wxPG_ITERATE_DEFAULT, \ + PROPERTY* property = NULL, \ + int dir = 1 ) \ + { \ + CLASS it( state, flags, property, dir ); \ + if ( property ) \ + { \ + if ( dir == 1 ) it.Next(); \ + else it.Prev(); \ + } \ + return *it; \ + } + + +/** @class wxPropertyGridIterator + + Preferable way to iterate through contents of wxPropertyGrid, + wxPropertyGridManager, and wxPropertyGridPage. + + See wxPropertyGridInterface::GetIterator() for more information about usage. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID + wxPropertyGridIterator : public wxPropertyGridIteratorBase +{ +public: + + wxPG_IMPLEMENT_ITERATOR(wxPropertyGridIterator, + wxPGProperty, + wxPropertyGridPageState) + +protected: +}; + + +// Const version of wxPropertyGridIterator. +class WXDLLIMPEXP_PROPGRID + wxPropertyGridConstIterator : public wxPropertyGridIteratorBase +{ +public: + wxPG_IMPLEMENT_ITERATOR(wxPropertyGridConstIterator, + const wxPGProperty, + const wxPropertyGridPageState) + +protected: +}; + +// ----------------------------------------------------------------------- + +/** Base class to derive new viterators. +*/ +class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase +{ + friend class wxPGVIterator; +public: + wxPGVIteratorBase() { m_refCount = 1; } + virtual void Next() = 0; + void IncRef() + { + m_refCount++; + } + void DecRef() + { + m_refCount--; + if ( m_refCount <= 0 ) + delete this; + } +protected: + virtual ~wxPGVIteratorBase() { } + + wxPropertyGridIterator m_it; +private: + int m_refCount; +}; + +/** @class wxPGVIterator + + Abstract implementation of a simple iterator. Can only be used + to iterate in forward order, and only through the entire container. + Used to have functions dealing with all properties work with both + wxPropertyGrid and wxPropertyGridManager. +*/ +class WXDLLIMPEXP_PROPGRID wxPGVIterator +{ +public: + wxPGVIterator() { m_pIt = NULL; } + wxPGVIterator( wxPGVIteratorBase* obj ) { m_pIt = obj; } + ~wxPGVIterator() { UnRef(); } + void UnRef() { if (m_pIt) m_pIt->DecRef(); } + wxPGVIterator( const wxPGVIterator& it ) + { + m_pIt = it.m_pIt; + m_pIt->IncRef(); + } +#ifndef SWIG + const wxPGVIterator& operator=( const wxPGVIterator& it ) + { + UnRef(); + m_pIt = it.m_pIt; + m_pIt->IncRef(); + return *this; + } +#endif + void Next() { m_pIt->Next(); } + bool AtEnd() const { return m_pIt->m_it.AtEnd(); } + wxPGProperty* GetProperty() const { return m_pIt->m_it.GetProperty(); } +protected: + wxPGVIteratorBase* m_pIt; +}; + +// ----------------------------------------------------------------------- + +#ifndef SWIG +// We won't need this class from wxPython + +/** @class wxPropertyGridPageState + + Contains low-level property page information (properties, column widths, + etc) of a single wxPropertyGrid or single wxPropertyGridPage. Generally you + should not use this class directly, but instead member functions in + wxPropertyGridInterface, wxPropertyGrid, wxPropertyGridPage, and + wxPropertyGridManager. + + @remarks + - In separate wxPropertyGrid component this class was known as + wxPropertyGridState. + - Currently this class is not implemented in wxPython. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridPageState +{ + friend class wxPGProperty; + friend class wxPropertyGrid; + friend class wxPGCanvas; + friend class wxPropertyGridInterface; + friend class wxPropertyGridPage; + friend class wxPropertyGridManager; +public: + + /** Default constructor. */ + wxPropertyGridPageState(); + + /** Destructor. */ + virtual ~wxPropertyGridPageState(); + + /** Makes sure all columns have minimum width. + */ + void CheckColumnWidths( int widthChange = 0 ); + + /** + Override this member function to add custom behavior on property + deletion. + */ + virtual void DoDelete( wxPGProperty* item ); + + wxSize DoFitColumns( bool allowGridResize = false ); + + wxPGProperty* DoGetItemAtY( int y ) const; + + /** + Override this member function to add custom behavior on property + insertion. + */ + virtual wxPGProperty* DoInsert( wxPGProperty* parent, + int index, + wxPGProperty* property ); + + /** + This needs to be overridden in grid used the manager so that splitter + changes can be propagated to other pages. + */ + virtual void DoSetSplitterPosition( int pos, + int splitterColumn = 0, + bool allPages = false, + bool fromAutoCenter = false ); + + bool EnableCategories( bool enable ); + + /** Make sure virtual height is up-to-date. + */ + void EnsureVirtualHeight() + { + if ( m_vhCalcPending ) + { + RecalculateVirtualHeight(); + m_vhCalcPending = 0; + } + } + + /** Enables or disables given property and its subproperties. */ + bool DoEnableProperty( wxPGProperty* p, bool enable ); + + /** Returns (precalculated) height of contained visible properties. + */ + unsigned int GetVirtualHeight() const + { + wxASSERT( !m_vhCalcPending ); + return m_virtualHeight; + } + + /** Returns (precalculated) height of contained visible properties. + */ + unsigned int GetVirtualHeight() + { + EnsureVirtualHeight(); + return m_virtualHeight; + } + + /** Returns actual height of contained visible properties. + @remarks + Mostly used for internal diagnostic purposes. + */ + inline unsigned int GetActualVirtualHeight() const; + + unsigned int GetColumnCount() const + { + return m_colWidths.size(); + } + + wxPGProperty* GetSelection() const + { + return m_selected; + } + + int GetColumnMinWidth( int column ) const; + + int GetColumnWidth( unsigned int column ) const + { + return m_colWidths[column]; + } + + wxPropertyGrid* GetGrid() const { return m_pPropGrid; } + + /** Returns last item which could be iterated using given flags. + @param flags + @link iteratorflags List of iterator flags@endlink + */ + wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ); + + const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const + { + return ((wxPropertyGridPageState*)this)->GetLastItem(flags); + } + + wxPropertyCategory* GetPropertyCategory( const wxPGProperty* p ) const; + + wxPGProperty* GetPropertyByLabel( const wxString& name, + wxPGProperty* parent = NULL ) const; + + wxVariant DoGetPropertyValues( const wxString& listname, + wxPGProperty* baseparent, + long flags ) const; + + wxPGProperty* DoGetRoot() const { return m_properties; } + + // Returns combined width of margin and all the columns + int GetVirtualWidth() const + { + return m_width; + } + + /** + Returns minimal width for given column so that all images and texts + will fit entirely. + + Used by SetSplitterLeft() and DoFitColumns(). + */ + int GetColumnFitWidth(wxClientDC& dc, + wxPGProperty* pwc, + unsigned int col, + bool subProps) const; + + /** Returns information about arbitrary position in the grid. + + wxPropertyGridHitTestResult definition: + @code + struct wxPropertyGridHitTestResult + { + wxPGProperty* GetProperty() const; + + // column. -1 for margin + int column; + + // Index of splitter hit, -1 for none. + int splitter; + + // If splitter hit, then offset to that. + int splitterHitOffset; + }; + @endcode + */ + wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; + + /** Returns true if page is visibly displayed. + */ + inline bool IsDisplayed() const; + + bool IsInNonCatMode() const { return (bool)(m_properties == m_abcArray); } + + /** Only inits arrays, doesn't migrate things or such. */ + void InitNonCatMode (); + + void DoLimitPropertyEditing( wxPGProperty* p, bool limit = true ) + { + p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit); + } + + bool DoSelectProperty( wxPGProperty* p, unsigned int flags = 0 ); + + /** widthChange is non-client. + */ + void OnClientWidthChange( int newWidth, + int widthChange, + bool fromOnResize = false ); + + /** Recalculates m_virtualHeight. + */ + void RecalculateVirtualHeight() + { + m_virtualHeight = GetActualVirtualHeight(); + } + + void SetColumnCount( int colCount ); + + void PropagateColSizeDec( int column, int decrease, int dir ); + + bool DoHideProperty( wxPGProperty* p, bool hide, int flags = wxPG_RECURSE ); + + bool DoSetPropertyValueString( wxPGProperty* p, const wxString& value ); + + bool DoSetPropertyValue( wxPGProperty* p, wxVariant& value ); + + bool DoSetPropertyValueWxObjectPtr( wxPGProperty* p, wxObject* value ); + void DoSetPropertyValues( const wxVariantList& list, + wxPGProperty* default_category ); + + void DoSetPropertyValueUnspecified( wxPGProperty* p ); + + void SetSplitterLeft( bool subProps = false ); + + /** Set virtual width for this particular page. */ + void SetVirtualWidth( int width ); + + void SortChildren( wxPGProperty* p ); + void Sort(); + + void SetSelection( wxPGProperty* p ) { m_selected = p; } + + /** Called after virtual height needs to be recalculated. + */ + void VirtualHeightChanged() + { + m_vhCalcPending = 1; + } + + /** Base append. */ + wxPGProperty* DoAppend( wxPGProperty* property ); + + /** Returns property by its name. */ + wxPGProperty* BaseGetPropertyByName( const wxString& name ) const; + + void DoClearSelection() + { + m_selected = NULL; + } + + /** Called in, for example, wxPropertyGrid::Clear. */ + void DoClear(); + + bool DoCollapse( wxPGProperty* p ); + + bool DoExpand( wxPGProperty* p ); + + void CalculateFontAndBitmapStuff( int vspacing ); + +protected: + + int DoGetSplitterPosition( int splitterIndex = 0 ) const; + + /** Returns column at x coordinate (in GetGrid()->GetPanel()). + @param pSplitterHit + Give pointer to int that receives index to splitter that is at x. + @param pSplitterHitOffset + Distance from said splitter. + */ + int HitTestH( int x, int* pSplitterHit, int* pSplitterHitOffset ) const; + + int PrepareToAddItem ( wxPGProperty* property, + wxPGProperty* scheduledParent ); + + /** If visible, then this is pointer to wxPropertyGrid. + This shall *never* be NULL to indicate that this state is not visible. + */ + wxPropertyGrid* m_pPropGrid; + + /** Pointer to currently used array. */ + wxPGProperty* m_properties; + + /** Array for categoric mode. */ + wxPGRootProperty m_regularArray; + + /** Array for root of non-categoric mode. */ + wxPGRootProperty* m_abcArray; + + /** Dictionary for name-based access. */ + wxPGHashMapS2P m_dictName; + + /** List of column widths (first column does not include margin). */ + wxArrayInt m_colWidths; + + double m_fSplitterX; + + /** Most recently added category. */ + wxPropertyCategory* m_currentCategory; + + /** Pointer to selected property. */ + wxPGProperty* m_selected; + + /** Virtual width. */ + int m_width; + + /** Indicates total virtual height of visible properties. */ + unsigned int m_virtualHeight; + + /** 1 if m_lastCaption is also the bottommost caption. */ + unsigned char m_lastCaptionBottomnest; + + /** 1 items appended/inserted, so stuff needs to be done before drawing; + If m_virtualHeight == 0, then calcylatey's must be done. + Otherwise just sort. + */ + unsigned char m_itemsAdded; + + /** 1 if any value is modified. */ + unsigned char m_anyModified; + + unsigned char m_vhCalcPending; +}; + +#endif // #ifndef SWIG + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_PROPGRIDPAGESTATE_H_ + diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h new file mode 100644 index 0000000000..b2c23b9ce1 --- /dev/null +++ b/include/wx/propgrid/props.h @@ -0,0 +1,1290 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/propgrid/props.h +// Purpose: wxPropertyGrid Property Classes +// Author: Jaakko Salli +// Modified by: +// Created: 2007-03-28 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PROPGRID_PROPS_H_ +#define _WX_PROPGRID_PROPS_H_ + +// ----------------------------------------------------------------------- + +class wxArrayEditorDialog; + +#include "wx/propgrid/editors.h" + +// ----------------------------------------------------------------------- + +// +// Additional property class declaration helper macros +// + +// +// Property class implementation helper macros. +// + +#define WX_PG_DECLARE_BASIC_TYPE_METHODS() \ + virtual wxString GetValueAsString( int argFlags = 0 ) const; \ + virtual bool StringToValue( wxVariant& variant, \ + const wxString& text, \ + int argFlags = 0 ) const; + +#define WX_PG_DECLARE_CHOICE_METHODS() \ + virtual bool IntToValue( wxVariant& variant, \ + int number, int argFlags = 0 ) const; \ + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + +#define WX_PG_DECLARE_EVENT_METHODS() \ + virtual bool OnEvent( wxPropertyGrid* propgrid, \ + wxWindow* primary, wxEvent& event ); + +#define WX_PG_DECLARE_PARENTAL_METHODS() \ + virtual void ChildChanged( wxVariant& thisValue, \ + int childIndex, wxVariant& childValue ) const; \ + virtual void RefreshChildren(); + +#define WX_PG_DECLARE_CUSTOM_PAINT_METHODS() \ + virtual wxSize OnMeasureImage( int item ) const; \ + virtual void OnCustomPaint( wxDC& dc, \ + const wxRect& rect, wxPGPaintData& paintdata ); + +#define WX_PG_DECLARE_ATTRIBUTE_METHODS() \ + virtual bool DoSetAttribute( const wxString& name, wxVariant& value ); + +#define WX_PG_DECLARE_VALIDATOR_METHODS() \ + virtual wxValidator* DoGetValidator() const; + +// Adds constructor function as well. +#define WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,CLASSNAME,\ + UPCLASS,T,T_AS_ARG,EDITOR) \ +IMPLEMENT_DYNAMIC_CLASS(NAME, UPCLASS) \ +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME,T,EDITOR) + +// A regular property +#define WX_PG_IMPLEMENT_PROPERTY_CLASS(NAME,UPNAME,T,T_AS_ARG,EDITOR) \ +WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,NAME,UPNAME,T,T_AS_ARG,EDITOR) + +#define WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(CLASSNAME) \ +DECLARE_DYNAMIC_CLASS(CLASSNAME) + +// Derived property class is one that inherits from an existing working property +// class, but assumes same value and editor type. +#define WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,UPNAME,T_AS_ARG) \ +IMPLEMENT_DYNAMIC_CLASS(NAME, UPNAME) + +// ----------------------------------------------------------------------- + +#define wxPG_NO_ESCAPE wxPG_PROP_NO_ESCAPE // No escape sequences +#define wxPG_ESCAPE 0 // Escape sequences + +#define WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, DECL) \ +DECL NAME : public wxLongStringProperty \ +{ \ + WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(NAME) \ +public: \ + NAME( const wxString& name = wxPG_LABEL, \ + const wxString& label = wxPG_LABEL, \ + const wxString& value = wxEmptyString); \ + virtual ~NAME(); \ + virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value ); \ + WX_PG_DECLARE_VALIDATOR_METHODS() \ +}; + +#define WX_PG_DECLARE_STRING_PROPERTY(NAME) \ +WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, class) \ + +#define WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME, FLAGS) \ +WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,wxLongStringProperty,\ + const wxString&) \ +NAME::NAME( const wxString& name, \ + const wxString& label, \ + const wxString& value ) \ + : wxLongStringProperty(name,label,value) \ +{ \ + m_flags |= FLAGS; \ +} \ +NAME::~NAME() { } + +#define WX_PG_IMPLEMENT_STRING_PROPERTY(NAME, FLAGS) \ +WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME,FLAGS) \ +wxValidator* NAME::DoGetValidator () const \ +{ return (wxValidator*) NULL; } + +// ----------------------------------------------------------------------- + +#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME,DECL) \ +DECL CLASSNAME : public wxFlagsProperty \ +{ \ + WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \ +public: \ + CLASSNAME( const wxString& label = wxPG_LABEL, \ + const wxString& name = wxPG_LABEL, \ + long value = -1 ); \ + virtual ~CLASSNAME(); \ +}; + +#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(CLASSNAME) \ +WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME, class) + +// This will create interface for wxFlagsProperty derived class +// named CLASSNAME. +#define WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \ +WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME,wxFlagsProperty,long_##CLASSNAME,\ + long,TextCtrl) \ +CLASSNAME::CLASSNAME( const wxString& label, \ + const wxString& name, \ + long value ) \ + : wxFlagsProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \ +{ \ + m_flags |= wxPG_PROP_STATIC_CHOICES; \ +} \ +CLASSNAME::~CLASSNAME() { } + + +// ----------------------------------------------------------------------- + +#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, DECL) \ +class CLASSNAME : public wxEnumProperty \ +{ \ + WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \ +public: \ + CLASSNAME( const wxString& label = wxPG_LABEL, \ + const wxString& name = wxPG_LABEL, \ + int value = -1 ); \ + virtual ~CLASSNAME(); \ +}; + +#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(CLASSNAME) \ +WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, class) + +#define WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \ +WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxEnumProperty, long_##CLASSNAME, \ + int, Choice) \ +CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, int value ) \ + : wxEnumProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \ +{ \ + m_flags |= wxPG_PROP_STATIC_CHOICES; \ +} \ +CLASSNAME::~CLASSNAME() { } + + +// ----------------------------------------------------------------------- + +#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, DECL) \ +DECL CLASSNAME : public wxSystemColourProperty \ +{ \ + DECLARE_DYNAMIC_CLASS(CLASSNAME) \ +public: \ + CLASSNAME( const wxString& label = wxPG_LABEL, \ + const wxString& name = wxPG_LABEL, \ + const wxColourPropertyValue& value = wxColourPropertyValue() ); \ + virtual ~CLASSNAME(); \ + virtual wxColour GetColour( int index ) const; \ +}; + +#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY(CLASSNAME) \ +WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, class) + +#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY(CLASSNAME,\ + LABELS,VALUES,COLOURS) \ +static wxPGChoices gs_##CLASSNAME##_choicesCache; \ +WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \ + const wxColourPropertyValue&) \ +CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, \ + const wxColourPropertyValue& value ) \ + : wxSystemColourProperty(label, name, LABELS, VALUES, \ + &gs_##CLASSNAME##_choicesCache, value ) \ +{ \ + m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \ +} \ +CLASSNAME::~CLASSNAME () { } \ +wxColour CLASSNAME::GetColour ( int index ) const \ +{ \ + if ( !m_choices.HasValue(index) ) \ + { \ + wxASSERT( index < (int)m_choices.GetCount() ); \ + return COLOURS[index]; \ + } \ + return COLOURS[m_choices.GetValue(index)]; \ +} + +// ----------------------------------------------------------------------- + +#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME,\ + DECL) \ +DECL CLASSNAME : public wxSystemColourProperty \ +{ \ + WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \ +public: \ + CLASSNAME( const wxString& label = wxPG_LABEL, \ + const wxString& name = wxPG_LABEL, \ + const wxColour& value = wxColour() ); \ + virtual ~CLASSNAME(); \ + virtual wxString GetValueAsString( int argFlags ) const; \ + virtual wxColour GetColour( int index ) const; \ + virtual wxVariant DoTranslateVal( wxColourPropertyValue& v ) const; \ + void Init( wxColour colour ); \ +}; + +#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME) \ +WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME, class) + +#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \ + LABELS, \ + VALUES, \ + COLOURS, \ + EDITOR) \ +static wxPGChoices gs_##CLASSNAME##_choicesCache; \ +WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \ + wxColour, const wxColour&,EDITOR) \ +CLASSNAME::CLASSNAME( const wxString& label, \ + const wxString& name, \ + const wxColour& value ) \ + : wxSystemColourProperty(label, name, LABELS, VALUES, \ + &gs_##CLASSNAME##_choicesCache, value ) \ +{ \ + if ( &value ) \ + Init( value ); \ + else \ + Init( *wxWHITE ); \ + m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \ +} \ +CLASSNAME::~CLASSNAME() { } \ +void CLASSNAME::Init( wxColour colour ) \ +{ \ + if ( !colour.Ok() ) \ + colour = *wxWHITE; \ + wxVariant variant; \ + variant << colour; \ + m_value = variant; \ + int ind = ColToInd(colour); \ + if ( ind < 0 ) \ + ind = m_choices.GetCount() - 1; \ + SetIndex( ind ); \ +} \ +wxString CLASSNAME::GetValueAsString( int argFlags ) const \ +{ \ + const wxPGEditor* editor = GetEditorClass(); \ + if ( editor != wxPG_EDITOR(Choice) && \ + editor != wxPG_EDITOR(ChoiceAndButton) && \ + editor != wxPG_EDITOR(ComboBox) ) \ + argFlags |= wxPG_PROPERTY_SPECIFIC; \ + return wxSystemColourProperty::GetValueAsString(argFlags); \ +} \ +wxColour CLASSNAME::GetColour( int index ) const \ +{ \ + if ( !m_choices.HasValue(index) ) \ + { \ + wxASSERT( index < (int)GetItemCount() ); \ + return COLOURS[index]; \ + } \ + return COLOURS[m_choices.GetValue(index)]; \ +} \ +wxVariant CLASSNAME::DoTranslateVal( wxColourPropertyValue& v ) const \ +{ \ + wxVariant variant; \ + variant << v.m_colour; \ + return variant; \ +} + + +#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME, \ + LABELS, \ + VALUES, \ + COLOURS) \ +WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \ + LABELS, \ + VALUES, \ + COLOURS, \ + Choice) + +// ----------------------------------------------------------------------- + +// +// These macros help creating DoGetValidator +#define WX_PG_DOGETVALIDATOR_ENTRY() \ + static wxValidator* s_ptr = (wxValidator*) NULL; \ + if ( s_ptr ) return s_ptr; + +// Common function exit +#define WX_PG_DOGETVALIDATOR_EXIT(VALIDATOR) \ + s_ptr = VALIDATOR; \ + wxPGGlobalVars->m_arrValidators.Add( (void*) VALIDATOR ); \ + return VALIDATOR; + +// ----------------------------------------------------------------------- + +#ifndef SWIG + +/** @class wxPGInDialogValidator + @ingroup classes + Creates and manages a temporary wxTextCtrl for validation purposes. + Uses wxPropertyGrid's current editor, if available. +*/ +class WXDLLIMPEXP_PROPGRID wxPGInDialogValidator +{ +public: + wxPGInDialogValidator() + { + m_textCtrl = NULL; + } + + ~wxPGInDialogValidator() + { + if ( m_textCtrl ) + m_textCtrl->Destroy(); + } + + bool DoValidate( wxPropertyGrid* propGrid, + wxValidator* validator, + const wxString& value ); + +private: + wxTextCtrl* m_textCtrl; +}; + +#endif // SWIG + + +// ----------------------------------------------------------------------- +// Property classes +// ----------------------------------------------------------------------- + +#define wxPG_PROP_PASSWORD wxPG_PROP_CLASS_SPECIFIC_2 + +/** @class wxStringProperty + @ingroup classes + Basic property with string value. + + <b>Supported special attributes:</b> + - "Password": set to 1 inorder to enable wxTE_PASSWORD on the editor. + + @remarks + - If value "<composed>" is set, then actual value is formed (or composed) + from values of child properties. +*/ +class WXDLLIMPEXP_PROPGRID wxStringProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxStringProperty) +public: + wxStringProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ); + virtual ~wxStringProperty(); + + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() + + /** This is updated so "<composed>" special value can be handled. + */ + virtual void OnSetValue(); + +protected: +}; + +// ----------------------------------------------------------------------- + +#ifndef SWIG +/** Constants used with DoValidation() methods. +*/ +enum +{ + /** Instead of modifying the value, show an error message. + */ + wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE = 0, + + /** Modify value, but stick with the limitations. + */ + wxPG_PROPERTY_VALIDATION_SATURATE = 1, + + /** Modify value, wrap around on overflow. + */ + wxPG_PROPERTY_VALIDATION_WRAP = 2 +}; +#endif + +// ----------------------------------------------------------------------- + +/** @class wxIntProperty + @ingroup classes + Basic property with integer value. + + Seamlessly supports 64-bit integer (wxLongLong) on overflow. + + <b>Example how to use seamless 64-bit integer support</b> + + Getting value: + + @code + wxLongLong_t value = pg->GetPropertyValueAsLongLong(); + @endcode + + or + + @code + wxLongLong_t value; + wxVariant variant = property->GetValue(); + if ( variant.GetType() == "wxLongLong" ) + value = wxLongLongFromVariant(variant); + else + value = variant.GetLong(); + @endcode + + Setting value: + + @code + pg->SetPropertyValue(longLongVal); + @endcode + + or + + @code + property->SetValue(WXVARIANT(longLongVal)); + @endcode + + + <b>Supported special attributes:</b> + - "Min", "Max": Specify acceptable value range. +*/ +class WXDLLIMPEXP_PROPGRID wxIntProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxIntProperty) +public: + wxIntProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + long value = 0 ); + virtual ~wxIntProperty(); + + wxIntProperty( const wxString& label, + const wxString& name, + const wxLongLong& value ); + WX_PG_DECLARE_BASIC_TYPE_METHODS() + virtual bool ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const; + virtual bool IntToValue( wxVariant& variant, + int number, + int argFlags = 0 ) const; + static wxValidator* GetClassValidator(); + virtual wxValidator* DoGetValidator() const; + + /** Validation helper. + */ + static bool DoValidation( const wxPGProperty* property, + wxLongLong_t& value, + wxPGValidationInfo* pValidationInfo, + int mode = + wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + +protected: +}; + +// ----------------------------------------------------------------------- + +/** @class wxUIntProperty + @ingroup classes + Basic property with unsigned integer value. + Seamlessly supports 64-bit integer (wxULongLong) on overflow. + + <b>Supported special attributes:</b> + - "Min", "Max": Specify acceptable value range. + - "Base": Define base. Valid constants are wxPG_BASE_OCT, wxPG_BASE_DEC, + wxPG_BASE_HEX and wxPG_BASE_HEXL (lowercase characters). Arbitrary bases + are <b>not</b> supported. + - "Prefix": Possible values are wxPG_PREFIX_NONE, wxPG_PREFIX_0x, and + wxPG_PREFIX_DOLLAR_SIGN. Only wxPG_PREFIX_NONE works with Decimal and Octal + numbers. + + @remarks + - For example how to use seamless 64-bit integer support, see wxIntProperty + documentation (just use wxULongLong instead of wxLongLong). +*/ +class WXDLLIMPEXP_PROPGRID wxUIntProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxUIntProperty) +public: + wxUIntProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + unsigned long value = 0 ); + virtual ~wxUIntProperty(); + wxUIntProperty( const wxString& label, + const wxString& name, + const wxULongLong& value ); + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() + virtual bool ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const; + virtual bool IntToValue( wxVariant& variant, + int number, + int argFlags = 0 ) const; +protected: + wxByte m_base; + wxByte m_realBase; // translated to 8,16,etc. + wxByte m_prefix; +private: + void Init(); +}; + +// ----------------------------------------------------------------------- + +/** @class wxFloatProperty + @ingroup classes + Basic property with double-precision floating point value. + + <b>Supported special attributes:</b> + - "Precision": Sets the (max) precision used when floating point value is + rendered as text. The default -1 means infinite precision. +*/ +class WXDLLIMPEXP_PROPGRID wxFloatProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxFloatProperty) +public: + wxFloatProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + double value = 0.0 ); + virtual ~wxFloatProperty(); + + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() + virtual bool ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const; + + /** Validation helper. + */ + static bool DoValidation( const wxPGProperty* property, + double& value, + wxPGValidationInfo* pValidationInfo, + int mode = + wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + +protected: + int m_precision; + virtual wxValidator* DoGetValidator () const; +}; + +// ----------------------------------------------------------------------- + +// Exclude class from wxPython bindings +#ifndef SWIG + +/** @class wxBoolProperty + @ingroup classes + Basic property with boolean value. + + <b>Supported special attributes:</b> + - "UseCheckbox": Set to 1 to use check box editor instead of combo box. + - "UseDClickCycling": Set to 1 to cycle combo box instead showing the list. +*/ +class WXDLLIMPEXP_PROPGRID wxBoolProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxBoolProperty) +public: + wxBoolProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + bool value = false ); + virtual ~wxBoolProperty(); + + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_CHOICE_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() +}; + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +/** @class wxBaseEnumProperty + @ingroup classes + Derive dynamic custom properties with choices from this class. + + @remarks + - Updating private index is important. You can do this either by calling + SetIndex() in IntToValue, and then letting wxBaseEnumProperty::OnSetValue + be called (by not implementing it, or by calling super class function in + it) -OR- you can just call SetIndex in OnSetValue. +*/ +class WXDLLIMPEXP_PROPGRID wxBaseEnumProperty : public wxPGProperty +{ +public: + wxBaseEnumProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL ); + + virtual void OnSetValue(); + virtual wxString GetValueAsString( int argFlags ) const; + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int argFlags = 0 ) const; + virtual bool ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const; + + // If wxPG_FULL_VALUE is not set in flags, then the value is interpreted + // as index to choices list. Otherwise, it is actual value. + virtual bool IntToValue( wxVariant& variant, + int number, + int argFlags = 0 ) const; + + // + // Additional virtuals + + // This must be overridden to have non-index based value + virtual int GetIndexForValue( int value ) const; + + // This returns string and value for index + // Returns NULL if beyond last item + // pvalue is never NULL - always set it. + virtual const wxString* GetEntry( size_t index, int* pvalue ) const = 0; + + int GetValueForIndex( size_t index ) const + { + int v; + GetEntry( index, &v ); + return v; + } + +protected: + + int GetIndex() const; + void SetIndex( int index ); + + bool ValueFromString_( wxVariant& value, + const wxString& text, + int argFlags ) const; + bool ValueFromInt_( wxVariant& value, int intVal, int argFlags ) const; + + static void ResetNextIndex() { ms_nextIndex = -2; } + +private: + // This is private so that classes are guaranteed to use GetIndex + // for up-to-date index value. + int m_index; + + // Relies on ValidateValue being called always before OnSetValue + static int ms_nextIndex; +}; + +// ----------------------------------------------------------------------- + +// If set, then selection of choices is static and should not be +// changed (i.e. returns NULL in GetPropertyChoices). +#define wxPG_PROP_STATIC_CHOICES wxPG_PROP_CLASS_SPECIFIC_1 + +/** @class wxEnumProperty + @ingroup classes + You can derive custom properties with choices from this class. See + wxBaseEnumProperty for remarks. +*/ +class WXDLLIMPEXP_PROPGRID wxEnumProperty : public wxBaseEnumProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty) +public: + +#ifndef SWIG + wxEnumProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxChar** labels = NULL, + const long* values = NULL, + int value = 0 ); + wxEnumProperty( const wxString& label, + const wxString& name, + wxPGChoices& choices, + int value = 0 ); + + // Special constructor for caching choices (used by derived class) + wxEnumProperty( const wxString& label, + const wxString& name, + const wxChar** labels, + const long* values, + wxPGChoices* choicesCache, + int value = 0 ); + + wxEnumProperty( const wxString& label, + const wxString& name, + const wxArrayString& labels, + const wxArrayInt& values = wxArrayInt(), + int value = 0 ); +#else + wxEnumProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayString& labels = wxArrayString(), + const wxArrayInt& values = wxArrayInt(), + int value = 0 ); +#endif + + virtual ~wxEnumProperty(); + + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + virtual int GetIndexForValue( int value ) const; + virtual const wxString* GetEntry( size_t index, int* pvalue ) const; + + size_t GetItemCount() const { return m_choices.GetCount(); } + const wxPGChoices& GetChoices() const { return m_choices; } + +protected: + wxPGChoices m_choices; +}; + +// ----------------------------------------------------------------------- + +/** @class wxEditEnumProperty + @ingroup classes + wxEnumProperty with wxString value and writable combo box editor. + + @remarks + Uses int value, similar to wxEnumProperty, unless text entered by user is + is not in choices (in which case string value is used). +*/ +class WXDLLIMPEXP_PROPGRID wxEditEnumProperty : public wxEnumProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxEditEnumProperty) +public: + + wxEditEnumProperty( const wxString& label, + const wxString& name, + const wxChar** labels, + const long* values, + const wxString& value ); + wxEditEnumProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayString& labels = wxArrayString(), + const wxArrayInt& values = wxArrayInt(), + const wxString& value = wxEmptyString ); + wxEditEnumProperty( const wxString& label, + const wxString& name, + wxPGChoices& choices, + const wxString& value = wxEmptyString ); + + // Special constructor for caching choices (used by derived class) + wxEditEnumProperty( const wxString& label, + const wxString& name, + const wxChar** labels, + const long* values, + wxPGChoices* choicesCache, + const wxString& value ); + + virtual ~wxEditEnumProperty(); + +protected: +}; + +// ----------------------------------------------------------------------- + +/** @class wxFlagsProperty + @ingroup classes + Represents a bit set that fits in a long integer. wxBoolProperty + sub-properties are created for editing individual bits. Textctrl is created + to manually edit the flags as a text; a continous sequence of spaces, + commas and semicolons is considered as a flag id separator. + <b>Note:</b> When changing "choices" (ie. flag labels) of wxFlagsProperty, + you will need to use SetPropertyChoices - otherwise they will not get + updated properly. +*/ +class WXDLLIMPEXP_PROPGRID wxFlagsProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxFlagsProperty) +public: + +#ifndef SWIG + wxFlagsProperty( const wxString& label, + const wxString& name, + const wxChar** labels, + const long* values = NULL, + long value = 0 ); + wxFlagsProperty( const wxString& label, + const wxString& name, + wxPGChoices& choices, + long value = 0 ); +#endif + wxFlagsProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayString& labels = wxArrayString(), + const wxArrayInt& values = wxArrayInt(), + int value = 0 ); + virtual ~wxFlagsProperty (); + + virtual void OnSetValue(); + virtual wxString GetValueAsString( int argFlags ) const; + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int flags ) const; + virtual void ChildChanged( wxVariant& thisValue, + int childIndex, + wxVariant& childValue ) const; + virtual void RefreshChildren(); + + // this is necessary for conveying m_choices + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + + // helpers + size_t GetItemCount() const { return m_choices.GetCount(); } + const wxString& GetLabel( size_t ind ) const + { return m_choices.GetLabel(ind); } + +protected: + wxPGChoices m_choices; + + // Used to detect if choices have been changed + wxPGChoicesData* m_oldChoicesData; + + // Needed to properly mark changed sub-properties + long m_oldValue; + + // Converts string id to a relevant bit. + long IdToBit( const wxString& id ) const; + + // Creates children and sets value. + void Init(); +}; + +// ----------------------------------------------------------------------- + +/** @class wxPGFileDialogAdapter + @ingroup classes +*/ +class WXDLLIMPEXP_PROPGRID + wxPGFileDialogAdapter : public wxPGEditorDialogAdapter +{ +public: + virtual bool DoShowDialog( wxPropertyGrid* propGrid, + wxPGProperty* property ); +}; + +// ----------------------------------------------------------------------- + +#include "wx/filename.h" + +// Indicates first bit useable by derived properties. +#define wxPG_PROP_SHOW_FULL_FILENAME wxPG_PROP_CLASS_SPECIFIC_1 + +/** @class wxFileProperty + @ingroup classes + Like wxLongStringProperty, but the button triggers file selector instead. + + <b>Supported special attributes:</b> + - "Wildcard": Sets wildcard (see wxFileDialog for format details), "All + files..." is default. + - "ShowFullPath": Default 1. When 0, only the file name is shown (i.e. drive + and directory are hidden). + - "ShowRelativePath": If set, then the filename is shown relative to the + given path string. + - "InitialPath": Sets the initial path of where to look for files. + - "DialogTitle": Sets a specific title for the dir dialog. +*/ +class WXDLLIMPEXP_PROPGRID wxFileProperty : public wxPGProperty +{ + friend class wxPGFileDialogAdapter; + WX_PG_DECLARE_PROPERTY_CLASS(wxFileProperty) +public: + + wxFileProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ); + virtual ~wxFileProperty (); + + virtual void OnSetValue(); + virtual wxString GetValueAsString( int argFlags ) const; + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int argFlags = 0 ) const; + virtual wxPGEditorDialogAdapter* GetEditorDialog() const; + + WX_PG_DECLARE_ATTRIBUTE_METHODS() + + static wxValidator* GetClassValidator(); + virtual wxValidator* DoGetValidator() const; + +protected: + wxString m_wildcard; + wxString m_basePath; // If set, then show path relative to it + wxString m_initialPath; // If set, start the file dialog here + wxString m_dlgTitle; // If set, used as title for file dialog + wxFileName m_filename; // used as primary storage + int m_indFilter; // index to the selected filter +}; + +// ----------------------------------------------------------------------- + +#define wxPG_PROP_NO_ESCAPE wxPG_PROP_CLASS_SPECIFIC_1 + + +/** @class wxPGLongStringDialogAdapter + @ingroup classes +*/ +class WXDLLIMPEXP_PROPGRID + wxPGLongStringDialogAdapter : public wxPGEditorDialogAdapter +{ +public: + virtual bool DoShowDialog( wxPropertyGrid* propGrid, + wxPGProperty* property ); +}; + + +/** @class wxLongStringProperty + @ingroup classes + Like wxStringProperty, but has a button that triggers a small text + editor dialog. +*/ +class WXDLLIMPEXP_PROPGRID wxLongStringProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxLongStringProperty) +public: + + wxLongStringProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ); + virtual ~wxLongStringProperty(); + + virtual wxString GetValueAsString( int argFlags = 0 ) const; + virtual bool StringToValue( wxVariant& variant, + const wxString& text, + int argFlags = 0 ) const; + + WX_PG_DECLARE_EVENT_METHODS() + + // Shows string editor dialog. Value to be edited should be read from + // value, and if dialog is not cancelled, it should be stored back and true + // should be returned if that was the case. + virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value ); + + static bool DisplayEditorDialog( wxPGProperty* prop, + wxPropertyGrid* propGrid, + wxString& value ); + +protected: +}; + +// ----------------------------------------------------------------------- + + +// Exclude class from wxPython bindings +#ifndef SWIG + +/** @class wxDirProperty + @ingroup classes + Like wxLongStringProperty, but the button triggers dir selector instead. + + <b>Supported special attributes:</b> + - "DialogMessage": Sets specific message in the dir selector. +*/ +class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty +{ +#ifndef SWIG + DECLARE_DYNAMIC_CLASS(wxDirProperty) +#endif +public: + wxDirProperty( const wxString& name = wxPG_LABEL, + const wxString& label = wxPG_LABEL, + const wxString& value = wxEmptyString ); + virtual ~wxDirProperty(); + + WX_PG_DECLARE_ATTRIBUTE_METHODS() + WX_PG_DECLARE_VALIDATOR_METHODS() + + virtual bool OnButtonClick ( wxPropertyGrid* propGrid, wxString& value ); + +protected: + wxString m_dlgMessage; +}; + +#endif // !SWIG + +// ----------------------------------------------------------------------- + +// wxBoolProperty specific flags +#define wxPG_PROP_USE_CHECKBOX wxPG_PROP_CLASS_SPECIFIC_1 +// DCC = Double Click Cycles +#define wxPG_PROP_USE_DCC wxPG_PROP_CLASS_SPECIFIC_2 + + +// ----------------------------------------------------------------------- + +/** @class wxArrayStringProperty + @ingroup classes + Property that manages a list of strings. +*/ +class WXDLLIMPEXP_PROPGRID wxArrayStringProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxArrayStringProperty) +public: + + wxArrayStringProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayString& value = wxArrayString() ); + virtual ~wxArrayStringProperty(); + + virtual void OnSetValue(); + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_EVENT_METHODS() + + virtual void GenerateValueAsString(); + + // Shows string editor dialog. Value to be edited should be read from + // value, and if dialog is not cancelled, it should be stored back and true + // should be returned if that was the case. + virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); + + // Helper. + virtual bool OnButtonClick( wxPropertyGrid* propgrid, + wxWindow* primary, + const wxChar* cbt ); + +#ifndef SWIG + // Creates wxArrayEditorDialog for string editing. Called in OnButtonClick. + virtual wxArrayEditorDialog* CreateEditorDialog(); +#endif + +protected: + wxString m_display; // Cache for displayed text. +}; + +// ----------------------------------------------------------------------- + +#define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR_WITH_DECL(PROPNAME, \ + DECL) \ +DECL PROPNAME : public wxArrayStringProperty \ +{ \ + WX_PG_DECLARE_PROPERTY_CLASS(PROPNAME) \ +public: \ + PROPNAME( const wxString& label = wxPG_LABEL, \ + const wxString& name = wxPG_LABEL, \ + const wxArrayString& value = wxArrayString() ); \ + ~PROPNAME(); \ + virtual void GenerateValueAsString(); \ + virtual bool StringToValue( wxVariant& value, \ + const wxString& text, int = 0 ) const; \ + virtual bool OnEvent( wxPropertyGrid* propgrid, \ + wxWindow* primary, wxEvent& event ); \ + virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); \ + WX_PG_DECLARE_VALIDATOR_METHODS() \ +}; + +#define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM) \ +WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM, class) + +#define WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \ + DELIMCHAR, \ + CUSTBUTTXT) \ +WX_PG_IMPLEMENT_PROPERTY_CLASS(PROPNAME, wxArrayStringProperty, \ + wxArrayString, const wxArrayString&, \ + TextCtrlAndButton) \ +PROPNAME::PROPNAME( const wxString& label, \ + const wxString& name, \ + const wxArrayString& value ) \ + : wxArrayStringProperty(label,name,value) \ +{ \ + PROPNAME::GenerateValueAsString(); \ +} \ +PROPNAME::~PROPNAME() { } \ +void PROPNAME::GenerateValueAsString() \ +{ \ + wxChar delimChar = DELIMCHAR; \ + if ( delimChar == wxS('"') ) \ + wxArrayStringProperty::GenerateValueAsString(); \ + else \ + wxPropertyGrid::ArrayStringToString(m_display, \ + m_value.GetArrayString(), \ + 0,DELIMCHAR,0); \ +} \ +bool PROPNAME::StringToValue( wxVariant& variant, \ + const wxString& text, int ) const \ +{ \ + wxChar delimChar = DELIMCHAR; \ + if ( delimChar == wxS('"') ) \ + return wxArrayStringProperty::StringToValue(variant, text, 0); \ + \ + wxArrayString arr; \ + WX_PG_TOKENIZER1_BEGIN(text,DELIMCHAR) \ + arr.Add( token ); \ + WX_PG_TOKENIZER1_END() \ + variant = arr; \ + return true; \ +} \ +bool PROPNAME::OnEvent( wxPropertyGrid* propgrid, \ + wxWindow* primary, wxEvent& event ) \ +{ \ + if ( event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) \ + return OnButtonClick(propgrid,primary,(const wxChar*) CUSTBUTTXT); \ + return false; \ +} + +#define WX_PG_DECLARE_ARRAYSTRING_PROPERTY(PROPNAME) \ +WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME) + +#define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_DECL(PROPNAME, DECL) \ +WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR_WITH_DECL(PROPNAME, DECL) + +#define WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY(PROPNAME,DELIMCHAR,CUSTBUTTXT) \ +WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \ + DELIMCHAR, \ + CUSTBUTTXT) \ +wxValidator* PROPNAME::DoGetValidator () const \ +{ return (wxValidator*) NULL; } + + +// ----------------------------------------------------------------------- +// wxArrayEditorDialog +// ----------------------------------------------------------------------- + +#include "wx/textctrl.h" +#include "wx/button.h" +#include "wx/listbox.h" + +#define wxAEDIALOG_STYLE \ + (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE) + +class WXDLLIMPEXP_PROPGRID wxArrayEditorDialog : public wxDialog +{ +public: + wxArrayEditorDialog(); + virtual ~wxArrayEditorDialog() { } + + void Init(); + + wxArrayEditorDialog( wxWindow *parent, + const wxString& message, + const wxString& caption, + long style = wxAEDIALOG_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize ); + + bool Create( wxWindow *parent, + const wxString& message, + const wxString& caption, + long style = wxAEDIALOG_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize ); + + /** Set value modified by dialog. + */ + virtual void SetDialogValue( const wxVariant& WXUNUSED(value) ) + { + wxFAIL_MSG(wxT("re-implement this member function in derived class")); + } + + /** Return value modified by dialog. + */ + virtual wxVariant GetDialogValue() const + { + wxFAIL_MSG(wxT("re-implement this member function in derived class")); + return wxVariant(); + } + + /** Override to return wxValidator to be used with the wxTextCtrl + in dialog. Note that the validator is used in the standard + wx way, ie. it immediately prevents user from entering invalid + input. + + @remarks + Dialog frees the validator. + */ + virtual wxValidator* GetTextCtrlValidator() const + { + return (wxValidator*) NULL; + } + + // Returns true if array was actually modified + bool IsModified() const { return m_modified; } + + //const wxArrayString& GetStrings() const { return m_array; } + + // implementation from now on + void OnUpdateClick(wxCommandEvent& event); + void OnAddClick(wxCommandEvent& event); + void OnDeleteClick(wxCommandEvent& event); + void OnListBoxClick(wxCommandEvent& event); + void OnUpClick(wxCommandEvent& event); + void OnDownClick(wxCommandEvent& event); + //void OnCustomEditClick(wxCommandEvent& event); + void OnIdle(wxIdleEvent& event); + +protected: + wxTextCtrl* m_edValue; + wxListBox* m_lbStrings; + + wxButton* m_butAdd; // Button pointers + wxButton* m_butCustom; // required for disabling/enabling changing. + wxButton* m_butUpdate; + wxButton* m_butRemove; + wxButton* m_butUp; + wxButton* m_butDown; + + //wxArrayString m_array; + + const wxChar* m_custBtText; + //wxArrayStringPropertyClass* m_pCallingClass; + + bool m_modified; + + unsigned char m_curFocus; + + // These must be overridden - must return true on success. + virtual wxString ArrayGet( size_t index ) = 0; + virtual size_t ArrayGetCount() = 0; + virtual bool ArrayInsert( const wxString& str, int index ) = 0; + virtual bool ArraySet( size_t index, const wxString& str ) = 0; + virtual void ArrayRemoveAt( int index ) = 0; + virtual void ArraySwap( size_t first, size_t second ) = 0; + +private: +#ifndef SWIG + DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayEditorDialog) + DECLARE_EVENT_TABLE() +#endif +}; + +// ----------------------------------------------------------------------- +// wxPGArrayStringEditorDialog +// ----------------------------------------------------------------------- + +class WXDLLIMPEXP_PROPGRID + wxPGArrayStringEditorDialog : public wxArrayEditorDialog +{ +public: + wxPGArrayStringEditorDialog(); + virtual ~wxPGArrayStringEditorDialog() { } + + void Init(); + + virtual void SetDialogValue( const wxVariant& value ) + { + m_array = value.GetArrayString(); + } + + virtual wxVariant GetDialogValue() const + { + return m_array; + } + + void SetCustomButton( const wxChar* custBtText, wxArrayStringProperty* pcc ) + { + m_custBtText = custBtText; + m_pCallingClass = pcc; + } + + void OnCustomEditClick(wxCommandEvent& event); + +protected: + wxArrayString m_array; + + wxArrayStringProperty* m_pCallingClass; + + virtual wxString ArrayGet( size_t index ); + virtual size_t ArrayGetCount(); + virtual bool ArrayInsert( const wxString& str, int index ); + virtual bool ArraySet( size_t index, const wxString& str ); + virtual void ArrayRemoveAt( int index ); + virtual void ArraySwap( size_t first, size_t second ); + +private: +#ifndef SWIG + DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog) + DECLARE_EVENT_TABLE() +#endif +}; + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_PROPS_H_ diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h index 628d5e0096..13e650db66 100644 --- a/include/wx/setup_inc.h +++ b/include/wx/setup_inc.h @@ -603,6 +603,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h index c0759f852b..a6910382af 100644 --- a/include/wx/univ/setup0.h +++ b/include/wx/univ/setup0.h @@ -576,9 +576,10 @@ // Recommended setting: 1 #define wxUSE_MEDIACTRL 1 -// Use GStreamer for Unix (req a lot of dependancies) +// Use GStreamer for Unix. // -// Default is 0 +// Default is 0 as this requires a lot of dependencies which might not be +// available. // // Recommended setting: 1 (wxMediaCtrl won't work by default without it) #define wxUSE_GSTREAMER 0 @@ -605,6 +606,13 @@ // Recommended setting: 1 #define wxUSE_AUI 1 +// Use wxPropertyGrid. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_PROPGRID 1 + // Use wxStyledTextCtrl, a wxWidgets implementation of Scintilla. // // Default is 1 @@ -1173,7 +1181,7 @@ #define wxUSE_AFM_FOR_POSTSCRIPT 1 // Set to 1 to compile in support for wxSVGFileDC, a wxDC subclass which allows -// to create fiels in SVG (Scalable Vector Graphics) format. +// to create files in SVG (Scalable Vector Graphics) format. #define wxUSE_SVG 1 // ---------------------------------------------------------------------------- diff --git a/interface/wx/propgrid/editors.h b/interface/wx/propgrid/editors.h new file mode 100644 index 0000000000..40e1f76b76 --- /dev/null +++ b/interface/wx/propgrid/editors.h @@ -0,0 +1,278 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: editors.h +// Purpose: interface of wxPropertyGrid editors +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- + +/** @class wxPGEditor + + Base class for custom wxPropertyGrid editors. + + @remarks + - Names of builtin property editors are: TextCtrl, Choice, + ComboBox, CheckBox, TextCtrlAndButton, and ChoiceAndButton. Additional editors + include SpinCtrl and DatePickerCtrl, but using them requires calling + wxPropertyGrid::RegisterAdditionalEditors() prior use. + + - Pointer to builtin editor is available as wxPGEditor_EditorName + (eg. wxPGEditor_TextCtrl). + + - To add new editor you need to register it first using static function + wxPropertyGrid::RegisterEditorClass(), with code like this: + @code + wxPGEditor* editorPointer = wxPropertyGrid::RegisterEditorClass(new MyEditorClass(), "MyEditor"); + @endcode + After that, wxPropertyGrid will take ownership of the given object, but + you should still store editorPointer somewhere, so you can pass it to + wxPGProperty::SetEditor(), or return it from wxPGEditor::DoGetEditorClass(). + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPGEditor : public wxObject +{ +public: + + /** Constructor. */ + wxPGEditor() + : wxObject() + { + m_clientData = NULL; + } + + /** Destructor. */ + virtual ~wxPGEditor(); + + /** Returns pointer to the name of the editor. For example, wxPG_EDITOR(TextCtrl) + has name "TextCtrl". This method is autogenerated for custom editors. + */ + virtual wxString GetName() const = 0; + + /** Instantiates editor controls. + @param propgrid + wxPropertyGrid to which the property belongs (use as parent for control). + @param property + Property for which this method is called. + @param pos + Position, inside wxPropertyGrid, to create control(s) to. + @param size + Initial size for control(s). + + @remarks + - Primary control shall use id wxPG_SUBID1, and secondary (button) control + shall use wxPG_SUBID2. + - Implementation shoud use connect all necessary events to the + wxPropertyGrid::OnCustomEditorEvent. For Example: + @code + // Relays wxEVT_COMMAND_TEXT_UPDATED events of primary editor + // control to the OnEvent. + // NOTE: This event in particular is actually automatically conveyed, but + // it is just used as an example. + propgrid->Connect( wxPG_SUBID1, wxEVT_COMMAND_TEXT_UPDATED, + wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent) ); + @endcode + OnCustomEditorEvent will then forward events, first to wxPGEditor::OnEvent and then to wxPGProperty::OnEvent. + + */ + virtual wxPGWindowList CreateControls( wxPropertyGrid* propgrid, wxPGProperty* property, + const wxPoint& pos, const wxSize& size ) const = 0; + + /** Loads value from property to the control. */ + virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const = 0; + + /** Draws value for given property. + */ + virtual void DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property, const wxString& text ) const; + + /** Handles events. Returns true if value in control was modified + (see wxPGProperty::OnEvent for more information). + */ + virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* wnd_primary, wxEvent& event ) const = 0; + + /** Returns value from control, via parameter 'variant'. + Usually ends up calling property's StringToValue or IntToValue. + Returns true if value was different. + */ + virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const; + + /** Sets value in control to unspecified. */ + virtual void SetValueToUnspecified( wxPGProperty* property, wxWindow* ctrl ) const = 0; + + /** Sets control's value specifically from string. */ + virtual void SetControlStringValue( wxPGProperty* property, wxWindow* ctrl, const wxString& txt ) const; + + /** Sets control's value specifically from int (applies to choice etc.). */ + virtual void SetControlIntValue( wxPGProperty* property, wxWindow* ctrl, int value ) const; + + /** Inserts item to existing control. Index -1 means appending. + Default implementation does nothing. Returns index of item added. + */ + virtual int InsertItem( wxWindow* ctrl, const wxString& label, int index ) const; + + /** Deletes item from existing control. + Default implementation does nothing. + */ + virtual void DeleteItem( wxWindow* ctrl, int index ) const; + + /** Extra processing when control gains focus. For example, wxTextCtrl + based controls should select all text. + */ + virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; + + /** Returns true if control itself can contain the custom image. Default is + to return false. + */ + virtual bool CanContainCustomImage() const; + + // + // This member is public so scripting language bindings + // wrapper code can access it freely. + void* m_clientData; +}; + +// ----------------------------------------------------------------------- + +/** @class wxPGMultiButton + + This class can be used to have multiple buttons in a property editor. + You will need to create a new property editor class, override CreateControls, + and have it return wxPGMultiButton instance in wxPGWindowList::SetSecondary(). + For instance, here we add three buttons to a textctrl editor: + + @code + + #include <wx/propgrid/editors.h> + + class wxMultiButtonTextCtrlEditor : public wxPGTextCtrlEditor + { + WX_PG_DECLARE_EDITOR_CLASS(wxMultiButtonTextCtrlEditor) + public: + wxMultiButtonTextCtrlEditor() {} + virtual ~wxMultiButtonTextCtrlEditor() {} + + wxPG_DECLARE_CREATECONTROLS + virtual bool OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const; + + }; + + WX_PG_IMPLEMENT_EDITOR_CLASS(MultiButtonTextCtrlEditor, wxMultiButtonTextCtrlEditor, + wxPGTextCtrlEditor) + + wxPGWindowList wxMultiButtonTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const + { + // Create and populate buttons-subwindow + wxPGMultiButton* buttons = new wxPGMultiButton( propGrid, sz ); + + // Add two regular buttons + buttons->Add( "..." ); + buttons->Add( "A" ); + // Add a bitmap button + buttons->Add( wxArtProvider::GetBitmap(wxART_FOLDER) ); + + // Create the 'primary' editor control (textctrl in this case) + wxPGWindowList wndList = wxPGTextCtrlEditor::CreateControls + ( propGrid, property, pos, buttons->GetPrimarySize() ); + + // Finally, move buttons-subwindow to correct position and make sure + // returned wxPGWindowList contains our custom button list. + buttons->FinalizePosition(pos); + + wndList.SetSecondary( buttons ); + return wndList; + } + + bool wxMultiButtonTextCtrlEditor::OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const + { + if ( event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) + { + wxPGMultiButton* buttons = (wxPGMultiButton*) propGrid->GetEditorControlSecondary(); + + if ( event.GetId() == buttons->GetButtonId(0) ) + { + // Do something when first button is pressed + return true; + } + if ( event.GetId() == buttons->GetButtonId(1) ) + { + // Do something when first button is pressed + return true; + } + if ( event.GetId() == buttons->GetButtonId(2) ) + { + // Do something when second button is pressed + return true; + } + } + return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event); + } + + @endcode + + Further to use this editor, code like this can be used: + + @code + + // Register editor class - needs only to be called once + wxPGRegisterEditorClass( MultiButtonTextCtrlEditor ); + + // Insert the property that will have multiple buttons + propGrid->Append( new wxLongStringProperty("MultipleButtons", wxPG_LABEL) ); + + // Change property to use editor created in the previous code segment + propGrid->SetPropertyEditor( "MultipleButtons", wxPG_EDITOR(MultiButtonTextCtrlEditor) ); + + @endcode + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGMultiButton : public wxWindow +{ +public: + + wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz ); + + virtual ~wxPGMultiButton() { } + + wxWindow* GetButton( unsigned int i ) { return (wxWindow*) m_buttons[i]; } + const wxWindow* GetButton( unsigned int i ) const { return (const wxWindow*) m_buttons[i]; } + + /** Utility function to be used in event handlers. + */ + int GetButtonId( unsigned int i ) const { return GetButton(i)->GetId(); } + + /** Returns number of buttons. + */ + int GetCount() const { return m_buttons.Count(); } + + void Add( const wxString& label, int id = -2 ); + void Add( const wxBitmap& bitmap, int id = -2 ); + + wxSize GetPrimarySize() const + { + return wxSize(m_fullEditorSize.x - m_buttonsWidth, m_fullEditorSize.y); + } + + void FinalizePosition( const wxPoint& pos ) + { + Move( pos.x + m_fullEditorSize.x - m_buttonsWidth, pos.y ); + } +}; + +// ----------------------------------------------------------------------- + +#endif // _WX_PROPGRID_EDITORS_H_ diff --git a/interface/wx/propgrid/manager.h b/interface/wx/propgrid/manager.h new file mode 100644 index 0000000000..b062819f20 --- /dev/null +++ b/interface/wx/propgrid/manager.h @@ -0,0 +1,475 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: manager.h +// Purpose: interface of wxPropertyGridManager +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +/** @class wxPropertyGridPage + + Holder of property grid page information. You can subclass this and + give instance in wxPropertyGridManager::AddPage. It inherits from + wxEvtHandler and can be used to process events specific to this + page (id of events will still be same as manager's). If you don't + want to use it to process all events of the page, you need to + return false in the derived wxPropertyGridPage::IsHandlingAllEvents. + + Please note that wxPropertyGridPage lacks many non-const property + manipulation functions found in wxPropertyGridManager. Please use + parent manager (m_manager member variable) when needed. + + Please note that most member functions are inherited and as such not documented on + this page. This means you will probably also want to read wxPropertyGridInterface + class reference. + + @section propgridpage_event_handling Event Handling + + wxPropertyGridPage receives events emitted by its wxPropertyGridManager, but + only those events that are specific to that page. If wxPropertyGridPage::IsHandlingAllEvents + returns false, then unhandled events are sent to the manager's parent, as usual. + + See @ref propgrid_event_handling "wxPropertyGrid Event Handling" + for more information. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridPage : public wxEvtHandler, + public wxPropertyGridInterface +{ + friend class wxPropertyGridManager; +public: + + wxPropertyGridPage(); + virtual ~wxPropertyGridPage(); + + /** Deletes all properties on page. + */ + virtual void Clear(); + + /** Reduces column sizes to minimum possible that contents are still visibly (naturally + some margin space will be applied as well). + + @retval + Minimum size for the page to still display everything. + + @remarks + This function only works properly if size of containing grid was already fairly large. + + Note that you can also get calculated column widths by calling GetColumnWidth() + immediately after this function returns. + */ + wxSize FitColumns(); + + /** Returns page index in manager; + */ + inline int GetIndex() const; + + /** Returns x-coordinate position of splitter on a page. + */ + int GetSplitterPosition( int col = 0 ) const { return GetStatePtr()->DoGetSplitterPosition(col); } + + /** Returns "root property". It does not have name, etc. and it is not + visible. It is only useful for accessing its children. + */ + wxPGProperty* GetRoot() const { return GetStatePtr()->DoGetRoot(); } + + /** Returns id of the tool bar item that represents this page on wxPropertyGridManager's wxToolBar. + */ + int GetToolId() const + { + return m_id; + } + + /** Do any member initialization in this method. + @remarks + - Called every time the page is added into a manager. + - You can add properties to the page here. + */ + virtual void Init() {} + + /** Return false here to indicate unhandled events should be + propagated to manager's parent, as normal. + */ + virtual bool IsHandlingAllEvents() const { return true; } + + /** Called every time page is about to be shown. + Useful, for instance, creating properties just-in-time. + */ + virtual void OnShow(); + + virtual void RefreshProperty( wxPGProperty* p ); + + /** Sets splitter position on page. + @remarks + Splitter position cannot exceed grid size, and therefore setting it during + form creation may fail as initial grid size is often smaller than desired + splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int splitterPos, int col = 0 ); +}; + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGridManager + + wxPropertyGridManager is an efficient multi-page version of wxPropertyGrid, + which can optionally have toolbar for mode and page selection, and help text box. + Use window flags to select components to include. + + @section propgridmanager_window_styles_ Window Styles + + See @ref propgrid_window_styles. + + @section propgridmanager_event_handling Event Handling + + See @ref propgrid_event_handling "wxPropertyGrid Event Handling" + for more information. + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface +{ +public: + /** Creates new property page. Note that the first page is not created + automatically. + @param label + A label for the page. This may be shown as a toolbar tooltip etc. + @param bmp + Bitmap image for toolbar. If wxNullBitmap is used, then a built-in + default image is used. + @param pageObj + wxPropertyGridPage instance. Manager will take ownership of this object. + NULL indicates that a default page instance should be created. + @retval + Returns index to the page created. + @remarks + If toolbar is used, it is highly recommended that the pages are + added when the toolbar is not turned off using window style flag + switching. + */ + int AddPage( const wxString& label = wxEmptyString, + const wxBitmap& bmp = wxPG_NULL_BITMAP, + wxPropertyGridPage* pageObj = (wxPropertyGridPage*) NULL ) + { + return InsertPage(-1,label,bmp,pageObj); + } + + void ClearModifiedStatus ( wxPGPropArg id ); + + void ClearModifiedStatus () + { + m_pPropGrid->ClearModifiedStatus(); + } + + /** Deletes all all properties and all pages. + */ + virtual void Clear(); + + /** Deletes all properties on given page. + */ + void ClearPage( int page ); + + /** Forces updating the value of property from the editor control. + Returns true if DoPropertyChanged was actually called. + */ + bool CommitChangesFromEditor( wxUint32 flags = 0 ) + { + return m_pPropGrid->CommitChangesFromEditor(flags); + } + + /** Two step creation. Whenever the control is created without any parameters, + use Create to actually create it. Don't access the control's public methods + before this is called. + @sa @link wndflags Additional Window Styles@endlink + */ + bool Create( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPGMAN_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridManagerNameStr ); + + /** Enables or disables (shows/hides) categories according to parameter enable. + WARNING: Not tested properly, use at your own risk. + */ + bool EnableCategories( bool enable ) + { + long fl = m_windowStyle | wxPG_HIDE_CATEGORIES; + if ( enable ) fl = m_windowStyle & ~(wxPG_HIDE_CATEGORIES); + SetWindowStyleFlag(fl); + return true; + } + + /** Selects page, scrolls and/or expands items to ensure that the + given item is visible. Returns true if something was actually done. + */ + bool EnsureVisible( wxPGPropArg id ); + + /** Returns number of children of the root property of the selected page. */ + size_t GetChildrenCount() + { + return GetChildrenCount( m_pPropGrid->m_pState->m_properties ); + } + + /** Returns number of children of the root property of given page. */ + size_t GetChildrenCount( int pageIndex ); + + /** Returns number of children for the property. + + NB: Cannot be in container methods class due to name hiding. + */ + size_t GetChildrenCount( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(0) + return p->GetChildCount(); + } + + /** Returns number of columns on given page. By the default, + returns number of columns on current page. */ + int GetColumnCount( int page = -1 ) const; + + /** Returns height of the description text box. */ + int GetDescBoxHeight() const; + + /** Returns pointer to the contained wxPropertyGrid. This does not change + after wxPropertyGridManager has been created, so you can safely obtain + pointer once and use it for the entire lifetime of the instance. + */ + wxPropertyGrid* GetGrid() + { + wxASSERT(m_pPropGrid); + return m_pPropGrid; + }; + + const wxPropertyGrid* GetGrid() const + { + wxASSERT(m_pPropGrid); + return (const wxPropertyGrid*)m_pPropGrid; + }; + + /** Returns iterator class instance. + @remarks + Calling this method in wxPropertyGridManager causes run-time assertion failure. + Please only iterate through individual pages or use CreateVIterator(). + */ + wxPropertyGridIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, wxPGProperty* firstProp = NULL ) + { + wxFAIL_MSG(wxT("Please only iterate through individual pages or use CreateVIterator()")); + return wxPropertyGridInterface::GetIterator( flags, firstProp ); + } + + wxPropertyGridConstIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, wxPGProperty* firstProp = NULL ) const + { + wxFAIL_MSG(wxT("Please only iterate through individual pages or use CreateVIterator()")); + return wxPropertyGridInterface::GetIterator( flags, firstProp ); + } + + /** Returns iterator class instance. + @remarks + Calling this method in wxPropertyGridManager causes run-time assertion failure. + Please only iterate through individual pages or use CreateVIterator(). + */ + wxPropertyGridIterator GetIterator( int flags, int startPos ) + { + wxFAIL_MSG(wxT("Please only iterate through individual pages or use CreateVIterator()")); + return wxPropertyGridInterface::GetIterator( flags, startPos ); + } + + wxPropertyGridConstIterator GetIterator( int flags, int startPos ) const + { + wxFAIL_MSG(wxT("Please only iterate through individual pages or use CreateVIterator()")); + return wxPropertyGridInterface::GetIterator( flags, startPos ); + } + + /** Similar to GetIterator, but instead returns wxPGVIterator instance, + which can be useful for forward-iterating through arbitrary property + containers. + */ + virtual wxPGVIterator GetVIterator( int flags ) const; + + /** Returns currently selected page. + */ + wxPropertyGridPage* GetCurrentPage() const + { + return GetPage(m_selPage); + } + + /** Returns last page. + */ + wxPropertyGridPage* GetLastPage() const + { + return GetPage(m_arrPages.size()-1); + } + + /** Returns page object for given page index. + */ + wxPropertyGridPage* GetPage( unsigned int ind ) const + { + return (wxPropertyGridPage*)m_arrPages.Item(ind); + } + + /** Returns page object for given page name. + */ + wxPropertyGridPage* GetPage( const wxString& name ) const + { + return GetPage(GetPageByName(name)); + } + + /** Returns index for a page name. If no match is found, wxNOT_FOUND is returned. */ + int GetPageByName( const wxString& name ) const; + + /** Returns number of managed pages. */ + size_t GetPageCount() const; + + /** Returns name of given page. */ + const wxString& GetPageName( int index ) const; + + /** Returns "root property" of the given page. It does not have name, etc. + and it is not visible. It is only useful for accessing its children. + */ + wxPGProperty* GetPageRoot( int index ) const; + + /** Returns index to currently selected page. */ + int GetSelectedPage() const { return m_selPage; } + + /** Shortcut for GetGrid()->GetSelection(). */ + wxPGProperty* GetSelectedProperty() const + { + return m_pPropGrid->GetSelection(); + } + + /** Synonyme for GetSelectedPage. */ + int GetSelection() const { return m_selPage; } + + /** Returns a pointer to the toolbar currently associated with the + wxPropertyGridManager (if any). */ + wxToolBar* GetToolBar() const { return m_pToolbar; } + + /** Creates new property page. Note that the first page is not created + automatically. + @param index + Add to this position. -1 will add as the last item. + @param label + A label for the page. This may be shown as a toolbar tooltip etc. + @param bmp + Bitmap image for toolbar. If wxNullBitmap is used, then a built-in + default image is used. + @param pageObj + wxPropertyGridPage instance. Manager will take ownership of this object. + If NULL, default page object is constructed. + @retval + Returns index to the page created. + */ + virtual int InsertPage( int index, const wxString& label, const wxBitmap& bmp = wxNullBitmap, + wxPropertyGridPage* pageObj = (wxPropertyGridPage*) NULL ); + + /** Returns true if any property on any page has been modified by the user. */ + bool IsAnyModified() const; + + /** Returns true if updating is frozen (ie. Freeze() called but not yet Thaw() ). */ + bool IsFrozen() const { return (m_pPropGrid->m_frozen>0)?true:false; } + + /** Returns true if any property on given page has been modified by the user. */ + bool IsPageModified( size_t index ) const; + + virtual void Refresh( bool eraseBackground = true, + const wxRect* rect = (const wxRect*) NULL ); + + /** Removes a page. + @retval + Returns false if it was not possible to remove page in question. + */ + virtual bool RemovePage( int page ); + + /** Select and displays a given page. Also makes it target page for + insert operations etc. + @param index + Index of page being seleced. Can be -1 to select nothing. + */ + void SelectPage( int index ); + + /** Select and displays a given page (by label). */ + void SelectPage( const wxString& label ) + { + int index = GetPageByName(label); + wxCHECK_RET( index >= 0, wxT("No page with such name") ); + SelectPage( index ); + } + + /** Select and displays a given page. */ + void SelectPage( wxPropertyGridPage* ptr ) + { + SelectPage( GetPageByState(ptr) ); + } + + /** Select a property. */ + bool SelectProperty( wxPGPropArg id, bool focus = false ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->GetParentState()->DoSelectProperty(p, focus); + } + + /** Sets number of columns on given page (default is current page). + */ + void SetColumnCount( int colCount, int page = -1 ); + + /** Sets label and text in description box. + */ + void SetDescription( const wxString& label, const wxString& content ); + + /** Sets y coordinate of the description box splitter. */ + void SetDescBoxHeight( int ht, bool refresh = true ); + + /** Sets property attribute for all applicapple properties. + Be sure to use this method after all properties have been + added to the grid. + */ + void SetPropertyAttributeAll( const wxString& name, wxVariant value ); + + /** Moves splitter as left as possible, while still allowing all + labels to be shown in full. + @param subProps + If false, will still allow sub-properties (ie. properties which + parent is not root or category) to be cropped. + @param allPages + If true, takes labels on all pages into account. + */ + void SetSplitterLeft( bool subProps = false, bool allPages = true ); + + /** Sets splitter position on individual page. */ + void SetPageSplitterPosition( int page, int pos, int column = 0 ) + { + GetPage(page)->DoSetSplitterPosition( pos, column ); + } + + /** Sets splitter position for all pages. + @remarks + Splitter position cannot exceed grid size, and therefore setting it during + form creation may fail as initial grid size is often smaller than desired + splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int pos, int column = 0 ); + + /** Synonyme for SelectPage(name). */ + void SetStringSelection( const wxChar* name ) + { + SelectPage( GetPageByName(name) ); + } + +protected: + + // + // Subclassing helpers + // + + /** Creates property grid for the manager. Override to use subclassed + wxPropertyGrid. + */ + virtual wxPropertyGrid* CreatePropertyGrid() const; + + virtual void RefreshProperty( wxPGProperty* p ); +}; + +// ----------------------------------------------------------------------- diff --git a/interface/wx/propgrid/property.h b/interface/wx/propgrid/property.h new file mode 100644 index 0000000000..2f3f5fb223 --- /dev/null +++ b/interface/wx/propgrid/property.h @@ -0,0 +1,1558 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: property.h +// Purpose: interface of wxPGProperty +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +#define wxNullProperty ((wxPGProperty*)NULL) + + +/** wxPGPaintData + + Contains information relayed to property's OnCustomPaint. +*/ +struct wxPGPaintData +{ + /** wxPropertyGrid. */ + const wxPropertyGrid* m_parent; + + /** Normally -1, otherwise index to drop-down list item that has to be drawn. */ + int m_choiceItem; + + /** Set to drawn width in OnCustomPaint (optional). */ + int m_drawnWidth; + + /** In a measure item call, set this to the height of item at m_choiceItem index. */ + int m_drawnHeight; +}; + + +// Structure for relaying choice/list info. +struct wxPGChoiceInfo +{ + wxPGChoices* m_choices; +}; + + +/** @section propgrid_property_attributes wxPropertyGrid Property Attribute Identifiers + + wxPGProperty::SetAttribute() and wxPropertyGridInterfaces::SetPropertyAttribute() + accept one of these as attribute name argument . + + You can use strings instead of constants. However, some of these + constants are redefined to use cached strings which may reduce + your binary size by some amount. + + @{ +*/ + +/** Set default value for property. +*/ +#define wxPG_ATTR_DEFAULT_VALUE wxS("DefaultValue") + +/** Universal, int or double. Minimum value for numeric properties. +*/ +#define wxPG_ATTR_MIN wxS("Min") + +/** Universal, int or double. Maximum value for numeric properties. +*/ +#define wxPG_ATTR_MAX wxS("Max") + +/** Universal, string. When set, will be shown as text after the displayed + text value. Alternatively, if third column is enabled, text will be shown + there (for any type of property). +*/ +#define wxPG_ATTR_UNITS wxS("Units") + +/** Universal, string. When set, will be shown in property's value cell + when displayed value string is empty, or value is unspecified. +*/ +#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp") + +/** wxBoolProperty specific, int, default 0. When 1 sets bool property to + use checkbox instead of choice. +*/ +#define wxPG_BOOL_USE_CHECKBOX wxS("UseCheckbox") + +/** wxBoolProperty specific, int, default 0. When 1 sets bool property value + to cycle on double click (instead of showing the popup listbox). +*/ +#define wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING wxS("UseDClickCycling") + +/** wxFloatProperty (and similar) specific, int, default -1. Sets the (max) precision + used when floating point value is rendered as text. The default -1 means infinite + precision. +*/ +#define wxPG_FLOAT_PRECISION wxS("Precision") + +/** The text will be echoed as asterisks (wxTE_PASSWORD will be passed to textctrl etc). +*/ +#define wxPG_STRING_PASSWORD wxS("Password") + +/** Define base used by a wxUIntProperty. Valid constants are + wxPG_BASE_OCT, wxPG_BASE_DEC, wxPG_BASE_HEX and wxPG_BASE_HEXL + (lowercase characters). +*/ +#define wxPG_UINT_BASE wxS("Base") + +/** Define prefix rendered to wxUIntProperty. Accepted constants + wxPG_PREFIX_NONE, wxPG_PREFIX_0x, and wxPG_PREFIX_DOLLAR_SIGN. + <b>Note:</b> Only wxPG_PREFIX_NONE works with Decimal and Octal + numbers. +*/ +#define wxPG_UINT_PREFIX wxS("Prefix") + +/** wxFileProperty/wxImageFileProperty specific, wxChar*, default is detected/varies. + Sets the wildcard used in the triggered wxFileDialog. Format is the + same. +*/ +#define wxPG_FILE_WILDCARD wxS("Wildcard") + +/** wxFileProperty/wxImageFileProperty specific, int, default 1. + When 0, only the file name is shown (i.e. drive and directory are hidden). +*/ +#define wxPG_FILE_SHOW_FULL_PATH wxS("ShowFullPath") + +/** Specific to wxFileProperty and derived properties, wxString, default empty. + If set, then the filename is shown relative to the given path string. +*/ +#define wxPG_FILE_SHOW_RELATIVE_PATH wxS("ShowRelativePath") + +/** Specific to wxFileProperty and derived properties, wxString, default is empty. + Sets the initial path of where to look for files. +*/ +#define wxPG_FILE_INITIAL_PATH wxS("InitialPath") + +/** Specific to wxFileProperty and derivatives, wxString, default is empty. + Sets a specific title for the dir dialog. +*/ +#define wxPG_FILE_DIALOG_TITLE wxS("DialogTitle") + +/** Specific to wxDirProperty, wxString, default is empty. + Sets a specific message for the dir dialog. +*/ +#define wxPG_DIR_DIALOG_MESSAGE wxS("DialogMessage") + +/** Sets displayed date format for wxDateProperty. +*/ +#define wxPG_DATE_FORMAT wxS("DateFormat") + +/** Sets wxDatePickerCtrl window style used with wxDateProperty. Default + is wxDP_DEFAULT | wxDP_SHOWCENTURY. +*/ +#define wxPG_DATE_PICKER_STYLE wxS("PickerStyle") + +/** SpinCtrl editor, int or double. How much number changes when button is + pressed (or up/down on keybard). +*/ +#define wxPG_ATTR_SPINCTRL_STEP wxS("Step") + +/** SpinCtrl editor, bool. If true, value wraps at Min/Max. +*/ +#define wxPG_ATTR_SPINCTRL_WRAP wxS("Wrap") + +/** wxMultiChoiceProperty, int. If 0, no user strings allowed. If 1, user strings + appear before list strings. If 2, user strings appear after list string. +*/ +#define wxPG_ATTR_MULTICHOICE_USERSTRINGMODE wxS("UserStringMode") + +/** wxColourProperty and its kind, int, default 1. Setting this attribute to 0 hides custom + colour from property's list of choices. +*/ +#define wxPG_COLOUR_ALLOW_CUSTOM wxS("AllowCustom") + +/** First attribute id that is guaranteed not to be used built-in + properties. +*/ +//#define wxPG_USER_ATTRIBUTE 192 + +/** @} +*/ + +// ----------------------------------------------------------------------- + +/** @class wxPGProperty + + wxPGProperty is base class for all wxPropertyGrid properties. In + sections below we cover few related topics. + + @li @ref pgproperty_properties + @li @ref pgproperty_creating + + @section pgproperty_properties Supplied Ready-to-use Property Classes + + Here is a list and short description of supplied fully-functional + property classes. They are located in either props.h or advprops.h. + + @li @ref wxArrayStringProperty + @li @ref wxBoolProperty + @li @ref wxColourProperty + @li @ref wxCursorProperty + @li @ref wxDateProperty + @li @ref wxDirProperty + @li @ref wxEditEnumProperty + @li @ref wxEnumProperty + @li @ref wxFileProperty + @li @ref wxFlagsProperty + @li @ref wxFloatProperty + @li @ref wxFontProperty + @li @ref wxImageFileProperty + @li @ref wxIntProperty + @li @ref wxLongStringProperty + @li @ref wxMultiChoiceProperty + @li @ref wxPropertyCategory + @li @ref wxStringProperty + @li @ref wxSystemColourProperty + @li @ref wxUIntProperty + + @subsection wxPropertyCategory + + Not an actual property per se, but a header for a group of properties. + Regardless inherits from wxPGProperty. + + @subsection wxStringProperty + + Simple string property. wxPG_STRING_PASSWORD attribute may be used + to echo value as asterisks and use wxTE_PASSWORD for wxTextCtrl. + + @remarks + * wxStringProperty has a special trait: if it has value of "<composed>", + and also has child properties, then its displayed value becomes + composition of child property values, similar as with wxFontProperty, + for instance. + + @subsection wxIntProperty + + Like wxStringProperty, but converts text to a signed long integer. + wxIntProperty seamlessly supports 64-bit integers (ie. wxLongLong). + + @subsection wxUIntProperty + + Like wxIntProperty, but displays value as unsigned int. To set + the prefix used globally, manipulate wxPG_UINT_PREFIX string attribute. + To set the globally used base, manipulate wxPG_UINT_BASE int + attribute. Regardless of current prefix, understands (hex) values starting + with both "0x" and "$". + wxUIntProperty seamlessly supports 64-bit unsigned integers (ie. wxULongLong). + + @subsection wxFloatProperty + + Like wxStringProperty, but converts text to a double-precision floating point. + Default float-to-text precision is 6 decimals, but this can be changed + by modifying wxPG_FLOAT_PRECISION attribute. + + @subsection wxBoolProperty + + Represents a boolean value. wxChoice is used as editor control, by the + default. wxPG_BOOL_USE_CHECKBOX attribute can be set to true inorder to use + check box instead. + + @subsection wxLongStringProperty + + Like wxStringProperty, but has a button that triggers a small text editor + dialog. Note that in long string values, tabs are represented by "\t" and + line break by "\n". + + @subsection wxDirProperty + + Like wxLongStringProperty, but the button triggers dir selector instead. + Supported properties (all with string value): wxPG_DIR_DIALOG_MESSAGE. + + @subsection wxFileProperty + + Like wxLongStringProperty, but the button triggers file selector instead. + Default wildcard is "All files..." but this can be changed by setting + wxPG_FILE_WILDCARD attribute (see wxFileDialog for format details). + Attribute wxPG_FILE_SHOW_FULL_PATH can be set to false inorder to show + only the filename, not the entire path. + + @subsection wxEnumProperty + + Represents a single selection from a list of choices - + wxOwnerDrawnComboBox is used to edit the value. + + @subsection wxFlagsProperty + + Represents a bit set that fits in a long integer. wxBoolProperty sub-properties + are created for editing individual bits. Textctrl is created to manually edit + the flags as a text; a continous sequence of spaces, commas and semicolons + is considered as a flag id separator. + <b>Note: </b> When changing "choices" (ie. flag labels) of wxFlagsProperty, you + will need to use SetPropertyChoices - otherwise they will not get updated properly. + + @subsection wxArrayStringProperty + + Allows editing of a list of strings in wxTextCtrl and in a separate dialog. + + @subsection wxDateProperty + + wxDateTime property. Default editor is DatePickerCtrl, altough TextCtrl + should work as well. wxPG_DATE_FORMAT attribute can be used to change + string wxDateTime::Format uses (altough default is recommended as it is + locale-dependant), and wxPG_DATE_PICKER_STYLE allows changing window + style given to DatePickerCtrl (default is wxDP_DEFAULT|wxDP_SHOWCENTURY). + + @subsection wxEditEnumProperty + + Represents a string that can be freely edited or selected from list of choices - + custom combobox control is used to edit the value. + + @subsection wxMultiChoiceProperty + + Allows editing a multiple selection from a list of strings. This is + property is pretty much built around concept of wxMultiChoiceDialog. + It uses wxArrayString value. + + @subsection wxImageFileProperty + + Like wxFileProperty, but has thumbnail of the image in front of + the filename and autogenerates wildcard from available image handlers. + + @subsection wxColourProperty + + <b>Useful alternate editor:</b> Choice. + + Represents wxColour. wxButton is used to trigger a colour picker dialog. + + @subsection wxFontProperty + + Represents wxFont. Various sub-properties are used to edit individual + subvalues. + + @subsection wxSystemColourProperty + + Represents wxColour and a system colour index. wxChoice is used to edit + the value. Drop-down list has color images. Note that value type + is wxColourPropertyValue instead of wxColour. + @code + class wxColourPropertyValue : public wxObject + { + public: + // An integer value relating to the colour, and which exact + // meaning depends on the property with which it is used. + // + // For wxSystemColourProperty: + // Any of wxSYS_COLOUR_XXX, or any web-colour ( use wxPG_TO_WEB_COLOUR + // macro - (currently unsupported) ), or wxPG_COLOUR_CUSTOM. + wxUint32 m_type; + + // Resulting colour. Should be correct regardless of type. + wxColour m_colour; + }; + @endcode + + @subsection wxCursorProperty + + Represents a wxCursor. wxChoice is used to edit the value. + Drop-down list has cursor images under some (wxMSW) platforms. + + + @section pgproperty_creating Creating Custom Properties + + New properties can be created by subclassing wxPGProperty or one + of the provided property classes, and (re)implementing necessary + member functions. Below, each virtual member function has ample + documentation about its purpose and any odd details which to keep + in mind. + + Here is a very simple 'template' code: + + @code + class MyProperty : public wxPGProperty + { + public: + // All arguments of ctor must have a default value - + // use wxPG_LABEL for label and name + MyProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ) + { + // m_value is wxVariant + m_value = value; + } + + virtual ~MyProperty() { } + + const wxPGEditor* DoGetEditorClass() const + { + // Determines editor used by property. + // You can replace 'TextCtrl' below with any of these + // builtin-in property editor identifiers: Choice, ComboBox, + // TextCtrlAndButton, ChoiceAndButton, CheckBox, SpinCtrl, + // DatePickerCtrl. + return wxPGEditor_TextCtrl; + } + + virtual wxString GetValueAsString( int argFlags ) const + { + // TODO: Return property value in string format + } + + virtual bool StringToValue( wxVariant& variant, const wxString& text, int argFlags ) + { + // TODO: Adapt string to property value. + } + + protected: + }; + @endcode + + Since wxPGProperty derives from wxObject, you can use standard + DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS macros. From the + above example they were omitted for sake of simplicity, and besides, + they are only really needed if you need to use wxRTTI with your + property class. + + You can change the 'value type' of a property by simply assigning different type + of variant with SetValue. <b>It is mandatory to implement wxVariantData class + for all data types used as property values.</b> Also, it is further recommended + to derive your class from wxPGVariantData, like this: + + @code + // In header file: + // (replace DECL with required data declaration, wxEMPTY_PARAMETER_VALUE if none) + WX_PG_DECLARE_VARIANT_DATA(wxPGVariantMyDataClass, MyDataClass, DECL) + + // In sources file: + WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantMyDataClass, MyDataClass) + @endcode + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPGProperty : public wxObject +{ +public: + typedef wxUint32 FlagType; + + /** Basic constructor. + */ + wxPGProperty(); + + /** Constructor. + Non-abstract property classes should have constructor of this style: + + @code + + // If T is a class, then it should be a constant reference + // (e.g. const T& ) instead. + MyProperty( const wxString& label, const wxString& name, T value ) + : wxPGProperty() + { + // Generally recommended way to set the initial value + // (as it should work in pretty much 100% of cases). + wxVariant variant; + variant << value; + SetValue(variant); + + // If has private child properties then create them here. For example: + // AddChild( new wxStringProperty( "Subprop 1", wxPG_LABEL, value.GetSubProp1() ) ); + } + + @endcode + */ + wxPGProperty( const wxString& label, const wxString& name ); + + /** Virtual destructor. It is customary for derived properties to implement this. */ + virtual ~wxPGProperty(); + + /** This virtual function is called after m_value has been set. + + @remarks + - If m_value was set to Null variant (ie. unspecified value), OnSetValue() + will not be called. + - m_value may be of any variant type. Typically properties internally support only + one variant type, and as such OnSetValue() provides a good opportunity to convert + supported values into internal type. + - Default implementation does nothing. + */ + virtual void OnSetValue(); + + /** Override this to return something else than m_value as the value. + */ + virtual wxVariant DoGetValue() const { return m_value; } + + /** Implement this function in derived class to check the value. + Return true if it is ok. Returning false prevents property change events + from occurring. + + @remarks + - Default implementation always returns true. + */ + virtual bool ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const; + + /** Converts 'text' into proper value 'variant'. Returns true if new (different than + m_value) value could be interpreted from the text. + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable value instead of displayable + one (they may be different). + If wxPG_COMPOSITE_FRAGMENT is set, text is interpreted as a part of composite + property string value (as generated by GetValueAsString() called with this same + flag). + + @remarks + Default implementation converts semicolon delimited tokens into child values. Only + works for properties with children. + */ + virtual bool StringToValue( wxVariant& variant, const wxString& text, int argFlags = 0 ) const; + + /** Converts 'number' (including choice selection) into proper value 'variant'. + Returns true if new (different than m_value) value could be interpreted from the integer. + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable value instead of displayable one. + + @remarks + - If property is not supposed to use choice or spinctrl or other editor + with int-based value, it is not necessary to implement this method. + - Default implementation simply assign given int to m_value. + - If property uses choice control, and displays a dialog on some choice items, + then it is preferred to display that dialog in IntToValue instead of OnEvent. + */ + virtual bool IntToValue( wxVariant& value, int number, int argFlags = 0 ) const; + +public: + + /** Returns text representation of property's value. + + @param argFlags + If wxPG_FULL_VALUE is set, returns complete, storable string value instead of displayable. + If wxPG_EDITABLE_VALUE is set, returns string value that must be editable in textctrl. + If wxPG_COMPOSITE_FRAGMENT is set, returns text that is appropriate to display + as a part of composite property string value. + + @remarks + Default implementation returns string composed from text representations of + child properties. + */ + virtual wxString GetValueAsString( int argFlags = 0 ) const; + + /** Converts string to a value, and if successful, calls SetValue() on it. + Default behavior is to do nothing. + @param text + String to get the value from. + @retval + true if value was changed. + */ + bool SetValueFromString( const wxString& text, int flags = 0 ); + + /** Converts integer to a value, and if succesful, calls SetValue() on it. + Default behavior is to do nothing. + @param value + Int to get the value from. + @param flags + If has wxPG_FULL_VALUE, then the value given is a actual value and not an index. + @retval + True if value was changed. + */ + bool SetValueFromInt( long value, int flags = 0 ); + + /** Returns size of the custom painted image in front of property. This method + must be overridden to return non-default value if OnCustomPaint is to be + called. + @param item + Normally -1, but can be an index to the property's list of items. + @remarks + - Default behavior is to return wxSize(0,0), which means no image. + - Default image width or height is indicated with dimension -1. + - You can also return wxPG_DEFAULT_IMAGE_SIZE which equals wxSize(-1, -1). + */ + virtual wxSize OnMeasureImage( int item = -1 ) const; + + /** Events received by editor widgets are processed here. Note that editor class + usually processes most events. Some, such as button press events of + TextCtrlAndButton class, can be handled here. Also, if custom handling + for regular events is desired, then that can also be done (for example, + wxSystemColourProperty custom handles wxEVT_COMMAND_CHOICE_SELECTED + to display colour picker dialog when 'custom' selection is made). + + If the event causes value to be changed, SetValueInEvent() + should be called to set the new value. + + @param event + Associated wxEvent. + @retval + Should return true if any changes in value should be reported. + @remarks + - If property uses choice control, and displays a dialog on some choice items, + then it is preferred to display that dialog in IntToValue instead of OnEvent. + */ + virtual bool OnEvent( wxPropertyGrid* propgrid, wxWindow* wnd_primary, wxEvent& event ); + + /** Called after value of a child property has been altered. Note that this function is + usually called at the time that value of this property, or given child property, is + still pending for change. + + Sample pseudo-code implementation: + + @code + void MyProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const + { + // Acquire reference to actual type of data stored in variant + // (TFromVariant only exists if wxPropertyGrid's wxVariant-macros were used to create + // the variant class). + T& data = TFromVariant(thisValue); + + // Copy childValue into data. + switch ( childIndex ) + { + case 0: + data.SetSubProp1( childvalue.GetLong() ); + break; + case 1: + data.SetSubProp2( childvalue.GetString() ); + break; + ... + } + } + @endcode + + @param thisValue + Value of this property, that should be altered. + @param childIndex + Index of child changed (you can use Item(childIndex) to get). + @param childValue + Value of the child property. + */ + virtual void ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const; + + /** Returns pointer to an instance of used editor. + */ + virtual const wxPGEditor* DoGetEditorClass() const; + + /** Returns pointer to the wxValidator that should be used + with the editor of this property (NULL for no validator). + Setting validator explicitly via SetPropertyValidator + will override this. + + In most situations, code like this should work well + (macros are used to maintain one actual validator instance, + so on the second call the function exits within the first + macro): + + @code + + wxValidator* wxMyPropertyClass::DoGetValidator () const + { + WX_PG_DOGETVALIDATOR_ENTRY() + + wxMyValidator* validator = new wxMyValidator(...); + + ... prepare validator... + + WX_PG_DOGETVALIDATOR_EXIT(validator) + } + + @endcode + + @remarks + You can get common filename validator by returning + wxFileProperty::GetClassValidator(). wxDirProperty, + for example, uses it. + */ + virtual wxValidator* DoGetValidator () const; + + /** Returns current value's index to the choice control. May also return, + through pointer arguments, strings that should be inserted to that control. + Irrelevant to classes which do not employ wxPGEditor_Choice or similar. + @remarks + - If returns NULL in choiceinfo.m_choices, then this class must be + derived from wxBaseEnumProperty. + - Must be able to cope situation where property's set of choices is + uninitialized. + */ + virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo ); + + /** Override to paint an image in front of the property value text or drop-down + list item (but only if wxPGProperty::OnMeasureImage is overridden as well). + + If property's OnMeasureImage() returns size that has height != 0 but less than + row height ( < 0 has special meanings), wxPropertyGrid calls this method to + draw a custom image in a limited area in front of the editor control or + value text/graphics, and if control has drop-down list, then the image is + drawn there as well (even in the case OnMeasureImage() returned higher height + than row height). + + NOTE: Following applies when OnMeasureImage() returns a "flexible" height ( + using wxPG_FLEXIBLE_SIZE(W,H) macro), which implies variable height items: + If rect.x is < 0, then this is a measure item call, which means that + dc is invalid and only thing that should be done is to set paintdata.m_drawnHeight + to the height of the image of item at index paintdata.m_choiceItem. This call + may be done even as often as once every drop-down popup show. + + @param dc + wxDC to paint on. + @param rect + Box reserved for custom graphics. Includes surrounding rectangle, if any. + If x is < 0, then this is a measure item call (see above). + @param paintdata + wxPGPaintData structure with much useful data. + + @remarks + - You can actually exceed rect width, but if you do so then paintdata.m_drawnWidth + must be set to the full width drawn in pixels. + - Due to technical reasons, rect's height will be default even if custom height + was reported during measure call. + - Brush is guaranteed to be default background colour. It has been already used to + clear the background of area being painted. It can be modified. + - Pen is guaranteed to be 1-wide 'black' (or whatever is the proper colour) pen for + drawing framing rectangle. It can be changed as well. + + @see GetValueAsString() + */ + virtual void OnCustomPaint( wxDC& dc, const wxRect& rect, wxPGPaintData& paintdata ); + + /** Returns used wxPGCellRenderer instance for given property column (label=0, value=1). + + Default implementation returns editor's renderer for all columns. + */ + virtual wxPGCellRenderer* GetCellRenderer( int column ) const; + + /** Refresh values of child properties. Automatically called after value is set. + */ + virtual void RefreshChildren(); + + /** Special handling for attributes of this property. + + If returns false, then the attribute will be automatically stored in + m_attributes. + + Default implementation simply returns false. + */ + virtual bool DoSetAttribute( const wxString& name, wxVariant& value ); + + /** Returns value of an attribute. + + Override if custom handling of attributes is needed. + + Default implementation simply return NULL variant. + */ + virtual wxVariant DoGetAttribute( const wxString& name ) const; + + /** Returns instance of a new wxPGEditorDialogAdapter instance, which is + used when user presses the (optional) button next to the editor control; + + Default implementation returns NULL (ie. no action is generated when + button is pressed). + */ + virtual wxPGEditorDialogAdapter* GetEditorDialog() const; + + /** Adds entry to property's wxPGChoices and editor control (if it is active). + Returns index of item added. + */ + int AppendChoice( const wxString& label, int value = wxPG_INVALID_VALUE ) + { + return InsertChoice(label,-1,value); + } + + /** Returns wxPGCell of given column, NULL if none. If valid + object is returned, caller will gain its ownership. + */ + wxPGCell* AcquireCell( unsigned int column ) + { + if ( column >= m_cells.size() ) + return NULL; + + wxPGCell* cell = (wxPGCell*) m_cells[column]; + m_cells[column] = NULL; + return cell; + } + + /** Returns true if children of this property are component values (for instance, + points size, face name, and is_underlined are component values of a font). + */ + bool AreChildrenComponents() const + { + if ( m_flags & (wxPG_PROP_COMPOSED_VALUE|wxPG_PROP_AGGREGATE) ) + return true; + + return false; + } + + /** Removes entry from property's wxPGChoices and editor control (if it is active). + + If selected item is deleted, then the value is set to unspecified. + */ + void DeleteChoice( int index ); + + /** Call to enable or disable usage of common value (integer value that can be selected for + properties instead of their normal values) for this property. + + Common values are disabled by the default for all properties. + */ + void EnableCommonValue( bool enable = true ) + { + if ( enable ) SetFlag( wxPG_PROP_USES_COMMON_VALUE ); + else ClearFlag( wxPG_PROP_USES_COMMON_VALUE ); + } + + /** Composes text from values of child properties. */ + void GenerateComposedValue( wxString& text, int argFlags = 0 ) const; + + /** Returns property's label. */ + const wxString& GetLabel() const { return m_label; } + + /** Returns property's name with all (non-category, non-root) parents. */ + wxString GetName() const; + + /** Returns property's base name (ie. parent's name is not added in any case) */ + const wxString& GetBaseName() const { return m_name; } + + wxPGChoices& GetChoices(); + + const wxPGChoices& GetChoices() const; + + const wxPGChoiceEntry* GetCurrentChoice() const; + + /** Returns coordinate to the top y of the property. Note that the + position of scrollbars is not taken into account. + */ + int GetY() const; + + wxVariant GetValue() const + { + return DoGetValue(); + } + + /** Returns reference to the internal stored value. GetValue is preferred + way to get the actual value, since GetValueRef ignores DoGetValue, + which may override stored value. + */ + wxVariant& GetValueRef() + { + return m_value; + } + + const wxVariant& GetValueRef() const + { + return m_value; + } + + /** Same as GetValueAsString, except takes common value into account. + */ + wxString GetValueString( int argFlags = 0 ) const; + + void UpdateControl( wxWindow* primary ); + + /** Returns wxPGCell of given column, NULL if none. wxPGProperty + will retain ownership of the cell object. + */ + wxPGCell* GetCell( unsigned int column ) const + { + if ( column >= m_cells.size() ) + return NULL; + + return (wxPGCell*) m_cells[column]; + } + + unsigned int GetChoiceCount() const; + + wxString GetChoiceString( unsigned int index ); + + /** Return number of displayed common values for this property. + */ + int GetDisplayedCommonValueCount() const; + + wxString GetDisplayedString() const + { + return GetValueString(0); + } + + /** Returns property grid where property lies. */ + wxPropertyGrid* GetGrid() const; + + /** Returns owner wxPropertyGrid, but only if one is currently on a page + displaying this property. */ + wxPropertyGrid* GetGridIfDisplayed() const; + + /** Returns highest level non-category, non-root parent. Useful when you + have nested wxCustomProperties/wxParentProperties. + @remarks + Thus, if immediate parent is root or category, this will return the + property itself. + */ + wxPGProperty* GetMainParent() const; + + /** Return parent of property */ + wxPGProperty* GetParent() const { return m_parent; } + + /** Returns true if property has editable wxTextCtrl when selected. + + @remarks + Altough disabled properties do not displayed editor, they still + return True here as being disabled is considered a temporary + condition (unlike being read-only or having limited editing enabled). + */ + bool IsTextEditable() const; + + bool IsValueUnspecified() const + { + return m_value.IsNull(); + } + + FlagType HasFlag( FlagType flag ) const + { + return ( m_flags & flag ); + } + + /** Returns comma-delimited string of property attributes. + */ + const wxPGAttributeStorage& GetAttributes() const + { + return m_attributes; + } + + /** Returns m_attributes as list wxVariant. + */ + wxVariant GetAttributesAsList() const; + + FlagType GetFlags() const + { + return m_flags; + } + + const wxPGEditor* GetEditorClass() const; + + wxString GetValueType() const + { + return m_value.GetType(); + } + + /** Returns editor used for given column. NULL for no editor. + */ + const wxPGEditor* GetColumnEditor( int column ) const + { + if ( column == 1 ) + return GetEditorClass(); + + return NULL; + } + + /** Returns common value selected for this property. -1 for none. + */ + int GetCommonValue() const + { + return m_commonValue; + } + + /** Returns true if property has even one visible child. + */ + bool HasVisibleChildren() const; + + /** Adds entry to property's wxPGChoices and editor control (if it is active). + Returns index of item added. + */ + int InsertChoice( const wxString& label, int index, int value = wxPG_INVALID_VALUE ); + + /** Returns true if this property is actually a wxPropertyCategory. + */ + bool IsCategory() const { return HasFlag(wxPG_PROP_CATEGORY)?true:false; } + + /** Returns true if this property is actually a wxRootProperty. + */ + bool IsRoot() const { return (m_parent == NULL); } + + /** Returns true if this is a sub-property. */ + bool IsSubProperty() const + { + wxPGProperty* parent = (wxPGProperty*)m_parent; + if ( parent && !parent->IsCategory() ) + return true; + return false; + } + + /** Returns last visible sub-property, recursively. + */ + const wxPGProperty* GetLastVisibleSubItem() const; + + wxVariant GetDefaultValue() const; + + int GetMaxLength() const + { + return (int) m_maxLen; + } + + /** Determines, recursively, if all children are not unspecified. Takes values in given list into account. + */ + bool AreAllChildrenSpecified( wxVariant* pendingList = NULL ) const; + + /** Updates composed values of parent non-category properties, recursively. + Returns topmost property updated. + + @remarks + - Must not call SetValue() (as can be called in it). + */ + wxPGProperty* UpdateParentValues(); + + /** Returns true if containing grid uses wxPG_EX_AUTO_UNSPECIFIED_VALUES. + */ + FlagType UsesAutoUnspecified() const + { + return HasFlag(wxPG_PROP_AUTO_UNSPECIFIED); + } + + wxBitmap* GetValueImage() const + { + return m_valueBitmap; + } + + wxVariant GetAttribute( const wxString& name ) const; + + /** Returns named attribute, as string, if found. Otherwise defVal is returned. + */ + wxString GetAttribute( const wxString& name, const wxString& defVal ) const; + + /** Returns named attribute, as long, if found. Otherwise defVal is returned. + */ + long GetAttributeAsLong( const wxString& name, long defVal ) const; + + /** Returns named attribute, as double, if found. Otherwise defVal is returned. + */ + double GetAttributeAsDouble( const wxString& name, double defVal ) const; + + inline unsigned int GetArrIndex() const { return m_arrIndex; } + + inline unsigned int GetDepth() const { return (unsigned int)m_depth; } + + /** Gets flags as a'|' delimited string. Note that flag names are not + prepended with 'wxPG_PROP_'. + @param flagsMask + String will only be made to include flags combined by this parameter. + */ + wxString GetFlagsAsString( FlagType flagsMask ) const; + + /** Returns position in parent's array. */ + unsigned int GetIndexInParent() const + { + return (unsigned int)m_arrIndex; + } + + /** Hides or reveals the property. + @param hide + true for hide, false for reveal. + @param flags + By default changes are applied recursively. Set this paramter wxPG_DONT_RECURSE to prevent this. + */ + inline bool Hide( bool hide, int flags = wxPG_RECURSE ); + + bool IsExpanded() const { return (!(m_flags & wxPG_PROP_COLLAPSED) && GetChildCount()); } + + /** Returns true if all parents expanded. + */ + bool IsVisible() const; + + bool IsEnabled() const + { + return ( m_flags & wxPG_PROP_DISABLED ) ? false : true; + } + + /** If property's editor is created this forces its recreation. Useful + in SetAttribute etc. Returns true if actually did anything. + */ + bool RecreateEditor(); + + /** If property's editor is active, then update it's value. + */ + void RefreshEditor(); + + /** Sets an attribute for this property. + @param name + Text identifier of attribute. See @ref propgrid_property_attributes. + @param value + Value of attribute. + */ + void SetAttribute( const wxString& name, wxVariant value ); + + void SetAttributes( const wxPGAttributeStorage& attributes ); + + /** Sets editor for a property. + + @param editor + For builtin editors, use wxPGEditor_X, where X is builtin editor's + name (TextCtrl, Choice, etc. see wxPGEditor documentation for full list). + + For custom editors, use pointer you received from wxPropertyGrid::RegisterEditorClass(). + */ + void SetEditor( const wxPGEditor* editor ) + { + m_customEditor = editor; + } + + /** Sets editor for a property. + */ + inline void SetEditor( const wxString& editorName ); + + /** Sets cell information for given column. + + Note that the property takes ownership of given wxPGCell instance. + */ + void SetCell( int column, wxPGCell* cellObj ); + + /** Changes value of a property with choices, but only + works if the value type is long or string. */ + void SetChoiceSelection( int newValue, const wxPGChoiceInfo& choiceInfo ); + + /** Sets common value selected for this property. -1 for none. + */ + void SetCommonValue( int commonValue ) + { + m_commonValue = commonValue; + } + + /** Sets flags from a '|' delimited string. Note that flag names are not + prepended with 'wxPG_PROP_'. + */ + void SetFlagsFromString( const wxString& str ); + + /** Sets property's "is it modified?" flag. Affects children recursively. + */ + void SetModifiedStatus( bool modified ) + { + SetFlagRecursively(wxPG_PROP_MODIFIED, modified); + } + + /** Call in OnEvent(), OnButtonClick() etc. to change the property value + based on user input. + + @remarks + This method is const since it doesn't actually modify value, but posts + given variant as pending value, stored in wxPropertyGrid. + */ + void SetValueInEvent( wxVariant value ) const; + + /** Call this to set value of the property. Unlike methods in wxPropertyGrid, + this does not automatically update the display. + + @remarks + Use wxPropertyGrid::ChangePropertyValue() instead if you need to run through + validation process and send property change event. + + If you need to change property value in event, based on user input, use + SetValueInEvent() instead. + + @param pList + Pointer to list variant that contains child values. Used to indicate + which children should be marked as modified. + @param flags + Various flags (for instance, wxPG_SETVAL_REFRESH_EDITOR). + */ + void SetValue( wxVariant value, wxVariant* pList = NULL, int flags = 0 ); + + /** Set wxBitmap in front of the value. This bitmap may be ignored + by custom cell renderers. + */ + void SetValueImage( wxBitmap& bmp ); + + /** If property has choices and they are not yet exclusive, new such copy + of them will be created. + */ + void SetChoicesExclusive(); + + void SetExpanded( bool expanded ) + { + if ( !expanded ) m_flags |= wxPG_PROP_COLLAPSED; + else m_flags &= ~wxPG_PROP_COLLAPSED; + } + + void SetFlag( FlagType flag ) { m_flags |= flag; } + + void SetFlagRecursively( FlagType flag, bool set ); + + void SetHelpString( const wxString& helpString ) + { + m_helpString = helpString; + } + + void SetLabel( const wxString& label ) { m_label = label; } + + inline void SetName( const wxString& newName ); + + void SetValueToUnspecified() + { + wxVariant val; // Create NULL variant + SetValue(val); + } + + /** Sets wxValidator for a property*/ + void SetValidator( const wxValidator& validator ) + { + m_validator = wxDynamicCast(validator.Clone(),wxValidator); + } + + /** Gets assignable version of property's validator. */ + wxValidator* GetValidator() const + { + if ( m_validator ) + return m_validator; + return DoGetValidator(); + } + + /** Updates property value in case there were last minute + changes. If value was unspecified, it will be set to default. + Use only for properties that have TextCtrl-based editor. + @remarks + If you have code similar to + @code + // Update the value in case of last minute changes + if ( primary && propgrid->IsEditorsValueModified() ) + GetEditorClass()->CopyValueFromControl( this, primary ); + @endcode + in wxPGProperty::OnEvent wxEVT_COMMAND_BUTTON_CLICKED handler, + then replace it with call to this method. + @retval + True if value changed. + */ + bool PrepareValueForDialogEditing( wxPropertyGrid* propgrid ); + + /** Returns client data (void*) of a property. + */ + void* GetClientData() const + { + return m_clientData; + } + + /** Sets client data (void*) of a property. + @remarks + This untyped client data has to be deleted manually. + */ + void SetClientData( void* clientData ) + { + m_clientData = clientData; + } + + /** Returns client object of a property. + */ + void SetClientObject(wxClientData* clientObject) + { + delete m_clientObject; + m_clientObject = clientObject; + } + + /** Sets managed client object of a property. + */ + wxClientData *GetClientObject() const { return m_clientObject; } + + /** Sets new set of choices for property. + + @remarks + This operation clears the property value. + */ + bool SetChoices( wxPGChoices& choices ); + + /** Sets new set of choices for property. + */ + inline bool SetChoices( const wxArrayString& labels, + const wxArrayInt& values = wxArrayInt() ); + + /** Set max length of text in text editor. + */ + inline bool SetMaxLength( int maxLen ); + + /** Call with 'false' in OnSetValue to cancel value changes after all + (ie. cancel 'true' returned by StringToValue() or IntToValue()). + */ + void SetWasModified( bool set = true ) + { + if ( set ) m_flags |= wxPG_PROP_WAS_MODIFIED; + else m_flags &= ~wxPG_PROP_WAS_MODIFIED; + } + + const wxString& GetHelpString() const + { + return m_helpString; + } + + void ClearFlag( FlagType flag ) { m_flags &= ~(flag); } + + // Use, for example, to detect if item is inside collapsed section. + bool IsSomeParent( wxPGProperty* candidate_parent ) const; + + /** Adapts list variant into proper value using consequtive ChildChanged-calls. + */ + void AdaptListToValue( wxVariant& list, wxVariant* value ) const; + + /** This is used by properties that have fixed sub-properties. */ + void AddChild( wxPGProperty* prop ); + + /** Returns height of children, recursively, and + by taking expanded/collapsed status into account. + + iMax is used when finding property y-positions. + */ + int GetChildrenHeight( int lh, int iMax = -1 ) const; + + /** Returns number of child properties */ + unsigned int GetChildCount() const { return m_children.GetCount(); } + + /** Returns sub-property at index i. */ + wxPGProperty* Item( size_t i ) const { return (wxPGProperty*)m_children.Item(i); } + + /** Returns last sub-property. + */ + wxPGProperty* Last() const { return (wxPGProperty*)m_children.Last(); } + + /** Returns index of given sub-property. */ + int Index( const wxPGProperty* p ) const { return m_children.Index((wxPGProperty*)p); } + + /** Deletes all sub-properties. */ + void Empty(); + + // Puts correct indexes to children + void FixIndexesOfChildren( size_t starthere = 0 ); + + wxPGProperty* GetItemAtY( unsigned int y, unsigned int lh, unsigned int* nextItemY ) const; + + /** Returns (direct) child property with given name (or NULL if not found). + */ + wxPGProperty* GetPropertyByName( const wxString& name ) const; +}; + + +/** @class wxPGChoices + + Helper class for managing choices of wxPropertyGrid properties. + Each entry can have label, value, bitmap, text colour, and background colour. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPGChoices +{ +public: + typedef long ValArrItem; + + /** Default constructor. */ + wxPGChoices() + { + Init(); + } + + /** Copy constructor. */ + wxPGChoices( const wxPGChoices& a ) + { + if ( a.m_data != wxPGChoicesEmptyData ) + { + m_data = a.m_data; + m_data->m_refCount++; + } + } + + /** Constructor. */ + wxPGChoices( const wxChar** labels, const long* values = NULL ) + { + Init(); + Set(labels,values); + } + + /** Constructor. */ + wxPGChoices( const wxArrayString& labels, const wxArrayInt& values = wxArrayInt() ) + { + Init(); + Set(labels,values); + } + + /** Simple interface constructor. */ + wxPGChoices( wxPGChoicesData* data ) + { + wxASSERT(data); + m_data = data; + data->m_refCount++; + } + + /** Destructor. */ + ~wxPGChoices() + { + Free(); + } + + /** Adds to current. If did not have own copies, creates them now. If was empty, + identical to set except that creates copies. + */ + void Add( const wxChar** labels, const ValArrItem* values = NULL ); + + /** Version that works with wxArrayString. */ + void Add( const wxArrayString& arr, const ValArrItem* values = NULL ); + + /** Version that works with wxArrayString and wxArrayInt. */ + void Add( const wxArrayString& arr, const wxArrayInt& arrint ); + + /** Adds single item. */ + wxPGChoiceEntry& Add( const wxString& label, int value = wxPG_INVALID_VALUE ); + + /** Adds a single item, with bitmap. */ + wxPGChoiceEntry& Add( const wxString& label, const wxBitmap& bitmap, int value = wxPG_INVALID_VALUE ); + + /** Adds a single item with full entry information. */ + wxPGChoiceEntry& Add( const wxPGChoiceEntry& entry ) + { + return Insert(entry, -1); + } + + /** Adds single item. */ + wxPGChoiceEntry& AddAsSorted( const wxString& label, int value = wxPG_INVALID_VALUE ); + + void Assign( const wxPGChoices& a ) + { + AssignData(a.m_data); + } + + void AssignData( wxPGChoicesData* data ); + + /** Delete all choices. */ + void Clear() + { + if ( m_data != wxPGChoicesEmptyData ) + m_data->Clear(); + } + + void EnsureData() + { + if ( m_data == wxPGChoicesEmptyData ) + m_data = new wxPGChoicesData(); + } + + /** Gets a unsigned number identifying this list. */ + wxPGChoicesId GetId() const { return (wxPGChoicesId) m_data; }; + + const wxString& GetLabel( size_t ind ) const + { + wxASSERT( ind >= 0 && ind < GetCount() ); + return Item(ind).GetText(); + } + + size_t GetCount () const + { + wxASSERT_MSG( m_data, + wxT("When checking if wxPGChoices is valid, use IsOk() instead of GetCount()") ); + return m_data->GetCount(); + } + + int GetValue( size_t ind ) const { return Item(ind).GetValue(); } + + /** Returns array of values matching the given strings. Unmatching strings + result in wxPG_INVALID_VALUE entry in array. + */ + wxArrayInt GetValuesForStrings( const wxArrayString& strings ) const; + + /** Returns array of indices matching given strings. Unmatching strings + are added to 'unmatched', if not NULL. + */ + wxArrayInt GetIndicesForStrings( const wxArrayString& strings, wxArrayString* unmatched = NULL ) const; + + /** Returns true if choices in general are likely to have values + (depens on that all entries have values or none has) + */ + bool HasValues() const; + + bool HasValue( unsigned int i ) const { return (m_data->GetCount() > i && m_data->Item(i)->HasValue()); } + + int Index( const wxString& str ) const; + int Index( int val ) const; + + /** Inserts single item. */ + wxPGChoiceEntry& Insert( const wxString& label, int index, int value = wxPG_INVALID_VALUE ); + + /** Inserts a single item with full entry information. */ + wxPGChoiceEntry& Insert( const wxPGChoiceEntry& entry, int index ); + + /** Returns false if this is a constant empty set of choices, + which should not be modified. + */ + bool IsOk() const + { + return ( m_data != wxPGChoicesEmptyData ); + } + + const wxPGChoiceEntry& Item( unsigned int i ) const + { + wxASSERT( IsOk() ); + return *m_data->Item(i); + } + + wxPGChoiceEntry& Item( unsigned int i ) + { + wxASSERT( IsOk() ); + return *m_data->Item(i); + } + + /** Removes count items starting at position nIndex. */ + void RemoveAt(size_t nIndex, size_t count = 1); + + /** Does not create copies for itself. */ + void Set( const wxChar** labels, const long* values = NULL ) + { + Free(); + Add(labels,values); + } + + /** Version that works with wxArrayString. + TODO: Deprecate this. + */ + void Set( wxArrayString& arr, const long* values = (const long*) NULL ) + { + Free(); + Add(arr,values); + } + + /** Version that works with wxArrayString and wxArrayInt. */ + void Set( const wxArrayString& labels, const wxArrayInt& values = wxArrayInt() ) + { + Free(); + if ( &values ) + Add(labels,values); + else + Add(labels); + } + + // Creates exclusive copy of current choices + void SetExclusive() + { + if ( m_data->m_refCount != 1 ) + { + wxPGChoicesData* data = new wxPGChoicesData(); + data->CopyDataFrom(m_data); + Free(); + m_data = data; + } + } + + // Returns data, increases refcount. + wxPGChoicesData* GetData() + { + wxASSERT( m_data->m_refCount != 0xFFFFFFF ); + m_data->m_refCount++; + return m_data; + } + + // Returns plain data ptr - no refcounting stuff is done. + wxPGChoicesData* GetDataPtr() const { return m_data; } + + // Changes ownership of data to you. + wxPGChoicesData* ExtractData() + { + wxPGChoicesData* data = m_data; + m_data = wxPGChoicesEmptyData; + return data; + } + + wxArrayString GetLabels() const; + + void operator= (const wxPGChoices& a) + { + AssignData(a.m_data); + } + + wxPGChoiceEntry& operator[](unsigned int i) + { + return Item(i); + } + + const wxPGChoiceEntry& operator[](unsigned int i) const + { + return Item(i); + } +}; + +// ----------------------------------------------------------------------- diff --git a/interface/wx/propgrid/propgrid.h b/interface/wx/propgrid/propgrid.h new file mode 100644 index 0000000000..15a7168958 --- /dev/null +++ b/interface/wx/propgrid/propgrid.h @@ -0,0 +1,839 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: propgrid.h +// Purpose: interface of wxPropertyGrid +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/** @section propgrid_window_styles wxPropertyGrid Window Styles + + SetWindowStyleFlag method can be used to modify some of these at run-time. + @{ +*/ +enum wxPG_WINDOW_STYLES +{ + +/** This will cause Sort() automatically after an item is added. + When inserting a lot of items in this mode, it may make sense to + use Freeze() before operations and Thaw() afterwards to increase + performance. +*/ +wxPG_AUTO_SORT = 0x00000010, + +/** Categories are not initially shown (even if added). + IMPORTANT NOTE: If you do not plan to use categories, then this + style will waste resources. + This flag can also be changed using wxPropertyGrid::EnableCategories method. +*/ +wxPG_HIDE_CATEGORIES = 0x00000020, + +/* This style combines non-categoric mode and automatic sorting. +*/ +wxPG_ALPHABETIC_MODE = (wxPG_HIDE_CATEGORIES|wxPG_AUTO_SORT), + +/** Modified values are shown in bold font. Changing this requires Refresh() + to show changes. +*/ +wxPG_BOLD_MODIFIED = 0x00000040, + +/** When wxPropertyGrid is resized, splitter moves to the center. This + behavior stops once the user manually moves the splitter. +*/ +wxPG_SPLITTER_AUTO_CENTER = 0x00000080, + +/** Display tooltips for cell text that cannot be shown completely. If + wxUSE_TOOLTIPS is 0, then this doesn't have any effect. +*/ +wxPG_TOOLTIPS = 0x00000100, + +/** Disables margin and hides all expand/collapse buttons that would appear + outside the margin (for sub-properties). Toggling this style automatically + expands all collapsed items. +*/ +wxPG_HIDE_MARGIN = 0x00000200, + +/** This style prevents user from moving the splitter. +*/ +wxPG_STATIC_SPLITTER = 0x00000400, + +/** Combination of other styles that make it impossible for user to modify + the layout. +*/ +wxPG_STATIC_LAYOUT = (wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER), + +/** Disables wxTextCtrl based editors for properties which + can be edited in another way. Equals calling wxPropertyGrid::LimitPropertyEditing + for all added properties. +*/ +wxPG_LIMITED_EDITING = 0x00000800, + +/** wxPropertyGridManager only: Show toolbar for mode and page selection. */ +wxPG_TOOLBAR = 0x00001000, + +/** wxPropertyGridManager only: Show adjustable text box showing description + or help text, if available, for currently selected property. +*/ +wxPG_DESCRIPTION = 0x00002000 + +}; + +enum wxPG_EX_WINDOW_STYLES +{ + +/** + NOTE: wxPG_EX_xxx are extra window styles and must be set using SetExtraStyle() + member function. + + Speeds up switching to wxPG_HIDE_CATEGORIES mode. Initially, if wxPG_HIDE_CATEGORIES + is not defined, the non-categorized data storage is not activated, and switching + the mode first time becomes somewhat slower. wxPG_EX_INIT_NOCAT activates the + non-categorized data storage right away. IMPORTANT NOTE: If you do plan not + switching to non-categoric mode, or if you don't plan to use categories at + all, then using this style will result in waste of resources. + +*/ +wxPG_EX_INIT_NOCAT = 0x00001000, + +/** Extended window style that sets wxPropertyGridManager toolbar to not + use flat style. +*/ +wxPG_EX_NO_FLAT_TOOLBAR = 0x00002000, + +/** Shows alphabetic/categoric mode buttons from toolbar. +*/ +wxPG_EX_MODE_BUTTONS = 0x00008000, + +/** Show property help strings as tool tips instead as text on the status bar. + You can set the help strings using SetPropertyHelpString member function. +*/ +wxPG_EX_HELP_AS_TOOLTIPS = 0x00010000, + +/** Prevent TAB from focusing to wxButtons. This behavior was default + in version 1.2.0 and earlier. + NOTE! Tabbing to button doesn't work yet. Problem seems to be that on wxMSW + atleast the button doesn't properly propagate key events (yes, I'm using + wxWANTS_CHARS). +*/ +//wxPG_EX_NO_TAB_TO_BUTTON = 0x00020000, + +/** Allows relying on native double-buffering. +*/ +wxPG_EX_NATIVE_DOUBLE_BUFFERING = 0x00080000, + +/** Set this style to let user have ability to set values of properties to + unspecified state. Same as setting wxPG_PROP_AUTO_UNSPECIFIED for + all properties. +*/ +wxPG_EX_AUTO_UNSPECIFIED_VALUES = 0x00200000, + +/** If this style is used, built-in attributes (such as wxPG_FLOAT_PRECISION and wxPG_STRING_PASSWORD) + are not stored into property's attribute storage (thus they are not readable). + + Note that this option is global, and applies to all wxPG property containers. +*/ +wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES = 0x00400000, + +/** With this style Validators on properties will work same as in wxPropertyGrid 1.2. +*/ +wxPG_EX_LEGACY_VALIDATORS = 0x00800000, + +/** Hides page selection buttons from toolbar. +*/ +wxPG_EX_HIDE_PAGE_BUTTONS = 0x01000000 + +}; + +/** Combines various styles. +*/ +#define wxPG_DEFAULT_STYLE (0) + +/** Combines various styles. +*/ +#define wxPGMAN_DEFAULT_STYLE (0) + +/** @} +*/ + +// ----------------------------------------------------------------------- + +/** wxPropertyGrid Validation Failure Behavior Flags + @{ +*/ + +enum wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS +{ + +/** Prevents user from leaving property unless value is valid. If this + behavior flag is not used, then value change is instead cancelled. +*/ +wxPG_VFB_STAY_IN_PROPERTY = 0x01, + +/** Calls wxBell() on validation failure. +*/ +wxPG_VFB_BEEP = 0x02, + +/** Cell with invalid value will be marked (with red colour). +*/ +wxPG_VFB_MARK_CELL = 0x04, + +/** Display customizable text message explaining the situation. +*/ +wxPG_VFB_SHOW_MESSAGE = 0x08, + +/** Defaults. */ +wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP, + +/** Only used internally. */ +wxPG_VFB_UNDEFINED = 0x80 + +}; + +/** @} +*/ + +typedef wxByte wxPGVFBFlags; + +/** wxPGValidationInfo + + Used to convey validation information to and from functions that + actually perform validation. +*/ +struct wxPGValidationInfo +{ + /** Value to be validated. + */ + wxVariant* m_pValue; + + /** Message displayed on validation failure. + */ + wxString m_failureMessage; + + /** Validation failure behavior. Use wxPG_VFB_XXX flags. + */ + wxPGVFBFlags m_failureBehavior; + + wxPGVFBFlags GetFailureBehavior() const { return m_failureBehavior; } + + void SetFailureBehavior(wxPGVFBFlags failureBehavior) { m_failureBehavior = failureBehavior; } + + const wxString& GetFailureMessage() const { return m_failureMessage; } + + void SetFailureMessage(const wxString& message) { m_failureMessage = message; } +}; + +// ----------------------------------------------------------------------- + +/** wxPropertyGrid Action Identifiers + These are used with wxPropertyGrid::AddActionTrigger() and wxPropertyGrid::ClearActionTriggers(). + @{ +*/ + +enum wxPG_KEYBOARD_ACTIONS +{ + wxPG_ACTION_INVALID = 0, + wxPG_ACTION_NEXT_PROPERTY, + wxPG_ACTION_PREV_PROPERTY, + wxPG_ACTION_EXPAND_PROPERTY, + wxPG_ACTION_COLLAPSE_PROPERTY, + wxPG_ACTION_CANCEL_EDIT, + wxPG_ACTION_CUT, + wxPG_ACTION_COPY, + wxPG_ACTION_PASTE, + wxPG_ACTION_MAX +}; + +/** @} +*/ + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGrid + + wxPropertyGrid is a specialized grid for editing properties + such as strings, numbers, flagsets, fonts, and colours. wxPropertySheet + used to do the very same thing, but it hasn't been updated for a while + and it is currently deprecated. + + Please note that most member functions are inherited and as such not documented on + this page. This means you will probably also want to read wxPropertyGridInterface + class reference. + + See also @ref overview_propgrid. + + @section propgrid_window_styles_ Window Styles + + See @ref propgrid_window_styles. + + @section propgrid_event_handling Event Handling + + To process input from a propertygrid control, use these event handler macros to + direct input to member functions that take a wxPropertyGridEvent argument. + + @beginEventTable{wxPropertyGridEvent} + @event{EVT_PG_SELECTED (id, func)} + Respond to wxEVT_PG_SELECTED event, generated when property value + has been changed by user. + @event{EVT_PG_CHANGING(id, func)} + Respond to wxEVT_PG_CHANGING event, generated when property value + is about to be changed by user. Use wxPropertyGridEvent::GetValue() + to take a peek at the pending value, and wxPropertyGridEvent::Veto() + to prevent change from taking place, if necessary. + @event{EVT_PG_HIGHLIGHTED(id, func)} + Respond to wxEVT_PG_HIGHLIGHTED event, which occurs when mouse + moves over a property. Event's property is NULL if hovered area does + not belong to any property. + @event{EVT_PG_RIGHT_CLICK(id, func)} + Respond to wxEVT_PG_RIGHT_CLICK event, which occurs when property is + clicked on with right mouse button. + @event{EVT_PG_DOUBLE_CLICK(id, func)} + Respond to wxEVT_PG_DOUBLE_CLICK event, which occurs when property is + double-clicked onwith left mouse button. + @event{EVT_PG_ITEM_COLLAPSED(id, func)} + Respond to wxEVT_PG_ITEM_COLLAPSED event, generated when user collapses + a property or category.. + @event{EVT_PG_ITEM_EXPANDED(id, func)} + Respond to wxEVT_PG_ITEM_EXPANDED event, generated when user expands + a property or category.. + @endEventTable + + @remarks + + - Use Freeze() and Thaw() respectively to disable and enable drawing. This + will also delay sorting etc. miscellaneous calculations to the last possible + moment. + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPropertyGrid : public wxScrolledWindow, public wxPropertyGridInterface +{ +public: + + /** Two step constructor. Call Create when this constructor is called to build up the + wxPropertyGrid + */ + wxPropertyGrid(); + + /** The default constructor. The styles to be used are styles valid for + the wxWindow and wxScrolledWindow. + @sa @link wndflags Additional Window Styles@endlink + */ + wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPG_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridNameStr ); + + /** Destructor */ + virtual ~wxPropertyGrid(); + + /** Adds given key combination to trigger given action. + @param action + Which action to trigger. See @link pgactions List of list of wxPropertyGrid actions@endlink. + */ + void AddActionTrigger( int action, int keycode, int modifiers = 0 ); + + /** This static function enables or disables automatic use of wxGetTranslation for + following strings: wxEnumProperty list labels, wxFlagsProperty sub-property + labels. + Default is false. + */ + static void AutoGetTranslation( bool enable ); + + /** Changes value of a property, as if from an editor. Use this instead of SetPropertyValue() + if you need the value to run through validation process, and also send the property + change event. + + @return + Returns true if value was successfully changed. + */ + bool ChangePropertyValue( wxPGPropArg id, wxVariant newValue ); + + /** Centers the splitter. If argument is true, automatic splitter centering is + enabled (only applicapple if style wxPG_SPLITTER_AUTO_CENTER was defined). + */ + void CenterSplitter( bool enable_auto_centering = false ); + + /** Deletes all properties. + */ + virtual void Clear(); + + /** Clears action triggers for given action. + @param action + Which action to trigger. See @link pgactions List of list of wxPropertyGrid actions@endlink. + */ + void ClearActionTriggers( int action ); + + /** Forces updating the value of property from the editor control. + Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using ProcessEvent, + meaning your event handlers will be called immediately. + + @retval + Returns true if anything was changed. + */ + virtual bool CommitChangesFromEditor( wxUint32 flags = 0 ); + + /** Two step creation. Whenever the control is created without any parameters, use Create to actually + create it. Don't access the control's public methods before this is called + @sa @link wndflags Additional Window Styles@endlink + */ + bool Create( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxPG_DEFAULT_STYLE, + const wxChar* name = wxPropertyGridNameStr ); + + /** Call when editor widget's contents is modified. For example, this is called + when changes text in wxTextCtrl (used in wxStringProperty and wxIntProperty). + + @remarks + This function should only be called by custom properties. + + @see wxPGProperty::OnEvent() + */ + void EditorsValueWasModified() { m_iFlags |= wxPG_FL_VALUE_MODIFIED; } + + /** Reverse of EditorsValueWasModified(). + + @remarks + This function should only be called by custom properties. + */ + void EditorsValueWasNotModified() + { + m_iFlags &= ~(wxPG_FL_VALUE_MODIFIED); + } + + /** Enables or disables (shows/hides) categories according to parameter enable. */ + bool EnableCategories( bool enable ); + + /** Scrolls and/or expands items to ensure that the given item is visible. + Returns true if something was actually done. + */ + bool EnsureVisible( wxPGPropArg id ); + + /** Reduces column sizes to minimum possible that contents are still visibly (naturally + some margin space will be applied as well). + + @return + Minimum size for the grid to still display everything. + + @remarks + Does not work well with wxPG_SPLITTER_AUTO_CENTER window style. + + This function only works properly if grid size prior to call was already + fairly large. + + Note that you can also get calculated column widths by calling GetState->GetColumnWidth() + immediately after this function returns. + */ + wxSize FitColumns() + { + wxSize sz = m_pState->DoFitColumns(); + return sz; + } + + /** Returns wxWindow that the properties are painted on, and which should be used + as the parent for editor controls. + */ + wxPanel* GetPanel() const + { + return m_canvas; + } + + /** Returns current category caption background colour. */ + wxColour GetCaptionBackgroundColour() const { return m_colCapBack; } + + wxFont& GetCaptionFont() { return m_captionFont; } + + const wxFont& GetCaptionFont() const { return m_captionFont; } + + /** Returns current category caption text colour. */ + wxColour GetCaptionForegroundColour() const { return m_colCapFore; } + + /** Returns current cell background colour. */ + wxColour GetCellBackgroundColour() const { return m_colPropBack; } + + /** Returns current cell text colour when disabled. */ + wxColour GetCellDisabledTextColour() const { return m_colDisPropFore; } + + /** Returns current cell text colour. */ + wxColour GetCellTextColour() const { return m_colPropFore; } + + /** Returns number of columns on current page. */ + int GetColumnCount() const + { + return m_pState->m_colWidths.size(); + } + + /** Returns colour of empty space below properties. */ + wxColour GetEmptySpaceColour() const { return m_colEmptySpace; } + + /** Returns height of highest characters of used font. */ + int GetFontHeight() const { return m_fontHeight; } + + /** Returns pointer to itself. Dummy function that enables same kind + of code to use wxPropertyGrid and wxPropertyGridManager. + */ + wxPropertyGrid* GetGrid() { return this; } + + /** Returns rectangle of custom paint image. + */ + wxRect GetImageRect( wxPGProperty* p, int item ) const; + + /** Returns size of the custom paint image in front of property. + If no argument is given, returns preferred size. + */ + wxSize GetImageSize( wxPGProperty* p = NULL, int item = -1 ) const; + + //@{ + /** Returns last item which could be iterated using given flags. + @param flags + See @ref propgrid_iterator_flags. + */ + wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) + { + return m_pState->GetLastItem(flags); + } + + const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const + { + return m_pState->GetLastItem(flags); + } + //@} + + /** Returns colour of lines between cells. */ + wxColour GetLineColour() const { return m_colLine; } + + /** Returns background colour of margin. */ + wxColour GetMarginColour() const { return m_colMargin; } + + /** Returns cell background colour of a property. */ + wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const; + + /** Returns cell background colour of a property. */ + wxColour GetPropertyTextColour( wxPGPropArg id ) const; + + /** Returns "root property". It does not have name, etc. and it is not + visible. It is only useful for accessing its children. + */ + wxPGProperty* GetRoot() const { return m_pState->m_properties; } + + /** Returns height of a single grid row (in pixels). */ + int GetRowHeight() const { return m_lineHeight; } + + /** Returns currently selected property. */ + wxPGProperty* GetSelectedProperty () const { return GetSelection(); } + + /** Returns currently selected property. */ + wxPGProperty* GetSelection() const + { + return m_selected; + } + + /** Returns current selection background colour. */ + wxColour GetSelectionBackgroundColour() const { return m_colSelBack; } + + /** Returns current selection text colour. */ + wxColour GetSelectionForegroundColour() const { return m_colSelFore; } + + /** Returns current splitter x position. */ + int GetSplitterPosition() const { return m_pState->DoGetSplitterPosition(0); } + + /** Returns wxTextCtrl active in currently selected property, if any. Takes + into account wxOwnerDrawnComboBox. + */ + wxTextCtrl* GetEditorTextCtrl() const; + + wxPGValidationInfo& GetValidationInfo() + { + return m_validationInfo; + } + + /** Returns current vertical spacing. */ + int GetVerticalSpacing() const { return (int)m_vspacing; } + + /** Returns true if editor's value was marked modified. + */ + bool IsEditorsValueModified() const { return ( m_iFlags & wxPG_FL_VALUE_MODIFIED ) ? true : false; } + + /** Returns information about arbitrary position in the grid. + */ + wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; + + /** Returns true if any property has been modified by the user. */ + bool IsAnyModified() const { return (m_pState->m_anyModified>0); } + + /** Returns true if updating is frozen (ie. Freeze() called but not yet Thaw() ). */ + bool IsFrozen() const { return (m_frozen>0)?true:false; } + + /** Redraws given property. + */ + virtual void RefreshProperty( wxPGProperty* p ); + + /** Registers a new editor class. + @retval + Pointer to the editor class instance that should be used. + */ + static wxPGEditor* RegisterEditorClass( wxPGEditor* editor, const wxString& name, + bool noDefCheck = false ); + + /** Resets all colours to the original system values. + */ + void ResetColours(); + + /** Selects a property. Editor widget is automatically created, but + not focused unless focus is true. This will generate wxEVT_PG_SELECT event. + @param id + Property to select. + @retval + True if selection finished successfully. Usually only fails if current + value in editor is not valid. + @sa wxPropertyGrid::Unselect + */ + bool SelectProperty( wxPGPropArg id, bool focus = false ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return DoSelectProperty(p,focus?wxPG_SEL_FOCUS:0); + } + + /** Changes keyboard shortcut to push the editor button. + @remarks + You can set default with keycode 0. Good value for the platform is guessed, + but don't expect it to be very accurate. + */ + void SetButtonShortcut( int keycode, bool ctrlDown = false, bool altDown = false ); + + /** Sets category caption background colour. */ + void SetCaptionBackgroundColour(const wxColour& col); + + /** Sets category caption text colour. */ + void SetCaptionTextColour(const wxColour& col); + + /** Sets default cell background colour - applies to property cells. + Note that appearance of editor widgets may not be affected. + */ + void SetCellBackgroundColour(const wxColour& col); + + /** Sets cell text colour for disabled properties. + */ + void SetCellDisabledTextColour(const wxColour& col); + + /** Sets default cell text colour - applies to property name and value text. + Note that appearance of editor widgets may not be affected. + */ + void SetCellTextColour(const wxColour& col); + + /** Set number of columns (2 or more). + */ + void SetColumnCount( int colCount ) + { + m_pState->SetColumnCount(colCount); + Refresh(); + } + + /** Sets the 'current' category - Append will add non-category properties under it. + */ + void SetCurrentCategory( wxPGPropArg id ); + + /** Sets colour of empty space below properties. */ + void SetEmptySpaceColour(const wxColour& col); + + /** Sets colour of lines between cells. */ + void SetLineColour(const wxColour& col); + + /** Sets background colour of margin. */ + void SetMarginColour(const wxColour& col); + + /** Sets property attribute for all applicapple properties. + Be sure to use this method only after all properties have been + added to the grid. + */ + void SetPropertyAttributeAll( const wxString& attrName, wxVariant value ); + + /** Sets background colour of property and all its children. Colours of + captions are not affected. Background brush cache is optimized for often + set colours to be set last. + */ + void SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& col ); + + /** Resets text and background colours of given property. + */ + void SetPropertyColoursToDefault( wxPGPropArg id ); + + /** Sets text colour of property and all its children. + */ + void SetPropertyTextColour( wxPGPropArg id, const wxColour& col, bool recursively = true ); + + /** Sets selection background colour - applies to selected property name background. */ + void SetSelectionBackgroundColour(const wxColour& col); + + /** Sets selection foreground colour - applies to selected property name text. */ + void SetSelectionTextColour(const wxColour& col); + + /** Sets x coordinate of the splitter. + @remarks + Splitter position cannot exceed grid size, and therefore setting it during + form creation may fail as initial grid size is often smaller than desired + splitter position, especially when sizers are being used. + */ + void SetSplitterPosition( int newxpos, int col = 0 ) + { + DoSetSplitterPosition_(newxpos, true, col); + m_iFlags |= wxPG_FL_SPLITTER_PRE_SET; + } + + /** Set virtual width for this particular page. Width -1 indicates that the + virtual width should be disabled. */ + void SetVirtualWidth( int width ); + + /** Sets name of a property. + @param id + Name or pointer of property which name to change. + @param newname + New name. + */ + void SetPropertyName( wxPGPropArg id, const wxString& newname ) + { + wxPG_PROP_ARG_CALL_PROLOG() + DoSetPropertyName( p, newname ); + } + + /** Moves splitter as left as possible, while still allowing all + labels to be shown in full. + @param subProps + If false, will still allow sub-properties (ie. properties which + parent is not root or category) to be cropped. + */ + void SetSplitterLeft( bool subProps = false ) + { + m_pState->SetSplitterLeft(subProps); + } + + /** Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font + height. Value of 2 should be default on most platforms. + @remarks + On wxMSW, wxComboBox, when used as property editor widget, will spill + out with anything less than 3. + */ + void SetVerticalSpacing( int vspacing ) + { + m_vspacing = (unsigned char)vspacing; + CalculateFontAndBitmapStuff( vspacing ); + if ( !m_pState->m_itemsAdded ) Refresh(); + } + + /** Shows an brief error message that is related to a property. */ + void ShowPropertyError( wxPGPropArg id, const wxString& msg ) + { + wxPG_PROP_ARG_CALL_PROLOG() + DoShowPropertyError(p, msg); + } + + /** Sorts all items at all levels (except sub-properties). */ + void Sort(); + + /** Sorts children of a category. + */ + void SortChildren( wxPGPropArg id ); +}; + + +/** @class wxPropertyGridEvent + + A propertygrid event holds information about events associated with + wxPropertyGrid objects. + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPropertyGridEvent : public wxCommandEvent +{ +public: + + /** Constructor. */ + wxPropertyGridEvent(wxEventType commandType=0, int id=0); + + /** Copy constructor. */ + wxPropertyGridEvent(const wxPropertyGridEvent& event); + + /** Destructor. */ + ~wxPropertyGridEvent(); + + /** Copyer. */ + virtual wxEvent* Clone() const; + + wxPGProperty* GetMainParent() const + { + wxASSERT(m_property); + return m_property->GetMainParent(); + } + + /** Returns id of associated property. */ + wxPGProperty* GetProperty() const + { + return m_property; + } + + wxPGValidationInfo& GetValidationInfo() + { + wxASSERT(m_validationInfo); + return *m_validationInfo; + } + + /** Returns true if event has associated property. */ + bool HasProperty() const { return ( m_property != (wxPGProperty*) NULL ); } + + /** Returns true if you can veto the action that the event is signaling. + */ + bool CanVeto() const { return m_canVeto; } + + /** Call this from your event handler to veto action that the event is signaling. + You can only veto a shutdown if wxPropertyGridEvent::CanVeto returns true. + @remarks + Currently only wxEVT_PG_CHANGING supports vetoing. + */ + void Veto( bool veto = true ) { m_wasVetoed = veto; } + + /** Returns value that is about to be set for wxEVT_PG_CHANGING. + */ + const wxVariant& GetValue() const + { + wxASSERT_MSG( m_validationInfo, + wxT("Only call GetValue from a handler of event type that supports it") ); + return *m_validationInfo->m_pValue; + } + + /** Set override validation failure behavior. Only effective if Veto was also called, + and only allowed if event type is wxEVT_PG_CHANGING. + */ + void SetValidationFailureBehavior( int flags ) + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + m_validationInfo->m_failureBehavior = (wxPGVFBFlags) flags; + } + + /** Sets custom failure message for this time only. Only applies if + wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. + */ + void SetValidationFailureMessage( const wxString& message ) + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + m_validationInfo->m_failureMessage = message; + } + + wxPGVFBFlags GetValidationFailureBehavior() const + { + wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); + return m_validationInfo->m_failureBehavior; + } + + void SetCanVeto( bool canVeto ) { m_canVeto = canVeto; } + bool WasVetoed() const { return m_wasVetoed; } + + /** Changes the associated property. */ + void SetProperty( wxPGProperty* p ) { m_property = p; } + + void SetPropertyGrid( wxPropertyGrid* pg ) { m_pg = pg; } +}; diff --git a/interface/wx/propgrid/propgridiface.h b/interface/wx/propgrid/propgridiface.h new file mode 100644 index 0000000000..3f433ad1f9 --- /dev/null +++ b/interface/wx/propgrid/propgridiface.h @@ -0,0 +1,992 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: property.h +// Purpose: interface of wxPGProperty +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- + +/** @class wxPropertyGridInterface + + Most of the shared property manipulation interface shared by wxPropertyGrid, + wxPropertyGridPage, and wxPropertyGridManager is defined in this class. + + @remarks + - In separate wxPropertyGrid component this class was known as wxPropertyContainerMethods. + + @library{wxpropgrid} + @category{propgrid} +*/ +class WXDLLIMPEXP_PROPGRID wxPropertyGridInterface +{ +public: + + /** Destructor */ + virtual ~wxPropertyGridInterface() { } + + /** Adds choice to a property that can accept one. + @remarks + - If you need to make sure that you modify only the set of choices of + a single property (and not also choices of other properties with initially + identical set), call wxPropertyGrid::SetPropertyChoicesPrivate. + - This usually only works for wxEnumProperty and derivatives (wxFlagsProperty + can get accept new items but its items may not get updated). + */ + void AddPropertyChoice( wxPGPropArg id, const wxString& label, int value = wxPG_INVALID_VALUE ); + + /** Appends property to the list. wxPropertyGrid assumes ownership of the object. + Becomes child of most recently added category. + @remarks + - wxPropertyGrid takes the ownership of the property pointer. + - If appending a category with name identical to a category already in the + wxPropertyGrid, then newly created category is deleted, and most recently + added category (under which properties are appended) is set to the one with + same name. This allows easier adding of items to same categories in multiple + passes. + - Does not automatically redraw the control, so you may need to call Refresh + when calling this function after control has been shown for the first time. + */ + wxPGProperty* Append( wxPGProperty* property ); + + wxPGProperty* AppendIn( wxPGPropArg id, wxPGProperty* newproperty ); + + /** Inorder to add new items into a property with fixed children (for instance, wxFlagsProperty), + you need to call this method. After populating has been finished, you need to call EndAddChildren. + */ + void BeginAddChildren( wxPGPropArg id ); + + /** Deletes all properties. + */ + virtual void Clear() = 0; + + /** Deselect current selection, if any. Returns true if success + (ie. validator did not intercept). */ + bool ClearSelection(); + + /** Resets modified status of all properties. + */ + void ClearModifiedStatus() + { + SetPropertyModifiedStatus(m_pState->m_properties, false); + m_pState->m_anyModified = false; + } + + /** Collapses given category or property with children. + Returns true if actually collapses. + */ + bool Collapse( wxPGPropArg id ); + + /** Collapses all items that can be collapsed. + + @retval + Return false if failed (may fail if editor value cannot be validated). + */ + bool CollapseAll() { return ExpandAll(false); } + + /** Changes value of a property, as if from an editor. Use this instead of SetPropertyValue() + if you need the value to run through validation process, and also send the property + change event. + + @retval + Returns true if value was successfully changed. + */ + bool ChangePropertyValue( wxPGPropArg id, wxVariant newValue ); + + /** Resets value of a property to its default. */ + bool ClearPropertyValue( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + p->SetValue(p->GetDefaultValue()); + RefreshProperty(p); + return true; + } + + /** Deletes a property by id. If category is deleted, all children are automatically deleted as well. */ + void DeleteProperty( wxPGPropArg id ); + + /** Deletes choice from a property. + + If selected item is deleted, then the value is set to unspecified. + + See AddPropertyChoice for more details. + */ + void DeletePropertyChoice( wxPGPropArg id, int index ); + + /** Disables property. */ + bool DisableProperty( wxPGPropArg id ) { return EnableProperty(id,false); } + + /** Returns true if all property grid data changes have been committed. Usually + only returns false if value in active editor has been invalidated by a + wxValidator. + */ + bool EditorValidate(); + + /** Enables or disables property, depending on whether enable is true or false. */ + bool EnableProperty( wxPGPropArg id, bool enable = true ); + + /** Called after population of property with fixed children has finished. + */ + void EndAddChildren( wxPGPropArg id ); + + /** Expands given category or property with children. + Returns true if actually expands. + */ + bool Expand( wxPGPropArg id ); + + /** Expands all items that can be expanded. + */ + bool ExpandAll( bool expand = true ); + + /** Returns list of expanded properties. + */ + wxArrayPGProperty GetExpandedProperties() const + { + wxArrayPGProperty array; + GetPropertiesWithFlag(&array, wxPG_PROP_COLLAPSED, true, + wxPG_ITERATE_ALL_PARENTS_RECURSIVELY|wxPG_ITERATE_HIDDEN); + return array; + } + + /** Returns id of first child of given property. + @remarks + Does not return sub-properties! + */ + wxPGProperty* GetFirstChild( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + + if ( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE) ) + return wxNullProperty; + + return p->Item(0); + } + + //@{ + /** Returns iterator class instance. + @param flags + See @ref propgrid_iterator_flags. Value wxPG_ITERATE_DEFAULT causes + iteration over everything except private child properties. + @param firstProp + Property to start iteration from. If NULL, then first child of root is used. + @param startPos + Either wxTOP or wxBOTTOM. wxTOP will indicate that iterations start from + the first property from the top, and wxBOTTOM means that the iteration will + instead begin from bottommost valid item. + */ + wxPropertyGridIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, wxPGProperty* firstProp = NULL ) + { + return wxPropertyGridIterator( m_pState, flags, firstProp ); + } + + wxPropertyGridConstIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT, wxPGProperty* firstProp = NULL ) const + { + return wxPropertyGridConstIterator( m_pState, flags, firstProp ); + } + + wxPropertyGridIterator GetIterator( int flags, int startPos ) + { + return wxPropertyGridIterator( m_pState, flags, startPos ); + } + + wxPropertyGridConstIterator GetIterator( int flags, int startPos ) const + { + return wxPropertyGridConstIterator( m_pState, flags, startPos ); + } + //@} + + /** Returns id of first item, whether it is a category or property. + @param flags + @link iteratorflags List of iterator flags@endlink + */ + wxPGProperty* GetFirst( int flags = wxPG_ITERATE_ALL ) + { + wxPropertyGridIterator it( m_pState, flags, wxNullProperty, 1 ); + return *it; + } + + const wxPGProperty* GetFirst( int flags = wxPG_ITERATE_ALL ) const + { + return ((wxPropertyGridInterface*)this)->GetFirst(flags); + } + + /** Returns id of property with given name (case-sensitive). If there is no + property with such name, returned property id is invalid ( i.e. it will return + false with IsOk method). + @remarks + - Sub-properties (i.e. properties which have parent that is not category or + root) can not be accessed globally by their name. Instead, use + "<property>.<subproperty>" in place of "<subproperty>". + */ + wxPGProperty* GetProperty( const wxString& name ) const + { + return GetPropertyByName(name); + } + + /** Returns map-like storage of property's attributes. + @remarks + Note that if extra style wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES is set, + then builtin-attributes are not included in the storage. + */ + const wxPGAttributeStorage& GetPropertyAttributes( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(*((const wxPGAttributeStorage*)NULL)); + return p->GetAttributes(); + } + + /** Adds to 'targetArr' pointers to properties that have given + flags 'flags' set. However, if 'inverse' is set to true, then + only properties without given flags are stored. + @param flags + Property flags to use. + @param iterFlags + Iterator flags to use. Default is everything expect private children. + */ + void GetPropertiesWithFlag( wxArrayPGProperty* targetArr, + wxPGProperty::FlagType flags, + bool inverse = false, + int iterFlags = (wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_HIDDEN|wxPG_ITERATE_CATEGORIES) ) const; + + /** Returns value of given attribute. If none found, returns NULL-variant. + */ + wxVariant GetPropertyAttribute( wxPGPropArg id, const wxString& attrName ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullVariant) + return p->GetAttribute(attrName); + } + + /** Returns pointer of property's nearest parent category. If no category + found, returns NULL. + */ + wxPropertyCategory* GetPropertyCategory( wxPGPropArg id ) const + { + wxPG_PROP_ID_CONST_CALL_PROLOG_RETVAL(NULL) + return m_pState->GetPropertyCategory(p); + } + + /** Returns client data (void*) of a property. */ + void* GetPropertyClientData( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetClientData(); + } + + /** Returns first property which label matches given string. NULL if none found. + Note that this operation is extremely slow when compared to GetPropertyByName(). + */ + wxPGProperty* GetPropertyByLabel( const wxString& label ) const; + + /** Returns property with given name. NULL if none found. + */ + wxPGProperty* GetPropertyByName( const wxString& name ) const; + + /** Returns child property 'subname' of property 'name'. Same as + calling GetPropertyByName("name.subname"), albeit slightly faster. + */ + wxPGProperty* GetPropertyByName( const wxString& name, const wxString& subname ) const; + + /** Returns writable reference to property's list of choices (and relevant + values). If property does not have any choices, will return reference + to an invalid set of choices that will return false on IsOk call. + */ + wxPGChoices& GetPropertyChoices( wxPGPropArg id ); + + /** Returns property's editor. */ + const wxPGEditor* GetPropertyEditor( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetEditorClass(); + } + + /** Returns help string associated with a property. */ + wxString GetPropertyHelpString( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetHelpString(); + } + + /** Returns property's custom value image (NULL of none). */ + wxBitmap* GetPropertyImage( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetValueImage(); + } + + /** Returns property's position under its parent. */ + unsigned int GetPropertyIndex( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(INT_MAX) + return p->GetIndexInParent(); + } + + /** Returns label of a property. */ + const wxString& GetPropertyLabel( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetLabel(); + } + + /** Returns name of a property, by which it is globally accessible. */ + wxString GetPropertyName( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetName(); + } + + /** Returns parent item of a property. */ + wxPGProperty* GetPropertyParent( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + return p->GetParent(); + } + + /** Returns validator of a property as a reference, which you + can pass to any number of SetPropertyValidator. + */ + wxValidator* GetPropertyValidator( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(NULL) + return p->GetValidator(); + } + + /** Returns value as wxVariant. To get wxObject pointer from it, + you will have to use WX_PG_VARIANT_TO_WXOBJECT(VARIANT,CLASSNAME) macro. + + If property value is unspecified, Null variant is returned. + */ + wxVariant GetPropertyValue( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxVariant()) + return p->GetValue(); + } + + wxString GetPropertyValueAsString( wxPGPropArg id ) const; + long GetPropertyValueAsLong( wxPGPropArg id ) const; + unsigned long GetPropertyValueAsULong( wxPGPropArg id ) const + { + return (unsigned long) GetPropertyValueAsLong(id); + } + int GetPropertyValueAsInt( wxPGPropArg id ) const { return (int)GetPropertyValueAsLong(id); } + bool GetPropertyValueAsBool( wxPGPropArg id ) const; + double GetPropertyValueAsDouble( wxPGPropArg id ) const; + wxObject* GetPropertyValueAsWxObjectPtr( wxPGPropArg id ) const; + void* GetPropertyValueAsVoidPtr( wxPGPropArg id ) const; + + wxArrayString GetPropertyValueAsArrayString( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("arrstring"), wxArrayString()) + return p->m_value.GetArrayString(); + } + + wxPoint GetPropertyValueAsPoint( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxPoint"), wxPoint()) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxPoint); + } + + wxSize GetPropertyValueAsSize( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxSize"), wxSize()) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxSize); + } + + wxLongLong_t GetPropertyValueAsLongLong( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK(wxT("wxLongLong"), (long) GetPropertyValueAsLong(id)) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxLongLong).GetValue(); + } + + wxULongLong_t GetPropertyValueAsULongLong( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK(wxT("wxULongLong"), (unsigned long) GetPropertyValueAsULong(id)) + return WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxULongLong).GetValue(); + } + + wxArrayInt GetPropertyValueAsArrayInt( wxPGPropArg id ) const + { + wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL(wxT("wxArrayInt"), wxArrayInt()) + wxArrayInt arr = WX_PG_VARIANT_GETVALUEREF(p->GetValue(), wxArrayInt); + return arr; + } + + wxDateTime GetPropertyValueAsDateTime( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxDateTime()) + + if ( wxStrcmp(p->m_value.GetType(), wxT("datetime")) != 0 ) + { + wxPGGetFailed(p, wxT("datetime")); + return wxDateTime(); + } + return p->m_value.GetDateTime(); + } + + /** Returns a wxVariant list containing wxVariant versions of all + property values. Order is not guaranteed. + @param flags + Use wxPG_KEEP_STRUCTURE to retain category structure; each sub + category will be its own wxVariantList of wxVariant. + Use wxPG_INC_ATTRIBUTES to include property attributes as well. + Each attribute will be stored as list variant named "@@<propname>@@attr." + @remarks + */ + wxVariant GetPropertyValues( const wxString& listname = wxEmptyString, + wxPGProperty* baseparent = NULL, long flags = 0 ) const + { + return m_pState->DoGetPropertyValues(listname, baseparent, flags); + } + + wxString GetPropertyValueType( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(m_emptyString) + return p->GetValueType(); + } + + /** Returns currently selected property. */ + wxPGProperty* GetSelection() const + { + return m_pState->GetSelection(); + } + + /** Similar to GetIterator(), but instead returns wxPGVIterator instance, + which can be useful for forward-iterating through arbitrary property + containers. + + @param flags + See @ref propgrid_iterator_flags. + */ + virtual wxPGVIterator GetVIterator( int flags ) const; + + /** Hides or reveals a property. + @param hide + If true, hides property, otherwise reveals it. + @param flags + By default changes are applied recursively. Set this paramter wxPG_DONT_RECURSE to prevent this. + */ + bool HideProperty( wxPGPropArg id, bool hide = true, int flags = wxPG_RECURSE ); + + /** Initializes *all* property types. Causes references to most object + files in the library, so calling this may cause significant increase + in executable size when linking with static library. + */ + static void InitAllTypeHandlers(); + + //@{ + /** Inserts property to the property container. + + @param priorThis + New property is inserted just prior to this. Available only + in the first variant. There are two versions of this function + to allow this parameter to be either an id or name to + a property. + + @param newproperty + Pointer to the inserted property. wxPropertyGrid will take + ownership of this object. + + @param parent + New property is inserted under this category. Available only + in the second variant. There are two versions of this function + to allow this parameter to be either an id or name to + a property. + + @param index + Index under category. Available only in the second variant. + If index is < 0, property is appended in category. + + @return + Returns id for the property, + + @remarks + + - wxPropertyGrid takes the ownership of the property pointer. + + - While Append may be faster way to add items, make note that when + both types of data storage (categoric and + non-categoric) are active, Insert becomes even more slow. This is + especially true if current mode is non-categoric. + + Example of use: + + @code + + // append category + wxPGProperty* my_cat_id = propertygrid->Append( new wxPropertyCategory("My Category") ); + + ... + + // insert into category - using second variant + wxPGProperty* my_item_id_1 = propertygrid->Insert( my_cat_id, 0, new wxStringProperty("My String 1") ); + + // insert before to first item - using first variant + wxPGProperty* my_item_id_2 = propertygrid->Insert( my_item_id, new wxStringProperty("My String 2") ); + + @endcode + + */ + wxPGProperty* Insert( wxPGPropArg priorThis, wxPGProperty* newproperty ); + wxPGProperty* Insert( wxPGPropArg parent, int index, wxPGProperty* newproperty ); + //@} + + /** Returns true if property is a category. */ + bool IsPropertyCategory( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->IsCategory(); + } + + /** Inserts choice to a property that can accept one. + + See AddPropertyChoice for more details. + */ + void InsertPropertyChoice( wxPGPropArg id, const wxString& label, int index, int value = wxPG_INVALID_VALUE ); + + /** Returns true if property is enabled. */ + bool IsPropertyEnabled( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return (!(p->GetFlags() & wxPG_PROP_DISABLED))?true:false; + } + + /** Returns true if given property is expanded. Naturally, always returns false + for properties that cannot be expanded. + */ + bool IsPropertyExpanded( wxPGPropArg id ) const; + + /** Returns true if property has been modified after value set or modify flag + clear by software. + */ + bool IsPropertyModified( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return ( (p->GetFlags() & wxPG_PROP_MODIFIED) ? true : false ); + } + + /** Returns true if property is shown (ie. hideproperty with true not called for it). */ + bool IsPropertyShown( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return (!(p->GetFlags() & wxPG_PROP_HIDDEN))?true:false; + } + + /** Returns true if property value is set to unspecified. + */ + bool IsPropertyValueUnspecified( wxPGPropArg id ) const + { + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->IsValueUnspecified(); + } + + /** Disables (limit = true) or enables (limit = false) wxTextCtrl editor of a property, + if it is not the sole mean to edit the value. + */ + void LimitPropertyEditing( wxPGPropArg id, bool limit = true ); + + /** If state is shown in it's grid, refresh it now. + */ + virtual void RefreshGrid(); + + /** Initializes additional property editors (SpinCtrl etc.). Causes references + to most object files in the library, so calling this may cause significant increase + in executable size when linking with static library. + */ + static void RegisterAdditionalEditors(); + + /** Replaces property with id with newly created property. For example, + this code replaces existing property named "Flags" with one that + will have different set of items: + @code + pg->ReplaceProperty("Flags", + wxFlagsProperty("Flags", wxPG_LABEL, newItems)) + @endcode + For more info, see wxPropertyGrid::Insert. + */ + wxPGProperty* ReplaceProperty( wxPGPropArg id, wxPGProperty* property ); + + + /** @anchor propgridinterface_editablestate_flags + + Flags for wxPropertyGridInterface::SaveEditableState() and + wxPropertyGridInterface::RestoreEditableState(). + */ + enum EditableStateFlags + { + /** Include selected property. */ + SelectionState = 0x01, + /** Include expanded/collapsed property information. */ + ExpandedState = 0x02, + /** Include scrolled position. */ + ScrollPosState = 0x04, + /** Include selected page information. Only applies to wxPropertyGridManager. */ + PageState = 0x08, + /** Include splitter position. Stored for each page. */ + SplitterPosState = 0x10, + + /** Include all supported user editable state information. This is usually the default value. */ + AllStates = SelectionState | ExpandedState | ScrollPosState | PageState | SplitterPosState + }; + + /** Restores user-editable state. See also wxPropertyGridInterface::SaveEditableState(). + + @param src + String generated by SaveEditableState. + + @param restoreStates + Which parts to restore from source string. See @ref propgridinterface_editablestate_flags + "list of editable state flags". + + @return + False if there was problem reading the string. + + @remarks + If some parts of state (such as scrolled or splitter position) fail to restore correctly, + please make sure that you call this function after wxPropertyGrid size has been set + (this may sometimes be tricky when sizers are used). + */ + bool RestoreEditableState( const wxString& src, + int restoreStates = AllStates ); + + /** Used to acquire user-editable state (selected property, expanded properties, scrolled position, + splitter positions). + + @param includedStates + Which parts of state to include. See @ref propgridinterface_editablestate_flags + "list of editable state flags". + */ + wxString SaveEditableState( int includedStates = AllStates ) const; + + /** Lets user to set the strings listed in the choice dropdown of a wxBoolProperty. + Defaults are "True" and "False", so changing them to, say, "Yes" and "No" may + be useful in some less technical applications. + */ + static void SetBoolChoices( const wxString& trueChoice, const wxString& falseChoice ); + + /** Sets or clears flag(s) of all properties in given array. + @param flags + Property flags to set or clear. + @param inverse + Set to true if you want to clear flag instead of setting them. + */ + void SetPropertiesFlag( const wxArrayPGProperty& srcArr, wxPGProperty::FlagType flags, + bool inverse = false ); + + /** Sets an attribute for this property. + @param name + Text identifier of attribute. See @ref propgrid_property_attributes. + @param value + Value of attribute. + @param argFlags + Optional. Use wxPG_RECURSE to set the attribute to child properties recursively. + */ + void SetPropertyAttribute( wxPGPropArg id, const wxString& attrName, wxVariant value, long argFlags = 0 ) + { + DoSetPropertyAttribute(id,attrName,value,argFlags); + } + + /** Sets attributes from a wxPGAttributeStorage. + */ + void SetPropertyAttributes( wxPGPropArg id, const wxPGAttributeStorage& attributes ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetAttributes(attributes); + } + + /** Sets text, bitmap, and colours for given column's cell. + + @remarks + - You can set label cell by setting column to 0. + - You can use wxPG_LABEL as text to use default text for column. + */ + void SetPropertyCell( wxPGPropArg id, + int column, + const wxString& text = wxEmptyString, + const wxBitmap& bitmap = wxNullBitmap, + const wxColour& fgCol = wxNullColour, + const wxColour& bgCol = wxNullColour ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetCell( column, new wxPGCell(text, bitmap, fgCol, bgCol) ); + } + + /** Set choices of a property to specified set of labels and values. + + @remarks + This operation clears the property value. + */ + void SetPropertyChoices( wxPGPropArg id, wxPGChoices& choices) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetChoices(choices); + } + + + /** If property's set of choices is shared, then calling this method converts + it to private. + */ + void SetPropertyChoicesExclusive( wxPGPropArg id ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetChoicesExclusive(); + } + + /** Sets client data (void*) of a property. + @remarks + This untyped client data has to be deleted manually. + */ + void SetPropertyClientData( wxPGPropArg id, void* clientData ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetClientData(clientData); + } + + /** Sets editor for a property. + + @param editor + For builtin editors, use wxPGEditor_X, where X is builtin editor's + name (TextCtrl, Choice, etc. see wxPGEditor documentation for full list). + + For custom editors, use pointer you received from wxPropertyGrid::RegisterEditorClass(). + */ + void SetPropertyEditor( wxPGPropArg id, const wxPGEditor* editor ) + { + wxPG_PROP_ARG_CALL_PROLOG() + wxCHECK_RET( editor, wxT("unknown/NULL editor") ); + p->SetEditor(editor); + RefreshProperty(p); + } + + /** Sets editor control of a property. As editor argument, use + editor name string, such as "TextCtrl" or "Choice". + */ + void SetPropertyEditor( wxPGPropArg id, const wxString& editorName ) + { + SetPropertyEditor(id,GetEditorByName(editorName)); + } + + /** Sets label of a property. + @remarks + This is the only way to set property's name. There is not + wxPGProperty::SetLabel() method. + */ + void SetPropertyLabel( wxPGPropArg id, const wxString& newproplabel ); + + /** Set modified status of a property and all its children. + */ + void SetPropertyModifiedStatus( wxPGPropArg id, bool modified ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetModifiedStatus(modified); + } + + /** Sets property (and, recursively, its children) to have read-only value. In other words, + user cannot change the value in the editor, but they can still copy it. + @remarks + This is mainly for use with textctrl editor. Not all other editors fully + support it. + @param flags + By default changes are applied recursively. Set this paramter wxPG_DONT_RECURSE to prevent this. + */ + void SetPropertyReadOnly( wxPGPropArg id, bool set = true, int flags = wxPG_RECURSE ) + { + wxPG_PROP_ARG_CALL_PROLOG() + if ( flags & wxPG_RECURSE ) + p->SetFlagRecursively(wxPG_PROP_READONLY, set); + else + p->SetFlag(wxPG_PROP_READONLY); + } + + /** Sets property's value to unspecified. If it has children (it may be category), + then the same thing is done to them. + */ + void SetPropertyValueUnspecified( wxPGPropArg id ); + + /** Sets various property values from a list of wxVariants. If property with + name is missing from the grid, new property is created under given default + category (or root if omitted). + */ + void SetPropertyValues( const wxVariantList& list, wxPGPropArg defaultCategory = wxNullProperty ) + { + wxPGProperty *p; + if ( defaultCategory.HasName() ) p = defaultCategory.GetPtr(this); + else p = defaultCategory.GetPtr0(); + m_pState->DoSetPropertyValues(list, p); + } + + void SetPropertyValues( const wxVariant& list, wxPGPropArg defaultCategory = wxNullProperty ) + { + SetPropertyValues(list.GetList(),defaultCategory); + } + + /** Associates the help string with property. + @remarks + By default, text is shown either in the manager's "description" + text box or in the status bar. If extra window style wxPG_EX_HELP_AS_TOOLTIPS + is used, then the text will appear as a tooltip. + */ + void SetPropertyHelpString( wxPGPropArg id, const wxString& helpString ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetHelpString(helpString); + } + + /** Set wxBitmap in front of the value. + @remarks + - Bitmap will be scaled to a size returned by wxPropertyGrid::GetImageSize(); + */ + void SetPropertyImage( wxPGPropArg id, wxBitmap& bmp ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetValueImage(bmp); + RefreshProperty(p); + } + + /** Sets max length of property's text. + */ + bool SetPropertyMaxLength( wxPGPropArg id, int maxLen ); + + /** Sets validator of a property. + */ + void SetPropertyValidator( wxPGPropArg id, const wxValidator& validator ) + { + wxPG_PROP_ARG_CALL_PROLOG() + p->SetValidator(validator); + } + + /** Sets value (long integer) of a property. + */ + void SetPropertyValue( wxPGPropArg id, long value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + /** Sets value (integer) of a property. + */ + void SetPropertyValue( wxPGPropArg id, int value ) + { + wxVariant v((long)value); + SetPropVal( id, v ); + } + /** Sets value (floating point) of a property. + */ + void SetPropertyValue( wxPGPropArg id, double value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + /** Sets value (bool) of a property. + */ + void SetPropertyValue( wxPGPropArg id, bool value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + void SetPropertyValue( wxPGPropArg id, const wxChar* value ) + { + SetPropertyValueString( id, wxString(value) ); + } + void SetPropertyValue( wxPGPropArg id, const wxString& value ) + { + SetPropertyValueString( id, value ); + } + + /** Sets value (wxArrayString) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxArrayString& value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + void SetPropertyValue( wxPGPropArg id, const wxDateTime& value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + /** Sets value (wxObject*) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxObject* value ) + { + wxVariant v(value); + SetPropVal( id, v ); + } + + void SetPropertyValue( wxPGPropArg id, wxObject& value ) + { + wxVariant v(&value); + SetPropVal( id, v ); + } + + /** Sets value (wxPoint&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxPoint& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } + /** Sets value (wxSize&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxSize& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } + /** Sets value (wxLongLong&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxLongLong_t value ) + { + wxVariant v = WXVARIANT(wxLongLong(value)); + SetPropVal( id, v ); + } + /** Sets value (wxULongLong&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, wxULongLong_t value ) + { + wxVariant v = WXVARIANT(wxULongLong(value)); + SetPropVal( id, v ); + } + /** Sets value (wxArrayInt&) of a property. + */ + void SetPropertyValue( wxPGPropArg id, const wxArrayInt& value ) + { + wxVariant v = WXVARIANT(value); + SetPropVal( id, v ); + } + + /** Sets value (wxString) of a property. + + @remarks + This method uses wxPGProperty::SetValueFromString, which all properties + should implement. This means that there should not be a type error, + and instead the string is converted to property's actual value type. + */ + void SetPropertyValueString( wxPGPropArg id, const wxString& value ); + + /** Sets value (wxVariant&) of a property. + + @remarks + Use wxPropertyGrid::ChangePropertyValue() instead if you need to run through + validation process and send property change event. + */ + void SetPropertyValue( wxPGPropArg id, wxVariant value ) + { + SetPropVal( id, value ); + } + + /** Adjusts how wxPropertyGrid behaves when invalid value is entered + in a property. + @param vfbFlags + See @link vfbflags list of valid flags values@endlink + */ + void SetValidationFailureBehavior( int vfbFlags ); + + // GetPropertyByName With nice assertion error message. + wxPGProperty* GetPropertyByNameA( const wxString& name ) const; + + static wxPGEditor* GetEditorByName( const wxString& editorName ); + + virtual void RefreshProperty( wxPGProperty* p ) = 0; +}; + diff --git a/interface/wx/propgrid/propgridpagestate.h b/interface/wx/propgrid/propgridpagestate.h new file mode 100644 index 0000000000..af2ee8d882 --- /dev/null +++ b/interface/wx/propgrid/propgridpagestate.h @@ -0,0 +1,170 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: property.h +// Purpose: interface of wxPGProperty +// Author: wxWidgets team +// RCS-ID: $Id: +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/** @section propgrid_hittestresult wxPropertyGridHitTestResult + + A return value from wxPropertyGrid::HitTest(), + contains all you need to know about an arbitrary location on the grid. +*/ +struct wxPropertyGridHitTestResult +{ +public: + + wxPGProperty* GetProperty() const { return property; } + + /** Column. -1 for margin. */ + int column; + + /** Index of splitter hit, -1 for none. */ + int splitter; + + /** If splitter hit, offset to that */ + int splitterHitOffset; + +private: + /** Property. NULL if empty space below properties was hit */ + wxPGProperty* property; +}; + +// ----------------------------------------------------------------------- + +#define wxPG_IT_CHILDREN(A) (A<<16) + +/** @section propgrid_iterator_flags wxPropertyGridIterator Flags + @{ + + NOTES: At lower 16-bits, there are flags to check if item will be included. At higher + 16-bits, there are same flags, but to instead check if children will be included. +*/ + +enum wxPG_ITERATOR_FLAGS +{ + +/** Iterate through 'normal' property items (does not include children of aggregate or hidden items by default). +*/ +wxPG_ITERATE_PROPERTIES = (wxPG_PROP_PROPERTY|wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE| \ + wxPG_PROP_COLLAPSED|((wxPG_PROP_MISC_PARENT|wxPG_PROP_CATEGORY)<<16)), + +/** Iterate children of collapsed parents, and individual items that are hidden. +*/ +wxPG_ITERATE_HIDDEN = (wxPG_PROP_HIDDEN|wxPG_IT_CHILDREN(wxPG_PROP_COLLAPSED)), + +/** Iterate children of parent that is an aggregate property (ie. has fixed children). +*/ +wxPG_ITERATE_FIXED_CHILDREN = (wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)|wxPG_ITERATE_PROPERTIES), + +/** Iterate categories. Note that even without this flag, children of categories + are still iterated through. +*/ +wxPG_ITERATE_CATEGORIES = (wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY)|wxPG_PROP_COLLAPSED), + +wxPG_ITERATE_ALL_PARENTS = (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY), + +wxPG_ITERATE_ALL_PARENTS_RECURSIVELY = (wxPG_ITERATE_ALL_PARENTS|wxPG_IT_CHILDREN(wxPG_ITERATE_ALL_PARENTS)), + +wxPG_ITERATOR_FLAGS_ALL = (wxPG_PROP_PROPERTY|wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE| \ + wxPG_PROP_HIDDEN|wxPG_PROP_CATEGORY|wxPG_PROP_COLLAPSED), + +wxPG_ITERATOR_MASK_OP_ITEM = wxPG_ITERATOR_FLAGS_ALL, + +wxPG_ITERATOR_MASK_OP_PARENT = wxPG_ITERATOR_FLAGS_ALL, // (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY) + +/** Combines all flags needed to iterate through visible properties + (ie. hidden properties and children of collapsed parents are skipped). +*/ +wxPG_ITERATE_VISIBLE = (wxPG_ITERATE_PROPERTIES|wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)), + +/** Iterate all items. +*/ +wxPG_ITERATE_ALL = (wxPG_ITERATE_VISIBLE|wxPG_ITERATE_HIDDEN), + +/** Iterate through individual properties (ie. categories and children of + aggregate properties are skipped). +*/ +wxPG_ITERATE_NORMAL = (wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_HIDDEN), + +/** Default iterator flags. +*/ +wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL + +}; + +/** @} +*/ + + +/** @section propgrid_iterator_class wxPropertyGridIterator + + Preferable way to iterate through contents of wxPropertyGrid, + wxPropertyGridManager, and wxPropertyGridPage. + + See wxPropertyGridInterface::GetIterator() for more information about usage. + + @library{wxpropgrid} + @category{propgrid} +*/ +class wxPropertyGridIterator : public wxPropertyGridIteratorBase +{ +public: + + void Assign( const wxPropertyGridIteratorBase& it ); + + bool AtEnd() const { return m_property == NULL; } + + /** Get current property. + */ + wxPGProperty* GetProperty() const { return m_property; } + + /** Iterate to the next property. + */ + void Next( bool iterateChildren = true ); + + /** Iterate to the previous property. + */ + void Prev(); + +protected: +}; + +// ----------------------------------------------------------------------- + +/** @section propgrid_viterator_class wxPGVIterator + + Abstract implementation of a simple iterator. Can only be used + to iterate in forward order, and only through the entire container. + Used to have functions dealing with all properties work with both + wxPropertyGrid and wxPropertyGridManager. +*/ +class wxPGVIterator +{ +public: + wxPGVIterator() { m_pIt = NULL; } + wxPGVIterator( wxPGVIteratorBase* obj ) { m_pIt = obj; } + ~wxPGVIterator() { UnRef(); } + void UnRef() { if (m_pIt) m_pIt->DecRef(); } + wxPGVIterator( const wxPGVIterator& it ) + { + m_pIt = it.m_pIt; + m_pIt->IncRef(); + } + const wxPGVIterator& operator=( const wxPGVIterator& it ) + { + UnRef(); + m_pIt = it.m_pIt; + m_pIt->IncRef(); + return *this; + } + void Next() { m_pIt->Next(); } + bool AtEnd() const { return m_pIt->m_it.AtEnd(); } + wxPGProperty* GetProperty() const { return m_pIt->m_it.GetProperty(); } +protected: + wxPGVIteratorBase* m_pIt; +}; + + diff --git a/misc/scripts/makemswtags.bat b/misc/scripts/makemswtags.bat index 4ccf975a22..96b9cb22a9 100755 --- a/misc/scripts/makemswtags.bat +++ b/misc/scripts/makemswtags.bat @@ -1 +1 @@ -@ctags.exe --totals --language-force=c++ --c++-types=+px -I WXDLLEXPORT -I WXDLLIMPEXP_DATA_BASE+ -I WXDLLIMPEXP_BASE -I WXDLLIMPEXP_DATA_CORE+ -I WXDLLIMPEXP_CORE -I WXDLLIMPEXP_DATA_NET+ -I WXDLLIMPEXP_NET -I WXDLLIMPEXP_DATA_ADV+ -I WXDLLIMPEXP_ADV -I WXDLLIMPEXP_DATA_QA+ -I WXDLLIMPEXP_QA -I WXDLLIMPEXP_DATA_ODBC+ -I WXDLLIMPEXP_ODBC -I WXDLLIMPEXP_DATA_DBGRID+ -I WXDLLIMPEXP_DBGRID -I WXDLLIMPEXP_DATA_HTML+ -I WXDLLIMPEXP_HTML -I WXDLLIMPEXP_DATA_GL+ -I WXDLLIMPEXP_GL -I WXDLLIMPEXP_DATA_XML+ -I WXDLLIMPEXP_XML -I WXDLLIMPEXP_DATA_XRC+ -I WXDLLIMPEXP_XRC -I WXDLLIMPEXP_DATA_AUI+ -I WXDLLIMPEXP_AUI -I WXDLLIMPEXP_DATA_RICHTEXT+ -I WXDLLIMPEXP_RICHTEXT -I WXDLLIMPEXP_DATA_MEDIA+ -I WXDLLIMPEXP_MEDIA include/wx/*.h include/wx/msw/*.h include/wx/msw/ole/*.h include/wx/generic/*.h include/wx/html/*.h include/wx/protocol/*.h include/wx/richtext/*.h include/wx/xml/*.h include/wx/xrc/*.h src/common/*.cpp src/generic/*.cpp src/msw/*.cpp src/msw/ole/*.cpp src/html/*.cpp src/richtext/*.cpp src/xml/*.cpp src/xrc/*.cpp +@ctags.exe --totals --language-force=c++ --c++-types=+px -I WXDLLEXPORT -I WXDLLIMPEXP_DATA_BASE+ -I WXDLLIMPEXP_BASE -I WXDLLIMPEXP_DATA_CORE+ -I WXDLLIMPEXP_CORE -I WXDLLIMPEXP_DATA_NET+ -I WXDLLIMPEXP_NET -I WXDLLIMPEXP_DATA_ADV+ -I WXDLLIMPEXP_ADV -I WXDLLIMPEXP_DATA_QA+ -I WXDLLIMPEXP_QA -I WXDLLIMPEXP_DATA_ODBC+ -I WXDLLIMPEXP_ODBC -I WXDLLIMPEXP_DATA_DBGRID+ -I WXDLLIMPEXP_DBGRID -I WXDLLIMPEXP_DATA_HTML+ -I WXDLLIMPEXP_HTML -I WXDLLIMPEXP_DATA_GL+ -I WXDLLIMPEXP_GL -I WXDLLIMPEXP_DATA_XML+ -I WXDLLIMPEXP_XML -I WXDLLIMPEXP_DATA_XRC+ -I WXDLLIMPEXP_XRC -I WXDLLIMPEXP_DATA_AUI+ -I WXDLLIMPEXP_AUI -I WXDLLIMPEXP_DATA_PROPGRID+ -I WXDLLIMPEXP_PROPGRID -I WXDLLIMPEXP_DATA_RICHTEXT+ -I WXDLLIMPEXP_RICHTEXT -I WXDLLIMPEXP_DATA_MEDIA+ -I WXDLLIMPEXP_MEDIA include/wx/*.h include/wx/msw/*.h include/wx/msw/ole/*.h include/wx/generic/*.h include/wx/html/*.h include/wx/protocol/*.h include/wx/richtext/*.h include/wx/xml/*.h include/wx/xrc/*.h src/common/*.cpp src/generic/*.cpp src/msw/*.cpp src/msw/ole/*.cpp src/html/*.cpp src/richtext/*.cpp src/xml/*.cpp src/xrc/*.cpp diff --git a/misc/scripts/makeunixtags.sh b/misc/scripts/makeunixtags.sh index 79476b1407..a2ea205f0a 100644 --- a/misc/scripts/makeunixtags.sh +++ b/misc/scripts/makeunixtags.sh @@ -24,6 +24,7 @@ ctags --totals --c++-kinds=+px --language-force=c++ \ -I WXDLLIMPEXP_DATA_MEDIA+ -I WXDLLIMPEXP_MEDIA \ -I WXDLLIMPEXP_DATA_NET+ -I WXDLLIMPEXP_NET \ -I WXDLLIMPEXP_DATA_ODBC+ -I WXDLLIMPEXP_ODBC \ + -I WXDLLIMPEXP_DATA_PROPGRID+ -I WXDLLIMPEXP_PROPGRID \ -I WXDLLIMPEXP_DATA_QA+ -I WXDLLIMPEXP_QA \ -I WXDLLIMPEXP_DATA_RICHTEXT+ -I WXDLLIMPEXP_RICHTEXT \ -I WXDLLIMPEXP_DATA_STC+ -I WXDLLIMPEXP_STC \ @@ -36,6 +37,7 @@ ctags --totals --c++-kinds=+px --language-force=c++ \ include/wx/$1/*.h \ include/wx/$1/private/*.h \ include/wx/html/*.h \ + include/wx/propgrid/*.h \ include/wx/protocol/*.h \ include/wx/richtext/*.h \ include/wx/xml/*.h \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in new file mode 100644 index 0000000000..dfa5fbc59e --- /dev/null +++ b/samples/propgrid/Makefile.in @@ -0,0 +1,217 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + +@MAKE_SET@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +INSTALL = @INSTALL@ +EXEEXT = @EXEEXT@ +WINDRES = @WINDRES@ +SETFILE = @SETFILE@ +NM = @NM@ +BK_DEPS = @BK_DEPS@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +LIBS = @LIBS@ +LDFLAGS_GUI = @LDFLAGS_GUI@ +CXX = @CXX@ +CXXFLAGS = @CXXFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@ +TOOLKIT = @TOOLKIT@ +TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@ +TOOLKIT_VERSION = @TOOLKIT_VERSION@ +TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@ +EXTRALIBS = @EXTRALIBS@ +EXTRALIBS_GUI = @EXTRALIBS_GUI@ +EXTRALIBS_SDL = @EXTRALIBS_SDL@ +CXXWARNINGS = @CXXWARNINGS@ +HOST_SUFFIX = @HOST_SUFFIX@ +SAMPLES_RPATH_FLAG = @SAMPLES_RPATH_FLAG@ +SAMPLES_RPATH_POSTLINK = @SAMPLES_RPATH_POSTLINK@ +wx_top_builddir = @wx_top_builddir@ + +### Variables: ### + +DESTDIR = +WX_RELEASE = 2.9 +WX_VERSION = $(WX_RELEASE).0 +LIBDIRNAME = $(wx_top_builddir)/lib +PROPGRID_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ + -I$(srcdir) $(__DLLFLAG_p) -I$(srcdir)/../../samples $(CXXWARNINGS) \ + $(CPPFLAGS) $(CXXFLAGS) +PROPGRID_OBJECTS = \ + $(__propgrid_os2_lib_res) \ + propgrid_propgrid.o \ + propgrid_propgrid_minimal.o \ + propgrid_sampleprops.o \ + propgrid_tests.o \ + $(__propgrid___win32rc) + +### Conditionally set variables: ### + +@COND_DEPS_TRACKING_0@CXXC = $(CXX) +@COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX) +@COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL) +@COND_USE_GUI_0@PORTNAME = base +@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) +@COND_TOOLKIT_MAC@WXBASEPORT = _carbon +@COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT@WXDEBUGFLAG = d +@COND_DEBUG_FLAG_1@WXDEBUGFLAG = d +@COND_UNICODE_1@WXUNICODEFLAG = u +@COND_WXUNIV_1@WXUNIVNAME = univ +@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS) +@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI) +@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI) +@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI = +@COND_PLATFORM_MAC_0@__propgrid___mac_setfilecmd = @true +@COND_PLATFORM_MAC_1@__propgrid___mac_setfilecmd = \ +@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL propgrid$(EXEEXT) +@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +@COND_WXUNIV_1@__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__ +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS +@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI +@COND_USE_RTTI_0@__RTTI_DEFINE_p_2 = --define wxNO_RTTI +@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS +@COND_USE_THREADS_0@__THREAD_DEFINE_p_2 = --define wxNO_THREADS +@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL +@COND_SHARED_1@__DLLFLAG_p_2 = --define WXUSINGDLL +COND_PLATFORM_OS2_1___propgrid___os2_emxbindcmd = $(NM) propgrid$(EXEEXT) | if \ + grep -q pmwin.763 ; then emxbind -ep propgrid$(EXEEXT) ; fi +@COND_PLATFORM_OS2_1@__propgrid___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___propgrid___os2_emxbindcmd) +@COND_TOOLKIT_MSW@__RCDEFDIR_p_1 = --include-dir \ +@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME) +@COND_PLATFORM_OS2_1@__propgrid_os2_lib_res = \ +@COND_PLATFORM_OS2_1@ $(top_srcdir)/include/wx/os2/wx.res +@COND_PLATFORM_MACOSX_1@__propgrid_app_Contents_PkgInfo___depname \ +@COND_PLATFORM_MACOSX_1@ = propgrid.app/Contents/PkgInfo +@COND_PLATFORM_MACOSX_1@__propgrid_bundle___depname = propgrid_bundle +@COND_TOOLKIT_MAC@____propgrid_BUNDLE_TGT_REF_DEP = \ +@COND_TOOLKIT_MAC@ $(__propgrid_app_Contents_PkgInfo___depname) +@COND_TOOLKIT_OSX_CARBON@____propgrid_BUNDLE_TGT_REF_DEP \ +@COND_TOOLKIT_OSX_CARBON@ = $(__propgrid_app_Contents_PkgInfo___depname) +@COND_TOOLKIT_OSX_COCOA@____propgrid_BUNDLE_TGT_REF_DEP \ +@COND_TOOLKIT_OSX_COCOA@ = $(__propgrid_app_Contents_PkgInfo___depname) +@COND_TOOLKIT_OSX_IPHONE@____propgrid_BUNDLE_TGT_REF_DEP \ +@COND_TOOLKIT_OSX_IPHONE@ = $(__propgrid_app_Contents_PkgInfo___depname) +@COND_TOOLKIT_COCOA@____propgrid_BUNDLE_TGT_REF_DEP = \ +@COND_TOOLKIT_COCOA@ $(__propgrid_app_Contents_PkgInfo___depname) +COND_MONOLITHIC_0___WXLIB_PROPGRID_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_PROPGRID_p = $(COND_MONOLITHIC_0___WXLIB_PROPGRID_p) +COND_MONOLITHIC_0___WXLIB_ADV_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_ADV_p = $(COND_MONOLITHIC_0___WXLIB_ADV_p) +COND_MONOLITHIC_0___WXLIB_CORE_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p) +COND_MONOLITHIC_0___WXLIB_BASE_p = \ + -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p) +@COND_PLATFORM_WIN32_1@__propgrid___win32rc = propgrid_sample_rc.o +COND_MONOLITHIC_1___WXLIB_MONO_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p) +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \ +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@__LIB_JPEG_p \ +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@__LIB_PNG_p \ +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \ +@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \ + -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_WXUSE_REGEX_BUILTIN@__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p) +@COND_WXUSE_EXPAT_BUILTIN@__LIB_EXPAT_p = \ +@COND_WXUSE_EXPAT_BUILTIN@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) + +### Targets: ### + +all: propgrid$(EXEEXT) $(__propgrid_bundle___depname) + +install: all + +uninstall: + +install-strip: install + +clean: + rm -rf ./.deps ./.pch + rm -f ./*.o + rm -f propgrid$(EXEEXT) + rm -rf propgrid.app + +distclean: clean + rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile + +propgrid$(EXEEXT): $(PROPGRID_OBJECTS) $(__propgrid___win32rc) + $(CXX) -o $@ $(PROPGRID_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_PROPGRID_p) $(__WXLIB_ADV_p) $(PLUGIN_ADV_EXTRALIBS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) + + $(__propgrid___mac_setfilecmd) + $(__propgrid___os2_emxbindcmd) + $(SAMPLES_RPATH_POSTLINK) + +@COND_PLATFORM_MACOSX_1@propgrid.app/Contents/PkgInfo: propgrid$(EXEEXT) $(top_srcdir)/src/osx/carbon/Info.plist.in $(top_srcdir)/src/osx/carbon/wxmac.icns +@COND_PLATFORM_MACOSX_1@ mkdir -p propgrid.app/Contents +@COND_PLATFORM_MACOSX_1@ mkdir -p propgrid.app/Contents/MacOS +@COND_PLATFORM_MACOSX_1@ mkdir -p propgrid.app/Contents/Resources +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/EXECUTABLE/propgrid/" \ +@COND_PLATFORM_MACOSX_1@ -e "s/VERSION/$(WX_VERSION)/" \ +@COND_PLATFORM_MACOSX_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >propgrid.app/Contents/Info.plist +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ echo -n "APPL????" >propgrid.app/Contents/PkgInfo +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ ln -f propgrid$(EXEEXT) propgrid.app/Contents/MacOS/propgrid +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ +@COND_PLATFORM_MACOSX_1@ cp -f $(top_srcdir)/src/osx/carbon/wxmac.icns propgrid.app/Contents/Resources/wxmac.icns + +@COND_PLATFORM_MACOSX_1@propgrid_bundle: $(____propgrid_BUNDLE_TGT_REF_DEP) + +propgrid_propgrid.o: $(srcdir)/propgrid.cpp + $(CXXC) -c -o $@ $(PROPGRID_CXXFLAGS) $(srcdir)/propgrid.cpp + +propgrid_propgrid_minimal.o: $(srcdir)/propgrid_minimal.cpp + $(CXXC) -c -o $@ $(PROPGRID_CXXFLAGS) $(srcdir)/propgrid_minimal.cpp + +propgrid_sampleprops.o: $(srcdir)/sampleprops.cpp + $(CXXC) -c -o $@ $(PROPGRID_CXXFLAGS) $(srcdir)/sampleprops.cpp + +propgrid_tests.o: $(srcdir)/tests.cpp + $(CXXC) -c -o $@ $(PROPGRID_CXXFLAGS) $(srcdir)/tests.cpp + +propgrid_sample_rc.o: $(srcdir)/../sample.rc + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include + + +$(srcdir)/include/wx/stc/stc.h: \ +$(srcdir)/src/stc/scintilla/include/Scintilla.iface \ +$(srcdir)/src/stc/stc.cpp.in \ +$(srcdir)/src/stc/stc.h.in \ +$(srcdir)/src/stc/gen_iface.py + cd $(srcdir)/src/stc && ./gen_iface.py +monolib_stc.o monodll_stc.o stcdll_stc.o stclib_stc.o: \ +$(srcdir)/include/wx/stc/stc.h + +# Include dependency info, if present: +@IF_GNU_MAKE@-include .deps/*.d + +.PHONY: all install uninstall clean distclean propgrid_bundle diff --git a/samples/propgrid/makefile.bcc b/samples/propgrid/makefile.bcc new file mode 100644 index 0000000000..b7a928dec9 --- /dev/null +++ b/samples/propgrid/makefile.bcc @@ -0,0 +1,261 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +.autodepend + +!ifndef BCCDIR +!ifndef MAKEDIR +!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4 +!endif +BCCDIR = $(MAKEDIR)\.. +!endif + +!include ../../build/msw/config.bcc + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +WX_RELEASE_NODOT = 29 +COMPILER_PREFIX = bcc +OBJS = \ + $(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +PROPGRID_CXXFLAGS = $(__RUNTIME_LIBS_7) -I$(BCCDIR)\include $(__DEBUGINFO) \ + $(__OPTIMIZEFLAG_2) $(__THREADSFLAG_6) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \ + -I.\..\..\samples -DNOPCH $(CPPFLAGS) $(CXXFLAGS) +PROPGRID_OBJECTS = \ + $(OBJS)\propgrid_propgrid.obj \ + $(OBJS)\propgrid_propgrid_minimal.obj \ + $(OBJS)\propgrid_sampleprops.obj \ + $(OBJS)\propgrid_tests.obj + +### Conditionally set variables: ### + +!if "$(USE_GUI)" == "0" +PORTNAME = base +!endif +!if "$(USE_GUI)" == "1" +PORTNAME = msw +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +WXDEBUGFLAG = d +!endif +!if "$(DEBUG_FLAG)" == "1" +WXDEBUGFLAG = d +!endif +!if "$(UNICODE)" == "1" +WXUNICODEFLAG = u +!endif +!if "$(WXUNIV)" == "1" +WXUNIVNAME = univ +!endif +!if "$(SHARED)" == "1" +WXDLLFLAG = dll +!endif +!if "$(SHARED)" == "0" +LIBTYPE_SUFFIX = lib +!endif +!if "$(SHARED)" == "1" +LIBTYPE_SUFFIX = dll +!endif +!if "$(MONOLITHIC)" == "0" +EXTRALIBS_FOR_BASE = +!endif +!if "$(MONOLITHIC)" == "1" +EXTRALIBS_FOR_BASE = +!endif +!if "$(BUILD)" == "debug" +__OPTIMIZEFLAG_2 = -Od +!endif +!if "$(BUILD)" == "release" +__OPTIMIZEFLAG_2 = -O2 +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_5 = +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_5 = mt +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_6 = +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_6 = -tWM +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_7 = -tWR +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_7 = +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_8 = i +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_8 = +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p_1 = -d__WXUNIVERSAL__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p_1 = -d__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p_1 = -d__WXDEBUG__ +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p_1 = -dwxNO_EXCEPTIONS +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p = -DwxNO_RTTI +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p_1 = -dwxNO_RTTI +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p = -DwxNO_THREADS +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p_1 = -dwxNO_THREADS +!endif +!if "$(UNICODE)" == "0" +__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0 +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p = -D_UNICODE +!endif +!if "$(UNICODE)" == "0" +__UNICODE_DEFINE_p_1 = -dwxUSE_UNICODE=0 +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p_1 = -d_UNICODE +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p_1 = -dwxUSE_UNICODE_MSLU=1 +!endif +!if "$(USE_GDIPLUS)" == "1" +__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1 +!endif +!if "$(USE_GDIPLUS)" == "1" +__GFXCTX_DEFINE_p_1 = -dwxUSE_GRAPHICS_CONTEXT=1 +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p = -DWXUSINGDLL +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p_1 = -dWXUSINGDLL +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_PROPGRID_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_ADV_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_CORE_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_BASE_p = \ + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(MONOLITHIC)" == "1" +__WXLIB_MONO_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +!if "$(MSLU)" == "1" +__UNICOWS_LIB_p = unicows.lib +!endif +!if "$(USE_GDIPLUS)" == "1" +__GDIPLUS_LIB_p = gdiplus.lib +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO = -v +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO = -v- +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO = -v- +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO = -v +!endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\propgrid.exe + +clean: + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.csm del $(OBJS)\*.csm + -if exist $(OBJS)\propgrid.exe del $(OBJS)\propgrid.exe + -if exist $(OBJS)\propgrid.tds del $(OBJS)\propgrid.tds + -if exist $(OBJS)\propgrid.ilc del $(OBJS)\propgrid.ilc + -if exist $(OBJS)\propgrid.ild del $(OBJS)\propgrid.ild + -if exist $(OBJS)\propgrid.ilf del $(OBJS)\propgrid.ilf + -if exist $(OBJS)\propgrid.ils del $(OBJS)\propgrid.ils + +$(OBJS)\propgrid.exe: $(PROPGRID_OBJECTS) $(OBJS)\propgrid_sample.res + ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&| + c0w32.obj $(PROPGRID_OBJECTS),$@,, $(__WXLIB_PROPGRID_p) $(__WXLIB_ADV_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG_5)$(__RUNTIME_LIBS_8).lib,, $(OBJS)\propgrid_sample.res +| + +$(OBJS)\propgrid_propgrid.obj: .\propgrid.cpp + $(CXX) -q -c -P -o$@ $(PROPGRID_CXXFLAGS) .\propgrid.cpp + +$(OBJS)\propgrid_propgrid_minimal.obj: .\propgrid_minimal.cpp + $(CXX) -q -c -P -o$@ $(PROPGRID_CXXFLAGS) .\propgrid_minimal.cpp + +$(OBJS)\propgrid_sampleprops.obj: .\sampleprops.cpp + $(CXX) -q -c -P -o$@ $(PROPGRID_CXXFLAGS) .\sampleprops.cpp + +$(OBJS)\propgrid_tests.obj: .\tests.cpp + $(CXX) -q -c -P -o$@ $(PROPGRID_CXXFLAGS) .\tests.cpp + +$(OBJS)\propgrid_sample.res: .\..\sample.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) $(__GFXCTX_DEFINE_p_1) -i$(SETUPHDIR) -i.\..\..\include -i. $(__DLLFLAG_p_1) -i.\..\..\samples -dNOPCH .\..\sample.rc + diff --git a/samples/propgrid/makefile.gcc b/samples/propgrid/makefile.gcc new file mode 100644 index 0000000000..55c92a1a5c --- /dev/null +++ b/samples/propgrid/makefile.gcc @@ -0,0 +1,261 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +include ../../build/msw/config.gcc + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CPPDEPS = -MT$@ -MF$@.d -MD +WX_RELEASE_NODOT = 29 +COMPILER_PREFIX = gcc +OBJS = \ + $(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +PROPGRID_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG) \ + $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -W -Wall -I. \ + $(__DLLFLAG_p) -I.\..\..\samples -DNOPCH $(__RTTIFLAG_5) \ + $(__EXCEPTIONSFLAG_6) -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS) +PROPGRID_OBJECTS = \ + $(OBJS)\propgrid_propgrid.o \ + $(OBJS)\propgrid_propgrid_minimal.o \ + $(OBJS)\propgrid_sampleprops.o \ + $(OBJS)\propgrid_tests.o \ + $(OBJS)\propgrid_sample_rc.o + +### Conditionally set variables: ### + +ifeq ($(GCC_VERSION),2.95) +GCCFLAGS = -fvtable-thunks +endif +ifeq ($(USE_GUI),0) +PORTNAME = base +endif +ifeq ($(USE_GUI),1) +PORTNAME = msw +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +WXDEBUGFLAG = d +endif +endif +ifeq ($(DEBUG_FLAG),1) +WXDEBUGFLAG = d +endif +ifeq ($(UNICODE),1) +WXUNICODEFLAG = u +endif +ifeq ($(WXUNIV),1) +WXUNIVNAME = univ +endif +ifeq ($(SHARED),1) +WXDLLFLAG = dll +endif +ifeq ($(SHARED),0) +LIBTYPE_SUFFIX = lib +endif +ifeq ($(SHARED),1) +LIBTYPE_SUFFIX = dll +endif +ifeq ($(MONOLITHIC),0) +EXTRALIBS_FOR_BASE = +endif +ifeq ($(MONOLITHIC),1) +EXTRALIBS_FOR_BASE = +endif +ifeq ($(BUILD),debug) +__OPTIMIZEFLAG_2 = -O0 +endif +ifeq ($(BUILD),release) +__OPTIMIZEFLAG_2 = -O2 +endif +ifeq ($(USE_RTTI),0) +__RTTIFLAG_5 = -fno-rtti +endif +ifeq ($(USE_RTTI),1) +__RTTIFLAG_5 = +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONSFLAG_6 = -fno-exceptions +endif +ifeq ($(USE_EXCEPTIONS),1) +__EXCEPTIONSFLAG_6 = +endif +ifeq ($(WXUNIV),1) +__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +endif +ifeq ($(WXUNIV),1) +__WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__ +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +__DEBUG_DEFINE_p = -D__WXDEBUG__ +endif +endif +ifeq ($(DEBUG_FLAG),1) +__DEBUG_DEFINE_p = -D__WXDEBUG__ +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +__DEBUG_DEFINE_p_1 = --define __WXDEBUG__ +endif +endif +ifeq ($(DEBUG_FLAG),1) +__DEBUG_DEFINE_p_1 = --define __WXDEBUG__ +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS +endif +ifeq ($(USE_RTTI),0) +__RTTI_DEFINE_p = -DwxNO_RTTI +endif +ifeq ($(USE_RTTI),0) +__RTTI_DEFINE_p_1 = --define wxNO_RTTI +endif +ifeq ($(USE_THREADS),0) +__THREAD_DEFINE_p = -DwxNO_THREADS +endif +ifeq ($(USE_THREADS),0) +__THREAD_DEFINE_p_1 = --define wxNO_THREADS +endif +ifeq ($(UNICODE),0) +__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0 +endif +ifeq ($(UNICODE),1) +__UNICODE_DEFINE_p = -D_UNICODE +endif +ifeq ($(UNICODE),0) +__UNICODE_DEFINE_p_1 = --define wxUSE_UNICODE=0 +endif +ifeq ($(UNICODE),1) +__UNICODE_DEFINE_p_1 = --define _UNICODE +endif +ifeq ($(MSLU),1) +__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 +endif +ifeq ($(MSLU),1) +__MSLU_DEFINE_p_1 = --define wxUSE_UNICODE_MSLU=1 +endif +ifeq ($(USE_GDIPLUS),1) +__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1 +endif +ifeq ($(USE_GDIPLUS),1) +__GFXCTX_DEFINE_p_1 = --define wxUSE_GRAPHICS_CONTEXT=1 +endif +ifeq ($(SHARED),1) +__DLLFLAG_p = -DWXUSINGDLL +endif +ifeq ($(SHARED),1) +__DLLFLAG_p_1 = --define WXUSINGDLL +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_PROPGRID_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_ADV_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_CORE_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_BASE_p = \ + -lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) +endif +ifeq ($(MONOLITHIC),1) +__WXLIB_MONO_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) +endif +ifeq ($(USE_GUI),1) +__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG) +endif +ifeq ($(USE_GUI),1) +__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG) +endif +ifeq ($(USE_GUI),1) +__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG) +endif +ifeq ($(MSLU),1) +__UNICOWS_LIB_p = -lunicows +endif +ifeq ($(USE_GDIPLUS),1) +__GDIPLUS_LIB_p = -lgdiplus +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_INFO),default) +__DEBUGINFO = -g +endif +endif +ifeq ($(BUILD),release) +ifeq ($(DEBUG_INFO),default) +__DEBUGINFO = +endif +endif +ifeq ($(DEBUG_INFO),0) +__DEBUGINFO = +endif +ifeq ($(DEBUG_INFO),1) +__DEBUGINFO = -g +endif +ifeq ($(USE_THREADS),0) +__THREADSFLAG = +endif +ifeq ($(USE_THREADS),1) +__THREADSFLAG = -mthreads +endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\propgrid.exe + +clean: + -if exist $(OBJS)\*.o del $(OBJS)\*.o + -if exist $(OBJS)\*.d del $(OBJS)\*.d + -if exist $(OBJS)\propgrid.exe del $(OBJS)\propgrid.exe + +$(OBJS)\propgrid.exe: $(PROPGRID_OBJECTS) $(OBJS)\propgrid_sample_rc.o + $(CXX) -o $@ $(PROPGRID_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_PROPGRID_p) $(__WXLIB_ADV_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 + +$(OBJS)\propgrid_propgrid.o: ./propgrid.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgrid_propgrid_minimal.o: ./propgrid_minimal.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgrid_sampleprops.o: ./sampleprops.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgrid_tests.o: ./tests.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +$(OBJS)\propgrid_sample_rc.o: ./../sample.rc + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) $(__GFXCTX_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir ./../../include --include-dir . $(__DLLFLAG_p_1) --include-dir ./../../samples --define NOPCH + +.PHONY: all clean + + +SHELL := $(COMSPEC) + +# Dependencies tracking: +-include $(OBJS)/*.d diff --git a/samples/propgrid/makefile.unx b/samples/propgrid/makefile.unx new file mode 100644 index 0000000000..c3be594a55 --- /dev/null +++ b/samples/propgrid/makefile.unx @@ -0,0 +1,122 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# C++ compiler +CXX := g++ + +# Standard flags for C++ +CXXFLAGS := + +# Standard preprocessor flags (common for CC and CXX) +CPPFLAGS := + +# Standard linker flags +LDFLAGS := + +# Location and arguments of wx-config script +WX_CONFIG := wx-config + +# Port of the wx library to build against [gtk1,gtk2,msw,x11,motif,mgl,mac,dfb] +WX_PORT := $(shell $(WX_CONFIG) --selected-config | cut -d '-' -f 1) + +# Use DLL build of wx library to use? [0,1] +WX_SHARED := $(shell if test -z `$(WX_CONFIG) --selected-config | cut -d '-' -f 5`; then echo 1; else echo 0; fi) + +# Compile Unicode build of wxWidgets? [0,1] +WX_UNICODE := $(shell $(WX_CONFIG) --selected-config | cut -d '-' -f 2 | sed 's/unicode/1/;s/ansi/0/') + +# Use debug build of wxWidgets (define __WXDEBUG__)? [0,1] +WX_DEBUG := $(shell $(WX_CONFIG) --selected-config | cut -d '-' -f 3 | sed 's/debug/1/;s/release/0/') + +# Version of the wx library to build against. +WX_VERSION := $(shell $(WX_CONFIG) --selected-config | sed -e 's/.*-\([0-9]*\)\.\([0-9]*\)$$/\1\2/') + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CPPDEPS = -MT$@ -MF`echo $@ | sed -e 's,\.o$$,.d,'` -MD +WX_VERSION_MAJOR = $(shell echo $(WX_VERSION) | cut -c1,1) +WX_VERSION_MINOR = $(shell echo $(WX_VERSION) | cut -c2,2) +WX_CONFIG_FLAGS = $(WX_CONFIG_DEBUG_FLAG) $(WX_CONFIG_UNICODE_FLAG) \ + $(WX_CONFIG_SHARED_FLAG) --toolkit=$(WX_PORT) \ + --version=$(WX_VERSION_MAJOR).$(WX_VERSION_MINOR) +PROPGRID_CXXFLAGS = -I. `$(WX_CONFIG) --cxxflags $(WX_CONFIG_FLAGS)` $(CPPFLAGS) \ + $(CXXFLAGS) +PROPGRID_OBJECTS = \ + propgrid_propgrid.o \ + propgrid_propgrid_minimal.o \ + propgrid_sampleprops.o \ + propgrid_tests.o + +### Conditionally set variables: ### + +ifeq ($(WX_DEBUG),0) +WX_CONFIG_DEBUG_FLAG = --debug=no +endif +ifeq ($(WX_DEBUG),1) +WX_CONFIG_DEBUG_FLAG = --debug=yes +endif +ifeq ($(WX_UNICODE),0) +WX_CONFIG_UNICODE_FLAG = --unicode=no +endif +ifeq ($(WX_UNICODE),1) +WX_CONFIG_UNICODE_FLAG = --unicode=yes +endif +ifeq ($(WX_SHARED),0) +WX_CONFIG_SHARED_FLAG = --static=yes +endif +ifeq ($(WX_SHARED),1) +WX_CONFIG_SHARED_FLAG = --static=no +endif + + +### Targets: ### + +all: test_for_selected_wxbuild propgrid + +install: all + +uninstall: + +clean: + rm -f ./*.o + rm -f ./*.d + rm -f propgrid + +test_for_selected_wxbuild: + @$(WX_CONFIG) $(WX_CONFIG_FLAGS) + +propgrid: $(PROPGRID_OBJECTS) + $(CXX) -o $@ $(PROPGRID_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs propgrid,adv,core,base` + +propgrid_propgrid.o: ./propgrid.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +propgrid_propgrid_minimal.o: ./propgrid_minimal.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +propgrid_sampleprops.o: ./sampleprops.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +propgrid_tests.o: ./tests.cpp + $(CXX) -c -o $@ $(PROPGRID_CXXFLAGS) $(CPPDEPS) $< + +.PHONY: all install uninstall clean + + +# Dependencies tracking: +-include ./*.d diff --git a/samples/propgrid/makefile.vc b/samples/propgrid/makefile.vc new file mode 100644 index 0000000000..eeddc4658a --- /dev/null +++ b/samples/propgrid/makefile.vc @@ -0,0 +1,337 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +!include <../../build/msw/config.vc> + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +WX_RELEASE_NODOT = 29 +COMPILER_PREFIX = vc +OBJS = \ + $(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(DIR_SUFFIX_CPU) +LIBDIRNAME = \ + .\..\..\lib\$(COMPILER_PREFIX)$(DIR_SUFFIX_CPU)_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +PROPGRID_CXXFLAGS = /M$(__RUNTIME_LIBS_8)$(__DEBUGRUNTIME_3) /DWIN32 \ + $(__DEBUGINFO_0) /Fd$(OBJS)\propgrid.pdb $(____DEBUGRUNTIME_2_p) \ + $(__OPTIMIZEFLAG_4) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + $(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I.\..\..\include /W4 /I. $(__DLLFLAG_p) \ + /D_WINDOWS /I.\..\..\samples /DNOPCH $(__RTTIFLAG_9) $(__EXCEPTIONSFLAG_10) \ + $(CPPFLAGS) $(CXXFLAGS) +PROPGRID_OBJECTS = \ + $(OBJS)\propgrid_propgrid.obj \ + $(OBJS)\propgrid_propgrid_minimal.obj \ + $(OBJS)\propgrid_sampleprops.obj \ + $(OBJS)\propgrid_tests.obj \ + $(OBJS)\propgrid_sample.res + +### Conditionally set variables: ### + +!if "$(USE_GUI)" == "0" +PORTNAME = base +!endif +!if "$(USE_GUI)" == "1" +PORTNAME = msw +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +WXDEBUGFLAG = d +!endif +!if "$(DEBUG_FLAG)" == "1" +WXDEBUGFLAG = d +!endif +!if "$(UNICODE)" == "1" +WXUNICODEFLAG = u +!endif +!if "$(WXUNIV)" == "1" +WXUNIVNAME = univ +!endif +!if "$(TARGET_CPU)" == "amd64" +DIR_SUFFIX_CPU = _amd64 +!endif +!if "$(TARGET_CPU)" == "amd64" +DIR_SUFFIX_CPU = _amd64 +!endif +!if "$(TARGET_CPU)" == "ia64" +DIR_SUFFIX_CPU = _ia64 +!endif +!if "$(TARGET_CPU)" == "ia64" +DIR_SUFFIX_CPU = _ia64 +!endif +!if "$(SHARED)" == "1" +WXDLLFLAG = dll +!endif +!if "$(SHARED)" == "0" +LIBTYPE_SUFFIX = lib +!endif +!if "$(SHARED)" == "1" +LIBTYPE_SUFFIX = dll +!endif +!if "$(TARGET_CPU)" == "amd64" +LINK_TARGET_CPU = /MACHINE:AMD64 +!endif +!if "$(TARGET_CPU)" == "amd64" +LINK_TARGET_CPU = /MACHINE:AMD64 +!endif +!if "$(TARGET_CPU)" == "ia64" +LINK_TARGET_CPU = /MACHINE:IA64 +!endif +!if "$(TARGET_CPU)" == "ia64" +LINK_TARGET_CPU = /MACHINE:IA64 +!endif +!if "$(MONOLITHIC)" == "0" +EXTRALIBS_FOR_BASE = +!endif +!if "$(MONOLITHIC)" == "1" +EXTRALIBS_FOR_BASE = +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = /Zi +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_0 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_0 = /Zi +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = /DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_1 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_1 = /DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p = /D_DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +____DEBUGRUNTIME_2_p = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +____DEBUGRUNTIME_2_p = /D_DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p_1 = /d _DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p_1 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +____DEBUGRUNTIME_2_p_1 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +____DEBUGRUNTIME_2_p_1 = /d _DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +__DEBUGRUNTIME_3 = d +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +__DEBUGRUNTIME_3 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +__DEBUGRUNTIME_3 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +__DEBUGRUNTIME_3 = d +!endif +!if "$(BUILD)" == "debug" +__OPTIMIZEFLAG_4 = /Od +!endif +!if "$(BUILD)" == "release" +__OPTIMIZEFLAG_4 = /O2 +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_7 = L +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_7 = T +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_8 = D +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_8 = $(__THREADSFLAG_7) +!endif +!if "$(USE_RTTI)" == "0" +__RTTIFLAG_9 = +!endif +!if "$(USE_RTTI)" == "1" +__RTTIFLAG_9 = /GR +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONSFLAG_10 = +!endif +!if "$(USE_EXCEPTIONS)" == "1" +__EXCEPTIONSFLAG_10 = /EHsc +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0" +__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1" +__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0" +__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1" +__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p_1 = /d __WXUNIVERSAL__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p = /D__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p = /D__WXDEBUG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p_1 = /d __WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p_1 = /d __WXDEBUG__ +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p_1 = /d wxNO_EXCEPTIONS +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p = /DwxNO_RTTI +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p_1 = /d wxNO_RTTI +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p = /DwxNO_THREADS +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p_1 = /d wxNO_THREADS +!endif +!if "$(UNICODE)" == "0" +__UNICODE_DEFINE_p = /DwxUSE_UNICODE=0 +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p = /D_UNICODE +!endif +!if "$(UNICODE)" == "0" +__UNICODE_DEFINE_p_1 = /d wxUSE_UNICODE=0 +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p_1 = /d _UNICODE +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p = /DwxUSE_UNICODE_MSLU=1 +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p_1 = /d wxUSE_UNICODE_MSLU=1 +!endif +!if "$(USE_GDIPLUS)" == "1" +__GFXCTX_DEFINE_p = /DwxUSE_GRAPHICS_CONTEXT=1 +!endif +!if "$(USE_GDIPLUS)" == "1" +__GFXCTX_DEFINE_p_1 = /d wxUSE_GRAPHICS_CONTEXT=1 +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p = /DWXUSINGDLL +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p_1 = /d WXUSINGDLL +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_PROPGRID_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_ADV_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_CORE_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_BASE_p = \ + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(MONOLITHIC)" == "1" +__WXLIB_MONO_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +!if "$(MSLU)" == "1" +__UNICOWS_LIB_p = unicows.lib +!endif +!if "$(USE_GDIPLUS)" == "1" +__GDIPLUS_LIB_p = gdiplus.lib +!endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\propgrid.exe + +clean: + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.pch del $(OBJS)\*.pch + -if exist $(OBJS)\propgrid.exe del $(OBJS)\propgrid.exe + -if exist $(OBJS)\propgrid.ilk del $(OBJS)\propgrid.ilk + -if exist $(OBJS)\propgrid.pdb del $(OBJS)\propgrid.pdb + +$(OBJS)\propgrid.exe: $(PROPGRID_OBJECTS) $(OBJS)\propgrid_sample.res + link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) /pdb:"$(OBJS)\propgrid.pdb" $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<< + $(PROPGRID_OBJECTS) $(__WXLIB_PROPGRID_p) $(__WXLIB_ADV_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib +<< + +$(OBJS)\propgrid_propgrid.obj: .\propgrid.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRID_CXXFLAGS) .\propgrid.cpp + +$(OBJS)\propgrid_propgrid_minimal.obj: .\propgrid_minimal.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRID_CXXFLAGS) .\propgrid_minimal.cpp + +$(OBJS)\propgrid_sampleprops.obj: .\sampleprops.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRID_CXXFLAGS) .\sampleprops.cpp + +$(OBJS)\propgrid_tests.obj: .\tests.cpp + $(CXX) /c /nologo /TP /Fo$@ $(PROPGRID_CXXFLAGS) .\tests.cpp + +$(OBJS)\propgrid_sample.res: .\..\sample.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_2_p_1) $(__NO_VC_CRTDBG_p_1) /d __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) $(__GFXCTX_DEFINE_p_1) /i $(SETUPHDIR) /i .\..\..\include /i . $(__DLLFLAG_p_1) /d _WINDOWS /i .\..\..\samples /d NOPCH .\..\sample.rc + diff --git a/samples/propgrid/makefile.wat b/samples/propgrid/makefile.wat new file mode 100644 index 0000000000..424d4678a8 --- /dev/null +++ b/samples/propgrid/makefile.wat @@ -0,0 +1,288 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.3 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +!include ../../build/msw/config.wat + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +# Speed up compilation a bit: +!ifdef __LOADDLL__ +! loaddll wcc wccd +! loaddll wccaxp wccdaxp +! loaddll wcc386 wccd386 +! loaddll wpp wppdi86 +! loaddll wppaxp wppdaxp +! loaddll wpp386 wppd386 +! loaddll wlink wlink +! loaddll wlib wlibd +!endif + +# We need these variables in some bakefile-made rules: +WATCOM_CWD = $+ $(%cdrive):$(%cwd) $- + +### Conditionally set variables: ### + +PORTNAME = +!ifeq USE_GUI 0 +PORTNAME = base +!endif +!ifeq USE_GUI 1 +PORTNAME = msw +!endif +WXDEBUGFLAG = +!ifeq BUILD debug +!ifeq DEBUG_FLAG default +WXDEBUGFLAG = d +!endif +!endif +!ifeq DEBUG_FLAG 1 +WXDEBUGFLAG = d +!endif +WXUNICODEFLAG = +!ifeq UNICODE 1 +WXUNICODEFLAG = u +!endif +WXUNIVNAME = +!ifeq WXUNIV 1 +WXUNIVNAME = univ +!endif +WXDLLFLAG = +!ifeq SHARED 1 +WXDLLFLAG = dll +!endif +LIBTYPE_SUFFIX = +!ifeq SHARED 0 +LIBTYPE_SUFFIX = lib +!endif +!ifeq SHARED 1 +LIBTYPE_SUFFIX = dll +!endif +EXTRALIBS_FOR_BASE = +!ifeq MONOLITHIC 0 +EXTRALIBS_FOR_BASE = +!endif +!ifeq MONOLITHIC 1 +EXTRALIBS_FOR_BASE = +!endif +__DEBUGINFO_0 = +!ifeq BUILD debug +!ifeq DEBUG_INFO default +__DEBUGINFO_0 = -d2 +!endif +!endif +!ifeq BUILD release +!ifeq DEBUG_INFO default +__DEBUGINFO_0 = -d0 +!endif +!endif +!ifeq DEBUG_INFO 0 +__DEBUGINFO_0 = -d0 +!endif +!ifeq DEBUG_INFO 1 +__DEBUGINFO_0 = -d2 +!endif +__DEBUGINFO_1 = +!ifeq BUILD debug +!ifeq DEBUG_INFO default +__DEBUGINFO_1 = debug all +!endif +!endif +!ifeq BUILD release +!ifeq DEBUG_INFO default +__DEBUGINFO_1 = +!endif +!endif +!ifeq DEBUG_INFO 0 +__DEBUGINFO_1 = +!endif +!ifeq DEBUG_INFO 1 +__DEBUGINFO_1 = debug all +!endif +__OPTIMIZEFLAG_2 = +!ifeq BUILD debug +__OPTIMIZEFLAG_2 = -od +!endif +!ifeq BUILD release +__OPTIMIZEFLAG_2 = -ot -ox +!endif +__THREADSFLAG_5 = +!ifeq USE_THREADS 0 +__THREADSFLAG_5 = +!endif +!ifeq USE_THREADS 1 +__THREADSFLAG_5 = -bm +!endif +__RUNTIME_LIBS_6 = +!ifeq RUNTIME_LIBS dynamic +__RUNTIME_LIBS_6 = -br +!endif +!ifeq RUNTIME_LIBS static +__RUNTIME_LIBS_6 = +!endif +__RTTIFLAG_7 = +!ifeq USE_RTTI 0 +__RTTIFLAG_7 = +!endif +!ifeq USE_RTTI 1 +__RTTIFLAG_7 = -xr +!endif +__EXCEPTIONSFLAG_8 = +!ifeq USE_EXCEPTIONS 0 +__EXCEPTIONSFLAG_8 = +!endif +!ifeq USE_EXCEPTIONS 1 +__EXCEPTIONSFLAG_8 = -xs +!endif +__WXLIB_PROPGRID_p = +!ifeq MONOLITHIC 0 +__WXLIB_PROPGRID_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_propgrid.lib +!endif +__WXLIB_ADV_p = +!ifeq MONOLITHIC 0 +__WXLIB_ADV_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv.lib +!endif +__WXLIB_CORE_p = +!ifeq MONOLITHIC 0 +__WXLIB_CORE_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +__WXLIB_BASE_p = +!ifeq MONOLITHIC 0 +__WXLIB_BASE_p = & + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +__WXLIB_MONO_p = +!ifeq MONOLITHIC 1 +__WXLIB_MONO_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +__LIB_TIFF_p = +!ifeq USE_GUI 1 +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +__LIB_JPEG_p = +!ifeq USE_GUI 1 +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +__LIB_PNG_p = +!ifeq USE_GUI 1 +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +__GDIPLUS_LIB_p = +!ifeq USE_GDIPLUS 1 +__GDIPLUS_LIB_p = gdiplus.lib +!endif +__WXUNIV_DEFINE_p = +!ifeq WXUNIV 1 +__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__ +!endif +__DEBUG_DEFINE_p = +!ifeq BUILD debug +!ifeq DEBUG_FLAG default +__DEBUG_DEFINE_p = -d__WXDEBUG__ +!endif +!endif +!ifeq DEBUG_FLAG 1 +__DEBUG_DEFINE_p = -d__WXDEBUG__ +!endif +__EXCEPTIONS_DEFINE_p = +!ifeq USE_EXCEPTIONS 0 +__EXCEPTIONS_DEFINE_p = -dwxNO_EXCEPTIONS +!endif +__RTTI_DEFINE_p = +!ifeq USE_RTTI 0 +__RTTI_DEFINE_p = -dwxNO_RTTI +!endif +__THREAD_DEFINE_p = +!ifeq USE_THREADS 0 +__THREAD_DEFINE_p = -dwxNO_THREADS +!endif +__UNICODE_DEFINE_p = +!ifeq UNICODE 0 +__UNICODE_DEFINE_p = -dwxUSE_UNICODE=0 +!endif +!ifeq UNICODE 1 +__UNICODE_DEFINE_p = -d_UNICODE +!endif +__GFXCTX_DEFINE_p = +!ifeq USE_GDIPLUS 1 +__GFXCTX_DEFINE_p = -dwxUSE_GRAPHICS_CONTEXT=1 +!endif +__DLLFLAG_p = +!ifeq SHARED 1 +__DLLFLAG_p = -dWXUSINGDLL +!endif + +### Variables: ### + +WX_RELEASE_NODOT = 29 +COMPILER_PREFIX = wat +OBJS = & + $(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = & + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +PROPGRID_CXXFLAGS = $(__DEBUGINFO_0) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG_5) & + $(__RUNTIME_LIBS_6) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) & + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) & + $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) & + -i=.\..\..\include -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -i=. $(__DLLFLAG_p) & + -i=.\..\..\samples -dNOPCH $(__RTTIFLAG_7) $(__EXCEPTIONSFLAG_8) $(CPPFLAGS) & + $(CXXFLAGS) +PROPGRID_OBJECTS = & + $(OBJS)\propgrid_propgrid.obj & + $(OBJS)\propgrid_propgrid_minimal.obj & + $(OBJS)\propgrid_sampleprops.obj & + $(OBJS)\propgrid_tests.obj + + +all : $(OBJS) +$(OBJS) : + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all : .SYMBOLIC $(OBJS)\propgrid.exe + +clean : .SYMBOLIC + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.lbc del $(OBJS)\*.lbc + -if exist $(OBJS)\*.ilk del $(OBJS)\*.ilk + -if exist $(OBJS)\*.pch del $(OBJS)\*.pch + -if exist $(OBJS)\propgrid.exe del $(OBJS)\propgrid.exe + +$(OBJS)\propgrid.exe : $(PROPGRID_OBJECTS) $(OBJS)\propgrid_sample.res + @%create $(OBJS)\propgrid.lbc + @%append $(OBJS)\propgrid.lbc option quiet + @%append $(OBJS)\propgrid.lbc name $^@ + @%append $(OBJS)\propgrid.lbc option caseexact + @%append $(OBJS)\propgrid.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16' + @for %i in ($(PROPGRID_OBJECTS)) do @%append $(OBJS)\propgrid.lbc file %i + @for %i in ( $(__WXLIB_PROPGRID_p) $(__WXLIB_ADV_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\propgrid.lbc library %i + @%append $(OBJS)\propgrid.lbc option resource=$(OBJS)\propgrid_sample.res + @for %i in () do @%append $(OBJS)\propgrid.lbc option stack=%i + wlink @$(OBJS)\propgrid.lbc + +$(OBJS)\propgrid_propgrid.obj : .AUTODEPEND .\propgrid.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRID_CXXFLAGS) $< + +$(OBJS)\propgrid_propgrid_minimal.obj : .AUTODEPEND .\propgrid_minimal.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRID_CXXFLAGS) $< + +$(OBJS)\propgrid_sampleprops.obj : .AUTODEPEND .\sampleprops.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRID_CXXFLAGS) $< + +$(OBJS)\propgrid_tests.obj : .AUTODEPEND .\tests.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(PROPGRID_CXXFLAGS) $< + +$(OBJS)\propgrid_sample.res : .AUTODEPEND .\..\sample.rc + wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include -i=. $(__DLLFLAG_p) -i=.\..\..\samples -dNOPCH $< + diff --git a/samples/propgrid/propgrid.bkl b/samples/propgrid/propgrid.bkl new file mode 100644 index 0000000000..a12075b786 --- /dev/null +++ b/samples/propgrid/propgrid.bkl @@ -0,0 +1,21 @@ +<?xml version="1.0" ?> +<!-- $Id$ --> +<makefile> + + <include file="../../build/bakefiles/common_samples.bkl"/> + + <exe id="propgrid" template="wx_sample" template_append="wx_append"> + <sources> + propgrid.cpp + propgrid_minimal.cpp + sampleprops.cpp + tests.cpp + </sources> + <wx-lib>propgrid</wx-lib> + <wx-lib>adv</wx-lib> + <wx-lib>core</wx-lib> + <wx-lib>base</wx-lib> + <win32-res>../sample.rc</win32-res> + </exe> + +</makefile> diff --git a/samples/propgrid/propgrid.cpp b/samples/propgrid/propgrid.cpp new file mode 100644 index 0000000000..362fb864f6 --- /dev/null +++ b/samples/propgrid/propgrid.cpp @@ -0,0 +1,3137 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/propgrid.cpp +// Purpose: wxPropertyGrid sample +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// +// +// NOTES +// +// * Examples of custom property classes are in sampleprops.cpp. +// +// * Additional ones can be found below. +// +// * Currently there is no example of a custom property editor. However, +// SpinCtrl editor sample is well-commented. It can be found in +// contrib/src/propgrid/advprops.cpp. +// +// * To find code that populates the grid with properties, search for +// string "::Populate". +// +// * To find code that handles property grid changes, search for string +// "::OnPropertyGridChange". +// +// * At the end of file there is example code for using the owner-drawn combo +// box independently outside the wxPropertyGrid. +// +// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +// for all others, include the necessary headers (this file is usually all you +// need because it includes almost all "standard" wxWidgets headers) +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#include <wx/numdlg.h> + +// ----------------------------------------------------------------------- + + +// Main propertygrid header. +#include <wx/propgrid/propgrid.h> + +// Extra property classes. +#include <wx/propgrid/advprops.h> + +// This defines wxPropertyGridManager. +#include <wx/propgrid/manager.h> + +#include "propgrid.h" +#include "sampleprops.h" + +#if wxUSE_DATEPICKCTRL + #include <wx/datectrl.h> +#endif + +#include <wx/artprov.h> + + +// ----------------------------------------------------------------------- +// wxSampleMultiButtonEditor +// A sample editor class that has multiple buttons. +// ----------------------------------------------------------------------- + +class wxSampleMultiButtonEditor : public wxPGTextCtrlEditor +{ + WX_PG_DECLARE_EDITOR_CLASS(wxSampleMultiButtonEditor) +public: + wxSampleMultiButtonEditor() {} + virtual ~wxSampleMultiButtonEditor() {} + + wxPG_DECLARE_CREATECONTROLS + virtual bool OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const; + +}; + +WX_PG_IMPLEMENT_EDITOR_CLASS(SampleMultiButtonEditor,wxSampleMultiButtonEditor, + wxPGTextCtrlEditor) + + +wxPGWindowList wxSampleMultiButtonEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + // Create and populate buttons-subwindow + wxPGMultiButton* buttons = new wxPGMultiButton( propGrid, sz ); + + buttons->Add( "..." ); + buttons->Add( "A" ); +#if wxUSE_BMPBUTTON + buttons->Add( wxArtProvider::GetBitmap(wxART_FOLDER) ); +#endif + + // Create the 'primary' editor control (textctrl in this case) + wxPGWindowList wndList = wxPGTextCtrlEditor::CreateControls + ( propGrid, property, pos, buttons->GetPrimarySize() ); + + // Finally, move buttons-subwindow to correct position and make sure + // returned wxPGWindowList contains our custom button list. + buttons->FinalizePosition(pos); + + wndList.SetSecondary( buttons ); + return wndList; +} + +bool wxSampleMultiButtonEditor::OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const +{ + if ( event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) + { + wxPGMultiButton* buttons = (wxPGMultiButton*) propGrid->GetEditorControlSecondary(); + + if ( event.GetId() == buttons->GetButtonId(1) ) + { + wxMessageBox(wxT("Second button was pressed")); + return true; + } + if ( event.GetId() == buttons->GetButtonId(2) ) + { + wxMessageBox(wxT("Third button was pressed")); + return true; + } + } + return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event); +} + +// ----------------------------------------------------------------------- +// Validator for wxValidator use sample +// ----------------------------------------------------------------------- + +#if wxUSE_VALIDATORS + +// wxValidator for testing + +class wxInvalidWordValidator : public wxValidator +{ +public: + + wxInvalidWordValidator( const wxString& invalidWord ) + : wxValidator(), m_invalidWord(invalidWord) + { + } + + virtual wxObject* Clone() const + { + return new wxInvalidWordValidator(m_invalidWord); + } + + virtual bool Validate(wxWindow* WXUNUSED(parent)) + { + wxTextCtrl* tc = wxDynamicCast(GetWindow(), wxTextCtrl); + wxCHECK_MSG(tc, true, wxT("validator window must be wxTextCtrl")); + + wxString val = tc->GetValue(); + + if ( val.find(m_invalidWord) == wxString::npos ) + return true; + + ::wxMessageBox(wxString::Format(wxT("%s is not allowed word"),m_invalidWord.c_str()), + wxT("Validation Failure")); + + return false; + } + +private: + wxString m_invalidWord; +}; + +#endif // wxUSE_VALIDATORS + +// ----------------------------------------------------------------------- +// AdvImageFile Property +// ----------------------------------------------------------------------- + +class wxMyImageInfo; + +WX_DECLARE_OBJARRAY(wxMyImageInfo, wxArrayMyImageInfo); + +class wxMyImageInfo +{ +public: + wxString m_path; + wxBitmap* m_pThumbnail1; // smaller thumbnail + wxBitmap* m_pThumbnail2; // larger thumbnail + + wxMyImageInfo ( const wxString& str ) + { + m_path = str; + m_pThumbnail1 = (wxBitmap*) NULL; + m_pThumbnail2 = (wxBitmap*) NULL; + } + virtual ~wxMyImageInfo() + { + if ( m_pThumbnail1 ) + delete m_pThumbnail1; + if ( m_pThumbnail2 ) + delete m_pThumbnail2; + } + +}; + + +#include <wx/arrimpl.cpp> +WX_DEFINE_OBJARRAY(wxArrayMyImageInfo); + +wxArrayMyImageInfo g_myImageArray; + + +// Preferred thumbnail height. +#define PREF_THUMBNAIL_HEIGHT 64 + + +wxPGChoices wxAdvImageFileProperty::ms_choices; + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxAdvImageFileProperty,wxFileProperty, + wxString,const wxString&,ChoiceAndButton) + + +wxAdvImageFileProperty::wxAdvImageFileProperty( const wxString& label, + const wxString& name, + const wxString& value) + : wxFileProperty(label,name,value) +{ + m_wildcard = wxPGGetDefaultImageWildcard(); + + m_index = -1; + + m_pImage = (wxImage*) NULL; + + // Only show names. + m_flags &= ~(wxPG_PROP_SHOW_FULL_FILENAME); +} + +wxAdvImageFileProperty::~wxAdvImageFileProperty () +{ + // Delete old image + if ( m_pImage ) + { + delete m_pImage; + m_pImage = (wxImage*) NULL; + } +} + +void wxAdvImageFileProperty::OnSetValue() +{ + wxFileProperty::OnSetValue(); + + // Delete old image + if ( m_pImage ) + { + delete m_pImage; + m_pImage = (wxImage*) NULL; + } + + wxString imagename = GetValueAsString(0); + + if ( imagename.length() ) + { + size_t prevCount = g_myImageArray.GetCount(); + int index = ms_choices.Index(imagename); + + // If not in table, add now. + if ( index == wxNOT_FOUND ) + { + ms_choices.Add( imagename ); + g_myImageArray.Add( new wxMyImageInfo( m_filename.GetFullPath() ) ); + + index = g_myImageArray.GetCount() - 1; + } + + // If no thumbnail ready, then need to load image. + if ( !g_myImageArray[index].m_pThumbnail2 ) + { + // Load if file exists. + if ( m_filename.FileExists() ) + m_pImage = new wxImage( m_filename.GetFullPath() ); + } + + m_index = index; + + wxPropertyGrid* pg = GetGrid(); + wxWindow* control = pg->GetEditorControl(); + + if ( pg->GetSelection() == this && control ) + { + wxString name = GetValueAsString(0); + + if ( g_myImageArray.GetCount() != prevCount ) + { + wxASSERT( g_myImageArray.GetCount() == (prevCount+1) ); + + // Add to the control's array. + // (should be added to own array earlier) + + if ( control ) + GetEditorClass()->InsertItem(control, name, -1); + } + + if ( control ) + GetEditorClass()->UpdateControl(this, control); + } + } + else + m_index = -1; +} + +int wxAdvImageFileProperty::GetChoiceInfo( wxPGChoiceInfo* choiceinfo ) +{ + if ( choiceinfo ) + choiceinfo->m_choices = &ms_choices; + + return m_index; +} + +bool wxAdvImageFileProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(argFlags) ) const +{ + wxASSERT( number >= 0 ); + return StringToValue( variant, ms_choices.GetLabel(number), wxPG_FULL_VALUE ); +} + +bool wxAdvImageFileProperty::OnEvent( wxPropertyGrid* propgrid, wxWindow* primary, + wxEvent& event ) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + return wxFileProperty::OnEvent(propgrid,primary,event); + } + return false; +} + +wxSize wxAdvImageFileProperty::OnMeasureImage( int item ) const +{ + if ( item == -1 ) + return wxPG_DEFAULT_IMAGE_SIZE; + + return wxSize(PREF_THUMBNAIL_HEIGHT,PREF_THUMBNAIL_HEIGHT); +} + +void wxAdvImageFileProperty::LoadThumbnails( size_t index ) +{ + wxMyImageInfo& mii = g_myImageArray[index]; + + if ( !mii.m_pThumbnail2 ) + { + + if ( !m_pImage || !m_pImage->Ok() || + m_filename != mii.m_path + ) + { + if ( m_pImage ) + delete m_pImage; + m_pImage = new wxImage( mii.m_path ); + } + + if ( m_pImage && m_pImage->Ok() ) + { + int im_wid = m_pImage->GetWidth(); + int im_hei = m_pImage->GetHeight(); + if ( im_hei > PREF_THUMBNAIL_HEIGHT ) + { + // TNW = (TNH*IW)/IH + im_wid = (PREF_THUMBNAIL_HEIGHT*m_pImage->GetWidth())/m_pImage->GetHeight(); + im_hei = PREF_THUMBNAIL_HEIGHT; + } + + m_pImage->Rescale( im_wid, im_hei ); + + mii.m_pThumbnail2 = new wxBitmap( *m_pImage ); + + wxSize cis = GetParentState()->GetGrid()->GetImageSize(); + m_pImage->Rescale ( cis.x, cis.y ); + + mii.m_pThumbnail1 = new wxBitmap( *m_pImage ); + + } + + if ( m_pImage ) + { + delete m_pImage; + m_pImage = (wxImage*) NULL; + } + } +} + +void wxAdvImageFileProperty::OnCustomPaint( wxDC& dc, + const wxRect& rect, + wxPGPaintData& pd ) +{ + int index = m_index; + if ( pd.m_choiceItem >= 0 ) + index = pd.m_choiceItem; + + //wxLogDebug(wxT("%i"),index); + + if ( index >= 0 ) + { + LoadThumbnails(index); + + // Is this a measure item call? + if ( rect.x < 0 ) + { + // Variable height + //pd.m_drawnHeight = PREF_THUMBNAIL_HEIGHT; + wxBitmap* pBitmap = (wxBitmap*)g_myImageArray[index].m_pThumbnail2; + if ( pBitmap ) + pd.m_drawnHeight = pBitmap->GetHeight(); + else + pd.m_drawnHeight = 16; + return; + } + + // Draw the thumbnail + + wxBitmap* pBitmap; + + if ( pd.m_choiceItem >= 0 ) + pBitmap = (wxBitmap*)g_myImageArray[index].m_pThumbnail2; + else + pBitmap = (wxBitmap*)g_myImageArray[index].m_pThumbnail1; + + if ( pBitmap ) + { + dc.DrawBitmap ( *pBitmap, rect.x, rect.y, FALSE ); + + // Tell the caller how wide we drew. + pd.m_drawnWidth = pBitmap->GetWidth(); + + return; + } + } + + // No valid file - just draw a white box. + dc.SetBrush ( *wxWHITE_BRUSH ); + dc.DrawRectangle ( rect ); +} + + +// ----------------------------------------------------------------------- +// wxVectorProperty +// ----------------------------------------------------------------------- + +// See propgridsample.h for wxVector3f class + +WX_PG_IMPLEMENT_VARIANT_DATA(wxVector3fVariantData, wxVector3f) + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxVectorProperty,wxPGProperty, + wxVector3f,const wxVector3f&,TextCtrl) + + +wxVectorProperty::wxVectorProperty( const wxString& label, + const wxString& name, + const wxVector3f& value ) + : wxPGProperty(label,name) +{ + SetValue( wxVector3fToVariant(value) ); + AddChild( new wxFloatProperty(wxT("X"),wxPG_LABEL,value.x) ); + AddChild( new wxFloatProperty(wxT("Y"),wxPG_LABEL,value.y) ); + AddChild( new wxFloatProperty(wxT("Z"),wxPG_LABEL,value.z) ); +} + +wxVectorProperty::~wxVectorProperty() { } + +void wxVectorProperty::RefreshChildren() +{ + if ( !GetChildCount() ) return; + wxVector3f& vector = wxVector3fFromVariant(m_value); + Item(0)->SetValue( vector.x ); + Item(1)->SetValue( vector.y ); + Item(2)->SetValue( vector.z ); +} + +void wxVectorProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + wxVector3f& vector = wxVector3fFromVariant(thisValue); + switch ( childIndex ) + { + case 0: vector.x = childValue.GetDouble(); break; + case 1: vector.y = childValue.GetDouble(); break; + case 2: vector.z = childValue.GetDouble(); break; + } +} + + +// ----------------------------------------------------------------------- +// wxTriangleProperty +// ----------------------------------------------------------------------- + +// See propgridsample.h for wxTriangle class + +WX_PG_IMPLEMENT_VARIANT_DATA(wxTriangleVariantData, wxTriangle) + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxTriangleProperty,wxPGProperty, + wxTriangle,const wxTriangle&,TextCtrl) + + +wxTriangleProperty::wxTriangleProperty( const wxString& label, + const wxString& name, + const wxTriangle& value) + : wxPGProperty(label,name) +{ + SetValue( wxTriangleToVariant(value) ); + AddChild( new wxVectorProperty(wxT("A"),wxPG_LABEL,value.a) ); + AddChild( new wxVectorProperty(wxT("B"),wxPG_LABEL,value.b) ); + AddChild( new wxVectorProperty(wxT("C"),wxPG_LABEL,value.c) ); +} + +wxTriangleProperty::~wxTriangleProperty() { } + +void wxTriangleProperty::RefreshChildren() +{ + if ( !GetChildCount() ) return; + wxTriangle& triangle = wxTriangleFromVariant(m_value); + Item(0)->SetValue( wxVector3fToVariant(triangle.a) ); + Item(1)->SetValue( wxVector3fToVariant(triangle.b) ); + Item(2)->SetValue( wxVector3fToVariant(triangle.c) ); +} + +void wxTriangleProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + wxTriangle& triangle = wxTriangleFromVariant(thisValue); + wxVector3f& vector = wxVector3fFromVariant(childValue); + switch ( childIndex ) + { + case 0: triangle.a = vector; break; + case 1: triangle.b = vector; break; + case 2: triangle.c = vector; break; + } +} + + +// ----------------------------------------------------------------------- +// wxSingleChoiceDialogAdapter (wxPGEditorDialogAdapter sample) +// ----------------------------------------------------------------------- + +class wxSingleChoiceDialogAdapter : public wxPGEditorDialogAdapter +{ +public: + + wxSingleChoiceDialogAdapter( const wxPGChoices& choices ) + : wxPGEditorDialogAdapter(), m_choices(choices) + { + } + + virtual bool DoShowDialog( wxPropertyGrid* WXUNUSED(propGrid), + wxPGProperty* WXUNUSED(property) ) + { + wxString s = ::wxGetSingleChoice(wxT("Message"), + wxT("Caption"), + m_choices.GetLabels()); + if ( s.length() ) + { + SetValue(s); + return true; + } + + return false; + } + +protected: + const wxPGChoices& m_choices; +}; + + +class SingleChoiceProperty : public wxStringProperty +{ +public: + + SingleChoiceProperty( const wxString& label, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ) + : wxStringProperty(label, name, value) + { + // Prepare choices + m_choices.Add(wxT("Cat")); + m_choices.Add(wxT("Dog")); + m_choices.Add(wxT("Gibbon")); + m_choices.Add(wxT("Otter")); + } + + // Set editor to have button + virtual const wxPGEditor* DoGetEditorClass() const + { + return wxPG_EDITOR(TextCtrlAndButton); + } + + // Set what happens on button click + virtual wxPGEditorDialogAdapter* GetEditorDialog() const + { + return new wxSingleChoiceDialogAdapter(m_choices); + } + +protected: + wxPGChoices m_choices; +}; + +// ----------------------------------------------------------------------- +// Menu IDs +// ----------------------------------------------------------------------- + +enum +{ + PGID = 1, + TCID, + ID_ABOUT, + ID_QUIT, + ID_APPENDPROP, + ID_APPENDCAT, + ID_INSERTPROP, + ID_INSERTCAT, + ID_ENABLE, + ID_HIDE, + ID_DELETE, + ID_DELETER, + ID_DELETEALL, + ID_UNSPECIFY, + ID_ITERATE1, + ID_ITERATE2, + ID_ITERATE3, + ID_ITERATE4, + ID_CLEARMODIF, + ID_FREEZE, + ID_DUMPLIST, + ID_COLOURSCHEME1, + ID_COLOURSCHEME2, + ID_COLOURSCHEME3, + ID_CATCOLOURS, + ID_SETCOLOUR, + ID_STATICLAYOUT, + ID_CLEAR, + ID_POPULATE1, + ID_POPULATE2, + ID_COLLAPSE, + ID_COLLAPSEALL, + ID_GETVALUES, + ID_SETVALUES, + ID_SETVALUES2, + ID_RUNTESTFULL, + ID_RUNTESTPARTIAL, + ID_FITCOLUMNS, + ID_CHANGEFLAGSITEMS, + ID_TESTINSERTCHOICE, + ID_TESTDELETECHOICE, + ID_INSERTPAGE, + ID_REMOVEPAGE, + ID_SETSPINCTRLEDITOR, + ID_SETPROPERTYVALUE, + ID_TESTREPLACE, + ID_SETCOLUMNS, + ID_TESTXRC, + ID_ENABLECOMMONVALUES, + ID_SELECTSTYLE, + ID_SAVESTATE, + ID_RESTORESTATE, + ID_RUNMINIMAL +}; + +// ----------------------------------------------------------------------- +// Event table +// ----------------------------------------------------------------------- + +BEGIN_EVENT_TABLE(FormMain, wxFrame) + EVT_IDLE(FormMain::OnIdle) + EVT_MOVE(FormMain::OnMove) + EVT_SIZE(FormMain::OnResize) + + // This occurs when a property is selected + EVT_PG_SELECTED( PGID, FormMain::OnPropertyGridSelect ) + // This occurs when a property value changes + EVT_PG_CHANGED( PGID, FormMain::OnPropertyGridChange ) + // This occurs just prior a property value is changed + EVT_PG_CHANGING( PGID, FormMain::OnPropertyGridChanging ) + // This occurs when a mouse moves over another property + EVT_PG_HIGHLIGHTED( PGID, FormMain::OnPropertyGridHighlight ) + // This occurs when mouse is right-clicked. + EVT_PG_RIGHT_CLICK( PGID, FormMain::OnPropertyGridItemRightClick ) + // This occurs when mouse is double-clicked. + EVT_PG_DOUBLE_CLICK( PGID, FormMain::OnPropertyGridItemDoubleClick ) + // This occurs when propgridmanager's page changes. + EVT_PG_PAGE_CHANGED( PGID, FormMain::OnPropertyGridPageChange ) + // This occurs when property's editor button (if any) is clicked. + EVT_BUTTON( PGID, FormMain::OnPropertyGridButtonClick ) + + EVT_PG_ITEM_COLLAPSED( PGID, FormMain::OnPropertyGridItemCollapse ) + EVT_PG_ITEM_EXPANDED( PGID, FormMain::OnPropertyGridItemExpand ) + + EVT_TEXT( PGID, FormMain::OnPropertyGridTextUpdate ) + + // + // Rest of the events are not property grid specific + EVT_KEY_DOWN( FormMain::OnPropertyGridKeyEvent ) + EVT_KEY_UP( FormMain::OnPropertyGridKeyEvent ) + + EVT_MENU( ID_APPENDPROP, FormMain::OnAppendPropClick ) + EVT_MENU( ID_APPENDCAT, FormMain::OnAppendCatClick ) + EVT_MENU( ID_INSERTPROP, FormMain::OnInsertPropClick ) + EVT_MENU( ID_INSERTCAT, FormMain::OnInsertCatClick ) + EVT_MENU( ID_DELETE, FormMain::OnDelPropClick ) + EVT_MENU( ID_DELETER, FormMain::OnDelPropRClick ) + EVT_MENU( ID_UNSPECIFY, FormMain::OnMisc ) + EVT_MENU( ID_DELETEALL, FormMain::OnClearClick ) + EVT_MENU( ID_ENABLE, FormMain::OnEnableDisable ) + EVT_MENU( ID_HIDE, FormMain::OnHideShow ) + EVT_MENU( ID_ITERATE1, FormMain::OnIterate1Click ) + EVT_MENU( ID_ITERATE2, FormMain::OnIterate2Click ) + EVT_MENU( ID_ITERATE3, FormMain::OnIterate3Click ) + EVT_MENU( ID_ITERATE4, FormMain::OnIterate4Click ) + EVT_MENU( ID_SETCOLOUR, FormMain::OnMisc ) + EVT_MENU( ID_CLEARMODIF, FormMain::OnClearModifyStatusClick ) + EVT_MENU( ID_FREEZE, FormMain::OnFreezeClick ) + EVT_MENU( ID_DUMPLIST, FormMain::OnDumpList ) + + EVT_MENU( ID_COLOURSCHEME1, FormMain::OnColourScheme ) + EVT_MENU( ID_COLOURSCHEME2, FormMain::OnColourScheme ) + EVT_MENU( ID_COLOURSCHEME3, FormMain::OnColourScheme ) + EVT_MENU( ID_COLOURSCHEME4, FormMain::OnColourScheme ) + + EVT_MENU( ID_ABOUT, FormMain::OnAbout ) + EVT_MENU( ID_QUIT, FormMain::OnCloseClick ) + + EVT_MENU( ID_CATCOLOURS, FormMain::OnCatColours ) + EVT_MENU( ID_SETCOLUMNS, FormMain::OnSetColumns ) + EVT_MENU( ID_TESTXRC, FormMain::OnTestXRC ) + EVT_MENU( ID_ENABLECOMMONVALUES, FormMain::OnEnableCommonValues ) + EVT_MENU( ID_SELECTSTYLE, FormMain::OnSelectStyle ) + + EVT_MENU( ID_STATICLAYOUT, FormMain::OnMisc ) + EVT_MENU( ID_CLEAR, FormMain::OnMisc ) + EVT_MENU( ID_COLLAPSE, FormMain::OnMisc ) + EVT_MENU( ID_COLLAPSEALL, FormMain::OnMisc ) + + EVT_MENU( ID_POPULATE1, FormMain::OnPopulateClick ) + EVT_MENU( ID_POPULATE2, FormMain::OnPopulateClick ) + + EVT_MENU( ID_GETVALUES, FormMain::OnMisc ) + EVT_MENU( ID_SETVALUES, FormMain::OnMisc ) + EVT_MENU( ID_SETVALUES2, FormMain::OnMisc ) + + EVT_MENU( ID_FITCOLUMNS, FormMain::OnFitColumnsClick ) + + EVT_MENU( ID_CHANGEFLAGSITEMS, FormMain::OnChangeFlagsPropItemsClick ) + + EVT_MENU( ID_RUNTESTFULL, FormMain::OnMisc ) + EVT_MENU( ID_RUNTESTPARTIAL, FormMain::OnMisc ) + + EVT_MENU( ID_TESTINSERTCHOICE, FormMain::OnInsertChoice ) + EVT_MENU( ID_TESTDELETECHOICE, FormMain::OnDeleteChoice ) + + EVT_MENU( ID_INSERTPAGE, FormMain::OnInsertPage ) + EVT_MENU( ID_REMOVEPAGE, FormMain::OnRemovePage ) + + EVT_MENU( ID_SAVESTATE, FormMain::OnSaveState ) + EVT_MENU( ID_RESTORESTATE, FormMain::OnRestoreState ) + + EVT_MENU( ID_SETSPINCTRLEDITOR, FormMain::OnSetSpinCtrlEditorClick ) + EVT_MENU( ID_TESTREPLACE, FormMain::OnTestReplaceClick ) + EVT_MENU( ID_SETPROPERTYVALUE, FormMain::OnSetPropertyValue ) + + EVT_MENU( ID_RUNMINIMAL, FormMain::OnRunMinimalClick ) + + EVT_CONTEXT_MENU( FormMain::OnContextMenu ) +END_EVENT_TABLE() + +// ----------------------------------------------------------------------- + +void FormMain::OnMove( wxMoveEvent& event ) +{ + if ( !m_pPropGridManager ) + { + // this check is here so the frame layout can be tested + // without creating propertygrid + event.Skip(); + return; + } + + // Update position properties + int x, y; + GetPosition(&x,&y); + + wxPGProperty* id; + + // Must check if properties exist (as they may be deleted). + + // Using m_pPropGridManager, we can scan all pages automatically. + id = m_pPropGridManager->GetPropertyByName( wxT("X") ); + if ( id ) + m_pPropGridManager->SetPropertyValue( id, x ); + + id = m_pPropGridManager->GetPropertyByName( wxT("Y") ); + if ( id ) + m_pPropGridManager->SetPropertyValue( id, y ); + + id = m_pPropGridManager->GetPropertyByName( wxT("Position") ); + if ( id ) + m_pPropGridManager->SetPropertyValue( id, wxPoint(x,y) ); + + // Should always call event.Skip() in frame's MoveEvent handler + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnResize( wxSizeEvent& event ) +{ + if ( !m_pPropGridManager ) + { + // this check is here so the frame layout can be tested + // without creating propertygrid + event.Skip(); + return; + } + + // Update size properties + int w, h; + GetSize(&w,&h); + + wxPGProperty* id; + wxPGProperty* p; + + // Must check if properties exist (as they may be deleted). + + // Using m_pPropGridManager, we can scan all pages automatically. + p = m_pPropGridManager->GetPropertyByName( wxT("Width") ); + if ( p && !p->IsValueUnspecified() ) + m_pPropGridManager->SetPropertyValue( p, w ); + + p = m_pPropGridManager->GetPropertyByName( wxT("Height") ); + if ( p && !p->IsValueUnspecified() ) + m_pPropGridManager->SetPropertyValue( p, h ); + + id = m_pPropGridManager->GetPropertyByName ( wxT("Size") ); + if ( id ) + m_pPropGridManager->SetPropertyValue( id, wxSize(w,h) ); + + // Should always call event.Skip() in frame's SizeEvent handler + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridChanging( wxPropertyGridEvent& event ) +{ + wxPGProperty* p = event.GetProperty(); + + if ( p->GetName() == wxT("Font") ) + { + int res = + wxMessageBox(wxString::Format(wxT("'%s' is about to change (to variant of type '%s')\n\nAllow or deny?"), + p->GetName().c_str(),event.GetValue().GetType().c_str()), + wxT("Testing wxEVT_PG_CHANGING"), wxYES_NO, m_pPropGridManager); + + if ( res == wxNO ) + { + wxASSERT(event.CanVeto()); + + event.Veto(); + + // Since we ask a question, it is better if we omit any validation + // failure behavior. + event.SetValidationFailureBehavior(0); + } + } +} + +// +// Note how we use three types of value getting in this method: +// A) event.GetPropertyValueAsXXX +// B) event.GetPropertValue, and then variant's GetXXX +// C) grid's GetPropertyValueAsXXX(id) +// +void FormMain::OnPropertyGridChange( wxPropertyGridEvent& event ) +{ + wxPGProperty* property = event.GetProperty(); + + const wxString& name = property->GetName(); + wxVariant value = property->GetValue(); + + // Don't handle 'unspecified' values + if ( value.IsNull() ) + return; + + // Some settings are disabled outside Windows platform + if ( name == wxT("X") ) + SetSize ( m_pPropGridManager->GetPropertyValueAsInt(property), -1, -1, -1, wxSIZE_USE_EXISTING ); + else if ( name == wxT("Y") ) + // wxPGVariantToInt is safe long int value getter + SetSize ( -1, wxPGVariantToInt(value), -1, -1, wxSIZE_USE_EXISTING ); + else if ( name == wxT("Width") ) + SetSize ( -1, -1, m_pPropGridManager->GetPropertyValueAsInt(property), -1, wxSIZE_USE_EXISTING ); + else if ( name == wxT("Height") ) + SetSize ( -1, -1, -1, wxPGVariantToInt(value), wxSIZE_USE_EXISTING ); + else if ( name == wxT("Label") ) + { + SetTitle ( m_pPropGridManager->GetPropertyValueAsString(property) ); + } + else if ( name == wxT("Password") ) + { + static int pwdMode = 0; + + //m_pPropGridManager->SetPropertyAttribute(property, wxPG_STRING_PASSWORD, (long)pwdMode); + + pwdMode++; + pwdMode &= 1; + } + else + if ( name == wxT("Font") ) + { + wxFont& font = *wxDynamicCast(m_pPropGridManager->GetPropertyValueAsWxObjectPtr(property), wxFont); + wxASSERT( &font && font.Ok() ); + + m_pPropGridManager->SetFont( font ); + } + else + if ( name == wxT("Margin Colour") ) + { + wxColourPropertyValue& cpv = *wxGetVariantCast(value,wxColourPropertyValue); + m_pPropGridManager->GetGrid()->SetMarginColour ( cpv.m_colour ); + } + else if ( name == wxT("Cell Colour") ) + { + wxColourPropertyValue* cpv = wxGetVariantCast(value,wxColourPropertyValue); + wxASSERT( cpv ); + m_pPropGridManager->GetGrid()->SetCellBackgroundColour( cpv->m_colour ); + } + else if ( name == wxT("Line Colour") ) + { + wxColourPropertyValue* cpv = wxGetVariantCast(value,wxColourPropertyValue); + wxASSERT( cpv ); + m_pPropGridManager->GetGrid()->SetLineColour( cpv->m_colour ); + } + else if ( name == wxT("Cell Text Colour") ) + { + wxColourPropertyValue* cpv = wxGetVariantCast(value,wxColourPropertyValue); + wxASSERT( cpv ); + m_pPropGridManager->GetGrid()->SetCellTextColour( cpv->m_colour ); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridSelect( wxPropertyGridEvent& event ) +{ + wxPGProperty* property = event.GetProperty(); + if ( property ) + { + m_itemEnable->Enable( TRUE ); + if ( property->IsEnabled() ) + m_itemEnable->SetItemLabel( wxT("Disable") ); + else + m_itemEnable->SetItemLabel( wxT("Enable") ); + } + else + { + m_itemEnable->Enable( FALSE ); + } + +#if wxUSE_STATUSBAR + wxPGProperty* prop = event.GetProperty(); + wxStatusBar* sb = GetStatusBar(); + if ( prop ) + { + wxString text(wxT("Selected: ")); + text += m_pPropGridManager->GetPropertyLabel( prop ); + sb->SetStatusText ( text ); + } +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridPageChange( wxPropertyGridEvent& WXUNUSED(event) ) +{ +#if wxUSE_STATUSBAR + wxStatusBar* sb = GetStatusBar(); + wxString text(wxT("Page Changed: ")); + text += m_pPropGridManager->GetPageName(m_pPropGridManager->GetSelectedPage()); + sb->SetStatusText( text ); +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridHighlight( wxPropertyGridEvent& WXUNUSED(event) ) +{ +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridItemRightClick( wxPropertyGridEvent& event ) +{ +#if wxUSE_STATUSBAR + wxPGProperty* prop = event.GetProperty(); + wxStatusBar* sb = GetStatusBar(); + if ( prop ) + { + wxString text(wxT("Right-clicked: ")); + text += prop->GetLabel(); + text += wxT(", name="); + text += m_pPropGridManager->GetPropertyName(prop); + sb->SetStatusText( text ); + } + else + { + sb->SetStatusText( wxEmptyString ); + } +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridItemDoubleClick( wxPropertyGridEvent& event ) +{ +#if wxUSE_STATUSBAR + wxPGProperty* prop = event.GetProperty(); + wxStatusBar* sb = GetStatusBar(); + if ( prop ) + { + wxString text(wxT("Double-clicked: ")); + text += prop->GetLabel(); + text += wxT(", name="); + text += m_pPropGridManager->GetPropertyName(prop); + sb->SetStatusText ( text ); + } + else + { + sb->SetStatusText ( wxEmptyString ); + } +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridButtonClick ( wxCommandEvent& ) +{ +#if wxUSE_STATUSBAR + wxPGProperty* prop = m_pPropGridManager->GetSelectedProperty(); + wxStatusBar* sb = GetStatusBar(); + if ( prop ) + { + wxString text(wxT("Button clicked: ")); + text += m_pPropGridManager->GetPropertyLabel(prop); + text += wxT(", name="); + text += m_pPropGridManager->GetPropertyName(prop); + sb->SetStatusText( text ); + } + else + { + ::wxMessageBox(wxT("SHOULD NOT HAPPEN!!!")); + } +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridItemCollapse( wxPropertyGridEvent& ) +{ + wxLogDebug(wxT("Item was Collapsed")); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridItemExpand( wxPropertyGridEvent& ) +{ + wxLogDebug(wxT("Item was Expanded")); +} + +// ----------------------------------------------------------------------- + +// EVT_TEXT handling +void FormMain::OnPropertyGridTextUpdate( wxCommandEvent& event ) +{ + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPropertyGridKeyEvent( wxKeyEvent& WXUNUSED(event) ) +{ + // Occurs on wxGTK mostly, but not wxMSW. +} + +// ----------------------------------------------------------------------- + +void FormMain::OnLabelTextChange( wxCommandEvent& WXUNUSED(event) ) +{ +// Uncomment following to allow property label modify in real-time +// wxPGProperty& p = m_pPropGridManager->GetGrid()->GetSelection(); +// if ( !p.IsOk() ) return; +// m_pPropGridManager->SetPropertyLabel( p, m_tcPropLabel->DoGetValue() ); +} + +// ----------------------------------------------------------------------- + +static const wxChar* _fs_windowstyle_labels[] = { + wxT("wxSIMPLE_BORDER"), + wxT("wxDOUBLE_BORDER"), + wxT("wxSUNKEN_BORDER"), + wxT("wxRAISED_BORDER"), + wxT("wxNO_BORDER"), + wxT("wxTRANSPARENT_WINDOW"), + wxT("wxTAB_TRAVERSAL"), + wxT("wxWANTS_CHARS"), +#if wxNO_FULL_REPAINT_ON_RESIZE + wxT("wxNO_FULL_REPAINT_ON_RESIZE"), +#endif + wxT("wxVSCROLL"), + wxT("wxALWAYS_SHOW_SB"), + wxT("wxCLIP_CHILDREN"), +#if wxFULL_REPAINT_ON_RESIZE + wxT("wxFULL_REPAINT_ON_RESIZE"), +#endif + (const wxChar*) NULL // terminator is always needed +}; + +static const long _fs_windowstyle_values[] = { + wxSIMPLE_BORDER, + wxDOUBLE_BORDER, + wxSUNKEN_BORDER, + wxRAISED_BORDER, + wxNO_BORDER, + wxTRANSPARENT_WINDOW, + wxTAB_TRAVERSAL, + wxWANTS_CHARS, +#if wxNO_FULL_REPAINT_ON_RESIZE + wxNO_FULL_REPAINT_ON_RESIZE, +#endif + wxVSCROLL, + wxALWAYS_SHOW_SB, + wxCLIP_CHILDREN, +#if wxFULL_REPAINT_ON_RESIZE + wxFULL_REPAINT_ON_RESIZE +#endif +}; + +static const wxChar* _fs_framestyle_labels[] = { + wxT("wxCAPTION"), + wxT("wxMINIMIZE"), + wxT("wxMAXIMIZE"), + wxT("wxCLOSE_BOX"), + wxT("wxSTAY_ON_TOP"), + wxT("wxSYSTEM_MENU"), + wxT("wxRESIZE_BORDER"), + wxT("wxFRAME_TOOL_WINDOW"), + wxT("wxFRAME_NO_TASKBAR"), + wxT("wxFRAME_FLOAT_ON_PARENT"), + wxT("wxFRAME_SHAPED"), + (const wxChar*) NULL +}; + +static const long _fs_framestyle_values[] = { + wxCAPTION, + wxMINIMIZE, + wxMAXIMIZE, + wxCLOSE_BOX, + wxSTAY_ON_TOP, + wxSYSTEM_MENU, + wxRESIZE_BORDER, + wxFRAME_TOOL_WINDOW, + wxFRAME_NO_TASKBAR, + wxFRAME_FLOAT_ON_PARENT, + wxFRAME_SHAPED +}; + +// ----------------------------------------------------------------------- + +void FormMain::OnTestXRC(wxCommandEvent& WXUNUSED(event)) +{ + wxMessageBox(wxT("Sorrt, not yet implemented")); +} + +void FormMain::OnEnableCommonValues(wxCommandEvent& WXUNUSED(event)) +{ + wxPGProperty* prop = m_pPropGridManager->GetSelectedProperty(); + if ( prop ) + prop->EnableCommonValue(); + else + wxMessageBox(wxT("First select a property")); +} + +void FormMain::PopulateWithStandardItems () +{ + wxPropertyGridManager* pgman = m_pPropGridManager; + wxPropertyGridPage* pg = pgman->GetPage(wxT("Standard Items")); + + // Append is ideal way to add items to wxPropertyGrid. + pg->Append( new wxPropertyCategory(wxT("Appearance"),wxPG_LABEL) ); + + pg->Append( new wxStringProperty(wxT("Label"),wxPG_LABEL,GetTitle()) ); + pg->Append( new wxFontProperty(wxT("Font"),wxPG_LABEL) ); + pg->SetPropertyHelpString ( wxT("Font"), wxT("Editing this will change font used in the property grid.") ); + + pg->Append( new wxSystemColourProperty(wxT("Margin Colour"),wxPG_LABEL, + pg->GetGrid()->GetMarginColour()) ); + + pg->Append( new wxSystemColourProperty(wxT("Cell Colour"),wxPG_LABEL, + pg->GetGrid()->GetCellBackgroundColour()) ); + pg->Append( new wxSystemColourProperty(wxT("Cell Text Colour"),wxPG_LABEL, + pg->GetGrid()->GetCellTextColour()) ); + pg->Append( new wxSystemColourProperty(wxT("Line Colour"),wxPG_LABEL, + pg->GetGrid()->GetLineColour()) ); + pg->Append( new wxFlagsProperty(wxT("Window Styles"),wxPG_LABEL, + m_combinedFlags, GetWindowStyle()) ); + + //pg->SetPropertyAttribute(wxT("Window Styles"),wxPG_BOOL_USE_CHECKBOX,true,wxPG_RECURSE); + + pg->Append( new wxCursorProperty(wxT("Cursor"),wxPG_LABEL) ); + + pg->Append( new wxPropertyCategory(wxT("Position"),wxT("PositionCategory")) ); + pg->SetPropertyHelpString( wxT("PositionCategory"), wxT("Change in items in this category will cause respective changes in frame.") ); + + // Let's demonstrate 'Units' attribute here + + // Note that we use many attribute constants instead of strings here + // (for instance, wxPG_ATTR_MIN, instead of wxT("min")). + // Using constant may reduce binary size. + + pg->Append( new wxIntProperty(wxT("Height"),wxPG_LABEL,480) ); + pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_MIN, (long)10 ); + pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_MAX, (long)2048 ); + pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_UNITS, wxT("Pixels") ); + + // Set value to unspecified so that InlineHelp attribute will be demonstrated + pg->SetPropertyValueUnspecified(wxT("Height")); + pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_INLINE_HELP, wxT("Enter new height for window") ); + pg->SetPropertyHelpString(wxT("Height"), wxT("This property uses attributes \"Units\" and \"InlineHelp\".") ); + + pg->Append( new wxIntProperty(wxT("Width"),wxPG_LABEL,640) ); + pg->SetPropertyAttribute(wxT("Width"), wxPG_ATTR_MIN, (long)10 ); + pg->SetPropertyAttribute(wxT("Width"), wxPG_ATTR_MAX, (long)2048 ); + pg->SetPropertyAttribute(wxT("Width"), wxPG_ATTR_UNITS, wxT("Pixels") ); + + pg->SetPropertyValueUnspecified(wxT("Width")); + pg->SetPropertyAttribute(wxT("Width"), wxPG_ATTR_INLINE_HELP, wxT("Enter new width for window") ); + pg->SetPropertyHelpString(wxT("Width"), wxT("This property uses attributes \"Units\" and \"InlineHelp\".") ); + + pg->Append( new wxIntProperty(wxT("X"),wxPG_LABEL,10) ); + pg->SetPropertyAttribute(wxT("X"), wxPG_ATTR_UNITS, wxT("Pixels") ); + pg->SetPropertyHelpString(wxT("X"), wxT("This property uses \"Units\" attribute.") ); + + pg->Append( new wxIntProperty(wxT("Y"),wxPG_LABEL,10) ); + pg->SetPropertyAttribute(wxT("Y"), wxPG_ATTR_UNITS, wxT("Pixels") ); + pg->SetPropertyHelpString(wxT("Y"), wxT("This property uses \"Units\" attribute.") ); + + const wxChar* disabledHelpString = wxT("This property is simply disabled. Inorder to have label disabled as well, ") + wxT("you need to set wxPG_EX_GREY_LABEL_WHEN_DISABLED using SetExtraStyle."); + + pg->Append( new wxPropertyCategory(wxT("Environment"),wxPG_LABEL) ); + pg->Append( new wxStringProperty(wxT("Operating System"),wxPG_LABEL,::wxGetOsDescription()) ); + + pg->Append( new wxStringProperty(wxT("User Id"),wxPG_LABEL,::wxGetUserId()) ); + pg->Append( new wxDirProperty(wxT("User Home"),wxPG_LABEL,::wxGetUserHome()) ); + pg->Append( new wxStringProperty(wxT("User Name"),wxPG_LABEL,::wxGetUserName()) ); + + // Disable some of them + pg->DisableProperty( wxT("Operating System") ); + pg->DisableProperty( wxT("User Id") ); + pg->DisableProperty( wxT("User Name") ); + + pg->SetPropertyHelpString( wxT("Operating System"), disabledHelpString ); + pg->SetPropertyHelpString( wxT("User Id"), disabledHelpString ); + pg->SetPropertyHelpString( wxT("User Name"), disabledHelpString ); + + pg->Append( new wxPropertyCategory(wxT("More Examples"),wxPG_LABEL) ); + + pg->Append( new wxFontDataProperty( wxT("FontDataProperty"), wxPG_LABEL) ); + pg->SetPropertyHelpString( wxT("FontDataProperty"), + wxT("This demonstrates wxFontDataProperty class defined in this sample app. ") + wxT("It is exactly like wxFontProperty from the library, but also has colour sub-property.") + ); + + pg->Append( new wxDirsProperty(wxT("DirsProperty"),wxPG_LABEL) ); + pg->SetPropertyHelpString( wxT("DirsProperty"), + wxT("This demonstrates wxDirsProperty class defined in this sample app. ") + wxT("It is built with WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR macro, ") + wxT("with custom action (dir dialog popup) defined.") + ); + + pg->Append( new wxAdvImageFileProperty(wxT("AdvImageFileProperty"),wxPG_LABEL) ); + pg->SetPropertyHelpString( wxT("AdvImageFileProperty"), + wxT("This demonstrates wxAdvImageFileProperty class defined in this sample app. ") + wxT("Button can be used to add new images to the popup list.") + ); + + wxArrayDouble arrdbl; + arrdbl.Add(-1.0); + arrdbl.Add(-0.5); + arrdbl.Add(0.0); + arrdbl.Add(0.5); + arrdbl.Add(1.0); + + pg->Append( new wxArrayDoubleProperty(wxT("ArrayDoubleProperty"),wxPG_LABEL,arrdbl) ); + //pg->SetPropertyAttribute(wxT("ArrayDoubleProperty"),wxPG_FLOAT_PRECISION,(long)2); + pg->SetPropertyHelpString( wxT("ArrayDoubleProperty"), + wxT("This demonstrates wxArrayDoubleProperty class defined in this sample app. ") + wxT("It is an example of a custom list editor property.") + ); + + pg->Append( new wxLongStringProperty(wxT("Information"),wxPG_LABEL, + wxT("Editing properties will have immediate effect on this window, ") + wxT("and vice versa (atleast in most cases, that is).") + ) ); + pg->SetPropertyHelpString( wxT("Information"), + wxT("This property is read-only.") ); + + pg->SetPropertyReadOnly( wxT("Information"), true ); + + // + // Set test information for cells in columns 3 and 4 + // (reserve column 2 for displaying units) + wxPropertyGridIterator it; + wxBitmap bmp = wxArtProvider::GetBitmap(wxART_FOLDER); + + for ( it = pg->GetGrid()->GetIterator(); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + if ( p->IsCategory() ) + continue; + + pg->SetPropertyCell( p, 3, wxT("Cell 3"), bmp ); + pg->SetPropertyCell( p, 4, wxT("Cell 4"), wxNullBitmap, *wxWHITE, *wxBLACK ); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::PopulateWithExamples () +{ + wxPropertyGridManager* pgman = m_pPropGridManager; + wxPropertyGridPage* pg = pgman->GetPage(wxT("Examples")); + wxPGProperty* pid; + + //pg->Append( new wxPropertyCategory(wxT("Examples (low priority)"),wxT("Examples")) ); + //pg->SetPropertyHelpString ( wxT("Examples"), wxT("This category has example of (almost) every built-in property class.") ); + +#if wxUSE_SPINBTN + pg->Append( new wxIntProperty ( wxT("SpinCtrl"), wxPG_LABEL, 0 ) ); + + pg->SetPropertyEditor( wxT("SpinCtrl"), wxPG_EDITOR(SpinCtrl) ); + pg->SetPropertyAttribute( wxT("SpinCtrl"), wxPG_ATTR_MIN, (long)-10 ); // Use constants instead of string + pg->SetPropertyAttribute( wxT("SpinCtrl"), wxPG_ATTR_MAX, (long)10 ); // for reduced binary size. + pg->SetPropertyAttribute( wxT("SpinCtrl"), wxT("Step"), (long)2 ); + //pg->SetPropertyAttribute( wxT("SpinCtrl"), wxT("Wrap"), true ); + + pg->SetPropertyHelpString( wxT("SpinCtrl"), + wxT("This is regular wxIntProperty, which editor has been ") + wxT("changed to wxPG_EDITOR(SpinCtrl). Note however that ") + wxT("static wxPropertyGrid::RegisterAdditionalEditors() ") + wxT("needs to be called prior to using it.")); + +#endif + + // Add bool property + pg->Append( new wxBoolProperty( wxT("BoolProperty"), wxPG_LABEL, false ) ); + + // Add bool property with check box + pg->Append( new wxBoolProperty( wxT("BoolProperty with CheckBox"), wxPG_LABEL, false ) ); + pg->SetPropertyAttribute( wxT("BoolProperty with CheckBox"), + wxPG_BOOL_USE_CHECKBOX, + true ); + + pg->SetPropertyHelpString( wxT("BoolProperty with CheckBox"), + wxT("Property attribute wxPG_BOOL_USE_CHECKBOX has been set to true.") ); + + + wxPGProperty* lineThickProp; + wxPGProperty* lineThickUnitProp; + lineThickProp = new wxFloatProperty(wxT("Line Thickness")); + lineThickProp->SetEditor(wxPG_EDITOR(SpinCtrl)); + lineThickProp->SetAttribute(wxT("Min"), wxVariant(0.01)); + + wxPGChoices choices; + choices.Add(wxT("millimetres"), 1); + choices.Add(wxT("inches"), 2); + lineThickUnitProp = new wxEnumProperty( + wxT("Unit"), wxPG_LABEL, choices, + static_cast<int>(1)); + + pg->Append(lineThickProp); + pg->AppendIn(lineThickProp, lineThickUnitProp); + + lineThickProp->SetValue(wxVariant()); + /*if (!pg->HideProperty(lineThickUnitProp, true)) + { + return; + }*/ + + pid = pg->Append( new wxFloatProperty( wxT("FloatProperty"), + wxPG_LABEL, + 1234500.23 ) ); + + // A string property that can be edited in a separate editor dialog. + pg->Append( new wxLongStringProperty( wxT("LongStringProperty"), wxT("LongStringProp"), + wxT("This is much longer string than the first one. Edit it by clicking the button.") ) ); + + // A property that edits a wxArrayString. + wxArrayString example_array; + example_array.Add( wxT("String 1")); + example_array.Add( wxT("String 2")); + example_array.Add( wxT("String 3")); + pg->Append( new wxArrayStringProperty( wxT("ArrayStringProperty"), wxPG_LABEL, + example_array) ); + + // Test adding same category multiple times ( should not actually create a new one ) + //pg->Append( new wxPropertyCategory(wxT("Examples (low priority)"),wxT("Examples")) ); + + // A file selector property. Note that argument between name + // and initial value is wildcard (format same as in wxFileDialog). + wxPGProperty* prop = new wxFileProperty( wxT("FileProperty"), wxT("TextFile") ); + pg->Append( prop ); + + prop->SetAttribute(wxPG_FILE_WILDCARD,wxT("Text Files (*.txt)|*.txt")); + prop->SetAttribute(wxPG_FILE_DIALOG_TITLE,wxT("Custom File Dialog Title")); + prop->SetAttribute(wxPG_FILE_SHOW_FULL_PATH,false); + +#ifdef __WXMSW__ + prop->SetAttribute(wxPG_FILE_SHOW_RELATIVE_PATH,wxT("C:\\Windows")); + pg->SetPropertyValue(prop,wxT("C:\\Windows\\System32\\msvcrt71.dll")); +#endif + +#if wxUSE_IMAGE + // An image file property. Arguments are just like for FileProperty, but + // wildcard is missing (it is autogenerated from supported image formats). + // If you really need to override it, create property separately, and call + // its SetWildcard method. + pg->Append( new wxImageFileProperty( wxT("ImageFile"), wxPG_LABEL ) ); +#endif + + pid = pg->Append( new wxColourProperty(wxT("ColourProperty"),wxPG_LABEL,*wxRED) ); + //pg->SetPropertyAttribute(pid,wxPG_COLOUR_ALLOW_CUSTOM,false); + pg->SetPropertyEditor( wxT("ColourProperty"), wxPG_EDITOR(ComboBox) ); + pg->GetProperty(wxT("ColourProperty"))->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED); + pg->SetPropertyHelpString( wxT("ColourProperty"), + wxT("wxPropertyGrid::SetPropertyEditor method has been used to change ") + wxT("editor of this property to wxPG_EDITOR(ComboBox)")); + + // + // This demonstrates using alternative editor for colour property + // to trigger colour dialog directly from button. + pg->Append( new wxColourProperty(wxT("ColourProperty2"),wxPG_LABEL,*wxGREEN) ); + + // + // wxEnumProperty does not store strings or even list of strings + // ( so that's why they are static in function ). + static const wxChar* enum_prop_labels[] = { wxT("One Item"), + wxT("Another Item"), wxT("One More"), wxT("This Is Last"), NULL }; + + // this value array would be optional if values matched string indexes + static long enum_prop_values[] = { 40, 80, 120, 160 }; + + // note that the initial value (the last argument) is the actual value, + // not index or anything like that. Thus, our value selects "Another Item". + // + // 0 before value is number of items. If it is 0, like in our example, + // number of items is calculated, and this requires that the string pointer + // array is terminated with NULL. + pg->Append( new wxEnumProperty(wxT("EnumProperty"),wxPG_LABEL, + enum_prop_labels, enum_prop_values, 80 ) ); + + wxPGChoices soc; + + // use basic table from our previous example + // can also set/add wxArrayStrings and wxArrayInts directly. + soc.Set( enum_prop_labels, enum_prop_values ); + + // add extra items + soc.Add( wxT("Look, it continues"), 200 ); + soc.Add( wxT("Even More"), 240 ); + soc.Add( wxT("And More"), 280 ); + soc.Add( wxT("True End of the List"), 320 ); + + // Test custom colours ([] operator of wxPGChoices returns + // references to wxPGChoiceEntry). + soc[1].SetFgCol(*wxRED); + soc[1].SetBgCol(*wxLIGHT_GREY); + soc[2].SetFgCol(*wxGREEN); + soc[2].SetBgCol(*wxLIGHT_GREY); + soc[3].SetFgCol(*wxBLUE); + soc[3].SetBgCol(*wxLIGHT_GREY); + soc[4].SetBitmap(wxArtProvider::GetBitmap(wxART_FOLDER)); + + pg->Append( new wxEnumProperty(wxT("EnumProperty 2"), + wxPG_LABEL, + soc, + 240) ); + pg->AddPropertyChoice(wxT("EnumProperty 2"),wxT("Testing Extra"),360); + + // Add a second time to test that the caching works + pg->Append( new wxEnumProperty(wxT("EnumProperty 3"),wxPG_LABEL, + soc, 360 ) ); + pg->SetPropertyHelpString(wxT("EnumProperty 3"), + wxT("Should have same choices as EnumProperty 2")); + + pg->Append( new wxEnumProperty(wxT("EnumProperty 4"),wxPG_LABEL, + soc, 240 ) ); + pg->SetPropertyHelpString(wxT("EnumProperty 4"), + wxT("Should have same choices as EnumProperty 2")); + + pg->Append( new wxEnumProperty(wxT("EnumProperty 5"),wxPG_LABEL, + soc, 240 ) ); + pg->SetPropertyChoicesExclusive(wxT("EnumProperty 5")); + pg->AddPropertyChoice(wxT("EnumProperty 5"),wxT("5th only"),360); + pg->SetPropertyHelpString(wxT("EnumProperty 5"), + wxT("Should have one extra item when compared to EnumProperty 4")); + + // Password property example. + pg->Append( new wxStringProperty(wxT("Password"),wxPG_LABEL, wxT("password")) ); + pg->SetPropertyAttribute( wxT("Password"), wxPG_STRING_PASSWORD, true ); + pg->SetPropertyHelpString( wxT("Password"), + wxT("Has attribute wxPG_STRING_PASSWORD set to true") ); + + // String editor with dir selector button. Uses wxEmptyString as name, which + // is allowed (naturally, in this case property cannot be accessed by name). + pg->Append( new wxDirProperty( wxT("DirProperty"), wxPG_LABEL, ::wxGetUserHome()) ); + pg->SetPropertyAttribute( wxT("DirProperty"), + wxPG_DIR_DIALOG_MESSAGE, + wxT("This is a custom dir dialog message") ); + + // Add string property - first arg is label, second name, and third initial value + pg->Append( new wxStringProperty ( wxT("StringProperty"), wxPG_LABEL ) ); + pg->SetPropertyMaxLength( wxT("StringProperty"), 6 ); + pg->SetPropertyHelpString( wxT("StringProperty"), + wxT("Max length of this text has been limited to 6, using wxPropertyGrid::SetPropertyMaxLength.") ); + + // Set value after limiting so that it will be applied + pg->SetPropertyValue( wxT("StringProperty"), wxT("some text") ); + + + // this value array would be optional if values matched string indexes + //long flags_prop_values[] = { wxICONIZE, wxCAPTION, wxMINIMIZE_BOX, wxMAXIMIZE_BOX }; + + //pg->Append( wxFlagsProperty(wxT("Example of FlagsProperty"),wxT("FlagsProp"), + // flags_prop_labels, flags_prop_values, 0, GetWindowStyle() ) ); + + + // Multi choice dialog. + wxArrayString tchoices; + tchoices.Add(wxT("Cabbage")); + tchoices.Add(wxT("Carrot")); + tchoices.Add(wxT("Onion")); + tchoices.Add(wxT("Potato")); + tchoices.Add(wxT("Strawberry")); + + wxArrayString tchoicesValues; + tchoicesValues.Add(wxT("Carrot")); + tchoicesValues.Add(wxT("Potato")); + + pg->Append( new wxEnumProperty(wxT("EnumProperty X"),wxPG_LABEL, tchoices ) ); + + pg->Append( new wxMultiChoiceProperty( wxT("MultiChoiceProperty"), wxPG_LABEL, + tchoices, tchoicesValues ) ); + pg->SetPropertyAttribute( wxT("MultiChoiceProperty"), wxT("UserStringMode"), true ); + + pg->Append( new wxSizeProperty( wxT("SizeProperty"), wxT("Size"), GetSize() ) ); + pg->Append( new wxPointProperty( wxT("PointProperty"), wxT("Position"), GetPosition() ) ); + + + // UInt samples + pg->Append( new wxUIntProperty( wxT("UIntProperty"), wxPG_LABEL, wxULongLong(wxULL(0xFEEEFEEEFEEE)))); + pg->SetPropertyAttribute( wxT("UIntProperty"), wxPG_UINT_PREFIX, wxPG_PREFIX_NONE ); + pg->SetPropertyAttribute( wxT("UIntProperty"), wxPG_UINT_BASE, wxPG_BASE_HEX ); + //pg->SetPropertyAttribute( wxT("UIntProperty"), wxPG_UINT_PREFIX, wxPG_PREFIX_NONE ); + //pg->SetPropertyAttribute( wxT("UIntProperty"), wxPG_UINT_BASE, wxPG_BASE_OCT ); + + // + // wxEditEnumProperty + wxPGChoices eech; + eech.Add(wxT("Choice 1")); + eech.Add(wxT("Choice 2")); + eech.Add(wxT("Choice 3")); + pg->Append( new wxEditEnumProperty(wxT("EditEnumProperty"), wxPG_LABEL, eech) ); // , wxT("Choice 2") + + //wxString v_; + //wxTextValidator validator1(wxFILTER_NUMERIC,&v_); + //pg->SetPropertyValidator( wxT("EditEnumProperty"), validator1 ); + +#if wxUSE_DATETIME + // + // wxDateTimeProperty + pg->Append( new wxDateProperty(wxT("DateProperty"), wxPG_LABEL, wxDateTime::Now() ) ); + +#if wxUSE_DATEPICKCTRL + pg->SetPropertyAttribute( wxT("DateProperty"), wxPG_DATE_PICKER_STYLE, + (long)(wxDP_DROPDOWN | wxDP_SHOWCENTURY) ); + + pg->SetPropertyHelpString( wxT("DateProperty"), + wxT("Attribute wxPG_DATE_PICKER_STYLE has been set to (long)(wxDP_DROPDOWN | wxDP_SHOWCENTURY).") + wxT("Also note that wxPG_ALLOW_WXADV needs to be defined inorder to use wxDatePickerCtrl.") ); +#endif + +#endif + + // + // Add Triangle properties as both wxTriangleProperty and + // a generic parent property (using wxStringProperty). + // + wxPGProperty* topId = pg->Append( new wxStringProperty(wxT("3D Object"), wxPG_LABEL, wxT("<composed>")) ); + + pid = pg->AppendIn( topId, new wxStringProperty(wxT("Triangle 1"), wxT("Triangle 1"), wxT("<composed>")) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("A"), wxEmptyString ) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("B"), wxEmptyString ) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("C"), wxEmptyString ) ); + + pg->AppendIn( topId, new wxTriangleProperty( wxT("Triangle 2"), wxT("Triangle 2") ) ); + + pg->SetPropertyHelpString( wxT("3D Object"), + wxT("3D Object is wxStringProperty with value \"<composed>\". Two of its children are similar wxStringProperties with ") + wxT("three wxVectorProperty children, and other two are custom wxTriangleProperties.") ); + + pid = pg->AppendIn( topId, new wxStringProperty(wxT("Triangle 3"), wxT("Triangle 3"), wxT("<composed>")) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("A"), wxEmptyString ) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("B"), wxEmptyString ) ); + pg->AppendIn( pid, new wxVectorProperty( wxT("C"), wxEmptyString ) ); + + pg->AppendIn( topId, new wxTriangleProperty( wxT("Triangle 4"), wxT("Triangle 4") ) ); + + // + // This snippet is a doc sample test + // + pid = pg->Append( new wxStringProperty(wxT("Car"),wxPG_LABEL,wxT("<composed>")) ); + + pg->AppendIn( pid, new wxStringProperty(wxT("Model"), + wxPG_LABEL, + wxT("Lamborghini Diablo SV")) ); + + pg->AppendIn( pid, new wxIntProperty(wxT("Engine Size (cc)"), + wxPG_LABEL, + 5707) ); + + wxPGProperty* speedId = pg->AppendIn( pid, new wxStringProperty(wxT("Speeds"),wxPG_LABEL,wxT("<composed>")) ); + pg->AppendIn( speedId, new wxIntProperty(wxT("Max. Speed (mph)"),wxPG_LABEL,290) ); + pg->AppendIn( speedId, new wxFloatProperty(wxT("0-100 mph (sec)"),wxPG_LABEL,3.9) ); + pg->AppendIn( speedId, new wxFloatProperty(wxT("1/4 mile (sec)"),wxPG_LABEL,8.6) ); + + pg->AppendIn( pid, new wxIntProperty(wxT("Price ($)"), + wxPG_LABEL, + 300000) ); + + // Make sure the child properties can be accessed correctly + pg->SetPropertyValue( wxT("Car.Speeds.Max. Speed (mph)"), 300 ); + + // Displayed value of "Car" property is now: + // "Lamborghini Diablo SV; [300; 3.9; 8.6]; 300000" + + // + // Test wxSampleMultiButtonEditor + wxPGRegisterEditorClass( SampleMultiButtonEditor ); + pg->Append( new wxLongStringProperty(wxT("MultipleButtons"), wxPG_LABEL) ); + pg->SetPropertyEditor(wxT("MultipleButtons"), wxPG_EDITOR(SampleMultiButtonEditor) ); + + // Test SingleChoiceProperty + pg->Append( new SingleChoiceProperty(wxT("SingleChoiceProperty")) ); + + + // + // Test adding variable height bitmaps in wxPGChoices + wxPGChoices bc; + + bc.Add(wxT("Wee"), wxBitmap(16, 16)); + bc.Add(wxT("Not so wee"), wxBitmap(32, 32)); + bc.Add(wxT("Friggin' huge"), wxBitmap(64, 64)); + + pg->Append( new wxEnumProperty(wxT("Variable Height Bitmaps"), + wxPG_LABEL, + bc, + 0) ); + + // + // Test how non-editable composite strings appear + pid = pg->Append( new wxStringProperty(wxT("wxWidgets Traits"), wxPG_LABEL, wxT("<composed>")) ); + pg->SetPropertyReadOnly(pid); + + pg->AppendIn(pid, new wxStringProperty(wxT("Latest Release"), wxPG_LABEL, wxT("2.8.8")) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("Win API"), wxPG_LABEL, true) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("QT"), wxPG_LABEL, false) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("Cocoa"), wxPG_LABEL, true) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("BeOS"), wxPG_LABEL, false) ); + pg->AppendIn(pid, new wxStringProperty(wxT("SVN Trunk Version"), wxPG_LABEL, wxT("2.9.0")) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("GTK+"), wxPG_LABEL, true) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("Sky OS"), wxPG_LABEL, false) ); + pg->AppendIn(pid, new wxBoolProperty(wxT("QT"), wxPG_LABEL, false) ); + + AddTestProperties(pg); +} + +// ----------------------------------------------------------------------- + +void FormMain::PopulateWithLibraryConfig () +{ + wxPropertyGridManager* pgman = m_pPropGridManager; + wxPropertyGridPage* pg = pgman->GetPage(wxT("wxWidgets Library Config")); + + wxPGProperty* cat; + + wxBitmap bmp = wxArtProvider::GetBitmap(wxART_REPORT_VIEW); + + wxPGProperty* pid; + +#define ADD_WX_LIB_CONF_GROUP(A) \ + cat = pg->AppendIn( pid, new wxPropertyCategory(A) ); \ + pg->SetPropertyCell( cat, 0, wxPG_LABEL, bmp ); + +#define ADD_WX_LIB_CONF(A) pg->Append( new wxBoolProperty(wxT(#A),wxPG_LABEL,(bool)((A>0)?true:false))); +#define ADD_WX_LIB_CONF_NODEF(A) pg->Append( new wxBoolProperty(wxT(#A),wxPG_LABEL,(bool)false) ); \ + pg->DisableProperty(wxT(#A)); + + pid = pg->Append( new wxPropertyCategory( wxT("wxWidgets Library Configuration") ) ); + pg->SetPropertyCell( pid, 0, wxPG_LABEL, bmp ); + + ADD_WX_LIB_CONF_GROUP(wxT("Global Settings")) + ADD_WX_LIB_CONF( wxUSE_GUI ) + + ADD_WX_LIB_CONF_GROUP(wxT("Compatibility Settings")) +#if defined(WXWIN_COMPATIBILITY_2_2) + ADD_WX_LIB_CONF( WXWIN_COMPATIBILITY_2_2 ) +#endif +#if defined(WXWIN_COMPATIBILITY_2_4) + ADD_WX_LIB_CONF( WXWIN_COMPATIBILITY_2_4 ) +#endif +#if defined(WXWIN_COMPATIBILITY_2_6) + ADD_WX_LIB_CONF( WXWIN_COMPATIBILITY_2_6 ) +#endif +#if defined(WXWIN_COMPATIBILITY_2_8) + ADD_WX_LIB_CONF( WXWIN_COMPATIBILITY_2_8 ) +#endif +#ifdef wxFONT_SIZE_COMPATIBILITY + ADD_WX_LIB_CONF( wxFONT_SIZE_COMPATIBILITY ) +#else + ADD_WX_LIB_CONF_NODEF ( wxFONT_SIZE_COMPATIBILITY ) +#endif +#ifdef wxDIALOG_UNIT_COMPATIBILITY + ADD_WX_LIB_CONF( wxDIALOG_UNIT_COMPATIBILITY ) +#else + ADD_WX_LIB_CONF_NODEF ( wxDIALOG_UNIT_COMPATIBILITY ) +#endif + + ADD_WX_LIB_CONF_GROUP(wxT("Debugging Settings")) + ADD_WX_LIB_CONF( wxUSE_DEBUG_CONTEXT ) + ADD_WX_LIB_CONF( wxUSE_MEMORY_TRACING ) + ADD_WX_LIB_CONF( wxUSE_GLOBAL_MEMORY_OPERATORS ) + ADD_WX_LIB_CONF( wxUSE_DEBUG_NEW_ALWAYS ) + ADD_WX_LIB_CONF( wxUSE_ON_FATAL_EXCEPTION ) + + ADD_WX_LIB_CONF_GROUP(wxT("Unicode Support")) + ADD_WX_LIB_CONF( wxUSE_UNICODE ) + ADD_WX_LIB_CONF( wxUSE_UNICODE_MSLU ) + ADD_WX_LIB_CONF( wxUSE_WCHAR_T ) + + ADD_WX_LIB_CONF_GROUP(wxT("Global Features")) + ADD_WX_LIB_CONF( wxUSE_EXCEPTIONS ) + ADD_WX_LIB_CONF( wxUSE_EXTENDED_RTTI ) + ADD_WX_LIB_CONF( wxUSE_STL ) + ADD_WX_LIB_CONF( wxUSE_LOG ) + ADD_WX_LIB_CONF( wxUSE_LOGWINDOW ) + ADD_WX_LIB_CONF( wxUSE_LOGGUI ) + ADD_WX_LIB_CONF( wxUSE_LOG_DIALOG ) + ADD_WX_LIB_CONF( wxUSE_CMDLINE_PARSER ) + ADD_WX_LIB_CONF( wxUSE_THREADS ) + ADD_WX_LIB_CONF( wxUSE_STREAMS ) + ADD_WX_LIB_CONF( wxUSE_STD_IOSTREAM ) + + ADD_WX_LIB_CONF_GROUP(wxT("Non-GUI Features")) + ADD_WX_LIB_CONF( wxUSE_LONGLONG ) + ADD_WX_LIB_CONF( wxUSE_FILE ) + ADD_WX_LIB_CONF( wxUSE_FFILE ) + ADD_WX_LIB_CONF( wxUSE_FSVOLUME ) + ADD_WX_LIB_CONF( wxUSE_TEXTBUFFER ) + ADD_WX_LIB_CONF( wxUSE_TEXTFILE ) + ADD_WX_LIB_CONF( wxUSE_INTL ) + ADD_WX_LIB_CONF( wxUSE_DATETIME ) + ADD_WX_LIB_CONF( wxUSE_TIMER ) + ADD_WX_LIB_CONF( wxUSE_STOPWATCH ) + ADD_WX_LIB_CONF( wxUSE_CONFIG ) +#ifdef wxUSE_CONFIG_NATIVE + ADD_WX_LIB_CONF( wxUSE_CONFIG_NATIVE ) +#else + ADD_WX_LIB_CONF_NODEF ( wxUSE_CONFIG_NATIVE ) +#endif + ADD_WX_LIB_CONF( wxUSE_DIALUP_MANAGER ) + ADD_WX_LIB_CONF( wxUSE_DYNLIB_CLASS ) + ADD_WX_LIB_CONF( wxUSE_DYNAMIC_LOADER ) + ADD_WX_LIB_CONF( wxUSE_SOCKETS ) + ADD_WX_LIB_CONF( wxUSE_FILESYSTEM ) + ADD_WX_LIB_CONF( wxUSE_FS_ZIP ) + ADD_WX_LIB_CONF( wxUSE_FS_INET ) + ADD_WX_LIB_CONF( wxUSE_ZIPSTREAM ) + ADD_WX_LIB_CONF( wxUSE_ZLIB ) + ADD_WX_LIB_CONF( wxUSE_APPLE_IEEE ) + ADD_WX_LIB_CONF( wxUSE_JOYSTICK ) + ADD_WX_LIB_CONF( wxUSE_FONTMAP ) + ADD_WX_LIB_CONF( wxUSE_MIMETYPE ) + ADD_WX_LIB_CONF( wxUSE_PROTOCOL ) + ADD_WX_LIB_CONF( wxUSE_PROTOCOL_FILE ) + ADD_WX_LIB_CONF( wxUSE_PROTOCOL_FTP ) + ADD_WX_LIB_CONF( wxUSE_PROTOCOL_HTTP ) + ADD_WX_LIB_CONF( wxUSE_URL ) +#ifdef wxUSE_URL_NATIVE + ADD_WX_LIB_CONF( wxUSE_URL_NATIVE ) +#else + ADD_WX_LIB_CONF_NODEF ( wxUSE_URL_NATIVE ) +#endif + ADD_WX_LIB_CONF( wxUSE_REGEX ) + ADD_WX_LIB_CONF( wxUSE_SYSTEM_OPTIONS ) + ADD_WX_LIB_CONF( wxUSE_SOUND ) +#ifdef wxUSE_XRC + ADD_WX_LIB_CONF( wxUSE_XRC ) +#else + ADD_WX_LIB_CONF_NODEF ( wxUSE_XRC ) +#endif + ADD_WX_LIB_CONF( wxUSE_XML ) + + // Set them to use check box. + pg->SetPropertyAttribute(pid,wxPG_BOOL_USE_CHECKBOX,true,wxPG_RECURSE); +} + + +// +// Handle events of the third page here. +class wxMyPropertyGridPage : public wxPropertyGridPage +{ +public: + + // Return false here to indicate unhandled events should be + // propagated to manager's parent, as normal. + virtual bool IsHandlingAllEvents() const { return false; } + +protected: + + virtual wxPGProperty* DoInsert( wxPGProperty* parent, + int index, + wxPGProperty* property ) + { + return wxPropertyGridPage::DoInsert(parent,index,property); + } + + void OnPropertySelect( wxPropertyGridEvent& event ); + void OnPropertyChanging( wxPropertyGridEvent& event ); + void OnPropertyChange( wxPropertyGridEvent& event ); + void OnPageChange( wxPropertyGridEvent& event ); + +private: + DECLARE_EVENT_TABLE() +}; + + +BEGIN_EVENT_TABLE(wxMyPropertyGridPage, wxPropertyGridPage) + EVT_PG_SELECTED( wxID_ANY, wxMyPropertyGridPage::OnPropertySelect ) + EVT_PG_CHANGING( wxID_ANY, wxMyPropertyGridPage::OnPropertyChanging ) + EVT_PG_CHANGED( wxID_ANY, wxMyPropertyGridPage::OnPropertyChange ) + EVT_PG_PAGE_CHANGED( wxID_ANY, wxMyPropertyGridPage::OnPageChange ) +END_EVENT_TABLE() + + +void wxMyPropertyGridPage::OnPropertySelect( wxPropertyGridEvent& WXUNUSED(event) ) +{ + wxLogDebug(wxT("wxMyPropertyGridPage::OnPropertySelect()")); +} + +void wxMyPropertyGridPage::OnPropertyChange( wxPropertyGridEvent& event ) +{ + wxPGProperty* p = event.GetProperty(); + wxLogDebug(wxT("wxMyPropertyGridPage::OnPropertyChange('%s', to value '%s')"), + p->GetName().c_str(), + p->GetDisplayedString().c_str()); +} + +void wxMyPropertyGridPage::OnPropertyChanging( wxPropertyGridEvent& event ) +{ + wxPGProperty* p = event.GetProperty(); + wxLogDebug(wxT("wxMyPropertyGridPage::OnPropertyChanging('%s', to value '%s')"), + p->GetName().c_str(), + event.GetValue().GetString().c_str()); +} + +void wxMyPropertyGridPage::OnPageChange( wxPropertyGridEvent& WXUNUSED(event) ) +{ + wxLogDebug(wxT("wxMyPropertyGridPage::OnPageChange()")); +} + + +class wxPGKeyHandler : public wxEvtHandler +{ +public: + + void OnKeyEvent( wxKeyEvent& event ) + { + wxMessageBox(wxString::Format(wxT("%i"),event.GetKeyCode())); + event.Skip(); + } +private: + DECLARE_EVENT_TABLE() +}; + +BEGIN_EVENT_TABLE(wxPGKeyHandler,wxEvtHandler) + EVT_KEY_DOWN( wxPGKeyHandler::OnKeyEvent ) +END_EVENT_TABLE() + + +// ----------------------------------------------------------------------- + +void FormMain::InitPanel() +{ + if ( m_panel ) + m_panel->Destroy(); + + wxWindow* panel = new wxPanel(this,-1,wxPoint(0,0),wxSize(400,400)); + m_panel = panel; + + // Column + wxBoxSizer* topSizer = new wxBoxSizer ( wxVERTICAL ); + + m_topSizer = topSizer; +} + +void FormMain::FinalizePanel( bool wasCreated ) +{ + m_panel->SetSizer( m_topSizer ); + m_topSizer->SetSizeHints( m_panel ); + + wxBoxSizer* panelSizer = new wxBoxSizer( wxHORIZONTAL ); + panelSizer->Add( m_panel, 1, wxEXPAND|wxFIXED_MINSIZE ); + SetSizer( panelSizer ); + panelSizer->SetSizeHints( this ); + + if ( wasCreated ) + { + SetSize( + (wxSystemSettings::GetMetric(wxSYS_SCREEN_X)/10)*4, + (wxSystemSettings::GetMetric(wxSYS_SCREEN_Y)/10)*8 + ); + Centre(); + } +} + +void FormMain::PopulateGrid() +{ + wxPropertyGridManager* pgman = m_pPropGridManager; + pgman->AddPage(wxT("Standard Items")); + + PopulateWithStandardItems(); + + pgman->AddPage(wxT("wxWidgets Library Config")); + + PopulateWithLibraryConfig(); + + wxPropertyGridPage* myPage = new wxMyPropertyGridPage(); + myPage->Append( new wxIntProperty ( wxT("IntProperty"), wxPG_LABEL, 12345678 ) ); + + // Use wxMyPropertyGridPage (see above) to test the + // custom wxPropertyGridPage feature. + pgman->AddPage(wxT("Examples"),wxNullBitmap,myPage); + + PopulateWithExamples(); +} + +void FormMain::CreateGrid( int style, int extraStyle ) +{ + // + // This function (re)creates the property grid in our sample + // + + if ( style == -1 ) + style = // default style + wxPG_BOLD_MODIFIED | + wxPG_SPLITTER_AUTO_CENTER | + wxPG_AUTO_SORT | + //wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER | + //wxPG_TOOLTIPS | + //wxPG_HIDE_CATEGORIES | + //wxPG_LIMITED_EDITING | + wxTAB_TRAVERSAL | + wxPG_TOOLBAR | + wxPG_DESCRIPTION; + + if ( extraStyle == -1 ) + // default extra style + extraStyle = wxPG_EX_MODE_BUTTONS; + //| wxPG_EX_AUTO_UNSPECIFIED_VALUES + //| wxPG_EX_GREY_LABEL_WHEN_DISABLED + //| wxPG_EX_NATIVE_DOUBLE_BUFFERING + //| wxPG_EX_HELP_AS_TOOLTIPS + + bool wasCreated = m_panel ? false : true; + + InitPanel(); + + // + // This shows how to combine two static choice descriptors + m_combinedFlags.Add( _fs_windowstyle_labels, _fs_windowstyle_values ); + m_combinedFlags.Add( _fs_framestyle_labels, _fs_framestyle_values ); + + wxPropertyGridManager* pgman = m_pPropGridManager = + new wxPropertyGridManager(m_panel, + // Don't change this into wxID_ANY in the sample, or the + // event handling will obviously be broken. + PGID, /*wxID_ANY*/ + wxDefaultPosition, + wxDefaultSize, + style ); + + m_propGrid = pgman->GetGrid(); + + pgman->SetExtraStyle(extraStyle); + + m_pPropGridManager->SetValidationFailureBehavior( wxPG_VFB_BEEP | wxPG_VFB_MARK_CELL | wxPG_VFB_SHOW_MESSAGE ); + + m_pPropGridManager->GetGrid()->SetVerticalSpacing( 2 ); + + PopulateGrid(); + + // Change some attributes in all properties + //pgman->SetPropertyAttributeAll(wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING,true); + //pgman->SetPropertyAttributeAll(wxPG_BOOL_USE_CHECKBOX,true); + + //m_pPropGridManager->SetSplitterLeft(true); + //m_pPropGridManager->SetSplitterPosition(137); + + /* + // This would setup event handling without event table entries + Connect(m_pPropGridManager->GetId(), wxEVT_PG_SELECTED, + (wxObjectEventFunction) (wxEventFunction) (wxPropertyGridEventFunction) + &FormMain::OnPropertyGridSelect ); + Connect(m_pPropGridManager->GetId(), wxEVT_PG_CHANGED, + (wxObjectEventFunction) (wxEventFunction) (wxPropertyGridEventFunction) + &FormMain::OnPropertyGridChange ); + */ + + m_topSizer->Add( m_pPropGridManager, 1, wxEXPAND ); + + FinalizePanel(wasCreated); +} + +// ----------------------------------------------------------------------- + +FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size) : + wxFrame((wxFrame *)NULL, -1, title, pos, size, + (wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCAPTION| + wxTAB_TRAVERSAL|wxCLOSE_BOX|wxNO_FULL_REPAINT_ON_RESIZE) ) +{ + m_propGrid = NULL; + m_panel = NULL; + +#ifdef __WXMAC__ + // we need this in order to allow the about menu relocation, since ABOUT is + // not the default id of the about menu + wxApp::s_macAboutMenuItemId = ID_ABOUT; +#endif + +#if wxUSE_IMAGE + // This is here to really test the wxImageFileProperty. + wxInitAllImageHandlers(); +#endif + + CreateGrid( // style + wxPG_BOLD_MODIFIED | + wxPG_SPLITTER_AUTO_CENTER | + wxPG_AUTO_SORT | + //wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER | + //wxPG_TOOLTIPS | + //wxPG_HIDE_CATEGORIES | + //wxPG_LIMITED_EDITING | + wxTAB_TRAVERSAL | + wxPG_TOOLBAR | + wxPG_DESCRIPTION, + // extra style + wxPG_EX_MODE_BUTTONS + //| wxPG_EX_AUTO_UNSPECIFIED_VALUES + //| wxPG_EX_GREY_LABEL_WHEN_DISABLED + //| wxPG_EX_NATIVE_DOUBLE_BUFFERING + //| wxPG_EX_HELP_AS_TOOLTIPS + ); + + // Register all editors (SpinCtrl etc.) + m_pPropGridManager->RegisterAdditionalEditors(); + + // + // Create menubar + wxMenu *menuFile = new wxMenu(wxEmptyString, wxMENU_TEAROFF); + wxMenu *menuTry = new wxMenu; + wxMenu *menuTools1 = new wxMenu; + wxMenu *menuTools2 = new wxMenu; + wxMenu *menuHelp = new wxMenu; + + menuHelp->Append(ID_ABOUT, wxT("&About..."), wxT("Show about dialog") ); + + menuTools1->Append(ID_APPENDPROP, wxT("Append New Property") ); + menuTools1->Append(ID_APPENDCAT, wxT("Append New Category\tCtrl-S") ); + menuTools1->AppendSeparator(); + menuTools1->Append(ID_INSERTPROP, wxT("Insert New Property\tCtrl-Q") ); + menuTools1->Append(ID_INSERTCAT, wxT("Insert New Category\tCtrl-W") ); + menuTools1->AppendSeparator(); + menuTools1->Append(ID_DELETE, wxT("Delete Selected") ); + menuTools1->Append(ID_DELETER, wxT("Delete Random") ); + menuTools1->Append(ID_DELETEALL, wxT("Delete All") ); + menuTools1->AppendSeparator(); + menuTools1->Append(ID_SETCOLOUR, wxT("Set Bg Colour") ); + menuTools1->Append(ID_UNSPECIFY, wxT("Set to Unspecified") ); + menuTools1->Append(ID_CLEAR, wxT("Set Value to Default") ); + menuTools1->AppendSeparator(); + m_itemEnable = menuTools1->Append(ID_ENABLE, wxT("Enable"), + wxT("Toggles item's enabled state.") ); + m_itemEnable->Enable( FALSE ); + menuTools1->Append(ID_HIDE, wxT("Hide"), wxT("Shows or hides a property") ); + + menuTools2->Append(ID_ITERATE1, wxT("Iterate Over Properties") ); + menuTools2->Append(ID_ITERATE2, wxT("Iterate Over Visible Items") ); + menuTools2->Append(ID_ITERATE3, wxT("Reverse Iterate Over Properties") ); + menuTools2->Append(ID_ITERATE4, wxT("Iterate Over Categories") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_SETPROPERTYVALUE, wxT("Set Property Value") ); + menuTools2->Append(ID_CLEARMODIF, wxT("Clear Modified Status"), wxT("Clears wxPG_MODIFIED flag from all properties.") ); + menuTools2->AppendSeparator(); + m_itemFreeze = menuTools2->AppendCheckItem(ID_FREEZE, wxT("Freeze"), + wxT("Disables painting, auto-sorting, etc.") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_DUMPLIST, wxT("Display Values as wxVariant List"), wxT("Tests GetAllValues method and wxVariant conversion.") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_GETVALUES, wxT("Get Property Values"), wxT("Stores all property values.") ); + menuTools2->Append(ID_SETVALUES, wxT("Set Property Values"), wxT("Reverts property values to those last stored.") ); + menuTools2->Append(ID_SETVALUES2, wxT("Set Property Values 2"), wxT("Adds property values that should not initially be as items (so new items are created).") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_SAVESTATE, wxT("Save Editable State") ); + menuTools2->Append(ID_RESTORESTATE, wxT("Restore Editable State") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_ENABLECOMMONVALUES, wxT("Enable Common Value"), + wxT("Enable values that are common to all properties, for selected property.")); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_COLLAPSE, wxT("Collapse Selected") ); + menuTools2->Append(ID_COLLAPSEALL, wxT("Collapse All") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_INSERTPAGE, wxT("Add Page") ); + menuTools2->Append(ID_REMOVEPAGE, wxT("Remove Page") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_FITCOLUMNS, wxT("Fit Columns") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_CHANGEFLAGSITEMS, wxT("Change Children of FlagsProp") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_TESTINSERTCHOICE, wxT("Test InsertPropertyChoice") ); + menuTools2->Append(ID_TESTDELETECHOICE, wxT("Test DeletePropertyChoice") ); + menuTools2->AppendSeparator(); + menuTools2->Append(ID_SETSPINCTRLEDITOR, wxT("Use SpinCtrl Editor") ); + menuTools2->Append(ID_TESTREPLACE, wxT("Test ReplaceProperty") ); + + menuTry->Append(ID_SELECTSTYLE, wxT("Set Window Style"), + wxT("Select window style flags used by the grid.")); + menuTry->AppendSeparator(); + menuTry->AppendRadioItem( ID_COLOURSCHEME1, wxT("Standard Colour Scheme") ); + menuTry->AppendRadioItem( ID_COLOURSCHEME2, wxT("White Colour Scheme") ); + menuTry->AppendRadioItem( ID_COLOURSCHEME3, wxT(".NET Colour Scheme") ); + menuTry->AppendRadioItem( ID_COLOURSCHEME4, wxT("Cream Colour Scheme") ); + menuTry->AppendSeparator(); + m_itemCatColours = menuTry->AppendCheckItem(ID_CATCOLOURS, wxT("Category Specific Colours"), + wxT("Switches between category-specific cell colours and default scheme (actually done using SetPropertyTextColour and SetPropertyBackgroundColour).") ); + menuTry->AppendSeparator(); + menuTry->AppendCheckItem(ID_STATICLAYOUT, wxT("Static Layout"), + wxT("Switches between user-modifiedable and static layouts.") ); + menuTry->Append(ID_SETCOLUMNS, wxT("Set Number of Columns") ); + menuTry->AppendSeparator(); + menuTry->Append(ID_TESTXRC, wxT("Display XRC sample") ); + menuTry->AppendSeparator(); + menuTry->Append(ID_RUNTESTFULL, wxT("Run Tests (full)") ); + menuTry->Append(ID_RUNTESTPARTIAL, wxT("Run Tests (fast)") ); + + menuFile->Append(ID_RUNMINIMAL, wxT("Run Minimal Sample") ); + menuFile->AppendSeparator(); + menuFile->Append(ID_QUIT, wxT("E&xit\tAlt-X"), wxT("Quit this program") ); + + // Now append the freshly created menu to the menu bar... + wxMenuBar *menuBar = new wxMenuBar(); + menuBar->Append(menuFile, wxT("&File") ); + menuBar->Append(menuTry, wxT("&Try These!") ); + menuBar->Append(menuTools1, wxT("&Basic") ); + menuBar->Append(menuTools2, wxT("&Advanced") ); + menuBar->Append(menuHelp, wxT("&Help") ); + + // ... and attach this menu bar to the frame + SetMenuBar(menuBar); + +#if wxUSE_STATUSBAR + // create a status bar + CreateStatusBar(1); + SetStatusText(wxEmptyString); +#endif // wxUSE_STATUSBAR + + + // + // Finalize + // + + SetSize( + (wxSystemSettings::GetMetric(wxSYS_SCREEN_X)/10)*4, + (wxSystemSettings::GetMetric(wxSYS_SCREEN_Y)/10)*8 + ); + Centre(); +} + +// +// Normally, wxPropertyGrid does not check whether item with identical +// label already exists. However, since in this sample we use labels for +// identifying properties, we have to be sure not to generate identical +// labels. +// +void GenerateUniquePropertyLabel( wxPropertyGridManager* pg, wxString& baselabel ) +{ + int count = -1; + wxString newlabel; + + if ( pg->GetPropertyByLabel( baselabel ) ) + { + for (;;) + { + count++; + newlabel.Printf(wxT("%s%i"),baselabel.c_str(),count); + if ( !pg->GetPropertyByLabel( newlabel ) ) break; + } + } + + if ( count >= 0 ) + { + baselabel = newlabel; + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnInsertPropClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxString propLabel; + + if ( !m_pPropGridManager->GetChildrenCount() ) + { + wxMessageBox(wxT("No items to relate - first add some with Append.")); + return; + } + + wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection(); + if ( !id ) + { + wxMessageBox(wxT("First select a property - new one will be inserted right before that.")); + return; + } + if ( propLabel.Len() < 1 ) propLabel = wxT("Property"); + + GenerateUniquePropertyLabel( m_pPropGridManager, propLabel ); + + m_pPropGridManager->Insert( m_pPropGridManager->GetPropertyParent(id), + m_pPropGridManager->GetPropertyIndex(id), + new wxStringProperty(propLabel) ); + +} + +// ----------------------------------------------------------------------- + +void FormMain::OnAppendPropClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxString propLabel; + + if ( propLabel.Len() < 1 ) propLabel = wxT("Property"); + + GenerateUniquePropertyLabel( m_pPropGridManager, propLabel ); + + m_pPropGridManager->Append( new wxStringProperty(propLabel) ); + + m_pPropGridManager->Refresh(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnClearClick( wxCommandEvent& WXUNUSED(event) ) +{ + m_pPropGridManager->GetGrid()->Clear(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnAppendCatClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxString propLabel; + + if ( propLabel.Len() < 1 ) propLabel = wxT("Category"); + + GenerateUniquePropertyLabel( m_pPropGridManager, propLabel ); + + m_pPropGridManager->Append( new wxPropertyCategory (propLabel) ); + + m_pPropGridManager->Refresh(); + +} + +// ----------------------------------------------------------------------- + +void FormMain::OnInsertCatClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxString propLabel; + + if ( !m_pPropGridManager->GetChildrenCount() ) + { + wxMessageBox(wxT("No items to relate - first add some with Append.")); + return; + } + + wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection(); + if ( !id ) + { + wxMessageBox(wxT("First select a property - new one will be inserted right before that.")); + return; + } + + if ( propLabel.Len() < 1 ) propLabel = wxT("Category"); + + GenerateUniquePropertyLabel( m_pPropGridManager, propLabel ); + + m_pPropGridManager->Insert( m_pPropGridManager->GetPropertyParent(id), + m_pPropGridManager->GetPropertyIndex(id), + new wxPropertyCategory (propLabel) ); + +} + +// ----------------------------------------------------------------------- + +void FormMain::OnDelPropClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection(); + if ( !id ) + { + wxMessageBox(wxT("First select a property.")); + return; + } + + m_pPropGridManager->DeleteProperty( id ); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnDelPropRClick( wxCommandEvent& WXUNUSED(event) ) +{ + // Delete random property + wxPGProperty* p = m_pPropGridManager->GetGrid()->GetRoot(); + + for (;;) + { + if ( !p->IsCategory() ) + { + m_pPropGridManager->DeleteProperty( p ); + break; + } + + if ( !p->GetChildCount() ) + break; + + int n = rand() % ((int)p->GetChildCount()); + + p = p->Item(n); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnContextMenu( wxContextMenuEvent& event ) +{ + wxLogDebug(wxT("FormMain::OnContextMenu(%i,%i)"), + event.GetPosition().x,event.GetPosition().y); + + //event.Skip(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnCloseClick( wxCommandEvent& WXUNUSED(event) ) +{ +/*#ifdef __WXDEBUG__ + m_pPropGridManager->GetGrid()->DumpAllocatedChoiceSets(); + wxLogDebug(wxT("\\-> Don't worry, this is perfectly normal in this sample.")); +#endif*/ + + Close(false); +} + +// ----------------------------------------------------------------------- + +int IterateMessage( wxPGProperty* prop ) +{ + wxString s; + + s.Printf( wxT("\"%s\" class = %s, valuetype = %s"), prop->GetLabel().c_str(), + prop->GetClassInfo()->GetClassName(), prop->GetValueType().c_str() ); + + return wxMessageBox( s, wxT("Iterating... (press CANCEL to end)"), wxOK|wxCANCEL ); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnIterate1Click( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGridIterator it; + + for ( it = m_pPropGridManager->GetCurrentPage()-> + GetIterator(); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + int res = IterateMessage( p ); + if ( res == wxCANCEL ) break; + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnIterate2Click( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGridIterator it; + + for ( it = m_pPropGridManager->GetCurrentPage()-> + GetIterator( wxPG_ITERATE_VISIBLE ); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + + int res = IterateMessage( p ); + if ( res == wxCANCEL ) break; + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnIterate3Click( wxCommandEvent& WXUNUSED(event) ) +{ + // iterate over items in reverse order + wxPropertyGridIterator it; + + for ( it = m_pPropGridManager->GetCurrentPage()-> + GetIterator( wxPG_ITERATE_DEFAULT, wxBOTTOM ); + !it.AtEnd(); + it-- ) + { + wxPGProperty* p = *it; + + int res = IterateMessage( p ); + if ( res == wxCANCEL ) break; + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnIterate4Click( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGridIterator it; + + for ( it = m_pPropGridManager->GetCurrentPage()-> + GetIterator( wxPG_ITERATE_CATEGORIES ); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + + int res = IterateMessage( p ); + if ( res == wxCANCEL ) break; + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnFitColumnsClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGridPage* page = m_pPropGridManager->GetCurrentPage(); + + // Remove auto-centering + m_pPropGridManager->SetWindowStyle( m_pPropGridManager->GetWindowStyle() & ~wxPG_SPLITTER_AUTO_CENTER); + + // Grow manager size just prior fit - otherwise + // column information may be lost. + wxSize oldGridSize = m_pPropGridManager->GetGrid()->GetClientSize(); + wxSize oldFullSize = GetSize(); + SetSize(1000, oldFullSize.y); + + wxSize newSz = page->FitColumns(); + + int dx = oldFullSize.x - oldGridSize.x; + int dy = oldFullSize.y - oldGridSize.y; + + newSz.x += dx; + newSz.y += dy; + + SetSize(newSz); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnChangeFlagsPropItemsClick( wxCommandEvent& WXUNUSED(event) ) +{ + + wxPGProperty* id = m_pPropGridManager->GetPropertyByName(wxT("Window Styles")); + + wxPGChoices newChoices; + + newChoices.Add(wxT("Fast"),0x1); + newChoices.Add(wxT("Powerful"),0x2); + newChoices.Add(wxT("Safe"),0x4); + newChoices.Add(wxT("Sleek"),0x8); + + m_pPropGridManager->SetPropertyChoices(id,newChoices); + //m_pPropGridManager->ReplaceProperty(wxT("Window Styles"), + // wxFlagsProperty(wxT("Window Styles"),wxPG_LABEL,newChoices)); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnEnableDisable( wxCommandEvent& ) +{ + wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection(); + if ( !id ) + { + wxMessageBox(wxT("First select a property.")); + return; + } + + if ( m_pPropGridManager->IsPropertyEnabled( id ) ) + { + m_pPropGridManager->DisableProperty ( id ); + m_itemEnable->SetItemLabel( wxT("Enable") ); + } + else + { + m_pPropGridManager->EnableProperty ( id ); + m_itemEnable->SetItemLabel( wxT("Disable") ); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnHideShow( wxCommandEvent& WXUNUSED(event) ) +{ + wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection(); + if ( !id ) + { + wxMessageBox(wxT("First select a property.")); + return; + } + + if ( m_pPropGridManager->IsPropertyShown( id ) ) + { + m_pPropGridManager->HideProperty( id, true ); + m_itemEnable->SetItemLabel( wxT("Show") ); + } + else + { + m_pPropGridManager->HideProperty( id, false ); + m_itemEnable->SetItemLabel( wxT("Hide") ); + } + + wxPropertyGridPage* curPage = m_pPropGridManager->GetCurrentPage(); + + // Check for bottomY precalculation validity + unsigned int byPre = curPage->GetVirtualHeight(); + unsigned int byAct = curPage->GetActualVirtualHeight(); + + if ( byPre != byAct ) + { + wxLogDebug(wxT("VirtualHeight is %u, should be %u"), byPre, byAct); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnInsertPage( wxCommandEvent& WXUNUSED(event) ) +{ + m_pPropGridManager->AddPage(wxT("New Page")); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnRemovePage( wxCommandEvent& WXUNUSED(event) ) +{ + m_pPropGridManager->RemovePage(m_pPropGridManager->GetSelectedPage()); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnSaveState( wxCommandEvent& WXUNUSED(event) ) +{ + m_savedState = m_pPropGridManager->SaveEditableState(); + wxLogDebug(wxT("Saved editable state string: \"%s\""), m_savedState.c_str()); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnRestoreState( wxCommandEvent& WXUNUSED(event) ) +{ + m_pPropGridManager->RestoreEditableState(m_savedState); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnSetSpinCtrlEditorClick( wxCommandEvent& WXUNUSED(event) ) +{ +#if wxUSE_SPINBTN + wxPGProperty* pgId = m_pPropGridManager->GetSelectedProperty(); + if ( pgId ) + m_pPropGridManager->SetPropertyEditor( pgId, wxPG_EDITOR(SpinCtrl) ); + else + wxMessageBox(wxT("First select a property")); +#endif +} + +// ----------------------------------------------------------------------- + +void FormMain::OnTestReplaceClick( wxCommandEvent& WXUNUSED(event) ) +{ + wxPGProperty* pgId = m_pPropGridManager->GetSelectedProperty(); + if ( pgId ) + { + wxPGChoices choices; + choices.Add(wxT("Flag 0"),0x0001); + choices.Add(wxT("Flag 1"),0x0002); + choices.Add(wxT("Flag 2"),0x0004); + choices.Add(wxT("Flag 3"),0x0008); + wxPGProperty* newId = m_pPropGridManager->ReplaceProperty( pgId, + new wxFlagsProperty(wxT("ReplaceFlagsProperty"), wxPG_LABEL, choices, 0x0003) ); + m_pPropGridManager->SetPropertyAttribute( newId, + wxPG_BOOL_USE_CHECKBOX, + true, + wxPG_RECURSE ); + } + else + wxMessageBox(wxT("First select a property")); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnClearModifyStatusClick( wxCommandEvent& WXUNUSED(event) ) +{ + m_pPropGridManager->ClearModifiedStatus(); +} + +// ----------------------------------------------------------------------- + +// Freeze check-box checked? +void FormMain::OnFreezeClick( wxCommandEvent& event ) +{ + if ( !m_pPropGridManager ) return; + + if ( event.IsChecked() ) + { + if ( !m_pPropGridManager->IsFrozen() ) + { + m_pPropGridManager->Freeze(); + } + } + else + { + if ( m_pPropGridManager->IsFrozen() ) + { + m_pPropGridManager->Thaw(); + m_pPropGridManager->Refresh(); + } + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnAbout(wxCommandEvent& WXUNUSED(event)) +{ + wxString msg; + msg.Printf( wxT("wxPropertyGrid Sample") +#if wxUSE_UNICODE + #if defined(wxUSE_UNICODE_UTF8) && wxUSE_UNICODE_UTF8 + wxT(" <utf-8>") + #else + wxT(" <unicode>") + #endif +#else + wxT(" <ansi>") +#endif +#ifdef __WXDEBUG__ + wxT(" <debug>") +#else + wxT(" <release>") +#endif + wxT("\n\n") + wxT("Programmed by %s\n\n") + wxT("Using %s\n\n"), + wxT("Jaakko Salli"), wxVERSION_STRING + ); + + wxMessageBox(msg, _T("About"), wxOK | wxICON_INFORMATION, this); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnColourScheme( wxCommandEvent& event ) +{ + int id = event.GetId(); + if ( id == ID_COLOURSCHEME1 ) + { + m_pPropGridManager->GetGrid()->ResetColours(); + } + else if ( id == ID_COLOURSCHEME2 ) + { + // white + wxColour my_grey_1(212,208,200); + wxColour my_grey_3(113,111,100); + m_pPropGridManager->Freeze(); + m_pPropGridManager->GetGrid()->SetMarginColour( *wxWHITE ); + m_pPropGridManager->GetGrid()->SetCaptionBackgroundColour( *wxWHITE ); + m_pPropGridManager->GetGrid()->SetCellBackgroundColour( *wxWHITE ); + m_pPropGridManager->GetGrid()->SetCellTextColour( my_grey_3 ); + m_pPropGridManager->GetGrid()->SetLineColour( my_grey_1 ); //wxColour(160,160,160) + m_pPropGridManager->Thaw(); + } + else if ( id == ID_COLOURSCHEME3 ) + { + // .NET + wxColour my_grey_1(212,208,200); + wxColour my_grey_2(236,233,216); + m_pPropGridManager->Freeze(); + m_pPropGridManager->GetGrid()->SetMarginColour( my_grey_1 ); + m_pPropGridManager->GetGrid()->SetCaptionBackgroundColour( my_grey_1 ); + m_pPropGridManager->GetGrid()->SetLineColour( my_grey_1 ); + m_pPropGridManager->Thaw(); + } + else if ( id == ID_COLOURSCHEME4 ) + { + // cream + + wxColour my_grey_1(212,208,200); + wxColour my_grey_2(241,239,226); + wxColour my_grey_3(113,111,100); + m_pPropGridManager->Freeze(); + m_pPropGridManager->GetGrid()->SetMarginColour( *wxWHITE ); + m_pPropGridManager->GetGrid()->SetCaptionBackgroundColour( *wxWHITE ); + m_pPropGridManager->GetGrid()->SetCellBackgroundColour( my_grey_2 ); + m_pPropGridManager->GetGrid()->SetCellBackgroundColour( my_grey_2 ); + m_pPropGridManager->GetGrid()->SetCellTextColour( my_grey_3 ); + m_pPropGridManager->GetGrid()->SetLineColour( my_grey_1 ); + m_pPropGridManager->Thaw(); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnCatColours( wxCommandEvent& event ) +{ + wxPropertyGrid* pg = m_pPropGridManager->GetGrid(); + m_pPropGridManager->Freeze(); + + if ( event.IsChecked() ) + { + // Set custom colours. + pg->SetPropertyTextColour( wxT("Appearance"), wxColour(255,0,0), false ); + pg->SetPropertyBackgroundColour( wxT("Appearance"), wxColour(255,255,183) ); + pg->SetPropertyTextColour( wxT("Appearance"), wxColour(255,0,183) ); + pg->SetPropertyTextColour( wxT("PositionCategory"), wxColour(0,255,0), false ); + pg->SetPropertyBackgroundColour( wxT("PositionCategory"), wxColour(255,226,190) ); + pg->SetPropertyTextColour( wxT("PositionCategory"), wxColour(255,0,190) ); + pg->SetPropertyTextColour( wxT("Environment"), wxColour(0,0,255), false ); + pg->SetPropertyBackgroundColour( wxT("Environment"), wxColour(208,240,175) ); + pg->SetPropertyTextColour( wxT("Environment"), wxColour(255,255,255) ); + pg->SetPropertyBackgroundColour( wxT("More Examples"), wxColour(172,237,255) ); + pg->SetPropertyTextColour( wxT("More Examples"), wxColour(172,0,255) ); + } + else + { + // Revert to original. + pg->SetPropertyColoursToDefault( wxT("Appearance") ); + pg->SetPropertyColoursToDefault( wxT("PositionCategory") ); + pg->SetPropertyColoursToDefault( wxT("Environment") ); + pg->SetPropertyColoursToDefault( wxT("More Examples") ); + } + m_pPropGridManager->Thaw(); + m_pPropGridManager->Refresh(); +} + +// ----------------------------------------------------------------------- + +#define ADD_FLAG(FLAG) \ + chs.Add(wxT(#FLAG)); \ + vls.Add(FLAG); \ + if ( (flags & FLAG) == FLAG ) sel.Add(ind); \ + ind++; + +void FormMain::OnSelectStyle( wxCommandEvent& WXUNUSED(event) ) +{ + int style; + int extraStyle; + + { + wxArrayString chs; + wxArrayInt vls; + wxArrayInt sel; + unsigned int ind = 0; + int flags = m_pPropGridManager->GetWindowStyle(); + ADD_FLAG(wxPG_HIDE_CATEGORIES) + ADD_FLAG(wxPG_AUTO_SORT) + ADD_FLAG(wxPG_BOLD_MODIFIED) + ADD_FLAG(wxPG_SPLITTER_AUTO_CENTER) + ADD_FLAG(wxPG_TOOLTIPS) + ADD_FLAG(wxPG_STATIC_SPLITTER) + ADD_FLAG(wxPG_HIDE_MARGIN) + ADD_FLAG(wxPG_LIMITED_EDITING) + ADD_FLAG(wxPG_TOOLBAR) + ADD_FLAG(wxPG_DESCRIPTION) + wxMultiChoiceDialog dlg( this, wxT("Select window styles to use"), + wxT("wxPropertyGrid Window Style"), chs ); + dlg.SetSelections(sel); + if ( dlg.ShowModal() == wxID_CANCEL ) + return; + + flags = 0; + sel = dlg.GetSelections(); + for ( ind = 0; ind < sel.size(); ind++ ) + flags |= vls[sel[ind]]; + + style = flags; + } + + { + wxArrayString chs; + wxArrayInt vls; + wxArrayInt sel; + unsigned int ind = 0; + int flags = m_pPropGridManager->GetExtraStyle(); + ADD_FLAG(wxPG_EX_INIT_NOCAT) + ADD_FLAG(wxPG_EX_NO_FLAT_TOOLBAR) + ADD_FLAG(wxPG_EX_MODE_BUTTONS) + ADD_FLAG(wxPG_EX_HELP_AS_TOOLTIPS) + ADD_FLAG(wxPG_EX_NATIVE_DOUBLE_BUFFERING) + ADD_FLAG(wxPG_EX_AUTO_UNSPECIFIED_VALUES) + ADD_FLAG(wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES) + ADD_FLAG(wxPG_EX_LEGACY_VALIDATORS) + wxMultiChoiceDialog dlg( this, wxT("Select extra window styles to use"), + wxT("wxPropertyGrid Extra Style"), chs ); + dlg.SetSelections(sel); + if ( dlg.ShowModal() == wxID_CANCEL ) + return; + + flags = 0; + sel = dlg.GetSelections(); + for ( ind = 0; ind < sel.size(); ind++ ) + flags |= vls[sel[ind]]; + + extraStyle = flags; + } + + CreateGrid( style, extraStyle ); + + SetSize( + (wxSystemSettings::GetMetric(wxSYS_SCREEN_X)/10)*4, + (wxSystemSettings::GetMetric(wxSYS_SCREEN_Y)/10)*8 + ); + Centre(); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnSetColumns( wxCommandEvent& WXUNUSED(event) ) +{ + long colCount = ::wxGetNumberFromUser(wxT("Enter number of columns (2-20)."),wxT("Columns:"), + wxT("Change Columns"),m_pPropGridManager->GetColumnCount(), + 2,20); + + if ( colCount >= 2 ) + { + m_pPropGridManager->SetColumnCount(colCount); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnSetPropertyValue( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGrid* pg = m_pPropGridManager->GetGrid(); + wxPGProperty* selected = pg->GetSelection(); + + if ( selected ) + { + wxString value = ::wxGetTextFromUser( wxT("Enter new value:") ); + pg->SetPropertyValue( selected, value ); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnInsertChoice( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGrid* pg = m_pPropGridManager->GetGrid(); + + wxPGProperty* selected = pg->GetSelection(); + wxPGChoices& choices = pg->GetPropertyChoices(selected); + + // Insert new choice to the center of list + + if ( choices.IsOk() ) + { + int pos = choices.GetCount() / 2; + pg->InsertPropertyChoice(selected,wxT("New Choice"),pos); + } + else + { + ::wxMessageBox(wxT("First select a property with some choices.")); + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnDeleteChoice( wxCommandEvent& WXUNUSED(event) ) +{ + wxPropertyGrid* pg = m_pPropGridManager->GetGrid(); + + wxPGProperty* selected = pg->GetSelection(); + wxPGChoices& choices = pg->GetPropertyChoices(selected); + + // Deletes choice from the center of list + + if ( choices.IsOk() ) + { + int pos = choices.GetCount() / 2; + pg->DeletePropertyChoice(selected,pos); + } + else + { + ::wxMessageBox(wxT("First select a property with some choices.")); + } +} + +// ----------------------------------------------------------------------- + +#include <wx/colordlg.h> + +void FormMain::OnMisc ( wxCommandEvent& event ) +{ + int id = event.GetId(); + if ( id == ID_STATICLAYOUT ) + { + long wsf = m_pPropGridManager->GetWindowStyleFlag(); + if ( event.IsChecked() ) m_pPropGridManager->SetWindowStyleFlag( wsf|wxPG_STATIC_LAYOUT ); + else m_pPropGridManager->SetWindowStyleFlag( wsf&~(wxPG_STATIC_LAYOUT) ); + } + else if ( id == ID_CLEAR ) + { + m_pPropGridManager->ClearPropertyValue(m_pPropGridManager->GetGrid()->GetSelection()); + } + else if ( id == ID_COLLAPSEALL ) + { + wxPGVIterator it; + wxPropertyGrid* pg = m_pPropGridManager->GetGrid(); + + for ( it = pg->GetVIterator( wxPG_ITERATE_ALL ); !it.AtEnd(); it.Next() ) + it.GetProperty()->SetExpanded( false ); + + pg->RefreshGrid(); + } + else if ( id == ID_GETVALUES ) + { + m_storedValues = m_pPropGridManager->GetGrid()->GetPropertyValues(wxT("Test"), + m_pPropGridManager->GetGrid()->GetRoot(), + wxPG_KEEP_STRUCTURE|wxPG_INC_ATTRIBUTES); + } + else if ( id == ID_SETVALUES ) + { + if ( m_storedValues.GetType() == wxT("list") ) + { + m_pPropGridManager->GetGrid()->SetPropertyValues(m_storedValues); + } + else + wxMessageBox(wxT("First use Get Property Values.")); + } + else if ( id == ID_SETVALUES2 ) + { + wxVariant list; + list.NullList(); + list.Append( wxVariant((long)1234,wxT("VariantLong")) ); + list.Append( wxVariant((bool)TRUE,wxT("VariantBool")) ); + list.Append( wxVariant(wxT("Test Text"),wxT("VariantString")) ); + m_pPropGridManager->GetGrid()->SetPropertyValues(list); + } + else if ( id == ID_COLLAPSE ) + { + // Collapses selected. + wxPGProperty* id = m_pPropGridManager->GetSelectedProperty(); + if ( id ) + { + m_pPropGridManager->Collapse(id); + } + } + else if ( id == ID_RUNTESTFULL ) + { + // Runs a regression test. + RunTests(true); + } + else if ( id == ID_RUNTESTPARTIAL ) + { + // Runs a regression test. + RunTests(false); + } + else if ( id == ID_UNSPECIFY ) + { + wxPGProperty* prop = m_pPropGridManager->GetSelectedProperty(); + if ( prop ) + { + m_pPropGridManager->SetPropertyValueUnspecified(prop); + } + } + else if ( id == ID_SETCOLOUR ) + { + wxPGProperty* prop = m_pPropGridManager->GetSelectedProperty(); + if ( prop ) + { + wxColourData data; + data.SetChooseFull(true); + int i; + for ( i = 0; i < 16; i++) + { + wxColour colour(i*16, i*16, i*16); + data.SetCustomColour(i, colour); + } + + wxColourDialog dialog(this, &data); + if ( dialog.ShowModal() == wxID_OK ) + { + wxColourData retData = dialog.GetColourData(); + m_pPropGridManager->GetGrid()->SetPropertyBackgroundColour(prop,retData.GetColour()); + } + } + } +} + +// ----------------------------------------------------------------------- + +void FormMain::OnPopulateClick( wxCommandEvent& event ) +{ + int id = event.GetId(); + m_propGrid->Clear(); + m_propGrid->Freeze(); + if ( id == ID_POPULATE1 ) + { + PopulateWithStandardItems(); + } + else if ( id == ID_POPULATE2 ) + { + PopulateWithLibraryConfig(); + } + m_propGrid->Thaw(); +} + +// ----------------------------------------------------------------------- + +void DisplayMinimalFrame(wxWindow* parent); // in minimal.cpp + +void FormMain::OnRunMinimalClick( wxCommandEvent& WXUNUSED(event) ) +{ + DisplayMinimalFrame(this); +} + +// ----------------------------------------------------------------------- + +FormMain::~FormMain() +{ +} + +// ----------------------------------------------------------------------- + +IMPLEMENT_APP(cxApplication) + +bool cxApplication::OnInit() +{ + //wxLocale Locale; + //Locale.Init(wxLANGUAGE_FINNISH); + + FormMain* frame = Form1 = new FormMain( wxT("wxPropertyGrid Sample"), wxPoint(0,0), wxSize(300,500) ); + frame->Show(true); + + // + // Parse command-line + wxApp& app = wxGetApp(); + if ( app.argc > 1 ) + { + wxString s = app.argv[1]; + if ( s == wxT("--run-tests") ) + { + // + // Run tests + bool testResult = frame->RunTests(true); + + if ( testResult ) + return false; + } + } + + return true; +} + +// ----------------------------------------------------------------------- + +void FormMain::OnIdle( wxIdleEvent& event ) +{ + /* + // This code is useful for debugging focus problems + static wxWindow* last_focus = (wxWindow*) NULL; + + wxWindow* cur_focus = ::wxWindow::FindFocus(); + + if ( cur_focus != last_focus ) + { + const wxChar* class_name = wxT("<none>"); + if ( cur_focus ) + class_name = cur_focus->GetClassInfo()->GetClassName(); + last_focus = cur_focus; + wxLogDebug( wxT("FOCUSED: %s %X"), + class_name, + (unsigned int)cur_focus); + } + */ + + event.Skip(); +} + +// ----------------------------------------------------------------------- diff --git a/samples/propgrid/propgrid.dsp b/samples/propgrid/propgrid.dsp new file mode 100644 index 0000000000..c509131798 --- /dev/null +++ b/samples/propgrid/propgrid.dsp @@ -0,0 +1,276 @@ +# Microsoft Developer Studio Project File - Name="propgrid" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=propgrid - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "propgrid.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "propgrid.mak" CFG="propgrid - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "propgrid - Win32 DLL Universal Release" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 DLL Universal Debug" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 DLL Release" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 DLL Debug" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 Universal Release" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 Universal Debug" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "propgrid - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivudll" +# PROP BASE Intermediate_Dir "vc_mswunivudll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivudll" +# PROP Intermediate_Dir "vc_mswunivudll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswunivudll\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswunivudll\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\propgrid.exe" /debug /pdb:"vc_mswunivudll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\propgrid.exe" /debug /pdb:"vc_mswunivudll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivuddll" +# PROP BASE Intermediate_Dir "vc_mswunivuddll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivuddll" +# PROP Intermediate_Dir "vc_mswunivuddll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswunivuddll\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswunivuddll\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\propgrid.exe" /debug /pdb:"vc_mswunivuddll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\propgrid.exe" /debug /pdb:"vc_mswunivuddll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswudll" +# PROP BASE Intermediate_Dir "vc_mswudll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswudll" +# PROP Intermediate_Dir "vc_mswudll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswudll\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswudll\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\propgrid.exe" /debug /pdb:"vc_mswudll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\propgrid.exe" /debug /pdb:"vc_mswudll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswuddll" +# PROP BASE Intermediate_Dir "vc_mswuddll\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswuddll" +# PROP Intermediate_Dir "vc_mswuddll\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswuddll\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswuddll\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\propgrid.exe" /debug /pdb:"vc_mswuddll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\propgrid.exe" /debug /pdb:"vc_mswuddll\propgrid.pdb" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivu" +# PROP BASE Intermediate_Dir "vc_mswunivu\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivu" +# PROP Intermediate_Dir "vc_mswunivu\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswunivu\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswunivu\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\propgrid.exe" /debug /pdb:"vc_mswunivu\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\propgrid.exe" /debug /pdb:"vc_mswunivu\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivud" +# PROP BASE Intermediate_Dir "vc_mswunivud\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivud" +# PROP Intermediate_Dir "vc_mswunivud\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswunivud\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswunivud\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\propgrid.exe" /debug /pdb:"vc_mswunivud\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\propgrid.exe" /debug /pdb:"vc_mswunivud\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswu" +# PROP BASE Intermediate_Dir "vc_mswu\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswu" +# PROP Intermediate_Dir "vc_mswu\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswu\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswu\propgrid.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\propgrid.exe" /debug /pdb:"vc_mswu\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\propgrid.exe" /debug /pdb:"vc_mswu\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "propgrid - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswud" +# PROP BASE Intermediate_Dir "vc_mswud\propgrid" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswud" +# PROP Intermediate_Dir "vc_mswud\propgrid" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswud\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswud\propgrid.pdb /Od /Gm /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\propgrid.exe" /debug /pdb:"vc_mswud\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\propgrid.exe" /debug /pdb:"vc_mswud\propgrid.pdb" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ENDIF + +# Begin Target + +# Name "propgrid - Win32 DLL Universal Release" +# Name "propgrid - Win32 DLL Universal Debug" +# Name "propgrid - Win32 DLL Release" +# Name "propgrid - Win32 DLL Debug" +# Name "propgrid - Win32 Universal Release" +# Name "propgrid - Win32 Universal Debug" +# Name "propgrid - Win32 Release" +# Name "propgrid - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\propgrid.cpp +# End Source File +# Begin Source File + +SOURCE=.\propgrid_minimal.cpp +# End Source File +# Begin Source File + +SOURCE=.\..\sample.rc +# End Source File +# Begin Source File + +SOURCE=.\sampleprops.cpp +# End Source File +# Begin Source File + +SOURCE=.\tests.cpp +# End Source File +# End Group +# End Target +# End Project + diff --git a/samples/propgrid/propgrid.h b/samples/propgrid/propgrid.h new file mode 100644 index 0000000000..ef1048a78a --- /dev/null +++ b/samples/propgrid/propgrid.h @@ -0,0 +1,256 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/propgrid.h +// Purpose: wxPropertyGrid sample +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_SAMPLES_PROPGRID_PROPGRID_H_ +#define _WX_SAMPLES_PROPGRID_PROPGRID_H_ + +// ----------------------------------------------------------------------- + +class wxAdvImageFileProperty : public wxFileProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxAdvImageFileProperty) +public: + + wxAdvImageFileProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxString& value = wxEmptyString ); + virtual ~wxAdvImageFileProperty (); + + virtual void OnSetValue(); // Override to allow image loading. + + WX_PG_DECLARE_CHOICE_METHODS() + WX_PG_DECLARE_EVENT_METHODS() + WX_PG_DECLARE_CUSTOM_PAINT_METHODS() + + void LoadThumbnails( size_t n ); + +protected: + wxImage* m_pImage; // Temporary thumbnail data. + + static wxPGChoices ms_choices; + + int m_index; // Index required for choice behaviour. +}; + +// ----------------------------------------------------------------------- + +class wxVector3f +{ +public: + wxVector3f() + { + x = y = z = 0.0; + } + wxVector3f( double x, double y, double z ) + { + x = x; y = y; z = z; + } + + double x, y, z; +}; + +inline bool operator == (const wxVector3f& a, const wxVector3f& b) +{ + return (a.x == b.x && a.y == b.y && a.z == b.z); +} + +WX_PG_DECLARE_VARIANT_DATA(wxVector3fVariantData, wxVector3f, wxEMPTY_PARAMETER_VALUE) + +class wxVectorProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxVectorProperty) +public: + + wxVectorProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxVector3f& value = wxVector3f() ); + virtual ~wxVectorProperty(); + + WX_PG_DECLARE_PARENTAL_METHODS() + +protected: +}; + +// ----------------------------------------------------------------------- + +class wxTriangle +{ +public: + wxVector3f a, b, c; +}; + +inline bool operator == (const wxTriangle& a, const wxTriangle& b) +{ + return (a.a == b.a && a.b == b.b && a.c == b.c); +} + +WX_PG_DECLARE_VARIANT_DATA(wxTriangleVariantData, wxTriangle, wxEMPTY_PARAMETER_VALUE) + +class wxTriangleProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxTriangleProperty) +public: + + wxTriangleProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxTriangle& value = wxTriangle() ); + virtual ~wxTriangleProperty(); + + WX_PG_DECLARE_PARENTAL_METHODS() + +protected: +}; + +// ----------------------------------------------------------------------- + +enum +{ + ID_COLOURSCHEME4 = 100 +}; + +// ----------------------------------------------------------------------- + +class FormMain : public wxFrame +{ +public: + FormMain(const wxString& title, const wxPoint& pos, const wxSize& size ); + ~FormMain(); + + wxPropertyGridManager* m_pPropGridManager; + wxPropertyGrid* m_propGrid; + + wxTextCtrl* m_tcPropLabel; + wxWindow* m_panel; + wxBoxSizer* m_topSizer; + + wxPGChoices m_combinedFlags; + + wxMenuItem* m_itemCatColours; + wxMenuItem* m_itemFreeze; + wxMenuItem* m_itemEnable; + + wxVariant m_storedValues; + + wxString m_savedState; + + + void CreateGrid( int style, int extraStyle ); + + // These are used in CreateGrid(), and in tests to compose + // grids for testing purposes. + void InitPanel(); + void PopulateGrid(); + void FinalizePanel( bool wasCreated = true ); + + void PopulateWithStandardItems(); + void PopulateWithExamples(); + void PopulateWithLibraryConfig(); + + void OnCloseClick( wxCommandEvent& event ); + void OnLabelTextChange( wxCommandEvent& event ); + + void OnColourScheme( wxCommandEvent& event ); + + void OnInsertPropClick( wxCommandEvent& event ); + void OnAppendPropClick( wxCommandEvent& event ); + void OnClearClick( wxCommandEvent& event ); + void OnAppendCatClick( wxCommandEvent& event ); + void OnInsertCatClick( wxCommandEvent& event ); + void OnDelPropClick( wxCommandEvent& event ); + void OnDelPropRClick( wxCommandEvent& event ); + + void OnContextMenu( wxContextMenuEvent& event ); + + void OnEnableDisable( wxCommandEvent& event ); + void OnHideShow( wxCommandEvent& event ); + void OnClearModifyStatusClick( wxCommandEvent& event ); + void OnFreezeClick( wxCommandEvent& event ); + void OnDumpList( wxCommandEvent& event ); + void OnCatColours( wxCommandEvent& event ); + void OnSetColumns( wxCommandEvent& event ); + void OnMisc( wxCommandEvent& event ); + void OnPopulateClick( wxCommandEvent& event ); + void OnSetSpinCtrlEditorClick( wxCommandEvent& event ); + void OnTestReplaceClick( wxCommandEvent& event ); + void OnTestXRC( wxCommandEvent& event ); + void OnEnableCommonValues( wxCommandEvent& event ); + void OnSelectStyle( wxCommandEvent& event ); + + void OnFitColumnsClick( wxCommandEvent& event ); + + void OnChangeFlagsPropItemsClick( wxCommandEvent& event ); + + void OnSaveToFileClick( wxCommandEvent& event ); + void OnLoadFromFileClick( wxCommandEvent& event ); + + void OnSetPropertyValue( wxCommandEvent& event ); + void OnInsertChoice( wxCommandEvent& event ); + void OnDeleteChoice( wxCommandEvent& event ); + void OnInsertPage( wxCommandEvent& event ); + void OnRemovePage( wxCommandEvent& event ); + + void OnSaveState( wxCommandEvent& event ); + void OnRestoreState( wxCommandEvent& event ); + + void OnRunMinimalClick( wxCommandEvent& event ); + + void OnIterate1Click( wxCommandEvent& event ); + void OnIterate2Click( wxCommandEvent& event ); + void OnIterate3Click( wxCommandEvent& event ); + void OnIterate4Click( wxCommandEvent& event ); + + void OnPropertyGridChange( wxPropertyGridEvent& event ); + void OnPropertyGridChanging( wxPropertyGridEvent& event ); + void OnPropertyGridSelect( wxPropertyGridEvent& event ); + void OnPropertyGridHighlight( wxPropertyGridEvent& event ); + void OnPropertyGridItemRightClick( wxPropertyGridEvent& event ); + void OnPropertyGridItemDoubleClick( wxPropertyGridEvent& event ); + void OnPropertyGridPageChange( wxPropertyGridEvent& event ); + void OnPropertyGridButtonClick( wxCommandEvent& event ); + void OnPropertyGridTextUpdate( wxCommandEvent& event ); + void OnPropertyGridKeyEvent( wxKeyEvent& event ); + void OnPropertyGridItemCollapse( wxPropertyGridEvent& event ); + void OnPropertyGridItemExpand( wxPropertyGridEvent& event ); + + void OnAbout( wxCommandEvent& event ); + + void OnMove( wxMoveEvent& event ); + void OnResize( wxSizeEvent& event ); + void OnPaint( wxPaintEvent& event ); + void OnCloseEvent( wxCloseEvent& event ); + + void OnIdle( wxIdleEvent& event ); + + void AddTestProperties( wxPropertyGridPage* pg ); + + bool RunTests( bool fullTest, bool interactive = false ); + +private: + DECLARE_EVENT_TABLE() +}; + +// ----------------------------------------------------------------------- + +class cxApplication : public wxApp +{ +public: + + virtual bool OnInit(); + +private: + FormMain *Form1; +}; + +DECLARE_APP(cxApplication) + +// ----------------------------------------------------------------------- + +#endif // _WX_SAMPLES_PROPGRID_PROPGRID_H_ diff --git a/samples/propgrid/propgrid_minimal.cpp b/samples/propgrid/propgrid_minimal.cpp new file mode 100644 index 0000000000..cd0b4e0385 --- /dev/null +++ b/samples/propgrid/propgrid_minimal.cpp @@ -0,0 +1,107 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/propgrid_minimal.cpp +// Purpose: Minimal portion of wxPropertyGrid sample +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-23 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#include "wx/wx.h" +#include "wx/propgrid/propgrid.h" + +class MyFrame : public wxFrame +{ +public: + MyFrame(wxWindow* parent); + + void OnAction(wxCommandEvent& event); + void OnPropertyGridChange(wxPropertyGridEvent& event); + +private: + wxPropertyGrid* m_pg; + DECLARE_EVENT_TABLE() +}; + +// +// Called from propgridsample.cpp +// +void DisplayMinimalFrame(wxWindow* parent) +{ + MyFrame *frame = new MyFrame(parent); + frame->Show(true); +} + +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(wxID_HIGHEST+1, MyFrame::OnAction) + EVT_PG_CHANGED( -1, MyFrame::OnPropertyGridChange ) +END_EVENT_TABLE() + +MyFrame::MyFrame(wxWindow* parent) + : wxFrame(parent, wxID_ANY, wxT("PropertyGrid Test")) +{ + wxMenu *Menu = new wxMenu; + Menu->Append(wxID_HIGHEST+1, wxT("Action")); + wxMenuBar *MenuBar = new wxMenuBar(); + MenuBar->Append(Menu, wxT("Action")); + SetMenuBar(MenuBar); + + wxPropertyGrid *pg = new wxPropertyGrid(this,-1,wxDefaultPosition,wxSize(400,400), + wxPG_SPLITTER_AUTO_CENTER | + wxPG_BOLD_MODIFIED ); + m_pg = pg; + + for ( int i=0; i< 20; i++ ) + pg->Append(new wxStringProperty(wxString::Format(wxT("Item %i"),i), wxPG_LABEL)); + + wxPGProperty* topId; + wxPGProperty* medId; + wxPGProperty* botId; + + topId = pg->Append( new wxStringProperty(wxT("Top Item"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(topId, true); + medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item A"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(medId, true); + botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(botId, true); + pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) ); + pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) ); + medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item B"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(medId, true); + botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(botId, true); + pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) ); + pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) ); + medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item C"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(medId, true); + botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) ); + pg->LimitPropertyEditing(botId, true); + pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) ); + pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) ); + pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) ); + + SetSize(400, 600); +} + +void MyFrame::OnPropertyGridChange(wxPropertyGridEvent &event) +{ + wxPGProperty* p = event.GetProperty(); + + wxLogDebug(wxT("OnPropertyGridChange(%s)"), p->GetName().c_str()); + + if ( p->GetBaseName() == wxT("x") ) + { + wxLogDebug(wxT("double values=%.2f)"), m_pg->GetPropertyValueAsDouble(p)); + } +} + +void MyFrame::OnAction(wxCommandEvent &) +{ +} diff --git a/samples/propgrid/propgrid_vc7.vcproj b/samples/propgrid/propgrid_vc7.vcproj new file mode 100644 index 0000000000..d3d81f5834 --- /dev/null +++ b/samples/propgrid/propgrid_vc7.vcproj @@ -0,0 +1,649 @@ +<?xml version="1.0" ?> +<!-- + + This makefile was generated by + Bakefile 0.2.3 (http://www.bakefile.org) + Do not modify, all changes will be overwritten! + +--> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="propgrid" + ProjectGUID="{6A7A28DD-C53E-50B0-B8E2-8D5A1D4206C7}"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="DLL Universal Release|Win32" + OutputDirectory="vc_mswunivudll" + IntermediateDirectory="vc_mswunivudll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivudll\propgrid\" + ObjectFile="vc_mswunivudll\propgrid\" + ProgramDataBaseFileName="vc_mswunivudll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivudll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivudll\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivudll\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Universal Debug|Win32" + OutputDirectory="vc_mswunivuddll" + IntermediateDirectory="vc_mswunivuddll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivuddll\propgrid\" + ObjectFile="vc_mswunivuddll\propgrid\" + ProgramDataBaseFileName="vc_mswunivuddll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivuddll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivuddll\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivuddll\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Release|Win32" + OutputDirectory="vc_mswudll" + IntermediateDirectory="vc_mswudll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswudll\propgrid\" + ObjectFile="vc_mswudll\propgrid\" + ProgramDataBaseFileName="vc_mswudll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswudll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswudll\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswudll\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="DLL Debug|Win32" + OutputDirectory="vc_mswuddll" + IntermediateDirectory="vc_mswuddll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswuddll\propgrid\" + ObjectFile="vc_mswuddll\propgrid\" + ProgramDataBaseFileName="vc_mswuddll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswuddll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswuddll\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswuddll\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Universal Release|Win32" + OutputDirectory="vc_mswunivu" + IntermediateDirectory="vc_mswunivu\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivu\propgrid\" + ObjectFile="vc_mswunivu\propgrid\" + ProgramDataBaseFileName="vc_mswunivu\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivu\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivu\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivu\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Universal Debug|Win32" + OutputDirectory="vc_mswunivud" + IntermediateDirectory="vc_mswunivud\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivud\propgrid\" + ObjectFile="vc_mswunivud\propgrid\" + ProgramDataBaseFileName="vc_mswunivud\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivud\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivud\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivud\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="vc_mswu" + IntermediateDirectory="vc_mswu\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswu\propgrid\" + ObjectFile="vc_mswu\propgrid\" + ProgramDataBaseFileName="vc_mswu\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswu\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswu\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswu\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="vc_mswud" + IntermediateDirectory="vc_mswud\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1"> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCIDLTool"/> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswud\propgrid\" + ObjectFile="vc_mswud\propgrid\" + ProgramDataBaseFileName="vc_mswud\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true"/> + <Tool + Name="VCManagedResourceCompilerTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswud\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswud\propgrid.pdb" + TargetMachine="1"/> + <Tool + Name="VCALinkTool"/> + <Tool + Name="VCXDCMakeTool"/> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswud\propgrid_vc7.bsc" + SuppressStartupBanner="true"/> + <Tool + Name="VCFxCopTool"/> + <Tool + Name="VCAppVerifierTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCPostBuildEventTool"/> + </Configuration> + </Configurations> + <References> + + </References> + <Files> + <Filter + Name="Source Files" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"> + <File + RelativePath=".\propgrid.cpp"/> + <File + RelativePath=".\propgrid_minimal.cpp"/> + <File + RelativePath=".\sampleprops.cpp"/> + <File + RelativePath=".\tests.cpp"/> + </Filter> + <Filter + Name="Resource Files" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"> + <File + RelativePath=".\..\sample.rc"/> + </Filter> + </Files> + <Globals> + + </Globals> +</VisualStudioProject> + diff --git a/samples/propgrid/propgrid_vc8.vcproj b/samples/propgrid/propgrid_vc8.vcproj new file mode 100644 index 0000000000..6d3f241683 --- /dev/null +++ b/samples/propgrid/propgrid_vc8.vcproj @@ -0,0 +1,813 @@ +<?xml version="1.0" ?> +<!-- + + This makefile was generated by + Bakefile 0.2.3 (http://www.bakefile.org) + Do not modify, all changes will be overwritten! + +--> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="propgrid" + ProjectGUID="{67938AAC-80E6-5FE3-BA5F-1B02DB39DBAC}" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + + </ToolFiles> + <Configurations> + <Configuration + Name="DLL Universal Release|Win32" + OutputDirectory="vc_mswunivudll" + IntermediateDirectory="vc_mswunivudll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivudll\propgrid\" + ObjectFile="vc_mswunivudll\propgrid\" + ProgramDataBaseFileName="vc_mswunivudll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivudll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivudll\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivudll\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Universal Debug|Win32" + OutputDirectory="vc_mswunivuddll" + IntermediateDirectory="vc_mswunivuddll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivuddll\propgrid\" + ObjectFile="vc_mswunivuddll\propgrid\" + ProgramDataBaseFileName="vc_mswunivuddll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivuddll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivuddll\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivuddll\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Release|Win32" + OutputDirectory="vc_mswudll" + IntermediateDirectory="vc_mswudll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswudll\propgrid\" + ObjectFile="vc_mswudll\propgrid\" + ProgramDataBaseFileName="vc_mswudll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswudll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswudll\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswudll\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="DLL Debug|Win32" + OutputDirectory="vc_mswuddll" + IntermediateDirectory="vc_mswuddll\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswuddll\propgrid\" + ObjectFile="vc_mswuddll\propgrid\" + ProgramDataBaseFileName="vc_mswuddll\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswuddll\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_dll" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswuddll\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswuddll\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Universal Release|Win32" + OutputDirectory="vc_mswunivu" + IntermediateDirectory="vc_mswunivu\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivu\propgrid\" + ObjectFile="vc_mswunivu\propgrid\" + ProgramDataBaseFileName="vc_mswunivu\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29u_propgrid.lib wxmswuniv29u_adv.lib wxmswuniv29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivu\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivu\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivu\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Universal Debug|Win32" + OutputDirectory="vc_mswunivud" + IntermediateDirectory="vc_mswunivud\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswunivud\propgrid\" + ObjectFile="vc_mswunivud\propgrid\" + ProgramDataBaseFileName="vc_mswunivud\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmswuniv29ud_propgrid.lib wxmswuniv29ud_adv.lib wxmswuniv29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswunivud\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswunivud\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswunivud\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="vc_mswu" + IntermediateDirectory="vc_mswu\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="false" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="2" + PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswu\propgrid\" + ObjectFile="vc_mswu\propgrid\" + ProgramDataBaseFileName="vc_mswu\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29u_propgrid.lib wxmsw29u_adv.lib wxmsw29u_core.lib wxbase29u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswu\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswu\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswu\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory="vc_mswud" + IntermediateDirectory="vc_mswud\propgrid" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples" + MinimalRebuild="true" + ExceptionHandling="1" + AdditionalOptions="" + RuntimeLibrary="3" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + BasicRuntimeChecks="3" + DebugInformationFormat="3" + Detect64BitPortabilityProblems="true" + RuntimeTypeInfo="true" + AssemblerListingLocation="vc_mswud\propgrid\" + ObjectFile="vc_mswud\propgrid\" + ProgramDataBaseFileName="vc_mswud\propgrid.pdb" + WarningLevel="4" + SuppressStartupBanner="true" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + Culture="1033" + AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples" + PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="wxmsw29ud_propgrid.lib wxmsw29ud_adv.lib wxmsw29ud_core.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib" + AdditionalOptions="" + OutputFile="vc_mswud\propgrid.exe" + LinkIncremental="2" + SubSystem="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories=".\..\..\lib\vc_lib" + GenerateManifest="true" + GenerateDebugInformation="true" + ProgramDatabaseFile="vc_mswud\propgrid.pdb" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + OutputFile="vc_mswud\propgrid_vc8.bsc" + SuppressStartupBanner="true" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + + </References> + <Files> + <Filter + Name="Source Files" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + > + <File + RelativePath=".\propgrid.cpp" + /> + <File + RelativePath=".\propgrid_minimal.cpp" + /> + <File + RelativePath=".\sampleprops.cpp" + /> + <File + RelativePath=".\tests.cpp" + /> + </Filter> + <Filter + Name="Resource Files" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" + > + <File + RelativePath=".\..\sample.rc" + /> + </Filter> + </Files> + <Globals> + + </Globals> +</VisualStudioProject> + diff --git a/samples/propgrid/sampleprops.cpp b/samples/propgrid/sampleprops.cpp new file mode 100644 index 0000000000..03978de880 --- /dev/null +++ b/samples/propgrid/sampleprops.cpp @@ -0,0 +1,613 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/sampleprops.cpp +// Purpose: wxPropertyGrid Sample Properties +// Author: Jaakko Salli +// Modified by: +// Created: 2006-03-05 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +// for all others, include the necessary headers (this file is usually all you +// need because it includes almost all "standard" wxWidgets headers) +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +// ----------------------------------------------------------------------- + + +#include <wx/propgrid/propgrid.h> +#include <wx/propgrid/advprops.h> + +#ifndef WX_PROPGRID_SAMPLEPROPS_H + #include "sampleprops.h" +#endif + + +// ----------------------------------------------------------------------- +// wxFontDataProperty +// ----------------------------------------------------------------------- + +// Dummy comparison required by value type implementation. +bool operator == (const wxFontData&, const wxFontData&) +{ + return FALSE; +} + +// Custom version of wxFontProperty that also holds colour in the value. +// Original version by Vladimir Vainer. + +#include <wx/fontdlg.h> + +WX_PG_IMPLEMENT_WXOBJECT_VARIANT_DATA(wxPGVariantDataFontData, wxFontData) + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxFontDataProperty,wxFontProperty, + wxFontData,const wxFontData&,TextCtrlAndButton) + +wxFontDataProperty::wxFontDataProperty( const wxString& label, const wxString& name, + const wxFontData& value ) : wxFontProperty(label,name,value.GetInitialFont()) +{ + // Set initial value - should be done in a simpler way like this + // (instead of calling SetValue) in derived (wxObject) properties. + m_value_wxFontData << value; + + wxFontData& fontData = wxFontDataFromVariant(m_value_wxFontData); + + // Fix value. + fontData.SetChosenFont(value.GetInitialFont()); + if ( !fontData.GetColour().Ok() ) + fontData.SetColour(*wxBLACK); + + // Add extra children. + AddChild( new wxColourProperty(_("Colour"),wxPG_LABEL, + fontData.GetColour() ) ); + +} + +wxFontDataProperty::~wxFontDataProperty () { } + +void wxFontDataProperty::OnSetValue() +{ + if ( !(&wxFontDataFromVariant(m_value)) ) + { + wxFont* pFont = &wxFontFromVariant(m_value); + if ( pFont ) + { + wxFontData fontData; + fontData.SetChosenFont(*pFont); + m_value = WXVARIANT(fontData); + } + else + { + wxFAIL_MSG(wxT("Value to wxFontDataProperty must be eithe wxFontData or wxFont")); + } + } + + // Set m_value to wxFont so that wxFontProperty methods will work + // correctly. + m_value_wxFontData = m_value; + wxFontData& fontData = wxFontDataFromVariant(m_value_wxFontData); + + wxFont font = fontData.GetChosenFont(); + if ( !font.Ok() ) + font = wxFont(10,wxSWISS,wxNORMAL,wxNORMAL); + m_value = WXVARIANT(font); +} + +wxVariant wxFontDataProperty::DoGetValue() const +{ + return m_value_wxFontData; +} + +// Must re-create font dialog displayer. +bool wxFontDataProperty::OnEvent( wxPropertyGrid* propgrid, + wxWindow* WXUNUSED(primary), wxEvent& event ) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + // Update value from last minute changes + PrepareValueForDialogEditing(propgrid); + + wxFontData& fontData = wxFontDataFromVariant(m_value_wxFontData); + + fontData.SetInitialFont(fontData.GetChosenFont()); + + wxFontDialog dlg(propgrid, fontData); + + if ( dlg.ShowModal() == wxID_OK ) + { + SetValueInEvent( wxFontDataToVariant(dlg.GetFontData()) ); + return true; + } + } + return false; +} + +void wxFontDataProperty::RefreshChildren() +{ + wxFontProperty::RefreshChildren(); + if ( GetChildCount() < 6 ) // Number is count of inherit prop's children + 1. + return; + wxFontData& fontData = wxFontDataFromVariant(m_value_wxFontData); + wxVariant variant; variant << fontData.GetColour(); + Item(6)->SetValue( variant ); +} + +void wxFontDataProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + wxFontData& fontData = wxFontDataFromVariant(thisValue); + wxColour col; + wxVariant variant; + + switch ( childIndex ) + { + case 6: + col << childValue; + fontData.SetColour( col ); + break; + default: + // Transfer between subset to superset. + variant = WXVARIANT(fontData.GetChosenFont()); + wxFontProperty::ChildChanged( variant, childIndex, childValue ); + fontData.SetChosenFont(wxFontFromVariant(variant)); + } +} + +// ----------------------------------------------------------------------- +// wxSizeProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxSizeProperty,wxPGProperty, + wxSize,const wxSize&,TextCtrl) + +wxSizeProperty::wxSizeProperty( const wxString& label, const wxString& name, + const wxSize& value) : wxPGProperty(label,name) +{ + SetValueI(value); + AddChild( new wxIntProperty(wxT("Width"),wxPG_LABEL,value.x) ); + AddChild( new wxIntProperty(wxT("Height"),wxPG_LABEL,value.y) ); +} + +wxSizeProperty::~wxSizeProperty() { } + +void wxSizeProperty::RefreshChildren() +{ + if ( !GetChildCount() ) return; + const wxSize& size = wxSizeFromVariant(m_value); + Item(0)->SetValue( (long)size.x ); + Item(1)->SetValue( (long)size.y ); +} + +void wxSizeProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + wxSize& size = wxSizeFromVariant(thisValue); + int val = wxPGVariantToInt(childValue); + switch ( childIndex ) + { + case 0: size.x = val; break; + case 1: size.y = val; break; + } +} + +// ----------------------------------------------------------------------- +// wxPointProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxPointProperty,wxPGProperty, + wxPoint,const wxPoint&,TextCtrl) + +wxPointProperty::wxPointProperty( const wxString& label, const wxString& name, + const wxPoint& value) : wxPGProperty(label,name) +{ + SetValueI(value); + AddChild( new wxIntProperty(wxT("X"),wxPG_LABEL,value.x) ); + AddChild( new wxIntProperty(wxT("Y"),wxPG_LABEL,value.y) ); +} + +wxPointProperty::~wxPointProperty() { } + +void wxPointProperty::RefreshChildren() +{ + if ( !GetChildCount() ) return; + const wxPoint& point = wxPointFromVariant(m_value); + Item(0)->SetValue( (long)point.x ); + Item(1)->SetValue( (long)point.y ); +} + +void wxPointProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + wxPoint& point = wxPointFromVariant(thisValue); + int val = wxPGVariantToInt(childValue); + switch ( childIndex ) + { + case 0: point.x = val; break; + case 1: point.y = val; break; + } +} + + +// ----------------------------------------------------------------------- +// Dirs Property +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(wxDirsProperty,wxT(','),wxT("Browse")) + +#if wxUSE_VALIDATORS + +wxValidator* wxDirsProperty::DoGetValidator() const +{ + return wxFileProperty::GetClassValidator(); +} + +#endif + + +bool wxDirsProperty::OnCustomStringEdit( wxWindow* parent, wxString& value ) +{ + wxDirDialog dlg(parent, + _("Select a directory to be added to the list:"), + value, + 0); + + if ( dlg.ShowModal() == wxID_OK ) + { + value = dlg.GetPath(); + return TRUE; + } + return FALSE; +} + +// ----------------------------------------------------------------------- +// wxArrayDoubleEditorDialog +// ----------------------------------------------------------------------- + + +// +// You can *almost* convert wxArrayDoubleEditorDialog to wxArrayXXXEditorDialog +// by replacing each ArrayDouble with ArrayXXX. +// + +class wxArrayDoubleEditorDialog : public wxArrayEditorDialog +{ +public: + wxArrayDoubleEditorDialog(); + + void Init(); + + wxArrayDoubleEditorDialog(wxWindow *parent, + const wxString& message, + const wxString& caption, + wxArrayDouble& array, + long style = wxAEDIALOG_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize ); + + bool Create(wxWindow *parent, + const wxString& message, + const wxString& caption, + wxArrayDouble& array, + long style = wxAEDIALOG_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize ); + + const wxArrayDouble& GetArray() const { return m_array; } + + // Extra method for this type of array + void SetPrecision ( int precision ) + { + m_precision = precision; + m_dtoaTemplate.Empty(); + } + +protected: + // Mandatory array of type + wxArrayDouble m_array; + + // Use this to avoid extra wxString creation+Printf + // on double-to-wxString conversion. + wxString m_dtoaTemplate; + + int m_precision; + + // Mandatory overridden methods + virtual wxString ArrayGet( size_t index ); + virtual size_t ArrayGetCount(); + virtual bool ArrayInsert( const wxString& str, int index ); + virtual bool ArraySet( size_t index, const wxString& str ); + virtual void ArrayRemoveAt( int index ); + virtual void ArraySwap( size_t first, size_t second ); + +private: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayDoubleEditorDialog) +}; + +IMPLEMENT_DYNAMIC_CLASS(wxArrayDoubleEditorDialog, wxArrayEditorDialog) + +// +// Array dialog array access and manipulation +// + +wxString wxArrayDoubleEditorDialog::ArrayGet( size_t index ) +{ + wxString str; + wxPropertyGrid::DoubleToString(str,m_array[index],m_precision,true,&m_dtoaTemplate); + return str; +} + +size_t wxArrayDoubleEditorDialog::ArrayGetCount() +{ + return m_array.GetCount(); +} + +bool wxArrayDoubleEditorDialog::ArrayInsert( const wxString& str, int index ) +{ + double d; + if ( !str.ToDouble(&d) ) + return FALSE; + + if (index<0) + m_array.Add(d); + else + m_array.Insert(d,index); + return TRUE; +} + +bool wxArrayDoubleEditorDialog::ArraySet( size_t index, const wxString& str ) +{ + double d; + if ( !str.ToDouble(&d) ) + return FALSE; + m_array[index] = d; + return TRUE; +} + +void wxArrayDoubleEditorDialog::ArrayRemoveAt( int index ) +{ + m_array.RemoveAt(index); +} + +void wxArrayDoubleEditorDialog::ArraySwap( size_t first, size_t second ) +{ + double a = m_array[first]; + double b = m_array[second]; + m_array[first] = b; + m_array[second] = a; +} + +// +// Array dialog construction etc. +// + +wxArrayDoubleEditorDialog::wxArrayDoubleEditorDialog() + : wxArrayEditorDialog() +{ + Init(); +} + +void wxArrayDoubleEditorDialog::Init() +{ + wxArrayEditorDialog::Init(); + SetPrecision(-1); +} + +wxArrayDoubleEditorDialog::wxArrayDoubleEditorDialog(wxWindow *parent, + const wxString& message, + const wxString& caption, + wxArrayDouble& array, + long style, + const wxPoint& pos, + const wxSize& sz ) + : wxArrayEditorDialog() +{ + Init(); + Create(parent,message,caption,array,style,pos,sz); +} + +bool wxArrayDoubleEditorDialog::Create(wxWindow *parent, + const wxString& message, + const wxString& caption, + wxArrayDouble& array, + long style, + const wxPoint& pos, + const wxSize& sz ) +{ + + m_array = array; + + return wxArrayEditorDialog::Create (parent,message,caption,style,pos,sz); +} + +// ----------------------------------------------------------------------- +// wxArrayDoubleProperty +// ----------------------------------------------------------------------- + +#include <math.h> // for fabs + +// Comparison required by value type implementation. +bool operator == (const wxArrayDouble& a, const wxArrayDouble& b) +{ + if ( a.GetCount() != b.GetCount() ) + return FALSE; + + size_t i; + + for ( i=0; i<a.GetCount(); i++ ) + { + // Can't do direct equality comparison with floating point numbers. + if ( fabs(a[i] - b[i]) > 0.0000000001 ) + { + //wxLogDebug(wxT("%f != %f"),a[i],b[i]); + return FALSE; + } + } + return TRUE; +} + +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataArrayDouble, wxArrayDouble) + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxArrayDoubleProperty, + wxPGProperty, + wxArrayDouble, + const wxArrayDouble&, + TextCtrlAndButton) + + +wxArrayDoubleProperty::wxArrayDoubleProperty (const wxString& label, + const wxString& name, + const wxArrayDouble& array ) + : wxPGProperty(label,name) +{ + m_precision = -1; + + // + // Need to figure out delimiter needed for this locale + // (ie. can't use comma when comma acts as decimal point in float). + wxChar use_delimiter = wxT(','); + + if (wxString::Format(wxT("%.2f"),12.34).Find(use_delimiter) >= 0) + use_delimiter = wxT(';'); + + m_delimiter = use_delimiter; + + SetValue( wxArrayDoubleToVariant(array) ); +} + +wxArrayDoubleProperty::~wxArrayDoubleProperty () { } + +void wxArrayDoubleProperty::OnSetValue() +{ + GenerateValueAsString( m_display, m_precision, true ); +} + +wxString wxArrayDoubleProperty::GetValueAsString( int arg_flags ) const +{ + if ( !(arg_flags & wxPG_FULL_VALUE )) + return m_display; + + wxString s; + GenerateValueAsString(s,-1,false); + return s; +} + +void wxArrayDoubleProperty::GenerateValueAsString( wxString& target, int prec, bool removeZeroes ) const +{ + wxString s; + wxString template_str; + wxChar between[3] = wxT(", "); + size_t i; + + between[0] = m_delimiter; + + target.Empty(); + + const wxArrayDouble& value = wxArrayDoubleFromVariant(m_value); + + for ( i=0; i<value.GetCount(); i++ ) + { + + wxPropertyGrid::DoubleToString(s,value[i],prec,removeZeroes,&template_str); + + target += s; + + if ( i<(value.GetCount()-1) ) + target += between; + } +} + +bool wxArrayDoubleProperty::OnEvent( wxPropertyGrid* propgrid, + wxWindow* WXUNUSED(primary), + wxEvent& event) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + wxArrayDouble& value = wxArrayDoubleFromVariant(m_value); + + // Update the value in case of last minute changes + PrepareValueForDialogEditing(propgrid); + + // Create editor dialog. + wxArrayDoubleEditorDialog dlg; + dlg.SetPrecision(m_precision); + dlg.Create( propgrid, wxEmptyString, m_label, value ); + dlg.Move( propgrid->GetGoodEditorDialogPosition(this,dlg.GetSize()) ); + + // Execute editor dialog + int res = dlg.ShowModal(); + if ( res == wxID_OK && dlg.IsModified() ) + { + SetValueInEvent( wxArrayDoubleToVariant(dlg.GetArray()) ); + return true; + } + return false; + } + return false; +} + +bool wxArrayDoubleProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const +{ + double tval; + wxString tstr; + // Add values to a temporary array so that in case + // of error we can opt not to use them. + wxArrayDouble new_array; + + bool ok = true; + + wxChar delimiter = m_delimiter; + + WX_PG_TOKENIZER1_BEGIN(text,delimiter) + + if ( token.length() ) + { + + // If token was invalid, exit the loop now + if ( !token.ToDouble(&tval) ) + { + tstr.Printf ( _("\"%s\" is not a floating-point number."), token.c_str() ); + ok = false; + break; + } + // TODO: Put validator code here + + new_array.Add(tval); + + } + + WX_PG_TOKENIZER1_END() + + // When invalid token found, show error message and don't change anything + if ( !ok ) + { + //ShowError( tstr ); + return false; + } + + if ( !(wxArrayDoubleFromVariant(m_value) == new_array) ) + { + variant = wxArrayDoubleToVariant(new_array); + return true; + } + + return false; +} + +bool wxArrayDoubleProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_FLOAT_PRECISION ) + { + m_precision = value.GetLong(); + GenerateValueAsString( m_display, m_precision, true ); + return true; + } + return false; +} + diff --git a/samples/propgrid/sampleprops.h b/samples/propgrid/sampleprops.h new file mode 100644 index 0000000000..f363fdfc51 --- /dev/null +++ b/samples/propgrid/sampleprops.h @@ -0,0 +1,125 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/sampleprops.h +// Purpose: wxPropertyGrid Sample Properties Header +// Author: Jaakko Salli +// Modified by: +// Created: 2006-03-05 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_SAMPLES_PROPGRID_SAMPLEPROPS_H_ +#define _WX_SAMPLES_PROPGRID_SAMPLEPROPS_H_ + + +WX_PG_DECLARE_WXOBJECT_VARIANT_DATA(wxPGVariantDataFontData, wxFontData, wxEMPTY_PARAMETER_VALUE) + + +class wxFontDataProperty : public wxFontProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxFontDataProperty) +public: + + wxFontDataProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxFontData& value = wxFontData() ); + virtual ~wxFontDataProperty (); + + void OnSetValue(); + + // Inorder to have different value type in a derived property + // class, we will override GetValue to return custom variant, + // instead of changing the base m_value. This allows the methods + // in base class to function properly. + virtual wxVariant DoGetValue() const; + + WX_PG_DECLARE_PARENTAL_METHODS() + WX_PG_DECLARE_EVENT_METHODS() + +protected: + // Value must be stored as variant - otherwise it will be + // decreffed to oblivion on GetValue(). + wxVariant m_value_wxFontData; +}; + +// ----------------------------------------------------------------------- + +class wxSizeProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxSizeProperty) +public: + + wxSizeProperty( const wxString& label = wxPG_LABEL, const wxString& name = wxPG_LABEL, + const wxSize& value = wxSize() ); + virtual ~wxSizeProperty(); + + WX_PG_DECLARE_PARENTAL_METHODS() + +protected: + + // I stands for internal + void SetValueI( const wxSize& value ) + { + m_value = wxSizeToVariant(value); + } +}; + +// ----------------------------------------------------------------------- + +class wxPointProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxPointProperty) +public: + + wxPointProperty( const wxString& label = wxPG_LABEL, const wxString& name = wxPG_LABEL, + const wxPoint& value = wxPoint() ); + virtual ~wxPointProperty(); + + WX_PG_DECLARE_PARENTAL_METHODS() + +protected: + + // I stands for internal + void SetValueI( const wxPoint& value ) + { + m_value = wxPointToVariant(value); + } +}; + +// ----------------------------------------------------------------------- + +WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR_WITH_DECL(wxDirsProperty, class wxEMPTY_PARAMETER_VALUE) + +// ----------------------------------------------------------------------- + +WX_PG_DECLARE_VARIANT_DATA(wxPGVariantDataArrayDouble, wxArrayDouble, wxEMPTY_PARAMETER_VALUE) + +class wxArrayDoubleProperty : public wxPGProperty +{ + WX_PG_DECLARE_PROPERTY_CLASS(wxArrayDoubleProperty) +public: + + wxArrayDoubleProperty( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxArrayDouble& value = wxArrayDouble() ); + + virtual ~wxArrayDoubleProperty (); + + virtual void OnSetValue(); + WX_PG_DECLARE_BASIC_TYPE_METHODS() + WX_PG_DECLARE_EVENT_METHODS() + WX_PG_DECLARE_ATTRIBUTE_METHODS() + + // Generates cache for displayed text + virtual void GenerateValueAsString ( wxString& target, int prec, bool removeZeroes ) const; + +protected: + wxString m_display; // Stores cache for displayed text + int m_precision; // Used when formatting displayed string. + wxChar m_delimiter; // Delimiter between array entries. +}; + +// ----------------------------------------------------------------------- + +#endif // _WX_SAMPLES_PROPGRID_SAMPLEPROPS_H_ diff --git a/samples/propgrid/tests.cpp b/samples/propgrid/tests.cpp new file mode 100644 index 0000000000..4f13184f4c --- /dev/null +++ b/samples/propgrid/tests.cpp @@ -0,0 +1,1334 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/propgrid/tests.cpp +// Purpose: wxPropertyGrid tests +// Author: Jaakko Salli +// Modified by: +// Created: 2007-05-16 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#include <wx/propgrid/propgrid.h> +#include <wx/propgrid/advprops.h> +#include <wx/propgrid/manager.h> + +#include "propgrid.h" +#include "sampleprops.h" + + +// ----------------------------------------------------------------------- +// Declare custom test properties +// ----------------------------------------------------------------------- + +WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty) + +WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty) + + +// ----------------------------------------------------------------------- +// wxTestCustomFlagsProperty +// ----------------------------------------------------------------------- + +// +// Constant definitions required by wxFlagsProperty examples. +// + +static const wxChar* _fs_framestyle_labels[] = { + wxT("wxCAPTION"), + wxT("wxMINIMIZE"), + wxT("wxMAXIMIZE"), + wxT("wxCLOSE_BOX"), + wxT("wxSTAY_ON_TOP"), + wxT("wxSYSTEM_MENU"), + wxT("wxRESIZE_BORDER"), + wxT("wxFRAME_TOOL_WINDOW"), + wxT("wxFRAME_NO_TASKBAR"), + wxT("wxFRAME_FLOAT_ON_PARENT"), + wxT("wxFRAME_SHAPED"), + (const wxChar*) NULL +}; + +static const long _fs_framestyle_values[] = { + wxCAPTION, + wxMINIMIZE, + wxMAXIMIZE, + wxCLOSE_BOX, + wxSTAY_ON_TOP, + wxSYSTEM_MENU, + wxRESIZE_BORDER, + wxFRAME_TOOL_WINDOW, + wxFRAME_NO_TASKBAR, + wxFRAME_FLOAT_ON_PARENT, + wxFRAME_SHAPED +}; + + +WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty, + _fs_framestyle_labels, + _fs_framestyle_values, + wxDEFAULT_FRAME_STYLE) + +WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty, + _fs_framestyle_labels, + _fs_framestyle_values, + wxCAPTION) + + +// Colour labels. Last (before NULL, if any) must be Custom. +static const wxChar* mycolprop_labels[] = { + wxT("Black"), + wxT("Blue"), + wxT("Brown"), + wxT("Custom"), + (const wxChar*) NULL +}; + +// Relevant colour values as unsigned longs. +static unsigned long mycolprop_colours[] = { + wxPG_COLOUR(0,0,0), + wxPG_COLOUR(0,0,255), + wxPG_COLOUR(166,124,81), + wxPG_COLOUR(0,0,0) +}; + +// Implement property class. Third argument is optional values array, +// but in this example we are only interested in creating a shortcut +// for user to access the colour values. Last arg is itemcount, but +// it will be deprecated in the future. +WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(wxMyColourProperty) +WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(wxMyColourProperty, + mycolprop_labels, + (long*)NULL, + mycolprop_colours) + + +WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY(wxMyColour2Property) +WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY(wxMyColour2Property, + mycolprop_labels, + (long*)NULL, + mycolprop_colours) + + + +// Just testing the macros +WX_PG_DECLARE_STRING_PROPERTY(wxTestStringProperty) +WX_PG_IMPLEMENT_STRING_PROPERTY(wxTestStringProperty,wxPG_NO_ESCAPE) +bool wxTestStringProperty::OnButtonClick( wxPropertyGrid*, + wxString& ) +{ + ::wxMessageBox(wxT("Button Clicked")); + return true; +} + +WX_PG_DECLARE_STRING_PROPERTY(wxTextStringPropertyWithValidator) +WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(wxTextStringPropertyWithValidator, + wxPG_NO_ESCAPE) + +bool wxTextStringPropertyWithValidator::OnButtonClick( wxPropertyGrid* WXUNUSED(propgrid), + wxString& WXUNUSED(value) ) +{ + ::wxMessageBox(wxT("Button Clicked")); + return true; +} + +wxValidator* wxTextStringPropertyWithValidator::DoGetValidator() const +{ +#if wxUSE_VALIDATORS + WX_PG_DOGETVALIDATOR_ENTRY() + wxTextValidator* validator = new + wxTextValidator(wxFILTER_INCLUDE_CHAR_LIST); + wxArrayString oValid; + oValid.Add(wxT("0")); + oValid.Add(wxT("1")); + oValid.Add(wxT("2")); + oValid.Add(wxT("3")); + oValid.Add(wxT("4")); + oValid.Add(wxT("5")); + oValid.Add(wxT("6")); + oValid.Add(wxT("7")); + oValid.Add(wxT("8")); + oValid.Add(wxT("9")); + oValid.Add(wxT("$")); + validator->SetIncludes(oValid); + WX_PG_DOGETVALIDATOR_EXIT(validator) +#else + return NULL; +#endif +} + +// ----------------------------------------------------------------------- + +// +// Test customizing wxColourProperty via subclassing +// +// * Includes custom colour entry. +// * Includes extra custom entry. +// +class MyColourProperty3 : public wxColourProperty +{ +public: + MyColourProperty3( const wxString& label = wxPG_LABEL, + const wxString& name = wxPG_LABEL, + const wxColour& value = *wxWHITE ) + : wxColourProperty(label, name, value) + { + wxPGChoices colours; + colours.Add(wxT("White")); + colours.Add(wxT("Black")); + colours.Add(wxT("Red")); + colours.Add(wxT("Green")); + colours.Add(wxT("Blue")); + colours.Add(wxT("Custom")); + colours.Add(wxT("None")); + m_choices = colours; + SetIndex(0); + wxVariant variant; + variant << value; + SetValue(variant); + } + + virtual ~MyColourProperty3() + { + } + + virtual wxColour GetColour( int index ) const + { + switch (index) + { + case 0: return *wxWHITE; + case 1: return *wxBLACK; + case 2: return *wxRED; + case 3: return *wxGREEN; + case 4: return *wxBLUE; + case 5: + // Return current colour for the custom entry + wxColour col; + if ( GetIndex() == GetCustomColourIndex() ) + { + if ( m_value.IsNull() ) + return col; + col << m_value; + return col; + } + return *wxWHITE; + }; + return wxColour(); + } + + virtual wxString ColourToString( const wxColour& col, int index ) const + { + if ( index == (int)(m_choices.GetCount()-1) ) + return wxT(""); + + return wxColourProperty::ColourToString(col, index); + } + + virtual int GetCustomColourIndex() const + { + return m_choices.GetCount()-2; + } +}; + + +void FormMain::AddTestProperties( wxPropertyGridPage* pg ) +{ + pg->Append( new wxTestCustomFlagsProperty(wxT("Custom FlagsProperty"), wxPG_LABEL ) ); + pg->SetPropertyEditor( wxT("Custom FlagsProperty"), wxPG_EDITOR(TextCtrlAndButton) ); + + pg->Append( new wxTestCustomEnumProperty(wxT("Custom EnumProperty"), wxPG_LABEL ) ); + + pg->Append( new wxMyColourProperty(wxT("CustomColourProperty1")) ); + + pg->SetPropertyHelpString(wxT("CustomColourProperty1"), + wxT("This is a wxMyColourProperty from the sample app. ") + wxT("It is built with WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR macro ") + wxT("and has wxColour as its data type")); + + pg->Append( new wxMyColour2Property(wxT("CustomColourProperty2")) ); + + pg->SetPropertyHelpString(wxT("CustomColourProperty2"), + wxT("This is a wxMyColour2Property from the sample app. ") + wxT("It is built with WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY macro ") + wxT("and has wxColourPropertyValue as its data type")); + + pg->Append( new MyColourProperty3(wxT("CustomColourProperty3"), wxPG_LABEL, *wxGREEN) ); + pg->GetProperty(wxT("CustomColourProperty3"))->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED); + pg->SetPropertyEditor( wxT("CustomColourProperty3"), wxPG_EDITOR(ComboBox) ); + + pg->SetPropertyHelpString(wxT("CustomColourProperty3"), + wxT("This is a MyColourProperty3 from the sample app. ") + wxT("It is built by subclassing wxColourProperty.")); + + pg->Append( new wxTextStringPropertyWithValidator(wxT("TestProp1"), wxPG_LABEL) ); +} + +// ----------------------------------------------------------------------- + +void FormMain::OnDumpList( wxCommandEvent& WXUNUSED(event) ) +{ + wxVariant values = m_pPropGridManager->GetPropertyValues(wxT("list"), wxNullProperty, wxPG_INC_ATTRIBUTES); + wxString text = wxT("This only tests that wxVariant related routines do not crash."); + wxString t; + + wxDialog* dlg = new wxDialog(this,-1,wxT("wxVariant Test"), + wxDefaultPosition,wxDefaultSize,wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER); + + unsigned int i; + for ( i = 0; i < (unsigned int)values.GetCount(); i++ ) + { + wxVariant& v = values[i]; + + wxString strValue = v.GetString(); + +#if wxCHECK_VERSION(2,8,0) + if ( v.GetName().EndsWith(wxT("@attr")) ) +#else + if ( v.GetName().Right(5) == wxT("@attr") ) +#endif + { + text += wxString::Format(wxT("Attributes:\n")); + + unsigned int n; + for ( n = 0; n < (unsigned int)v.GetCount(); n++ ) + { + wxVariant& a = v[n]; + + t.Printf(wxT(" atribute %i: name=\"%s\" (type=\"%s\" value=\"%s\")\n"),(int)n, + a.GetName().c_str(),a.GetType().c_str(),a.GetString().c_str()); + text += t; + } + } + else + { + t.Printf(wxT("%i: name=\"%s\" type=\"%s\" value=\"%s\"\n"),(int)i, + v.GetName().c_str(),v.GetType().c_str(),strValue.c_str()); + text += t; + } + } + + // multi-line text editor dialog + const int spacing = 8; + wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL ); + wxTextCtrl* ed = new wxTextCtrl(dlg,11,text, + wxDefaultPosition,wxDefaultSize,wxTE_MULTILINE|wxTE_READONLY); + rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing ); + topsizer->Add( rowsizer, 1, wxEXPAND, 0 ); + rowsizer = new wxBoxSizer( wxHORIZONTAL ); + const int butSzFlags = + wxALIGN_CENTRE_HORIZONTAL|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; + rowsizer->Add( new wxButton(dlg,wxID_OK,wxT("Ok")), + 0, butSzFlags, spacing ); + topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + + dlg->SetSizer( topsizer ); + topsizer->SetSizeHints( dlg ); + + dlg->SetSize(400,300); + dlg->Centre(); + dlg->ShowModal(); +} + +// ----------------------------------------------------------------------- + +class TestRunner +{ +public: + + TestRunner( const wxString& name, wxPropertyGridManager* man, wxTextCtrl* ed, wxArrayString* errorMessages ) + { + m_name = name; + m_man = man; + m_ed = ed; + m_errorMessages = errorMessages; +#ifdef __WXDEBUG__ + m_preWarnings = wxPGGlobalVars->m_warnings; +#endif + + if ( name != wxT("none") ) + Msg(name+wxT("\n")); + } + + ~TestRunner() + { +#ifdef __WXDEBUG__ + int warningsOccurred = wxPGGlobalVars->m_warnings - m_preWarnings; + if ( warningsOccurred ) + { + wxString s = wxString::Format(wxT("%i warnings occurred during test '%s'"), warningsOccurred, m_name.c_str()); + m_errorMessages->push_back(s); + Msg(s); + } +#endif + } + + void Msg( const wxString& text ) + { + if ( m_ed ) + { + m_ed->AppendText(text); + m_ed->AppendText(wxT("\n")); + } + wxLogDebug(text); + } + +protected: + wxPropertyGridManager* m_man; + wxTextCtrl* m_ed; + wxArrayString* m_errorMessages; + wxString m_name; +#ifdef __WXDEBUG__ + int m_preWarnings; +#endif +}; + + +#define RT_START_TEST(TESTNAME) \ + TestRunner tr(wxT(#TESTNAME), pgman, ed, &errorMessages); + +#define RT_MSG(S) \ + tr.Msg(S); + +#define RT_FAILURE() \ + { \ + wxString s1 = wxString::Format(wxT("Test failure in tests.cpp, line %i."),__LINE__-1); \ + errorMessages.push_back(s1); \ + wxLogDebug(s1); \ + failures++; \ + } + +#define RT_FAILURE_MSG(MSG) \ + { \ + wxString s1 = wxString::Format(wxT("Test failure in tests.cpp, line %i."),__LINE__-1); \ + errorMessages.push_back(s1); \ + wxLogDebug(s1); \ + wxString s2 = wxString::Format(wxT("Message: %s"),MSG); \ + errorMessages.push_back(s2); \ + wxLogDebug(s2); \ + failures++; \ + } + +#define RT_VALIDATE_VIRTUAL_HEIGHT(PROPS, EXTRATEXT) \ + { \ + unsigned int h1_ = PROPS->GetVirtualHeight(); \ + unsigned int h2_ = PROPS->GetActualVirtualHeight(); \ + if ( h1_ != h2_ ) \ + { \ + wxString s_ = wxString::Format(wxT("VirtualHeight = %i, should be %i (%s)"), h1_, h2_, EXTRATEXT.c_str()); \ + RT_FAILURE_MSG(s_.c_str()); \ + _failed_ = true; \ + } \ + else \ + { \ + _failed_ = false; \ + } \ + } + + +int gpiro_cmpfunc(const void* a, const void* b) +{ + const wxPGProperty* p1 = (const wxPGProperty*) a; + const wxPGProperty* p2 = (const wxPGProperty*) b; + return (int) (((size_t)p1->GetClientData()) - ((size_t)p2->GetClientData())); +} + +wxArrayPGProperty GetPropertiesInRandomOrder( wxPropertyGridInterface* props, int iterationFlags = wxPG_ITERATE_ALL ) +{ + wxArrayPGProperty arr; + + wxPropertyGridIterator it; + + for ( it = props->GetIterator(iterationFlags); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + size_t randomNumber = rand(); + p->SetClientData(reinterpret_cast<void*>(randomNumber)); + arr.push_back(p); + } + + wxPGProperty** firstEntry = &arr[0]; + qsort(firstEntry, arr.size(), sizeof(wxPGProperty*), gpiro_cmpfunc); + + return arr; +} + +static void PropertiesToNames( wxPropertyGridInterface* WXUNUSED(iface), + wxArrayString* names, + const wxArrayPGProperty& properties ) +{ + unsigned int i; + for ( i=0; i<properties.size(); i++ ) + names->Add( properties[i]->GetName() ); +} + +static void NamesToProperties( wxPropertyGridInterface* iface, + wxArrayPGProperty* properties, + const wxArrayString& names ) +{ + unsigned int i; + for ( i=0; i<names.size(); i++ ) + { + wxPGProperty* p = iface->GetPropertyByName(names[i]); + if ( p ) + properties->push_back(p); + } +} + +bool FormMain::RunTests( bool fullTest, bool interactive ) +{ + wxString t; + + wxPropertyGridManager* pgman = m_pPropGridManager; + wxPropertyGrid* pg; + + size_t i; + + pgman->ClearSelection(); + + int failures = 0; + bool _failed_ = false; + wxArrayString errorMessages; + wxDialog* dlg = NULL; + + dlg = new wxDialog(this,-1,wxT("wxPropertyGrid Regression Tests"), + wxDefaultPosition,wxDefaultSize,wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER); + + // multi-line text editor dialog + const int spacing = 8; + wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL ); + wxTextCtrl* ed = new wxTextCtrl(dlg,11,wxEmptyString, + wxDefaultPosition,wxDefaultSize,wxTE_MULTILINE|wxTE_READONLY); + rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing ); + topsizer->Add( rowsizer, 1, wxEXPAND, 0 ); + rowsizer = new wxBoxSizer( wxHORIZONTAL ); + const int butSzFlags = + wxALIGN_CENTRE_HORIZONTAL|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; + rowsizer->Add( new wxButton(dlg,wxID_OK,wxT("Ok")), + 0, butSzFlags, spacing ); + topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + + dlg->SetSizer( topsizer ); + topsizer->SetSizeHints( dlg ); + + dlg->SetSize(400,300); + dlg->Move(wxSystemSettings::GetMetric(wxSYS_SCREEN_X)-dlg->GetSize().x, + wxSystemSettings::GetMetric(wxSYS_SCREEN_Y)-dlg->GetSize().y); + dlg->Show(); + + { + // + // Basic iterator tests + RT_START_TEST(GetIterator) + + wxPGVIterator it; + int count; + + count = 0; + for ( it = pgman->GetVIterator(wxPG_ITERATE_PROPERTIES); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + if ( p->IsCategory() ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' is a category (non-private child property expected)"),p->GetLabel().c_str()).c_str()) + else if ( p->GetParent()->HasFlag(wxPG_PROP_AGGREGATE) ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' is a private child (non-private child property expected)"),p->GetLabel().c_str()).c_str()) + count++; + } + + RT_MSG(wxString::Format(wxT("GetVIterator(wxPG_ITERATE_PROPERTIES) -> %i entries"), count)); + + count = 0; + for ( it = pgman->GetVIterator(wxPG_ITERATE_CATEGORIES); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + if ( !p->IsCategory() ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' is not a category (only category was expected)"),p->GetLabel().c_str()).c_str()) + count++; + } + + RT_MSG(wxString::Format(wxT("GetVIterator(wxPG_ITERATE_CATEGORIES) -> %i entries"), count)); + + count = 0; + for ( it = pgman->GetVIterator(wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_CATEGORIES); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + if ( p->GetParent()->HasFlag(wxPG_PROP_AGGREGATE) ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' is a private child (non-private child property or category expected)"),p->GetLabel().c_str()).c_str()) + count++; + } + + RT_MSG(wxString::Format(wxT("GetVIterator(wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_CATEGORIES) -> %i entries"), count)); + + count = 0; + for ( it = pgman->GetVIterator(wxPG_ITERATE_VISIBLE); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + if ( (p->GetParent() != p->GetParentState()->DoGetRoot() && !p->GetParent()->IsExpanded()) ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' had collapsed parent (only visible properties expected)"),p->GetLabel().c_str()).c_str()) + else if ( p->HasFlag(wxPG_PROP_HIDDEN) ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' was hidden (only visible properties expected)"),p->GetLabel().c_str()).c_str()) + count++; + } + + RT_MSG(wxString::Format(wxT("GetVIterator(wxPG_ITERATE_VISIBLE) -> %i entries"), count)); + } + + if ( fullTest ) + { + // Test that setting focus to properties does not crash things + RT_START_TEST(SelectProperty) + + wxPropertyGridIterator it; + size_t ind; + + for ( ind=0; ind<pgman->GetPageCount(); ind++ ) + { + wxPropertyGridPage* page = pgman->GetPage(ind); + pgman->SelectPage(page); + + for ( it = page->GetIterator(wxPG_ITERATE_VISIBLE); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + RT_MSG(p->GetLabel()); + pgman->GetGrid()->SelectProperty(p, true); + ::wxMilliSleep(150); + Update(); + } + } + } + + { + RT_START_TEST(GetPropertiesWithFlag) + + // + // Get list of expanded properties + wxArrayPGProperty array = pgman->GetExpandedProperties(); + + // Make sure list only has items with children + for ( i=0; i<array.size(); i++ ) + { + wxPGProperty* p = array[i]; + if ( !p->IsKindOf(CLASSINFO(wxPGProperty)) ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s' was returned by GetExpandedProperties(), but was not a parent"),p->GetName().c_str()).c_str()); + } + + wxArrayString names; + PropertiesToNames( pgman, &names, array ); + + // + // ... and then collapse them + wxArrayPGProperty array2; + NamesToProperties( pgman, &array2, names ); + + for ( i=0; i<array2.size(); i++ ) + { + wxPGProperty* p = array[i]; + p->SetExpanded(false); + } + + // Make sure everything is collapsed + wxPGVIterator it; + + for ( it = pgman->GetVIterator(wxPG_ITERATE_ALL); + !it.AtEnd(); + it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + if ( p->IsExpanded() ) + RT_FAILURE_MSG(wxString::Format(wxT("'%s.%s' was expanded"),p->GetParent()->GetName().c_str(),p->GetName().c_str()).c_str()); + } + + pgman->Refresh(); + } + + { + // + // Delete everything in reverse order + RT_START_TEST(DeleteProperty) + + wxPGVIterator it; + wxArrayPGProperty array; + + for ( it = pgman->GetVIterator(wxPG_ITERATE_ALL&~(wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE))); + !it.AtEnd(); + it.Next() ) + array.push_back(it.GetProperty()); + + wxArrayPGProperty::reverse_iterator it2; + + for ( it2 = array.rbegin(); it2 != array.rend(); it2++ ) + { + wxPGProperty* p = (wxPGProperty*)*it2; + RT_MSG(wxString::Format(wxT("Deleting '%s' ('%s')"),p->GetLabel().c_str(),p->GetName().c_str())); + pgman->DeleteProperty(p); + } + + // Recreate grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + + { + // + // Clear property value + RT_START_TEST(ClearPropertyValue) + + wxPGVIterator it; + + for ( it = pgman->GetVIterator(wxPG_ITERATE_PROPERTIES); + !it.AtEnd(); + it.Next() ) + { + RT_MSG(wxString::Format(wxT("Clearing value of '%s'"),it.GetProperty()->GetLabel().c_str())); + pgman->ClearPropertyValue(it.GetProperty()); + } + + // Recreate grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + + { + RT_START_TEST(GetPropertyValues) + + for ( i=0; i<3; i++ ) + { + wxString text; + + wxPropertyGridPage* page = pgman->GetPage(i); + + wxVariant values = page->GetPropertyValues(); + + unsigned int i; + for ( i = 0; i < (unsigned int)values.GetCount(); i++ ) + { + wxVariant& v = values[i]; + + t.Printf(wxT("%i: name=\"%s\" type=\"%s\"\n"),(int)i, + v.GetName().c_str(),v.GetType().c_str()); + + text += t; + } + ed->AppendText(text); + } + } + + { + RT_START_TEST(SetPropertyValue_and_GetPropertyValue) + + //pg = (wxPropertyGrid*) NULL; + + wxArrayString test_arrstr_1; + test_arrstr_1.Add(wxT("Apple")); + test_arrstr_1.Add(wxT("Orange")); + test_arrstr_1.Add(wxT("Lemon")); + + wxArrayString test_arrstr_2; + test_arrstr_2.Add(wxT("Potato")); + test_arrstr_2.Add(wxT("Cabbage")); + test_arrstr_2.Add(wxT("Cucumber")); + + wxArrayInt test_arrint_1; + test_arrint_1.Add(1); + test_arrint_1.Add(2); + test_arrint_1.Add(3); + + wxArrayInt test_arrint_2; + test_arrint_2.Add(0); + test_arrint_2.Add(1); + test_arrint_2.Add(4); + +#if wxUSE_DATETIME + wxDateTime dt1 = wxDateTime::Now(); + dt1.SetYear(dt1.GetYear()-1); + + wxDateTime dt2 = wxDateTime::Now(); + dt2.SetYear(dt2.GetYear()-10); +#endif + +#define FLAG_TEST_SET1 (wxCAPTION|wxCLOSE_BOX|wxSYSTEM_MENU|wxRESIZE_BORDER) +#define FLAG_TEST_SET2 (wxSTAY_ON_TOP|wxCAPTION|wxICONIZE|wxSYSTEM_MENU) + + pgman->SetPropertyValue(wxT("StringProperty"),wxT("Text1")); + pgman->SetPropertyValue(wxT("IntProperty"),1024); + pgman->SetPropertyValue(wxT("FloatProperty"),1024.0000000001); + pgman->SetPropertyValue(wxT("BoolProperty"),FALSE); + pgman->SetPropertyValue(wxT("EnumProperty"),120); + pgman->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET1); + pgman->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_1); + wxColour emptyCol; + pgman->SetPropertyValue(wxT("ColourProperty"),emptyCol); + pgman->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxBLACK); + pgman->SetPropertyValue(wxT("Size"),wxSize(150,150)); + pgman->SetPropertyValue(wxT("Position"),wxPoint(150,150)); + pgman->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_1); +#if wxUSE_DATETIME + pgman->SetPropertyValue(wxT("DateProperty"),dt1); +#endif + + pgman->SelectPage(2); + pg = pgman->GetGrid(); + + if ( pg->GetPropertyValueAsString(wxT("StringProperty")) != wxT("Text1") ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsInt(wxT("IntProperty")) != 1024 ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsDouble(wxT("FloatProperty")) != 1024.0000000001 ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsBool(wxT("BoolProperty")) != FALSE ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsLong(wxT("EnumProperty")) != 120 ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_1 ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET1 ) + RT_FAILURE(); + wxColour col; + col << pgman->GetPropertyValue(wxT("ColourProperty")); + if ( col != *wxBLACK ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsSize(wxT("Size")) != wxSize(150,150) ) + RT_FAILURE(); + if ( pg->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(150,150) ) + RT_FAILURE(); + if ( !(pg->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_1) ) + RT_FAILURE(); +#if wxUSE_DATETIME + if ( !(pg->GetPropertyValueAsDateTime(wxT("DateProperty")) == dt1) ) + RT_FAILURE(); +#endif + + pgman->SetPropertyValue(wxT("IntProperty"),wxLL(10000000000)); + if ( pg->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(10000000000) ) + RT_FAILURE(); + + pg->SetPropertyValue(wxT("StringProperty"),wxT("Text2")); + pg->SetPropertyValue(wxT("IntProperty"),512); + pg->SetPropertyValue(wxT("FloatProperty"),512.0); + pg->SetPropertyValue(wxT("BoolProperty"),TRUE); + pg->SetPropertyValue(wxT("EnumProperty"),80); + pg->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_2); + pg->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET2); + pg->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxWHITE); + pg->SetPropertyValue(wxT("Size"),wxSize(300,300)); + pg->SetPropertyValue(wxT("Position"),wxPoint(300,300)); + pg->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_2); +#if wxUSE_DATETIME + pg->SetPropertyValue(wxT("DateProperty"),dt2); +#endif + + //pg = (wxPropertyGrid*) NULL; + + pgman->SelectPage(0); + + if ( pgman->GetPropertyValueAsString(wxT("StringProperty")) != wxT("Text2") ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsInt(wxT("IntProperty")) != 512 ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsDouble(wxT("FloatProperty")) != 512.0 ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsBool(wxT("BoolProperty")) != TRUE ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsLong(wxT("EnumProperty")) != 80 ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_2 ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET2 ) + RT_FAILURE(); + col << pgman->GetPropertyValue(wxT("ColourProperty")); + if ( col != *wxWHITE ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsSize(wxT("Size")) != wxSize(300,300) ) + RT_FAILURE(); + if ( pgman->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(300,300) ) + RT_FAILURE(); + if ( !(pgman->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_2) ) + RT_FAILURE(); +#if wxUSE_DATETIME + if ( !(pgman->GetPropertyValueAsDateTime(wxT("DateProperty")) == dt2) ) + RT_FAILURE(); +#endif + + pgman->SetPropertyValue(wxT("IntProperty"),wxLL(-80000000000)); + if ( pgman->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(-80000000000) ) + RT_FAILURE(); + } + + { + RT_START_TEST(SetPropertyValueUnspecified) + + // Null variant setter tests + pgman->SetPropertyValueUnspecified(wxT("StringProperty")); + pgman->SetPropertyValueUnspecified(wxT("IntProperty")); + pgman->SetPropertyValueUnspecified(wxT("FloatProperty")); + pgman->SetPropertyValueUnspecified(wxT("BoolProperty")); + pgman->SetPropertyValueUnspecified(wxT("EnumProperty")); + pgman->SetPropertyValueUnspecified(wxT("ArrayStringProperty")); + pgman->SetPropertyValueUnspecified(wxT("Custom FlagsProperty")); + pgman->SetPropertyValueUnspecified(wxT("ColourProperty")); + pgman->SetPropertyValueUnspecified(wxT("Size")); + pgman->SetPropertyValueUnspecified(wxT("Position")); + pgman->SetPropertyValueUnspecified(wxT("MultiChoiceProperty")); +#if wxUSE_DATETIME + pgman->SetPropertyValueUnspecified(wxT("DateProperty")); +#endif + } + + { + wxPropertyGridPage* page1; + wxPropertyGridPage* page2; + wxPropertyGridPage* page3; + wxVariant pg1_values; + wxVariant pg2_values; + wxVariant pg3_values; + + { + RT_START_TEST(GetPropertyValues) + + page1 = pgman->GetPage(0); + pg1_values = page1->GetPropertyValues(wxT("Page1"),NULL,wxPG_KEEP_STRUCTURE); + page2 = pgman->GetPage(1); + pg2_values = page2->GetPropertyValues(wxT("Page2"),NULL,wxPG_KEEP_STRUCTURE); + page3 = pgman->GetPage(2); + pg3_values = page3->GetPropertyValues(wxT("Page3"),NULL,wxPG_KEEP_STRUCTURE); + } + + { + RT_START_TEST(SetPropertyValues) + + page1->SetPropertyValues(pg3_values); + page2->SetPropertyValues(pg1_values); + page3->SetPropertyValues(pg2_values); + } + } + + if ( !(pgman->GetWindowStyleFlag()&wxPG_HIDE_CATEGORIES) ) + { + RT_START_TEST(Collapse_and_GetFirstCategory_and_GetNextCategory) + + for ( i=0; i<3; i++ ) + { + wxPropertyGridPage* page = pgman->GetPage(i); + + wxPropertyGridIterator it; + + for ( it = page->GetIterator( wxPG_ITERATE_CATEGORIES ); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + + if ( !page->IsPropertyCategory(p) ) + RT_FAILURE(); + + page->Collapse( p ); + + t.Printf(wxT("Collapsing: %s\n"),page->GetPropertyLabel(p).c_str()); + ed->AppendText(t); + } + } + } + + { + RT_START_TEST(Save_And_RestoreEditableState) + + for ( i=0; i<3; i++ ) + { + pgman->SelectPage(i); + + wxString stringState = pgman->SaveEditableState(); + bool res = pgman->RestoreEditableState(stringState); + if ( !res ) + RT_FAILURE(); + } + } + + //if ( !(pgman->GetWindowStyleFlag()&wxPG_HIDE_CATEGORIES) ) + { + RT_START_TEST(Expand_and_GetFirstCategory_and_GetNextCategory) + + for ( i=0; i<3; i++ ) + { + wxPropertyGridPage* page = pgman->GetPage(i); + + wxPropertyGridIterator it; + + for ( it = page->GetIterator( wxPG_ITERATE_CATEGORIES ); + !it.AtEnd(); + it++ ) + { + wxPGProperty* p = *it; + + if ( !page->IsPropertyCategory(p) ) + RT_FAILURE(); + + page->Expand( p ); + + t.Printf(wxT("Expand: %s\n"),page->GetPropertyLabel(p).c_str()); + ed->AppendText(t); + } + } + } + + //if ( !(pgman->GetWindowStyleFlag()&wxPG_HIDE_CATEGORIES) ) + { + RT_START_TEST(RandomCollapse) + + // Select the most error prone page as visible. + pgman->SelectPage(1); + + for ( i=0; i<3; i++ ) + { + wxArrayPtrVoid arr; + + wxPropertyGridPage* page = pgman->GetPage(i); + + wxPropertyGridIterator it; + + for ( it = page->GetIterator( wxPG_ITERATE_CATEGORIES ); + !it.AtEnd(); + it++ ) + { + arr.Add((void*)*it); + } + + if ( arr.GetCount() ) + { + size_t n; + + pgman->Collapse( (wxPGProperty*)arr.Item(0) ); + + for ( n=arr.GetCount()-1; n>0; n-- ) + { + pgman->Collapse( (wxPGProperty*)arr.Item(n) ); + } + } + + } + } + + { + RT_START_TEST(EnsureVisible) + pgman->EnsureVisible(wxT("Cell Colour")); + } + + { + RT_START_TEST(SetPropertyBackgroundColour) + wxCommandEvent evt; + evt.SetInt(1); // IsChecked() will return TRUE. + evt.SetId(ID_COLOURSCHEME4); + OnCatColours(evt); + OnColourScheme(evt); + } + + { + // Test ClearPropertyValue + RT_START_TEST(ClearPropertyValue) + + for ( i=0; i<3; i++ ) + { + wxPropertyGridPage* page = pgman->GetPage(i); + + // Iterate over all properties. + wxPropertyGridIterator it; + + for ( it = page->GetIterator(); + !it.AtEnd(); + it++ ) + { + wxLogDebug((*it)->GetLabel()); + pgman->ClearPropertyValue( *it ); + } + } + + } + + { + RT_START_TEST(ManagerClear) + pgman->Clear(); + + if ( pgman->GetPageCount() ) + RT_FAILURE(); + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + + /* + { + // TODO: This test fails. + RT_START_TEST(SetSplitterPosition) + + InitPanel(); + + const int trySplitterPos = 50; + + int style = wxPG_AUTO_SORT; // wxPG_SPLITTER_AUTO_CENTER; + pgman = m_pPropGridManager = + new wxPropertyGridManager(m_panel, wxID_ANY, + wxDefaultPosition, + wxDefaultSize, + style ); + + PopulateGrid(); + pgman->SetSplitterPosition(trySplitterPos); + + if ( pgman->GetGrid()->GetSplitterPosition() != trySplitterPos ) + RT_FAILURE_MSG(wxString::Format(wxT("Splitter position was %i (should have been %i)"),(int)pgman->GetGrid()->GetSplitterPosition(),trySplitterPos).c_str()); + + m_topSizer->Add( m_pPropGridManager, 1, wxEXPAND ); + FinalizePanel(); + + wxSize sz = GetSize(); + wxSize origSz = sz; + sz.x += 5; + sz.y += 5; + + if ( pgman->GetGrid()->GetSplitterPosition() != trySplitterPos ) + RT_FAILURE_MSG(wxString::Format(wxT("Splitter position was %i (should have been %i)"),(int)pgman->GetGrid()->GetSplitterPosition(),trySplitterPos).c_str()); + + SetSize(origSz); + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + */ + + { + RT_START_TEST(HideProperty) + + wxPropertyGridPage* page = pgman->GetPage(0); + + srand(0x1234); + + wxArrayPGProperty arr1; + + arr1 = GetPropertiesInRandomOrder(page); + + if ( !_failed_ ) + { + for ( i=0; i<arr1.size(); i++ ) + { + wxPGProperty* p = arr1[i]; + page->HideProperty(p, true); + + wxString s = wxString::Format(wxT("HideProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + if ( !_failed_ ) + { + wxArrayPGProperty arr2 = GetPropertiesInRandomOrder(page); + + for ( i=0; i<arr2.size(); i++ ) + { + wxPGProperty* p = arr2[i]; + page->HideProperty(p, false); + + wxString s = wxString::Format(wxT("ShowProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + // + // Let's do some more, for better consistency + arr1 = GetPropertiesInRandomOrder(page); + + if ( !_failed_ ) + { + for ( i=0; i<arr1.size(); i++ ) + { + wxPGProperty* p = arr1[i]; + page->HideProperty(p, true); + + wxString s = wxString::Format(wxT("HideProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + if ( !_failed_ ) + { + wxArrayPGProperty arr2 = GetPropertiesInRandomOrder(page); + + for ( i=0; i<arr2.size(); i++ ) + { + wxPGProperty* p = arr2[i]; + page->HideProperty(p, false); + + wxString s = wxString::Format(wxT("ShowProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + // + // Ok, this time only hide half of them + arr1 = GetPropertiesInRandomOrder(page); +#if wxCHECK_VERSION(2,8,0) + arr1.resize(arr1.size()/2); +#else + arr1.SetCount(arr1.size()/2); +#endif + + if ( !_failed_ ) + { + for ( i=0; i<arr1.size(); i++ ) + { + wxPGProperty* p = arr1[i]; + page->HideProperty(p, true); + + wxString s = wxString::Format(wxT("HideProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + if ( !_failed_ ) + { + wxArrayPGProperty arr2 = GetPropertiesInRandomOrder(page); + + for ( i=0; i<arr2.size(); i++ ) + { + wxPGProperty* p = arr2[i]; + page->HideProperty(p, false); + + wxString s = wxString::Format(wxT("ShowProperty(%i, %s)"), i, p->GetLabel().c_str()); + RT_VALIDATE_VIRTUAL_HEIGHT(page, s) + if ( _failed_ ) + break; + } + } + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + + if ( fullTest ) + { + RT_START_TEST(MultipleColumns) + + // Test with multiple columns + // FIXME: Does not display changes. + for ( i=3; i<12; i+=2 ) + { + RT_MSG(wxString::Format(wxT("%i columns"),i)); + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + pgman->SetColumnCount(i); + Refresh(); + Update(); + wxMilliSleep(500); + } + } + + if ( fullTest ) + { + RT_START_TEST(WindowStyles) + + // Recreate grid with all possible (single) flags + wxASSERT(wxPG_AUTO_SORT == 0x000000010); + + for ( i=4; i<16; i++ ) + { + int flag = 1<<i; + RT_MSG(wxString::Format(wxT("Style: 0x%X"),flag)); + CreateGrid( flag, -1 ); + pgman = m_pPropGridManager; + Update(); + wxMilliSleep(500); + } + + wxASSERT(wxPG_EX_INIT_NOCAT == 0x00001000); + + for ( i=12; i<24; i++ ) + { + int flag = 1<<i; + RT_MSG(wxString::Format(wxT("ExStyle: 0x%X"),flag)); + CreateGrid( -1, flag ); + pgman = m_pPropGridManager; + Update(); + wxMilliSleep(500); + } + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + } + + RT_START_TEST(none) + + bool retVal; + + if ( failures || errorMessages.size() ) + { + retVal = false; + + wxString s; +#ifdef __WXDEBUG__ + if ( failures ) +#endif + s = wxString::Format(wxT("%i tests failed!!!"), failures); +#ifdef __WXDEBUG__ + else + s = wxString::Format(wxT("All tests were succesfull, but there were %i warnings!"), wxPGGlobalVars->m_warnings); +#endif + RT_MSG(s) + for ( i=0; i<errorMessages.size(); i++ ) + RT_MSG(errorMessages[i]) + wxMessageBox(s, wxT("Some Tests Failed")); + } + else + { + RT_MSG(wxT("All tests succesfull")) + retVal = true; + + if ( !interactive ) + dlg->Close(); + } + + pgman->SelectPage(0); + + // Test may screw up the toolbar, so we need to refresh it. + wxToolBar* toolBar = pgman->GetToolBar(); + if ( toolBar ) + toolBar->Refresh(); + + return retVal; +} + +// ----------------------------------------------------------------------- diff --git a/setup.h.in b/setup.h.in index 498fd6f323..eff79923b1 100644 --- a/setup.h.in +++ b/setup.h.in @@ -307,6 +307,8 @@ #define wxUSE_AUI 0 +#define wxUSE_PROPGRID 0 + #define wxUSE_STC 0 diff --git a/setup.h_vms b/setup.h_vms index 715332eda8..2cc1868ba0 100644 --- a/setup.h_vms +++ b/setup.h_vms @@ -328,6 +328,8 @@ typedef pid_t GPid; #define wxUSE_AUI 1 +#define wxUSE_PROPGRID 1 + #ifndef wxUSE_GRAPHICS_CONTEXT #define wxUSE_GRAPHICS_CONTEXT 0 #endif diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp new file mode 100644 index 0000000000..45ea5fda77 --- /dev/null +++ b/src/propgrid/advprops.cpp @@ -0,0 +1,1993 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/advprops.cpp +// Purpose: wxPropertyGrid Advanced Properties (font, colour, etc.) +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcclient.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/textctrl.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/combobox.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/intl.h" +#endif + +#define __wxPG_SOURCE_FILE__ + +#include <wx/propgrid/propgrid.h> + +#if wxPG_INCLUDE_ADVPROPS + +#include <wx/propgrid/advprops.h> + +#ifdef __WXMSW__ + #include <wx/msw/private.h> + #include <wx/msw/dc.h> +#endif + +// ----------------------------------------------------------------------- + +#if defined(__WXMSW__) + #define wxPG_CAN_DRAW_CURSOR 1 +#elif defined(__WXGTK__) + #define wxPG_CAN_DRAW_CURSOR 0 +#elif defined(__WXMAC__) + #define wxPG_CAN_DRAW_CURSOR 0 +#else + #define wxPG_CAN_DRAW_CURSOR 0 +#endif + + +// ----------------------------------------------------------------------- +// Value type related +// ----------------------------------------------------------------------- + + +bool operator == (const wxFont&, const wxFont&) +{ + return false; +} + +// Implement dynamic class for type value. +IMPLEMENT_DYNAMIC_CLASS(wxColourPropertyValue, wxObject) + +bool operator == (const wxColourPropertyValue& a, const wxColourPropertyValue& b) +{ + return ( ( a.m_colour == b.m_colour ) && (a.m_type == b.m_type) ); +} + +bool operator == (const wxArrayInt& array1, const wxArrayInt& array2) +{ + if ( array1.size() != array2.size() ) + return false; + size_t i; + for ( i=0; i<array1.size(); i++ ) + { + if ( array1[i] != array2[i] ) + return false; + } + return true; +} + +// ----------------------------------------------------------------------- +// wxSpinCtrl-based property editor +// ----------------------------------------------------------------------- + +#if wxUSE_SPINBTN + + +// This macro also defines global wxPGEditor_SpinCtrl for storing +// the singleton class instance. +WX_PG_IMPLEMENT_EDITOR_CLASS(SpinCtrl,wxPGSpinCtrlEditor,wxPGEditor) + + +// Trivial destructor. +wxPGSpinCtrlEditor::~wxPGSpinCtrlEditor() +{ +} + + +// Create controls and initialize event handling. +wxPGWindowList wxPGSpinCtrlEditor::CreateControls( wxPropertyGrid* propgrid, wxPGProperty* property, + const wxPoint& pos, const wxSize& sz ) const +{ + const int margin = 1; + wxSize butSz(18, sz.y); + wxSize tcSz(sz.x - butSz.x - margin, sz.y); + wxPoint butPos(pos.x + tcSz.x + margin, pos.y); + + wxSpinButton* wnd2 = new wxSpinButton(); +#ifdef __WXMSW__ + wnd2->Hide(); +#endif + wnd2->Create( propgrid->GetPanel(), wxPG_SUBID2, butPos, butSz, wxSP_VERTICAL ); + + wnd2->SetRange( INT_MIN, INT_MAX ); + wnd2->SetValue( 0 ); + + propgrid->Connect( wxPG_SUBID2, wxEVT_SCROLL_LINEUP, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent, NULL, propgrid ); + propgrid->Connect( wxPG_SUBID2, wxEVT_SCROLL_LINEDOWN, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent, NULL, propgrid ); + propgrid->Connect( wxPG_SUBID1, wxEVT_KEY_DOWN, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent, NULL, propgrid ); + + // Let's add validator to make sure only numbers can be entered + wxTextValidator validator(wxFILTER_NUMERIC, &m_tempString); + + wxTextCtrl* wnd1 = (wxTextCtrl*) wxPGTextCtrlEditor::CreateControls( propgrid, property, pos, tcSz ).m_primary; + wnd1->SetValidator(validator); + + return wxPGWindowList(wnd1, wnd2); +} + +// Control's events are redirected here +bool wxPGSpinCtrlEditor::OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* wnd, wxEvent& event ) const +{ + int evtType = event.GetEventType(); + int keycode = -1; + bool bigStep = false; + + if ( evtType == wxEVT_KEY_DOWN ) + { + wxKeyEvent& keyEvent = (wxKeyEvent&)event; + keycode = keyEvent.GetKeyCode(); + + if ( keycode == WXK_UP ) + evtType = wxEVT_SCROLL_LINEUP; + else if ( keycode == WXK_DOWN ) + evtType = wxEVT_SCROLL_LINEDOWN; + else if ( keycode == WXK_PAGEUP ) + { + evtType = wxEVT_SCROLL_LINEUP; + bigStep = true; + } + else if ( keycode == WXK_PAGEDOWN ) + { + evtType = wxEVT_SCROLL_LINEDOWN; + bigStep = true; + } + } + + if ( evtType == wxEVT_SCROLL_LINEUP || evtType == wxEVT_SCROLL_LINEDOWN ) + { + wxString s; + // Can't use wnd since it might be clipper window + wxTextCtrl* tc = wxDynamicCast(propgrid->GetEditorControl(), wxTextCtrl); + + if ( tc ) + s = tc->GetValue(); + else + s = property->GetValueAsString(wxPG_FULL_VALUE); + + int mode = wxPG_PROPERTY_VALIDATION_SATURATE; + + if ( property->GetAttributeAsLong(wxT("Wrap"), 0) ) + mode = wxPG_PROPERTY_VALIDATION_WRAP; + + if ( property->GetValueType() == wxT("double") ) + { + double v_d; + double step = property->GetAttributeAsDouble(wxT("Step"), 1.0); + + // Try double + if ( s.ToDouble(&v_d) ) + { + if ( bigStep ) + step *= 10.0; + + if ( evtType == wxEVT_SCROLL_LINEUP ) v_d += step; + else v_d -= step; + + // Min/Max check + wxFloatProperty::DoValidation(property, v_d, NULL, mode); + + wxPropertyGrid::DoubleToString(s, v_d, 6, true, NULL); + } + else + { + return false; + } + } + else + { + wxLongLong_t v_ll; + wxLongLong_t step = property->GetAttributeAsLong(wxT("Step"), 1); + + // Try (long) long + if ( s.ToLongLong(&v_ll, 10) ) + { + if ( bigStep ) + step *= 10; + + if ( evtType == wxEVT_SCROLL_LINEUP ) v_ll += step; + else v_ll -= step; + + // Min/Max check + wxIntProperty::DoValidation(property, v_ll, NULL, mode); + + s = wxLongLong(v_ll).ToString(); + } + else + { + return false; + } + } + + if ( tc ) + { + int ip = tc->GetInsertionPoint(); + int lp = tc->GetLastPosition(); + tc->SetValue(s); + tc->SetInsertionPoint(ip+(tc->GetLastPosition()-lp)); + } + + return true; + } + + return wxPGTextCtrlEditor::OnEvent(propgrid,property,wnd,event); +} + +#endif // wxUSE_SPINBTN + + +// ----------------------------------------------------------------------- +// wxDatePickerCtrl-based property editor +// ----------------------------------------------------------------------- + +#if wxUSE_DATEPICKCTRL + + +#include <wx/datectrl.h> +#include <wx/dateevt.h> + +class wxPGDatePickerCtrlEditor : public wxPGEditor +{ + WX_PG_DECLARE_EDITOR_CLASS(wxPGDatePickerCtrlEditor) +public: + virtual ~wxPGDatePickerCtrlEditor(); + + wxPG_DECLARE_CREATECONTROLS + + virtual void UpdateControl( wxPGProperty* property, wxWindow* wnd ) const; + virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, + wxWindow* wnd, wxEvent& event ) const; + virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* wnd ) const; + virtual void SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* wnd ) const; +}; + + +WX_PG_IMPLEMENT_EDITOR_CLASS(DatePickerCtrl,wxPGDatePickerCtrlEditor,wxPGEditor) + + +wxPGDatePickerCtrlEditor::~wxPGDatePickerCtrlEditor() +{ +} + +wxPGWindowList wxPGDatePickerCtrlEditor::CreateControls( wxPropertyGrid* propgrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + wxCHECK_MSG( property->IsKindOf(CLASSINFO(wxDateProperty)), + NULL, + wxT("DatePickerCtrl editor can only be used with wxDateProperty or derivative.") ); + + wxDateProperty* prop = (wxDateProperty*) property; + + // Use two stage creation to allow cleaner display on wxMSW + wxDatePickerCtrl* ctrl = new wxDatePickerCtrl(); +#ifdef __WXMSW__ + ctrl->Hide(); + wxSize useSz = wxDefaultSize; + useSz.x = sz.x; +#else + wxSize useSz = sz; +#endif + ctrl->Create(propgrid->GetPanel(), + wxPG_SUBID1, + prop->GetDateValue(), + pos, + useSz, + prop->GetDatePickerStyle() | wxNO_BORDER); + + // Connect all required events to grid's OnCustomEditorEvent + // (all relevenat wxTextCtrl, wxComboBox and wxButton events are + // already connected) + propgrid->Connect( wxPG_SUBID1, wxEVT_DATE_CHANGED, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent ); + +#ifdef __WXMSW__ + ctrl->Show(); +#endif + + return ctrl; +} + +// Copies value from property to control +void wxPGDatePickerCtrlEditor::UpdateControl( wxPGProperty* property, wxWindow* wnd ) const +{ + wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd; + wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) ); + + // We assume that property's data type is 'int' (or something similar), + // thus allowing us to get raw, unchecked value via DoGetValue. + ctrl->SetValue( property->GetValue().GetDateTime() ); +} + +// Control's events are redirected here +bool wxPGDatePickerCtrlEditor::OnEvent( wxPropertyGrid* WXUNUSED(propgrid), + wxPGProperty* WXUNUSED(property), + wxWindow* WXUNUSED(wnd), + wxEvent& event ) const +{ + if ( event.GetEventType() == wxEVT_DATE_CHANGED ) + return true; + + return false; +} + +bool wxPGDatePickerCtrlEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* WXUNUSED(property), wxWindow* wnd ) const +{ + wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd; + wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) ); + + variant = ctrl->GetValue(); + + return true; +} + +void wxPGDatePickerCtrlEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* WXUNUSED(wnd) ) const +{ + // TODO? + //wxDateProperty* prop = (wxDateProperty*) property; + //ctrl->SetValue(?); +} + +#endif // wxUSE_DATEPICKCTRL + + +// ----------------------------------------------------------------------- +// wxFontProperty +// ----------------------------------------------------------------------- + +#include <wx/fontdlg.h> +#include <wx/fontenum.h> + +static const wxChar* gs_fp_es_family_labels[] = { + wxT("Default"), wxT("Decorative"), + wxT("Roman"), wxT("Script"), + wxT("Swiss"), wxT("Modern"), + (const wxChar*) NULL +}; + +static long gs_fp_es_family_values[] = { + wxDEFAULT, wxDECORATIVE, + wxROMAN, wxSCRIPT, + wxSWISS, wxMODERN +}; + +static const wxChar* gs_fp_es_style_labels[] = { + wxT("Normal"), + wxT("Slant"), + wxT("Italic"), + (const wxChar*) NULL +}; + +static long gs_fp_es_style_values[] = { + wxNORMAL, + wxSLANT, + wxITALIC +}; + +static const wxChar* gs_fp_es_weight_labels[] = { + wxT("Normal"), + wxT("Light"), + wxT("Bold"), + (const wxChar*) NULL +}; + +static long gs_fp_es_weight_values[] = { + wxNORMAL, + wxLIGHT, + wxBOLD +}; + +// Class body is in advprops.h + + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxFontProperty,wxPGProperty, + wxFont,const wxFont&,TextCtrlAndButton) + + +wxFontProperty::wxFontProperty( const wxString& label, const wxString& name, + const wxFont& value ) + : wxPGProperty(label,name) +{ + SetValue( wxFontToVariant(value) ); + + // Initialize font family choices list + if ( !wxPGGlobalVars->m_fontFamilyChoices ) + { + wxFontEnumerator enumerator; + enumerator.EnumerateFacenames(); + +#if wxMINOR_VERSION > 6 + wxArrayString faceNames = enumerator.GetFacenames(); +#else + wxArrayString& faceNames = *enumerator.GetFacenames(); +#endif + + faceNames.Sort(); + + wxPGGlobalVars->m_fontFamilyChoices = new wxPGChoices(faceNames); + } + + wxString emptyString(wxEmptyString); + + wxFont& font = wxFontFromVariant(m_value); + + AddChild( new wxIntProperty( _("Point Size"),emptyString,(long)font.GetPointSize() ) ); + + AddChild( new wxEnumProperty(_("Family"), emptyString, + gs_fp_es_family_labels,gs_fp_es_family_values, + font.GetFamily()) ); + + wxString faceName = font.GetFaceName(); + // If font was not in there, add it now + if ( faceName.length() && + wxPGGlobalVars->m_fontFamilyChoices->Index(faceName) == wxNOT_FOUND ) + wxPGGlobalVars->m_fontFamilyChoices->AddAsSorted(faceName); + + wxPGProperty* p = new wxEnumProperty(_("Face Name"),emptyString, + *wxPGGlobalVars->m_fontFamilyChoices); + + p->SetValueFromString(faceName, wxPG_FULL_VALUE); + + AddChild( p ); + + AddChild( new wxEnumProperty(_("Style"),emptyString, + gs_fp_es_style_labels,gs_fp_es_style_values,font.GetStyle()) ); + + AddChild( new wxEnumProperty(_("Weight"),emptyString, + gs_fp_es_weight_labels,gs_fp_es_weight_values,font.GetWeight()) ); + + AddChild( new wxBoolProperty(_("Underlined"),emptyString, + font.GetUnderlined()) ); +} + +wxFontProperty::~wxFontProperty() { } + +void wxFontProperty::OnSetValue() +{ + wxFont& font = wxFontFromVariant(m_value); + wxASSERT(&font); + + wxFont font2; + if ( !font.Ok() ) + font2 = wxFont(10,wxSWISS,wxNORMAL,wxNORMAL); + else + font2 = font; + + m_value = wxFontToVariant(font2); +} + +wxString wxFontProperty::GetValueAsString( int argFlags ) const +{ + return wxPGProperty::GetValueAsString(argFlags); +} + +bool wxFontProperty::OnEvent( wxPropertyGrid* propgrid, wxWindow* WXUNUSED(primary), + wxEvent& event ) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + // Update value from last minute changes + PrepareValueForDialogEditing(propgrid); + + wxFontData data; + data.SetInitialFont( wxFontFromVariant(m_value) ); + data.SetColour(*wxBLACK); + + wxFontDialog dlg(propgrid, data); + if ( dlg.ShowModal() == wxID_OK ) + { + propgrid->EditorsValueWasModified(); + + wxVariant variant = wxFontToVariant(dlg.GetFontData().GetChosenFont()); + SetValueInEvent( variant ); + return true; + } + } + return false; +} + +void wxFontProperty::RefreshChildren() +{ + if ( !GetChildCount() ) return; + const wxFont& font = wxFontFromVariant(m_value); + Item(0)->SetValue( (long)font.GetPointSize() ); + Item(1)->SetValue( (long)font.GetFamily() ); + Item(2)->SetValueFromString( font.GetFaceName(), wxPG_FULL_VALUE ); + Item(3)->SetValue( (long)font.GetStyle() ); + Item(4)->SetValue( (long)font.GetWeight() ); + Item(5)->SetValue( font.GetUnderlined() ); +} + +void wxFontProperty::ChildChanged( wxVariant& thisValue, int ind, wxVariant& childValue ) const +{ + wxFont& font = wxFontFromVariant(thisValue); + + if ( ind == 0 ) + { + font.SetPointSize( wxPGVariantToInt(childValue) ); + } + else if ( ind == 1 ) + { + int fam = childValue.GetLong(); + if ( fam < wxDEFAULT || + fam > wxTELETYPE ) + fam = wxDEFAULT; + font.SetFamily( fam ); + } + else if ( ind == 2 ) + { + wxString faceName; + int faceIndex = childValue.GetLong(); + + if ( faceIndex >= 0 ) + faceName = wxPGGlobalVars->m_fontFamilyChoices->GetLabel(faceIndex); + + font.SetFaceName( faceName ); + } + else if ( ind == 3 ) + { + int st = childValue.GetLong(); + if ( st != wxFONTSTYLE_NORMAL && + st != wxFONTSTYLE_SLANT && + st != wxFONTSTYLE_ITALIC ) + st = wxFONTWEIGHT_NORMAL; + font.SetStyle( st ); + } + else if ( ind == 4 ) + { + int wt = childValue.GetLong(); + if ( wt != wxFONTWEIGHT_NORMAL && + wt != wxFONTWEIGHT_LIGHT && + wt != wxFONTWEIGHT_BOLD ) + wt = wxFONTWEIGHT_NORMAL; + font.SetWeight( wt ); + } + else if ( ind == 5 ) + { + font.SetUnderlined( childValue.GetBool() ); + } +} + +/* +wxSize wxFontProperty::OnMeasureImage() const +{ + return wxSize(-1,-1); +} + +void wxFontProperty::OnCustomPaint(wxDC& dc, + const wxRect& rect, + wxPGPaintData& paintData) +{ + wxString drawFace; + if ( paintData.m_choiceItem >= 0 ) + drawFace = wxPGGlobalVars->m_fontFamilyChoices->GetLabel(paintData.m_choiceItem); + else + drawFace = m_value_wxFont.GetFaceName(); + + if ( drawFace.length() ) + { + // Draw the background + dc.SetBrush( wxColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)) ); + //dc.SetBrush( *wxWHITE_BRUSH ); + //dc.SetPen( *wxMEDIUM_GREY_PEN ); + dc.DrawRectangle( rect ); + + wxFont oldFont = dc.GetFont(); + wxFont drawFont(oldFont.GetPointSize(), + wxDEFAULT,wxNORMAL,wxBOLD,false,drawFace); + dc.SetFont(drawFont); + + dc.SetTextForeground( wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT) ); + dc.DrawText( wxT("Aa"), rect.x+2, rect.y+1 ); + + dc.SetFont(oldFont); + } + else + { + // No file - just draw a white box + dc.SetBrush ( *wxWHITE_BRUSH ); + dc.DrawRectangle ( rect ); + } +} +*/ + + +// ----------------------------------------------------------------------- +// wxSystemColourProperty +// ----------------------------------------------------------------------- + +// wxEnumProperty based classes cannot use wxPG_PROP_CLASS_SPECIFIC_1 +#define wxPG_PROP_HIDE_CUSTOM_COLOUR wxPG_PROP_CLASS_SPECIFIC_2 + +#include <wx/colordlg.h> + +//#define wx_cp_es_syscolours_len 25 +static const wxChar* gs_cp_es_syscolour_labels[] = { + wxT("AppWorkspace"), + wxT("ActiveBorder"), + wxT("ActiveCaption"), + wxT("ButtonFace"), + wxT("ButtonHighlight"), + wxT("ButtonShadow"), + wxT("ButtonText"), + wxT("CaptionText"), + wxT("ControlDark"), + wxT("ControlLight"), + wxT("Desktop"), + wxT("GrayText"), + wxT("Highlight"), + wxT("HighlightText"), + wxT("InactiveBorder"), + wxT("InactiveCaption"), + wxT("InactiveCaptionText"), + wxT("Menu"), + wxT("Scrollbar"), + wxT("Tooltip"), + wxT("TooltipText"), + wxT("Window"), + wxT("WindowFrame"), + wxT("WindowText"), + wxT("Custom"), + (const wxChar*) NULL +}; + +static long gs_cp_es_syscolour_values[] = { + wxSYS_COLOUR_APPWORKSPACE, + wxSYS_COLOUR_ACTIVEBORDER, + wxSYS_COLOUR_ACTIVECAPTION, + wxSYS_COLOUR_BTNFACE, + wxSYS_COLOUR_BTNHIGHLIGHT, + wxSYS_COLOUR_BTNSHADOW, + wxSYS_COLOUR_BTNTEXT , + wxSYS_COLOUR_CAPTIONTEXT, + wxSYS_COLOUR_3DDKSHADOW, + wxSYS_COLOUR_3DLIGHT, + wxSYS_COLOUR_BACKGROUND, + wxSYS_COLOUR_GRAYTEXT, + wxSYS_COLOUR_HIGHLIGHT, + wxSYS_COLOUR_HIGHLIGHTTEXT, + wxSYS_COLOUR_INACTIVEBORDER, + wxSYS_COLOUR_INACTIVECAPTION, + wxSYS_COLOUR_INACTIVECAPTIONTEXT, + wxSYS_COLOUR_MENU, + wxSYS_COLOUR_SCROLLBAR, + wxSYS_COLOUR_INFOBK, + wxSYS_COLOUR_INFOTEXT, + wxSYS_COLOUR_WINDOW, + wxSYS_COLOUR_WINDOWFRAME, + wxSYS_COLOUR_WINDOWTEXT, + wxPG_COLOUR_CUSTOM +}; + + +WX_PG_IMPLEMENT_WXOBJECT_VARIANT_DATA(wxPGVariantDataColourPropertyValue, wxColourPropertyValue) + + +// Class body is in advprops.h + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxSystemColourProperty,wxEnumProperty, + wxColourPropertyValue,const wxColourPropertyValue&,Choice) + + +void wxSystemColourProperty::Init( int type, const wxColour& colour ) +{ + wxColourPropertyValue cpv; + + if ( colour.Ok() ) + cpv.Init( type, colour ); + else + cpv.Init( type, *wxWHITE ); + + m_flags |= wxPG_PROP_STATIC_CHOICES; // Colour selection cannot be changed. + + m_value = wxColourPropertyValueToVariant(cpv); + + OnSetValue(); +} + + +static wxPGChoices gs_wxSystemColourProperty_choicesCache; + + +wxSystemColourProperty::wxSystemColourProperty( const wxString& label, const wxString& name, + const wxColourPropertyValue& value ) + : wxEnumProperty( label, + name, + gs_cp_es_syscolour_labels, + gs_cp_es_syscolour_values, + &gs_wxSystemColourProperty_choicesCache ) +{ + if ( &value ) + Init( value.m_type, value.m_colour ); + else + Init( wxPG_COLOUR_CUSTOM, *wxWHITE ); +} + + +wxSystemColourProperty::wxSystemColourProperty( const wxString& label, const wxString& name, + const wxChar** labels, const long* values, wxPGChoices* choicesCache, + const wxColourPropertyValue& value ) + : wxEnumProperty( label, name, labels, values, choicesCache ) +{ + if ( &value ) + Init( value.m_type, value.m_colour ); + else + Init( wxPG_COLOUR_CUSTOM, *wxWHITE ); +} + + +wxSystemColourProperty::wxSystemColourProperty( const wxString& label, const wxString& name, + const wxChar** labels, const long* values, wxPGChoices* choicesCache, + const wxColour& value ) + : wxEnumProperty( label, name, labels, values, choicesCache ) +{ + if ( &value ) + Init( wxPG_COLOUR_CUSTOM, value ); + else + Init( wxPG_COLOUR_CUSTOM, *wxWHITE ); +} + + +wxSystemColourProperty::~wxSystemColourProperty() { } + + +wxColourPropertyValue wxSystemColourProperty::GetVal( const wxVariant* pVariant ) const +{ + if ( !pVariant ) + pVariant = &m_value; + + if ( pVariant->IsNull() ) + return wxColourPropertyValue(wxPG_COLOUR_UNSPECIFIED, wxColour()); + + wxColourPropertyValue* v1 = &wxColourPropertyValueFromVariant(*pVariant); + if ( v1 ) + return *v1; + + wxColour* pCol = wxGetVariantCast(*pVariant, wxColour); + wxColour col; + bool variantProcessed = true; + + if ( pCol ) + { + col = *pCol; + } + else if ( pVariant->GetType() == wxT("wxArrayInt") ) + { + wxArrayInt arr; + arr << *pVariant; + + if ( arr.size() >= 3 ) + { + int r, g, b; + int a = 255; + + r = arr[0]; + g = arr[1]; + b = arr[2]; + if ( arr.size() >= 4 ) + a = arr[3]; + + col = wxColour(r, g, b, a); + } + else + { + variantProcessed = false; + } + } + else if ( pVariant->GetType() == wxT("wxColour") ) + { + col << *pVariant; + } + else + { + variantProcessed = false; + } + + if ( !variantProcessed ) + return wxColourPropertyValue(wxPG_COLOUR_UNSPECIFIED, wxColour()); + + wxColourPropertyValue v2( wxPG_COLOUR_CUSTOM, col ); + + int colInd = ColToInd(col); + if ( colInd != wxNOT_FOUND ) + v2.m_type = colInd; + + return v2; +} + +wxVariant wxSystemColourProperty::DoTranslateVal( wxColourPropertyValue& v ) const +{ + return wxColourPropertyValueToVariant(v); +} + +int wxSystemColourProperty::ColToInd( const wxColour& colour ) const +{ + size_t i; + size_t i_max = m_choices.GetCount() - 1; + + for ( i=0; i<i_max; i++ ) + { + int ind = m_choices[i].GetValue(); + + if ( colour == GetColour(ind) ) + { + /*wxLogDebug(wxT("%s(%s): Index %i for ( getcolour(%i,%i,%i), colour(%i,%i,%i))"), + GetClassName(),GetLabel().c_str(), + (int)i,(int)GetColour(ind).Red(),(int)GetColour(ind).Green(),(int)GetColour(ind).Blue(), + (int)colour.Red(),(int)colour.Green(),(int)colour.Blue());*/ + return ind; + } + } + return wxNOT_FOUND; +} + + +static inline wxColour wxColourFromPGLong( long col ) +{ + return wxColour((col&0xFF),((col>>8)&0xFF),((col>>16)&0xFF)); +} + + +void wxSystemColourProperty::OnSetValue() +{ + // Convert from generic wxobject ptr to wxPGVariantDataColour + if ( wxPGIsVariantType(m_value, wxobject) ) + { + wxASSERT( m_value.IsValueKindOf(CLASSINFO(wxColour)) ); + wxColour* pCol = (wxColour*) m_value.GetWxObjectPtr(); + m_value << *pCol; + } + + wxColourPropertyValue val = GetVal(&m_value); + + if ( val.m_type == wxPG_COLOUR_UNSPECIFIED ) + { + m_value.MakeNull(); + return; + } + else + { + + if ( val.m_type < wxPG_COLOUR_WEB_BASE ) + val.m_colour = GetColour( val.m_type ); + + m_value = TranslateVal(val); + } + + wxColourPropertyValue* pCpv = &wxColourPropertyValueFromVariant(m_value); + wxColour col; + if ( pCpv ) + col = pCpv->m_colour; + else + col << m_value; + + if ( !col.Ok() ) + { + SetValueToUnspecified(); + SetIndex(wxNOT_FOUND); + return; + } + + int ind; + + if ( pCpv ) + { + if ( pCpv->m_type < wxPG_COLOUR_WEB_BASE ) + { + if ( m_choices.HasValues() ) + ind = GetIndexForValue(pCpv->m_type); + else + ind = ColToInd(col); + } + else + { + pCpv->m_type = wxPG_COLOUR_CUSTOM; + ind = GetCustomColourIndex(); + } + } + else + { + ind = ColToInd(col); + + if ( ind == wxNOT_FOUND ) + ind = GetCustomColourIndex(); + } + + SetIndex(ind); +} + + +wxColour wxSystemColourProperty::GetColour( int index ) const +{ + return wxSystemSettings::GetColour( (wxSystemColour)index ); +} + +wxString wxSystemColourProperty::ColourToString( const wxColour& col, int index ) const +{ + if ( index == wxNOT_FOUND ) + return wxString::Format(wxT("(%i,%i,%i)"), + (int)col.Red(), + (int)col.Green(), + (int)col.Blue()); + else + return m_choices.GetLabel(index); +} + +wxString wxSystemColourProperty::GetValueAsString( int argFlags ) const +{ + wxColourPropertyValue val = GetVal(); + + int ind = GetIndex(); + + // Always show custom colour for textctrl-editor + if ( val.m_type == wxPG_COLOUR_CUSTOM || + ind == GetCustomColourIndex() || + (argFlags & wxPG_PROPERTY_SPECIFIC) ) + { + return ColourToString(val.m_colour, wxNOT_FOUND); + } + + if ( ind == -1 ) + return wxEmptyString; + + return ColourToString(val.m_colour, ind); +} + + +wxSize wxSystemColourProperty::OnMeasureImage( int ) const +{ + return wxPG_DEFAULT_IMAGE_SIZE; +} + + +int wxSystemColourProperty::GetCustomColourIndex() const +{ + return m_choices.GetCount() - 1; +} + + +bool wxSystemColourProperty::QueryColourFromUser( wxVariant& variant ) const +{ + wxASSERT( m_value.GetType() != wxT("string") ); + bool res = false; + + wxPropertyGrid* propgrid = GetGrid(); + wxASSERT( propgrid ); + + // Must only occur when user triggers event + if ( !(propgrid->GetInternalFlags() & wxPG_FL_IN_ONCUSTOMEDITOREVENT) ) + return res; + + wxColourPropertyValue val = GetVal(); + + val.m_type = wxPG_COLOUR_CUSTOM; + + wxColourData data; + data.SetChooseFull(true); + data.SetColour(val.m_colour); + int i; + for ( i = 0; i < 16; i++) + { + wxColour colour(i*16, i*16, i*16); + data.SetCustomColour(i, colour); + } + + wxColourDialog dialog(propgrid, &data); + if ( dialog.ShowModal() == wxID_OK ) + { + wxColourData retData = dialog.GetColourData(); + val.m_colour = retData.GetColour(); + + variant = DoTranslateVal(val); + + SetValueInEvent(variant); + + res = true; + } + + return res; +} + + +bool wxSystemColourProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(argFlags) ) const +{ + int index = number; + int type = GetValueForIndex(index); + bool hasValue = m_choices[index].HasValue(); + + if ( ( hasValue && type == wxPG_COLOUR_CUSTOM ) || + ( !hasValue && (index == (int)GetCustomColourIndex() && + !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR)) + ) + ) + { + QueryColourFromUser(variant); + } + else + { + variant = TranslateVal( type, GetColour(type) ); + } + + return true; +} + +// Need to do some extra event handling. +bool wxSystemColourProperty::OnEvent( wxPropertyGrid* propgrid, wxWindow* WXUNUSED(primary), wxEvent& event ) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + // We need to handle button click in case editor has been + // switched to one that has wxButton as well. + wxVariant variant; + if ( QueryColourFromUser(variant) ) + return true; + } + return false; +} + +/*class wxPGColourPropertyRenderer : public wxPGDefaultRenderer +{ +public: + virtual void Render( wxDC& dc, const wxRect& rect, + const wxPropertyGrid* propertyGrid, wxPGProperty* property, + int WXUNUSED(column), int item, int WXUNUSED(flags) ) const + { + wxASSERT( property->IsKindOf(CLASSINFO(wxSystemColourProperty)) ); + wxSystemColourProperty* prop = wxStaticCast(property, wxSystemColourProperty); + + dc.SetPen(*wxBLACK_PEN); + if ( item >= 0 && + ( item < (int)(GetCustomColourIndex) || (prop->HasFlag(wxPG_PROP_HIDE_CUSTOM_COLOUR))) + ) + { + int colInd; + const wxArrayInt& values = prop->GetValues(); + if ( values.GetChildCount() ) + colInd = values[item]; + else + colInd = item; + dc.SetBrush( wxColour( prop->GetColour( colInd ) ) ); + } + else if ( !prop->IsValueUnspecified() ) + dc.SetBrush( prop->GetVal().m_colour ); + else + dc.SetBrush( *wxWHITE ); + + wxRect imageRect = propertyGrid->GetImageRect(property, item); + wxLogDebug(wxT("%i, %i"),imageRect.x,imageRect.y); + dc.DrawRectangle( rect.x+imageRect.x, rect.y+imageRect.y, + imageRect.width, imageRect.height ); + + wxString text; + if ( item == -1 ) + text = property->GetValueAsString(); + else + text = property->GetChoiceString(item); + DrawText( dc, rect, imageRect.width, text ); + } +protected: +}; + +wxPGColourPropertyRenderer g_wxPGColourPropertyRenderer; + +wxPGCellRenderer* wxSystemColourProperty::GetCellRenderer( int column ) const +{ + if ( column == 1 ) + return &g_wxPGColourPropertyRenderer; + return wxEnumProperty::GetCellRenderer(column); +}*/ + +void wxSystemColourProperty::OnCustomPaint( wxDC& dc, const wxRect& rect, + wxPGPaintData& paintdata ) +{ + wxColour col; + + if ( paintdata.m_choiceItem >= 0 && paintdata.m_choiceItem < (int)m_choices.GetCount() && + paintdata.m_choiceItem != GetCustomColourIndex() ) + { + int colInd = m_choices[paintdata.m_choiceItem].GetValue(); + col = GetColour( colInd ); + } + else if ( !IsValueUnspecified() ) + { + col = GetVal().m_colour; + } + + if ( col.Ok() ) + { + dc.SetBrush(col); + dc.DrawRectangle(rect); + } +} + + +bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& text, int argFlags ) const +{ + // + // Accept colour format "[Name] [(R,G,B)]" + // Name takes precedence. + // + wxString colourName; + wxString colourRGB; + + int ppos = text.Find(wxT("(")); + + if ( ppos == wxNOT_FOUND ) + { + colourName = text; + } + else + { + colourName = text.substr(0, ppos); + colourRGB = text.substr(ppos, text.length()-ppos); + } + + // Strip spaces from extremities + colourName.Trim(true); + colourName.Trim(false); + colourRGB.Trim(true); + + // Validate colourRGB string - (1,1,1) is shortest allowed + if ( colourRGB.length() < 7 ) + colourRGB.clear(); + + if ( colourRGB.length() == 0 && m_choices.GetCount() && + colourName == m_choices.GetLabel(GetCustomColourIndex()) ) + { + if ( !(argFlags & wxPG_EDITABLE_VALUE )) + { + // This really should not occurr... + // wxASSERT(false); + ResetNextIndex(); + return false; + } + + QueryColourFromUser(value); + } + else + { + wxColourPropertyValue val; + + bool done = false; + + if ( colourName.length() ) + { + // Try predefined colour first + bool res = wxEnumProperty::StringToValue(value, colourName, argFlags); + if ( res && GetIndex() >= 0 ) + { + val.m_type = GetIndex(); + if ( val.m_type >= 0 && val.m_type < m_choices.GetCount() && m_choices[val.m_type].HasValue() ) + val.m_type = m_choices[val.m_type].GetValue(); + + // Get proper colour for type. + val.m_colour = GetColour(val.m_type); + + done = true; + } + } + if ( colourRGB.length() && !done ) + { + // Then check custom colour. + val.m_type = wxPG_COLOUR_CUSTOM; + + int r = -1, g = -1, b = -1; + wxSscanf(colourRGB.c_str(),wxT("(%i,%i,%i)"),&r,&g,&b); + + if ( r >= 0 && r <= 255 && + g >= 0 && g <= 255 && + b >= 0 && b <= 255 ) + { + val.m_colour.Set(r,g,b); + + done = true; + } + } + + if ( !done ) + { + ResetNextIndex(); + return false; + } + + value = DoTranslateVal(val); + } + + return true; +} + + +bool wxSystemColourProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_COLOUR_ALLOW_CUSTOM ) + { + int ival = wxPGVariantToInt(value); + + SetChoicesExclusive(); // Make sure we don't corrupt colour lists of other properties + + if ( ival && (m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + { + // Show custom choice + m_choices.Insert(wxT("Custom"), GetCustomColourIndex(), wxPG_COLOUR_CUSTOM); + m_flags &= ~(wxPG_PROP_HIDE_CUSTOM_COLOUR); + } + else if ( !ival && !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + { + // Hide custom choice + m_choices.RemoveAt(GetCustomColourIndex()); + m_flags |= wxPG_PROP_HIDE_CUSTOM_COLOUR; + } + return true; + } + return false; +} + + +// ----------------------------------------------------------------------- +// wxColourProperty +// ----------------------------------------------------------------------- + +static const wxChar* gs_cp_es_normcolour_labels[] = { + wxT("Black"), + wxT("Maroon"), + wxT("Navy"), + wxT("Purple"), + wxT("Teal"), + wxT("Gray"), + wxT("Green"), + wxT("Olive"), + wxT("Brown"), + wxT("Blue"), + wxT("Fuchsia"), + wxT("Red"), + wxT("Orange"), + wxT("Silver"), + wxT("Lime"), + wxT("Aqua"), + wxT("Yellow"), + wxT("White"), + wxT("Custom"), + (const wxChar*) NULL +}; + +static unsigned long gs_cp_es_normcolour_colours[] = { + wxPG_COLOUR(0,0,0), + wxPG_COLOUR(128,0,0), + wxPG_COLOUR(0,0,128), + wxPG_COLOUR(128,0,128), + wxPG_COLOUR(0,128,128), + wxPG_COLOUR(128,128,128), + wxPG_COLOUR(0,128,0), + wxPG_COLOUR(128,128,0), + wxPG_COLOUR(166,124,81), + wxPG_COLOUR(0,0,255), + wxPG_COLOUR(255,0,255), + wxPG_COLOUR(255,0,0), + wxPG_COLOUR(247,148,28), + wxPG_COLOUR(192,192,192), + wxPG_COLOUR(0,255,0), + wxPG_COLOUR(0,255,255), + wxPG_COLOUR(255,255,0), + wxPG_COLOUR(255,255,255), + wxPG_COLOUR(0,0,0) +}; + +WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(wxColourProperty, + gs_cp_es_normcolour_labels, + (const long*)NULL, + gs_cp_es_normcolour_colours, + TextCtrlAndButton) + +// ----------------------------------------------------------------------- +// wxCursorProperty +// ----------------------------------------------------------------------- + +#define wxPG_CURSOR_IMAGE_WIDTH 32 + +#define NUM_CURSORS 28 + +//#define wx_cp_es_syscursors_len 28 +static const wxChar* gs_cp_es_syscursors_labels[NUM_CURSORS+1] = { + wxT("Default"), + wxT("Arrow"), + wxT("Right Arrow"), + wxT("Blank"), + wxT("Bullseye"), + wxT("Character"), + wxT("Cross"), + wxT("Hand"), + wxT("I-Beam"), + wxT("Left Button"), + wxT("Magnifier"), + wxT("Middle Button"), + wxT("No Entry"), + wxT("Paint Brush"), + wxT("Pencil"), + wxT("Point Left"), + wxT("Point Right"), + wxT("Question Arrow"), + wxT("Right Button"), + wxT("Sizing NE-SW"), + wxT("Sizing N-S"), + wxT("Sizing NW-SE"), + wxT("Sizing W-E"), + wxT("Sizing"), + wxT("Spraycan"), + wxT("Wait"), + wxT("Watch"), + wxT("Wait Arrow"), + (const wxChar*) NULL +}; + +static long gs_cp_es_syscursors_values[NUM_CURSORS] = { + wxCURSOR_NONE, + wxCURSOR_ARROW, + wxCURSOR_RIGHT_ARROW, + wxCURSOR_BLANK, + wxCURSOR_BULLSEYE, + wxCURSOR_CHAR, + wxCURSOR_CROSS, + wxCURSOR_HAND, + wxCURSOR_IBEAM, + wxCURSOR_LEFT_BUTTON, + wxCURSOR_MAGNIFIER, + wxCURSOR_MIDDLE_BUTTON, + wxCURSOR_NO_ENTRY, + wxCURSOR_PAINT_BRUSH, + wxCURSOR_PENCIL, + wxCURSOR_POINT_LEFT, + wxCURSOR_POINT_RIGHT, + wxCURSOR_QUESTION_ARROW, + wxCURSOR_RIGHT_BUTTON, + wxCURSOR_SIZENESW, + wxCURSOR_SIZENS, + wxCURSOR_SIZENWSE, + wxCURSOR_SIZEWE, + wxCURSOR_SIZING, + wxCURSOR_SPRAYCAN, + wxCURSOR_WAIT, + wxCURSOR_WATCH, + wxCURSOR_ARROWWAIT +}; + +IMPLEMENT_DYNAMIC_CLASS(wxCursorProperty, wxEnumProperty) + +wxCursorProperty::wxCursorProperty( const wxString& label, const wxString& name, + int value ) + : wxEnumProperty( label, + name, + gs_cp_es_syscursors_labels, + gs_cp_es_syscursors_values, + value ) +{ + m_flags |= wxPG_PROP_STATIC_CHOICES; // Cursor selection cannot be changed. +} + +wxCursorProperty::~wxCursorProperty() +{ +} + +wxSize wxCursorProperty::OnMeasureImage( int item ) const +{ +#if wxPG_CAN_DRAW_CURSOR + if ( item != -1 && item < NUM_CURSORS ) + return wxSize(wxPG_CURSOR_IMAGE_WIDTH,wxPG_CURSOR_IMAGE_WIDTH); +#else + wxUnusedVar(item); +#endif + return wxSize(0,0); +} + +#if wxPG_CAN_DRAW_CURSOR + +void wxCursorProperty::OnCustomPaint( wxDC& dc, + const wxRect& rect, + wxPGPaintData& paintdata ) +{ + // Background brush + dc.SetBrush( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + if ( paintdata.m_choiceItem >= 0 ) + { + dc.DrawRectangle( rect ); + + if ( paintdata.m_choiceItem < NUM_CURSORS ) + { + int cursorindex = gs_cp_es_syscursors_values[paintdata.m_choiceItem]; + + { + if ( cursorindex == wxCURSOR_NONE ) + cursorindex = wxCURSOR_ARROW; + + wxCursor cursor( cursorindex ); + + #ifdef __WXMSW__ + HDC hDc = (HDC)((const wxMSWDCImpl *)dc.GetImpl())->GetHDC(); + ::DrawIconEx( hDc, + rect.x, + rect.y, + (HICON)cursor.GetHandle(), + 0, + 0, + 0, + NULL, + DI_COMPAT | DI_DEFAULTSIZE | DI_NORMAL + ); + #endif + } + } + } +} + +#else +void wxCursorProperty::OnCustomPaint( wxDC&, const wxRect&, wxPGPaintData& ) { } +/*wxPGCellRenderer* wxCursorProperty::GetCellRenderer( int column ) const +{ + return wxEnumProperty::GetCellRenderer(column); +}*/ +#endif + +// ----------------------------------------------------------------------- +// wxImageFileProperty +// ----------------------------------------------------------------------- + +#if wxUSE_IMAGE + +const wxString& wxPGGetDefaultImageWildcard() +{ + // Form the wildcard, if not done yet + if ( !wxPGGlobalVars->m_pDefaultImageWildcard.length() ) + { + + wxString str; + + // TODO: This section may require locking (using global). + + wxList& handlers = wxImage::GetHandlers(); + + wxList::iterator node; + + // Let's iterate over the image handler list. + //for ( wxList::Node *node = handlers.GetFirst(); node; node = node->GetNext() ) + for ( node = handlers.begin(); node != handlers.end(); node++ ) + { + wxImageHandler *handler = (wxImageHandler*)*node; + + wxString ext_lo = handler->GetExtension(); + wxString ext_up = ext_lo.Upper(); + + str.append( ext_up ); + str.append( wxT(" files (*.") ); + str.append( ext_up ); + str.append( wxT(")|*.") ); + str.append( ext_lo ); + str.append( wxT("|") ); + } + + str.append ( wxT("All files (*.*)|*.*") ); + + wxPGGlobalVars->m_pDefaultImageWildcard = str; + } + + return wxPGGlobalVars->m_pDefaultImageWildcard; +} + +WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(wxImageFileProperty, + wxFileProperty, + const wxString&) + +wxImageFileProperty::wxImageFileProperty( const wxString& label, const wxString& name, + const wxString& value ) + : wxFileProperty(label,name,value) +{ + SetAttribute( wxPG_FILE_WILDCARD, wxPGGetDefaultImageWildcard() ); + + m_pImage = (wxImage*) NULL; + m_pBitmap = (wxBitmap*) NULL; +} + +wxImageFileProperty::~wxImageFileProperty() +{ + if ( m_pBitmap ) + delete m_pBitmap; + if ( m_pImage ) + delete m_pImage; +} + +void wxImageFileProperty::OnSetValue() +{ + wxFileProperty::OnSetValue(); + + // Delete old image + if ( m_pImage ) + { + delete m_pImage; + m_pImage = NULL; + } + if ( m_pBitmap ) + { + delete m_pBitmap; + m_pBitmap = NULL; + } + + // Create the image thumbnail + if ( m_filename.FileExists() ) + { + m_pImage = new wxImage( m_filename.GetFullPath() ); + } +} + +wxSize wxImageFileProperty::OnMeasureImage( int ) const +{ + return wxPG_DEFAULT_IMAGE_SIZE; +} + +void wxImageFileProperty::OnCustomPaint( wxDC& dc, + const wxRect& rect, + wxPGPaintData& ) +{ + if ( m_pBitmap || (m_pImage && m_pImage->Ok() ) ) + { + // Draw the thumbnail + + // Create the bitmap here because required size is not known in OnSetValue(). + if ( !m_pBitmap ) + { + m_pImage->Rescale( rect.width, rect.height ); + m_pBitmap = new wxBitmap( *m_pImage ); + delete m_pImage; + m_pImage = NULL; + } + + dc.DrawBitmap( *m_pBitmap, rect.x, rect.y, false ); + } + else + { + // No file - just draw a white box + dc.SetBrush( *wxWHITE_BRUSH ); + dc.DrawRectangle ( rect ); + } +} + +#endif // wxUSE_IMAGE + +// ----------------------------------------------------------------------- +// wxMultiChoiceProperty +// ----------------------------------------------------------------------- + +#if wxUSE_CHOICEDLG + +#include <wx/choicdlg.h> + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxMultiChoiceProperty,wxPGProperty, + wxArrayInt,const wxArrayInt&,TextCtrlAndButton) + +wxMultiChoiceProperty::wxMultiChoiceProperty( const wxString& label, + const wxString& name, + const wxPGChoices& choices, + const wxArrayString& value) + : wxPGProperty(label,name) +{ + m_choices.Assign(choices); + SetValue(value); +} + +wxMultiChoiceProperty::wxMultiChoiceProperty( const wxString& label, + const wxString& name, + const wxArrayString& strings, + const wxArrayString& value) + : wxPGProperty(label,name) +{ + m_choices.Set(strings); + SetValue(value); +} + +wxMultiChoiceProperty::wxMultiChoiceProperty( const wxString& label, + const wxString& name, + const wxArrayString& value) + : wxPGProperty(label,name) +{ + wxArrayString strings; + m_choices.Set(strings); + SetValue(value); +} + +wxMultiChoiceProperty::~wxMultiChoiceProperty() +{ +} + +void wxMultiChoiceProperty::OnSetValue() +{ + GenerateValueAsString(); +} + +wxString wxMultiChoiceProperty::GetValueAsString( int ) const +{ + return m_display; +} + +void wxMultiChoiceProperty::GenerateValueAsString() +{ + wxArrayString strings; + + if ( wxPGIsVariantType(m_value, arrstring) ) + strings = m_value.GetArrayString(); + + wxString& tempStr = m_display; + unsigned int i; + unsigned int itemCount = strings.size(); + + tempStr.Empty(); + + if ( itemCount ) + tempStr.append( wxT("\"") ); + + for ( i = 0; i < itemCount; i++ ) + { + tempStr.append( strings[i] ); + tempStr.append( wxT("\"") ); + if ( i < (itemCount-1) ) + tempStr.append ( wxT(" \"") ); + } +} + +wxArrayInt wxMultiChoiceProperty::GetValueAsIndices() const +{ + const wxArrayInt& valueArr = wxArrayIntFromVariant(GetValue()); + unsigned int i; + + // Translate values to string indices. + wxArrayInt selections; + + if ( !m_choices.IsOk() || !m_choices.GetCount() || !(&valueArr) ) + { + for ( i=0; i<valueArr.size(); i++ ) + selections.Add(-1); + } + else + { + for ( i=0; i<valueArr.size(); i++ ) + { + int sIndex = m_choices.Index(valueArr[i]); + if ( sIndex >= 0 ) + selections.Add(sIndex); + } + } + + return selections; +} + +bool wxMultiChoiceProperty::OnEvent( wxPropertyGrid* propgrid, + wxWindow* WXUNUSED(primary), + wxEvent& event ) +{ + if ( propgrid->IsMainButtonEvent(event) ) + { + // Update the value + PrepareValueForDialogEditing(propgrid); + + wxArrayString labels = m_choices.GetLabels(); + unsigned int choiceCount; + + if ( m_choices.IsOk() ) + choiceCount = m_choices.GetCount(); + else + choiceCount = 0; + + // launch editor dialog + wxMultiChoiceDialog dlg( propgrid, + _("Make a selection:"), + m_label, + choiceCount, + choiceCount?&labels[0]:NULL, + wxCHOICEDLG_STYLE ); + + dlg.Move( propgrid->GetGoodEditorDialogPosition(this,dlg.GetSize()) ); + + wxArrayString strings = m_value.GetArrayString(); + wxArrayString extraStrings; + + dlg.SetSelections(m_choices.GetIndicesForStrings(strings, &extraStrings)); + + if ( dlg.ShowModal() == wxID_OK && choiceCount ) + { + int userStringMode = GetAttributeAsLong(wxT("UserStringMode"), 0); + + wxArrayInt arrInt = dlg.GetSelections(); + + wxVariant variant; + + // Strings that were not in list of choices + wxArrayString value; + + // Translate string indices to strings + + unsigned int n; + if ( userStringMode == 1 ) + { + for (n=0;n<extraStrings.size();n++) + value.push_back(extraStrings[n]); + } + + unsigned int i; + for ( i=0; i<arrInt.size(); i++ ) + value.Add(m_choices.GetLabel(arrInt.Item(i))); + + if ( userStringMode == 2 ) + { + for (n=0;n<extraStrings.size();n++) + value.push_back(extraStrings[n]); + } + + variant = WXVARIANT(value); + + SetValueInEvent(variant); + + return true; + } + } + return false; +} + +int wxMultiChoiceProperty::GetChoiceInfo( wxPGChoiceInfo* choiceinfo ) +{ + if ( choiceinfo ) + choiceinfo->m_choices = &m_choices; + return -1; +} + +bool wxMultiChoiceProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const +{ + wxArrayString arr; + + int userStringMode = GetAttributeAsLong(wxT("UserStringMode"), 0); + + WX_PG_TOKENIZER2_BEGIN(text,wxT('"')) + if ( userStringMode > 0 || (m_choices.IsOk() && m_choices.Index( token ) != wxNOT_FOUND) ) + arr.Add(token); + WX_PG_TOKENIZER2_END() + + wxVariant v( WXVARIANT(arr) ); + variant = v; + + return true; +} + +#endif // wxUSE_CHOICEDLG + + +// ----------------------------------------------------------------------- +// wxDateProperty +// ----------------------------------------------------------------------- + +#if wxUSE_DATETIME + + +#if wxUSE_DATEPICKCTRL + #define dtCtrl DatePickerCtrl +#else + #define dtCtrl TextCtrl +#endif + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxDateProperty, + wxPGProperty, + wxDateTime, + const wxDateTime&, + dtCtrl) + + +wxString wxDateProperty::ms_defaultDateFormat; + + +wxDateProperty::wxDateProperty( const wxString& label, + const wxString& name, + const wxDateTime& value ) + : wxPGProperty(label,name) +{ + //wxPGRegisterDefaultValueType(wxDateTime) + +#if wxUSE_DATEPICKCTRL + wxPGRegisterEditorClass(DatePickerCtrl); + + m_dpStyle = wxDP_DEFAULT | wxDP_SHOWCENTURY; +#else + m_dpStyle = 0; +#endif + + SetValue( value ); +} + +wxDateProperty::~wxDateProperty() +{ +} + +bool wxDateProperty::StringToValue( wxVariant& variant, const wxString& text, + int WXUNUSED(argFlags) ) const +{ + wxDateTime dt; + + const char* c = dt.ParseFormat(text, wxString(wxDefaultDateTimeFormat), wxDefaultDateTime, NULL); + + if ( c ) + { + variant = dt; + return true; + } + + return false; +} + +wxString wxDateProperty::GetValueAsString( int argFlags ) const +{ + const wxChar* format = (const wxChar*) NULL; + + wxDateTime dateTime = m_value.GetDateTime(); + + if ( !dateTime.IsValid() ) + return wxT("Invalid"); + + if ( !ms_defaultDateFormat.length() ) + { +#if wxUSE_DATEPICKCTRL + bool showCentury = m_dpStyle & wxDP_SHOWCENTURY ? true : false; +#else + bool showCentury = true; +#endif + ms_defaultDateFormat = DetermineDefaultDateFormat( showCentury ); + } + + if ( m_format.length() && + !(argFlags & wxPG_FULL_VALUE) ) + format = m_format.c_str(); + + // Determine default from locale + // NB: This is really simple stuff, but can't figure anything + // better without proper support in wxLocale + if ( !format ) + format = ms_defaultDateFormat.c_str(); + + return dateTime.Format(format); +} + +wxString wxDateProperty::DetermineDefaultDateFormat( bool showCentury ) +{ + // This code is basicly copied from datectlg.cpp's SetFormat + // + wxString format; + + wxDateTime dt; + dt.ParseFormat(wxT("2003-10-13"), wxT("%Y-%m-%d")); + wxString str(dt.Format(wxT("%x"))); + + const wxChar *p = str.c_str(); + while ( *p ) + { + int n=wxAtoi(p); + if (n == dt.GetDay()) + { + format.Append(wxT("%d")); + p += 2; + } + else if (n == (int)dt.GetMonth()+1) + { + format.Append(wxT("%m")); + p += 2; + } + else if (n == dt.GetYear()) + { + format.Append(wxT("%Y")); + p += 4; + } + else if (n == (dt.GetYear() % 100)) + { + if (showCentury) + format.Append(wxT("%Y")); + else + format.Append(wxT("%y")); + p += 2; + } + else + format.Append(*p++); + } + + return format; +} + +bool wxDateProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_DATE_FORMAT ) + { + m_format = value.GetString(); + return true; + } + else if ( name == wxPG_DATE_PICKER_STYLE ) + { + m_dpStyle = value.GetLong(); + ms_defaultDateFormat.clear(); // This may need recalculation + return true; + } + return false; +} + +#endif // wxUSE_DATETIME + + +// ----------------------------------------------------------------------- +// wxPropertyGridInterface +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::InitAllTypeHandlers() +{ +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::RegisterAdditionalEditors() +{ +#if wxUSE_SPINBTN + wxPGRegisterEditorClass(SpinCtrl); +#endif +#if wxUSE_DATEPICKCTRL + wxPGRegisterEditorClass(DatePickerCtrl); +#endif +} + +// ----------------------------------------------------------------------- + +#endif // wxPG_INCLUDE_ADVPROPS diff --git a/src/propgrid/editors.cpp b/src/propgrid/editors.cpp new file mode 100644 index 0000000000..6e677a242f --- /dev/null +++ b/src/propgrid/editors.cpp @@ -0,0 +1,2149 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/editors.cpp +// Purpose: wxPropertyGrid editors +// Author: Jaakko Salli +// Modified by: +// Created: 2007-04-14 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcclient.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" + #include "wx/frame.h" +#endif + + +#include "wx/timer.h" +#include "wx/dcbuffer.h" +#include "wx/bmpbuttn.h" + + +// This define is necessary to prevent macro clearing +#define __wxPG_SOURCE_FILE__ + +#include <wx/propgrid/propgrid.h> +#include <wx/propgrid/editors.h> +#include <wx/propgrid/props.h> + +#if wxPG_USE_RENDERER_NATIVE + #include <wx/renderer.h> +#endif + +// How many pixels between textctrl and button +#ifdef __WXMAC__ + #define wxPG_TEXTCTRL_AND_BUTTON_SPACING 8 +#else + #define wxPG_TEXTCTRL_AND_BUTTON_SPACING 2 +#endif + +#define wxPG_BUTTON_SIZEDEC 0 + +#include <wx/odcombo.h> + +#ifdef __WXMSW__ + #include <wx/msw/private.h> +#endif + +// ----------------------------------------------------------------------- + +#if defined(__WXMSW__) + // tested + #define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl. + #define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl. + + #define wxPG_NAT_BUTTON_BORDER_ANY 1 + #define wxPG_NAT_BUTTON_BORDER_X 1 + #define wxPG_NAT_BUTTON_BORDER_Y 1 + + #define wxPG_CHECKMARK_XADJ 1 + #define wxPG_CHECKMARK_YADJ (-1) + #define wxPG_CHECKMARK_WADJ 0 + #define wxPG_CHECKMARK_HADJ 0 + #define wxPG_CHECKMARK_DEFLATE 0 + + #define wxPG_TEXTCTRLYADJUST (m_spacingy+0) + +#elif defined(__WXGTK__) + // tested + #define wxPG_CHECKMARK_XADJ 0 + #define wxPG_CHECKMARK_YADJ 0 + #define wxPG_CHECKMARK_WADJ (-1) + #define wxPG_CHECKMARK_HADJ (-1) + #define wxPG_CHECKMARK_DEFLATE 3 + + #define wxPG_NAT_TEXTCTRL_BORDER_X 3 // Unremovable border of native textctrl. + #define wxPG_NAT_TEXTCTRL_BORDER_Y 3 // Unremovable border of native textctrl. + + #define wxPG_NAT_BUTTON_BORDER_ANY 1 + #define wxPG_NAT_BUTTON_BORDER_X 1 + #define wxPG_NAT_BUTTON_BORDER_Y 1 + + #define wxPG_TEXTCTRLYADJUST 0 + +#elif defined(__WXMAC__) + // *not* tested + #define wxPG_CHECKMARK_XADJ 0 + #define wxPG_CHECKMARK_YADJ 0 + #define wxPG_CHECKMARK_WADJ 0 + #define wxPG_CHECKMARK_HADJ 0 + #define wxPG_CHECKMARK_DEFLATE 0 + + #define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl. + #define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl. + + #define wxPG_NAT_BUTTON_BORDER_ANY 0 + #define wxPG_NAT_BUTTON_BORDER_X 0 + #define wxPG_NAT_BUTTON_BORDER_Y 0 + + #define wxPG_TEXTCTRLYADJUST 3 + +#else + // defaults + #define wxPG_CHECKMARK_XADJ 0 + #define wxPG_CHECKMARK_YADJ 0 + #define wxPG_CHECKMARK_WADJ 0 + #define wxPG_CHECKMARK_HADJ 0 + #define wxPG_CHECKMARK_DEFLATE 0 + + #define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl. + #define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl. + + #define wxPG_NAT_BUTTON_BORDER_ANY 0 + #define wxPG_NAT_BUTTON_BORDER_X 0 + #define wxPG_NAT_BUTTON_BORDER_Y 0 + + #define wxPG_TEXTCTRLYADJUST 0 + +#endif + +#if (!wxPG_NAT_TEXTCTRL_BORDER_X && !wxPG_NAT_TEXTCTRL_BORDER_Y) + #define wxPG_ENABLE_CLIPPER_WINDOW 0 +#else + #define wxPG_ENABLE_CLIPPER_WINDOW 1 +#endif + + +// for odcombo +#define wxPG_CHOICEXADJUST 0 +#define wxPG_CHOICEYADJUST 0 + +#define ODCB_CUST_PAINT_MARGIN 6 // Number added to image width for SetCustomPaintWidth + +// Milliseconds to wait for two mouse-ups after focus inorder +// to trigger a double-click. +#define DOUBLE_CLICK_CONVERSION_TRESHOLD 500 + +// ----------------------------------------------------------------------- +// wxPGEditor +// ----------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxPGEditor, wxObject) + + +wxPGEditor::~wxPGEditor() +{ +} + +void wxPGEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property, const wxString& text ) const +{ + if ( !property->IsValueUnspecified() ) + dc.DrawText( text, rect.x+wxPG_XBEFORETEXT, rect.y ); +} + +bool wxPGEditor::GetValueFromControl( wxVariant&, wxPGProperty*, wxWindow* ) const +{ + return false; +} + +void wxPGEditor::SetControlStringValue( wxPGProperty* WXUNUSED(property), wxWindow*, const wxString& ) const +{ +} + + +void wxPGEditor::SetControlIntValue( wxPGProperty* WXUNUSED(property), wxWindow*, int ) const +{ +} + + +int wxPGEditor::InsertItem( wxWindow*, const wxString&, int ) const +{ + return -1; +} + + +void wxPGEditor::DeleteItem( wxWindow*, int ) const +{ + return; +} + + +void wxPGEditor::OnFocus( wxPGProperty*, wxWindow* ) const +{ +} + + +bool wxPGEditor::CanContainCustomImage() const +{ + return false; +} + +// ----------------------------------------------------------------------- +// wxPGClipperWindow +// ----------------------------------------------------------------------- + + +#if wxPG_ENABLE_CLIPPER_WINDOW + +// +// Clipper window is used to "remove" borders from controls +// which otherwise insist on having them despite of supplied +// wxNO_BORDER window style. +// +class wxPGClipperWindow : public wxWindow +{ + DECLARE_CLASS(wxPGClipperWindow) +public: + + wxPGClipperWindow() + : wxWindow() + { + wxPGClipperWindow::Init(); + } + + wxPGClipperWindow(wxWindow* parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize) + { + Init(); + Create(parent,id,pos,size); + } + + void Create(wxWindow* parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize); + + virtual ~wxPGClipperWindow(); + + virtual bool ProcessEvent(wxEvent& event); + + inline wxWindow* GetControl() const { return m_ctrl; } + + // This is called before wxControl is constructed. + void GetControlRect( int xadj, int yadj, wxPoint& pt, wxSize& sz ); + + // This is caleed after wxControl has been constructed. + void SetControl( wxWindow* ctrl ); + + virtual void Refresh( bool eraseBackground = true, + const wxRect *rect = (const wxRect *) NULL ); + virtual void SetFocus(); + + virtual bool SetFont(const wxFont& font); + + inline int GetXClip() const { return m_xadj; } + + inline int GetYClip() const { return m_yadj; } + +protected: + wxWindow* m_ctrl; + + int m_xadj; // Horizontal border clip. + + int m_yadj; // Vertical border clip. + +private: + void Init () + { + m_ctrl = (wxWindow*) NULL; + } +}; + + +IMPLEMENT_CLASS(wxPGClipperWindow,wxWindow) + + +// This is called before wxControl is constructed. +void wxPGClipperWindow::GetControlRect( int xadj, int yadj, wxPoint& pt, wxSize& sz ) +{ + m_xadj = xadj; + m_yadj = yadj; + pt.x = -xadj; + pt.y = -yadj; + wxSize own_size = GetSize(); + sz.x = own_size.x+(xadj*2); + sz.y = own_size.y+(yadj*2); +} + + +// This is caleed after wxControl has been constructed. +void wxPGClipperWindow::SetControl( wxWindow* ctrl ) +{ + m_ctrl = ctrl; + + // GTK requires this. + ctrl->SetSizeHints(3,3); + + // Correct size of this window to match the child. + wxSize sz = GetSize(); + wxSize chsz = ctrl->GetSize(); + + int hei_adj = chsz.y - (sz.y+(m_yadj*2)); + if ( hei_adj ) + SetSize(sz.x,chsz.y-(m_yadj*2)); + +} + + +void wxPGClipperWindow::Refresh( bool eraseBackground, const wxRect *rect ) +{ + wxWindow::Refresh(false,rect); + if ( m_ctrl ) + m_ctrl->Refresh(eraseBackground); +} + + +// Pass focus to control +void wxPGClipperWindow::SetFocus() +{ + if ( m_ctrl ) + m_ctrl->SetFocus(); + else + wxWindow::SetFocus(); +} + + +bool wxPGClipperWindow::SetFont(const wxFont& font) +{ + bool res = wxWindow::SetFont(font); + if ( m_ctrl ) + return m_ctrl->SetFont(font); + return res; +} + + +void wxPGClipperWindow::Create(wxWindow* parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size ) +{ + wxWindow::Create(parent,id,pos,size); +} + + +wxPGClipperWindow::~wxPGClipperWindow() +{ +} + + +bool wxPGClipperWindow::ProcessEvent(wxEvent& event) +{ + if ( event.GetEventType() == wxEVT_SIZE ) + { + if ( m_ctrl ) + { + // Maintain correct size relationship. + wxSize sz = GetSize(); + m_ctrl->SetSize(sz.x+(m_xadj*2),sz.y+(m_yadj*2)); + event.Skip(); + return false; + } + } + return wxWindow::ProcessEvent(event); +} + +#endif // wxPG_ENABLE_CLIPPER_WINDOW + +/*wxWindow* wxPropertyGrid::GetActualEditorControl( wxWindow* ctrl ) +{ +#if wxPG_ENABLE_CLIPPER_WINDOW + // Pass real control instead of clipper window + if ( ctrl->IsKindOf(CLASSINFO(wxPGClipperWindow)) ) + { + return ((wxPGClipperWindow*)ctrl)->GetControl(); + } +#else + return ctrl; +#endif +}*/ + +// ----------------------------------------------------------------------- +// wxPGTextCtrlEditor +// ----------------------------------------------------------------------- + +// Clipper window support macro (depending on whether it is used +// for this editor or not) +#if wxPG_NAT_TEXTCTRL_BORDER_X || wxPG_NAT_TEXTCTRL_BORDER_Y + #define wxPG_NAT_TEXTCTRL_BORDER_ANY 1 +#else + #define wxPG_NAT_TEXTCTRL_BORDER_ANY 0 +#endif + +WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor) + + +wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + wxString text; + + // + // If has children, and limited editing is specified, then don't create. + if ( (property->GetFlags() & wxPG_PROP_NOEDITOR) && + property->GetChildCount() ) + return (wxWindow*) NULL; + + if ( !property->IsValueUnspecified() ) + text = property->GetValueString(property->HasFlag(wxPG_PROP_READONLY)?0:wxPG_EDITABLE_VALUE); + + int flags = 0; + if ( (property->GetFlags() & wxPG_PROP_PASSWORD) && + property->IsKindOf(CLASSINFO(wxStringProperty)) ) + flags |= wxTE_PASSWORD; + + wxWindow* wnd = propGrid->GenerateEditorTextCtrl(pos,sz,text,(wxWindow*)NULL,flags, + property->GetMaxLength()); + + return wnd; +} + +#if 0 +void wxPGTextCtrlEditor::DrawValue( wxDC& dc, wxPGProperty* property, const wxRect& rect ) const +{ + if ( !property->IsValueUnspecified() ) + { + wxString drawStr = property->GetDisplayedString(); + + // Code below should no longer be needed, as the obfuscation + // is now done in GetValueAsString. + /*if ( (property->GetFlags() & wxPG_PROP_PASSWORD) && + property->IsKindOf(WX_PG_CLASSINFO(wxStringProperty)) ) + { + size_t a = drawStr.length(); + drawStr.Empty(); + drawStr.Append(wxS('*'),a); + }*/ + dc.DrawText( drawStr, rect.x+wxPG_XBEFORETEXT, rect.y ); + } +} +#endif + +void wxPGTextCtrlEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const +{ + wxTextCtrl* tc = wxStaticCast(ctrl, wxTextCtrl); + + wxString s; + + if ( tc->HasFlag(wxTE_PASSWORD) ) + s = property->GetValueAsString(wxPG_FULL_VALUE); + else + s = property->GetDisplayedString(); + + tc->SetValue(s); +} + + +// Provided so that, for example, ComboBox editor can use the same code +// (multiple inheritance would get way too messy). +bool wxPGTextCtrlEditor::OnTextCtrlEvent( wxPropertyGrid* propGrid, + wxPGProperty* WXUNUSED(property), + wxWindow* ctrl, + wxEvent& event ) +{ + if ( !ctrl ) + return false; + + if ( event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER ) + { + if ( propGrid->IsEditorsValueModified() ) + { + return true; + } + } + else if ( event.GetEventType() == wxEVT_COMMAND_TEXT_UPDATED ) + { + // + // Pass this event outside wxPropertyGrid so that, + // if necessary, program can tell when user is editing + // a textctrl. + // FIXME: Is it safe to change event id in the middle of event + // processing (seems to work, but...)? + event.Skip(); + event.SetId(propGrid->GetId()); + + propGrid->EditorsValueWasModified(); + } + return false; +} + + +bool wxPGTextCtrlEditor::OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const +{ + return wxPGTextCtrlEditor::OnTextCtrlEvent(propGrid,property,ctrl,event); +} + + +bool wxPGTextCtrlEditor::GetTextCtrlValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) +{ + wxTextCtrl* tc = wxStaticCast(ctrl, wxTextCtrl); + wxString textVal = tc->GetValue(); + + if ( property->UsesAutoUnspecified() && !textVal.length() ) + { + variant.MakeNull(); + return true; + } + + bool res = property->StringToValue(variant, textVal, wxPG_EDITABLE_VALUE); + + // Changing unspecified always causes event (returning + // true here should be enough to trigger it). + // TODO: Move to propgrid.cpp + if ( !res && variant.IsNull() ) + res = true; + + return res; +} + + +bool wxPGTextCtrlEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const +{ + return wxPGTextCtrlEditor::GetTextCtrlValueFromControl(variant, property, ctrl); +} + + +void wxPGTextCtrlEditor::SetValueToUnspecified( wxPGProperty* property, wxWindow* ctrl ) const +{ + wxTextCtrl* tc = wxStaticCast(ctrl, wxTextCtrl); + + wxPropertyGrid* pg = property->GetGrid(); + wxASSERT(pg); // Really, property grid should exist if editor does + if ( pg ) + tc->SetValue(wxEmptyString); +} + + +void wxPGTextCtrlEditor::SetControlStringValue( wxPGProperty* property, wxWindow* ctrl, const wxString& txt ) const +{ + wxTextCtrl* tc = wxStaticCast(ctrl, wxTextCtrl); + + wxPropertyGrid* pg = property->GetGrid(); + wxASSERT(pg); // Really, property grid should exist if editor does + if ( pg ) + tc->SetValue(txt); +} + + +void wxPGTextCtrlEditor::OnFocus( wxPGProperty*, wxWindow* wnd ) const +{ + wxTextCtrl* tc = wxStaticCast(wnd, wxTextCtrl); + + tc->SetSelection(-1,-1); +} + + +wxPGTextCtrlEditor::~wxPGTextCtrlEditor() { } + + +// ----------------------------------------------------------------------- +// wxPGChoiceEditor +// ----------------------------------------------------------------------- + + +WX_PG_IMPLEMENT_EDITOR_CLASS(Choice,wxPGChoiceEditor,wxPGEditor) + + +// This is a special enhanced double-click processor class. +// In essence, it allows for double-clicks for which the +// first click "created" the control. +class wxPGDoubleClickProcessor : public wxEvtHandler +{ +public: + + wxPGDoubleClickProcessor( wxOwnerDrawnComboBox* combo, wxPGProperty* property ) + : wxEvtHandler() + { + m_timeLastMouseUp = 0; + m_combo = combo; + m_property = property; + m_downReceived = false; + } + +protected: + + void OnMouseEvent( wxMouseEvent& event ) + { + wxLongLong t = ::wxGetLocalTimeMillis(); + int evtType = event.GetEventType(); + + if ( m_property->HasFlag(wxPG_PROP_USE_DCC) && + m_property->IsKindOf(CLASSINFO(wxBoolProperty)) && + !m_combo->IsPopupShown() ) + { + // Just check that it is in the text area + wxPoint pt = event.GetPosition(); + if ( m_combo->GetTextRect().Contains(pt) ) + { + if ( evtType == wxEVT_LEFT_DOWN ) + { + // Set value to avoid up-events without corresponding downs + m_downReceived = true; + } + else if ( evtType == wxEVT_LEFT_DCLICK ) + { + // We'll make our own double-clicks + event.SetEventType(0); + return; + } + else if ( evtType == wxEVT_LEFT_UP ) + { + if ( m_downReceived || m_timeLastMouseUp == 1 ) + { + wxLongLong timeFromLastUp = (t-m_timeLastMouseUp); + + if ( timeFromLastUp < DOUBLE_CLICK_CONVERSION_TRESHOLD ) + { + event.SetEventType(wxEVT_LEFT_DCLICK); + m_timeLastMouseUp = 1; + } + else + { + m_timeLastMouseUp = t; + } + } + } + } + } + + event.Skip(); + } + + void OnSetFocus( wxFocusEvent& event ) + { + m_timeLastMouseUp = ::wxGetLocalTimeMillis(); + event.Skip(); + } + +private: + wxLongLong m_timeLastMouseUp; + wxOwnerDrawnComboBox* m_combo; + wxPGProperty* m_property; // Selected property + bool m_downReceived; + + DECLARE_EVENT_TABLE() +}; + +BEGIN_EVENT_TABLE(wxPGDoubleClickProcessor, wxEvtHandler) + EVT_MOUSE_EVENTS(wxPGDoubleClickProcessor::OnMouseEvent) + EVT_SET_FOCUS(wxPGDoubleClickProcessor::OnSetFocus) +END_EVENT_TABLE() + + + +class wxPGComboBox : public wxOwnerDrawnComboBox +{ +public: + + wxPGComboBox() + : wxOwnerDrawnComboBox() + { + m_dclickProcessor = (wxPGDoubleClickProcessor*) NULL; + m_sizeEventCalled = false; + } + + ~wxPGComboBox() + { + if ( m_dclickProcessor ) + { + RemoveEventHandler(m_dclickProcessor); + delete m_dclickProcessor; + } + } + + bool Create(wxWindow *parent, + wxWindowID id, + const wxString& value, + const wxPoint& pos, + const wxSize& size, + const wxArrayString& choices, + long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxS("wxOwnerDrawnComboBox")) + { + if ( !wxOwnerDrawnComboBox::Create( parent, + id, + value, + pos, + size, + choices, + style, + validator, + name ) ) + return false; + + m_dclickProcessor = new wxPGDoubleClickProcessor(this, GetGrid()->GetSelection() ); + + PushEventHandler(m_dclickProcessor); + + return true; + } + + virtual void OnDrawItem( wxDC& dc, const wxRect& rect, int item, int flags ) const + { + wxPropertyGrid* pg = GetGrid(); + pg->OnComboItemPaint((wxPGCustomComboControl*)this,item,dc,(wxRect&)rect,flags); + } + virtual wxCoord OnMeasureItem( size_t item ) const + { + wxPropertyGrid* pg = GetGrid(); + wxRect rect; + rect.x = -1; + rect.width = 0; + pg->OnComboItemPaint((wxPGCustomComboControl*)this,item,*((wxDC*)NULL),rect,0); + return rect.height; + } + + wxPropertyGrid* GetGrid() const + { + wxPropertyGrid* pg = wxDynamicCast(GetParent()->GetParent(),wxPropertyGrid); + wxASSERT(pg); + return pg; + } + + virtual wxCoord OnMeasureItemWidth( size_t item ) const + { + wxPropertyGrid* pg = GetGrid(); + wxRect rect; + rect.x = -1; + rect.width = -1; + pg->OnComboItemPaint((wxPGCustomComboControl*)this,item,*((wxDC*)NULL),rect,0); + return rect.width; + } + + virtual void PositionTextCtrl( int WXUNUSED(textCtrlXAdjust), int WXUNUSED(textCtrlYAdjust) ) + { + wxPropertyGrid* pg = GetGrid(); + wxOwnerDrawnComboBox::PositionTextCtrl( + wxPG_TEXTCTRLXADJUST - (wxPG_XBEFOREWIDGET+wxPG_CONTROL_MARGIN+1) - 1, + pg->GetSpacingY() + 2 + ); + } + +private: + wxPGDoubleClickProcessor* m_dclickProcessor; + bool m_sizeEventCalled; +}; + + +void wxPropertyGrid::OnComboItemPaint( wxPGCustomComboControl* pCc, + int item, + wxDC& dc, + wxRect& rect, + int flags ) +{ + wxPGComboBox* pCb = (wxPGComboBox*)pCc; + + // Sanity check + wxASSERT( IsKindOf(CLASSINFO(wxPropertyGrid)) ); + + wxPGProperty* p = m_selected; + wxString text; + + const wxPGChoices* pChoices = &p->GetChoices(); + const wxPGCommonValue* comVal = NULL; + int choiceCount = p->GetChoiceCount(); + int comVals = p->GetDisplayedCommonValueCount(); + int comValIndex = -1; + if ( item >= choiceCount && comVals > 0 ) + { + comValIndex = item - choiceCount; + comVal = GetCommonValue(comValIndex); + if ( !p->IsValueUnspecified() ) + text = comVal->GetLabel(); + } + else + { + if ( !(flags & wxODCB_PAINTING_CONTROL) ) + { + text = pCb->GetString(item); + } + else + { + if ( !p->IsValueUnspecified() ) + text = p->GetValueString(0); + } + } + + if ( item < 0 ) + return; + + wxSize cis; + + const wxBitmap* itemBitmap = NULL; + + if ( item >= 0 && pChoices && pChoices->Item(item).GetBitmap().Ok() && comValIndex == -1 ) + itemBitmap = &pChoices->Item(item).GetBitmap(); + + // + // Decide what custom image size to use + if ( itemBitmap ) + { + cis.x = itemBitmap->GetWidth(); + cis.y = itemBitmap->GetHeight(); + } + else + { + cis = GetImageSize(p, item); + } + + if ( rect.x < 0 ) + { + // Default measure behaviour (no flexible, custom paint image only) + if ( rect.width < 0 ) + { + wxCoord x, y; + GetTextExtent(text, &x, &y, 0, 0, &m_font); + rect.width = cis.x + wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2 + 9 + x; + } + + rect.height = cis.y + 2; + return; + } + + wxPGPaintData paintdata; + paintdata.m_parent = NULL; + paintdata.m_choiceItem = item; + + // This is by the current (1.0.0b) spec - if painting control, item is -1 + if ( (flags & wxODCB_PAINTING_CONTROL) ) + paintdata.m_choiceItem = -1; + + if ( &dc ) + dc.SetBrush(*wxWHITE_BRUSH); + + if ( rect.x >= 0 ) + { + // + // DrawItem call + + wxPoint pt(rect.x + wxPG_CONTROL_MARGIN - wxPG_CHOICEXADJUST - 1, + rect.y + 1); + + int renderFlags = 0; + + if ( flags & wxODCB_PAINTING_CONTROL ) + renderFlags |= wxPGCellRenderer::Control; + + if ( flags & wxODCB_PAINTING_SELECTED ) + renderFlags |= wxPGCellRenderer::Selected; + + if ( cis.x > 0 && (p->HasFlag(wxPG_PROP_CUSTOMIMAGE) || !(flags & wxODCB_PAINTING_CONTROL)) && + ( !p->m_valueBitmap || item == pCb->GetSelection() ) && + ( item >= 0 || (flags & wxODCB_PAINTING_CONTROL) ) && + !itemBitmap + ) + { + pt.x += wxCC_CUSTOM_IMAGE_MARGIN1; + wxRect r(pt.x,pt.y,cis.x,cis.y); + + if ( flags & wxODCB_PAINTING_CONTROL ) + { + //r.width = cis.x; + r.height = wxPG_STD_CUST_IMAGE_HEIGHT(m_lineHeight); + } + + paintdata.m_drawnWidth = r.width; + + dc.SetPen(m_colPropFore); + if ( comValIndex >= 0 ) + { + const wxPGCommonValue* cv = GetCommonValue(comValIndex); + wxPGCellRenderer* renderer = cv->GetRenderer(); + r.width = rect.width; + renderer->Render( dc, r, this, p, m_selColumn, comValIndex, renderFlags ); + return; + } + else if ( item >= 0 ) + { + p->OnCustomPaint( dc, r, paintdata ); + } + else + { + dc.DrawRectangle( r ); + } + + pt.x += paintdata.m_drawnWidth + wxCC_CUSTOM_IMAGE_MARGIN2 - 1; + } + else + { + // TODO: This aligns text so that it seems to be horizontally + // on the same line as property values. Not really + // sure if its needed, but seems to not cause any harm. + pt.x -= 1; + + if ( item < 0 && (flags & wxODCB_PAINTING_CONTROL) ) + item = pCb->GetSelection(); + + if ( pChoices && item >= 0 && comValIndex < 0 ) + { + const wxPGChoiceEntry& cell = pChoices->Item(item); + wxPGCellRenderer* renderer = wxPGGlobalVars->m_defaultRenderer; + int imageOffset = renderer->PreDrawCell( dc, rect, cell, renderFlags ); + if ( imageOffset ) + imageOffset += wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2; + pt.x += imageOffset; + } + } + + // + // Draw text + // + + pt.y += (rect.height-m_fontHeight)/2 - 1; + + pt.x += 1; + + dc.DrawText( text, pt.x + wxPG_XBEFORETEXT, pt.y ); + } + else + { + // + // MeasureItem call + + p->OnCustomPaint( dc, rect, paintdata ); + rect.height = paintdata.m_drawnHeight + 2; + rect.width = cis.x + wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2 + 9; + } +} + +bool wxPGChoiceEditor_SetCustomPaintWidth( wxPropertyGrid* propGrid, wxPGComboBox* cb, int cmnVal ) +{ + wxPGProperty* property = propGrid->GetSelectedProperty(); + wxASSERT( property ); + + if ( cmnVal >= 0 ) + { + // Yes, a common value is being selected + property->SetCommonValue( cmnVal ); + wxSize imageSize = propGrid->GetCommonValue(cmnVal)-> + GetRenderer()->GetImageSize(property, 1, cmnVal); + if ( imageSize.x ) imageSize.x += ODCB_CUST_PAINT_MARGIN; + cb->SetCustomPaintWidth( imageSize.x ); + return false; + } + else + { + wxSize imageSize = propGrid->GetImageSize(property, -1); + if ( imageSize.x ) imageSize.x += ODCB_CUST_PAINT_MARGIN; + cb->SetCustomPaintWidth( imageSize.x ); + return true; + } +} + +// CreateControls calls this with CB_READONLY in extraStyle +wxWindow* wxPGChoiceEditor::CreateControlsBase( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz, + long extraStyle ) const +{ + wxString defString; + + // Get choices. + int index = property->GetChoiceInfo( NULL ); + + bool isUnspecified = property->IsValueUnspecified(); + + if ( isUnspecified ) + index = -1; + else + defString = property->GetDisplayedString(); + + const wxPGChoices& choices = property->GetChoices(); + + wxArrayString labels = choices.GetLabels(); + + wxPGComboBox* cb; + + wxPoint po(pos); + wxSize si(sz); + po.y += wxPG_CHOICEYADJUST; + si.y -= (wxPG_CHOICEYADJUST*2); + + po.x += wxPG_CHOICEXADJUST; + si.x -= wxPG_CHOICEXADJUST; + wxWindow* ctrlParent = propGrid->GetPanel(); + + int odcbFlags = extraStyle | wxNO_BORDER | wxTE_PROCESS_ENTER; + + // + // If common value specified, use appropriate index + unsigned int cmnVals = property->GetDisplayedCommonValueCount(); + if ( cmnVals ) + { + if ( !isUnspecified ) + { + int cmnVal = property->GetCommonValue(); + if ( cmnVal >= 0 ) + { + index = labels.size() + cmnVal; + } + } + + unsigned int i; + for ( i=0; i<cmnVals; i++ ) + labels.Add(propGrid->GetCommonValueLabel(i)); + } + + cb = new wxPGComboBox(); +#ifdef __WXMSW__ + cb->Hide(); +#endif + cb->Create(ctrlParent, + wxPG_SUBID1, + wxString(), + po, + si, + labels, + odcbFlags); + + //int extRight = propGrid->GetClientSize().x - (po.x+si.x); + //int extRight = - (po.x+si.x); + + cb->SetButtonPosition(si.y,0,wxRIGHT); + //cb->SetPopupExtents( 1, extRight ); + cb->SetTextIndent(wxPG_XBEFORETEXT-1); + + wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb, property->GetCommonValue() ); + /*if ( property->GetFlags() & wxPG_PROP_CUSTOMIMAGE ) + { + wxSize imageSize = propGrid->GetImageSize(property, index); + if ( imageSize.x ) imageSize.x += ODCB_CUST_PAINT_MARGIN; + cb->SetCustomPaintWidth( imageSize.x ); + }*/ + + if ( index >= 0 && index < (int)cb->GetCount() ) + { + cb->SetSelection( index ); + if ( defString.length() ) + cb->SetText( defString ); + } + else if ( !(extraStyle & wxCB_READONLY) && defString.length() ) + cb->SetValue( defString ); + else + cb->SetSelection( -1 ); + +#ifdef __WXMSW__ + cb->Show(); +#endif + + return (wxWindow*) cb; +} + + +void wxPGChoiceEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const +{ + wxASSERT( ctrl ); + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxASSERT( cb->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox))); + int ind = property->GetChoiceInfo( (wxPGChoiceInfo*)NULL ); + cb->SetSelection(ind); +} + +wxPGWindowList wxPGChoiceEditor::CreateControls( wxPropertyGrid* propGrid, wxPGProperty* property, + const wxPoint& pos, const wxSize& sz ) const +{ + return CreateControlsBase(propGrid,property,pos,sz,wxCB_READONLY); +} + + +int wxPGChoiceEditor::InsertItem( wxWindow* ctrl, const wxString& label, int index ) const +{ + wxASSERT( ctrl ); + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxASSERT( cb->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox))); + + if (index < 0) + index = cb->GetCount(); + + return cb->Insert(label,index); +} + + +void wxPGChoiceEditor::DeleteItem( wxWindow* ctrl, int index ) const +{ + wxASSERT( ctrl ); + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxASSERT( cb->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox))); + + cb->Delete(index); +} + +bool wxPGChoiceEditor::OnEvent( wxPropertyGrid* propGrid, wxPGProperty* property, + wxWindow* ctrl, wxEvent& event ) const +{ + if ( event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED ) + { + wxPGComboBox* cb = (wxPGComboBox*)ctrl; + int index = cb->GetSelection(); + int cmnValIndex = -1; + int cmnVals = property->GetDisplayedCommonValueCount(); + int items = cb->GetCount(); + + if ( index >= (items-cmnVals) ) + { + // Yes, a common value is being selected + cmnValIndex = index - (items-cmnVals); + property->SetCommonValue( cmnValIndex ); + + // Truly set value to unspecified? + if ( propGrid->GetUnspecifiedCommonValue() == cmnValIndex ) + { + if ( !property->IsValueUnspecified() ) + propGrid->SetInternalFlag(wxPG_FL_VALUE_CHANGE_IN_EVENT); + property->SetValueToUnspecified(); + if ( !cb->HasFlag(wxCB_READONLY) ) + cb->GetTextCtrl()->SetValue(wxEmptyString); + return false; + } + } + return wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb, cmnValIndex ); + } + return false; +} + + +bool wxPGChoiceEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + + int index = cb->GetSelection(); + + if ( index != property->GetChoiceInfo( (wxPGChoiceInfo*) NULL ) || + // Changing unspecified always causes event (returning + // true here should be enough to trigger it). + property->IsValueUnspecified() + ) + { + return property->IntToValue( variant, index, 0 ); + } + return false; +} + + +void wxPGChoiceEditor::SetControlStringValue( wxPGProperty* WXUNUSED(property), wxWindow* ctrl, const wxString& txt ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxASSERT( cb ); + cb->SetValue(txt); +} + + +void wxPGChoiceEditor::SetControlIntValue( wxPGProperty* WXUNUSED(property), wxWindow* ctrl, int value ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxASSERT( cb ); + cb->SetSelection(value); +} + + +void wxPGChoiceEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* ctrl ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + cb->SetSelection(-1); +} + + +bool wxPGChoiceEditor::CanContainCustomImage() const +{ + return true; +} + + +wxPGChoiceEditor::~wxPGChoiceEditor() { } + + +// ----------------------------------------------------------------------- +// wxPGComboBoxEditor +// ----------------------------------------------------------------------- + + +WX_PG_IMPLEMENT_EDITOR_CLASS(ComboBox,wxPGComboBoxEditor,wxPGChoiceEditor) + + +void wxPGComboBoxEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + cb->SetValue(property->GetValueString(wxPG_EDITABLE_VALUE)); + + // TODO: If string matches any selection, then select that. +} + + +wxPGWindowList wxPGComboBoxEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + return CreateControlsBase(propGrid,property,pos,sz,0); +} + + +bool wxPGComboBoxEditor::OnEvent( wxPropertyGrid* propGrid, + wxPGProperty* property, + wxWindow* ctrl, + wxEvent& event ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*) NULL; + wxWindow* textCtrl = (wxWindow*) NULL; + + if ( ctrl ) + { + cb = (wxOwnerDrawnComboBox*)ctrl; + textCtrl = cb->GetTextCtrl(); + } + + if ( wxPGTextCtrlEditor::OnTextCtrlEvent(propGrid,property,textCtrl,event) ) + return true; + + return wxPGChoiceEditor::OnEvent(propGrid,property,ctrl,event); +} + + +bool wxPGComboBoxEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + wxString textVal = cb->GetValue(); + + if ( property->UsesAutoUnspecified() && !textVal.length() ) + { + variant.MakeNull(); + return true; + } + + bool res = property->StringToValue(variant, textVal, wxPG_EDITABLE_VALUE); + + // Changing unspecified always causes event (returning + // true here should be enough to trigger it). + if ( !res && variant.IsNull() ) + res = true; + + return res; +} + + +void wxPGComboBoxEditor::OnFocus( wxPGProperty*, wxWindow* ctrl ) const +{ + wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; + cb->GetTextCtrl()->SetSelection(-1,-1); +} + + +wxPGComboBoxEditor::~wxPGComboBoxEditor() { } + + +// ----------------------------------------------------------------------- +// wxPGChoiceAndButtonEditor +// ----------------------------------------------------------------------- + + +// This simpler implement_editor macro doesn't define class body. +WX_PG_IMPLEMENT_EDITOR_CLASS(ChoiceAndButton,wxPGChoiceAndButtonEditor,wxPGChoiceEditor) + + +wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + // Use one two units smaller to match size of the combo's dropbutton. + // (normally a bigger button is used because it looks better) + int bt_wid = sz.y; + bt_wid -= 2; + wxSize bt_sz(bt_wid,bt_wid); + + // Position of button. + wxPoint bt_pos(pos.x+sz.x-bt_sz.x,pos.y); +#ifdef __WXMAC__ + bt_pos.y -= 1; +#else + bt_pos.y += 1; +#endif + + wxWindow* bt = propGrid->GenerateEditorButton( bt_pos, bt_sz ); + + // Size of choice. + wxSize ch_sz(sz.x-bt->GetSize().x,sz.y); + +#ifdef __WXMAC__ + ch_sz.x -= wxPG_TEXTCTRL_AND_BUTTON_SPACING; +#endif + + wxWindow* ch = wxPG_EDITOR(Choice)->CreateControls(propGrid,property, + pos,ch_sz).m_primary; + +#ifdef __WXMSW__ + bt->Show(); +#endif + + return wxPGWindowList(ch, bt); +} + + +wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() { } + + +// ----------------------------------------------------------------------- +// wxPGTextCtrlAndButtonEditor +// ----------------------------------------------------------------------- + + +// This simpler implement_editor macro doesn't define class body. +WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrlAndButton,wxPGTextCtrlAndButtonEditor,wxPGTextCtrlEditor) + + +wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& sz ) const +{ + wxWindow* wnd2; + wxWindow* wnd = propGrid->GenerateEditorTextCtrlAndButton( pos, sz, &wnd2, + property->GetFlags() & wxPG_PROP_NOEDITOR, property); + + return wxPGWindowList(wnd, wnd2); +} + + +wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() { } + + +// ----------------------------------------------------------------------- +// wxPGCheckBoxEditor +// ----------------------------------------------------------------------- + +#if wxPG_INCLUDE_CHECKBOX + +WX_PG_IMPLEMENT_EDITOR_CLASS(CheckBox,wxPGCheckBoxEditor,wxPGEditor) + + +// state argument: 0x01 = set if checked +// 0x02 = set if rectangle should be bold +static void DrawSimpleCheckBox( wxDC& dc, const wxRect& rect, int box_hei, int state, const wxColour& linecol ) +{ + + // Box rectangle. + wxRect r(rect.x+wxPG_XBEFORETEXT,rect.y+((rect.height-box_hei)/2),box_hei,box_hei); + + // Draw check mark first because it is likely to overdraw the + // surrounding rectangle. + if ( state & 1 ) + { + wxRect r2(r.x+wxPG_CHECKMARK_XADJ, + r.y+wxPG_CHECKMARK_YADJ, + r.width+wxPG_CHECKMARK_WADJ, + r.height+wxPG_CHECKMARK_HADJ); + #if wxPG_CHECKMARK_DEFLATE + r2.Deflate(wxPG_CHECKMARK_DEFLATE); + #endif + dc.DrawCheckMark(r2); + + // This would draw a simple cross check mark. + // dc.DrawLine(r.x,r.y,r.x+r.width-1,r.y+r.height-1); + // dc.DrawLine(r.x,r.y+r.height-1,r.x+r.width-1,r.y); + + } + + if ( !(state & 2) ) + { + // Pen for thin rectangle. + dc.SetPen(linecol); + } + else + { + // Pen for bold rectangle. + wxPen linepen(linecol,2,wxSOLID); + linepen.SetJoin(wxJOIN_MITER); // This prevents round edges. + dc.SetPen(linepen); + r.x++; + r.y++; + r.width--; + r.height--; + } + + dc.SetBrush(*wxTRANSPARENT_BRUSH); + + dc.DrawRectangle(r); + dc.SetPen(*wxTRANSPARENT_PEN); +} + +// +// Real simple custom-drawn checkbox-without-label class. +// +class wxSimpleCheckBox : public wxControl +{ +public: + + void SetValue( int value ); + + wxSimpleCheckBox( wxWindow* parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize ) + : wxControl(parent,id,pos,size,wxNO_BORDER|wxWANTS_CHARS) + { + // Due to SetOwnFont stuff necessary for GTK+ 1.2, we need to have this + SetFont( parent->GetFont() ); + + m_state = 0; + wxPropertyGrid* pg = (wxPropertyGrid*) parent->GetParent(); + wxASSERT( pg->IsKindOf(CLASSINFO(wxPropertyGrid)) ); + m_boxHeight = pg->GetFontHeight(); + SetBackgroundStyle( wxBG_STYLE_COLOUR ); + } + + virtual ~wxSimpleCheckBox(); + + virtual bool ProcessEvent(wxEvent& event); + + int m_state; + int m_boxHeight; + + static wxBitmap* ms_doubleBuffer; + +}; + +wxSimpleCheckBox::~wxSimpleCheckBox() +{ + delete ms_doubleBuffer; + ms_doubleBuffer = NULL; +} + + +wxBitmap* wxSimpleCheckBox::ms_doubleBuffer = (wxBitmap*) NULL; + +// value = 2 means toggle (sorry, too lazy to do constants) +void wxSimpleCheckBox::SetValue( int value ) +{ + if ( value > 1 ) + { + m_state++; + if ( m_state > 1 ) m_state = 0; + } + else + { + m_state = value; + } + Refresh(); + + wxCommandEvent evt(wxEVT_COMMAND_CHECKBOX_CLICKED,GetParent()->GetId()); + + wxPropertyGrid* propGrid = (wxPropertyGrid*) GetParent()->GetParent(); + wxASSERT( propGrid->IsKindOf(CLASSINFO(wxPropertyGrid)) ); + propGrid->OnCustomEditorEvent(evt); +} + + +bool wxSimpleCheckBox::ProcessEvent(wxEvent& event) +{ + wxPropertyGrid* propGrid = (wxPropertyGrid*) GetParent()->GetParent(); + wxASSERT( propGrid->IsKindOf(CLASSINFO(wxPropertyGrid)) ); + + if ( event.GetEventType() == wxEVT_NAVIGATION_KEY ) + { + //wxLogDebug(wxT("wxEVT_NAVIGATION_KEY")); + //SetFocusFromKbd(); + //event.Skip(); + //return wxControl::ProcessEvent(event); + } + else + if ( ( (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK) + && ((wxMouseEvent&)event).m_x > (wxPG_XBEFORETEXT-2) + && ((wxMouseEvent&)event).m_x <= (wxPG_XBEFORETEXT-2+m_boxHeight) ) + ) + { + SetValue(2); + return true; + } + else if ( event.GetEventType() == wxEVT_PAINT ) + { + wxSize clientSize = GetClientSize(); + wxPaintDC dc(this); + + /* + // Buffered paint DC doesn't seem to do much good + if ( !ms_doubleBuffer || + clientSize.x > ms_doubleBuffer->GetWidth() || + clientSize.y > ms_doubleBuffer->GetHeight() ) + { + delete ms_doubleBuffer; + ms_doubleBuffer = new wxBitmap(clientSize.x+25,clientSize.y+25); + } + + wxBufferedPaintDC dc(this,*ms_doubleBuffer); + */ + + wxRect rect(0,0,clientSize.x,clientSize.y); + //rect.x -= 1; + rect.y += 1; + rect.width += 1; + + m_boxHeight = propGrid->GetFontHeight(); + + wxColour bgcol = GetBackgroundColour(); + dc.SetBrush( bgcol ); + dc.SetPen( bgcol ); + dc.DrawRectangle( rect ); + + wxColour txcol = GetForegroundColour(); + + int state = m_state; + if ( m_font.GetWeight() == wxBOLD ) + state |= 2; + + DrawSimpleCheckBox(dc,rect,m_boxHeight,state,txcol); + + // If focused, indicate it somehow. + /* + if ( wxWindow::FindFocus() == this ) + { + rect.x += 1; + rect.width -= 1; + + wxPGDrawFocusRect(dc,rect); + } + */ + + return true; + } + else if ( event.GetEventType() == wxEVT_SIZE || + event.GetEventType() == wxEVT_SET_FOCUS || + event.GetEventType() == wxEVT_KILL_FOCUS + ) + { + Refresh(); + } + else if ( event.GetEventType() == wxEVT_KEY_DOWN ) + { + wxKeyEvent& keyEv = (wxKeyEvent&) event; + + if ( keyEv.GetKeyCode() == WXK_TAB ) + { + propGrid->SendNavigationKeyEvent( keyEv.ShiftDown()?0:1 ); + return true; + } + else + if ( keyEv.GetKeyCode() == WXK_SPACE ) + { + SetValue(2); + return true; + } + } + return wxControl::ProcessEvent(event); +} + + +wxPGWindowList wxPGCheckBoxEditor::CreateControls( wxPropertyGrid* propGrid, + wxPGProperty* property, + const wxPoint& pos, + const wxSize& size ) const +{ + wxPoint pt = pos; + pt.x -= wxPG_XBEFOREWIDGET; + wxSize sz = size; + sz.x = propGrid->GetFontHeight() + (wxPG_XBEFOREWIDGET*2) + 4; + + wxSimpleCheckBox* cb = new wxSimpleCheckBox(propGrid->GetPanel(),wxPG_SUBID1,pt,sz); + + cb->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); + + cb->Connect( wxPG_SUBID1, wxEVT_LEFT_DOWN, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent, NULL, propGrid ); + + cb->Connect( wxPG_SUBID1, wxEVT_LEFT_DCLICK, + (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) + &wxPropertyGrid::OnCustomEditorEvent, NULL, propGrid ); + + if ( property->GetChoiceInfo((wxPGChoiceInfo*)NULL) && + !property->IsValueUnspecified() ) + cb->m_state = 1; + + // If mouse cursor was on the item, toggle the value now. + if ( propGrid->GetInternalFlags() & wxPG_FL_ACTIVATION_BY_CLICK ) + { + wxPoint pt = cb->ScreenToClient(::wxGetMousePosition()); + if ( pt.x <= (wxPG_XBEFORETEXT-2+cb->m_boxHeight) ) + { + cb->m_state++; + + if ( cb->m_state > 1 ) + cb->m_state = 0; + + // Makes sure wxPG_EVT_CHANGING etc. is sent for this initial click + propGrid->ChangePropertyValue(property, wxPGVariant_Bool(cb->m_state)); + } + } + + propGrid->SetInternalFlag( wxPG_FL_FIXED_WIDTH_EDITOR ); + + return cb; +} + +/* +class wxPGCheckBoxRenderer : public wxPGDefaultRenderer +{ +public: + + virtual void Render( wxDC& dc, const wxRect& rect, + const wxPropertyGrid* WXUNUSED(propertyGrid), wxPGProperty* property, + int WXUNUSED(column), int WXUNUSED(item), int WXUNUSED(flags) ) const + { + int state = 0; + if ( !(property->GetFlags() & wxPG_PROP_UNSPECIFIED) ) + { + state = ((wxPGProperty*)property)->GetChoiceInfo((wxPGChoiceInfo*)NULL); + if ( dc.GetFont().GetWeight() == wxBOLD ) state |= 2; + } + DrawSimpleCheckBox(dc,rect,dc.GetCharHeight(),state,dc.GetTextForeground()); + } + +protected: +}; + +wxPGCheckBoxRenderer g_wxPGCheckBoxRenderer; + +wxPGCellRenderer* wxPGCheckBoxEditor::GetCellRenderer() const +{ + return &g_wxPGCheckBoxRenderer; +} +*/ + +void wxPGCheckBoxEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property, const wxString& WXUNUSED(text) ) const +{ + int state = 0; + if ( !property->IsValueUnspecified() ) + { + state = property->GetChoiceInfo((wxPGChoiceInfo*)NULL); + if ( dc.GetFont().GetWeight() == wxBOLD ) state |= 2; + } + DrawSimpleCheckBox(dc,rect,dc.GetCharHeight(),state,dc.GetTextForeground()); +} + +void wxPGCheckBoxEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const +{ + wxASSERT( ctrl ); + ((wxSimpleCheckBox*)ctrl)->m_state = property->GetChoiceInfo((wxPGChoiceInfo*)NULL); + ctrl->Refresh(); +} + + +bool wxPGCheckBoxEditor::OnEvent( wxPropertyGrid* WXUNUSED(propGrid), wxPGProperty* WXUNUSED(property), + wxWindow* WXUNUSED(ctrl), wxEvent& event ) const +{ + if ( event.GetEventType() == wxEVT_COMMAND_CHECKBOX_CLICKED ) + { + return true; + } + return false; +} + + +bool wxPGCheckBoxEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const +{ + wxSimpleCheckBox* cb = (wxSimpleCheckBox*)ctrl; + + int index = cb->m_state; + + if ( index != property->GetChoiceInfo( (wxPGChoiceInfo*) NULL ) || + // Changing unspecified always causes event (returning + // true here should be enough to trigger it). + property->IsValueUnspecified() + ) + { + return property->IntToValue(variant, index, 0); + } + return false; +} + + +void wxPGCheckBoxEditor::SetControlIntValue( wxPGProperty* WXUNUSED(property), wxWindow* ctrl, int value ) const +{ + if ( value != 0 ) value = 1; + ((wxSimpleCheckBox*)ctrl)->m_state = value; + ctrl->Refresh(); +} + + +void wxPGCheckBoxEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* ctrl ) const +{ + ((wxSimpleCheckBox*)ctrl)->m_state = 0; + ctrl->Refresh(); +} + + +wxPGCheckBoxEditor::~wxPGCheckBoxEditor() { } + + +#endif // wxPG_INCLUDE_CHECKBOX + +// ----------------------------------------------------------------------- + +wxWindow* wxPropertyGrid::GetEditorControl() const +{ + wxWindow* ctrl = m_wndEditor; + + if ( !ctrl ) + return ctrl; + + // If it's clipper window, return its child instead +#if wxPG_ENABLE_CLIPPER_WINDOW + if ( ctrl->IsKindOf(CLASSINFO(wxPGClipperWindow)) ) + { + return ((wxPGClipperWindow*)ctrl)->GetControl(); + } +#endif + + return ctrl; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::CorrectEditorWidgetSizeX() +{ + if ( m_selColumn == -1 ) + return; + + int secWid = 0; + int newSplitterx = m_pState->DoGetSplitterPosition(m_selColumn-1); + int newWidth = newSplitterx + m_pState->m_colWidths[m_selColumn]; + + if ( m_wndEditor2 ) + { + // if width change occurred, move secondary wnd by that amount + wxRect r = m_wndEditor2->GetRect(); + secWid = r.width; + r.x = newWidth - secWid; + + m_wndEditor2->SetSize( r ); + + // if primary is textctrl, then we have to add some extra space +#ifdef __WXMAC__ + if ( m_wndEditor ) +#else + if ( m_wndEditor && m_wndEditor->IsKindOf(CLASSINFO(wxTextCtrl)) ) +#endif + secWid += wxPG_TEXTCTRL_AND_BUTTON_SPACING; + } + + if ( m_wndEditor ) + { + wxRect r = m_wndEditor->GetRect(); + + r.x = newSplitterx+m_ctrlXAdjust; + + if ( !(m_iFlags & wxPG_FL_FIXED_WIDTH_EDITOR) ) + r.width = newWidth - r.x - secWid; + + m_wndEditor->SetSize(r); + } + + if ( m_wndEditor2 ) + m_wndEditor2->Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::CorrectEditorWidgetPosY() +{ + if ( m_selected && (m_wndEditor || m_wndEditor2) ) + { + wxRect r = GetEditorWidgetRect(m_selected, m_selColumn); + + if ( m_wndEditor ) + { + wxPoint pos = m_wndEditor->GetPosition(); + + // Calculate y offset + int offset = pos.y % m_lineHeight; + + m_wndEditor->Move(pos.x, r.y + offset); + } + + if ( m_wndEditor2 ) + { + wxPoint pos = m_wndEditor2->GetPosition(); + + m_wndEditor2->Move(pos.x, r.y); + } + } +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y ) +{ +#if wxPG_ENABLE_CLIPPER_WINDOW + // Take clipper window into account + if (topCtrlWnd->GetPosition().x < 1 && + !topCtrlWnd->IsKindOf(CLASSINFO(wxPGClipperWindow))) + { + topCtrlWnd = topCtrlWnd->GetParent(); + wxASSERT( topCtrlWnd->IsKindOf(CLASSINFO(wxPGClipperWindow)) ); + *x -= ((wxPGClipperWindow*)topCtrlWnd)->GetXClip(); + *y -= ((wxPGClipperWindow*)topCtrlWnd)->GetYClip(); + return true; + } +#else + wxUnusedVar(topCtrlWnd); + wxUnusedVar(x); + wxUnusedVar(y); +#endif + return false; +} + +// ----------------------------------------------------------------------- + +// Fixes position of wxTextCtrl-like control (wxSpinCtrl usually +// fits into that category as well). +void wxPropertyGrid::FixPosForTextCtrl( wxWindow* ctrl, const wxPoint& offset ) +{ + // Center the control vertically + wxRect finalPos = ctrl->GetRect(); + int y_adj = (m_lineHeight - finalPos.height)/2 + wxPG_TEXTCTRLYADJUST; + + // Prevent over-sized control + int sz_dec = (y_adj + finalPos.height) - m_lineHeight; + if ( sz_dec < 0 ) sz_dec = 0; + + finalPos.y += y_adj; + finalPos.height -= (y_adj+sz_dec); + + const int textCtrlXAdjust = wxPG_TEXTCTRLXADJUST; + + finalPos.x += textCtrlXAdjust; + finalPos.width -= textCtrlXAdjust; + + finalPos.x += offset.x; + finalPos.y += offset.y; + + ctrl->SetSize(finalPos); +} + +// ----------------------------------------------------------------------- + +wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos, + const wxSize& sz, + const wxString& value, + wxWindow* secondary, + int extraStyle, + int maxLen ) +{ + wxPGProperty* selected = m_selected; + wxASSERT(selected); + + int tcFlags = wxTE_PROCESS_ENTER | extraStyle; + + if ( selected->HasFlag(wxPG_PROP_READONLY) ) + tcFlags |= wxTE_READONLY; + + wxPoint p(pos.x,pos.y); + wxSize s(sz.x,sz.y); + + // Need to reduce width of text control on Mac +#if defined(__WXMAC__) + s.x -= 8; +#endif + + // Take button into acccount + if ( secondary ) + { + s.x -= (secondary->GetSize().x + wxPG_TEXTCTRL_AND_BUTTON_SPACING); + m_iFlags &= ~(wxPG_FL_PRIMARY_FILLS_ENTIRE); + } + + // If the height is significantly higher, then use border, and fill the rect exactly. + bool hasSpecialSize = false; + + if ( (sz.y - m_lineHeight) > 5 ) + hasSpecialSize = true; + +#if wxPG_NAT_TEXTCTRL_BORDER_ANY + + // Create clipper window + wxPGClipperWindow* wnd = new wxPGClipperWindow(); +#if defined(__WXMSW__) + wnd->Hide(); +#endif + wnd->Create(GetPanel(),wxPG_SUBID1,p,s); + + // This generates rect of the control inside the clipper window + if ( !hasSpecialSize ) + wnd->GetControlRect(wxPG_NAT_TEXTCTRL_BORDER_X, wxPG_NAT_TEXTCTRL_BORDER_Y, p, s); + else + wnd->GetControlRect(0, 0, p, s); + + wxWindow* ctrlParent = wnd; + +#else + + wxWindow* ctrlParent = GetPanel(); + + if ( !hasSpecialSize ) + tcFlags |= wxNO_BORDER; + +#endif + + wxTextCtrl* tc = new wxTextCtrl(); + +#if defined(__WXMSW__) && !wxPG_NAT_TEXTCTRL_BORDER_ANY + tc->Hide(); +#endif + SetupTextCtrlValue(value); + tc->Create(ctrlParent,wxPG_SUBID1,value, p, s,tcFlags); + +#if wxPG_NAT_TEXTCTRL_BORDER_ANY + wxWindow* ed = wnd; + wnd->SetControl(tc); +#else + wxWindow* ed = tc; +#endif + + // Center the control vertically + if ( !hasSpecialSize ) + FixPosForTextCtrl(ed); + +#ifdef __WXMSW__ + ed->Show(); + if ( secondary ) + secondary->Show(); +#endif + + // Set maximum length + if ( maxLen > 0 ) + tc->SetMaxLength( maxLen ); + + return (wxWindow*) ed; +} + +// ----------------------------------------------------------------------- + +wxWindow* wxPropertyGrid::GenerateEditorButton( const wxPoint& pos, const wxSize& sz ) +{ + wxPGProperty* selected = m_selected; + wxASSERT(selected); + +#ifdef __WXMAC__ + // Decorations are chunky on Mac, and we can't make the button square, so + // do things a bit differently on this platform. + + wxPoint p(pos.x+sz.x, + pos.y+wxPG_BUTTON_SIZEDEC-wxPG_NAT_BUTTON_BORDER_Y); + wxSize s(25, -1); + + wxButton* but = new wxButton(); + but->Create(GetPanel(),wxPG_SUBID2,wxS("..."),p,s,wxWANTS_CHARS); + + // Now that we know the size, move to the correct position + p.x = pos.x + sz.x - but->GetSize().x - 2; + but->Move(p); + +#else + wxSize s(sz.y-(wxPG_BUTTON_SIZEDEC*2)+(wxPG_NAT_BUTTON_BORDER_Y*2), + sz.y-(wxPG_BUTTON_SIZEDEC*2)+(wxPG_NAT_BUTTON_BORDER_Y*2)); + + // Reduce button width to lineheight + if ( s.x > m_lineHeight ) + s.x = m_lineHeight; + + wxPoint p(pos.x+sz.x-s.x, + pos.y+wxPG_BUTTON_SIZEDEC-wxPG_NAT_BUTTON_BORDER_Y); + + wxButton* but = new wxButton(); +#ifdef __WXMSW__ + but->Hide(); +#endif + but->Create(GetPanel(),wxPG_SUBID2,wxS("..."),p,s,wxWANTS_CHARS); + + but->SetFont( m_captionFont ); +#endif + + if ( selected->HasFlag(wxPG_PROP_READONLY) ) + but->Disable(); + + return but; +} + +// ----------------------------------------------------------------------- + +wxWindow* wxPropertyGrid::GenerateEditorTextCtrlAndButton( const wxPoint& pos, + const wxSize& sz, + wxWindow** psecondary, + int limitedEditing, + wxPGProperty* property ) +{ + wxButton* but = (wxButton*)GenerateEditorButton(pos,sz); + *psecondary = (wxWindow*)but; + + if ( limitedEditing ) + { + #ifdef __WXMSW__ + // There is button Show in GenerateEditorTextCtrl as well + but->Show(); + #endif + return (wxWindow*) NULL; + } + + wxString text; + + if ( !property->IsValueUnspecified() ) + text = property->GetValueString(property->HasFlag(wxPG_PROP_READONLY)?0:wxPG_EDITABLE_VALUE); + + return GenerateEditorTextCtrl(pos,sz,text,but,property->m_maxLen); +} + +// ----------------------------------------------------------------------- + +wxTextCtrl* wxPropertyGrid::GetEditorTextCtrl() const +{ + wxWindow* wnd = GetEditorControl(); + + if ( !wnd ) + return NULL; + + if ( wnd->IsKindOf(CLASSINFO(wxTextCtrl)) ) + return wxStaticCast(wnd, wxTextCtrl); + + if ( wnd->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)) ) + { + wxOwnerDrawnComboBox* cb = wxStaticCast(wnd, wxOwnerDrawnComboBox); + return cb->GetTextCtrl(); + } + + return NULL; +} + +// ----------------------------------------------------------------------- + +wxPGEditor* wxPropertyGridInterface::GetEditorByName( const wxString& editorName ) +{ + wxPGHashMapS2P::const_iterator it; + + it = wxPGGlobalVars->m_mapEditorClasses.find(editorName); + if ( it == wxPGGlobalVars->m_mapEditorClasses.end() ) + return NULL; + return (wxPGEditor*) it->second; +} + +// ----------------------------------------------------------------------- +// wxPGEditorDialogAdapter +// ----------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxPGEditorDialogAdapter, wxObject) + +bool wxPGEditorDialogAdapter::ShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property ) +{ + if ( !propGrid->EditorValidate() ) + return false; + + bool res = DoShowDialog( propGrid, property ); + + if ( res ) + { + propGrid->ValueChangeInEvent( m_value ); + return true; + } + + return false; +} + +// ----------------------------------------------------------------------- +// wxPGMultiButton +// ----------------------------------------------------------------------- + +wxPGMultiButton::wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz ) + : wxWindow( pg->GetPanel(), wxPG_SUBID2, wxPoint(-100,-100), wxSize(0, sz.y) ), + m_fullEditorSize(sz), m_buttonsWidth(0) +{ + SetBackgroundColour(pg->GetCellBackgroundColour()); +} + +int wxPGMultiButton::GenId( int id ) const +{ + if ( id < -1 ) + { + if ( m_buttons.size() ) + id = GetButton(m_buttons.size()-1)->GetId() + 1; + else + id = wxPG_SUBID2; + } + return id; +} + +#if wxUSE_BMPBUTTON +void wxPGMultiButton::Add( const wxBitmap& bitmap, int id ) +{ + id = GenId(id); + wxSize sz = GetSize(); + wxButton* button = new wxBitmapButton( this, id, bitmap, wxPoint(sz.x, 0), wxSize(sz.y, sz.y) ); + m_buttons.push_back(button); + int bw = button->GetSize().x; + SetSize(wxSize(sz.x+bw,sz.y)); + m_buttonsWidth += bw; +} +#endif + +void wxPGMultiButton::Add( const wxString& label, int id ) +{ + id = GenId(id); + wxSize sz = GetSize(); + wxButton* button = new wxButton( this, id, label, wxPoint(sz.x, 0), wxSize(sz.y, sz.y) ); + m_buttons.push_back(button); + int bw = button->GetSize().x; + SetSize(wxSize(sz.x+bw,sz.y)); + m_buttonsWidth += bw; +} + +// ----------------------------------------------------------------------- diff --git a/src/propgrid/manager.cpp b/src/propgrid/manager.cpp new file mode 100644 index 0000000000..6d7338d824 --- /dev/null +++ b/src/propgrid/manager.cpp @@ -0,0 +1,1692 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/manager.cpp +// Purpose: wxPropertyGridManager +// Author: Jaakko Salli +// Modified by: +// Created: 2005-01-14 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/textctrl.h" + #include "wx/dirdlg.h" + #include "wx/combobox.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" +#endif + +// This define is necessary to prevent macro clearing +#define __wxPG_SOURCE_FILE__ + +#include <wx/propgrid/propgrid.h> + +#include <wx/propgrid/manager.h> + + +#define wxPG_MAN_ALTERNATE_BASE_ID 11249 // Needed for wxID_ANY madnesss + + +// ----------------------------------------------------------------------- + +// For wxMSW cursor consistency, we must do mouse capturing even +// when using custom controls + +#define BEGIN_MOUSE_CAPTURE \ + if ( !(m_iFlags & wxPG_FL_MOUSE_CAPTURED) ) \ + { \ + CaptureMouse(); \ + m_iFlags |= wxPG_FL_MOUSE_CAPTURED; \ + } + +#define END_MOUSE_CAPTURE \ + if ( m_iFlags & wxPG_FL_MOUSE_CAPTURED ) \ + { \ + ReleaseMouse(); \ + m_iFlags &= ~(wxPG_FL_MOUSE_CAPTURED); \ + } + +// ----------------------------------------------------------------------- +// wxPropertyGridManager +// ----------------------------------------------------------------------- + +const wxChar *wxPropertyGridManagerNameStr = wxT("wxPropertyGridManager"); + + +// Categoric Mode Icon +static const char* gs_xpm_catmode[] = { +"16 16 5 1", +". c none", +"B c black", +"D c #868686", +"L c #CACACA", +"W c #FFFFFF", +".DDD............", +".DLD.BBBBBB.....", +".DDD............", +".....DDDDD.DDD..", +"................", +".....DDDDD.DDD..", +"................", +".....DDDDD.DDD..", +"................", +".....DDDDD.DDD..", +"................", +".DDD............", +".DLD.BBBBBB.....", +".DDD............", +".....DDDDD.DDD..", +"................" +}; + +// Alphabetic Mode Icon +static const char* gs_xpm_noncatmode[] = { +"16 16 5 1", +". c none", +"B c black", +"D c #868686", +"L c #000080", +"W c #FFFFFF", +"..DBD...DDD.DDD.", +".DB.BD..........", +".BBBBB..DDD.DDD.", +".B...B..........", +"...L....DDD.DDD.", +"...L............", +".L.L.L..DDD.DDD.", +"..LLL...........", +"...L....DDD.DDD.", +"................", +".BBBBB..DDD.DDD.", +"....BD..........", +"...BD...DDD.DDD.", +"..BD............", +".BBBBB..DDD.DDD.", +"................" +}; + +// Default Page Icon. +static const char* gs_xpm_defpage[] = { +"16 16 5 1", +". c none", +"B c black", +"D c #868686", +"L c #000080", +"W c #FFFFFF", +"................", +"................", +"..BBBBBBBBBBBB..", +"..B..........B..", +"..B.BB.LLLLL.B..", +"..B..........B..", +"..B.BB.LLLLL.B..", +"..B..........B..", +"..B.BB.LLLLL.B..", +"..B..........B..", +"..B.BB.LLLLL.B..", +"..B..........B..", +"..BBBBBBBBBBBB..", +"................", +"................", +"................" +}; + +#define GETPAGESTATE(page) ((wxPropertyGridPage*)m_arrPages.Item(page))->GetStatePtr() + +// ----------------------------------------------------------------------- +// wxPropertyGridPage +// ----------------------------------------------------------------------- + + +IMPLEMENT_CLASS(wxPropertyGridPage, wxEvtHandler) + + +BEGIN_EVENT_TABLE(wxPropertyGridPage, wxEvtHandler) +END_EVENT_TABLE() + + +wxPropertyGridPage::wxPropertyGridPage() + : wxEvtHandler(), wxPropertyGridInterface(), wxPropertyGridPageState() +{ + m_pState = this; // wxPropertyGridInterface to point to State + m_manager = NULL; + m_isDefault = false; +} + +wxPropertyGridPage::~wxPropertyGridPage() +{ +} + +void wxPropertyGridPage::Clear() +{ + GetStatePtr()->DoClear(); +} + +wxSize wxPropertyGridPage::FitColumns() +{ + wxSize sz = DoFitColumns(); + return sz; +} + +void wxPropertyGridPage::RefreshProperty( wxPGProperty* p ) +{ + if ( m_manager ) + m_manager->RefreshProperty(p); +} + +void wxPropertyGridPage::OnShow() +{ +} + +void wxPropertyGridPage::SetSplitterPosition( int splitterPos, int col ) +{ + wxPropertyGrid* pg = GetGrid(); + if ( pg->GetState() == this ) + pg->SetSplitterPosition(splitterPos); + else + DoSetSplitterPosition(splitterPos, col, false); +} + +void wxPropertyGridPage::DoSetSplitterPosition( int pos, int splitterColumn, bool allPages ) +{ + if ( allPages && m_manager->GetPageCount() ) + m_manager->SetSplitterPosition( pos, splitterColumn ); + else + DoSetSplitterPositionThisPage( pos, splitterColumn ); +} + +// ----------------------------------------------------------------------- +// wxPropertyGridManager +// ----------------------------------------------------------------------- + +// Final default splitter y is client height minus this. +#define wxPGMAN_DEFAULT_NEGATIVE_SPLITTER_Y 100 + +// ----------------------------------------------------------------------- + +IMPLEMENT_CLASS(wxPropertyGridManager, wxPanel) + +#define ID_ADVTOOLBAR_OFFSET 1 +#define ID_ADVHELPCAPTION_OFFSET 2 +#define ID_ADVHELPCONTENT_OFFSET 3 +#define ID_ADVBUTTON_OFFSET 4 +#define ID_ADVTBITEMSBASE_OFFSET 5 // Must be last. + +// ----------------------------------------------------------------------- + +BEGIN_EVENT_TABLE(wxPropertyGridManager, wxPanel) + EVT_MOTION(wxPropertyGridManager::OnMouseMove) + EVT_SIZE(wxPropertyGridManager::OnResize) + EVT_PAINT(wxPropertyGridManager::OnPaint) + EVT_LEFT_DOWN(wxPropertyGridManager::OnMouseClick) + EVT_LEFT_UP(wxPropertyGridManager::OnMouseUp) + EVT_LEAVE_WINDOW(wxPropertyGridManager::OnMouseEntry) + //EVT_ENTER_WINDOW(wxPropertyGridManager::OnMouseEntry) +END_EVENT_TABLE() + +// ----------------------------------------------------------------------- + +wxPropertyGridManager::wxPropertyGridManager() + : wxPanel() +{ + Init1(); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridManager::wxPropertyGridManager( wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxChar* name ) + : wxPanel() +{ + Init1(); + Create(parent,id,pos,size,style,name); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::Create( wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxChar* name ) +{ + + bool res = wxPanel::Create( parent, id, pos, size, + (style&0xFFFF0000)|wxWANTS_CHARS, + name ); + Init2(style); + + return res; +} + +// ----------------------------------------------------------------------- + +// +// Initialize values to defaults +// +void wxPropertyGridManager::Init1() +{ + + //m_pPropGrid = (wxPropertyGrid*) NULL; + m_pPropGrid = CreatePropertyGrid(); + +#if wxUSE_TOOLBAR + m_pToolbar = (wxToolBar*) NULL; +#endif + m_pTxtHelpCaption = (wxStaticText*) NULL; + m_pTxtHelpContent = (wxStaticText*) NULL; + + m_emptyPage = (wxPropertyGridPage*) NULL; + + m_selPage = -1; + + m_width = m_height = 0; + + m_splitterHeight = 5; + + m_splitterY = -1; // -1 causes default to be set. + + m_nextDescBoxSize = -1; + + m_extraHeight = 0; + m_dragStatus = 0; + m_onSplitter = 0; + m_iFlags = 0; +} + +// ----------------------------------------------------------------------- + +// These flags are always used in wxPropertyGrid integrated in wxPropertyGridManager. +#ifndef __WXMAC__ + #define wxPG_MAN_PROPGRID_FORCED_FLAGS (wxSIMPLE_BORDER| \ + wxNO_FULL_REPAINT_ON_RESIZE| \ + wxCLIP_CHILDREN) +#else + #define wxPG_MAN_PROPGRID_FORCED_FLAGS (wxNO_BORDER| \ + wxNO_FULL_REPAINT_ON_RESIZE| \ + wxCLIP_CHILDREN) +#endif + +// Which flags can be passed to underlying wxPropertyGrid. +#define wxPG_MAN_PASS_FLAGS_MASK (0xFFF0|wxTAB_TRAVERSAL) + +// +// Initialize after parent etc. set +// +void wxPropertyGridManager::Init2( int style ) +{ + + if ( m_iFlags & wxPG_FL_INITIALIZED ) + return; + + m_windowStyle |= (style&0x0000FFFF); + + wxSize csz = GetClientSize(); + + m_cursorSizeNS = wxCursor(wxCURSOR_SIZENS); + + // Prepare the first page + // NB: But just prepare - you still need to call Add/InsertPage + // to actually add properties on it. + wxPropertyGridPage* pd = new wxPropertyGridPage(); + pd->m_isDefault = true; + pd->m_manager = this; + wxPropertyGridPageState* state = pd->GetStatePtr(); + state->m_pPropGrid = m_pPropGrid; + m_arrPages.Add( (void*)pd ); + m_pPropGrid->m_pState = state; + + wxWindowID baseId = GetId(); + wxWindowID useId = baseId; + if ( baseId < 0 ) + baseId = wxPG_MAN_ALTERNATE_BASE_ID; + + m_baseId = baseId; + +#ifdef __WXMAC__ + // Smaller controls on Mac + SetWindowVariant(wxWINDOW_VARIANT_SMALL); +#endif + + // Create propertygrid. + m_pPropGrid->Create(this,baseId,wxPoint(0,0),csz, + (m_windowStyle&wxPG_MAN_PASS_FLAGS_MASK) + |wxPG_MAN_PROPGRID_FORCED_FLAGS); + + m_pPropGrid->m_eventObject = this; + + m_pPropGrid->SetId(useId); + + m_pPropGrid->m_iFlags |= wxPG_FL_IN_MANAGER; + + m_pState = m_pPropGrid->m_pState; + + m_pPropGrid->SetExtraStyle(wxPG_EX_INIT_NOCAT); + + m_nextTbInd = baseId+ID_ADVTBITEMSBASE_OFFSET + 2; + + + // Connect to property grid onselect event. + // NB: Even if wxID_ANY is used, this doesn't connect properly in wxPython + // (see wxPropertyGridManager::ProcessEvent). + Connect(m_pPropGrid->GetId()/*wxID_ANY*/, + wxEVT_PG_SELECTED, + wxPropertyGridEventHandler(wxPropertyGridManager::OnPropertyGridSelect) ); + + // Connect to toolbar button events. + Connect(baseId+ID_ADVTBITEMSBASE_OFFSET,baseId+ID_ADVTBITEMSBASE_OFFSET+50, + wxEVT_COMMAND_TOOL_CLICKED, + wxCommandEventHandler(wxPropertyGridManager::OnToolbarClick) ); + + // Optional initial controls. + m_width = -12345; + + m_iFlags |= wxPG_FL_INITIALIZED; + +} + +// ----------------------------------------------------------------------- + +wxPropertyGridManager::~wxPropertyGridManager() +{ + END_MOUSE_CAPTURE + + m_pPropGrid->DoSelectProperty(NULL); + m_pPropGrid->m_pState = NULL; + + size_t i; + for ( i=0; i<m_arrPages.GetCount(); i++ ) + { + delete (wxPropertyGridPage*)m_arrPages.Item(i); + } + + delete m_emptyPage; +} + +// ----------------------------------------------------------------------- + +wxPropertyGrid* wxPropertyGridManager::CreatePropertyGrid() const +{ + return new wxPropertyGrid(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetId( wxWindowID winid ) +{ + wxWindow::SetId(winid); + + // TODO: Reconnect propgrid event handler(s). + + m_pPropGrid->SetId(winid); +} + +// ----------------------------------------------------------------------- + +wxSize wxPropertyGridManager::DoGetBestSize() const +{ + return wxSize(60,150); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::SetFont( const wxFont& font ) +{ + bool res = wxWindow::SetFont(font); + m_pPropGrid->SetFont(font); + + // TODO: Need to do caption recacalculations for other pages as well. + unsigned int i; + for ( i=0; i<m_arrPages.GetCount(); i++ ) + { + wxPropertyGridPage* page = GetPage(i); + + if ( page != m_pPropGrid->GetState() ) + page->CalculateFontAndBitmapStuff(-1); + } + + return res; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetExtraStyle( long exStyle ) +{ + wxWindow::SetExtraStyle( exStyle ); + m_pPropGrid->SetExtraStyle( exStyle & 0xFFFFF000 ); +#if wxUSE_TOOLBAR + if ( (exStyle & wxPG_EX_NO_FLAT_TOOLBAR) && m_pToolbar ) + RecreateControls(); +#endif +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::Freeze() +{ + m_pPropGrid->Freeze(); + wxWindow::Freeze(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::Thaw() +{ + wxWindow::Thaw(); + m_pPropGrid->Thaw(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetWindowStyleFlag( long style ) +{ + wxWindow::SetWindowStyleFlag( style ); + m_pPropGrid->SetWindowStyleFlag( (m_pPropGrid->GetWindowStyleFlag()&~(wxPG_MAN_PASS_FLAGS_MASK)) | + (style&wxPG_MAN_PASS_FLAGS_MASK) ); +} + +// ----------------------------------------------------------------------- + +// Actually shows given page. +bool wxPropertyGridManager::DoSelectPage( int index ) +{ + // -1 means no page was selected + //wxASSERT( m_selPage >= 0 ); + + wxCHECK_MSG( index >= -1 && index < (int)GetPageCount(), + false, + wxT("invalid page index") ); + + if ( m_selPage == index ) + return true; + + if ( m_pPropGrid->m_selected ) + { + if ( !m_pPropGrid->ClearSelection() ) + return false; + } + + wxPropertyGridPage* prevPage; + + if ( m_selPage >= 0 ) + prevPage = GetPage(m_selPage); + else + prevPage = m_emptyPage; + + wxPropertyGridPage* nextPage; + + if ( index >= 0 ) + { + nextPage = (wxPropertyGridPage*)m_arrPages.Item(index); + + nextPage->OnShow(); + } + else + { + if ( !m_emptyPage ) + { + m_emptyPage = new wxPropertyGridPage(); + m_emptyPage->m_pPropGrid = m_pPropGrid; + } + + nextPage = m_emptyPage; + } + + m_iFlags |= wxPG_FL_DESC_REFRESH_REQUIRED; + + m_pPropGrid->SwitchState( nextPage->GetStatePtr() ); + + m_pState = m_pPropGrid->m_pState; + + m_selPage = index; + +#if wxUSE_TOOLBAR + if ( m_pToolbar ) + { + if ( index >= 0 ) + m_pToolbar->ToggleTool( nextPage->m_id, true ); + else + m_pToolbar->ToggleTool( prevPage->m_id, false ); + } +#endif + + return true; +} + +// ----------------------------------------------------------------------- + +// Changes page *and* set the target page for insertion operations. +void wxPropertyGridManager::SelectPage( int index ) +{ + DoSelectPage(index); +} + +// ----------------------------------------------------------------------- + +int wxPropertyGridManager::GetPageByName( const wxString& name ) const +{ + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + if ( ((wxPropertyGridPage*)m_arrPages.Item(i))->m_label == name ) + return i; + } + return wxNOT_FOUND; +} + +// ----------------------------------------------------------------------- + +int wxPropertyGridManager::GetPageByState( const wxPropertyGridPageState* pState ) const +{ + wxASSERT( pState ); + + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + if ( pState == ((wxPropertyGridPage*)m_arrPages.Item(i))->GetStatePtr() ) + return i; + } + + return wxNOT_FOUND; +} + +// ----------------------------------------------------------------------- + +const wxString& wxPropertyGridManager::GetPageName( int index ) const +{ + wxASSERT( index >= 0 && index < (int)GetPageCount() ); + return ((wxPropertyGridPage*)m_arrPages.Item(index))->m_label; +} + +// ----------------------------------------------------------------------- + +wxPropertyGridPageState* wxPropertyGridManager::GetPageState( int page ) const +{ + // Do not change this into wxCHECK because returning NULL is important + // for wxPropertyGridInterface page enumeration mechanics. + if ( page >= (int)GetPageCount() ) + return NULL; + + if ( page == -1 ) + return m_pState; + return GETPAGESTATE(page); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::Clear() +{ + m_pPropGrid->Freeze(); + + int i; + for ( i=(int)GetPageCount()-1; i>=0; i-- ) + RemovePage(i); + + // Reset toolbar ids + m_nextTbInd = m_baseId+ID_ADVTBITEMSBASE_OFFSET + 2; + + m_pPropGrid->Thaw(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::ClearPage( int page ) +{ + wxASSERT( page >= 0 ); + wxASSERT( page < (int)GetPageCount() ); + + if ( page >= 0 && page < (int)GetPageCount() ) + { + wxPropertyGridPageState* state = GETPAGESTATE(page); + + if ( state == m_pPropGrid->GetState() ) + m_pPropGrid->Clear(); + else + state->DoClear(); + } +} + +// ----------------------------------------------------------------------- + +int wxPropertyGridManager::GetColumnCount( int page ) const +{ + wxASSERT( page >= -1 ); + wxASSERT( page < (int)GetPageCount() ); + + return GetPageState(page)->GetColumnCount(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetColumnCount( int colCount, int page ) +{ + wxASSERT( page >= -1 ); + wxASSERT( page < (int)GetPageCount() ); + + GetPageState(page)->SetColumnCount( colCount ); + GetGrid()->Refresh(); +} +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetPropertyAttributeAll( const wxString& attrName, wxVariant value ) +{ + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + wxPropertyGridPage* page = (wxPropertyGridPage*)m_arrPages.Item(i); + + DoSetPropertyAttribute(page->GetStatePtr()->m_properties, attrName, value, wxPG_RECURSE); + } +} + +// ----------------------------------------------------------------------- + +size_t wxPropertyGridManager::GetPageCount() const +{ + if ( !(m_iFlags & wxPG_MAN_FL_PAGE_INSERTED) ) + return 0; + + return m_arrPages.GetCount(); +} + +// ----------------------------------------------------------------------- + +int wxPropertyGridManager::InsertPage( int index, const wxString& label, + const wxBitmap& bmp, wxPropertyGridPage* pageObj ) +{ + if ( index < 0 ) + index = GetPageCount(); + + wxCHECK_MSG( (size_t)index == GetPageCount(), -1, + wxT("wxPropertyGridManager currently only supports appending pages (due to wxToolBar limitation).")); + + bool needInit = true; + bool isPageInserted = m_iFlags & wxPG_MAN_FL_PAGE_INSERTED ? true : false; + + wxASSERT( index == 0 || isPageInserted ); + + if ( !pageObj ) + { + // No custom page object was given, so we will either re-use the default base + // page (if index==0), or create a new default page object. + if ( !isPageInserted ) + { + pageObj = GetPage(0); + // Of course, if the base page was custom, we need to delete and + // re-create it. + if ( !pageObj->m_isDefault ) + { + delete pageObj; + pageObj = new wxPropertyGridPage(); + m_arrPages[0] = pageObj; + } + needInit = false; + } + else + { + pageObj = new wxPropertyGridPage(); + } + pageObj->m_isDefault = true; + } + else + { + if ( !isPageInserted ) + { + // Initial page needs to be deleted and replaced + delete GetPage(0); + m_arrPages[0] = pageObj; + m_pPropGrid->m_pState = pageObj->GetStatePtr(); + } + } + + wxPropertyGridPageState* state = pageObj->GetStatePtr(); + + pageObj->m_manager = this; + + if ( needInit ) + { + state->m_pPropGrid = m_pPropGrid; + state->InitNonCatMode(); + } + + if ( label.length() ) + { + wxASSERT_MSG( !pageObj->m_label.length(), + wxT("If page label is given in constructor, empty label must be given in AddPage")); + pageObj->m_label = label; + } + + pageObj->m_id = m_nextTbInd; + + if ( isPageInserted ) + m_arrPages.Add( (void*)pageObj ); + +#if wxUSE_TOOLBAR + if ( m_windowStyle & wxPG_TOOLBAR ) + { + if ( !m_pToolbar ) + RecreateControls(); + + if ( !(GetExtraStyle()&wxPG_EX_HIDE_PAGE_BUTTONS) ) + { + wxASSERT( m_pToolbar ); + + // Add separator before first page. + if ( GetPageCount() < 2 && (GetExtraStyle()&wxPG_EX_MODE_BUTTONS) && + m_pToolbar->GetToolsCount() < 3 ) + m_pToolbar->AddSeparator(); + + if ( &bmp != &wxNullBitmap ) + m_pToolbar->AddTool(m_nextTbInd,label,bmp,label,wxITEM_RADIO); + //m_pToolbar->InsertTool(index+3,m_nextTbInd,bmp); + else + m_pToolbar->AddTool(m_nextTbInd,label,wxBitmap( (const char**)gs_xpm_defpage ), + label,wxITEM_RADIO); + + m_nextTbInd++; + + m_pToolbar->Realize(); + } + } +#else + wxUnusedVar(bmp); +#endif + + // If selected page was above the point of insertion, fix the current page index + if ( isPageInserted ) + { + if ( m_selPage >= index ) + { + m_selPage += 1; + } + } + else + { + // Set this value only when adding the first page + m_selPage = 0; + } + + pageObj->Init(); + + m_iFlags |= wxPG_MAN_FL_PAGE_INSERTED; + + wxASSERT( pageObj->GetGrid() ); + + return index; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::IsAnyModified() const +{ + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + if ( ((wxPropertyGridPage*)m_arrPages.Item(i))->GetStatePtr()->m_anyModified ) + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::IsPageModified( size_t index ) const +{ + if ( ((wxPropertyGridPage*)m_arrPages.Item(index))->GetStatePtr()->m_anyModified ) + return true; + return false; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridManager::GetPageRoot( int index ) const +{ + wxASSERT( index >= 0 ); + wxASSERT( index < (int)m_arrPages.GetCount() ); + + return ((wxPropertyGridPage*)m_arrPages.Item(index))->GetStatePtr()->m_properties; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::RemovePage( int page ) +{ + wxCHECK_MSG( (page >= 0) && (page < (int)GetPageCount()), + false, + wxT("invalid page index") ); + + wxPropertyGridPage* pd = (wxPropertyGridPage*)m_arrPages.Item(page); + + if ( m_arrPages.GetCount() == 1 ) + { + // Last page: do not remove page entry + m_pPropGrid->Clear(); + m_selPage = -1; + m_iFlags &= ~wxPG_MAN_FL_PAGE_INSERTED; + pd->m_label.clear(); + } + // Change selection if current is page + else if ( page == m_selPage ) + { + if ( !m_pPropGrid->ClearSelection() ) + return false; + + // Substitute page to select + int substitute = page - 1; + if ( substitute < 0 ) + substitute = page + 1; + + SelectPage(substitute); + } + + // Remove toolbar icon +#if wxUSE_TOOLBAR + if ( HasFlag(wxPG_TOOLBAR) ) + { + wxASSERT( m_pToolbar ); + + int toolPos = GetExtraStyle() & wxPG_EX_MODE_BUTTONS ? 3 : 0; + toolPos += page; + + // Delete separator as well, for consistency + if ( (GetExtraStyle() & wxPG_EX_MODE_BUTTONS) && + GetPageCount() == 1 ) + m_pToolbar->DeleteToolByPos(2); + + m_pToolbar->DeleteToolByPos(toolPos); + } +#endif + + if ( m_arrPages.GetCount() > 1 ) + { + m_arrPages.RemoveAt(page); + delete pd; + } + + // Adjust indexes that were above removed + if ( m_selPage > page ) + m_selPage--; + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::ProcessEvent( wxEvent& event ) +{ + int evtType = event.GetEventType(); + + // NB: For some reason, under wxPython, Connect in Init doesn't work properly, + // so we'll need to call OnPropertyGridSelect manually. Multiple call's + // don't really matter. + if ( evtType == wxEVT_PG_SELECTED ) + OnPropertyGridSelect((wxPropertyGridEvent&)event); + + // Property grid events get special attention + if ( evtType >= wxPG_BASE_EVT_TYPE && + evtType < (wxPG_MAX_EVT_TYPE) && + m_selPage >= 0 ) + { + wxPropertyGridPage* page = GetPage(m_selPage); + wxPropertyGridEvent* pgEvent = wxDynamicCast(&event, wxPropertyGridEvent); + + // Add property grid events to appropriate custom pages + // but stop propagating to parent if page says it is + // handling everything. + if ( pgEvent && !page->m_isDefault ) + { + /*if ( pgEvent->IsPending() ) + page->AddPendingEvent(event); + else*/ + page->ProcessEvent(event); + + if ( page->IsHandlingAllEvents() ) + event.StopPropagation(); + } + } + + return wxPanel::ProcessEvent(event); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::RepaintSplitter( wxDC& dc, int new_splittery, int new_width, + int new_height, bool desc_too ) +{ + int use_hei = new_height; + + // Draw background + wxColour bgcol = GetBackgroundColour(); + dc.SetBrush( bgcol ); + dc.SetPen( bgcol ); + int rect_hei = use_hei-new_splittery; + if ( !desc_too ) + rect_hei = m_splitterHeight; + dc.DrawRectangle(0,new_splittery,new_width,rect_hei); + dc.SetPen ( wxSystemSettings::GetColour ( wxSYS_COLOUR_3DDKSHADOW ) ); + int splitter_bottom = new_splittery+m_splitterHeight - 1; + int box_height = use_hei-splitter_bottom; + if ( box_height > 1 ) + dc.DrawRectangle(0,splitter_bottom,new_width,box_height); + else + dc.DrawLine(0,splitter_bottom,new_width,splitter_bottom); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::RefreshHelpBox( int new_splittery, int new_width, int new_height ) +{ + //if ( new_splittery == m_splitterY && new_width == m_width ) + // return; + + int use_hei = new_height; + use_hei--; + + //wxRendererNative::Get().DrawSplitterSash(this,dc, + //wxSize(width,m_splitterHeight),new_splittery,wxHORIZONTAL); + + //wxRendererNative::Get().DrawSplitterBorder(this,dc, + // wxRect(0,new_splittery,new_width,m_splitterHeight)); + + // Fix help control positions. + int cap_hei = m_pPropGrid->m_fontHeight; + int cap_y = new_splittery+m_splitterHeight+5; + int cnt_y = cap_y+cap_hei+3; + int sub_cap_hei = cap_y+cap_hei-use_hei; + int cnt_hei = use_hei-cnt_y; + if ( sub_cap_hei > 0 ) + { + cap_hei -= sub_cap_hei; + cnt_hei = 0; + } + if ( cap_hei <= 2 ) + { + m_pTxtHelpCaption->Show( false ); + m_pTxtHelpContent->Show( false ); + } + else + { + m_pTxtHelpCaption->SetSize(3,cap_y,new_width-6,cap_hei); + m_pTxtHelpCaption->Wrap(-1); + m_pTxtHelpCaption->Show( true ); + if ( cnt_hei <= 2 ) + { + m_pTxtHelpContent->Show( false ); + } + else + { + m_pTxtHelpContent->SetSize(3,cnt_y,new_width-6,cnt_hei); + m_pTxtHelpContent->Show( true ); + } + } + + wxClientDC dc(this); + RepaintSplitter( dc, new_splittery, new_width, new_height, true ); + + m_splitterY = new_splittery; + + m_iFlags &= ~(wxPG_FL_DESC_REFRESH_REQUIRED); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::RecalculatePositions( int width, int height ) +{ + int propgridY = 0; + int propgridBottomY = height; + + // Toolbar at the top. +#if wxUSE_TOOLBAR + if ( m_pToolbar ) + { + int tbHeight; + + #if ( wxMINOR_VERSION < 6 || (wxMINOR_VERSION == 6 && wxRELEASE_NUMBER < 2) ) + tbHeight = -1; + #else + // In wxWidgets 2.6.2+, Toolbar default height may be broken + #if defined(__WXMSW__) + tbHeight = 24; + #elif defined(__WXGTK__) + tbHeight = -1; // 22; + #elif defined(__WXMAC__) + tbHeight = 22; + #else + tbHeight = 22; + #endif + #endif + + m_pToolbar->SetSize(0,0,width,tbHeight); + propgridY += m_pToolbar->GetSize().y; + } +#endif + + // Help box. + if ( m_pTxtHelpCaption ) + { + int new_splittery = m_splitterY; + + // Move m_splitterY + if ( ( m_splitterY >= 0 || m_nextDescBoxSize ) && m_height > 32 ) + { + if ( m_nextDescBoxSize >= 0 ) + { + new_splittery = m_height - m_nextDescBoxSize - m_splitterHeight; + m_nextDescBoxSize = -1; + } + new_splittery += (height-m_height); + } + else + { + new_splittery = height - wxPGMAN_DEFAULT_NEGATIVE_SPLITTER_Y; + if ( new_splittery < 32 ) + new_splittery = 32; + } + + // Check if beyond minimum. + int nspy_min = propgridY + m_pPropGrid->m_lineHeight; + if ( new_splittery < nspy_min ) + new_splittery = nspy_min; + + propgridBottomY = new_splittery; + + RefreshHelpBox( new_splittery, width, height ); + } + + if ( m_iFlags & wxPG_FL_INITIALIZED ) + { + int pgh = propgridBottomY - propgridY; + m_pPropGrid->SetSize( 0, propgridY, width, pgh ); + + m_extraHeight = height - pgh; + + m_width = width; + m_height = height; + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetDescBoxHeight( int ht, bool refresh ) +{ + if ( m_windowStyle & wxPG_DESCRIPTION ) + { + m_nextDescBoxSize = ht; + if ( refresh ) + RecalculatePositions(m_width, m_height); + } +} + +// ----------------------------------------------------------------------- + +int wxPropertyGridManager::GetDescBoxHeight() const +{ + return GetClientSize().y - m_splitterY; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnPaint( wxPaintEvent& WXUNUSED(event) ) +{ + wxPaintDC dc(this); + + // Update everything inside the box + wxRect r = GetUpdateRegion().GetBox(); + + // Repaint splitter? + int r_bottom = r.y + r.height; + int splitter_bottom = m_splitterY + m_splitterHeight; + if ( r.y < splitter_bottom && r_bottom >= m_splitterY ) + RepaintSplitter( dc, m_splitterY, m_width, m_height, false ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::Refresh(bool eraseBackground, const wxRect* rect ) +{ + m_pPropGrid->Refresh(eraseBackground); + wxWindow::Refresh(eraseBackground,rect); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::RefreshProperty( wxPGProperty* p ) +{ + wxPropertyGrid* grid = p->GetGrid(); + + if ( GetPage(m_selPage)->GetStatePtr() == p->GetParent()->GetParentState() ) + grid->RefreshProperty(p); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::RecreateControls() +{ + + bool was_shown = IsShown(); + if ( was_shown ) + Show ( false ); + + wxWindowID baseId = m_pPropGrid->GetId(); + if ( baseId < 0 ) + baseId = wxPG_MAN_ALTERNATE_BASE_ID; + +#if wxUSE_TOOLBAR + if ( m_windowStyle & wxPG_TOOLBAR ) + { + // Has toolbar. + if ( !m_pToolbar ) + { + m_pToolbar = new wxToolBar(this,baseId+ID_ADVTOOLBAR_OFFSET, + wxDefaultPosition,wxDefaultSize, + ((GetExtraStyle()&wxPG_EX_NO_FLAT_TOOLBAR)?0:wxTB_FLAT) + /*| wxTB_HORIZONTAL | wxNO_BORDER*/ ); + + #if defined(__WXMSW__) + // Eliminate toolbar flicker on XP + // NOTE: Not enabled since it corrupts drawing somewhat. + + /* + #ifndef WS_EX_COMPOSITED + #define WS_EX_COMPOSITED 0x02000000L + #endif + + HWND hWnd = (HWND)m_pToolbar->GetHWND(); + + ::SetWindowLong( hWnd, GWL_EXSTYLE, + ::GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_COMPOSITED ); + */ + + #endif + + m_pToolbar->SetCursor ( *wxSTANDARD_CURSOR ); + + if ( (GetExtraStyle()&wxPG_EX_MODE_BUTTONS) ) + { + wxString desc1(_("Categorized Mode")); + wxString desc2(_("Alphabetic Mode")); + m_pToolbar->AddTool(baseId+ID_ADVTBITEMSBASE_OFFSET+0, + desc1,wxBitmap ( (const char**)gs_xpm_catmode ), + desc1,wxITEM_RADIO); + m_pToolbar->AddTool(baseId+ID_ADVTBITEMSBASE_OFFSET+1, + desc2,wxBitmap ( (const char**)gs_xpm_noncatmode ), + desc2,wxITEM_RADIO); + m_pToolbar->Realize(); + } + + } + + if ( (GetExtraStyle()&wxPG_EX_MODE_BUTTONS) ) + { + // Toggle correct mode button. + // TODO: This doesn't work in wxMSW (when changing, + // both items will get toggled). + int toggle_but_on_ind = ID_ADVTBITEMSBASE_OFFSET+0; + int toggle_but_off_ind = ID_ADVTBITEMSBASE_OFFSET+1; + if ( m_pPropGrid->m_pState->IsInNonCatMode() ) + { + toggle_but_on_ind++; + toggle_but_off_ind--; + } + + m_pToolbar->ToggleTool(baseId+toggle_but_on_ind,true); + m_pToolbar->ToggleTool(baseId+toggle_but_off_ind,false); + } + + } + else + { + // No toolbar. + if ( m_pToolbar ) + m_pToolbar->Destroy(); + m_pToolbar = (wxToolBar*) NULL; + } +#endif + + if ( m_windowStyle & wxPG_DESCRIPTION ) + { + // Has help box. + m_pPropGrid->m_iFlags |= (wxPG_FL_NOSTATUSBARHELP); + + if ( !m_pTxtHelpCaption ) + { + m_pTxtHelpCaption = new wxStaticText (this,baseId+ID_ADVHELPCAPTION_OFFSET,wxEmptyString); + m_pTxtHelpCaption->SetFont( m_pPropGrid->m_captionFont ); + m_pTxtHelpCaption->SetCursor ( *wxSTANDARD_CURSOR ); + } + if ( !m_pTxtHelpContent ) + { + m_pTxtHelpContent = new wxStaticText (this,baseId+ID_ADVHELPCONTENT_OFFSET, + wxEmptyString,wxDefaultPosition,wxDefaultSize,wxALIGN_LEFT|wxST_NO_AUTORESIZE); + m_pTxtHelpContent->SetCursor ( *wxSTANDARD_CURSOR ); + } + } + else + { + // No help box. + m_pPropGrid->m_iFlags &= ~(wxPG_FL_NOSTATUSBARHELP); + + if ( m_pTxtHelpCaption ) + m_pTxtHelpCaption->Destroy(); + + m_pTxtHelpCaption = (wxStaticText*) NULL; + + if ( m_pTxtHelpContent ) + m_pTxtHelpContent->Destroy(); + + m_pTxtHelpContent = (wxStaticText*) NULL; + } + + int width, height; + + GetClientSize(&width,&height); + + RecalculatePositions(width,height); + + if ( was_shown ) + Show ( true ); +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridManager::DoGetPropertyByName( const wxString& name ) const +{ + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + wxPropertyGridPageState* pState = ((wxPropertyGridPage*)m_arrPages.Item(i))->GetStatePtr(); + wxPGProperty* p = pState->BaseGetPropertyByName(name); + if ( p ) + { + return p; + } + } + return NULL; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridManager::EnsureVisible( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + wxPropertyGridPageState* parentState = p->GetParentState(); + + // Select correct page. + if ( m_pPropGrid->m_pState != parentState ) + DoSelectPage( GetPageByState(parentState) ); + + return m_pPropGrid->EnsureVisible(id); +} + +// ----------------------------------------------------------------------- + +size_t wxPropertyGridManager::GetChildrenCount( int page_index ) +{ + return GetChildrenCount( GetPage(page_index)->GetStatePtr()->m_properties ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnToolbarClick( wxCommandEvent &event ) +{ + int id = event.GetId(); + if ( id >= 0 ) + { + int baseId = m_pPropGrid->GetId(); + if ( baseId < 0 ) + baseId = wxPG_MAN_ALTERNATE_BASE_ID; + + if ( id == ( baseId + ID_ADVTBITEMSBASE_OFFSET + 0 ) ) + { + // Categorized mode. + if ( m_pPropGrid->m_windowStyle & wxPG_HIDE_CATEGORIES ) + m_pPropGrid->EnableCategories( true ); + } + else if ( id == ( baseId + ID_ADVTBITEMSBASE_OFFSET + 1 ) ) + { + // Alphabetic mode. + if ( !(m_pPropGrid->m_windowStyle & wxPG_HIDE_CATEGORIES) ) + m_pPropGrid->EnableCategories( false ); + } + else + { + // Page Switching. + + int index = -1; + size_t i; + wxPropertyGridPage* pdc; + + // Find page with given id. + for ( i=0; i<GetPageCount(); i++ ) + { + pdc = (wxPropertyGridPage*)m_arrPages.Item(i); + if ( pdc->m_id == id ) + { + index = i; + break; + } + } + + wxASSERT( index >= 0 ); + + if ( DoSelectPage( index ) ) + { + + // Event dispatching must be last. + m_pPropGrid->SendEvent( wxEVT_PG_PAGE_CHANGED, (wxPGProperty*) NULL ); + + } + else + { + // TODO: Depress the old button on toolbar. + } + + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetDescription( const wxString& label, const wxString& content ) +{ + if ( m_pTxtHelpCaption ) + { + wxSize osz1 = m_pTxtHelpCaption->GetSize(); + wxSize osz2 = m_pTxtHelpContent->GetSize(); + + m_pTxtHelpCaption->SetLabel(label); + m_pTxtHelpContent->SetLabel(content); + + m_pTxtHelpCaption->SetSize(-1,osz1.y); + m_pTxtHelpContent->SetSize(-1,osz2.y); + + if ( (m_iFlags & wxPG_FL_DESC_REFRESH_REQUIRED) || (osz2.x<(m_width-10)) ) + RefreshHelpBox( m_splitterY, m_width, m_height ); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetDescribedProperty( wxPGProperty* p ) +{ + if ( m_pTxtHelpCaption ) + { + if ( p ) + { + SetDescription( p->GetLabel(), p->GetHelpString() ); + } + else + { + m_pTxtHelpCaption->SetLabel(wxEmptyString); + m_pTxtHelpContent->SetLabel(wxEmptyString); + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetSplitterLeft( bool subProps, bool allPages ) +{ + if ( !allPages ) + { + m_pPropGrid->SetSplitterLeft(subProps); + } + else + { + wxClientDC dc(this); + dc.SetFont(m_pPropGrid->m_font); + + int highest = 0; + unsigned int i; + + for ( i=0; i<GetPageCount(); i++ ) + { + int maxW = m_pState->GetColumnFitWidth(dc, GETPAGESTATE(i)->m_properties, 0, subProps ); + maxW += m_pPropGrid->m_marginWidth; + if ( maxW > highest ) + highest = maxW; + } + + if ( highest > 0 ) + m_pPropGrid->SetSplitterPosition( highest ); + + m_pPropGrid->m_iFlags |= wxPG_FL_DONT_CENTER_SPLITTER; + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnPropertyGridSelect( wxPropertyGridEvent& event ) +{ + // Check id. + wxASSERT_MSG( GetId() == m_pPropGrid->GetId(), + wxT("wxPropertyGridManager id must be set with wxPropertyGridManager::SetId (not wxWindow::SetId).") ); + + SetDescribedProperty(event.GetProperty()); + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnResize( wxSizeEvent& WXUNUSED(event) ) +{ + int width, height; + + GetClientSize(&width,&height); + + if ( m_width == -12345 ) + RecreateControls(); + + RecalculatePositions(width,height); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnMouseEntry( wxMouseEvent& WXUNUSED(event) ) +{ + // Correct cursor. This is required atleast for wxGTK, for which + // setting button's cursor to *wxSTANDARD_CURSOR does not work. + SetCursor( wxNullCursor ); + m_onSplitter = 0; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnMouseMove( wxMouseEvent &event ) +{ + if ( !m_pTxtHelpCaption ) + return; + + int y = event.m_y; + + if ( m_dragStatus > 0 ) + { + int sy = y - m_dragOffset; + + // Calculate drag limits + int bottom_limit = m_height - m_splitterHeight + 1; + int top_limit = m_pPropGrid->m_lineHeight; +#if wxUSE_TOOLBAR + if ( m_pToolbar ) top_limit += m_pToolbar->GetSize().y; +#endif + + if ( sy >= top_limit && sy < bottom_limit ) + { + + int change = sy - m_splitterY; + if ( change ) + { + m_splitterY = sy; + + m_pPropGrid->SetSize( m_width, m_splitterY - m_pPropGrid->GetPosition().y ); + RefreshHelpBox( m_splitterY, m_width, m_height ); + + m_extraHeight -= change; + InvalidateBestSize(); + } + + } + + } + else + { + if ( y >= m_splitterY && y < (m_splitterY+m_splitterHeight+2) ) + { + SetCursor ( m_cursorSizeNS ); + m_onSplitter = 1; + } + else + { + if ( m_onSplitter ) + { + SetCursor ( wxNullCursor ); + } + m_onSplitter = 0; + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnMouseClick( wxMouseEvent &event ) +{ + int y = event.m_y; + + // Click on splitter. + if ( y >= m_splitterY && y < (m_splitterY+m_splitterHeight+2) ) + { + if ( m_dragStatus == 0 ) + { + // + // Begin draggin the splitter + // + + BEGIN_MOUSE_CAPTURE + + m_dragStatus = 1; + + m_dragOffset = y - m_splitterY; + + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::OnMouseUp( wxMouseEvent &event ) +{ + // No event type check - basicly calling this method should + // just stop dragging. + + if ( m_dragStatus >= 1 ) + { + // + // End Splitter Dragging + // + + int y = event.m_y; + + // DO NOT ENABLE FOLLOWING LINE! + // (it is only here as a reminder to not to do it) + //m_splitterY = y; + + // This is necessary to return cursor + END_MOUSE_CAPTURE + + // Set back the default cursor, if necessary + if ( y < m_splitterY || y >= (m_splitterY+m_splitterHeight+2) ) + { + SetCursor ( wxNullCursor ); + } + + m_dragStatus = 0; + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridManager::SetSplitterPosition( int pos, int splitterColumn ) +{ + wxASSERT_MSG( GetPageCount(), + wxT("SetSplitterPosition() has no effect until pages have been added") ); + + size_t i; + for ( i=0; i<GetPageCount(); i++ ) + { + wxPropertyGridPage* page = GetPage(i); + page->DoSetSplitterPositionThisPage( pos, splitterColumn ); + } + + m_pPropGrid->SetInternalFlag(wxPG_FL_SPLITTER_PRE_SET); +} + +// ----------------------------------------------------------------------- +// wxPGVIterator_Manager +// ----------------------------------------------------------------------- + +// Default returned by wxPropertyGridInterface::CreateVIterator(). +class wxPGVIteratorBase_Manager : public wxPGVIteratorBase +{ +public: + wxPGVIteratorBase_Manager( wxPropertyGridManager* manager, int flags ) + : m_manager(manager), m_flags(flags), m_curPage(0) + { + m_it.Init(manager->GetPage(0), flags); + } + virtual ~wxPGVIteratorBase_Manager() { } + virtual void Next() + { + m_it.Next(); + + // Next page? + if ( m_it.AtEnd() ) + { + m_curPage++; + if ( m_curPage < m_manager->GetPageCount() ) + m_it.Init( m_manager->GetPage(m_curPage), m_flags ); + } + } +private: + wxPropertyGridManager* m_manager; + int m_flags; + unsigned int m_curPage; +}; + +wxPGVIterator wxPropertyGridManager::GetVIterator( int flags ) const +{ + return wxPGVIterator( new wxPGVIteratorBase_Manager( (wxPropertyGridManager*)this, flags ) ); +} diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp new file mode 100644 index 0000000000..4253910e47 --- /dev/null +++ b/src/propgrid/property.cpp @@ -0,0 +1,2180 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/property.cpp +// Purpose: wxPGProperty and related support classes +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-23 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" + #include "wx/frame.h" +#endif + +#include <wx/propgrid/propgrid.h> + + +#define PWC_CHILD_SUMMARY_LIMIT 16 // Maximum number of children summarized in a parent property's + // value field. + +#define PWC_CHILD_SUMMARY_CHAR_LIMIT 64 // Character limit of summary field when not editing + + +// ----------------------------------------------------------------------- + +static void wxPGDrawFocusRect( wxDC& dc, const wxRect& rect ) +{ +#if defined(__WXMSW__) && !defined(__WXWINCE__) + // FIXME: Use DrawFocusRect code above (currently it draws solid line + // for caption focus but works ok for other stuff). + // Also, it seems that this code may not work in future wx versions. + dc.SetLogicalFunction(wxINVERT); + + wxPen pen(*wxBLACK,1,wxDOT); + pen.SetCap(wxCAP_BUTT); + dc.SetPen(pen); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + + dc.DrawRectangle(rect); + + dc.SetLogicalFunction(wxCOPY); +#else + dc.SetLogicalFunction(wxINVERT); + + dc.SetPen(wxPen(*wxBLACK,1,wxDOT)); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + + dc.DrawRectangle(rect); + + dc.SetLogicalFunction(wxCOPY); +#endif +} + +// ----------------------------------------------------------------------- +// wxPGCellRenderer +// ----------------------------------------------------------------------- + +wxSize wxPGCellRenderer::GetImageSize( const wxPGProperty* WXUNUSED(property), + int WXUNUSED(column), + int WXUNUSED(item) ) const +{ + return wxSize(0, 0); +} + +void wxPGCellRenderer::DrawText( wxDC& dc, const wxRect& rect, + int xOffset, const wxString& text ) const +{ + if ( xOffset ) + xOffset += wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2; + dc.DrawText( text, + rect.x+xOffset+wxPG_XBEFORETEXT, + rect.y+((rect.height-dc.GetCharHeight())/2) ); +} + +void wxPGCellRenderer::DrawEditorValue( wxDC& dc, const wxRect& rect, + int xOffset, const wxString& text, + wxPGProperty* property, + const wxPGEditor* editor ) const +{ + if ( xOffset ) + xOffset += wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2; + + int yOffset = ((rect.height-dc.GetCharHeight())/2); + + if ( editor ) + { + wxRect rect2(rect); + rect2.x += xOffset; + rect2.y += yOffset; + rect2.height -= yOffset; + editor->DrawValue( dc, rect2, property, text ); + } + else + { + dc.DrawText( text, + rect.x+xOffset+wxPG_XBEFORETEXT, + rect.y+yOffset ); + } +} + +void wxPGCellRenderer::DrawCaptionSelectionRect( wxDC& dc, int x, int y, int w, int h ) const +{ + wxRect focusRect(x,y+((h-dc.GetCharHeight())/2),w,h); + wxPGDrawFocusRect(dc,focusRect); +} + +int wxPGCellRenderer::PreDrawCell( wxDC& dc, const wxRect& rect, const wxPGCell& cell, int flags ) const +{ + int imageOffset = 0; + + if ( !(flags & Selected) ) + { + // Draw using wxPGCell information, if available + wxColour fgCol = cell.GetFgCol(); + if ( fgCol.Ok() ) + dc.SetTextForeground(fgCol); + + wxColour bgCol = cell.GetBgCol(); + if ( bgCol.Ok() ) + { + dc.SetPen(bgCol); + dc.SetBrush(bgCol); + dc.DrawRectangle(rect); + } + } + + const wxBitmap& bmp = cell.GetBitmap(); + if ( bmp.Ok() && + // In control, do not draw oversized bitmap + (!(flags & Control) || bmp.GetHeight() < rect.height ) + ) + { + dc.DrawBitmap( bmp, + rect.x + wxPG_CONTROL_MARGIN + wxCC_CUSTOM_IMAGE_MARGIN1, + rect.y + wxPG_CUSTOM_IMAGE_SPACINGY, + true ); + imageOffset = bmp.GetWidth(); + } + + return imageOffset; +} + +// ----------------------------------------------------------------------- +// wxPGDefaultRenderer +// ----------------------------------------------------------------------- + +void wxPGDefaultRenderer::Render( wxDC& dc, const wxRect& rect, + const wxPropertyGrid* propertyGrid, wxPGProperty* property, + int column, int item, int flags ) const +{ + bool isUnspecified = property->IsValueUnspecified(); + + if ( column == 1 && item == -1 ) + { + int cmnVal = property->GetCommonValue(); + if ( cmnVal >= 0 ) + { + // Common Value + if ( !isUnspecified ) + DrawText( dc, rect, 0, propertyGrid->GetCommonValueLabel(cmnVal) ); + return; + } + } + + const wxPGEditor* editor = NULL; + const wxPGCell* cell = property->GetCell(column); + + wxString text; + int imageOffset = 0; + + // Use choice cell? + if ( column == 1 && (flags & Control) ) + { + const wxPGCell* ccell = property->GetCurrentChoice(); + if ( ccell && + ( ccell->GetBitmap().IsOk() || ccell->GetFgCol().IsOk() || ccell->GetBgCol().IsOk() ) + ) + cell = ccell; + } + + if ( cell ) + { + int preDrawFlags = flags; + + if ( propertyGrid->GetInternalFlags() & wxPG_FL_CELL_OVERRIDES_SEL ) + preDrawFlags = preDrawFlags & ~(Selected); + + imageOffset = PreDrawCell( dc, rect, *cell, preDrawFlags ); + text = cell->GetText(); + if ( text == wxS("@!") ) + { + if ( column == 0 ) + text = property->GetLabel(); + else if ( column == 1 ) + text = property->GetValueString(); + else + text = wxEmptyString; + } + } + else if ( column == 0 ) + { + // Caption + DrawText( dc, rect, 0, property->GetLabel() ); + } + else if ( column == 1 ) + { + if ( !isUnspecified ) + { + editor = property->GetColumnEditor(column); + + // Regular property value + + wxSize imageSize = propertyGrid->GetImageSize(property, item); + + wxPGPaintData paintdata; + paintdata.m_parent = propertyGrid; + paintdata.m_choiceItem = item; + + if ( imageSize.x > 0 ) + { + wxRect imageRect(rect.x + wxPG_CONTROL_MARGIN + wxCC_CUSTOM_IMAGE_MARGIN1, + rect.y+wxPG_CUSTOM_IMAGE_SPACINGY, + wxPG_CUSTOM_IMAGE_WIDTH, + rect.height-(wxPG_CUSTOM_IMAGE_SPACINGY*2)); + + /*if ( imageSize.x == wxPG_FULL_CUSTOM_PAINT_WIDTH ) + { + imageRect.width = m_width - imageRect.x; + }*/ + + dc.SetPen( wxPen(propertyGrid->GetCellTextColour(), 1, wxSOLID) ); + + paintdata.m_drawnWidth = imageSize.x; + paintdata.m_drawnHeight = imageSize.y; + + if ( !isUnspecified ) + { + property->OnCustomPaint( dc, imageRect, paintdata ); + } + else + { + dc.SetBrush(*wxWHITE_BRUSH); + dc.DrawRectangle(imageRect); + } + + imageOffset = paintdata.m_drawnWidth; + } + + text = property->GetValueString(); + + // Add units string? + if ( propertyGrid->GetColumnCount() <= 2 ) + { + wxString unitsString = property->GetAttribute(wxPGGlobalVars->m_strUnits, wxEmptyString); + if ( unitsString.length() ) + text = wxString::Format(wxS("%s %s"), text.c_str(), unitsString.c_str() ); + } + } + + if ( text.length() == 0 ) + { + // Try to show inline help if no text + wxVariant vInlineHelp = property->GetAttribute(wxPGGlobalVars->m_strInlineHelp); + if ( !vInlineHelp.IsNull() ) + { + text = vInlineHelp.GetString(); + dc.SetTextForeground(propertyGrid->GetCellDisabledTextColour()); + } + } + } + else if ( column == 2 ) + { + // Add units string? + if ( !text.length() ) + text = property->GetAttribute(wxPGGlobalVars->m_strUnits, wxEmptyString); + } + + DrawEditorValue( dc, rect, imageOffset, text, property, editor ); + + // active caption gets nice dotted rectangle + if ( property->IsCategory() /*&& column == 0*/ ) + { + if ( flags & Selected ) + { + if ( imageOffset > 0 ) + imageOffset += wxCC_CUSTOM_IMAGE_MARGIN2 + 4; + + DrawCaptionSelectionRect( dc, + rect.x+wxPG_XBEFORETEXT-wxPG_CAPRECTXMARGIN+imageOffset, + rect.y-wxPG_CAPRECTYMARGIN+1, + ((wxPropertyCategory*)property)->GetTextExtent(propertyGrid, + propertyGrid->GetCaptionFont()) + +(wxPG_CAPRECTXMARGIN*2), + propertyGrid->GetFontHeight()+(wxPG_CAPRECTYMARGIN*2) ); + } + } +} + +wxSize wxPGDefaultRenderer::GetImageSize( const wxPGProperty* property, + int column, + int item ) const +{ + if ( property && column == 1 ) + { + if ( item == -1 ) + { + wxBitmap* bmp = property->GetValueImage(); + + if ( bmp && bmp->Ok() ) + return wxSize(bmp->GetWidth(),bmp->GetHeight()); + } + } + return wxSize(0,0); +} + +// ----------------------------------------------------------------------- +// wxPGCell +// ----------------------------------------------------------------------- + +wxPGCell::wxPGCell() +{ +} + +wxPGCell::wxPGCell( const wxString& text, + const wxBitmap& bitmap, + const wxColour& fgCol, + const wxColour& bgCol ) + : m_bitmap(bitmap), m_fgCol(fgCol), m_bgCol(bgCol) +{ + m_text = text; +} + +// ----------------------------------------------------------------------- +// wxPGProperty +// ----------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxPGProperty, wxObject) + +wxString* wxPGProperty::sm_wxPG_LABEL = NULL; + +void wxPGProperty::Init() +{ + m_commonValue = -1; + m_arrIndex = 0xFFFF; + m_parent = NULL; + + m_parentState = (wxPropertyGridPageState*) NULL; + + m_clientData = NULL; + m_clientObject = NULL; + + m_customEditor = (wxPGEditor*) NULL; +#if wxUSE_VALIDATORS + m_validator = (wxValidator*) NULL; +#endif + m_valueBitmap = (wxBitmap*) NULL; + + m_maxLen = 0; // infinite maximum length + + m_flags = wxPG_PROP_PROPERTY; + + m_depth = 1; + m_bgColIndex = 0; + m_fgColIndex = 0; + + SetExpanded(true); +} + + +void wxPGProperty::Init( const wxString& label, const wxString& name ) +{ + // We really need to check if &label and &name are NULL pointers + // (this can if we are called before property grid has been initalized) + + if ( (&label) != NULL && label != wxPG_LABEL ) + m_label = label; + + if ( (&name) != NULL && name != wxPG_LABEL ) + DoSetName( name ); + else + DoSetName( m_label ); + + Init(); +} + +wxPGProperty::wxPGProperty() + : wxObject() +{ + Init(); +} + + +wxPGProperty::wxPGProperty( const wxString& label, const wxString& name ) + : wxObject() +{ + Init( label, name ); +} + + +wxPGProperty::~wxPGProperty() +{ + delete m_clientObject; + + Empty(); // this deletes items + + delete m_valueBitmap; +#if wxUSE_VALIDATORS + delete m_validator; +#endif + + unsigned int i; + + for ( i=0; i<m_cells.size(); i++ ) + delete (wxPGCell*) m_cells[i]; + + // This makes it easier for us to detect dangling pointers + m_parent = NULL; +} + + +bool wxPGProperty::IsSomeParent( wxPGProperty* candidate ) const +{ + wxPGProperty* parent = m_parent; + do + { + if ( parent == candidate ) + return true; + parent = parent->m_parent; + } while ( parent ); + return false; +} + + +wxString wxPGProperty::GetName() const +{ + wxPGProperty* parent = GetParent(); + + if ( !m_name.length() || !parent || parent->IsCategory() || parent->IsRoot() ) + return m_name; + + return m_parent->GetName() + wxS(".") + m_name; +} + +wxPropertyGrid* wxPGProperty::GetGrid() const +{ + if ( !m_parentState ) + return NULL; + return m_parentState->GetGrid(); +} + + +void wxPGProperty::UpdateControl( wxWindow* primary ) +{ + if ( primary ) + GetEditorClass()->UpdateControl(this, primary); +} + +bool wxPGProperty::ValidateValue( wxVariant& WXUNUSED(value), wxPGValidationInfo& WXUNUSED(validationInfo) ) const +{ + return true; +} + +void wxPGProperty::OnSetValue() +{ +} + +void wxPGProperty::RefreshChildren () +{ +} + +wxString wxPGProperty::GetColumnText( unsigned int col ) const +{ + wxPGCell* cell = GetCell(col); + if ( cell ) + { + return cell->GetText(); + } + else + { + if ( col == 0 ) + return GetLabel(); + else if ( col == 1 ) + return GetDisplayedString(); + else if ( col == 2 ) + return GetAttribute(wxPGGlobalVars->m_strUnits, wxEmptyString); + } + + return wxEmptyString; +} + +void wxPGProperty::GenerateComposedValue( wxString& text, int argFlags ) const +{ + int i; + int iMax = m_children.GetCount(); + + text.clear(); + if ( iMax == 0 ) + return; + + if ( iMax > PWC_CHILD_SUMMARY_LIMIT && + !(argFlags & wxPG_FULL_VALUE) ) + iMax = PWC_CHILD_SUMMARY_LIMIT; + + int iMaxMinusOne = iMax-1; + + if ( !IsTextEditable() ) + argFlags |= wxPG_UNEDITABLE_COMPOSITE_FRAGMENT; + + wxPGProperty* curChild = (wxPGProperty*) m_children.Item(0); + + for ( i = 0; i < iMax; i++ ) + { + wxString s; + if ( !curChild->IsValueUnspecified() ) + s = curChild->GetValueString(argFlags|wxPG_COMPOSITE_FRAGMENT); + + bool skip = false; + if ( (argFlags & wxPG_UNEDITABLE_COMPOSITE_FRAGMENT) && !s.length() ) + skip = true; + + if ( !curChild->GetChildCount() || skip ) + text += s; + else + text += wxS("[") + s + wxS("]"); + + if ( i < iMaxMinusOne ) + { + if ( text.length() > PWC_CHILD_SUMMARY_CHAR_LIMIT && + !(argFlags & wxPG_EDITABLE_VALUE) && + !(argFlags & wxPG_FULL_VALUE) ) + break; + + if ( !skip ) + { + if ( !curChild->GetChildCount() ) + text += wxS("; "); + else + text += wxS(" "); + } + + curChild = (wxPGProperty*) m_children.Item(i+1); + } + } + + // Remove superfluous semicolon and space + wxString rest; + if ( text.EndsWith(wxS("; "), &rest) ) + text = rest; + + if ( (unsigned int)i < m_children.GetCount() ) + text += wxS("; ..."); +} + +wxString wxPGProperty::GetValueAsString( int argFlags ) const +{ + wxCHECK_MSG( GetChildCount() > 0, + wxString(), + wxT("If user property does not have any children, it must override GetValueAsString") ); + + wxString text; + GenerateComposedValue(text, argFlags); + return text; +} + +wxString wxPGProperty::GetValueString( int argFlags ) const +{ + if ( IsValueUnspecified() ) + return wxEmptyString; + + if ( m_commonValue == -1 ) + return GetValueAsString(argFlags); + + // + // Return common value's string representation + wxPropertyGrid* pg = GetGrid(); + const wxPGCommonValue* cv = pg->GetCommonValue(m_commonValue); + + if ( argFlags & wxPG_FULL_VALUE ) + { + return cv->GetLabel(); + } + else if ( argFlags & wxPG_EDITABLE_VALUE ) + { + return cv->GetEditableText(); + } + else + { + return cv->GetLabel(); + } +} + +bool wxPGProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(argFlags) ) const +{ + variant = (long)number; + return true; +} + +// Convert semicolon delimited tokens into child values. +bool wxPGProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + if ( !GetChildCount() ) + return false; + + unsigned int curChild = 0; + + unsigned int iMax = m_children.GetCount(); + + if ( iMax > PWC_CHILD_SUMMARY_LIMIT && + !(argFlags & wxPG_FULL_VALUE) ) + iMax = PWC_CHILD_SUMMARY_LIMIT; + + bool changed = false; + + wxString token; + size_t pos = 0; + + // Its best only to add non-empty group items + bool addOnlyIfNotEmpty = false; + const wxChar delimeter = wxS(';'); + + size_t tokenStart = 0xFFFFFF; + + wxVariantList temp_list; + wxVariant list(temp_list); + + int propagatedFlags = argFlags & wxPG_REPORT_ERROR; + +#ifdef __WXDEBUG__ + bool debug_print = false; +#endif + +#ifdef __WXDEBUG__ + if ( debug_print ) + wxLogDebug(wxT(">> %s.StringToValue('%s')"),GetLabel().c_str(),text.c_str()); +#endif + + wxString::const_iterator it = text.begin(); + wxUniChar a; + + if ( it != text.end() ) + a = *it; + else + a = 0; + + for ( ;; ) + { + if ( tokenStart != 0xFFFFFF ) + { + // Token is running + if ( a == delimeter || a == 0 ) + { + token = text.substr(tokenStart,pos-tokenStart); + token.Trim(true); + size_t len = token.length(); + + if ( !addOnlyIfNotEmpty || len > 0 ) + { + const wxPGProperty* child = Item(curChild); + #ifdef __WXDEBUG__ + if ( debug_print ) + wxLogDebug(wxT("token = '%s', child = %s"),token.c_str(),child->GetLabel().c_str()); + #endif + + if ( len > 0 ) + { + bool wasUnspecified = child->IsValueUnspecified(); + + wxVariant variant(child->GetValueRef()); + if ( child->StringToValue(variant, token, propagatedFlags|wxPG_COMPOSITE_FRAGMENT) ) + { + // Use label instead of name, as name can be empty string, but + // label in practice never is. + variant.SetName(child->GetLabel()); + + // Clear unspecified flag only if OnSetValue() didn't + // affect it. + if ( child->IsValueUnspecified() && + (wasUnspecified || !UsesAutoUnspecified()) ) + { + variant = child->GetDefaultValue(); + } + + list.Append(variant); + + changed = true; + } + } + else + { + // Empty, becomes unspecified + wxVariant variant2; + variant2.SetName(child->GetLabel()); + list.Append(variant2); + changed = true; + } + + curChild++; + if ( curChild >= iMax ) + break; + } + + tokenStart = 0xFFFFFF; + } + } + else + { + // Token is not running + if ( a != wxS(' ') ) + { + + addOnlyIfNotEmpty = false; + + // Is this a group of tokens? + if ( a == wxS('[') ) + { + int depth = 1; + + if ( it != text.end() ) it++; + pos++; + size_t startPos = pos; + + // Group item - find end + while ( it != text.end() && depth > 0 ) + { + a = *it; + it++; + pos++; + + if ( a == wxS(']') ) + depth--; + else if ( a == wxS('[') ) + depth++; + } + + token = text.substr(startPos,pos-startPos-1); + + if ( !token.length() ) + break; + + const wxPGProperty* child = Item(curChild); + + wxVariant variant(child->GetValueRef()); + if ( child->StringToValue( variant, token, propagatedFlags ) ) + { + // Use label instead of name, as name can be empty string, but + // label in practice never is. + variant.SetName(child->GetLabel()); + list.Append(variant); + changed = true; + } + else + { + // Failed, becomes unspecified + wxVariant variant2; + variant2.SetName(child->GetLabel()); + list.Append(variant2); + changed = true; + } + + curChild++; + if ( curChild >= iMax ) + break; + + addOnlyIfNotEmpty = true; + + tokenStart = 0xFFFFFF; + } + else + { + tokenStart = pos; + + if ( a == delimeter ) + { + pos--; + it--; + } + } + } + } + + if ( a == 0 ) + break; + + it++; + if ( it != text.end() ) + { + a = *it; + } + else + { + a = 0; + } + pos++; + } + + if ( changed ) + variant = list; + + return changed; +} + +bool wxPGProperty::SetValueFromString( const wxString& text, int argFlags ) +{ + wxVariant variant(m_value); + bool res = StringToValue(variant, text, argFlags); + if ( res ) + SetValue(variant); + return res; +} + +bool wxPGProperty::SetValueFromInt( long number, int argFlags ) +{ + wxVariant variant(m_value); + bool res = IntToValue(variant, number, argFlags); + if ( res ) + SetValue(variant); + return res; +} + +wxSize wxPGProperty::OnMeasureImage( int WXUNUSED(item) ) const +{ + if ( m_valueBitmap ) + return wxSize(m_valueBitmap->GetWidth(),-1); + + return wxSize(0,0); +} + +wxPGCellRenderer* wxPGProperty::GetCellRenderer( int WXUNUSED(column) ) const +{ + return wxPGGlobalVars->m_defaultRenderer; +} + +void wxPGProperty::OnCustomPaint( wxDC& dc, + const wxRect& rect, + wxPGPaintData& ) +{ + wxBitmap* bmp = m_valueBitmap; + + wxCHECK_RET( bmp && bmp->Ok(), wxT("invalid bitmap") ); + + wxCHECK_RET( rect.x >= 0, wxT("unexpected measure call") ); + + dc.DrawBitmap(*bmp,rect.x,rect.y); +} + +const wxPGEditor* wxPGProperty::DoGetEditorClass() const +{ + return wxPG_EDITOR(TextCtrl); +} + +// Default extra property event handling - that is, none at all. +bool wxPGProperty::OnEvent( wxPropertyGrid*, wxWindow*, wxEvent& ) +{ + return false; +} + + +void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) +{ + if ( !value.IsNull() ) + { + SetCommonValue(-1); + // List variants are reserved a special purpose + // as intermediate containers for child values + // of properties with children. + if ( wxPGIsVariantType(value, list) ) + { + wxVariant newValue; + AdaptListToValue(value, &newValue); + value = newValue; + //wxLogDebug(wxT(">> %s.SetValue() adapted list value to type '%s'"),GetName().c_str(),value.GetType().c_str()); + } + + if ( HasFlag( wxPG_PROP_AGGREGATE) ) + flags |= wxPG_SETVAL_AGGREGATED; + + if ( pList && !pList->IsNull() ) + { + wxASSERT( wxPGIsVariantType(*pList, list) ); + wxASSERT( GetChildCount() ); + wxASSERT( !IsCategory() ); + + wxVariantList& list = pList->GetList(); + wxVariantList::iterator node; + unsigned int i = 0; + + //wxLogDebug(wxT(">> %s.SetValue() pList parsing"),GetName().c_str()); + + // Children in list can be in any order, but we will give hint to + // GetPropertyByLabelWH(). This optimizes for full list parsing. + for ( node = list.begin(); node != list.end(); node++ ) + { + wxVariant& childValue = *((wxVariant*)*node); + wxPGProperty* child = GetPropertyByLabelWH(childValue.GetName(), i); + if ( child ) + { + //wxLogDebug(wxT("%i: child = %s, childValue.GetType()=%s"),i,child->GetLabel().c_str(),childValue.GetType().c_str()); + if ( wxPGIsVariantType(childValue, list) ) + { + if ( child->HasFlag(wxPG_PROP_AGGREGATE) && !(flags & wxPG_SETVAL_AGGREGATED) ) + { + wxVariant listRefCopy = childValue; + child->SetValue(childValue, &listRefCopy, flags|wxPG_SETVAL_FROM_PARENT); + } + else + { + wxVariant oldVal = child->GetValue(); + child->SetValue(oldVal, &childValue, flags|wxPG_SETVAL_FROM_PARENT); + } + } + else if ( !wxPG_VARIANT_EQ(child->GetValue(), childValue) ) + // This flag is not normally set when setting value programmatically. + // However, this loop is usually only executed when called from + // DoPropertyChanged, which should set this flag. + { + // For aggregate properties, we will trust RefreshChildren() + // to update child values. + if ( !HasFlag(wxPG_PROP_AGGREGATE) ) + child->SetValue(childValue, NULL, flags|wxPG_SETVAL_FROM_PARENT); + child->SetFlag(wxPG_PROP_MODIFIED); + } + } + i++; + } + } + + if ( !value.IsNull() ) + { + wxPGVariantAssign(m_value, value); + OnSetValue(); + + if ( !(flags & wxPG_SETVAL_FROM_PARENT) ) + UpdateParentValues(); + } + + if ( pList ) + SetFlag(wxPG_PROP_MODIFIED); + + if ( HasFlag(wxPG_PROP_AGGREGATE) ) + RefreshChildren(); + } + else + { + if ( m_commonValue != -1 ) + { + wxPropertyGrid* pg = GetGrid(); + if ( !pg || m_commonValue != pg->GetUnspecifiedCommonValue() ) + SetCommonValue(-1); + } + + m_value = value; + + // Set children to unspecified, but only if aggregate or + // value is <composed> + if ( AreChildrenComponents() ) + { + unsigned int i; + for ( i=0; i<GetChildCount(); i++ ) + Item(i)->SetValue(value, NULL, flags|wxPG_SETVAL_FROM_PARENT); + } + } + + // + // Update editor control + // + + // We need to check for these, otherwise GetGrid() may fail. + if ( flags & wxPG_SETVAL_REFRESH_EDITOR ) + RefreshEditor(); +} + + +void wxPGProperty::SetValueInEvent( wxVariant value ) const +{ + GetGrid()->ValueChangeInEvent(value); +} + +void wxPGProperty::SetFlagRecursively( FlagType flag, bool set ) +{ + if ( set ) + SetFlag(flag); + else + ClearFlag(flag); + + unsigned int i; + for ( i = 0; i < GetChildCount(); i++ ) + Item(i)->SetFlagRecursively(flag, set); +} + +void wxPGProperty::RefreshEditor() +{ + if ( m_parent && GetParentState() ) + { + wxPropertyGrid* pg = GetParentState()->GetGrid(); + if ( pg->GetSelectedProperty() == this ) + { + wxWindow* editor = pg->GetEditorControl(); + if ( editor ) + GetEditorClass()->UpdateControl( this, editor ); + } + } +} + + +wxVariant wxPGProperty::GetDefaultValue() const +{ + wxVariant defVal = GetAttribute(wxS("DefaultValue")); + if ( !defVal.IsNull() ) + return defVal; + + wxVariant value = GetValue(); + + if ( !value.IsNull() ) + { + wxPGVariantDataClassInfo classInfo = wxPGVariantDataGetClassInfo(value.GetData()); + if ( wxPGIsVariantClassInfo(classInfo, long) ) + return wxPGVariant_Zero; + if ( wxPGIsVariantClassInfo(classInfo, string) ) + return wxPGVariant_EmptyString; + if ( wxPGIsVariantClassInfo(classInfo, bool) ) + return wxPGVariant_False; + if ( wxPGIsVariantClassInfo(classInfo, double) ) + return wxVariant(0.0); + + wxPGVariantData* pgvdata = wxDynamicCastVariantData(m_value.GetData(), wxPGVariantData); + if ( pgvdata ) + return pgvdata->GetDefaultValue(); + + if ( wxPGIsVariantClassInfo(classInfo, arrstring) ) + return wxVariant(wxArrayString()); + if ( wxPGIsVariantClassInfo(classInfo, wxColour) ) + return WXVARIANT(*wxRED); +#if wxUSE_DATETIME + if ( wxPGIsVariantClassInfo(classInfo, datetime) ) + return wxVariant(wxDateTime::Now()); +#endif + + wxFAIL_MSG( + wxString::Format(wxT("Inorder for value to have default value, it must be added to") + wxT("wxPGProperty::GetDefaultValue or it's variantdata must inherit") + wxT("from wxPGVariantData (unrecognized type was '%s')"),m_value.GetType().c_str()) + ); + } + + return wxVariant(); +} + +void wxPGProperty::SetCell( int column, wxPGCell* cellObj ) +{ + if ( column >= (int)m_cells.size() ) + m_cells.SetCount(column+1, NULL); + + delete (wxPGCell*) m_cells[column]; + m_cells[column] = cellObj; +} + +void wxPGProperty::SetChoiceSelection( int newValue, const wxPGChoiceInfo& choiceInfo ) +{ + // Changes value of a property with choices, but only + // works if the value type is long or string. + wxString ts = GetValue().GetType(); + + wxCHECK_RET( choiceInfo.m_choices, wxT("invalid choiceinfo") ); + + if ( ts == wxS("long") ) + { + SetValue( (long) newValue ); + } + else if ( ts == wxS("string") ) + { + SetValue( choiceInfo.m_choices->GetLabel(newValue) ); + } +} + + +wxString wxPGProperty::GetChoiceString( unsigned int index ) +{ + wxPGChoiceInfo ci; + GetChoiceInfo(&ci); + wxASSERT(ci.m_choices); + return ci.m_choices->GetLabel(index); +} + +int wxPGProperty::InsertChoice( const wxString& label, int index, int value ) +{ + wxPropertyGrid* pg = GetGrid(); + + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + int sel = GetChoiceInfo(&ci); + + if ( ci.m_choices ) + { + int newSel = sel; + + if ( index < 0 ) + index = ci.m_choices->GetCount(); + + if ( index <= sel ) + newSel++; + + ci.m_choices->Insert(label, index, value); + + if ( sel != newSel ) + SetChoiceSelection(newSel, ci); + + if ( this == pg->GetSelection() ) + GetEditorClass()->InsertItem(pg->GetEditorControl(),label,index); + + return index; + } + + return -1; +} + + +void wxPGProperty::DeleteChoice( int index ) +{ + wxPropertyGrid* pg = GetGrid(); + + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + int sel = GetChoiceInfo(&ci); + + if ( ci.m_choices ) + { + int newSel = sel; + + // Adjust current value + if ( sel == index ) + { + SetValueToUnspecified(); + newSel = 0; + } + else if ( index < sel ) + { + newSel--; + } + + ci.m_choices->RemoveAt(index); + + if ( sel != newSel ) + SetChoiceSelection(newSel, ci); + + if ( this == pg->GetSelection() ) + GetEditorClass()->DeleteItem(pg->GetEditorControl(), index); + } +} + +int wxPGProperty::GetChoiceInfo( wxPGChoiceInfo* WXUNUSED(info) ) +{ + return -1; +} + +wxPGEditorDialogAdapter* wxPGProperty::GetEditorDialog() const +{ + return NULL; +} + +bool wxPGProperty::DoSetAttribute( const wxString& WXUNUSED(name), wxVariant& WXUNUSED(value) ) +{ + return false; +} + +void wxPGProperty::SetAttribute( const wxString& name, wxVariant value ) +{ + if ( DoSetAttribute( name, value ) ) + { + // Support working without grid, when possible + if ( wxPGGlobalVars->HasExtraStyle( wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES ) ) + return; + } + + m_attributes.Set( name, value ); +} + +void wxPGProperty::SetAttributes( const wxPGAttributeStorage& attributes ) +{ + wxPGAttributeStorage::const_iterator it = attributes.StartIteration(); + wxVariant variant; + + while ( attributes.GetNext(it, variant) ) + SetAttribute( variant.GetName(), variant ); +} + +wxVariant wxPGProperty::DoGetAttribute( const wxString& WXUNUSED(name) ) const +{ + return wxVariant(); +} + + +wxVariant wxPGProperty::GetAttribute( const wxString& name ) const +{ + return m_attributes.FindValue(name); +} + +wxString wxPGProperty::GetAttribute( const wxString& name, const wxString& defVal ) const +{ + wxVariant variant = m_attributes.FindValue(name); + + if ( !variant.IsNull() ) + return variant.GetString(); + + return defVal; +} + +long wxPGProperty::GetAttributeAsLong( const wxString& name, long defVal ) const +{ + wxVariant variant = m_attributes.FindValue(name); + + return wxPGVariantToInt(variant, defVal); +} + +double wxPGProperty::GetAttributeAsDouble( const wxString& name, double defVal ) const +{ + double retVal; + wxVariant variant = m_attributes.FindValue(name); + + if ( wxPGVariantToDouble(variant, &retVal) ) + return retVal; + + return defVal; +} + +wxVariant wxPGProperty::GetAttributesAsList() const +{ + wxVariantList tempList; + wxVariant v( tempList, wxString::Format(wxS("@%s@attr"),m_name.c_str()) ); + + wxPGAttributeStorage::const_iterator it = m_attributes.StartIteration(); + wxVariant variant; + + while ( m_attributes.GetNext(it, variant) ) + v.Append(variant); + + return v; +} + +// Slots of utility flags are NULL +const unsigned int gs_propFlagToStringSize = 14; + +static const wxChar* gs_propFlagToString[gs_propFlagToStringSize] = { + NULL, + wxT("DISABLED"), + wxT("HIDDEN"), + NULL, + wxT("NOEDITOR"), + wxT("COLLAPSED"), + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +wxString wxPGProperty::GetFlagsAsString( FlagType flagsMask ) const +{ + wxString s; + int relevantFlags = m_flags & flagsMask & wxPG_STRING_STORED_FLAGS; + FlagType a = 1; + + unsigned int i = 0; + for ( i=0; i<gs_propFlagToStringSize; i++ ) + { + if ( relevantFlags & a ) + { + const wxChar* fs = gs_propFlagToString[i]; + wxASSERT(fs); + if ( s.length() ) + s << wxS("|"); + s << fs; + } + a = a << 1; + } + + return s; +} + +void wxPGProperty::SetFlagsFromString( const wxString& str ) +{ + FlagType flags = 0; + + WX_PG_TOKENIZER1_BEGIN(str, wxS('|')) + unsigned int i; + for ( i=0; i<gs_propFlagToStringSize; i++ ) + { + const wxChar* fs = gs_propFlagToString[i]; + if ( fs && str == fs ) + { + flags |= (1<<i); + break; + } + } + WX_PG_TOKENIZER1_END() + + m_flags = (m_flags & ~wxPG_STRING_STORED_FLAGS) | flags; +} + +wxValidator* wxPGProperty::DoGetValidator() const +{ + return (wxValidator*) NULL; +} + +wxPGChoices& wxPGProperty::GetChoices() +{ + wxPGChoiceInfo choiceInfo; + choiceInfo.m_choices = NULL; + GetChoiceInfo(&choiceInfo); + return *choiceInfo.m_choices; +} + +const wxPGChoices& wxPGProperty::GetChoices() const +{ + return (const wxPGChoices&) ((wxPGProperty*)this)->GetChoices(); +} + +unsigned int wxPGProperty::GetChoiceCount() const +{ + const wxPGChoices& choices = GetChoices(); + if ( &choices && choices.IsOk() ) + return choices.GetCount(); + return 0; +} + +const wxPGChoiceEntry* wxPGProperty::GetCurrentChoice() const +{ + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + int index = ((wxPGProperty*)this)->GetChoiceInfo(&ci); + if ( index == -1 || !ci.m_choices || index >= (int)ci.m_choices->GetCount() ) + return NULL; + + return &(*ci.m_choices)[index]; +} + +bool wxPGProperty::SetChoices( wxPGChoices& choices ) +{ + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + + // Unref existing + GetChoiceInfo(&ci); + if ( ci.m_choices ) + { + ci.m_choices->Assign(choices); + + //if ( m_parent ) + { + // This may be needed to trigger some initialization + // (but don't do it if property is somewhat uninitialized) + wxVariant defVal = GetDefaultValue(); + if ( defVal.IsNull() ) + return false; + + SetValue(defVal); + + return true; + } + } + return false; +} + + +const wxPGEditor* wxPGProperty::GetEditorClass() const +{ + const wxPGEditor* editor; + + if ( !m_customEditor ) + { + editor = DoGetEditorClass(); + } + else + editor = m_customEditor; + + // + // Maybe override editor if common value specified + if ( GetDisplayedCommonValueCount() ) + { + // TextCtrlAndButton -> ComboBoxAndButton + if ( editor->IsKindOf(CLASSINFO(wxPGTextCtrlAndButtonEditor)) ) + editor = wxPG_EDITOR(ChoiceAndButton); + + // TextCtrl -> ComboBox + else if ( editor->IsKindOf(CLASSINFO(wxPGTextCtrlEditor)) ) + editor = wxPG_EDITOR(ComboBox); + } + + return editor; +} + + +// Privatizes set of choices +void wxPGProperty::SetChoicesExclusive() +{ + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + + GetChoiceInfo(&ci); + if ( ci.m_choices ) + ci.m_choices->SetExclusive(); +} + +bool wxPGProperty::HasVisibleChildren() const +{ + unsigned int i; + + for ( i=0; i<GetChildCount(); i++ ) + { + wxPGProperty* child = Item(i); + + if ( !child->HasFlag(wxPG_PROP_HIDDEN) ) + return true; + } + + return false; +} + +bool wxPGProperty::PrepareValueForDialogEditing( wxPropertyGrid* propGrid ) +{ + return propGrid->EditorValidate(); +} + + +bool wxPGProperty::RecreateEditor() +{ + wxPropertyGrid* pg = GetGrid(); + wxASSERT(pg); + + wxPGProperty* selected = pg->GetSelection(); + if ( this == selected ) + { + pg->DoSelectProperty(this, wxPG_SEL_FORCE); + return true; + } + return false; +} + + +void wxPGProperty::SetValueImage( wxBitmap& bmp ) +{ + delete m_valueBitmap; + + if ( &bmp && bmp.Ok() ) + { + // Resize the image + wxSize maxSz = GetGrid()->GetImageSize(); + wxSize imSz(bmp.GetWidth(),bmp.GetHeight()); + + if ( imSz.x != maxSz.x || imSz.y != maxSz.y ) + { + // Create a memory DC + wxBitmap* bmpNew = new wxBitmap(maxSz.x,maxSz.y,bmp.GetDepth()); + + wxMemoryDC dc; + dc.SelectObject(*bmpNew); + + // Scale + // FIXME: This is ugly - use image or wait for scaling patch. + double scaleX = (double)maxSz.x / (double)imSz.x; + double scaleY = (double)maxSz.y / (double)imSz.y; + + dc.SetUserScale(scaleX,scaleY); + + dc.DrawBitmap( bmp, 0, 0 ); + + m_valueBitmap = bmpNew; + } + else + { + m_valueBitmap = new wxBitmap(bmp); + } + + m_flags |= wxPG_PROP_CUSTOMIMAGE; + } + else + { + m_valueBitmap = NULL; + m_flags &= ~(wxPG_PROP_CUSTOMIMAGE); + } +} + + +wxPGProperty* wxPGProperty::GetMainParent() const +{ + const wxPGProperty* curChild = this; + const wxPGProperty* curParent = m_parent; + + while ( curParent && !curParent->IsCategory() ) + { + curChild = curParent; + curParent = curParent->m_parent; + } + + return (wxPGProperty*) curChild; +} + + +const wxPGProperty* wxPGProperty::GetLastVisibleSubItem() const +{ + // + // Returns last visible sub-item, recursively. + if ( !IsExpanded() || !GetChildCount() ) + return this; + + return Last()->GetLastVisibleSubItem(); +} + + +bool wxPGProperty::IsVisible() const +{ + const wxPGProperty* parent; + + if ( HasFlag(wxPG_PROP_HIDDEN) ) + return false; + + for ( parent = GetParent(); parent != NULL; parent = parent->GetParent() ) + { + if ( !parent->IsExpanded() || parent->HasFlag(wxPG_PROP_HIDDEN) ) + return false; + } + + return true; +} + +wxPropertyGrid* wxPGProperty::GetGridIfDisplayed() const +{ + wxPropertyGridPageState* state = GetParentState(); + wxPropertyGrid* propGrid = state->GetGrid(); + if ( state == propGrid->GetState() ) + return propGrid; + return NULL; +} + + +int wxPGProperty::GetY2( int lh ) const +{ + const wxPGProperty* parent; + const wxPGProperty* child = this; + + int y = 0; + + for ( parent = GetParent(); parent != NULL; parent = child->GetParent() ) + { + if ( !parent->IsExpanded() ) + return -1; + y += parent->GetChildrenHeight(lh, child->GetIndexInParent()); + y += lh; + child = parent; + } + + y -= lh; // need to reduce one level + + return y; +} + + +int wxPGProperty::GetY() const +{ + return GetY2(GetGrid()->GetRowHeight()); +} + + +wxPGProperty* wxPGPropArgCls::GetPtr( wxPropertyGridInterface* methods ) const +{ + if ( !m_isName ) + { + wxASSERT_MSG( m_ptr.property, wxT("invalid property ptr") ); + return m_ptr.property; + } + else if ( m_isName == 1 ) + return methods->GetPropertyByNameA(*m_ptr.name); + else if ( m_isName == 2 ) + return methods->GetPropertyByNameA(m_ptr.rawname); + // 3 is like 1, but ptr is freed in dtor - only needed by wxPython bindings. + else if ( m_isName == 3 ) + return methods->GetPropertyByNameA(*m_ptr.name); + + wxASSERT( m_isName <= 3 ); + return NULL; +} + +// This is used by Insert etc. +void wxPGProperty::AddChild2( wxPGProperty* prop, int index, bool correct_mode ) +{ + if ( index < 0 || (size_t)index >= m_children.GetCount() ) + { + if ( correct_mode ) prop->m_arrIndex = m_children.GetCount(); + m_children.Add( prop ); + } + else + { + m_children.Insert( prop, index ); + if ( correct_mode ) FixIndexesOfChildren( index ); + } + + prop->m_parent = this; +} + +// This is used by properties that have fixed sub-properties +void wxPGProperty::AddChild( wxPGProperty* prop ) +{ + prop->m_arrIndex = m_children.GetCount(); + m_children.Add( prop ); + + int custImgHeight = prop->OnMeasureImage().y; + if ( custImgHeight < 0 /*|| custImgHeight > 1*/ ) + prop->m_flags |= wxPG_PROP_CUSTOMIMAGE; + + prop->m_parent = this; +} + + +void wxPGProperty::AdaptListToValue( wxVariant& list, wxVariant* value ) const +{ + wxASSERT( GetChildCount() ); + wxASSERT( !IsCategory() ); + + *value = GetValue(); + + if ( !list.GetCount() ) + return; + + wxASSERT( GetChildCount() >= (unsigned int)list.GetCount() ); + + bool allChildrenSpecified; + + // Don't fully update aggregate properties unless all children have + // specified value + if ( HasFlag(wxPG_PROP_AGGREGATE) ) + allChildrenSpecified = AreAllChildrenSpecified(&list); + else + allChildrenSpecified = true; + + wxVariant childValue = list[0]; + unsigned int i; + unsigned int n = 0; + + //wxLogDebug(wxT(">> %s.AdaptListToValue()"),GetLabel().c_str()); + + for ( i=0; i<GetChildCount(); i++ ) + { + const wxPGProperty* child = Item(i); + + if ( childValue.GetName() == child->GetLabel() ) + { + //wxLogDebug(wxT(" %s(n=%i), %s"),childValue.GetName().c_str(),n,childValue.GetType().c_str()); + + if ( wxPGIsVariantType(childValue, list) ) + { + wxVariant cv2(child->GetValue()); + child->AdaptListToValue(childValue, &cv2); + childValue = cv2; + } + + if ( allChildrenSpecified ) + ChildChanged(*value, i, childValue); + n++; + if ( n == (unsigned int)list.GetCount() ) + break; + childValue = list[n]; + } + } +} + + +void wxPGProperty::FixIndexesOfChildren( size_t starthere ) +{ + size_t i; + for ( i=starthere;i<GetChildCount();i++) + Item(i)->m_arrIndex = i; +} + + +// Returns (direct) child property with given name (or NULL if not found) +wxPGProperty* wxPGProperty::GetPropertyByName( const wxString& name ) const +{ + size_t i; + + for ( i=0; i<GetChildCount(); i++ ) + { + wxPGProperty* p = Item(i); + if ( p->m_name == name ) + return p; + } + + // Does it have point, then? + int pos = name.Find(wxS('.')); + if ( pos <= 0 ) + return (wxPGProperty*) NULL; + + wxPGProperty* p = GetPropertyByName(name. substr(0,pos)); + + if ( !p || !p->GetChildCount() ) + return NULL; + + return p->GetPropertyByName(name.substr(pos+1,name.length()-pos-1)); +} + +wxPGProperty* wxPGProperty::GetPropertyByLabelWH( const wxString& label, unsigned int hintIndex ) const +{ + unsigned int i = hintIndex; + + if ( i >= GetChildCount() ) + i = 0; + + unsigned int lastIndex = i - 1; + + if ( lastIndex >= GetChildCount() ) + lastIndex = GetChildCount() - 1; + + for (;;) + { + wxPGProperty* p = Item(i); + if ( p->m_label == label ) + return p; + + if ( i == lastIndex ) + break; + + i++; + if ( i == GetChildCount() ) + i = 0; + }; + + return NULL; +} + +int wxPGProperty::GetChildrenHeight( int lh, int iMax_ ) const +{ + // Returns height of children, recursively, and + // by taking expanded/collapsed status into account. + // + // iMax is used when finding property y-positions. + // + unsigned int i = 0; + int h = 0; + + if ( iMax_ == -1 ) + iMax_ = GetChildCount(); + + unsigned int iMax = iMax_; + + wxASSERT( iMax <= GetChildCount() ); + + if ( !IsExpanded() && GetParent() ) + return 0; + + while ( i < iMax ) + { + wxPGProperty* pwc = (wxPGProperty*) Item(i); + + if ( !pwc->HasFlag(wxPG_PROP_HIDDEN) ) + { + if ( !pwc->IsExpanded() || + pwc->GetChildCount() == 0 ) + h += lh; + else + h += pwc->GetChildrenHeight(lh) + lh; + } + + i++; + } + + return h; +} + +wxPGProperty* wxPGProperty::GetItemAtY( unsigned int y, unsigned int lh, unsigned int* nextItemY ) const +{ + wxASSERT( nextItemY ); + + // Linear search at the moment + // + // nextItemY = y of next visible property, final value will be written back. + wxPGProperty* result = NULL; + wxPGProperty* current = NULL; + unsigned int iy = *nextItemY; + unsigned int i = 0; + unsigned int iMax = GetChildCount(); + + while ( i < iMax ) + { + wxPGProperty* pwc = Item(i); + + if ( !pwc->HasFlag(wxPG_PROP_HIDDEN) ) + { + // Found? + if ( y < iy ) + { + result = current; + break; + } + + iy += lh; + + if ( pwc->IsExpanded() && + pwc->GetChildCount() > 0 ) + { + result = (wxPGProperty*) pwc->GetItemAtY( y, lh, &iy ); + if ( result ) + break; + } + + current = pwc; + } + + i++; + } + + // Found? + if ( !result && y < iy ) + result = current; + + *nextItemY = iy; + + /* + if ( current ) + wxLogDebug(wxT("%s::GetItemAtY(%i) -> %s"),this->GetLabel().c_str(),y,current->GetLabel().c_str()); + else + wxLogDebug(wxT("%s::GetItemAtY(%i) -> NULL"),this->GetLabel().c_str(),y); + */ + + return (wxPGProperty*) result; +} + +void wxPGProperty::Empty() +{ + size_t i; + if ( !HasFlag(wxPG_PROP_CHILDREN_ARE_COPIES) ) + { + for ( i=0; i<GetChildCount(); i++ ) + { + wxPGProperty* p = (wxPGProperty*) Item(i); + delete p; + } + } + + m_children.Empty(); +} + +void wxPGProperty::ChildChanged( wxVariant& WXUNUSED(thisValue), + int WXUNUSED(childIndex), + wxVariant& WXUNUSED(childValue) ) const +{ +} + +bool wxPGProperty::AreAllChildrenSpecified( wxVariant* pendingList ) const +{ + unsigned int i; + + const wxVariantList* pList = NULL; + wxVariantList::const_iterator node; + + if ( pendingList ) + { + pList = &pendingList->GetList(); + node = pList->begin(); + } + + // Children in list can be in any order, but we will give hint to + // GetPropertyByLabelWH(). This optimizes for full list parsing. + for ( i=0; i<GetChildCount(); i++ ) + { + wxPGProperty* child = Item(i); + const wxVariant* listValue = NULL; + wxVariant value; + + if ( pendingList ) + { + const wxString& childLabel = child->GetLabel(); + + for ( ; node != pList->end(); node++ ) + { + const wxVariant& item = *((const wxVariant*)*node); + if ( item.GetName() == childLabel ) + { + listValue = &item; + value = item; + break; + } + } + } + + if ( !listValue ) + value = child->GetValue(); + + if ( value.IsNull() ) + return false; + + // Check recursively + if ( child->GetChildCount() ) + { + const wxVariant* childList = NULL; + + if ( listValue && wxPGIsVariantType(*listValue, list) ) + childList = listValue; + + if ( !child->AreAllChildrenSpecified((wxVariant*)childList) ) + return false; + } + } + + return true; +} + +wxPGProperty* wxPGProperty::UpdateParentValues() +{ + wxPGProperty* parent = m_parent; + if ( parent && parent->HasFlag(wxPG_PROP_COMPOSED_VALUE) && + !parent->IsCategory() && !parent->IsRoot() ) + { + wxString s; + parent->GenerateComposedValue(s, 0); + parent->m_value = s; + return parent->UpdateParentValues(); + } + return this; +} + +bool wxPGProperty::IsTextEditable() const +{ + if ( HasFlag(wxPG_PROP_READONLY) ) + return false; + + if ( HasFlag(wxPG_PROP_NOEDITOR) && + (GetChildCount() || + wxString(GetEditorClass()->GetClassInfo()->GetClassName()).EndsWith(wxS("Button"))) + ) + return false; + + return true; +} + +// Call for after sub-properties added with AddChild +void wxPGProperty::PrepareSubProperties() +{ + wxPropertyGridPageState* state = GetParentState(); + + wxASSERT(state); + + if ( !GetChildCount() ) + return; + + wxByte depth = m_depth + 1; + wxByte depthBgCol = m_depthBgCol; + + FlagType inheritFlags = m_flags & wxPG_INHERITED_PROPFLAGS; + + wxByte bgColIndex = m_bgColIndex; + wxByte fgColIndex = m_fgColIndex; + + // + // Set some values to the children + // + size_t i = 0; + wxPGProperty* nparent = this; + + while ( i < nparent->GetChildCount() ) + { + wxPGProperty* np = nparent->Item(i); + + np->m_parentState = state; + np->m_flags |= inheritFlags; // Hideable also if parent. + np->m_depth = depth; + np->m_depthBgCol = depthBgCol; + np->m_bgColIndex = bgColIndex; + np->m_fgColIndex = fgColIndex; + + // Also handle children of children + if ( np->GetChildCount() > 0 ) + { + nparent = np; + i = 0; + + // Init + nparent->SetParentalType(wxPG_PROP_AGGREGATE); + nparent->SetExpanded(false); + depth++; + } + else + { + // Next sibling + i++; + } + + // After reaching last sibling, go back to processing + // siblings of the parent + while ( i >= nparent->GetChildCount() ) + { + // Exit the loop when top parent hit + if ( nparent == this ) + break; + + depth--; + + i = nparent->GetArrIndex() + 1; + nparent = nparent->GetParent(); + } + } +} + +// Call after fixed sub-properties added/removed after creation. +// if oldSelInd >= 0 and < new max items, then selection is +// moved to it. Note: oldSelInd -2 indicates that this property +// should be selected. +void wxPGProperty::SubPropsChanged( int oldSelInd ) +{ + wxPropertyGridPageState* state = GetParentState(); + wxPropertyGrid* grid = state->GetGrid(); + + PrepareSubProperties(); + + wxPGProperty* sel = (wxPGProperty*) NULL; + if ( oldSelInd >= (int)m_children.GetCount() ) + oldSelInd = (int)m_children.GetCount() - 1; + + if ( oldSelInd >= 0 ) + sel = (wxPGProperty*) m_children[oldSelInd]; + else if ( oldSelInd == -2 ) + sel = this; + + if ( sel ) + state->DoSelectProperty(sel); + + if ( state == grid->GetState() ) + { + grid->GetPanel()->Refresh(); + } +} + +// ----------------------------------------------------------------------- +// wxPGRootProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxPGRootProperty,none,TextCtrl) +IMPLEMENT_DYNAMIC_CLASS(wxPGRootProperty, wxPGProperty) + + +wxPGRootProperty::wxPGRootProperty() + : wxPGProperty() +{ +#ifdef __WXDEBUG__ + m_name = wxS("<root>"); +#endif + SetParentalType(0); + m_depth = 0; +} + + +wxPGRootProperty::~wxPGRootProperty() +{ +} + + +// ----------------------------------------------------------------------- +// wxPropertyCategory +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxPropertyCategory,none,TextCtrl) +IMPLEMENT_DYNAMIC_CLASS(wxPropertyCategory, wxPGProperty) + +void wxPropertyCategory::Init() +{ + // don't set colour - prepareadditem method should do this + SetParentalType(wxPG_PROP_CATEGORY); + m_capFgColIndex = 1; + m_textExtent = -1; +} + +wxPropertyCategory::wxPropertyCategory() + : wxPGProperty() +{ + Init(); +} + + +wxPropertyCategory::wxPropertyCategory( const wxString &label, const wxString& name ) + : wxPGProperty(label,name) +{ + Init(); +} + + +wxPropertyCategory::~wxPropertyCategory() +{ +} + + +wxString wxPropertyCategory::GetValueAsString( int ) const +{ + return wxEmptyString; +} + +int wxPropertyCategory::GetTextExtent( const wxWindow* wnd, const wxFont& font ) const +{ + if ( m_textExtent > 0 ) + return m_textExtent; + int x = 0, y = 0; + ((wxWindow*)wnd)->GetTextExtent( m_label, &x, &y, 0, 0, &font ); + return x; +} + +void wxPropertyCategory::CalculateTextExtent( wxWindow* wnd, const wxFont& font ) +{ + int x = 0, y = 0; + wnd->GetTextExtent( m_label, &x, &y, 0, 0, &font ); + m_textExtent = x; +} + +// ----------------------------------------------------------------------- +// wxPGAttributeStorage +// ----------------------------------------------------------------------- + +wxPGAttributeStorage::wxPGAttributeStorage() +{ +} + +wxPGAttributeStorage::~wxPGAttributeStorage() +{ + wxPGHashMapS2P::iterator it; + + for ( it = m_map.begin(); it != m_map.end(); it++ ) + { + wxVariantData* data = (wxVariantData*) it->second; + data->DecRef(); + } +} + +void wxPGAttributeStorage::Set( const wxString& name, const wxVariant& value ) +{ + wxVariantData* data = value.GetData(); + + // Free old, if any + wxPGHashMapS2P::iterator it = m_map.find(name); + if ( it != m_map.end() ) + ((wxVariantData*)it->second)->DecRef(); + + if ( data ) + data->IncRef(); + + m_map[name] = data; +} + diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp new file mode 100644 index 0000000000..05eb4a66ad --- /dev/null +++ b/src/propgrid/propgrid.cpp @@ -0,0 +1,6324 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/propgrid.cpp +// Purpose: wxPropertyGrid +// Author: Jaakko Salli +// Modified by: +// Created: 2004-09-25 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" + #include "wx/frame.h" +#endif + + +// This define is necessary to prevent macro clearing +#define __wxPG_SOURCE_FILE__ + +#include <wx/propgrid/propgrid.h> +#include <wx/propgrid/editors.h> + +#if wxPG_USE_RENDERER_NATIVE + #include <wx/renderer.h> +#endif + +#include <wx/odcombo.h> + +#include "wx/timer.h" +#include "wx/dcbuffer.h" +#include <wx/clipbrd.h> +#include <wx/dataobj.h> + +#ifdef __WXMSW__ + #include <wx/msw/private.h> +#endif + + +// Two pics for the expand / collapse buttons. +// Files are not supplied with this project (since it is +// recommended to use either custom or native rendering). +// If you want them, get wxTreeMultiCtrl by Jorgen Bodde, +// and copy xpm files from archive to wxPropertyGrid src directory +// (and also comment/undef wxPG_ICON_WIDTH in propGrid.h +// and set wxPG_USE_RENDERER_NATIVE to 0). +#ifndef wxPG_ICON_WIDTH + #if defined(__WXMAC__) + #include "mac_collapse.xpm" + #include "mac_expand.xpm" + #elif defined(__WXGTK__) + #include "linux_collapse.xpm" + #include "linux_expand.xpm" + #else + #include "default_collapse.xpm" + #include "default_expand.xpm" + #endif +#endif + + +//#define wxPG_TEXT_INDENT 4 // For the wxComboControl +#define wxPG_ALLOW_CLIPPING 1 // If 1, GetUpdateRegion() in OnPaint event handler is not ignored +#define wxPG_GUTTER_DIV 3 // gutter is max(iconwidth/gutter_div,gutter_min) +#define wxPG_GUTTER_MIN 3 // gutter before and after image of [+] or [-] +#define wxPG_YSPACING_MIN 1 +#define wxPG_DEFAULT_VSPACING 2 // This matches .NET propertygrid's value, + // but causes normal combobox to spill out under MSW + +#define wxPG_OPTIMAL_WIDTH 200 // Arbitrary + +#define wxPG_MIN_SCROLLBAR_WIDTH 10 // Smallest scrollbar width on any platform + // Must be larger than largest control border + // width * 2. + + +#define wxPG_DEFAULT_CURSOR wxNullCursor + + +//#define wxPG_NAT_CHOICE_BORDER_ANY 0 + +#define wxPG_HIDER_BUTTON_HEIGHT 25 + +#define wxPG_PIXELS_PER_UNIT m_lineHeight + +#ifdef wxPG_ICON_WIDTH + #define m_iconHeight m_iconWidth +#endif + +#define wxPG_TOOLTIP_DELAY 1000 + +// ----------------------------------------------------------------------- + +#if wxUSE_INTL +void wxPropertyGrid::AutoGetTranslation ( bool enable ) +{ + wxPGGlobalVars->m_autoGetTranslation = enable; +} +#else +void wxPropertyGrid::AutoGetTranslation ( bool ) { } +#endif + +// ----------------------------------------------------------------------- + +const wxChar *wxPropertyGridNameStr = wxT("wxPropertyGrid"); + +// ----------------------------------------------------------------------- +// Statics in one class for easy destruction. +// NB: We prefer to use wxModule, as it offers more consistent behavior +// across platforms. However, for those rare problem situations, we +// also need to offer option to use simpler approach. +// ----------------------------------------------------------------------- + +#ifndef wxPG_USE_WXMODULE + #define wxPG_USE_WXMODULE 1 +#endif + +#if wxPG_USE_WXMODULE + +#include <wx/module.h> + +class wxPGGlobalVarsClassManager : public wxModule +{ + DECLARE_DYNAMIC_CLASS(wxPGGlobalVarsClassManager) +public: + wxPGGlobalVarsClassManager() {} + virtual bool OnInit() { wxPGGlobalVars = new wxPGGlobalVarsClass(); return true; } + virtual void OnExit() { delete wxPGGlobalVars; wxPGGlobalVars = NULL; } +}; + +IMPLEMENT_DYNAMIC_CLASS(wxPGGlobalVarsClassManager, wxModule) + +#else // !wxPG_USE_WXMODULE + +class wxPGGlobalVarsClassManager +{ +public: + wxPGGlobalVarsClassManager() {} + ~wxPGGlobalVarsClassManager() { delete wxPGGlobalVars; } +}; + +static wxPGGlobalVarsClassManager gs_pgGlobalVarsClassManager; + +#endif + + +wxPGGlobalVarsClass* wxPGGlobalVars = (wxPGGlobalVarsClass*) NULL; + + +wxPGGlobalVarsClass::wxPGGlobalVarsClass() +{ + wxPGProperty::sm_wxPG_LABEL = new wxString(wxPG_LABEL_STRING); + + m_boolChoices.Add(_("False")); + m_boolChoices.Add(_("True")); + + m_fontFamilyChoices = (wxPGChoices*) NULL; + + m_defaultRenderer = new wxPGDefaultRenderer(); + + m_autoGetTranslation = false; + + m_offline = 0; + + m_extraStyle = 0; + + wxVariant v; + + v = (long)0; + wxVariantClassInfo_long = wxPGVariantDataGetClassInfo(v.GetData()); + + v = wxString(); + wxVariantClassInfo_string = wxPGVariantDataGetClassInfo(v.GetData()); + + v = (double)0.0; + wxVariantClassInfo_double = wxPGVariantDataGetClassInfo(v.GetData()); + + v = (bool)false; + wxVariantClassInfo_bool = wxPGVariantDataGetClassInfo(v.GetData()); + + v = wxArrayString(); + wxVariantClassInfo_arrstring = wxPGVariantDataGetClassInfo(v.GetData()); + + wxColour col; + wxVariant v2((wxObject*)&col); + wxVariantClassInfo_wxobject = wxPGVariantDataGetClassInfo(v2.GetData()); + + wxVariantList list; + v = wxVariant(list); + wxVariantClassInfo_list = wxPGVariantDataGetClassInfo(v.GetData()); + + v << *wxRED; + wxVariantClassInfo_wxColour = wxPGVariantDataGetClassInfo(v.GetData()); + +#if wxUSE_DATETIME + v = wxVariant(wxDateTime::Now()); + wxVariantClassInfo_datetime = wxPGVariantDataGetClassInfo(v.GetData()); +#endif + + // Prepare some shared variants + m_vEmptyString = wxString(); + m_vZero = (long) 0; + m_vMinusOne = (long) -1; + m_vTrue = true; + m_vFalse = false; + + // Prepare cached string constants + m_strMin = wxS("Min"); + m_strMax = wxS("Max"); + m_strUnits = wxS("Units"); + m_strInlineHelp = wxS("InlineHelp"); + +#ifdef __WXDEBUG__ + m_warnings = 0; +#endif +} + + +wxPGGlobalVarsClass::~wxPGGlobalVarsClass() +{ + size_t i; + + delete m_defaultRenderer; + + // This will always have one ref + delete m_fontFamilyChoices; + +#if wxUSE_VALIDATORS + for ( i=0; i<m_arrValidators.size(); i++ ) + delete ((wxValidator*)m_arrValidators[i]); +#endif + + // + // Destroy value type class instances. + wxPGHashMapS2P::iterator vt_it; + + // Destroy editor class instances. + // iterate over all the elements in the class + for( vt_it = m_mapEditorClasses.begin(); vt_it != m_mapEditorClasses.end(); ++vt_it ) + { + delete ((wxPGEditor*)vt_it->second); + } + + delete wxPGProperty::sm_wxPG_LABEL; +} + +// ----------------------------------------------------------------------- +// wxPGBrush +// ----------------------------------------------------------------------- + +// +// This class is a wxBrush derivative used in the background colour +// brush cache. It adds wxPG-type colour-in-long to the class. +// JMS: Yes I know wxBrush doesn't actually hold the value (refcounted +// object does), but this is simpler implementation and equally +// effective. +// + +class wxPGBrush : public wxBrush +{ +public: + wxPGBrush( const wxColour& colour ); + wxPGBrush(); + virtual ~wxPGBrush() { } + void SetColour2( const wxColour& colour ); + inline long GetColourAsLong() const { return m_colAsLong; } +private: + long m_colAsLong; +}; + + +void wxPGBrush::SetColour2( const wxColour& colour ) +{ + wxBrush::SetColour(colour); + m_colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); +} + + +wxPGBrush::wxPGBrush() : wxBrush() +{ + m_colAsLong = 0; +} + + +wxPGBrush::wxPGBrush( const wxColour& colour ) : wxBrush(colour) +{ + m_colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); +} + + +// ----------------------------------------------------------------------- +// wxPGColour +// ----------------------------------------------------------------------- + +// +// Same as wxPGBrush, but for wxColour instead. +// + +class wxPGColour : public wxColour +{ +public: + wxPGColour( const wxColour& colour ); + wxPGColour(); + virtual ~wxPGColour() { } + void SetColour2( const wxColour& colour ); + inline long GetColourAsLong() const { return m_colAsLong; } +private: + long m_colAsLong; +}; + + +void wxPGColour::SetColour2( const wxColour& colour ) +{ + *this = colour; + m_colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); +} + + +wxPGColour::wxPGColour() : wxColour() +{ + m_colAsLong = 0; +} + + +wxPGColour::wxPGColour( const wxColour& colour ) : wxColour(colour) +{ + m_colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); +} + + +// ----------------------------------------------------------------------- +// wxPGTLWHandler +// Intercepts Close-events sent to wxPropertyGrid's top-level parent, +// and tries to commit property value. +// ----------------------------------------------------------------------- + +class wxPGTLWHandler : public wxEvtHandler +{ +public: + + wxPGTLWHandler( wxPropertyGrid* pg ) + : wxEvtHandler() + { + m_pg = pg; + } + +protected: + + void OnClose( wxCloseEvent& event ) + { + // ClearSelection forces value validation/commit. + if ( event.CanVeto() && !m_pg->ClearSelection() ) + { + event.Veto(); + return; + } + + event.Skip(); + } + +private: + wxPropertyGrid* m_pg; + + DECLARE_EVENT_TABLE() +}; + +BEGIN_EVENT_TABLE(wxPGTLWHandler, wxEvtHandler) + EVT_CLOSE(wxPGTLWHandler::OnClose) +END_EVENT_TABLE() + +// ----------------------------------------------------------------------- +// wxPGCanvas +// ----------------------------------------------------------------------- + +// +// wxPGCanvas acts as a graphics sub-window of the +// wxScrolledWindow that wxPropertyGrid is. +// +class wxPGCanvas : public wxPanel +{ +public: + wxPGCanvas() : wxPanel() + { + } + virtual ~wxPGCanvas() { } + +protected: + void OnMouseMove( wxMouseEvent &event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnMouseMove( event ); + } + + void OnMouseClick( wxMouseEvent &event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnMouseClick( event ); + } + + void OnMouseUp( wxMouseEvent &event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnMouseUp( event ); + } + + void OnMouseRightClick( wxMouseEvent &event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnMouseRightClick( event ); + } + + void OnMouseDoubleClick( wxMouseEvent &event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnMouseDoubleClick( event ); + } + + void OnKey( wxKeyEvent& event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnKey( event ); + } + + void OnKeyUp( wxKeyEvent& event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnKeyUp( event ); + } + + void OnNavigationKey( wxNavigationKeyEvent& event ) + { + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + pg->OnNavigationKey( event ); + } + + void OnPaint( wxPaintEvent& event ); + +private: + DECLARE_EVENT_TABLE() +}; + + +BEGIN_EVENT_TABLE(wxPGCanvas, wxPanel) + EVT_MOTION(wxPGCanvas::OnMouseMove) + EVT_PAINT(wxPGCanvas::OnPaint) + EVT_LEFT_DOWN(wxPGCanvas::OnMouseClick) + EVT_LEFT_UP(wxPGCanvas::OnMouseUp) + EVT_RIGHT_UP(wxPGCanvas::OnMouseRightClick) + EVT_LEFT_DCLICK(wxPGCanvas::OnMouseDoubleClick) + EVT_KEY_DOWN(wxPGCanvas::OnKey) + EVT_KEY_UP(wxPGCanvas::OnKeyUp) + EVT_CHAR(wxPGCanvas::OnKey) + EVT_NAVIGATION_KEY(wxPGCanvas::OnNavigationKey) +END_EVENT_TABLE() + + +void wxPGCanvas::OnPaint( wxPaintEvent& WXUNUSED(event) ) +{ + wxPropertyGrid* pg = wxStaticCast(GetParent(), wxPropertyGrid); + wxASSERT( pg->IsKindOf(CLASSINFO(wxPropertyGrid)) ); + + wxPaintDC dc(this); + + // Don't paint after destruction has begun + if ( !(pg->GetInternalFlags() & wxPG_FL_INITIALIZED) ) + return; + + // Update everything inside the box + wxRect r = GetUpdateRegion().GetBox(); + + // Repaint this rectangle + pg->DrawItems( dc, r.y, r.y + r.height, &r ); + + // We assume that the size set when grid is shown + // is what is desired. + pg->SetInternalFlag(wxPG_FL_GOOD_SIZE_SET); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxPropertyGrid, wxScrolledWindow) + +BEGIN_EVENT_TABLE(wxPropertyGrid, wxScrolledWindow) + EVT_IDLE(wxPropertyGrid::OnIdle) + EVT_MOTION(wxPropertyGrid::OnMouseMoveBottom) + EVT_PAINT(wxPropertyGrid::OnPaint) + EVT_SIZE(wxPropertyGrid::OnResize) + EVT_ENTER_WINDOW(wxPropertyGrid::OnMouseEntry) + EVT_LEAVE_WINDOW(wxPropertyGrid::OnMouseEntry) + EVT_MOUSE_CAPTURE_CHANGED(wxPropertyGrid::OnCaptureChange) + EVT_SCROLLWIN(wxPropertyGrid::OnScrollEvent) + EVT_CHILD_FOCUS(wxPropertyGrid::OnChildFocusEvent) + EVT_SET_FOCUS(wxPropertyGrid::OnFocusEvent) + EVT_KILL_FOCUS(wxPropertyGrid::OnFocusEvent) + EVT_TEXT_ENTER(wxPG_SUBID1,wxPropertyGrid::OnCustomEditorEvent) + EVT_SYS_COLOUR_CHANGED(wxPropertyGrid::OnSysColourChanged) +END_EVENT_TABLE() + + +// ----------------------------------------------------------------------- + +wxPropertyGrid::wxPropertyGrid() + : wxScrolledWindow() +{ + Init1(); +} + +// ----------------------------------------------------------------------- + +wxPropertyGrid::wxPropertyGrid( wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxChar* name ) + : wxScrolledWindow() +{ + Init1(); + Create(parent,id,pos,size,style,name); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::Create( wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxChar* name ) +{ + + if ( !(style&wxBORDER_MASK) ) + style |= wxSIMPLE_BORDER; + + style |= wxVSCROLL; + +#ifdef __WXMSW__ + // This prevents crash under Win2K, but still + // enables keyboard navigation + if ( style & wxTAB_TRAVERSAL ) + { + style &= ~(wxTAB_TRAVERSAL); + style |= wxWANTS_CHARS; + } +#else + if ( style & wxTAB_TRAVERSAL ) + style |= wxWANTS_CHARS; +#endif + + wxScrolledWindow::Create(parent,id,pos,size,style,name); + + Init2(); + + return true; +} + +// ----------------------------------------------------------------------- + +// +// Initialize values to defaults +// +void wxPropertyGrid::Init1() +{ +#if !wxPG_USE_WXMODULE + if ( !wxPGGlobalVars ) + wxPGGlobalVars = new wxPGGlobalVarsClass(); +#endif + + // Register editor classes, if necessary. + if ( wxPGGlobalVars->m_mapEditorClasses.empty() ) + RegisterDefaultEditors(); + + m_iFlags = 0; + m_pState = (wxPropertyGridPageState*) NULL; + m_wndEditor = m_wndEditor2 = (wxWindow*) NULL; + m_selected = (wxPGProperty*) NULL; + m_selColumn = -1; + m_propHover = (wxPGProperty*) NULL; + m_eventObject = this; + m_curFocused = (wxWindow*) NULL; + m_tlwHandler = NULL; + m_inDoPropertyChanged = 0; + m_inCommitChangesFromEditor = 0; + m_inDoSelectProperty = 0; + m_permanentValidationFailureBehavior = wxPG_VFB_DEFAULT; + m_dragStatus = 0; + m_mouseSide = 16; + m_editorFocused = 0; + + // Set default keys + AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_RIGHT ); + AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_DOWN ); + AddActionTrigger( wxPG_ACTION_PREV_PROPERTY, WXK_LEFT ); + AddActionTrigger( wxPG_ACTION_PREV_PROPERTY, WXK_UP ); + AddActionTrigger( wxPG_ACTION_EXPAND_PROPERTY, WXK_RIGHT); + AddActionTrigger( wxPG_ACTION_COLLAPSE_PROPERTY, WXK_LEFT); + AddActionTrigger( wxPG_ACTION_CANCEL_EDIT, WXK_ESCAPE ); + AddActionTrigger( wxPG_ACTION_CUT, 'X', wxMOD_CONTROL ); + AddActionTrigger( wxPG_ACTION_CUT, WXK_DELETE, wxMOD_SHIFT ); + AddActionTrigger( wxPG_ACTION_COPY, 'C', wxMOD_CONTROL); + AddActionTrigger( wxPG_ACTION_COPY, WXK_INSERT, wxMOD_CONTROL ); + AddActionTrigger( wxPG_ACTION_PASTE, 'V', wxMOD_CONTROL ); + AddActionTrigger( wxPG_ACTION_PASTE, WXK_INSERT, wxMOD_SHIFT ); + + m_coloursCustomized = 0; + m_frozen = 0; + + m_canvas = NULL; + +#if wxPG_DOUBLE_BUFFER + m_doubleBuffer = (wxBitmap*) NULL; +#endif + + m_windowsToDelete = NULL; + +#ifndef wxPG_ICON_WIDTH + m_expandbmp = NULL; + m_collbmp = NULL; + m_iconWidth = 11; + m_iconHeight = 11; +#else + m_iconWidth = wxPG_ICON_WIDTH; +#endif + + m_prevVY = -1; + + m_gutterWidth = wxPG_GUTTER_MIN; + m_subgroup_extramargin = 10; + + m_lineHeight = 0; + + m_width = m_height = 0; + + SetButtonShortcut(0); + + m_keyComboConsumed = 0; + + m_commonValues.push_back(new wxPGCommonValue(_("Unspecified"), wxPGGlobalVars->m_defaultRenderer) ); + m_cvUnspecified = 0; + + m_chgInfo_changedProperty = NULL; +} + +// ----------------------------------------------------------------------- + +// +// Initialize after parent etc. set +// +void wxPropertyGrid::Init2() +{ + wxASSERT( !(m_iFlags & wxPG_FL_INITIALIZED ) ); + +#ifdef __WXMAC__ + // Smaller controls on Mac + SetWindowVariant(wxWINDOW_VARIANT_SMALL); +#endif + + // Now create state, if one didn't exist already + // (wxPropertyGridManager might have created it for us). + if ( !m_pState ) + { + m_pState = CreateState(); + m_pState->m_pPropGrid = this; + m_iFlags |= wxPG_FL_CREATEDSTATE; + } + + if ( !(m_windowStyle & wxPG_SPLITTER_AUTO_CENTER) ) + m_iFlags |= wxPG_FL_DONT_CENTER_SPLITTER; + + if ( m_windowStyle & wxPG_HIDE_CATEGORIES ) + { + m_pState->InitNonCatMode(); + + m_pState->m_properties = m_pState->m_abcArray; + } + + GetClientSize(&m_width,&m_height); + +#ifndef wxPG_ICON_WIDTH + // create two bitmap nodes for drawing + m_expandbmp = new wxBitmap(expand_xpm); + m_collbmp = new wxBitmap(collapse_xpm); + + // calculate average font height for bitmap centering + + m_iconWidth = m_expandbmp->GetWidth(); + m_iconHeight = m_expandbmp->GetHeight(); +#endif + + m_curcursor = wxCURSOR_ARROW; + m_cursorSizeWE = new wxCursor( wxCURSOR_SIZEWE ); + + // adjust bitmap icon y position so they are centered + m_vspacing = wxPG_DEFAULT_VSPACING; + + if ( !m_font.Ok() ) + { + wxFont useFont = wxScrolledWindow::GetFont(); + wxScrolledWindow::SetOwnFont( useFont ); + } + else + // This should be otherwise called by SetOwnFont + CalculateFontAndBitmapStuff( wxPG_DEFAULT_VSPACING ); + + // Add base brush item + m_arrBgBrushes.Add((void*)new wxPGBrush()); + + // Add base colour items + m_arrFgCols.Add((void*)new wxPGColour()); + m_arrFgCols.Add((void*)new wxPGColour()); + + RegainColours(); + + // This helps with flicker + SetBackgroundStyle( wxBG_STYLE_CUSTOM ); + + // Hook the TLW + wxPGTLWHandler* handler = new wxPGTLWHandler(this); + m_tlp = ::wxGetTopLevelParent(this); + m_tlwHandler = handler; + m_tlp->PushEventHandler(handler); + + // set virtual size to this window size + wxSize wndsize = GetSize(); + SetVirtualSize(wndsize.GetWidth(), wndsize.GetWidth()); + + m_timeCreated = ::wxGetLocalTimeMillis(); + + m_canvas = new wxPGCanvas(); + m_canvas->Create(this, 1, wxPoint(0, 0), GetClientSize(), + (GetWindowStyle() & wxTAB_TRAVERSAL) | wxWANTS_CHARS | wxCLIP_CHILDREN); + m_canvas->SetBackgroundStyle( wxBG_STYLE_CUSTOM ); + + m_iFlags |= wxPG_FL_INITIALIZED; + + m_ncWidth = wndsize.GetWidth(); + + // Need to call OnResize handler or size given in constructor/Create + // will never work. + wxSizeEvent sizeEvent(wndsize,0); + OnResize(sizeEvent); +} + +// ----------------------------------------------------------------------- + +wxPropertyGrid::~wxPropertyGrid() +{ + size_t i; + + DoSelectProperty(NULL); + + // This should do prevent things from going too badly wrong + m_iFlags &= ~(wxPG_FL_INITIALIZED); + + if ( m_iFlags & wxPG_FL_MOUSE_CAPTURED ) + m_canvas->ReleaseMouse(); + + wxPGTLWHandler* handler = (wxPGTLWHandler*) m_tlwHandler; + m_tlp->RemoveEventHandler(handler); + delete handler; + +#ifdef __WXDEBUG__ + if ( IsEditorsValueModified() ) + ::wxMessageBox(wxS("Most recent change in property editor was lost!!!\n\n(if you don't want this to happen, close your frames and dialogs using Close(false).)"), + wxS("wxPropertyGrid Debug Warning") ); +#endif + +#if wxPG_DOUBLE_BUFFER + if ( m_doubleBuffer ) + delete m_doubleBuffer; +#endif + + delete m_windowsToDelete; + + //m_selected = (wxPGProperty*) NULL; + + if ( m_iFlags & wxPG_FL_CREATEDSTATE ) + delete m_pState; + + delete m_cursorSizeWE; + +#ifndef wxPG_ICON_WIDTH + delete m_expandbmp; + delete m_collbmp; +#endif + + // Delete cached text colours. + for ( i=0; i<m_arrFgCols.size(); i++ ) + { + delete (wxPGColour*)m_arrFgCols.Item(i); + } + + // Delete cached brushes. + for ( i=0; i<m_arrBgBrushes.size(); i++ ) + { + delete (wxPGBrush*)m_arrBgBrushes.Item(i); + } + + // Delete common value records + for ( i=0; i<m_commonValues.size(); i++ ) + { + delete GetCommonValue(i); + } +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::Destroy() +{ + if ( m_iFlags & wxPG_FL_MOUSE_CAPTURED ) + m_canvas->ReleaseMouse(); + + return wxScrolledWindow::Destroy(); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridPageState* wxPropertyGrid::CreateState() const +{ + return new wxPropertyGridPageState(); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid overridden wxWindow methods +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetWindowStyleFlag( long style ) +{ + long old_style = m_windowStyle; + + if ( m_iFlags & wxPG_FL_INITIALIZED ) + { + wxASSERT( m_pState ); + + if ( !(style & wxPG_HIDE_CATEGORIES) && (old_style & wxPG_HIDE_CATEGORIES) ) + { + // Enable categories + EnableCategories( true ); + } + else if ( (style & wxPG_HIDE_CATEGORIES) && !(old_style & wxPG_HIDE_CATEGORIES) ) + { + // Disable categories + EnableCategories( false ); + } + if ( !(old_style & wxPG_AUTO_SORT) && (style & wxPG_AUTO_SORT) ) + { + // + // Autosort enabled + // + if ( !m_frozen ) + PrepareAfterItemsAdded(); + else + m_pState->m_itemsAdded = 1; + } + #if wxPG_SUPPORT_TOOLTIPS + if ( !(old_style & wxPG_TOOLTIPS) && (style & wxPG_TOOLTIPS) ) + { + // + // Tooltips enabled + // + /* + wxToolTip* tooltip = new wxToolTip ( wxEmptyString ); + SetToolTip ( tooltip ); + tooltip->SetDelay ( wxPG_TOOLTIP_DELAY ); + */ + } + else if ( (old_style & wxPG_TOOLTIPS) && !(style & wxPG_TOOLTIPS) ) + { + // + // Tooltips disabled + // + m_canvas->SetToolTip( (wxToolTip*) NULL ); + } + #endif + } + + wxScrolledWindow::SetWindowStyleFlag ( style ); + + if ( m_iFlags & wxPG_FL_INITIALIZED ) + { + if ( (old_style & wxPG_HIDE_MARGIN) != (style & wxPG_HIDE_MARGIN) ) + { + CalculateFontAndBitmapStuff( m_vspacing ); + Refresh(); + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::Freeze() +{ + if ( !m_frozen ) + { + wxScrolledWindow::Freeze(); + } + m_frozen++; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::Thaw() +{ + m_frozen--; + + if ( !m_frozen ) + { + wxScrolledWindow::Thaw(); + RecalculateVirtualSize(); + #if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + m_canvas->Refresh(); + #endif + + // Force property re-selection + if ( m_selected ) + DoSelectProperty(m_selected, wxPG_SEL_FORCE); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetExtraStyle( long exStyle ) +{ + if ( exStyle & wxPG_EX_NATIVE_DOUBLE_BUFFERING ) + { +#if defined(__WXMSW__) + + /* + // Don't use WS_EX_COMPOSITED just now. + HWND hWnd; + + if ( m_iFlags & wxPG_FL_IN_MANAGER ) + hWnd = (HWND)GetParent()->GetHWND(); + else + hWnd = (HWND)GetHWND(); + + ::SetWindowLong( hWnd, GWL_EXSTYLE, + ::GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_COMPOSITED ); + */ + +//#elif defined(__WXGTK20__) +#endif + // Only apply wxPG_EX_NATIVE_DOUBLE_BUFFERING if the window + // truly was double-buffered. + if ( !this->IsDoubleBuffered() ) + { + exStyle &= ~(wxPG_EX_NATIVE_DOUBLE_BUFFERING); + } + else + { + #if wxPG_DOUBLE_BUFFER + delete m_doubleBuffer; + m_doubleBuffer = NULL; + #endif + } + } + + wxScrolledWindow::SetExtraStyle( exStyle ); + + if ( exStyle & wxPG_EX_INIT_NOCAT ) + m_pState->InitNonCatMode(); + + if ( exStyle & wxPG_EX_HELP_AS_TOOLTIPS ) + m_windowStyle |= wxPG_TOOLTIPS; + + // Set global style + wxPGGlobalVars->m_extraStyle = exStyle; +} + +// ----------------------------------------------------------------------- + +// returns the best acceptable minimal size +wxSize wxPropertyGrid::DoGetBestSize() const +{ + int hei = 15; + if ( m_lineHeight > hei ) + hei = m_lineHeight; + wxSize sz = wxSize( 60, hei+40 ); + + CacheBestSize(sz); + return sz; +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid Font and Colour Methods +// ----------------------------------------------------------------------- + +void wxPropertyGrid::CalculateFontAndBitmapStuff( int vspacing ) +{ + int x = 0, y = 0; + + m_captionFont = wxScrolledWindow::GetFont(); + + GetTextExtent(wxS("jG"), &x, &y, 0, 0, &m_captionFont); + m_subgroup_extramargin = x + (x/2); + m_fontHeight = y; + +#if wxPG_USE_RENDERER_NATIVE + m_iconWidth = wxPG_ICON_WIDTH; +#elif wxPG_ICON_WIDTH + // scale icon + m_iconWidth = (m_fontHeight * wxPG_ICON_WIDTH) / 13; + if ( m_iconWidth < 5 ) m_iconWidth = 5; + else if ( !(m_iconWidth & 0x01) ) m_iconWidth++; // must be odd + +#endif + + m_gutterWidth = m_iconWidth / wxPG_GUTTER_DIV; + if ( m_gutterWidth < wxPG_GUTTER_MIN ) + m_gutterWidth = wxPG_GUTTER_MIN; + + int vdiv = 6; + if ( vspacing <= 1 ) vdiv = 12; + else if ( vspacing >= 3 ) vdiv = 3; + + m_spacingy = m_fontHeight / vdiv; + if ( m_spacingy < wxPG_YSPACING_MIN ) + m_spacingy = wxPG_YSPACING_MIN; + + m_marginWidth = 0; + if ( !(m_windowStyle & wxPG_HIDE_MARGIN) ) + m_marginWidth = m_gutterWidth*2 + m_iconWidth; + + m_captionFont.SetWeight(wxBOLD); + GetTextExtent(wxS("jG"), &x, &y, 0, 0, &m_captionFont); + + m_lineHeight = m_fontHeight+(2*m_spacingy)+1; + m_visPropArray.SetCount((m_height/m_lineHeight)+10); + + // button spacing + m_buttonSpacingY = (m_lineHeight - m_iconHeight) / 2; + if ( m_buttonSpacingY < 0 ) m_buttonSpacingY = 0; + + if ( m_pState ) + m_pState->CalculateFontAndBitmapStuff(vspacing); + + if ( m_iFlags & wxPG_FL_INITIALIZED ) + RecalculateVirtualSize(); + + InvalidateBestSize(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) +{ + RegainColours(); + Refresh(); +} + +// ----------------------------------------------------------------------- + +static wxColour wxPGAdjustColour(const wxColour& src, int ra, + int ga = 1000, int ba = 1000, + bool forceDifferent = false) +{ + if ( ga >= 1000 ) + ga = ra; + if ( ba >= 1000 ) + ba = ra; + + // Recursion guard (allow 2 max) + static int isinside = 0; + isinside++; + wxCHECK_MSG( isinside < 3, + *wxBLACK, + wxT("wxPGAdjustColour should not be recursively called more than once") ); + + wxColour dst; + + int r = src.Red(); + int g = src.Green(); + int b = src.Blue(); + int r2 = r + ra; + if ( r2>255 ) r2 = 255; + else if ( r2<0) r2 = 0; + int g2 = g + ga; + if ( g2>255 ) g2 = 255; + else if ( g2<0) g2 = 0; + int b2 = b + ba; + if ( b2>255 ) b2 = 255; + else if ( b2<0) b2 = 0; + + // Make sure they are somewhat different + if ( forceDifferent && (abs((r+g+b)-(r2+g2+b2)) < abs(ra/2)) ) + dst = wxPGAdjustColour(src,-(ra*2)); + else + dst = wxColour(r2,g2,b2); + + // Recursion guard (allow 2 max) + isinside--; + + return dst; +} + + +static int wxPGGetColAvg( const wxColour& col ) +{ + return (col.Red() + col.Green() + col.Blue()) / 3; +} + + +void wxPropertyGrid::RegainColours() +{ + wxColour def_bgcol = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ); + + if ( !(m_coloursCustomized & 0x0002) ) + { + wxColour col = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ); + + // Make sure colour is dark enough + #ifdef __WXGTK__ + int colDec = wxPGGetColAvg(col) - 230; + #else + int colDec = wxPGGetColAvg(col) - 200; + #endif + if ( colDec > 0 ) + m_colCapBack = wxPGAdjustColour(col,-colDec); + else + m_colCapBack = col; + } + + if ( !(m_coloursCustomized & 0x0001) ) + m_colMargin = m_colCapBack; + + if ( !(m_coloursCustomized & 0x0004) ) + { + #ifdef __WXGTK__ + int colDec = -90; + #else + int colDec = -72; + #endif + wxColour capForeCol = wxPGAdjustColour(m_colCapBack,colDec,5000,5000,true); + m_colCapFore = capForeCol; + + // Set the cached colour as well. + ((wxPGColour*)m_arrFgCols.Item(1))->SetColour2(capForeCol); + } + + if ( !(m_coloursCustomized & 0x0008) ) + { + wxColour bgCol = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ); + m_colPropBack = bgCol; + + // Set the cached brush as well. + ((wxPGBrush*)m_arrBgBrushes.Item(0))->SetColour2(bgCol); + } + + if ( !(m_coloursCustomized & 0x0010) ) + { + wxColour fgCol = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT ); + m_colPropFore = fgCol; + + // Set the cached colour as well. + ((wxPGColour*)m_arrFgCols.Item(0))->SetColour2(fgCol); + } + + if ( !(m_coloursCustomized & 0x0020) ) + m_colSelBack = wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHT ); + + if ( !(m_coloursCustomized & 0x0040) ) + m_colSelFore = wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHTTEXT ); + + if ( !(m_coloursCustomized & 0x0080) ) + m_colLine = m_colCapBack; + + if ( !(m_coloursCustomized & 0x0100) ) + m_colDisPropFore = m_colCapFore; + + m_colEmptySpace = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::ResetColours() +{ + m_coloursCustomized = 0; + + RegainColours(); + + Refresh(); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::SetFont( const wxFont& font ) +{ + // Must disable active editor. + if ( m_selected ) + { + bool selRes = ClearSelection(); + wxPG_CHECK_MSG_DBG( selRes, + false, + wxT("failed to deselect a property (editor probably had invalid value)") ); + } + + // TODO: Following code is disabled with wxMac because + // it is reported to fail. I (JMS) cannot debug it + // personally right now. +#if !defined(__WXMAC__) + bool res = wxScrolledWindow::SetFont( font ); + if ( res ) + { + CalculateFontAndBitmapStuff( m_vspacing ); + + if ( m_pState ) + m_pState->CalculateFontAndBitmapStuff(m_vspacing); + + Refresh(); + } + + return res; +#else + // ** wxMAC Only ** + // TODO: Remove after SetFont crash fixed. + if ( m_iFlags & wxPG_FL_INITIALIZED ) + { + wxLogDebug(wxT("WARNING: propGrid.cpp: wxPropertyGrid::SetFont has been disabled on wxMac since there has been crash reported in it. If you are willing to debug the cause, replace line '#if !defined(__WXMAC__)' with line '#if 1' in wxPropertyGrid::SetFont.")); + } + return false; +#endif +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetLineColour( const wxColour& col ) +{ + m_colLine = col; + m_coloursCustomized |= 0x80; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetMarginColour( const wxColour& col ) +{ + m_colMargin = col; + m_coloursCustomized |= 0x01; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetCellBackgroundColour( const wxColour& col ) +{ + m_colPropBack = col; + m_coloursCustomized |= 0x08; + + // Set the cached brush as well. + ((wxPGBrush*)m_arrBgBrushes.Item(0))->SetColour2(col); + + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetCellTextColour( const wxColour& col ) +{ + m_colPropFore = col; + m_coloursCustomized |= 0x10; + + // Set the cached colour as well. + ((wxPGColour*)m_arrFgCols.Item(0))->SetColour2(col); + + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetEmptySpaceColour( const wxColour& col ) +{ + m_colEmptySpace = col; + + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetCellDisabledTextColour( const wxColour& col ) +{ + m_colDisPropFore = col; + m_coloursCustomized |= 0x100; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetSelectionBackgroundColour( const wxColour& col ) +{ + m_colSelBack = col; + m_coloursCustomized |= 0x20; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetSelectionTextColour( const wxColour& col ) +{ + m_colSelFore = col; + m_coloursCustomized |= 0x40; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetCaptionBackgroundColour( const wxColour& col ) +{ + m_colCapBack = col; + m_coloursCustomized |= 0x02; + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetCaptionTextColour( const wxColour& col ) +{ + m_colCapFore = col; + m_coloursCustomized |= 0x04; + + // Set the cached colour as well. + ((wxPGColour*)m_arrFgCols.Item(1))->SetColour2(col); + + Refresh(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetBackgroundColourIndex( wxPGProperty* p, int index ) +{ + unsigned char ind = index; + + p->m_bgColIndex = ind; + + unsigned int i; + for ( i=0; i<p->GetChildCount(); i++ ) + SetBackgroundColourIndex(p->Item(i),index); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& colour ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + size_t i; + int colInd = -1; + + long colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); + + // As it is most likely that the previous colour is used, start comparison + // from the end. + for ( i=(m_arrBgBrushes.size()-1); i>0; i-- ) + { + if ( ((wxPGBrush*)m_arrBgBrushes.Item(i))->GetColourAsLong() == colAsLong ) + { + colInd = i; + break; + } + } + + if ( colInd < 0 ) + { + colInd = m_arrBgBrushes.size(); + wxCHECK_RET( colInd < 256, wxT("wxPropertyGrid: Warning - Only 255 different property background colours allowed.") ); + m_arrBgBrushes.Add( (void*)new wxPGBrush(colour) ); + } + + // Set indexes + SetBackgroundColourIndex(p,colInd); + + // If this was on a visible grid, then draw it. + DrawItemAndChildren(p); +} + +// ----------------------------------------------------------------------- + +wxColour wxPropertyGrid::GetPropertyBackgroundColour( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxColour()) + + return ((wxPGBrush*)m_arrBgBrushes.Item(p->m_bgColIndex))->GetColour(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetTextColourIndex( wxPGProperty* p, int index, int flags ) +{ + unsigned char ind = index; + + p->m_fgColIndex = ind; + + if ( p->GetChildCount() && (flags & wxPG_RECURSE) ) + { + unsigned int i; + for ( i=0; i<p->GetChildCount(); i++ ) + SetTextColourIndex( p->Item(i), index, flags ); + } +} + +// ----------------------------------------------------------------------- + +int wxPropertyGrid::CacheColour( const wxColour& colour ) +{ + unsigned int i; + int colInd = -1; + + long colAsLong = wxPG_COLOUR(colour.Red(),colour.Green(),colour.Blue()); + + // As it is most likely that the previous colour is used, start comparison + // from the end. + for ( i=(m_arrFgCols.size()-1); i>0; i-- ) + { + if ( ((wxPGColour*)m_arrFgCols.Item(i))->GetColourAsLong() == colAsLong ) + { + colInd = i; + break; + } + } + + if ( colInd < 0 ) + { + colInd = m_arrFgCols.size(); + wxCHECK_MSG( colInd < 256, 0, wxT("wxPropertyGrid: Warning - Only 255 different property foreground colours allowed.") ); + m_arrFgCols.Add( (void*)new wxPGColour(colour) ); + } + + return colInd; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetPropertyTextColour( wxPGPropArg id, const wxColour& colour, + bool recursively ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + if ( p->IsCategory() ) + { + wxPropertyCategory* cat = (wxPropertyCategory*) p; + cat->SetTextColIndex(CacheColour(colour)); + } + + // Set indexes + int flags = 0; + if ( recursively ) + flags |= wxPG_RECURSE; + SetTextColourIndex(p, CacheColour(colour), flags); + + DrawItemAndChildren(p); +} + +// ----------------------------------------------------------------------- + +wxColour wxPropertyGrid::GetPropertyTextColour( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxColour()) + + return wxColour(*((wxPGColour*)m_arrFgCols.Item(p->m_fgColIndex))); +} + +void wxPropertyGrid::SetPropertyColoursToDefault( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + SetBackgroundColourIndex( p, 0 ); + SetTextColourIndex( p, 0, wxPG_RECURSE ); + + if ( p->IsCategory() ) + { + wxPropertyCategory* cat = (wxPropertyCategory*) p; + cat->SetTextColIndex(1); + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid property adding and removal +// ----------------------------------------------------------------------- + +void wxPropertyGrid::PrepareAfterItemsAdded() +{ + if ( !m_pState || !m_pState->m_itemsAdded ) return; + + m_pState->m_itemsAdded = 0; + + if ( m_windowStyle & wxPG_AUTO_SORT ) + Sort(); + + RecalculateVirtualSize(); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid property value setting and getting +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DoSetPropertyValueUnspecified( wxPGProperty* p ) +{ + m_pState->DoSetPropertyValueUnspecified(p); + DrawItemAndChildren(p); + + wxPGProperty* parent = p->GetParent(); + while ( (parent->GetFlags() & wxPG_PROP_PARENTAL_FLAGS) == wxPG_PROP_MISC_PARENT ) + { + DrawItem(parent); + parent = parent->GetParent(); + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid property operations +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DoSetPropertyName( wxPGProperty* p, const wxString& newname ) +{ + wxCHECK_RET( p, wxT("invalid property id") ); + + if ( p->GetBaseName().Len() ) m_pState->m_dictName.erase( p->GetBaseName() ); + if ( newname.Len() ) m_pState->m_dictName[newname] = (void*) p; + + p->DoSetName(newname); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::EnsureVisible( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + Update(); + + bool changed = false; + + // Is it inside collapsed section? + if ( !p->IsVisible() ) + { + // expand parents + wxPGProperty* parent = p->GetParent(); + wxPGProperty* grandparent = parent->GetParent(); + + if ( grandparent && grandparent != m_pState->m_properties ) + Expand( grandparent ); + + Expand( parent ); + changed = true; + } + + // Need to scroll? + int vx, vy; + GetViewStart(&vx,&vy); + vy*=wxPG_PIXELS_PER_UNIT; + + int y = p->GetY(); + + if ( y < vy ) + { + Scroll(vx, y/wxPG_PIXELS_PER_UNIT ); + m_iFlags |= wxPG_FL_SCROLLED; + changed = true; + } + else if ( (y+m_lineHeight) > (vy+m_height) ) + { + Scroll(vx, (y-m_height+(m_lineHeight*2))/wxPG_PIXELS_PER_UNIT ); + m_iFlags |= wxPG_FL_SCROLLED; + changed = true; + } + + if ( changed ) + DrawItems( p, p ); + + return changed; +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid helper methods called by properties +// ----------------------------------------------------------------------- + +// Control font changer helper. +void wxPropertyGrid::SetCurControlBoldFont() +{ + wxASSERT( m_wndEditor ); + m_wndEditor->SetFont( m_captionFont ); +} + +// ----------------------------------------------------------------------- + +wxPoint wxPropertyGrid::GetGoodEditorDialogPosition( wxPGProperty* p, + const wxSize& sz ) +{ +#if wxPG_SMALL_SCREEN + // On small-screen devices, always show dialogs with default position and size. + return wxDefaultPosition; +#else + int splitterX = GetSplitterPosition(); + int x = splitterX; + int y = p->GetY(); + + wxCHECK_MSG( y >= 0, wxPoint(-1,-1), wxT("invalid y?") ); + + ImprovedClientToScreen( &x, &y ); + + int sw = wxSystemSettings::GetMetric( ::wxSYS_SCREEN_X ); + int sh = wxSystemSettings::GetMetric( ::wxSYS_SCREEN_Y ); + + int new_x; + int new_y; + + if ( x > (sw/2) ) + // left + new_x = x + (m_width-splitterX) - sz.x; + else + // right + new_x = x; + + if ( y > (sh/2) ) + // above + new_y = y - sz.y; + else + // below + new_y = y + m_lineHeight; + + return wxPoint(new_x,new_y); +#endif +} + +// ----------------------------------------------------------------------- + +wxString& wxPropertyGrid::ExpandEscapeSequences( wxString& dst_str, wxString& src_str ) +{ + if ( src_str.length() == 0 ) + { + dst_str = src_str; + return src_str; + } + + bool prev_is_slash = false; + + wxString::const_iterator i = src_str.begin(); + + dst_str.clear(); + + for ( ; i != src_str.end(); i++ ) + { + wxUniChar a = *i; + + if ( a != wxS('\\') ) + { + if ( !prev_is_slash ) + { + dst_str << a; + } + else + { + if ( a == wxS('n') ) + { + #ifdef __WXMSW__ + dst_str << wxS('\n'); + #else + dst_str << wxS('\n'); + #endif + } + else if ( a == wxS('t') ) + dst_str << wxS('\t'); + else + dst_str << a; + } + prev_is_slash = false; + } + else + { + if ( prev_is_slash ) + { + dst_str << wxS('\\'); + prev_is_slash = false; + } + else + { + prev_is_slash = true; + } + } + } + return dst_str; +} + +// ----------------------------------------------------------------------- + +wxString& wxPropertyGrid::CreateEscapeSequences( wxString& dst_str, wxString& src_str ) +{ + if ( src_str.length() == 0 ) + { + dst_str = src_str; + return src_str; + } + + wxString::const_iterator i = src_str.begin(); + wxUniChar prev_a = wxS('\0'); + + dst_str.clear(); + + for ( ; i != src_str.end(); i++ ) + { + wxChar a = *i; + + if ( a >= wxS(' ') ) + { + // This surely is not something that requires an escape sequence. + dst_str << a; + } + else + { + // This might need... + if ( a == wxS('\r') ) + { + // DOS style line end. + // Already taken care below + } + else if ( a == wxS('\n') ) + // UNIX style line end. + dst_str << wxS("\\n"); + else if ( a == wxS('\t') ) + // Tab. + dst_str << wxS('\t'); + else + { + //wxLogDebug(wxT("WARNING: Could not create escape sequence for character #%i"),(int)a); + dst_str << a; + } + } + + prev_a = a; + } + return dst_str; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGrid::DoGetItemAtY( int y ) const +{ + // Outside? + if ( y < 0 ) + return (wxPGProperty*) NULL; + + unsigned int a = 0; + return m_pState->m_properties->GetItemAtY(y, m_lineHeight, &a); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid graphics related methods +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnPaint( wxPaintEvent& WXUNUSED(event) ) +{ + wxPaintDC dc(this); + + // Update everything inside the box + wxRect r = GetUpdateRegion().GetBox(); + + dc.SetPen(m_colEmptySpace); + dc.SetBrush(m_colEmptySpace); + dc.DrawRectangle(r); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DrawExpanderButton( wxDC& dc, const wxRect& rect, + wxPGProperty* property ) const +{ + // Prepare rectangle to be used + wxRect r(rect); + r.x += m_gutterWidth; r.y += m_buttonSpacingY; + r.width = m_iconWidth; r.height = m_iconHeight; + +#if (wxPG_USE_RENDERER_NATIVE) + // +#elif wxPG_ICON_WIDTH + // Drawing expand/collapse button manually + dc.SetPen(m_colPropFore); + if ( property->IsCategory() ) + dc.SetBrush(*wxTRANSPARENT_BRUSH); + else + dc.SetBrush(m_colPropBack); + + dc.DrawRectangle( r ); + int _y = r.y+(m_iconWidth/2); + dc.DrawLine(r.x+2,_y,r.x+m_iconWidth-2,_y); +#else + wxBitmap* bmp; +#endif + + if ( property->IsExpanded() ) + { + // wxRenderer functions are non-mutating in nature, so it + // should be safe to cast "const wxPropertyGrid*" to "wxWindow*". + // Hopefully this does not cause problems. + #if (wxPG_USE_RENDERER_NATIVE) + wxRendererNative::Get().DrawTreeItemButton( + (wxWindow*)this, + dc, + r, + wxCONTROL_EXPANDED + ); + #elif wxPG_ICON_WIDTH + // + #else + bmp = m_collbmp; + #endif + + } + else + { + #if (wxPG_USE_RENDERER_NATIVE) + wxRendererNative::Get().DrawTreeItemButton( + (wxWindow*)this, + dc, + r, + 0 + ); + #elif wxPG_ICON_WIDTH + int _x = r.x+(m_iconWidth/2); + dc.DrawLine(_x,r.y+2,_x,r.y+m_iconWidth-2); + #else + bmp = m_expandbmp; + #endif + } + +#if (wxPG_USE_RENDERER_NATIVE) + // +#elif wxPG_ICON_WIDTH + // +#else + dc.DrawBitmap( *bmp, r.x, r.y, true ); +#endif +} + +// ----------------------------------------------------------------------- + +// +// This is the one called by OnPaint event handler and others. +// topy and bottomy are already unscrolled (ie. physical) +// +void wxPropertyGrid::DrawItems( wxDC& dc, + unsigned int topy, + unsigned int bottomy, + const wxRect* clipRect ) +{ + if ( m_frozen || m_height < 1 || bottomy < topy || !m_pState ) return; + + m_pState->EnsureVirtualHeight(); + + wxRect tempClipRect; + if ( !clipRect ) + { + tempClipRect = wxRect(0,topy,m_pState->m_width,bottomy); + clipRect = &tempClipRect; + } + + // items added check + if ( m_pState->m_itemsAdded ) PrepareAfterItemsAdded(); + + int paintFinishY = 0; + + if ( m_pState->m_properties->GetChildCount() > 0 ) + { + wxDC* dcPtr = &dc; + bool isBuffered = false; + + #if wxPG_DOUBLE_BUFFER + wxMemoryDC* bufferDC = NULL; + + if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) ) + { + if ( !m_doubleBuffer ) + { + paintFinishY = clipRect->y; + dcPtr = NULL; + } + else + { + bufferDC = new wxMemoryDC(); + + // If nothing was changed, then just copy from double-buffer + bufferDC->SelectObject( *m_doubleBuffer ); + dcPtr = bufferDC; + + isBuffered = true; + } + } + #endif + + if ( dcPtr ) + { + dc.SetClippingRegion( *clipRect ); + paintFinishY = DoDrawItems( *dcPtr, NULL, NULL, clipRect, isBuffered ); + } + + #if wxPG_DOUBLE_BUFFER + if ( bufferDC ) + { + dc.Blit( clipRect->x, clipRect->y, clipRect->width, clipRect->height, + bufferDC, 0, 0, wxCOPY ); + dc.DestroyClippingRegion(); // Is this really necessary? + delete bufferDC; + } + #endif + } + + // Clear area beyond bottomY? + if ( paintFinishY < (clipRect->y+clipRect->height) ) + { + dc.SetPen(m_colEmptySpace); + dc.SetBrush(m_colEmptySpace); + dc.DrawRectangle( 0, paintFinishY, m_width, (clipRect->y+clipRect->height) ); + } +} + +// ----------------------------------------------------------------------- + +int wxPropertyGrid::DoDrawItems( wxDC& dc, + const wxPGProperty* firstItem, + const wxPGProperty* lastItem, + const wxRect* clipRect, + bool isBuffered ) const +{ + // TODO: This should somehow be eliminated. + wxRect tempClipRect; + if ( !clipRect ) + { + wxASSERT(firstItem); + wxASSERT(lastItem); + tempClipRect = GetPropertyRect(firstItem, lastItem); + clipRect = &tempClipRect; + } + + if ( !firstItem ) + firstItem = DoGetItemAtY(clipRect->y); + + if ( !lastItem ) + { + lastItem = DoGetItemAtY(clipRect->y+clipRect->height-1); + if ( !lastItem ) + lastItem = GetLastItem( wxPG_ITERATE_VISIBLE ); + } + + if ( m_frozen || m_height < 1 || firstItem == NULL ) + return clipRect->y; + + wxCHECK_MSG( !m_pState->m_itemsAdded, clipRect->y, wxT("no items added") ); + wxASSERT( m_pState->m_properties->GetChildCount() ); + + int lh = m_lineHeight; + + int firstItemTopY; + int lastItemBottomY; + + firstItemTopY = clipRect->y; + lastItemBottomY = clipRect->y + clipRect->height; + + // Align y coordinates to item boundaries + firstItemTopY -= firstItemTopY % lh; + lastItemBottomY += lh - (lastItemBottomY % lh); + lastItemBottomY -= 1; + + // Entire range outside scrolled, visible area? + if ( firstItemTopY >= (int)m_pState->GetVirtualHeight() || lastItemBottomY <= 0 ) + return clipRect->y; + + wxCHECK_MSG( firstItemTopY < lastItemBottomY, clipRect->y, wxT("invalid y values") ); + + + /* + wxLogDebug(wxT(" -> DoDrawItems ( \"%s\" -> \"%s\", height=%i (ch=%i), clipRect = 0x%lX )"), + firstItem->GetLabel().c_str(), + lastItem->GetLabel().c_str(), + (int)(lastItemBottomY - firstItemTopY), + (int)m_height, + (unsigned long)clipRect ); + */ + + wxRect r; + + long windowStyle = m_windowStyle; + + int xRelMod = 0; + int yRelMod = 0; + + // + // With wxPG_DOUBLE_BUFFER, do double buffering + // - buffer's y = 0, so align cliprect and coordinates to that + // +#if wxPG_DOUBLE_BUFFER + + wxRect cr2; + + if ( isBuffered ) + { + xRelMod = clipRect->x; + yRelMod = clipRect->y; + + // + // clipRect conversion + if ( clipRect ) + { + cr2 = *clipRect; + cr2.x -= xRelMod; + cr2.y -= yRelMod; + clipRect = &cr2; + } + firstItemTopY -= yRelMod; + lastItemBottomY -= yRelMod; + } +#else + wxUnusedVar(isBuffered); +#endif + + int x = m_marginWidth - xRelMod; + + const wxFont& normalfont = m_font; + + bool reallyFocused = (m_iFlags & wxPG_FL_FOCUSED) ? true : false; + + bool isEnabled = IsEnabled(); + + // + // Prepare some pens and brushes that are often changed to. + // + + wxBrush marginBrush(m_colMargin); + wxPen marginPen(m_colMargin); + wxBrush capbgbrush(m_colCapBack,wxSOLID); + wxPen linepen(m_colLine,1,wxSOLID); + + // pen that has same colour as text + wxPen outlinepen(m_colPropFore,1,wxSOLID); + + // + // Clear margin with background colour + // + dc.SetBrush( marginBrush ); + if ( !(windowStyle & wxPG_HIDE_MARGIN) ) + { + dc.SetPen( *wxTRANSPARENT_PEN ); + dc.DrawRectangle(-1-xRelMod,firstItemTopY-1,x+2,lastItemBottomY-firstItemTopY+2); + } + + const wxPGProperty* selected = m_selected; + const wxPropertyGridPageState* state = m_pState; + +#if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + bool wasSelectedPainted = false; +#endif + + // TODO: Only render columns that are within clipping region. + + dc.SetFont(normalfont); + + wxPropertyGridConstIterator it( state, wxPG_ITERATE_VISIBLE, firstItem ); + int endScanBottomY = lastItemBottomY + lh; + int y = firstItemTopY; + unsigned int arrInd = 0; + + for ( ; !it.AtEnd(); it.Next() ) + { + const wxPGProperty* p = *it; + + if ( !p->HasFlag(wxPG_PROP_HIDDEN) ) + { + m_visPropArray[arrInd] = (wxPGProperty*)p; + arrInd++; + + if ( y > endScanBottomY ) + break; + + y += lh; + } + } + + m_visPropArray[arrInd] = NULL; + + int gridWidth = state->m_width; + + y = firstItemTopY; + for ( arrInd=0; + m_visPropArray[arrInd] != NULL && y <= lastItemBottomY; + arrInd++ ) + { + wxPGProperty* p =(wxPGProperty*) m_visPropArray[arrInd]; + wxPGProperty* nextP = (wxPGProperty*) m_visPropArray[arrInd+1]; + + int rowHeight = m_fontHeight+(m_spacingy*2)+1; + int textMarginHere = x; + int renderFlags = wxPGCellRenderer::Control; + + int greyDepth = m_marginWidth; + if ( !(windowStyle & wxPG_HIDE_CATEGORIES) ) + greyDepth = (((int)p->m_depthBgCol)-1) * m_subgroup_extramargin + m_marginWidth; + + int greyDepthX = greyDepth - xRelMod; + + // Use basic depth if in non-categoric mode and parent is base array. + if ( !(windowStyle & wxPG_HIDE_CATEGORIES) || p->GetParent() != m_pState->m_properties ) + { + textMarginHere += ((unsigned int)((p->m_depth-1)*m_subgroup_extramargin)); + } + + // Paint margin area + dc.SetBrush(marginBrush); + dc.SetPen(marginPen); + dc.DrawRectangle( -xRelMod, y, greyDepth, lh ); + + dc.SetPen( linepen ); + + int y2 = y + lh; + + // Margin Edge + dc.DrawLine( greyDepthX, y, greyDepthX, y2 ); + + // Splitters + unsigned int si; + int sx = x; + + for ( si=0; si<state->m_colWidths.size(); si++ ) + { + sx += state->m_colWidths[si]; + dc.DrawLine( sx, y, sx, y2 ); + } + + // Horizontal Line, below + // (not if both this and next is category caption) + if ( p->IsCategory() && + nextP && nextP->IsCategory() ) + dc.SetPen(m_colCapBack); + + dc.DrawLine( greyDepthX, y2-1, gridWidth-xRelMod, y2-1 ); + + if ( p == selected ) + { + renderFlags |= wxPGCellRenderer::Selected; +#if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + wasSelectedPainted = true; +#endif + } + + wxColour rowBgCol; + wxColour rowFgCol; + wxBrush rowBgBrush; + + if ( p->IsCategory() ) + { + if ( p->m_fgColIndex == 0 ) + rowFgCol = m_colCapFore; + else + rowFgCol = *(wxPGColour*)m_arrFgCols[p->m_fgColIndex]; + rowBgBrush = wxBrush(m_colCapBack); + } + else if ( p != selected ) + { + // Disabled may get different colour. + if ( !p->IsEnabled() ) + rowFgCol = m_colDisPropFore; + else + rowFgCol = *(wxPGColour*)m_arrFgCols[p->m_fgColIndex]; + + rowBgBrush = *(wxPGBrush*)m_arrBgBrushes[p->m_bgColIndex]; + } + else + { + // Selected gets different colour. + if ( reallyFocused ) + { + rowFgCol = m_colSelFore; + rowBgBrush = wxBrush(m_colSelBack); + } + else if ( isEnabled ) + { + rowFgCol = *(wxPGColour*)m_arrFgCols[p->m_fgColIndex]; + rowBgBrush = marginBrush; + } + else + { + rowFgCol = m_colDisPropFore; + rowBgBrush = wxBrush(m_colSelBack); + } + } + + bool fontChanged = false; + + wxRect butRect( ((p->m_depth - 1) * m_subgroup_extramargin) - xRelMod, + y, + m_marginWidth, + lh ); + + if ( p->IsCategory() ) + { + // Captions are all cells merged as one + dc.SetFont(m_captionFont); + fontChanged = true; + wxRect cellRect(greyDepthX, y, gridWidth - greyDepth + 2, rowHeight-1 ); + + dc.SetBrush(rowBgBrush); + dc.SetPen(rowBgBrush.GetColour()); + dc.SetTextForeground(rowFgCol); + + dc.DrawRectangle(cellRect); + + // Foreground + wxPGCellRenderer* renderer = p->GetCellRenderer(0); + renderer->Render( dc, cellRect, this, p, 0, -1, renderFlags ); + + // Tree Item Button + if ( !HasFlag(wxPG_HIDE_MARGIN) && p->HasVisibleChildren() ) + DrawExpanderButton( dc, butRect, p ); + } + else + { + if ( p->m_flags & wxPG_PROP_MODIFIED && (windowStyle & wxPG_BOLD_MODIFIED) ) + { + dc.SetFont(m_captionFont); + fontChanged = true; + } + + unsigned int ci; + int cellX = x + 1; + int nextCellWidth = state->m_colWidths[0]; + wxRect cellRect(greyDepthX+1, y, 0, rowHeight-1); + int textXAdd = textMarginHere - greyDepthX; + + for ( ci=0; ci<state->m_colWidths.size(); ci++ ) + { + cellRect.width = nextCellWidth - 1; + + bool ctrlCell = false; + + // Background + if ( p == selected && m_wndEditor && ci == 1 ) + { + wxColour editorBgCol = GetEditorControl()->GetBackgroundColour(); + dc.SetBrush(editorBgCol); + dc.SetPen(editorBgCol); + dc.SetTextForeground(m_colPropFore); + + if ( m_dragStatus == 0 && !(m_iFlags & wxPG_FL_CUR_USES_CUSTOM_IMAGE) ) + ctrlCell = true; + } + else + { + dc.SetBrush(rowBgBrush); + dc.SetPen(rowBgBrush.GetColour()); + dc.SetTextForeground(rowFgCol); + } + + dc.DrawRectangle(cellRect); + + // Tree Item Button + if ( ci == 0 && !HasFlag(wxPG_HIDE_MARGIN) && p->HasVisibleChildren() ) + DrawExpanderButton( dc, butRect, p ); + + dc.SetClippingRegion(cellRect); + + cellRect.x += textXAdd; + cellRect.width -= textXAdd; + + // Foreground + if ( !ctrlCell ) + { + wxPGCellRenderer* renderer; + int cmnVal = p->GetCommonValue(); + if ( cmnVal == -1 || ci != 1 ) + { + renderer = p->GetCellRenderer(ci); + renderer->Render( dc, cellRect, this, p, ci, -1, renderFlags ); + } + else + { + renderer = GetCommonValue(cmnVal)->GetRenderer(); + renderer->Render( dc, cellRect, this, p, ci, -1, renderFlags ); + } + } + + cellX += state->m_colWidths[ci]; + if ( ci < (state->m_colWidths.size()-1) ) + nextCellWidth = state->m_colWidths[ci+1]; + cellRect.x = cellX; + dc.DestroyClippingRegion(); // Is this really necessary? + textXAdd = 0; + } + } + + if ( fontChanged ) + dc.SetFont(normalfont); + + y += rowHeight; + } + + // Refresh editor controls (seems not needed on msw) + // NOTE: This code is mandatory for GTK! +#if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + if ( wasSelectedPainted ) + { + if ( m_wndEditor ) + m_wndEditor->Refresh(); + if ( m_wndEditor2 ) + m_wndEditor2->Refresh(); + } +#endif + + return y + yRelMod; +} + +// ----------------------------------------------------------------------- + +wxRect wxPropertyGrid::GetPropertyRect( const wxPGProperty* p1, const wxPGProperty* p2 ) const +{ + wxRect r; + + if ( m_width < 10 || m_height < 10 || + !m_pState->m_properties->GetChildCount() || + p1 == (wxPGProperty*) NULL ) + return wxRect(0,0,0,0); + + int vy = 0; + + // + // Return rect which encloses the given property range + + int visTop = p1->GetY(); + int visBottom; + if ( p2 ) + visBottom = p2->GetY() + m_lineHeight; + else + visBottom = m_height + visTop; + + // If seleced property is inside the range, we'll extend the range to include + // control's size. + wxPGProperty* selected = m_selected; + if ( selected ) + { + int selectedY = selected->GetY(); + if ( selectedY >= visTop && selectedY < visBottom ) + { + wxWindow* editor = GetEditorControl(); + if ( editor ) + { + int visBottom2 = selectedY + editor->GetSize().y; + if ( visBottom2 > visBottom ) + visBottom = visBottom2; + } + } + } + + return wxRect(0,visTop-vy,m_pState->m_width,visBottom-visTop); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DrawItems( const wxPGProperty* p1, const wxPGProperty* p2 ) +{ + if ( m_frozen ) + return; + + if ( m_pState->m_itemsAdded ) + PrepareAfterItemsAdded(); + + wxRect r = GetPropertyRect(p1, p2); + if ( r.width > 0 ) + { + m_canvas->RefreshRect(r); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::RefreshProperty( wxPGProperty* p ) +{ + if ( p == m_selected ) + DoSelectProperty(p, wxPG_SEL_FORCE); + + DrawItemAndChildren(p); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DrawItemAndValueRelated( wxPGProperty* p ) +{ + if ( m_frozen ) + return; + + // Draw item, children, and parent too, if it is not category + wxPGProperty* parent = p->GetParent(); + + while ( parent && + !parent->IsCategory() && + parent->GetParent() ) + { + DrawItem(parent); + parent = parent->GetParent(); + } + + DrawItemAndChildren(p); +} + +void wxPropertyGrid::DrawItemAndChildren( wxPGProperty* p ) +{ + wxCHECK_RET( p, wxT("invalid property id") ); + + // Do not draw if in non-visible page + if ( p->GetParentState() != m_pState ) + return; + + // do not draw a single item if multiple pending + if ( m_pState->m_itemsAdded || m_frozen ) + return; + + wxWindow* wndPrimary = GetEditorControl(); + + // Update child control. + if ( m_selected && m_selected->GetParent() == p ) + m_selected->UpdateControl(wndPrimary); + + const wxPGProperty* lastDrawn = p->GetLastVisibleSubItem(); + + DrawItems(p, lastDrawn); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::Refresh( bool WXUNUSED(eraseBackground), + const wxRect *rect ) +{ + PrepareAfterItemsAdded(); + + wxWindow::Refresh(false); + if ( m_canvas ) + // TODO: Coordinate translation + m_canvas->Refresh(false, rect); + +#if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + // I think this really helps only GTK+1.2 + if ( m_wndEditor ) m_wndEditor->Refresh(); + if ( m_wndEditor2 ) m_wndEditor2->Refresh(); +#endif +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid global operations +// ----------------------------------------------------------------------- + +void wxPropertyGrid::Clear() +{ + if ( m_selected ) + { + bool selRes = DoSelectProperty(NULL, wxPG_SEL_DELETING); // This must be before state clear + wxPG_CHECK_RET_DBG( selRes, + wxT("failed to deselect a property (editor probably had invalid value)") ); + } + + m_pState->DoClear(); + + m_propHover = NULL; + + m_prevVY = 0; + + RecalculateVirtualSize(); + + // Need to clear some area at the end + if ( !m_frozen ) + RefreshRect(wxRect(0, 0, m_width, m_height)); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::EnableCategories( bool enable ) +{ + if ( !ClearSelection() ) + return false; + + if ( enable ) + { + // + // Enable categories + // + + m_windowStyle &= ~(wxPG_HIDE_CATEGORIES); + } + else + { + // + // Disable categories + // + m_windowStyle |= wxPG_HIDE_CATEGORIES; + } + + if ( !m_pState->EnableCategories(enable) ) + return false; + + if ( !m_frozen ) + { + if ( m_windowStyle & wxPG_AUTO_SORT ) + { + m_pState->m_itemsAdded = 1; // force + PrepareAfterItemsAdded(); + } + } + else + m_pState->m_itemsAdded = 1; + + // No need for RecalculateVirtualSize() here - it is already called in + // wxPropertyGridPageState method above. + + Refresh(); + + return true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SwitchState( wxPropertyGridPageState* pNewState ) +{ + wxASSERT( pNewState ); + wxASSERT( pNewState->GetGrid() ); + + if ( pNewState == m_pState ) + return; + + wxPGProperty* oldSelection = m_selected; + + // Deselect + if ( m_selected ) + { + bool selRes = ClearSelection(); + wxPG_CHECK_RET_DBG( selRes, + wxT("failed to deselect a property (editor probably had invalid value)") ); + } + + m_pState->m_selected = oldSelection; + + bool orig_mode = m_pState->IsInNonCatMode(); + bool new_state_mode = pNewState->IsInNonCatMode(); + + m_pState = pNewState; + + // Validate width + int pgWidth = GetClientSize().x; + if ( HasVirtualWidth() ) + { + int minWidth = pgWidth; + if ( pNewState->m_width < minWidth ) + { + pNewState->m_width = minWidth; + pNewState->CheckColumnWidths(); + } + } + else + { + // + // Just in case, fully re-center splitter + if ( HasFlag( wxPG_SPLITTER_AUTO_CENTER ) ) + pNewState->m_fSplitterX = -1.0; + + pNewState->OnClientWidthChange( pgWidth, pgWidth - pNewState->m_width ); + } + + m_propHover = (wxPGProperty*) NULL; + + // If necessary, convert state to correct mode. + if ( orig_mode != new_state_mode ) + { + // This should refresh as well. + EnableCategories( orig_mode?false:true ); + } + else if ( !m_frozen ) + { + // Refresh, if not frozen. + if ( m_pState->m_itemsAdded ) + PrepareAfterItemsAdded(); + + // Reselect + if ( m_pState->m_selected ) + DoSelectProperty( m_pState->m_selected ); + + RecalculateVirtualSize(0); + Refresh(); + } + else + m_pState->m_itemsAdded = 1; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SortChildren( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + m_pState->SortChildren( p ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::Sort() +{ + bool selRes = ClearSelection(); // This must be before state clear + wxPG_CHECK_RET_DBG( selRes, + wxT("failed to deselect a property (editor probably had invalid value)") ); + + m_pState->Sort(); +} + +// ----------------------------------------------------------------------- + +// Call to SetSplitterPosition will always disable splitter auto-centering +// if parent window is shown. +void wxPropertyGrid::DoSetSplitterPosition_( int newxpos, bool refresh, int splitterIndex, bool allPages ) +{ + if ( ( newxpos < wxPG_DRAG_MARGIN ) ) + return; + + wxPropertyGridPageState* state = m_pState; + + state->DoSetSplitterPosition( newxpos, splitterIndex, allPages ); + + if ( refresh ) + { + if ( m_selected ) + CorrectEditorWidgetSizeX(); + + Refresh(); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::CenterSplitter( bool enableAutoCentering ) +{ + SetSplitterPosition( m_width/2, true ); + if ( enableAutoCentering && ( m_windowStyle & wxPG_SPLITTER_AUTO_CENTER ) ) + m_iFlags &= ~(wxPG_FL_DONT_CENTER_SPLITTER); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid item iteration (GetNextProperty etc.) methods +// ----------------------------------------------------------------------- + +// Returns nearest paint visible property (such that will be painted unless +// window is scrolled or resized). If given property is paint visible, then +// it itself will be returned +wxPGProperty* wxPropertyGrid::GetNearestPaintVisible( wxPGProperty* p ) const +{ + int vx,vy1;// Top left corner of client + GetViewStart(&vx,&vy1); + vy1 *= wxPG_PIXELS_PER_UNIT; + + int vy2 = vy1 + m_height; + int propY = p->GetY2(m_lineHeight); + + if ( (propY + m_lineHeight) < vy1 ) + { + // Too high + return DoGetItemAtY( vy1 ); + } + else if ( propY > vy2 ) + { + // Too low + return DoGetItemAtY( vy2 ); + } + + // Itself paint visible + return p; + +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetButtonShortcut( int keycode, bool ctrlDown, bool altDown ) +{ + if ( keycode ) + { + m_pushButKeyCode = keycode; + m_pushButKeyCodeNeedsCtrl = ctrlDown ? 1 : 0; + m_pushButKeyCodeNeedsAlt = altDown ? 1 : 0; + } + else + { + m_pushButKeyCode = WXK_DOWN; + m_pushButKeyCodeNeedsCtrl = 0; + m_pushButKeyCodeNeedsAlt = 1; + } +} + +// ----------------------------------------------------------------------- +// Methods related to change in value, value modification and sending events +// ----------------------------------------------------------------------- + +// commits any changes in editor of selected property +// return true if validation did not fail +// flags are same as with DoSelectProperty +bool wxPropertyGrid::CommitChangesFromEditor( wxUint32 flags ) +{ + // Committing already? + if ( m_inCommitChangesFromEditor ) + return true; + + // Don't do this if already processing editor event. It might + // induce recursive dialogs and crap like that. + if ( m_iFlags & wxPG_FL_IN_ONCUSTOMEDITOREVENT ) + { + if ( m_inDoPropertyChanged ) + return true; + + return false; + } + + if ( m_wndEditor && + IsEditorsValueModified() && + (m_iFlags & wxPG_FL_INITIALIZED) && + m_selected ) + { + m_inCommitChangesFromEditor = 1; + + wxVariant variant(m_selected->GetValueRef()); + bool valueIsPending = false; + + // JACS - necessary to avoid new focus being found spuriously within OnIdle + // due to another window getting focus + wxWindow* oldFocus = m_curFocused; + + bool validationFailure = false; + bool forceSuccess = (flags & (wxPG_SEL_NOVALIDATE|wxPG_SEL_FORCE)) ? true : false; + + m_chgInfo_changedProperty = NULL; + + // If truly modified, schedule value as pending. + if ( m_selected->GetEditorClass()->GetValueFromControl( variant, m_selected, GetEditorControl() ) ) + { + if ( DoEditorValidate() && + PerformValidation(m_selected, variant) ) + { + valueIsPending = true; + } + else + { + validationFailure = true; + } + } + else + { + EditorsValueWasNotModified(); + } + + bool res = true; + + m_inCommitChangesFromEditor = 0; + + if ( validationFailure && !forceSuccess ) + { + if (oldFocus) + { + oldFocus->SetFocus(); + m_curFocused = oldFocus; + } + + res = OnValidationFailure(m_selected, variant); + + // Now prevent further validation failure messages + if ( res ) + { + EditorsValueWasNotModified(); + OnValidationFailureReset(m_selected); + } + } + else if ( valueIsPending ) + { + DoPropertyChanged( m_selected, flags ); + EditorsValueWasNotModified(); + } + + return res; + } + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::PerformValidation( wxPGProperty* p, wxVariant& pendingValue ) +{ + // + // Runs all validation functionality. + // Returns true if value passes all tests. + // + + m_validationInfo.m_failureBehavior = m_permanentValidationFailureBehavior; + + if ( !wxPGIsVariantType(pendingValue, list) ) + { + if ( !p->ValidateValue(pendingValue, m_validationInfo) ) + return false; + } + + // + // Adapt list to child values, if necessary + wxVariant listValue = pendingValue; + wxVariant* pPendingValue = &pendingValue; + wxVariant* pList = NULL; + + // If parent has wxPG_PROP_AGGREGATE flag, or uses composite + // string value, then we need treat as it was changed instead + // (or, in addition, as is the case with composite string parent). + // This includes creating list variant for child values. + + wxPGProperty* pwc = p->GetParent(); + wxPGProperty* changedProperty = p; + wxPGProperty* baseChangedProperty = changedProperty; + wxVariant bcpPendingList; + + listValue = pendingValue; + listValue.SetName(p->GetLabel()); + + while ( pwc && + (pwc->HasFlag(wxPG_PROP_AGGREGATE) || pwc->HasFlag(wxPG_PROP_COMPOSED_VALUE)) ) + { + wxVariantList tempList; + wxVariant lv(tempList, pwc->GetLabel()); + lv.Append(listValue); + listValue = lv; + pPendingValue = &listValue; + + if ( pwc->HasFlag(wxPG_PROP_AGGREGATE) ) + { + baseChangedProperty = pwc; + bcpPendingList = lv; + } + + changedProperty = pwc; + pwc = pwc->GetParent(); + } + + wxVariant value; + wxPGProperty* evtChangingProperty = changedProperty; + + if ( !wxPGIsVariantType(*pPendingValue, list) ) + { + value = *pPendingValue; + } + else + { + // Convert list to child values + pList = pPendingValue; + changedProperty->AdaptListToValue( *pPendingValue, &value ); + } + + wxVariant evtChangingValue = value; + + // FIXME: After proper ValueToString()s added, remove + // this. It is just a temporary fix, as evt_changing + // will simply not work for wxPG_PROP_COMPOSED_VALUE + // (unless it is selected, and textctrl editor is open). + if ( changedProperty->HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + { + evtChangingProperty = baseChangedProperty; + if ( evtChangingProperty != p ) + { + evtChangingProperty->AdaptListToValue( bcpPendingList, &evtChangingValue ); + } + else + { + evtChangingValue = pendingValue; + } + } + + if ( evtChangingProperty->HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + { + if ( changedProperty == m_selected ) + { + wxASSERT( m_wndEditor->IsKindOf(CLASSINFO(wxTextCtrl)) ); + evtChangingValue = ((wxTextCtrl*)m_wndEditor)->GetValue(); + } + else + { + wxLogDebug(wxT("WARNING: wxEVT_PG_CHANGING is about to happen with old value.")); + } + } + + wxASSERT( m_chgInfo_changedProperty == NULL ); + m_chgInfo_changedProperty = changedProperty; + m_chgInfo_baseChangedProperty = baseChangedProperty; + m_chgInfo_pendingValue = value; + + if ( pList ) + m_chgInfo_valueList = *pList; + else + m_chgInfo_valueList.MakeNull(); + + // If changedProperty is not property which value was edited, + // then call wxPGProperty::ValidateValue() for that as well. + if ( p != changedProperty && !wxPGIsVariantType(value, list) ) + { + if ( !changedProperty->ValidateValue(value, m_validationInfo) ) + return false; + } + + // SendEvent returns true if event was vetoed + if ( SendEvent( wxEVT_PG_CHANGING, evtChangingProperty, &evtChangingValue, 0 ) ) + return false; + + return true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DoShowPropertyError( wxPGProperty* WXUNUSED(property), const wxString& msg ) +{ + if ( !msg.length() ) + return; + +#if wxUSE_STATUSBAR + if ( !wxPGGlobalVars->m_offline ) + { + wxWindow* topWnd = ::wxGetTopLevelParent(this); + if ( topWnd ) + { + wxFrame* pFrame = wxDynamicCast(topWnd, wxFrame); + if ( pFrame ) + { + wxStatusBar* pStatusBar = pFrame->GetStatusBar(); + if ( pStatusBar ) + { + pStatusBar->SetStatusText(msg); + return; + } + } + } + } +#endif + + ::wxMessageBox(msg, _T("Property Error")); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& WXUNUSED(invalidValue) ) +{ + int vfb = m_validationInfo.m_failureBehavior; + + if ( vfb & wxPG_VFB_BEEP ) + ::wxBell(); + + if ( (vfb & wxPG_VFB_MARK_CELL) && + !property->HasFlag(wxPG_PROP_INVALID_VALUE) ) + { + wxASSERT_MSG( !property->GetCell(0) && !property->GetCell(1), + wxT("Currently wxPG_VFB_MARK_CELL only works with properties with standard first two cells") ); + + if ( !property->GetCell(0) && !property->GetCell(1) ) + { + wxColour vfbFg = *wxWHITE; + wxColour vfbBg = *wxRED; + property->SetCell(0, new wxPGCell(property->GetLabel(), wxNullBitmap, vfbFg, vfbBg)); + property->SetCell(1, new wxPGCell(property->GetDisplayedString(), wxNullBitmap, vfbFg, vfbBg)); + + DrawItemAndChildren(property); + + if ( property == m_selected ) + { + SetInternalFlag(wxPG_FL_CELL_OVERRIDES_SEL); + + wxWindow* editor = GetEditorControl(); + if ( editor ) + { + editor->SetForegroundColour(vfbFg); + editor->SetBackgroundColour(vfbBg); + } + } + } + } + + if ( vfb & wxPG_VFB_SHOW_MESSAGE ) + { + wxString msg = m_validationInfo.m_failureMessage; + + if ( !msg.length() ) + msg = _T("You have entered invalid value. Press ESC to cancel editing."); + + DoShowPropertyError(property, msg); + } + + return (vfb & wxPG_VFB_STAY_IN_PROPERTY) ? false : true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property ) +{ + int vfb = m_validationInfo.m_failureBehavior; + + if ( vfb & wxPG_VFB_MARK_CELL ) + { + property->SetCell(0, NULL); + property->SetCell(1, NULL); + + ClearInternalFlag(wxPG_FL_CELL_OVERRIDES_SEL); + + if ( property == m_selected && GetEditorControl() ) + { + // Calling this will recreate the control, thus resetting its colour + RefreshProperty(property); + } + else + { + DrawItemAndChildren(property); + } + } +} + +// ----------------------------------------------------------------------- + +// flags are same as with DoSelectProperty +bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, unsigned int selFlags ) +{ + if ( m_inDoPropertyChanged ) + return true; + + m_pState->m_anyModified = 1; + + m_inDoPropertyChanged = 1; + + // Maybe need to update control + wxASSERT( m_chgInfo_changedProperty != NULL ); + + // These values were calculated in PerformValidation() + wxPGProperty* changedProperty = m_chgInfo_changedProperty; + wxVariant value = m_chgInfo_pendingValue; + + wxPGProperty* topPaintedProperty = changedProperty; + + while ( !topPaintedProperty->IsCategory() && + !topPaintedProperty->IsRoot() ) + { + topPaintedProperty = topPaintedProperty->GetParent(); + } + + changedProperty->SetValue(value, &m_chgInfo_valueList); + + // Set as Modified (not if dragging just began) + if ( !(p->m_flags & wxPG_PROP_MODIFIED) ) + { + p->m_flags |= wxPG_PROP_MODIFIED; + if ( p == m_selected && (m_windowStyle & wxPG_BOLD_MODIFIED) ) + { + if ( m_wndEditor ) + SetCurControlBoldFont(); + } + } + + wxPGProperty* pwc; + + // Propagate updates to parent(s) + pwc = p; + wxPGProperty* prevPwc = NULL; + + while ( prevPwc != topPaintedProperty ) + { + pwc->m_flags |= wxPG_PROP_MODIFIED; + + if ( pwc == m_selected && (m_windowStyle & wxPG_BOLD_MODIFIED) ) + { + if ( m_wndEditor ) + SetCurControlBoldFont(); + } + + prevPwc = pwc; + pwc = pwc->GetParent(); + } + + // Draw the actual property + DrawItemAndChildren( topPaintedProperty ); + + // + // If value was set by wxPGProperty::OnEvent, then update the editor + // control. + if ( selFlags & wxPG_SEL_DIALOGVAL ) + { + if ( m_wndEditor ) + p->GetEditorClass()->UpdateControl(p, m_wndEditor); + } + else + { +#if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + if ( m_wndEditor ) m_wndEditor->Refresh(); + if ( m_wndEditor2 ) m_wndEditor2->Refresh(); +#endif + } + + // Sanity check + wxASSERT( !changedProperty->GetParent()->HasFlag(wxPG_PROP_AGGREGATE) ); + + // If top parent has composite string value, then send to child parents, + // starting from baseChangedProperty. + if ( changedProperty->HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + { + pwc = m_chgInfo_baseChangedProperty; + + while ( pwc != changedProperty ) + { + SendEvent( wxEVT_PG_CHANGED, pwc, NULL, selFlags ); + pwc = pwc->GetParent(); + } + } + + SendEvent( wxEVT_PG_CHANGED, changedProperty, NULL, selFlags ); + + m_inDoPropertyChanged = 0; + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::ChangePropertyValue( wxPGPropArg id, wxVariant newValue ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + m_chgInfo_changedProperty = NULL; + + if ( PerformValidation(p, newValue) ) + { + DoPropertyChanged(p); + return true; + } + else + { + OnValidationFailure(p, newValue); + } + + return false; +} + +// ----------------------------------------------------------------------- + +// Runs wxValidator for the selected property +bool wxPropertyGrid::DoEditorValidate() +{ +#if wxUSE_VALIDATORS + // With traditional validator style, we dont need to more + if ( !(GetExtraStyle() & wxPG_EX_LEGACY_VALIDATORS) ) + return true; + + if ( m_iFlags & wxPG_FL_VALIDATION_FAILED ) + { + return false; + } + + wxWindow* wnd = GetEditorControl(); + + wxValidator* validator = m_selected->GetValidator(); + if ( validator && wnd ) + { + // Use TextCtrl of ODComboBox instead + if ( wnd->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)) ) + { + wnd = ((wxOwnerDrawnComboBox*)wnd)->GetTextCtrl(); + + if ( !wnd ) + return true; + } + + validator->SetWindow(wnd); + + // Instead setting the flag after the failure, we set + // it before checking and then clear afterwards if things + // went fine. This trick is necessary since focus events + // may be triggered while in Validate. + m_iFlags |= wxPG_FL_VALIDATION_FAILED; + if ( !validator->Validate(this) ) + { + // If you dpm't want to display message multiple times per change, + // comment the following line. + m_iFlags &= ~(wxPG_FL_VALIDATION_FAILED); + return false; + } + m_iFlags &= ~(wxPG_FL_VALIDATION_FAILED); + } +#endif + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::ProcessEvent(wxEvent& event) +{ + wxWindow* wnd = (wxWindow*) event.GetEventObject(); + if ( wnd && wnd->IsKindOf(CLASSINFO(wxWindow)) ) + { + wxWindow* parent = wnd->GetParent(); + + if ( parent && + (parent == m_canvas || + parent->GetParent() == m_canvas) ) + { + OnCustomEditorEvent((wxCommandEvent&)event); + return true; + } + } + return wxPanel::ProcessEvent(event); +} + +// ----------------------------------------------------------------------- + +// NB: It may really not be wxCommandEvent - must check if necessary +// (usually not). +void wxPropertyGrid::OnCustomEditorEvent( wxCommandEvent &event ) +{ + wxPGProperty* selected = m_selected; + + // + // Somehow, event is handled after property has been deselected. + // Possibly, but very rare. + if ( !selected ) + return; + + if ( m_iFlags & wxPG_FL_IN_ONCUSTOMEDITOREVENT ) + return; + + wxVariant pendingValue(selected->GetValueRef()); + wxWindow* wnd = GetEditorControl(); + int selFlags = 0; + bool wasUnspecified = selected->IsValueUnspecified(); + int usesAutoUnspecified = selected->UsesAutoUnspecified(); + + bool valueIsPending = false; + + m_chgInfo_changedProperty = NULL; + + m_iFlags &= ~(wxPG_FL_VALIDATION_FAILED|wxPG_FL_VALUE_CHANGE_IN_EVENT); + + // + // Filter out excess wxTextCtrl modified events + if ( event.GetEventType() == wxEVT_COMMAND_TEXT_UPDATED && + wnd && + wnd->IsKindOf(CLASSINFO(wxTextCtrl)) ) + { + wxTextCtrl* tc = (wxTextCtrl*) wnd; + + wxString newTcValue = tc->GetValue(); + if ( m_prevTcValue == newTcValue ) + return; + + m_prevTcValue = newTcValue; + } + + SetInternalFlag(wxPG_FL_IN_ONCUSTOMEDITOREVENT); + + bool validationFailure = false; + bool buttonWasHandled = false; + + // + // Try common button handling + if ( m_wndEditor2 && event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) + { + wxPGEditorDialogAdapter* adapter = selected->GetEditorDialog(); + + if ( adapter ) + { + buttonWasHandled = true; + // Store as res2, as previously (and still currently alternatively) + // dialogs can be shown by handling wxEVT_COMMAND_BUTTON_CLICKED + // in wxPGProperty::OnEvent(). + adapter->ShowDialog( this, selected ); + delete adapter; + } + } + + if ( !buttonWasHandled ) + { + // First call editor class' event handler. + const wxPGEditor* editor = selected->GetEditorClass(); + + if ( editor->OnEvent( this, selected, wnd, event ) ) + { + // If changes, validate them + if ( DoEditorValidate() ) + { + if ( editor->GetValueFromControl( pendingValue, m_selected, wnd ) ) + valueIsPending = true; + } + else + { + validationFailure = true; + } + } + + // Then the property's custom handler (must be always called, unless + // validation failed). + if ( !validationFailure ) + buttonWasHandled = selected->OnEvent( this, wnd, event ); + } + + // SetValueInEvent(), as called in one of the functions referred above + // overrides editor's value. + if ( m_iFlags & wxPG_FL_VALUE_CHANGE_IN_EVENT ) + { + valueIsPending = true; + pendingValue = m_changeInEventValue; + selFlags |= wxPG_SEL_DIALOGVAL; + } + + if ( !validationFailure && valueIsPending ) + if ( !PerformValidation(m_selected, pendingValue) ) + validationFailure = true; + + if ( validationFailure ) + { + OnValidationFailure(selected, pendingValue); + } + else if ( valueIsPending ) + { + selFlags |= ( !wasUnspecified && selected->IsValueUnspecified() && usesAutoUnspecified ) ? wxPG_SEL_SETUNSPEC : 0; + + DoPropertyChanged(selected, selFlags); + EditorsValueWasNotModified(); + } + else + { + // No value after all + + // Let unhandled button click events go to the parent + if ( !buttonWasHandled && event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) + { + wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED,GetId()); + GetEventHandler()->AddPendingEvent(evt); + } + } + + ClearInternalFlag(wxPG_FL_IN_ONCUSTOMEDITOREVENT); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid editor control helper methods +// ----------------------------------------------------------------------- + +wxRect wxPropertyGrid::GetEditorWidgetRect( wxPGProperty* p, int column ) const +{ + int itemy = p->GetY2(m_lineHeight); + int vy = 0; + int cust_img_space = 0; + int splitterX = m_pState->DoGetSplitterPosition(column-1); + int colEnd = splitterX + m_pState->m_colWidths[column]; + + // TODO: If custom image detection changes from current, change this. + if ( m_iFlags & wxPG_FL_CUR_USES_CUSTOM_IMAGE /*p->m_flags & wxPG_PROP_CUSTOMIMAGE*/ ) + { + //m_iFlags |= wxPG_FL_CUR_USES_CUSTOM_IMAGE; + int imwid = p->OnMeasureImage().x; + if ( imwid < 1 ) imwid = wxPG_CUSTOM_IMAGE_WIDTH; + cust_img_space = imwid + wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2; + } + + return wxRect + ( + splitterX+cust_img_space+wxPG_XBEFOREWIDGET+wxPG_CONTROL_MARGIN+1, + itemy-vy, + colEnd-splitterX-wxPG_XBEFOREWIDGET-wxPG_CONTROL_MARGIN-cust_img_space-1, + m_lineHeight-1 + ); +} + +// ----------------------------------------------------------------------- + +wxRect wxPropertyGrid::GetImageRect( wxPGProperty* p, int item ) const +{ + wxSize sz = GetImageSize(p, item); + return wxRect(wxPG_CONTROL_MARGIN + wxCC_CUSTOM_IMAGE_MARGIN1, + wxPG_CUSTOM_IMAGE_SPACINGY, + sz.x, + sz.y); +} + +// return size of custom paint image +wxSize wxPropertyGrid::GetImageSize( wxPGProperty* p, int item ) const +{ + // If called with NULL property, then return default image + // size for properties that use image. + if ( !p ) + return wxSize(wxPG_CUSTOM_IMAGE_WIDTH,wxPG_STD_CUST_IMAGE_HEIGHT(m_lineHeight)); + + wxSize cis = p->OnMeasureImage(item); + + int choiceCount = p->GetChoiceCount(); + int comVals = p->GetDisplayedCommonValueCount(); + if ( item >= choiceCount && comVals > 0 ) + { + unsigned int cvi = item-choiceCount; + cis = GetCommonValue(cvi)->GetRenderer()->GetImageSize(NULL, 1, cvi); + } + else if ( item >= 0 && choiceCount == 0 ) + return wxSize(0, 0); + + if ( cis.x < 0 ) + { + if ( cis.x <= -1 ) + cis.x = wxPG_CUSTOM_IMAGE_WIDTH; + } + if ( cis.y <= 0 ) + { + if ( cis.y >= -1 ) + cis.y = wxPG_STD_CUST_IMAGE_HEIGHT(m_lineHeight); + else + cis.y = -cis.y; + } + return cis; +} + +// ----------------------------------------------------------------------- + +// takes scrolling into account +void wxPropertyGrid::ImprovedClientToScreen( int* px, int* py ) +{ + int vx, vy; + GetViewStart(&vx,&vy); + vy*=wxPG_PIXELS_PER_UNIT; + vx*=wxPG_PIXELS_PER_UNIT; + *px -= vx; + *py -= vy; + ClientToScreen( px, py ); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridHitTestResult wxPropertyGrid::HitTest( const wxPoint& pt ) const +{ + wxPoint pt2; + GetViewStart(&pt2.x,&pt2.y); + pt2.x *= wxPG_PIXELS_PER_UNIT; + pt2.y *= wxPG_PIXELS_PER_UNIT; + pt2.x += pt.x; + pt2.y += pt.y; + + return m_pState->HitTest(pt2); +} + +// ----------------------------------------------------------------------- + +// custom set cursor +void wxPropertyGrid::CustomSetCursor( int type, bool override ) +{ + if ( type == m_curcursor && !override ) return; + + wxCursor* cursor = &wxPG_DEFAULT_CURSOR; + + if ( type == wxCURSOR_SIZEWE ) + cursor = m_cursorSizeWE; + + m_canvas->SetCursor( *cursor ); + + m_curcursor = type; +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid property selection +// ----------------------------------------------------------------------- + +#define CONNECT_CHILD(EVT,FUNCTYPE,FUNC) \ + wnd->Connect(id, EVT, \ + (wxObjectEventFunction) (wxEventFunction) \ + FUNCTYPE (&wxPropertyGrid::FUNC), \ + NULL, this ); + +// Setups event handling for child control +void wxPropertyGrid::SetupEventHandling( wxWindow* argWnd, int id ) +{ + wxWindow* wnd = argWnd; + + if ( argWnd == m_wndEditor ) + { + CONNECT_CHILD(wxEVT_MOTION,(wxMouseEventFunction),OnMouseMoveChild) + CONNECT_CHILD(wxEVT_LEFT_UP,(wxMouseEventFunction),OnMouseUpChild) + CONNECT_CHILD(wxEVT_LEFT_DOWN,(wxMouseEventFunction),OnMouseClickChild) + CONNECT_CHILD(wxEVT_RIGHT_UP,(wxMouseEventFunction),OnMouseRightClickChild) + CONNECT_CHILD(wxEVT_ENTER_WINDOW,(wxMouseEventFunction),OnMouseEntry) + CONNECT_CHILD(wxEVT_LEAVE_WINDOW,(wxMouseEventFunction),OnMouseEntry) + } + else + { + CONNECT_CHILD(wxEVT_NAVIGATION_KEY,(wxNavigationKeyEventFunction),OnNavigationKey) + } + CONNECT_CHILD(wxEVT_KEY_DOWN,(wxCharEventFunction),OnChildKeyDown) + CONNECT_CHILD(wxEVT_KEY_UP,(wxCharEventFunction),OnChildKeyUp) + CONNECT_CHILD(wxEVT_KILL_FOCUS,(wxFocusEventFunction),OnFocusEvent) +} + +void wxPropertyGrid::FreeEditors() +{ + // Do not free editors immediately if processing events + if ( !m_windowsToDelete ) + m_windowsToDelete = new wxArrayPtrVoid; + + if ( m_wndEditor2 ) + { + m_windowsToDelete->push_back(m_wndEditor2); + m_wndEditor2->Hide(); + m_wndEditor2 = (wxWindow*) NULL; + } + + if ( m_wndEditor ) + { + m_windowsToDelete->push_back(m_wndEditor); + m_wndEditor->Hide(); + m_wndEditor = (wxWindow*) NULL; + } +} + +// Call with NULL to de-select property +bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) +{ + /* + if (p) + wxLogDebug(wxT("SelectProperty( %s (%s[%i]) )"),p->m_label.c_str(), + p->m_parent->m_label.c_str(),p->GetIndexInParent()); + else + wxLogDebug(wxT("SelectProperty( NULL, -1 )")); + */ + + if ( m_inDoSelectProperty ) + return true; + + m_inDoSelectProperty = 1; + + wxPGProperty* prev = m_selected; + + // + // Delete windows pending for deletion + if ( m_windowsToDelete && !m_inDoPropertyChanged && m_windowsToDelete->size() ) + { + unsigned int i; + + for ( i=0; i<m_windowsToDelete->size(); i++ ) + delete ((wxWindow*)((*m_windowsToDelete)[i])); + + m_windowsToDelete->clear(); + } + + if ( !m_pState ) + { + m_inDoSelectProperty = 0; + return false; + } + + // + // If we are frozen, then just set the values. + if ( m_frozen ) + { + m_iFlags &= ~(wxPG_FL_ABNORMAL_EDITOR); + m_editorFocused = 0; + m_selected = p; + m_selColumn = 1; + m_pState->m_selected = p; + + // If frozen, always free controls. But don't worry, as Thaw will + // recall SelectProperty to recreate them. + FreeEditors(); + + // Prevent any further selection measures in this call + p = (wxPGProperty*) NULL; + } + else + { + // Is it the same? + if ( m_selected == p && !(flags & wxPG_SEL_FORCE) ) + { + // Only set focus if not deselecting + if ( p ) + { + if ( flags & wxPG_SEL_FOCUS ) + { + if ( m_wndEditor ) + { + m_wndEditor->SetFocus(); + m_editorFocused = 1; + } + } + else + { + wxScrolledWindow::SetFocus(); + m_editorFocused = 0; + } + } + + m_inDoSelectProperty = 0; + return true; + } + + // + // First, deactivate previous + if ( m_selected ) + { + + OnValidationFailureReset(m_selected); + + // Must double-check if this is an selected in case of forceswitch + if ( p != prev ) + { + if ( !CommitChangesFromEditor(flags) ) + { + // Validation has failed, so we can't exit the previous editor + //::wxMessageBox(_("Please correct the value or press ESC to cancel the edit."), + // _("Invalid Value"),wxOK|wxICON_ERROR); + m_inDoSelectProperty = 0; + return false; + } + } + + FreeEditors(); + m_selColumn = -1; + + m_selected = (wxPGProperty*) NULL; + m_pState->m_selected = (wxPGProperty*) NULL; + + // We need to always fully refresh the grid here + Refresh(false); + + m_iFlags &= ~(wxPG_FL_ABNORMAL_EDITOR); + EditorsValueWasNotModified(); + } + + SetInternalFlag(wxPG_FL_IN_SELECT_PROPERTY); + + // + // Then, activate the one given. + if ( p ) + { + int propY = p->GetY2(m_lineHeight); + + int splitterX = GetSplitterPosition(); + m_editorFocused = 0; + m_selected = p; + m_pState->m_selected = p; + m_iFlags |= wxPG_FL_PRIMARY_FILLS_ENTIRE; + if ( p != prev ) + m_iFlags &= ~(wxPG_FL_VALIDATION_FAILED); + + wxASSERT( m_wndEditor == (wxWindow*) NULL ); + + // Do we need OnMeasureCalls? + wxSize imsz = p->OnMeasureImage(); + + // + // Only create editor for non-disabled non-caption + if ( !p->IsCategory() && !(p->m_flags & wxPG_PROP_DISABLED) ) + { + // do this for non-caption items + + m_selColumn = 1; + + // Do we need to paint the custom image, if any? + m_iFlags &= ~(wxPG_FL_CUR_USES_CUSTOM_IMAGE); + if ( (p->m_flags & wxPG_PROP_CUSTOMIMAGE) && + !p->GetEditorClass()->CanContainCustomImage() + ) + m_iFlags |= wxPG_FL_CUR_USES_CUSTOM_IMAGE; + + wxRect grect = GetEditorWidgetRect(p, m_selColumn); + wxPoint goodPos = grect.GetPosition(); + #if wxPG_CREATE_CONTROLS_HIDDEN + int coord_adjust = m_height - goodPos.y; + goodPos.y += coord_adjust; + #endif + + const wxPGEditor* editor = p->GetEditorClass(); + wxCHECK_MSG(editor, false, + wxT("NULL editor class not allowed")); + + m_iFlags &= ~wxPG_FL_FIXED_WIDTH_EDITOR; + + wxPGWindowList wndList = editor->CreateControls(this, + p, + goodPos, + grect.GetSize()); + + m_wndEditor = wndList.m_primary; + m_wndEditor2 = wndList.m_secondary; + + // NOTE: It is allowed for m_wndEditor to be NULL - in this case + // value is drawn as normal, and m_wndEditor2 is assumed + // to be a right-aligned button that triggers a separate editor + // window. + + if ( m_wndEditor ) + { + wxASSERT_MSG( m_wndEditor->GetParent() == m_canvas, + wxT("CreateControls must use result of wxPropertyGrid::GetPanel() as parent of controls.") ); + + // Set validator, if any + #if wxUSE_VALIDATORS + if ( !(GetExtraStyle() & wxPG_EX_LEGACY_VALIDATORS) ) + { + wxValidator* validator = p->GetValidator(); + if ( validator ) + m_wndEditor->SetValidator(*validator); + } + #endif + + if ( m_wndEditor->GetSize().y > (m_lineHeight+6) ) + m_iFlags |= wxPG_FL_ABNORMAL_EDITOR; + + // If it has modified status, use bold font + // (must be done before capturing m_ctrlXAdjust) + if ( (p->m_flags & wxPG_PROP_MODIFIED) && (m_windowStyle & wxPG_BOLD_MODIFIED) ) + SetCurControlBoldFont(); + + // + // Fix TextCtrl indentation + #if defined(__WXMSW__) && !defined(__WXWINCE__) + wxTextCtrl* tc = NULL; + if ( m_wndEditor->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)) ) + tc = ((wxOwnerDrawnComboBox*)m_wndEditor)->GetTextCtrl(); + else + tc = wxDynamicCast(m_wndEditor, wxTextCtrl); + if ( tc ) + ::SendMessage(GetHwndOf(tc), EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0)); + #endif + + // Store x relative to splitter (we'll need it). + m_ctrlXAdjust = m_wndEditor->GetPosition().x - splitterX; + + // Check if background clear is not necessary + wxPoint pos = m_wndEditor->GetPosition(); + if ( pos.x > (splitterX+1) || pos.y > propY ) + { + m_iFlags &= ~(wxPG_FL_PRIMARY_FILLS_ENTIRE); + } + + m_wndEditor->SetSizeHints(3, 3); + + #if wxPG_CREATE_CONTROLS_HIDDEN + m_wndEditor->Show(false); + m_wndEditor->Freeze(); + + goodPos = m_wndEditor->GetPosition(); + goodPos.y -= coord_adjust; + m_wndEditor->Move( goodPos ); + #endif + + wxWindow* primaryCtrl = GetEditorControl(); + SetupEventHandling(primaryCtrl, wxPG_SUBID1); + + // Focus and select all (wxTextCtrl, wxComboBox etc) + if ( flags & wxPG_SEL_FOCUS ) + { + primaryCtrl->SetFocus(); + + p->GetEditorClass()->OnFocus(p, primaryCtrl); + } + } + + if ( m_wndEditor2 ) + { + wxASSERT_MSG( m_wndEditor2->GetParent() == m_canvas, + wxT("CreateControls must use result of wxPropertyGrid::GetPanel() as parent of controls.") ); + + // Get proper id for wndSecondary + m_wndSecId = m_wndEditor2->GetId(); + wxWindowList children = m_wndEditor2->GetChildren(); + wxWindowList::iterator node = children.begin(); + if ( node != children.end() ) + m_wndSecId = ((wxWindow*)*node)->GetId(); + + m_wndEditor2->SetSizeHints(3,3); + + #if wxPG_CREATE_CONTROLS_HIDDEN + wxRect sec_rect = m_wndEditor2->GetRect(); + sec_rect.y -= coord_adjust; + + // Fine tuning required to fix "oversized" + // button disappearance bug. + if ( sec_rect.y < 0 ) + { + sec_rect.height += sec_rect.y; + sec_rect.y = 0; + } + m_wndEditor2->SetSize( sec_rect ); + #endif + m_wndEditor2->Show(); + + SetupEventHandling(m_wndEditor2,wxPG_SUBID2); + + // If no primary editor, focus to button to allow + // it to interprete ENTER etc. + // NOTE: Due to problems focusing away from it, this + // has been disabled. + /* + if ( (flags & wxPG_SEL_FOCUS) && !m_wndEditor ) + m_wndEditor2->SetFocus(); + */ + } + + if ( flags & wxPG_SEL_FOCUS ) + m_editorFocused = 1; + + } + else + { + // wxGTK atleast seems to need this (wxMSW not) + SetFocus(); + } + + EditorsValueWasNotModified(); + + // If it's inside collapsed section, expand parent, scroll, etc. + // Also, if it was partially visible, scroll it into view. + if ( !(flags & wxPG_SEL_NONVISIBLE) ) + EnsureVisible( p ); + + if ( m_wndEditor ) + { + #if wxPG_CREATE_CONTROLS_HIDDEN + m_wndEditor->Thaw(); + #endif + m_wndEditor->Show(true); + } + + DrawItems(p, p); + } + + ClearInternalFlag(wxPG_FL_IN_SELECT_PROPERTY); + } + +#if wxUSE_STATUSBAR + + // + // Show help text in status bar. + // (if found and grid not embedded in manager with help box and + // style wxPG_EX_HELP_AS_TOOLTIPS is not used). + // + + if ( !(GetExtraStyle() & wxPG_EX_HELP_AS_TOOLTIPS) ) + { + wxStatusBar* statusbar = (wxStatusBar*) NULL; + if ( !(m_iFlags & wxPG_FL_NOSTATUSBARHELP) ) + { + wxFrame* frame = wxDynamicCast(::wxGetTopLevelParent(this),wxFrame); + if ( frame ) + statusbar = frame->GetStatusBar(); + } + + if ( statusbar ) + { + const wxString* pHelpString = (const wxString*) NULL; + + if ( p ) + { + pHelpString = &p->GetHelpString(); + if ( pHelpString->length() ) + { + // Set help box text. + statusbar->SetStatusText( *pHelpString ); + m_iFlags |= wxPG_FL_STRING_IN_STATUSBAR; + } + } + + if ( (!pHelpString || !pHelpString->length()) && + (m_iFlags & wxPG_FL_STRING_IN_STATUSBAR) ) + { + // Clear help box - but only if it was written + // by us at previous time. + statusbar->SetStatusText( m_emptyString ); + m_iFlags &= ~(wxPG_FL_STRING_IN_STATUSBAR); + } + } + } +#endif + + m_inDoSelectProperty = 0; + + // call wx event handler (here so that it also occurs on deselection) + SendEvent( wxEVT_PG_SELECTED, m_selected, NULL, flags ); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::UnfocusEditor() +{ + if ( !m_selected || !m_wndEditor || m_frozen ) + return true; + + if ( !CommitChangesFromEditor(0) ) + return false; + + m_canvas->SetFocusIgnoringChildren(); + DrawItem(m_selected); + + return true; +} + +// ----------------------------------------------------------------------- + +// This method is not inline because it called dozens of times +// (i.e. two-arg function calls create smaller code size). +bool wxPropertyGrid::DoClearSelection() +{ + return DoSelectProperty((wxPGProperty*)NULL); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid expand/collapse state +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::DoCollapse( wxPGProperty* p, bool sendEvents ) +{ + wxPGProperty* pwc = wxStaticCast(p, wxPGProperty); + + // If active editor was inside collapsed section, then disable it + if ( m_selected && m_selected->IsSomeParent (p) ) + { + if ( !ClearSelection() ) + return false; + } + + // Store dont-center-splitter flag 'cause we need to temporarily set it + wxUint32 old_flag = m_iFlags & wxPG_FL_DONT_CENTER_SPLITTER; + m_iFlags |= wxPG_FL_DONT_CENTER_SPLITTER; + + bool res = m_pState->DoCollapse(pwc); + + if ( res ) + { + if ( sendEvents ) + SendEvent( wxEVT_PG_ITEM_COLLAPSED, p ); + + RecalculateVirtualSize(); + + // Redraw etc. only if collapsed was visible. + if (pwc->IsVisible() && + !m_frozen && + ( !pwc->IsCategory() || !(m_windowStyle & wxPG_HIDE_CATEGORIES) ) ) + { + // When item is collapsed so that scrollbar would move, + // graphics mess is about (unless we redraw everything). + Refresh(); + } + } + + // Clear dont-center-splitter flag if it wasn't set + m_iFlags = m_iFlags & ~(wxPG_FL_DONT_CENTER_SPLITTER) | old_flag; + + return res; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::DoExpand( wxPGProperty* p, bool sendEvents ) +{ + wxCHECK_MSG( p, false, wxT("invalid property id") ); + + wxPGProperty* pwc = (wxPGProperty*)p; + + // Store dont-center-splitter flag 'cause we need to temporarily set it + wxUint32 old_flag = m_iFlags & wxPG_FL_DONT_CENTER_SPLITTER; + m_iFlags |= wxPG_FL_DONT_CENTER_SPLITTER; + + bool res = m_pState->DoExpand(pwc); + + if ( res ) + { + if ( sendEvents ) + SendEvent( wxEVT_PG_ITEM_EXPANDED, p ); + + RecalculateVirtualSize(); + + // Redraw etc. only if expanded was visible. + if ( pwc->IsVisible() && !m_frozen && + ( !pwc->IsCategory() || !(m_windowStyle & wxPG_HIDE_CATEGORIES) ) + ) + { + // Redraw + #if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + Refresh(); + #else + DrawItems(pwc, NULL); + #endif + } + } + + // Clear dont-center-splitter flag if it wasn't set + m_iFlags = m_iFlags & ~(wxPG_FL_DONT_CENTER_SPLITTER) | old_flag; + + return res; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::DoHideProperty( wxPGProperty* p, bool hide, int flags ) +{ + if ( m_frozen ) + return m_pState->DoHideProperty(p, hide, flags); + + if ( m_selected && + ( m_selected == p || m_selected->IsSomeParent(p) ) + ) + { + if ( !ClearSelection() ) + return false; + } + + m_pState->DoHideProperty(p, hide, flags); + + RecalculateVirtualSize(); + Refresh(); + + return true; +} + + +// ----------------------------------------------------------------------- +// wxPropertyGrid size related methods +// ----------------------------------------------------------------------- + +void wxPropertyGrid::RecalculateVirtualSize( int forceXPos ) +{ + if ( (m_iFlags & wxPG_FL_RECALCULATING_VIRTUAL_SIZE) || m_frozen ) + return; + + // + // If virtual height was changed, then recalculate editor control position(s) + if ( m_pState->m_vhCalcPending ) + CorrectEditorWidgetPosY(); + + m_pState->EnsureVirtualHeight(); + +#ifdef __WXDEBUG__ + int by1 = m_pState->GetVirtualHeight(); + int by2 = m_pState->GetActualVirtualHeight(); + if ( by1 != by2 ) + { + wxString s = wxString::Format(wxT("VirtualHeight=%i, ActualVirtualHeight=%i, should match!"), by1, by2); + wxASSERT_MSG( false, + s.c_str() ); + wxLogDebug(s); + } +#endif + + m_iFlags |= wxPG_FL_RECALCULATING_VIRTUAL_SIZE; + + int x = m_pState->m_width; + int y = m_pState->m_virtualHeight; + + int width, height; + GetClientSize(&width,&height); + + // Now adjust virtual size. + SetVirtualSize(x, y); + + int xAmount = 0; + int xPos = 0; + + // + // Adjust scrollbars + if ( HasVirtualWidth() ) + { + xAmount = x/wxPG_PIXELS_PER_UNIT; + xPos = GetScrollPos( wxHORIZONTAL ); + } + + if ( forceXPos != -1 ) + xPos = forceXPos; + // xPos too high? + else if ( xPos > (xAmount-(width/wxPG_PIXELS_PER_UNIT)) ) + xPos = 0; + + int yAmount = (y+wxPG_PIXELS_PER_UNIT+2)/wxPG_PIXELS_PER_UNIT; + int yPos = GetScrollPos( wxVERTICAL ); + + SetScrollbars( wxPG_PIXELS_PER_UNIT, wxPG_PIXELS_PER_UNIT, + xAmount, yAmount, xPos, yPos, true ); + + // Must re-get size now + GetClientSize(&width,&height); + + if ( !HasVirtualWidth() ) + { + m_pState->SetVirtualWidth(width); + x = width; + } + + m_width = width; + m_height = height; + + m_canvas->SetSize( x, y ); + + m_pState->CheckColumnWidths(); + + if ( m_selected ) + CorrectEditorWidgetSizeX(); + + m_iFlags &= ~wxPG_FL_RECALCULATING_VIRTUAL_SIZE; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnResize( wxSizeEvent& event ) +{ + if ( !(m_iFlags & wxPG_FL_INITIALIZED) ) + return; + + int width, height; + GetClientSize(&width,&height); + + m_width = width; + m_height = height; + + m_visPropArray.SetCount((height/m_lineHeight)+10); + +#if wxPG_DOUBLE_BUFFER + if ( !(GetExtraStyle() & wxPG_EX_NATIVE_DOUBLE_BUFFERING) ) + { + int dblh = (m_lineHeight*2); + if ( !m_doubleBuffer ) + { + // Create double buffer bitmap to draw on, if none + int w = (width>250)?width:250; + int h = height + dblh; + h = (h>400)?h:400; + m_doubleBuffer = new wxBitmap( w, h ); + } + else + { + int w = m_doubleBuffer->GetWidth(); + int h = m_doubleBuffer->GetHeight(); + + // Double buffer must be large enough + if ( w < width || h < (height+dblh) ) + { + if ( w < width ) w = width; + if ( h < (height+dblh) ) h = height + dblh; + delete m_doubleBuffer; + m_doubleBuffer = new wxBitmap( w, h ); + } + } + } + +#endif + + m_pState->OnClientWidthChange( width, event.GetSize().x - m_ncWidth, true ); + m_ncWidth = event.GetSize().x; + + if ( !m_frozen ) + { + if ( m_pState->m_itemsAdded ) + PrepareAfterItemsAdded(); + else + // Without this, virtual size (atleast under wxGTK) will be skewed + RecalculateVirtualSize(); + + Refresh(); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SetVirtualWidth( int width ) +{ + if ( width == -1 ) + { + // Disable virtual width + width = GetClientSize().x; + ClearInternalFlag(wxPG_FL_HAS_VIRTUAL_WIDTH); + } + else + { + // Enable virtual width + SetInternalFlag(wxPG_FL_HAS_VIRTUAL_WIDTH); + } + m_pState->SetVirtualWidth( width ); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid mouse event handling +// ----------------------------------------------------------------------- + +// selFlags uses same values DoSelectProperty's flags +// Returns true if event was vetoed. +bool wxPropertyGrid::SendEvent( int eventType, wxPGProperty* p, wxVariant* pValue, unsigned int WXUNUSED(selFlags) ) +{ + // Send property grid event of specific type and with specific property + wxPropertyGridEvent evt( eventType, m_eventObject->GetId() ); + evt.SetPropertyGrid(this); + evt.SetEventObject(m_eventObject); + evt.SetProperty(p); + if ( pValue ) + { + evt.SetCanVeto(true); + evt.SetupValidationInfo(); + m_validationInfo.m_pValue = pValue; + } + wxEvtHandler* evtHandler = m_eventObject->GetEventHandler(); + + evtHandler->ProcessEvent(evt); + + return evt.WasVetoed(); +} + +// ----------------------------------------------------------------------- + +// Return false if should be skipped +bool wxPropertyGrid::HandleMouseClick( int x, unsigned int y, wxMouseEvent &event ) +{ + bool res = true; + + // Need to set focus? + if ( !(m_iFlags & wxPG_FL_FOCUSED) ) + { + m_canvas->SetFocus(); + } + + wxPropertyGridPageState* state = m_pState; + int splitterHit; + int splitterHitOffset; + int columnHit = state->HitTestH( x, &splitterHit, &splitterHitOffset ); + + wxPGProperty* p = DoGetItemAtY(y); + + if ( p ) + { + int depth = (int)p->GetDepth() - 1; + + int marginEnds = m_marginWidth + ( depth * m_subgroup_extramargin ); + + if ( x >= marginEnds ) + { + // Outside margin. + + if ( p->IsCategory() ) + { + // This is category. + wxPropertyCategory* pwc = (wxPropertyCategory*)p; + + int textX = m_marginWidth + ((unsigned int)((pwc->m_depth-1)*m_subgroup_extramargin)); + + // Expand, collapse, activate etc. if click on text or left of splitter. + if ( x >= textX + && + ( x < (textX+pwc->GetTextExtent(this, m_captionFont)+(wxPG_CAPRECTXMARGIN*2)) || + columnHit == 0 + ) + ) + { + if ( !DoSelectProperty( p ) ) + return res; + + // On double-click, expand/collapse. + if ( event.ButtonDClick() && !(m_windowStyle & wxPG_HIDE_MARGIN) ) + { + if ( pwc->IsExpanded() ) DoCollapse( p, true ); + else DoExpand( p, true ); + } + } + } + else if ( splitterHit == -1 ) + { + // Click on value. + unsigned int selFlag = 0; + if ( columnHit == 1 ) + { + m_iFlags |= wxPG_FL_ACTIVATION_BY_CLICK; + selFlag = wxPG_SEL_FOCUS; + } + if ( !DoSelectProperty( p, selFlag ) ) + return res; + + m_iFlags &= ~(wxPG_FL_ACTIVATION_BY_CLICK); + + if ( p->GetChildCount() && !p->IsCategory() ) + // On double-click, expand/collapse. + if ( event.ButtonDClick() && !(m_windowStyle & wxPG_HIDE_MARGIN) ) + { + wxPGProperty* pwc = (wxPGProperty*)p; + if ( pwc->IsExpanded() ) DoCollapse( p, true ); + else DoExpand( p, true ); + } + + res = false; + } + else + { + // click on splitter + if ( !(m_windowStyle & wxPG_STATIC_SPLITTER) ) + { + if ( event.GetEventType() == wxEVT_LEFT_DCLICK ) + { + // Double-clicking the splitter causes auto-centering + CenterSplitter( true ); + } + else if ( m_dragStatus == 0 ) + { + // + // Begin draggin the splitter + // + if ( m_wndEditor ) + { + // Changes must be committed here or the + // value won't be drawn correctly + if ( !CommitChangesFromEditor() ) + return res; + + m_wndEditor->Show ( false ); + } + + if ( !(m_iFlags & wxPG_FL_MOUSE_CAPTURED) ) + { + m_canvas->CaptureMouse(); + m_iFlags |= wxPG_FL_MOUSE_CAPTURED; + } + + m_dragStatus = 1; + m_draggedSplitter = splitterHit; + m_dragOffset = splitterHitOffset; + + wxClientDC dc(m_canvas); + + #if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + // Fixes button disappearance bug + if ( m_wndEditor2 ) + m_wndEditor2->Show ( false ); + #endif + + m_startingSplitterX = x - splitterHitOffset; + } + } + } + } + else + { + // Click on margin. + if ( p->GetChildCount() ) + { + int nx = x + m_marginWidth - marginEnds; // Normalize x. + + if ( (nx >= m_gutterWidth && nx < (m_gutterWidth+m_iconWidth)) ) + { + int y2 = y % m_lineHeight; + if ( (y2 >= m_buttonSpacingY && y2 < (m_buttonSpacingY+m_iconHeight)) ) + { + // On click on expander button, expand/collapse + if ( ((wxPGProperty*)p)->IsExpanded() ) + DoCollapse( p, true ); + else + DoExpand( p, true ); + } + } + } + } + } + return res; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::HandleMouseRightClick( int WXUNUSED(x), unsigned int WXUNUSED(y), + wxMouseEvent& WXUNUSED(event) ) +{ + if ( m_propHover ) + { + // Select property here as well + wxPGProperty* p = m_propHover; + if ( p != m_selected ) + DoSelectProperty( p ); + + // Send right click event. + SendEvent( wxEVT_PG_RIGHT_CLICK, p ); + + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::HandleMouseDoubleClick( int WXUNUSED(x), unsigned int WXUNUSED(y), + wxMouseEvent& WXUNUSED(event) ) +{ + if ( m_propHover ) + { + // Select property here as well + wxPGProperty* p = m_propHover; + + if ( p != m_selected ) + DoSelectProperty( p ); + + // Send double-click event. + SendEvent( wxEVT_PG_DOUBLE_CLICK, m_propHover ); + + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +#if wxPG_SUPPORT_TOOLTIPS + +void wxPropertyGrid::SetToolTip( const wxString& tipString ) +{ + if ( tipString.length() ) + { + m_canvas->SetToolTip(tipString); + } + else + { + #if wxPG_ALLOW_EMPTY_TOOLTIPS + m_canvas->SetToolTip( m_emptyString ); + #else + m_canvas->SetToolTip( NULL ); + #endif + } +} + +#endif // #if wxPG_SUPPORT_TOOLTIPS + +// ----------------------------------------------------------------------- + +// Return false if should be skipped +bool wxPropertyGrid::HandleMouseMove( int x, unsigned int y, wxMouseEvent &event ) +{ + // Safety check (needed because mouse capturing may + // otherwise freeze the control) + if ( m_dragStatus > 0 && !event.Dragging() ) + { + HandleMouseUp(x,y,event); + } + + wxPropertyGridPageState* state = m_pState; + int splitterHit; + int splitterHitOffset; + int columnHit = state->HitTestH( x, &splitterHit, &splitterHitOffset ); + int splitterX = x - splitterHitOffset; + + if ( m_dragStatus > 0 ) + { + if ( x > (m_marginWidth + wxPG_DRAG_MARGIN) && + x < (m_pState->m_width - wxPG_DRAG_MARGIN) ) + { + + int newSplitterX = x - m_dragOffset; + int splitterX = x - splitterHitOffset; + + // Splitter redraw required? + if ( newSplitterX != splitterX ) + { + // Move everything + SetInternalFlag(wxPG_FL_DONT_CENTER_SPLITTER); + state->DoSetSplitterPosition( newSplitterX, m_draggedSplitter, false ); + state->m_fSplitterX = (float) newSplitterX; + + if ( m_selected ) + CorrectEditorWidgetSizeX(); + + Update(); + Refresh(); + } + + m_dragStatus = 2; + } + + return false; + } + else + { + + int ih = m_lineHeight; + int sy = y; + + #if wxPG_SUPPORT_TOOLTIPS + wxPGProperty* prevHover = m_propHover; + unsigned char prevSide = m_mouseSide; + #endif + int curPropHoverY = y - (y % ih); + + // On which item it hovers + if ( ( !m_propHover ) + || + ( m_propHover && ( sy < m_propHoverY || sy >= (m_propHoverY+ih) ) ) + ) + { + // Mouse moves on another property + + m_propHover = DoGetItemAtY(y); + m_propHoverY = curPropHoverY; + + // Send hover event + SendEvent( wxEVT_PG_HIGHLIGHTED, m_propHover ); + } + + #if wxPG_SUPPORT_TOOLTIPS + // Store which side we are on + m_mouseSide = 0; + if ( columnHit == 1 ) + m_mouseSide = 2; + else if ( columnHit == 0 ) + m_mouseSide = 1; + + // + // If tooltips are enabled, show label or value as a tip + // in case it doesn't otherwise show in full length. + // + if ( m_windowStyle & wxPG_TOOLTIPS ) + { + wxToolTip* tooltip = m_canvas->GetToolTip(); + + if ( m_propHover != prevHover || prevSide != m_mouseSide ) + { + if ( m_propHover && !m_propHover->IsCategory() ) + { + + if ( GetExtraStyle() & wxPG_EX_HELP_AS_TOOLTIPS ) + { + // Show help string as a tooltip + wxString tipString = m_propHover->GetHelpString(); + + SetToolTip(tipString); + } + else + { + // Show cropped value string as a tooltip + wxString tipString; + int space = 0; + + if ( m_mouseSide == 1 ) + { + tipString = m_propHover->m_label; + space = splitterX-m_marginWidth-3; + } + else if ( m_mouseSide == 2 ) + { + tipString = m_propHover->GetDisplayedString(); + + space = m_width - splitterX; + if ( m_propHover->m_flags & wxPG_PROP_CUSTOMIMAGE ) + space -= wxPG_CUSTOM_IMAGE_WIDTH + wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2; + } + + if ( space ) + { + int tw, th; + GetTextExtent( tipString, &tw, &th, 0, 0, &m_font ); + if ( tw > space ) + { + SetToolTip( tipString ); + } + } + else + { + if ( tooltip ) + { + #if wxPG_ALLOW_EMPTY_TOOLTIPS + m_canvas->SetToolTip( m_emptyString ); + #else + m_canvas->SetToolTip( NULL ); + #endif + } + } + + } + } + else + { + if ( tooltip ) + { + #if wxPG_ALLOW_EMPTY_TOOLTIPS + m_canvas->SetToolTip( m_emptyString ); + #else + m_canvas->SetToolTip( NULL ); + #endif + } + } + } + } + #endif + + if ( splitterHit == -1 || + !m_propHover || + HasFlag(wxPG_STATIC_SPLITTER) ) + { + // hovering on something else + if ( m_curcursor != wxCURSOR_ARROW ) + CustomSetCursor( wxCURSOR_ARROW ); + } + else + { + // Do not allow splitter cursor on caption items. + // (also not if we were dragging and its started + // outside the splitter region) + + if ( m_propHover && + !m_propHover->IsCategory() && + !event.Dragging() ) + { + + // hovering on splitter + + // NB: Condition disabled since MouseLeave event (from the editor control) cannot be + // reliably detected. + //if ( m_curcursor != wxCURSOR_SIZEWE ) + CustomSetCursor( wxCURSOR_SIZEWE, true ); + + return false; + } + else + { + // hovering on something else + if ( m_curcursor != wxCURSOR_ARROW ) + CustomSetCursor( wxCURSOR_ARROW ); + } + } + } + return true; +} + +// ----------------------------------------------------------------------- + +// Also handles Leaving event +bool wxPropertyGrid::HandleMouseUp( int x, unsigned int WXUNUSED(y), + wxMouseEvent &WXUNUSED(event) ) +{ + wxPropertyGridPageState* state = m_pState; + bool res = false; + + int splitterHit; + int splitterHitOffset; + state->HitTestH( x, &splitterHit, &splitterHitOffset ); + + // No event type check - basicly calling this method should + // just stop dragging. + // Left up after dragged? + if ( m_dragStatus >= 1 ) + { + // + // End Splitter Dragging + // + // DO NOT ENABLE FOLLOWING LINE! + // (it is only here as a reminder to not to do it) + //splitterX = x; + + // Disable splitter auto-centering + m_iFlags |= wxPG_FL_DONT_CENTER_SPLITTER; + + // This is necessary to return cursor + if ( m_iFlags & wxPG_FL_MOUSE_CAPTURED ) + { + m_canvas->ReleaseMouse(); + m_iFlags &= ~(wxPG_FL_MOUSE_CAPTURED); + } + + // Set back the default cursor, if necessary + if ( splitterHit == -1 || + !m_propHover ) + { + CustomSetCursor( wxCURSOR_ARROW ); + } + + m_dragStatus = 0; + + // Control background needs to be cleared + if ( !(m_iFlags & wxPG_FL_PRIMARY_FILLS_ENTIRE) && m_selected ) + DrawItem( m_selected ); + + if ( m_wndEditor ) + { + m_wndEditor->Show ( true ); + } + + #if wxPG_REFRESH_CONTROLS_AFTER_REPAINT + // Fixes button disappearance bug + if ( m_wndEditor2 ) + m_wndEditor2->Show ( true ); + #endif + + // This clears the focus. + m_editorFocused = 0; + + } + return res; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::OnMouseCommon( wxMouseEvent& event, int* px, int* py ) +{ + int splitterX = GetSplitterPosition(); + + //int ux, uy; + //CalcUnscrolledPosition( event.m_x, event.m_y, &ux, &uy ); + int ux = event.m_x; + int uy = event.m_y; + + wxWindow* wnd = m_wndEditor; + + // Hide popup on clicks + if ( event.GetEventType() != wxEVT_MOTION ) + if ( wnd && wnd->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)) ) + { + ((wxOwnerDrawnComboBox*)m_wndEditor)->HidePopup(); + } + + wxRect r; + if ( wnd ) + r = wnd->GetRect(); + if ( wnd == (wxWindow*) NULL || m_dragStatus || + ( + ux <= (splitterX + wxPG_SPLITTERX_DETECTMARGIN2) || + ux >= (r.x+r.width) || + event.m_y < r.y || + event.m_y >= (r.y+r.height) + ) + ) + { + *px = ux; + *py = uy; + return true; + } + else + { + if ( m_curcursor != wxCURSOR_ARROW ) CustomSetCursor ( wxCURSOR_ARROW ); + } + return false; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseClick( wxMouseEvent &event ) +{ + int x, y; + if ( OnMouseCommon( event, &x, &y ) ) + { + HandleMouseClick(x,y,event); + } + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseRightClick( wxMouseEvent &event ) +{ + int x, y; + CalcUnscrolledPosition( event.m_x, event.m_y, &x, &y ); + HandleMouseRightClick(x,y,event); + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseDoubleClick( wxMouseEvent &event ) +{ + // Always run standard mouse-down handler as well + OnMouseClick(event); + + int x, y; + CalcUnscrolledPosition( event.m_x, event.m_y, &x, &y ); + HandleMouseDoubleClick(x,y,event); + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseMove( wxMouseEvent &event ) +{ + int x, y; + if ( OnMouseCommon( event, &x, &y ) ) + { + HandleMouseMove(x,y,event); + } + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseMoveBottom( wxMouseEvent& WXUNUSED(event) ) +{ + // Called when mouse moves in the empty space below the properties. + CustomSetCursor( wxCURSOR_ARROW ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseUp( wxMouseEvent &event ) +{ + int x, y; + if ( OnMouseCommon( event, &x, &y ) ) + { + HandleMouseUp(x,y,event); + } + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnMouseEntry( wxMouseEvent &event ) +{ + // This may get called from child control as well, so event's + // mouse position cannot be relied on. + + if ( event.Entering() ) + { + if ( !(m_iFlags & wxPG_FL_MOUSE_INSIDE) ) + { + // TODO: Fix this (detect parent and only do + // cursor trick if it is a manager). + wxASSERT( GetParent() ); + GetParent()->SetCursor(wxNullCursor); + + m_iFlags |= wxPG_FL_MOUSE_INSIDE; + } + else + GetParent()->SetCursor(wxNullCursor); + } + else if ( event.Leaving() ) + { + // Without this, wxSpinCtrl editor will sometimes have wrong cursor + m_canvas->SetCursor( wxNullCursor ); + + // Get real cursor position + wxPoint pt = ScreenToClient(::wxGetMousePosition()); + + if ( ( pt.x <= 0 || pt.y <= 0 || pt.x >= m_width || pt.y >= m_height ) ) + { + { + if ( (m_iFlags & wxPG_FL_MOUSE_INSIDE) ) + { + m_iFlags &= ~(wxPG_FL_MOUSE_INSIDE); + } + + if ( m_dragStatus ) + wxPropertyGrid::HandleMouseUp ( -1, 10000, event ); + } + } + } + + event.Skip(); +} + +// ----------------------------------------------------------------------- + +// Common code used by various OnMouseXXXChild methods. +bool wxPropertyGrid::OnMouseChildCommon( wxMouseEvent &event, int* px, int *py ) +{ + wxWindow* topCtrlWnd = (wxWindow*)event.GetEventObject(); + wxASSERT( topCtrlWnd ); + int x, y; + event.GetPosition(&x,&y); + + AdjustPosForClipperWindow( topCtrlWnd, &x, &y ); + + int splitterX = GetSplitterPosition(); + + wxRect r = topCtrlWnd->GetRect(); + if ( !m_dragStatus && + x > (splitterX-r.x+wxPG_SPLITTERX_DETECTMARGIN2) && + y >= 0 && y < r.height \ + ) + { + if ( m_curcursor != wxCURSOR_ARROW ) CustomSetCursor ( wxCURSOR_ARROW ); + event.Skip(); + } + else + { + CalcUnscrolledPosition( event.m_x + r.x, event.m_y + r.y, \ + px, py ); + return true; + } + return false; +} + +void wxPropertyGrid::OnMouseClickChild( wxMouseEvent &event ) +{ + int x,y; + if ( OnMouseChildCommon(event,&x,&y) ) + { + bool res = HandleMouseClick(x,y,event); + if ( !res ) event.Skip(); + } +} + +void wxPropertyGrid::OnMouseRightClickChild( wxMouseEvent &event ) +{ + int x,y; + wxASSERT( m_wndEditor ); + // These coords may not be exact (about +-2), + // but that should not matter (right click is about item, not position). + wxPoint pt = m_wndEditor->GetPosition(); + CalcUnscrolledPosition( event.m_x + pt.x, event.m_y + pt.y, &x, &y ); + wxASSERT( m_selected ); + m_propHover = m_selected; + bool res = HandleMouseRightClick(x,y,event); + if ( !res ) event.Skip(); +} + +void wxPropertyGrid::OnMouseMoveChild( wxMouseEvent &event ) +{ + int x,y; + if ( OnMouseChildCommon(event,&x,&y) ) + { + bool res = HandleMouseMove(x,y,event); + if ( !res ) event.Skip(); + } +} + +void wxPropertyGrid::OnMouseUpChild( wxMouseEvent &event ) +{ + int x,y; + if ( OnMouseChildCommon(event,&x,&y) ) + { + bool res = HandleMouseUp(x,y,event); + if ( !res ) event.Skip(); + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid keyboard event handling +// ----------------------------------------------------------------------- + +void wxPropertyGrid::SendNavigationKeyEvent( int dir ) +{ + wxNavigationKeyEvent evt; + evt.SetFlags(wxNavigationKeyEvent::FromTab| + (dir?wxNavigationKeyEvent::IsForward: + wxNavigationKeyEvent::IsBackward)); + evt.SetEventObject(this); + m_canvas->GetEventHandler()->AddPendingEvent(evt); +} + + +int wxPropertyGrid::KeyEventToActions(wxKeyEvent &event, int* pSecond) const +{ + // Translates wxKeyEvent to wxPG_ACTION_XXX + + int keycode = event.GetKeyCode(); + int modifiers = event.GetModifiers(); + + wxASSERT( !(modifiers&~(0xFFFF)) ); + + int hashMapKey = (keycode & 0xFFFF) | ((modifiers & 0xFFFF) << 16); + + wxPGHashMapI2I::const_iterator it = m_actionTriggers.find(hashMapKey); + + if ( it == m_actionTriggers.end() ) + return 0; + + if ( pSecond ) + { + int second = (it->second>>16) & 0xFFFF; + *pSecond = second; + } + + return (it->second & 0xFFFF); +} + +void wxPropertyGrid::AddActionTrigger( int action, int keycode, int modifiers ) +{ + wxASSERT( !(modifiers&~(0xFFFF)) ); + + int hashMapKey = (keycode & 0xFFFF) | ((modifiers & 0xFFFF) << 16); + + wxPGHashMapI2I::iterator it = m_actionTriggers.find(hashMapKey); + + if ( it != m_actionTriggers.end() ) + { + // This key combination is already used + + // Can add secondary? + wxASSERT_MSG( !(it->second&~(0xFFFF)), + wxT("You can only add up to two separate actions per key combination.") ); + + action = it->second | (action<<16); + } + + m_actionTriggers[hashMapKey] = action; +} + +void wxPropertyGrid::ClearActionTriggers( int action ) +{ + wxPGHashMapI2I::iterator it; + + for ( it = m_actionTriggers.begin(); it != m_actionTriggers.end(); it++ ) + { + if ( it->second == action ) + { + m_actionTriggers.erase(it); + } + } +} + +static void CopyTextToClipboard( const wxString& text ) +{ + if ( wxTheClipboard->Open() ) + { + // This data objects are held by the clipboard, + // so do not delete them in the app. + wxTheClipboard->SetData( new wxTextDataObject(text) ); + wxTheClipboard->Close(); + } +} + +void wxPropertyGrid::HandleKeyEvent(wxKeyEvent &event) +{ + // + // Handles key event when editor control is not focused. + // + + wxASSERT( !m_frozen ); + if ( m_frozen ) + return; + + // Travelsal between items, collapsing/expanding, etc. + int keycode = event.GetKeyCode(); + + if ( keycode == WXK_TAB ) + { + SendNavigationKeyEvent( event.ShiftDown()?0:1 ); + return; + } + + // Ignore Alt and Control when they are down alone + if ( keycode == WXK_ALT || + keycode == WXK_CONTROL ) + { + event.Skip(); + return; + } + + int secondAction; + int action = KeyEventToActions(event, &secondAction); + + if ( m_selected ) + { + + // Show dialog? + if ( ButtonTriggerKeyTest(event) ) + return; + + wxPGProperty* p = m_selected; + + if ( action == wxPG_ACTION_COPY ) + { + CopyTextToClipboard(p->GetDisplayedString()); + } + else + { + // Travel and expand/collapse + int selectDir = -2; + + if ( p->GetChildCount() && + !(p->m_flags & wxPG_PROP_DISABLED) + ) + { + if ( action == wxPG_ACTION_COLLAPSE_PROPERTY || secondAction == wxPG_ACTION_COLLAPSE_PROPERTY ) + { + if ( (m_windowStyle & wxPG_HIDE_MARGIN) || Collapse(p) ) + keycode = 0; + } + else if ( action == wxPG_ACTION_EXPAND_PROPERTY || secondAction == wxPG_ACTION_EXPAND_PROPERTY ) + { + if ( (m_windowStyle & wxPG_HIDE_MARGIN) || Expand(p) ) + keycode = 0; + } + } + + if ( keycode ) + { + if ( action == wxPG_ACTION_PREV_PROPERTY || secondAction == wxPG_ACTION_PREV_PROPERTY ) + { + selectDir = -1; + } + else if ( action == wxPG_ACTION_NEXT_PROPERTY || secondAction == wxPG_ACTION_NEXT_PROPERTY ) + { + selectDir = 1; + } + else + { + event.Skip(); + } + + } + + if ( selectDir >= -1 ) + { + p = wxPropertyGridIterator::OneStep( m_pState, wxPG_ITERATE_VISIBLE, p, selectDir ); + if ( p ) + DoSelectProperty(p); + } + } + } + else + { + // If nothing was selected, select the first item now + // (or navigate out of tab). + if ( action != wxPG_ACTION_CANCEL_EDIT && secondAction != wxPG_ACTION_CANCEL_EDIT ) + { + wxPGProperty* p = wxPropertyGridInterface::GetFirst(); + if ( p ) DoSelectProperty(p); + } + } +} + +// ----------------------------------------------------------------------- + +// Potentially handles a keyboard event for editor controls. +// Returns false if event should *not* be skipped (on true it can +// be optionally skipped). +// Basicly, false means that SelectProperty was called (or was about +// to be called, if canDestroy was false). +bool wxPropertyGrid::HandleChildKey( wxKeyEvent& event ) +{ + bool res = true; + + if ( !m_selected || !m_wndEditor ) + { + return true; + } + + int action = KeyEventToAction(event); + + // Unfocus? + if ( action == wxPG_ACTION_CANCEL_EDIT ) + { + // + // Esc cancels any changes + if ( IsEditorsValueModified() ) + { + EditorsValueWasNotModified(); + + // Update the control as well + m_selected->GetEditorClass()->SetControlStringValue( m_selected, + m_wndEditor, + m_selected->GetDisplayedString() ); + } + + OnValidationFailureReset(m_selected); + + res = false; + + UnfocusEditor(); + } + else if ( action == wxPG_ACTION_COPY ) + { + // NB: There is some problem with getting native cut-copy-paste keys to go through + // for embedded editor wxTextCtrl. This is why we emulate. + // + wxTextCtrl* tc = GetEditorTextCtrl(); + if ( tc ) + { + wxString sel = tc->GetStringSelection(); + if ( sel.length() ) + CopyTextToClipboard(sel); + } + else + { + CopyTextToClipboard(m_selected->GetDisplayedString()); + } + } + else if ( action == wxPG_ACTION_CUT ) + { + wxTextCtrl* tc = GetEditorTextCtrl(); + if ( tc ) + { + long from, to; + tc->GetSelection(&from, &to); + if ( from < to ) + { + CopyTextToClipboard(tc->GetStringSelection()); + tc->Remove(from, to); + } + } + } + else if ( action == wxPG_ACTION_PASTE ) + { + wxTextCtrl* tc = GetEditorTextCtrl(); + if ( tc ) + { + if (wxTheClipboard->Open()) + { + if (wxTheClipboard->IsSupported( wxDF_TEXT )) + { + wxTextDataObject data; + wxTheClipboard->GetData( data ); + long from, to; + tc->GetSelection(&from, &to); + if ( from < to ) + { + tc->Remove(from, to); + tc->WriteText(data.GetText()); + } + else + { + tc->WriteText(data.GetText()); + } + } + wxTheClipboard->Close(); + } + } + } + + return res; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnKey( wxKeyEvent &event ) +{ + + // + // Events to editor controls should get relayed here. + // + wxWindow* focused = wxWindow::FindFocus(); + + wxWindow* primaryCtrl = GetEditorControl(); + + if ( primaryCtrl && + (focused==primaryCtrl + || m_editorFocused) ) + { + // Child key must be processed here, since it can + // destroy the control which is referred by its own + // event handling. + HandleChildKey( event ); + } + else + HandleKeyEvent( event ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnKeyUp(wxKeyEvent &event) +{ + m_keyComboConsumed = 0; + + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnNavigationKey( wxNavigationKeyEvent& event ) +{ + // Ignore events that occur very close to focus set + if ( m_iFlags & wxPG_FL_IGNORE_NEXT_NAVKEY ) + { + m_iFlags &= ~(wxPG_FL_IGNORE_NEXT_NAVKEY); + event.Skip(); + return; + } + + wxPGProperty* next = (wxPGProperty*) NULL; + + int dir = event.GetDirection()?1:-1; + + if ( m_selected ) + { + if ( dir == 1 && (m_wndEditor || m_wndEditor2) ) + { + wxWindow* focused = wxWindow::FindFocus(); + + wxWindow* wndToCheck = GetEditorControl(); + + // ODComboBox focus goes to its text ctrl, so we need to use it instead + if ( wndToCheck && wndToCheck->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)) ) + { + wxTextCtrl* comboTextCtrl = ((wxOwnerDrawnComboBox*)wndToCheck)->GetTextCtrl(); + if ( comboTextCtrl ) + wndToCheck = comboTextCtrl; + } + + /* + // Because of problems navigating from wxButton, do not go to it. + if ( !wndToCheck ) + { + // No primary, use secondary + wndToCheck = m_wndEditor2; + } + // If it has editor button, focus to it after the primary editor. + // NB: Doesn't work since wxButton on wxMSW doesn't seem to propagate + // key events (yes, I'm using wxWANTS_CHARS with it, and yes I + // have somewhat debugged in window.cpp itself). + else if ( focused == wndToCheck && + m_wndEditor2 && + !(GetExtraStyle() & wxPG_EX_NO_TAB_TO_BUTTON) ) + { + wndToCheck = m_wndEditor2; + wxLogDebug(wxT("Exp1")); + } + */ + + if ( focused != wndToCheck && + wndToCheck ) + { + wndToCheck->SetFocus(); + + // Select all text in wxTextCtrl etc. + if ( m_wndEditor && wndToCheck == m_wndEditor ) + m_selected->GetEditorClass()->OnFocus(m_selected,wndToCheck); + + m_editorFocused = 1; + next = m_selected; + } + } + + if ( !next ) + { + next = wxPropertyGridIterator::OneStep(m_pState, wxPG_ITERATE_VISIBLE, m_selected, dir); + + if ( next ) + { + // This allows preventing NavigateOut to occur + DoSelectProperty( next, wxPG_SEL_FOCUS ); + } + } + } + + if ( !next ) + event.Skip(); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGrid::ButtonTriggerKeyTest( wxKeyEvent &event ) +{ + int keycode = event.GetKeyCode(); + + // Does the keycode trigger button? + if ( keycode == m_pushButKeyCode && + m_wndEditor2 && + (!m_pushButKeyCodeNeedsAlt || event.AltDown()) && + (!m_pushButKeyCodeNeedsCtrl || event.ControlDown()) ) + { + m_keyComboConsumed = 1; + + wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED,m_wndEditor2->GetId()); + GetEventHandler()->AddPendingEvent(evt); + return true; + } + + return false; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnChildKeyDown( wxKeyEvent &event ) +{ + int keycode = event.GetKeyCode(); + + // Ignore Alt and Control when they are down alone + if ( keycode == WXK_ALT || + keycode == WXK_CONTROL ) + { + event.Skip(); + return; + } + + if ( ButtonTriggerKeyTest(event) ) + return; + + if ( HandleChildKey(event) == true ) + event.Skip(); + + GetEventHandler()->AddPendingEvent(event); +} + +void wxPropertyGrid::OnChildKeyUp( wxKeyEvent &event ) +{ + m_keyComboConsumed = 0; + + GetEventHandler()->AddPendingEvent(event); + + event.Skip(); +} + +// ----------------------------------------------------------------------- +// wxPropertyGrid miscellaneous event handling +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnIdle( wxIdleEvent& WXUNUSED(event) ) +{ + // + // Check if the focus is in this control or one of its children + wxWindow* newFocused = wxWindow::FindFocus(); + + if ( newFocused != m_curFocused ) + HandleFocusChange( newFocused ); +} + +// Called by focus event handlers. newFocused is the window that becomes focused. +void wxPropertyGrid::HandleFocusChange( wxWindow* newFocused ) +{ + unsigned int oldFlags = m_iFlags; + + m_iFlags &= ~(wxPG_FL_FOCUSED); + + wxWindow* parent = newFocused; + + // This must be one of nextFocus' parents. + while ( parent ) + { + // Use m_eventObject, which is either wxPropertyGrid or + // wxPropertyGridManager, as appropriate. + if ( parent == m_eventObject ) + { + m_iFlags |= wxPG_FL_FOCUSED; + break; + } + parent = parent->GetParent(); + } + + m_curFocused = newFocused; + + if ( (m_iFlags & wxPG_FL_FOCUSED) != + (oldFlags & wxPG_FL_FOCUSED) ) + { + // On each focus kill, mark the next nav key event + // to be ignored (can't do on set focus since the + // event would occur before it). + if ( !(m_iFlags & wxPG_FL_FOCUSED) ) + { + m_iFlags |= wxPG_FL_IGNORE_NEXT_NAVKEY; + + // Need to store changed value + CommitChangesFromEditor(); + } + else + { + /* + // + // Preliminary code for tab-order respecting + // tab-traversal (but should be moved to + // OnNav handler) + // + wxWindow* prevFocus = event.GetWindow(); + wxWindow* useThis = this; + if ( m_iFlags & wxPG_FL_IN_MANAGER ) + useThis = GetParent(); + + if ( prevFocus && + prevFocus->GetParent() == useThis->GetParent() ) + { + wxList& children = useThis->GetParent()->GetChildren(); + + wxNode* node = children.Find(prevFocus); + + if ( node->GetNext() && + useThis == node->GetNext()->GetData() ) + DoSelectProperty(GetFirst()); + else if ( node->GetPrevious () && + useThis == node->GetPrevious()->GetData() ) + DoSelectProperty(GetLastProperty()); + + } + */ + + m_iFlags &= ~(wxPG_FL_IGNORE_NEXT_NAVKEY); + } + + // Redraw selected + if ( m_selected && (m_iFlags & wxPG_FL_INITIALIZED) ) + DrawItem( m_selected ); + } +} + +void wxPropertyGrid::OnFocusEvent( wxFocusEvent& event ) +{ + if ( event.GetEventType() == wxEVT_SET_FOCUS ) + HandleFocusChange((wxWindow*)event.GetEventObject()); + // Line changed to "else" when applying wxPropertyGrid patch #1675902 + //else if ( event.GetWindow() ) + else + HandleFocusChange(event.GetWindow()); + + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnChildFocusEvent( wxChildFocusEvent& event ) +{ + HandleFocusChange((wxWindow*)event.GetEventObject()); + + // + // event.Skip() being commented out is aworkaround for bug reported + // in ticket #4840 (wxScrolledWindow problem with automatic scrolling). + //event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnScrollEvent( wxScrollWinEvent &event ) +{ + m_iFlags |= wxPG_FL_SCROLLED; + + event.Skip(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGrid::OnCaptureChange( wxMouseCaptureChangedEvent& WXUNUSED(event) ) +{ + if ( m_iFlags & wxPG_FL_MOUSE_CAPTURED ) + { + m_iFlags &= ~(wxPG_FL_MOUSE_CAPTURED); + } +} + +// ----------------------------------------------------------------------- +// Property editor related functions +// ----------------------------------------------------------------------- + +// noDefCheck = true prevents infinite recursion. +wxPGEditor* wxPropertyGrid::RegisterEditorClass( wxPGEditor* editorclass, + const wxString& name, + bool noDefCheck ) +{ + wxASSERT( editorclass ); + + if ( !noDefCheck && wxPGGlobalVars->m_mapEditorClasses.empty() ) + RegisterDefaultEditors(); + + wxPGGlobalVars->m_mapEditorClasses[name] = (void*)editorclass; + + return editorclass; +} + +// Registers all default editor classes +void wxPropertyGrid::RegisterDefaultEditors() +{ + wxPGRegisterDefaultEditorClass( TextCtrl ); + wxPGRegisterDefaultEditorClass( Choice ); + wxPGRegisterDefaultEditorClass( ComboBox ); + wxPGRegisterDefaultEditorClass( TextCtrlAndButton ); +#if wxPG_INCLUDE_CHECKBOX + wxPGRegisterDefaultEditorClass( CheckBox ); +#endif + wxPGRegisterDefaultEditorClass( ChoiceAndButton ); + + // Register SpinCtrl etc. editors before use + RegisterAdditionalEditors(); +} + +// ----------------------------------------------------------------------- +// wxPGStringTokenizer +// Needed to handle C-style string lists (e.g. "str1" "str2") +// ----------------------------------------------------------------------- + +wxPGStringTokenizer::wxPGStringTokenizer( const wxString& str, wxChar delimeter ) + : m_str(&str), m_curPos(str.begin()), m_delimeter(delimeter) +{ +} + +wxPGStringTokenizer::~wxPGStringTokenizer() +{ +} + +bool wxPGStringTokenizer::HasMoreTokens() +{ + const wxString& str = *m_str; + + wxString::const_iterator i = m_curPos; + + wxUniChar delim = m_delimeter; + wxUniChar a; + wxUniChar prev_a = wxT('\0'); + + bool inToken = false; + + while ( i != str.end() ) + { + a = *i; + + if ( !inToken ) + { + if ( a == delim ) + { + inToken = true; + m_readyToken.clear(); + } + } + else + { + if ( prev_a != wxT('\\') ) + { + if ( a != delim ) + { + if ( a != wxT('\\') ) + m_readyToken << a; + } + else + { + i++; + m_curPos = i; + return true; + } + prev_a = a; + } + else + { + m_readyToken << a; + prev_a = wxT('\0'); + } + } + i++; + } + + m_curPos = str.end(); + + if ( inToken ) + return true; + + return false; +} + +wxString wxPGStringTokenizer::GetNextToken() +{ + return m_readyToken; +} + +// ----------------------------------------------------------------------- +// wxPGChoiceEntry +// ----------------------------------------------------------------------- + +wxPGChoiceEntry::wxPGChoiceEntry() + : wxPGCell(), m_value(wxPG_INVALID_VALUE) +{ +} + +wxPGChoiceEntry::wxPGChoiceEntry( const wxPGChoiceEntry& entry ) + : wxPGCell( entry.GetText(), entry.GetBitmap(), + entry.GetFgCol(), entry.GetBgCol() ), m_value(entry.GetValue()) +{ +} + +// ----------------------------------------------------------------------- +// wxPGChoicesData +// ----------------------------------------------------------------------- + +wxPGChoicesData::wxPGChoicesData() +{ + m_refCount = 1; +} + +wxPGChoicesData::~wxPGChoicesData() +{ + Clear(); +} + +void wxPGChoicesData::Clear() +{ + unsigned int i; + + for ( i=0; i<m_items.size(); i++ ) + { + delete Item(i); + } + +#if wxUSE_STL + m_items.resize(0); +#else + m_items.Empty(); +#endif +} + +void wxPGChoicesData::CopyDataFrom( wxPGChoicesData* data ) +{ + wxASSERT( m_items.size() == 0 ); + + unsigned int i; + + for ( i=0; i<data->GetCount(); i++ ) + m_items.push_back( new wxPGChoiceEntry(*data->Item(i)) ); +} + +// ----------------------------------------------------------------------- +// wxPGChoices +// ----------------------------------------------------------------------- + +wxPGChoiceEntry& wxPGChoices::Add( const wxString& label, int value ) +{ + EnsureData(); + + wxPGChoiceEntry* p = new wxPGChoiceEntry(label, value); + m_data->Insert( -1, p ); + return *p; +} + +// ----------------------------------------------------------------------- + +wxPGChoiceEntry& wxPGChoices::Add( const wxString& label, const wxBitmap& bitmap, int value ) +{ + EnsureData(); + + wxPGChoiceEntry* p = new wxPGChoiceEntry(label, value); + p->SetBitmap(bitmap); + m_data->Insert( -1, p ); + return *p; +} + +// ----------------------------------------------------------------------- + +wxPGChoiceEntry& wxPGChoices::Insert( const wxPGChoiceEntry& entry, int index ) +{ + EnsureData(); + + wxPGChoiceEntry* p = new wxPGChoiceEntry(entry); + m_data->Insert(index, p); + return *p; +} + +// ----------------------------------------------------------------------- + +wxPGChoiceEntry& wxPGChoices::Insert( const wxString& label, int index, int value ) +{ + EnsureData(); + + wxPGChoiceEntry* p = new wxPGChoiceEntry(label, value); + m_data->Insert( index, p ); + return *p; +} + +// ----------------------------------------------------------------------- + +wxPGChoiceEntry& wxPGChoices::AddAsSorted( const wxString& label, int value ) +{ + EnsureData(); + + size_t index = 0; + + while ( index < GetCount() ) + { + int cmpRes = GetLabel(index).Cmp(label); + if ( cmpRes > 0 ) + break; + index++; + } + + wxPGChoiceEntry* p = new wxPGChoiceEntry(label, value); + m_data->Insert( index, p ); + return *p; +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::Add( const wxChar** labels, const ValArrItem* values ) +{ + EnsureData(); + + unsigned int itemcount = 0; + const wxChar** p = &labels[0]; + while ( *p ) { p++; itemcount++; } + + unsigned int i; + for ( i = 0; i < itemcount; i++ ) + { + int value = wxPG_INVALID_VALUE; + if ( values ) + value = values[i]; + m_data->Insert( -1, new wxPGChoiceEntry(labels[i], value) ); + } +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::Add( const wxArrayString& arr, const ValArrItem* values ) +{ + EnsureData(); + + unsigned int i; + unsigned int itemcount = arr.size(); + + for ( i = 0; i < itemcount; i++ ) + { + int value = wxPG_INVALID_VALUE; + if ( values ) + value = values[i]; + m_data->Insert( -1, new wxPGChoiceEntry(arr[i], value) ); + } +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::Add( const wxArrayString& arr, const wxArrayInt& arrint ) +{ + EnsureData(); + + unsigned int i; + unsigned int itemcount = arr.size(); + + for ( i = 0; i < itemcount; i++ ) + { + int value = wxPG_INVALID_VALUE; + if ( &arrint && arrint.size() ) + value = arrint[i]; + m_data->Insert( -1, new wxPGChoiceEntry(arr[i], value) ); + } +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::RemoveAt(size_t nIndex, size_t count) +{ + wxASSERT( m_data->m_refCount != 0xFFFFFFF ); + unsigned int i; + for ( i=nIndex; i<(nIndex+count); i++) + delete m_data->Item(i); + m_data->m_items.RemoveAt(nIndex, count); +} + +// ----------------------------------------------------------------------- + +int wxPGChoices::Index( const wxString& str ) const +{ + if ( IsOk() ) + { + unsigned int i; + for ( i=0; i< m_data->GetCount(); i++ ) + { + if ( m_data->Item(i)->GetText() == str ) + return i; + } + } + return -1; +} + +// ----------------------------------------------------------------------- + +int wxPGChoices::Index( int val ) const +{ + if ( IsOk() ) + { + unsigned int i; + for ( i=0; i< m_data->GetCount(); i++ ) + { + if ( m_data->Item(i)->GetValue() == val ) + return i; + } + } + return -1; +} + +// ----------------------------------------------------------------------- + +wxArrayString wxPGChoices::GetLabels() const +{ + wxArrayString arr; + unsigned int i; + + if ( this && IsOk() ) + for ( i=0; i<GetCount(); i++ ) + arr.push_back(GetLabel(i)); + + return arr; +} + +// ----------------------------------------------------------------------- + +bool wxPGChoices::HasValues() const +{ + return true; +} + +// ----------------------------------------------------------------------- + +wxArrayInt wxPGChoices::GetValuesForStrings( const wxArrayString& strings ) const +{ + wxArrayInt arr; + + if ( IsOk() ) + { + unsigned int i; + for ( i=0; i< strings.size(); i++ ) + { + int index = Index(strings[i]); + if ( index >= 0 ) + arr.Add(GetValue(index)); + else + arr.Add(wxPG_INVALID_VALUE); + } + } + + return arr; +} + +// ----------------------------------------------------------------------- + +wxArrayInt wxPGChoices::GetIndicesForStrings( const wxArrayString& strings, + wxArrayString* unmatched ) const +{ + wxArrayInt arr; + + if ( IsOk() ) + { + unsigned int i; + for ( i=0; i< strings.size(); i++ ) + { + const wxString& str = strings[i]; + int index = Index(str); + if ( index >= 0 ) + arr.Add(index); + else if ( unmatched ) + unmatched->Add(str); + } + } + + return arr; +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::AssignData( wxPGChoicesData* data ) +{ + Free(); + + if ( data != wxPGChoicesEmptyData ) + { + m_data = data; + data->m_refCount++; + } +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::Init() +{ + m_data = wxPGChoicesEmptyData; +} + +// ----------------------------------------------------------------------- + +void wxPGChoices::Free() +{ + if ( m_data != wxPGChoicesEmptyData ) + { + m_data->DecRef(); + m_data = wxPGChoicesEmptyData; + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGridEvent +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxPropertyGridEvent, wxCommandEvent) + + +DEFINE_EVENT_TYPE( wxEVT_PG_SELECTED ) +DEFINE_EVENT_TYPE( wxEVT_PG_CHANGING ) +DEFINE_EVENT_TYPE( wxEVT_PG_CHANGED ) +DEFINE_EVENT_TYPE( wxEVT_PG_HIGHLIGHTED ) +DEFINE_EVENT_TYPE( wxEVT_PG_RIGHT_CLICK ) +DEFINE_EVENT_TYPE( wxEVT_PG_PAGE_CHANGED ) +DEFINE_EVENT_TYPE( wxEVT_PG_ITEM_EXPANDED ) +DEFINE_EVENT_TYPE( wxEVT_PG_ITEM_COLLAPSED ) +DEFINE_EVENT_TYPE( wxEVT_PG_DOUBLE_CLICK ) + + +// ----------------------------------------------------------------------- + +void wxPropertyGridEvent::Init() +{ + m_validationInfo = NULL; + m_canVeto = false; + m_wasVetoed = false; +} + +// ----------------------------------------------------------------------- + +wxPropertyGridEvent::wxPropertyGridEvent(wxEventType commandType, int id) + : wxCommandEvent(commandType,id) +{ + m_property = NULL; + Init(); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridEvent::wxPropertyGridEvent(const wxPropertyGridEvent& event) + : wxCommandEvent(event) +{ + m_eventType = event.GetEventType(); + m_eventObject = event.m_eventObject; + m_pg = event.m_pg; + m_property = event.m_property; + m_validationInfo = event.m_validationInfo; + m_canVeto = event.m_canVeto; + m_wasVetoed = event.m_wasVetoed; +} + +// ----------------------------------------------------------------------- + +wxPropertyGridEvent::~wxPropertyGridEvent() +{ +} + +// ----------------------------------------------------------------------- + +wxEvent* wxPropertyGridEvent::Clone() const +{ + return new wxPropertyGridEvent( *this ); +} + +void wxPropertyGrid::SetPropertyAttributeAll( const wxString& attrName, wxVariant value ) +{ + DoSetPropertyAttribute(GetRoot(), attrName, value, wxPG_RECURSE); +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPopulator +// ----------------------------------------------------------------------- + +wxPropertyGridPopulator::wxPropertyGridPopulator() +{ + m_state = NULL; + m_pg = NULL; + wxPGGlobalVars->m_offline++; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPopulator::SetState( wxPropertyGridPageState* state ) +{ + m_state = state; + m_propHierarchy.clear(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPopulator::SetGrid( wxPropertyGrid* pg ) +{ + m_pg = pg; + pg->Freeze(); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridPopulator::~wxPropertyGridPopulator() +{ + // + // Free unused sets of choices + wxPGHashMapS2P::iterator it; + + for( it = m_dictIdChoices.begin(); it != m_dictIdChoices.end(); ++it ) + { + wxPGChoicesData* data = (wxPGChoicesData*) it->second; + data->DecRef(); + } + + if ( m_pg ) + { + m_pg->Thaw(); + m_pg->GetPanel()->Refresh(); + } + wxPGGlobalVars->m_offline--; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPopulator::Add( const wxString& propClass, + const wxString& propLabel, + const wxString& propName, + const wxString* propValue, + wxPGChoices* pChoices ) +{ + wxClassInfo* classInfo = wxClassInfo::FindClass(propClass); + wxPGProperty* parent = GetCurParent(); + + if ( parent->HasFlag(wxPG_PROP_AGGREGATE) ) + { + ProcessError(wxString::Format(wxT("new children cannot be added to '%s'"),parent->GetName().c_str())); + return NULL; + } + + if ( !classInfo || !classInfo->IsKindOf(CLASSINFO(wxPGProperty)) ) + { + ProcessError(wxString::Format(wxT("'%s' is not valid property class"),propClass.c_str())); + return NULL; + } + + wxPGProperty* property = (wxPGProperty*) classInfo->CreateObject(); + + property->SetLabel(propLabel); + property->DoSetName(propName); + + if ( pChoices && pChoices->IsOk() ) + property->SetChoices(*pChoices); + + m_state->DoInsert(parent, -1, property); + + if ( propValue ) + property->SetValueFromString( *propValue, wxPG_FULL_VALUE ); + + return property; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPopulator::AddChildren( wxPGProperty* property ) +{ + m_propHierarchy.push_back(property); + DoScanForChildren(); + m_propHierarchy.pop_back(); +} + +// ----------------------------------------------------------------------- + +wxPGChoices wxPropertyGridPopulator::ParseChoices( const wxString& choicesString, + const wxString& idString ) +{ + wxPGChoices choices; + + // Using id? + if ( choicesString[0] == wxT('@') ) + { + wxString ids = choicesString.substr(1); + wxPGHashMapS2P::iterator it = m_dictIdChoices.find(ids); + if ( it == m_dictIdChoices.end() ) + ProcessError(wxString::Format(wxT("No choices defined for id '%s'"),ids.c_str())); + else + choices.AssignData((wxPGChoicesData*)it->second); + } + else + { + bool found = false; + if ( idString.length() ) + { + wxPGHashMapS2P::iterator it = m_dictIdChoices.find(idString); + if ( it != m_dictIdChoices.end() ) + { + choices.AssignData((wxPGChoicesData*)it->second); + found = true; + } + } + + if ( !found ) + { + // Parse choices string + wxString::const_iterator it = choicesString.begin(); + wxString label; + wxString value; + int state = 0; + bool labelValid = false; + + for ( ; it != choicesString.end(); it++ ) + { + wxChar c = *it; + + if ( state != 1 ) + { + if ( c == wxT('"') ) + { + if ( labelValid ) + { + long l; + if ( !value.ToLong(&l, 0) ) l = wxPG_INVALID_VALUE; + choices.Add(label, l); + } + labelValid = false; + //wxLogDebug(wxT("%s, %s"),label.c_str(),value.c_str()); + value.clear(); + label.clear(); + state = 1; + } + else if ( c == wxT('=') ) + { + if ( labelValid ) + { + state = 2; + } + } + else if ( state == 2 && (wxIsalnum(c) || c == wxT('x')) ) + { + value << c; + } + } + else + { + if ( c == wxT('"') ) + { + state = 0; + labelValid = true; + } + else + label << c; + } + } + + if ( labelValid ) + { + long l; + if ( !value.ToLong(&l, 0) ) l = wxPG_INVALID_VALUE; + choices.Add(label, l); + } + + if ( !choices.IsOk() ) + { + choices.EnsureData(); + } + + // Assign to id + if ( idString.length() ) + m_dictIdChoices[idString] = choices.GetData(); + } + } + + return choices; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPopulator::ToLongPCT( const wxString& s, long* pval, long max ) +{ + if ( s.Last() == wxT('%') ) + { + wxString s2 = s.substr(0,s.length()-1); + long val; + if ( s2.ToLong(&val, 10) ) + { + *pval = (val*max)/100; + return true; + } + return false; + } + + return s.ToLong(pval, 10); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPopulator::AddAttribute( const wxString& name, + const wxString& type, + const wxString& value ) +{ + int l = m_propHierarchy.size(); + if ( !l ) + return false; + + wxPGProperty* p = m_propHierarchy[l-1]; + wxString valuel = value.Lower(); + wxVariant variant; + + if ( type.length() == 0 ) + { + long v; + + // Auto-detect type + if ( valuel == wxT("true") || valuel == wxT("yes") || valuel == wxT("1") ) + variant = true; + else if ( valuel == wxT("false") || valuel == wxT("no") || valuel == wxT("0") ) + variant = false; + else if ( value.ToLong(&v, 0) ) + variant = v; + else + variant = value; + } + else + { + if ( type == wxT("string") ) + { + variant = value; + } + else if ( type == wxT("int") ) + { + long v = 0; + value.ToLong(&v, 0); + variant = v; + } + else if ( type == wxT("bool") ) + { + if ( valuel == wxT("true") || valuel == wxT("yes") || valuel == wxT("1") ) + variant = true; + else + variant = false; + } + else + { + ProcessError(wxString::Format(wxT("Invalid attribute type '%s'"),type.c_str())); + return false; + } + } + + p->SetAttribute( name, variant ); + + return true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPopulator::ProcessError( const wxString& msg ) +{ + wxLogError(_("Error in resource: %s"),msg.c_str()); +} + +// ----------------------------------------------------------------------- diff --git a/src/propgrid/propgridiface.cpp b/src/propgrid/propgridiface.cpp new file mode 100644 index 0000000000..bf59ef0305 --- /dev/null +++ b/src/propgrid/propgridiface.cpp @@ -0,0 +1,1183 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/propgridiface.cpp +// Purpose: wxPropertyGridInterface class +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-24 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" + #include "wx/frame.h" +#endif + +#include <wx/propgrid/property.h> +#include <wx/propgrid/propgrid.h> + + +const wxChar *wxPGTypeName_long = wxT("long"); +const wxChar *wxPGTypeName_bool = wxT("bool"); +const wxChar *wxPGTypeName_double = wxT("double"); +const wxChar *wxPGTypeName_wxString = wxT("string"); +const wxChar *wxPGTypeName_void = wxT("void*"); +const wxChar *wxPGTypeName_wxArrayString = wxT("arrstring"); + + +// ---------------------------------------------------------------------------- +// VariantDatas +// ---------------------------------------------------------------------------- + +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataPoint, wxPoint) +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataSize, wxSize) +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataArrayInt, wxArrayInt) +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataLongLong, wxLongLong) +WX_PG_IMPLEMENT_VARIANT_DATA(wxPGVariantDataULongLong, wxULongLong) + +WX_PG_IMPLEMENT_WXOBJECT_VARIANT_DATA(wxPGVariantDataFont, wxFont) + +wxObject* wxPG_VariantToWxObject( const wxVariant& variant, wxClassInfo* classInfo ) +{ + if ( !variant.IsValueKindOf(classInfo) ) + return (wxObject*) NULL; + + wxVariantData* vdata = variant.GetData(); + + wxPGVariantData* pgvdata = wxDynamicCastVariantData(vdata, wxPGVariantData); + if ( pgvdata ) + return (wxObject*) pgvdata->GetValuePtr(); + + if ( wxPGIsVariantClassInfo(wxPGVariantDataGetClassInfo(vdata), wxobject) ) + return variant.GetWxObjectPtr(); + + return (wxObject*) NULL; +} + +// ----------------------------------------------------------------------- +// wxVariant helpers +// ----------------------------------------------------------------------- + +long wxPGVariantToInt( const wxVariant& variant, long defVal ) +{ + if ( variant.IsNull() ) + return defVal; + + if ( wxPGIsVariantType(variant, long) ) + return variant.GetLong(); + + if ( wxPGIsVariantType(variant, bool) ) + return variant.GetBool() ? 1 : 0; + + if ( typeid(*variant.GetData()) == typeid(wxPGVariantDataLongLong) ) + { + wxLongLong ll = ((const wxPGVariantDataLongLong&)variant).GetValue(); + if ( ll >= LONG_MAX ) + return LONG_MAX; + else if ( ll <= LONG_MIN ) + return LONG_MIN; + return ll.ToLong(); + } + + long l = defVal; + + if ( wxPGIsVariantType(variant, string) ) + variant.GetString().ToLong(&l, 0); + + return l; +} + +// ----------------------------------------------------------------------- + +bool wxPGVariantToLongLong( const wxVariant& variant, wxLongLong_t* pResult ) +{ + if ( variant.IsNull() ) + return false; + + if ( wxPGIsVariantType(variant, long) ) + { + *pResult = variant.GetLong(); + return true; + } + + if ( typeid(*variant.GetData()) == typeid(wxPGVariantDataLongLong) ) + { + *pResult = ((const wxPGVariantDataLongLong&)variant).GetValue().GetValue(); + return true; + } + + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPGVariantToULongLong( const wxVariant& variant, wxULongLong_t* pResult ) +{ + if ( variant.IsNull() ) + return false; + + if ( wxPGIsVariantType(variant, long) ) + { + *pResult = (unsigned long)variant.GetLong(); + return true; + } + + if ( typeid(*variant.GetData()) == typeid(wxPGVariantDataULongLong) ) + { + *pResult = ((const wxPGVariantDataULongLong&)variant).GetValue().GetValue(); + return true; + } + + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPGVariantToDouble( const wxVariant& variant, double* pResult ) +{ + if ( variant.IsNull() ) + return false; + + if ( wxPGIsVariantType(variant, double) ) + { + *pResult = variant.GetDouble(); + return true; + } + + if ( wxPGIsVariantType(variant, long) ) + { + *pResult = (double)variant.GetLong(); + return true; + } + + if ( typeid(*variant.GetData()) == typeid(wxPGVariantDataLongLong) ) + { + wxLongLong ll = ((const wxPGVariantDataLongLong&)variant).GetValue(); + *pResult = ll.ToDouble(); + return true; + } + + if ( wxPGIsVariantType(variant, string) ) + if ( variant.GetString().ToDouble(pResult) ) + return true; + + return false; +} + +// ----------------------------------------------------------------------- +// Choice related methods +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::AddPropertyChoice( wxPGPropArg id, + const wxString& label, + int value ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + p->InsertChoice(label,-1,value); +} + + +void wxPropertyGridInterface::InsertPropertyChoice( wxPGPropArg id, + const wxString& label, + int index, + int value ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + p->InsertChoice(label,index,value); +} + + +void wxPropertyGridInterface::DeletePropertyChoice( wxPGPropArg id, + int index ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + p->DeleteChoice(index); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::RefreshGrid( wxPropertyGridPageState* state ) +{ + if ( !state ) + state = m_pState; + + wxPropertyGrid* grid = state->GetGrid(); + if ( grid->GetState() == state && !grid->IsFrozen() ) + { + grid->Refresh(); + } +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::Append( wxPGProperty* property ) +{ + wxPGProperty* retp = m_pState->DoAppend(property); + + wxPropertyGrid* grid = m_pState->GetGrid(); + if ( grid ) + grid->RefreshGrid(); + + return retp; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::AppendIn( wxPGPropArg id, wxPGProperty* newproperty ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + wxPGProperty* pwc = (wxPGProperty*) p; + wxPGProperty* retp = m_pState->DoInsert(pwc, pwc->GetChildCount(), newproperty); + return retp; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::Insert( wxPGPropArg id, wxPGProperty* property ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + wxPGProperty* retp = m_pState->DoInsert(p->GetParent(), p->GetArrIndex(), property); + RefreshGrid(); + return retp; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::Insert( wxPGPropArg id, int index, wxPGProperty* newproperty ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + wxPGProperty* retp = m_pState->DoInsert((wxPGProperty*)p,index,newproperty); + RefreshGrid(); + return retp; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::DeleteProperty( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + wxPropertyGridPageState* state = p->GetParentState(); + wxPropertyGrid* grid = state->GetGrid(); + + if ( grid->GetState() == state ) + { + bool selRes = grid->DoSelectProperty(NULL, wxPG_SEL_DELETING); + wxPG_CHECK_RET_DBG( selRes, + wxT("failed to deselect a property (editor probably had invalid value)") ); + } + + state->DoDelete( p ); + + RefreshGrid(state); +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::ReplaceProperty( wxPGPropArg id, wxPGProperty* property ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + + wxPGProperty* replaced = p; + wxCHECK_MSG( replaced && property, + wxNullProperty, + wxT("NULL property") ); + wxCHECK_MSG( !replaced->IsCategory(), + wxNullProperty, + wxT("cannot replace this type of property") ); + wxCHECK_MSG( !m_pState->IsInNonCatMode(), + wxNullProperty, + wxT("cannot replace properties in alphabetic mode") ); + + // Get address to the slot + wxPGProperty* parent = replaced->GetParent(); + int ind = replaced->GetIndexInParent(); + + wxPropertyGridPageState* state = replaced->GetParentState(); + DeleteProperty(replaced); // Must use generic Delete + state->DoInsert(parent,ind,property); + + return property; +} + +// ----------------------------------------------------------------------- +// wxPropertyGridInterface property operations +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::ClearSelection() +{ + wxPropertyGridPageState* state = m_pState; + wxPropertyGrid* pg = state->GetGrid(); + if ( pg->GetState() == state ) + return pg->DoClearSelection(); + else + state->SetSelection(NULL); + return true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::LimitPropertyEditing( wxPGPropArg id, bool limit ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + m_pState->DoLimitPropertyEditing(p, limit); + RefreshProperty(p); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::EnableProperty( wxPGPropArg id, bool enable ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + wxPropertyGridPageState* state = p->GetParentState(); + wxPropertyGrid* grid = state->GetGrid(); + + if ( enable ) + { + if ( !(p->m_flags & wxPG_PROP_DISABLED) ) + return false; + + // If active, Set active Editor. + if ( grid->GetState() == state && p == grid->GetSelection() ) + grid->DoSelectProperty( p, wxPG_SEL_FORCE ); + } + else + { + if ( p->m_flags & wxPG_PROP_DISABLED ) + return false; + + // If active, Disable as active Editor. + if ( grid->GetState() == state && p == grid->GetSelection() ) + grid->DoSelectProperty( p, wxPG_SEL_FORCE ); + } + + state->DoEnableProperty(p, enable); + + RefreshProperty( p ); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::ExpandAll( bool doExpand ) +{ + wxPropertyGridPageState* state = m_pState; + + if ( !state->DoGetRoot()->GetChildCount() ) + return true; + + wxPropertyGrid* pg = state->GetGrid(); + + if ( GetSelection() && GetSelection() != state->DoGetRoot() && + !doExpand ) + { + if ( !pg->ClearSelection() ) + return false; + } + + wxPGVIterator it; + + for ( it = GetVIterator( wxPG_ITERATE_ALL ); !it.AtEnd(); it.Next() ) + { + wxPGProperty* p = (wxPGProperty*) it.GetProperty(); + if ( p->GetChildCount() ) + { + if ( doExpand ) + { + if ( !p->IsExpanded() ) + { + state->DoExpand(p); + } + } + else + { + if ( p->IsExpanded() ) + { + state->DoCollapse(p); + } + } + } + } + + pg->RecalculateVirtualSize(); + + RefreshGrid(); + + return true; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetPropertyValueUnspecified( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + wxPropertyGrid* propGrid = p->GetGridIfDisplayed(); + if ( propGrid ) + propGrid->DoSetPropertyValueUnspecified(p); + else + p->GetParentState()->DoSetPropertyValueUnspecified(p); +} + +// ----------------------------------------------------------------------- +// wxPropertyGridInterface property value setting and getting +// ----------------------------------------------------------------------- + +void wxPGGetFailed( const wxPGProperty* p, const wxChar* typestr ) +{ + wxPGTypeOperationFailed(p,typestr,wxT("Get")); +} + +// ----------------------------------------------------------------------- + +void wxPGTypeOperationFailed( const wxPGProperty* p, const wxChar* typestr, + const wxChar* op ) +{ + wxASSERT( p != NULL ); + wxLogError( _("Type operation \"%s\" failed: Property labeled \"%s\" is of type \"%s\", NOT \"%s\"."), + op,p->GetLabel().c_str(),p->GetValue().GetType().c_str(),typestr ); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetPropVal( wxPGPropArg id, wxVariant& value ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + if ( p ) + { + p->SetValue(value); + wxPropertyGrid* propGrid = p->GetGridIfDisplayed(); + if ( propGrid ) + propGrid->DrawItemAndValueRelated( p ); + + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetPropertyValueString( wxPGPropArg id, const wxString& value ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + if ( m_pState->DoSetPropertyValueString(p,value) ) + { + wxPropertyGrid* propGrid = p->GetGridIfDisplayed(); + if ( propGrid ) + propGrid->DrawItemAndValueRelated( p ); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetValidationFailureBehavior( int vfbFlags ) +{ + GetPropertyGrid()->m_permanentValidationFailureBehavior = vfbFlags; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::GetPropertyByNameA( const wxString& name ) const +{ + wxPGProperty* p = GetPropertyByName(name); + wxASSERT_MSG(p,wxString::Format(wxT("no property with name '%s'"),name.c_str())); + return p; +} + +// ---------------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::GetPropertyByLabel( const wxString& label ) const +{ + wxPGVIterator it; + + for ( it = GetVIterator( wxPG_ITERATE_PROPERTIES ); !it.AtEnd(); it.Next() ) + { + if ( it.GetProperty()->GetLabel() == label ) + return it.GetProperty(); + } + + return wxNullProperty; +} + +// ---------------------------------------------------------------------------- + +void wxPropertyGridInterface::DoSetPropertyAttribute( wxPGPropArg id, const wxString& name, + wxVariant& value, long argFlags ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + p->SetAttribute( name, value ); + + if ( argFlags & wxPG_RECURSE ) + { + unsigned int i; + for ( i = 0; i < p->GetChildCount(); i++ ) + DoSetPropertyAttribute(p->Item(i), name, value, argFlags); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::GetPropertiesWithFlag( wxArrayPGProperty* targetArr, + wxPGProperty::FlagType flags, + bool inverse, + int iterFlags ) const +{ + wxASSERT( targetArr ); + wxPGVIterator it = GetVIterator( iterFlags ); + + for ( ; + !it.AtEnd(); + it.Next() ) + { + const wxPGProperty* property = it.GetProperty(); + + if ( !inverse ) + { + if ( (property->GetFlags() & flags) == flags ) + targetArr->push_back((wxPGProperty*)property); + } + else + { + if ( (property->GetFlags() & flags) != flags ) + targetArr->push_back((wxPGProperty*)property); + } + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetPropertiesFlag( const wxArrayPGProperty& srcArr, + wxPGProperty::FlagType flags, + bool inverse ) +{ + unsigned int i; + + for ( i=0; i<srcArr.size(); i++ ) + { + wxPGProperty* property = srcArr[i]; + + if ( !inverse ) + property->SetFlag(flags); + else + property->ClearFlag(flags); + } + + // If collapsed flag or hidden was manipulated, we need to update virtual + // size. + wxPropertyGrid* pg = GetPropertyGrid(); + if ( flags & (wxPG_PROP_COLLAPSED|wxPG_PROP_HIDDEN) ) + { + GetState()->VirtualHeightChanged(); + pg->RecalculateVirtualSize(); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetBoolChoices( const wxString& trueChoice, + const wxString& falseChoice ) +{ + wxPGGlobalVars->m_boolChoices[0] = falseChoice; + wxPGGlobalVars->m_boolChoices[1] = trueChoice; +} + +// ----------------------------------------------------------------------- + +wxPGChoices gs_emptyChoices; + +wxPGChoices& wxPropertyGridInterface::GetPropertyChoices( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(gs_emptyChoices) + + wxPGChoiceInfo ci; + ci.m_choices = (wxPGChoices*) NULL; + + p->GetChoiceInfo(&ci); + + if ( !ci.m_choices ) + return gs_emptyChoices; + + return *ci.m_choices; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::DoGetPropertyByName( const wxString& name ) const +{ + return m_pState->BaseGetPropertyByName(name); +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridInterface::GetPropertyByName( const wxString& name, + const wxString& subname ) const +{ + wxPGProperty* p = DoGetPropertyByName(name); + if ( !p || !p->GetChildCount() ) + return wxNullProperty; + + return p->GetPropertyByName(subname); +} + +// ----------------------------------------------------------------------- + +// Since GetPropertyByName is used *a lot*, this makes sense +// since non-virtual method can be called with less code. +wxPGProperty* wxPropertyGridInterface::GetPropertyByName( const wxString& name ) const +{ + wxPGProperty* p = DoGetPropertyByName(name); + if ( p ) + return p; + + // Check if its "Property.SubProperty" format + int pos = name.Find(wxT('.')); + if ( pos <= 0 ) + return NULL; + + return GetPropertyByName(name.substr(0,pos), + name.substr(pos+1,name.length()-pos-1)); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::HideProperty( wxPGPropArg id, bool hide, int flags ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + wxPropertyGrid* pg = m_pState->GetGrid(); + + if ( pg == p->GetGrid() ) + return pg->DoHideProperty(p, hide, flags); + else + m_pState->DoHideProperty(p, hide, flags); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::Collapse( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + wxPropertyGrid* pg = p->GetGridIfDisplayed(); + if ( pg ) + return pg->DoCollapse(p); + + return p->GetParentState()->DoCollapse(p); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::Expand( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + wxPropertyGrid* pg = p->GetGridIfDisplayed(); + if ( pg ) + return pg->DoExpand(p); + + return p->GetParentState()->DoExpand(p); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::SetPropertyLabel( wxPGPropArg id, const wxString& newproplabel ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + + p->SetLabel( newproplabel ); + + wxPropertyGridPageState* state = p->GetParentState(); + wxPropertyGrid* pg = state->GetGrid(); + + if ( pg->HasFlag(wxPG_AUTO_SORT) ) + pg->SortChildren(p->GetParent()); + + if ( pg->GetState() == state ) + { + if ( pg->HasFlag(wxPG_AUTO_SORT) ) + pg->Refresh(); + else + pg->DrawItem( p ); + } +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::SetPropertyMaxLength( wxPGPropArg id, int maxLen ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + + wxPropertyGrid* pg = m_pState->GetGrid(); + + p->m_maxLen = (short) maxLen; + + // Adjust control if selected currently + if ( pg == p->GetGrid() && p == m_pState->GetSelection() ) + { + wxWindow* wnd = pg->GetEditorControl(); + wxTextCtrl* tc = wxDynamicCast(wnd,wxTextCtrl); + if ( tc ) + tc->SetMaxLength( maxLen ); + else + // Not a text ctrl + return false; + } + + return true; +} + +// ----------------------------------------------------------------------- +// GetPropertyValueAsXXX methods + +#define IMPLEMENT_GET_VALUE(T,TRET,BIGNAME,DEFRETVAL) \ +TRET wxPropertyGridInterface::GetPropertyValueAs##BIGNAME( wxPGPropArg id ) const \ +{ \ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(DEFRETVAL) \ + wxVariant value = p->GetValue(); \ + if ( wxStrcmp(value.GetType(), wxPGTypeName_##T) != 0 ) \ + { \ + wxPGGetFailed(p,wxPGTypeName_##T); \ + return (TRET)DEFRETVAL; \ + } \ + return (TRET)value.Get##BIGNAME(); \ +} + +// String is different than others. +wxString wxPropertyGridInterface::GetPropertyValueAsString( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxEmptyString) + return p->GetValueAsString(wxPG_FULL_VALUE); +} + +bool wxPropertyGridInterface::GetPropertyValueAsBool( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + wxVariant value = p->GetValue(); + if ( wxStrcmp(value.GetType(), wxPGTypeName_bool) == 0 ) + { + return value.GetBool(); + } + if ( wxStrcmp(value.GetType(), wxPGTypeName_long) == 0 ) + { + return value.GetLong()?true:false; + } + wxPGGetFailed(p,wxPGTypeName_bool); + return false; +} + +IMPLEMENT_GET_VALUE(long,long,Long,0) +IMPLEMENT_GET_VALUE(double,double,Double,0.0) +IMPLEMENT_GET_VALUE(void,void*,VoidPtr,NULL) + +// wxObject is different than others. +wxObject* wxPropertyGridInterface::GetPropertyValueAsWxObjectPtr( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL((wxObject*)NULL) + + wxVariant value = p->GetValue(); + wxVariantData* vdata = value.GetData(); + + if ( !vdata->GetValueClassInfo() ) + return (wxObject*) NULL; + + wxPGVariantData* pgvdata = wxDynamicCastVariantData(vdata, wxPGVariantData); + if ( pgvdata ) + return (wxObject*) pgvdata->GetValuePtr(); + + if ( wxPGIsVariantClassInfo(wxPGVariantDataGetClassInfo(vdata), wxobject) ) + return (wxObject*) value.GetWxObjectPtr(); + + return (wxObject*) NULL; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::IsPropertyExpanded( wxPGPropArg id ) const +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) + return p->IsExpanded(); +} + +// ----------------------------------------------------------------------- +// wxPropertyGridInterface wrappers +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::ChangePropertyValue( wxPGPropArg id, wxVariant newValue ) +{ + return GetPropertyGrid()->ChangePropertyValue(id, newValue); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::BeginAddChildren( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + wxCHECK_RET( p->HasFlag(wxPG_PROP_AGGREGATE), wxT("only call on properties with fixed children") ); + p->ClearFlag(wxPG_PROP_AGGREGATE); + p->SetFlag(wxPG_PROP_MISC_PARENT); +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridInterface::EditorValidate() +{ + return GetPropertyGrid()->DoEditorValidate(); +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridInterface::EndAddChildren( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG() + wxCHECK_RET( p->HasFlag(wxPG_PROP_MISC_PARENT), wxT("only call on properties for which BeginAddChildren was called prior") ); + p->ClearFlag(wxPG_PROP_MISC_PARENT); + p->SetFlag(wxPG_PROP_AGGREGATE); +} + +// ----------------------------------------------------------------------- +// wxPGVIterator_State +// ----------------------------------------------------------------------- + +// Default returned by wxPropertyGridInterface::GetVIterator(). +class wxPGVIteratorBase_State : public wxPGVIteratorBase +{ +public: + wxPGVIteratorBase_State( wxPropertyGridPageState* state, int flags ) + { + m_it.Init( state, flags ); + } + virtual ~wxPGVIteratorBase_State() { } + virtual void Next() { m_it.Next(); } +}; + +wxPGVIterator wxPropertyGridInterface::GetVIterator( int flags ) const +{ + return wxPGVIterator( new wxPGVIteratorBase_State( m_pState, flags ) ); +} + +// ----------------------------------------------------------------------- +// wxPGEditableState related functions +// ----------------------------------------------------------------------- + +// EscapeDelimiters() changes ";" into "\;" and "|" into "\|" +// in the input string. This is an internal functions which is +// used for saving states +// NB: Similar function exists in aui/framemanager.cpp +static wxString EscapeDelimiters(const wxString& s) +{ + wxString result; + result.Alloc(s.length()); + const wxChar* ch = s.c_str(); + while (*ch) + { + if (*ch == wxT(';') || *ch == wxT('|') || *ch == wxT(',')) + result += wxT('\\'); + result += *ch; + ++ch; + } + return result; +} + +wxString wxPropertyGridInterface::SaveEditableState( int includedStates ) const +{ + wxString result; + + // + // Save state on page basis + size_t pageIndex = 0; + wxPropertyGridPageState* pageState = GetPageState(pageIndex); + wxArrayPtrVoid pageStates; + while ( pageState ) + { + pageStates.Add(pageState); + pageIndex += 1; + pageState = GetPageState(pageIndex); + } + + for ( pageIndex=0; pageIndex < pageStates.size(); pageIndex++ ) + { + wxPropertyGridPageState* pageState = (wxPropertyGridPageState*) pageStates[pageIndex]; + + if ( includedStates & SelectionState ) + { + wxString sel; + if ( pageState->GetSelection() ) + sel = pageState->GetSelection()->GetName(); + result += wxS("selection="); + result += EscapeDelimiters(sel); + result += wxS(";"); + } + if ( includedStates & ExpandedState ) + { + wxArrayPGProperty ptrs; + wxPropertyGridConstIterator it = + wxPropertyGridConstIterator( pageState, + wxPG_ITERATE_ALL_PARENTS_RECURSIVELY|wxPG_ITERATE_HIDDEN, + wxNullProperty ); + + result += wxS("expanded="); + + for ( ; + !it.AtEnd(); + it.Next() ) + { + const wxPGProperty* p = it.GetProperty(); + + if ( !p->HasFlag(wxPG_PROP_COLLAPSED) ) + result += EscapeDelimiters(p->GetName()); + result += wxS(","); + + } + + if ( result.Last() == wxS(',') ) + result.RemoveLast(); + + result += wxS(";"); + } + if ( includedStates & ScrollPosState ) + { + int x, y; + GetPropertyGrid()->GetViewStart(&x,&y); + result += wxString::Format(wxS("scrollpos=%i,%i;"), x, y); + } + if ( includedStates & SplitterPosState ) + { + result += wxS("splitterpos="); + + for ( size_t i=0; i<pageState->GetColumnCount(); i++ ) + result += wxString::Format(wxS("%i,"), pageState->DoGetSplitterPosition(i)); + + result.RemoveLast(); // Remove last comma + result += wxS(";"); + } + if ( includedStates & PageState ) + { + result += wxS("ispageselected="); + + if ( GetPageState(-1) == pageState ) + result += wxS("1;"); + else + result += wxS("0;"); + } + result.RemoveLast(); // Remove last semicolon + result += wxS("|"); + } + + // Remove last '|' + if ( result.length() ) + result.RemoveLast(); + + return result; +} + +bool wxPropertyGridInterface::RestoreEditableState( const wxString& src, int restoreStates ) +{ + wxPropertyGrid* pg = GetPropertyGrid(); + wxPGProperty* newSelection = NULL; + size_t pageIndex; + long vx = -1; + long vy = -1; + long selectedPage = -1; + bool pgSelectionSet = false; + bool res = true; + + pg->Freeze(); + wxArrayString pageStrings = ::wxSplit(src, wxS('|'), wxS('\\')); + + for ( pageIndex=0; pageIndex<pageStrings.size(); pageIndex++ ) + { + wxPropertyGridPageState* pageState = GetPageState(pageIndex); + if ( !pageState ) + break; + + wxArrayString kvpairStrings = ::wxSplit(pageStrings[pageIndex], wxS(';'), wxS('\\')); + + for ( size_t i=0; i<kvpairStrings.size(); i++ ) + { + const wxString& kvs = kvpairStrings[i]; + int eq_pos = kvs.Find(wxS('=')); + if ( eq_pos != wxNOT_FOUND ) + { + wxString key = kvs.substr(0, eq_pos); + wxString value = kvs.substr(eq_pos+1); + + // Further split value by commas + wxArrayString values = ::wxSplit(value, wxS(','), wxS('\\')); + + if ( key == wxS("expanded") ) + { + if ( restoreStates & ExpandedState ) + { + wxPropertyGridIterator it = + wxPropertyGridIterator( pageState, + wxPG_ITERATE_ALL, + wxNullProperty ); + + // First collapse all + for ( ; !it.AtEnd(); it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + pageState->DoCollapse(p); + } + + // Then expand those which names are in values + for ( size_t n=0; n<values.size(); n++ ) + { + const wxString& name = values[n]; + wxPGProperty* prop = GetPropertyByName(name); + if ( prop ) + pageState->DoExpand(prop); + } + } + } + else if ( key == wxS("scrollpos") ) + { + if ( restoreStates & ScrollPosState ) + { + if ( values.size() == 2 ) + { + values[0].ToLong(&vx); + values[1].ToLong(&vy); + } + else + { + res = false; + } + } + } + else if ( key == wxS("splitterpos") ) + { + if ( restoreStates & SplitterPosState ) + { + for ( size_t n=1; n<values.size(); n++ ) + { + long pos = 0; + values[n].ToLong(&pos); + if ( pos > 0 ) + pageState->DoSetSplitterPosition(pos, n); + } + } + } + else if ( key == wxS("selection") ) + { + if ( restoreStates & SelectionState ) + { + if ( values.size() > 0 ) + { + if ( pageState->IsDisplayed() ) + { + if ( values[0].length() ) + newSelection = GetPropertyByName(value); + pgSelectionSet = true; + } + else + { + if ( values[0].length() ) + pageState->SetSelection(GetPropertyByName(value)); + else + pageState->DoClearSelection(); + } + } + } + } + else if ( key == wxS("ispageselected") ) + { + if ( restoreStates & PageState ) + { + long pageSelStatus; + if ( values.size() == 1 && values[0].ToLong(&pageSelStatus) ) + { + if ( pageSelStatus ) + selectedPage = pageIndex; + } + else + { + res = false; + } + } + } + else + { + res = false; + } + } + } + } + + // + // Force recalculation of virtual heights of all pages + // (may be needed on unclean source string). + pageIndex = 0; + wxPropertyGridPageState* pageState = GetPageState(pageIndex); + while ( pageState ) + { + pageState->VirtualHeightChanged(); + pageIndex += 1; + pageState = GetPageState(pageIndex); + } + + pg->Thaw(); + + // + // Selection of visible grid page must be set after Thaw() call + if ( pgSelectionSet ) + { + if ( newSelection ) + pg->SelectProperty(newSelection); + else + pg->ClearSelection(); + } + + if ( selectedPage != -1 ) + { + DoSelectPage(selectedPage); + } + + if ( vx >= 0 ) + { + pg->Scroll(vx, vy); + } + + return res; +} + diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp new file mode 100644 index 0000000000..425ab026da --- /dev/null +++ b/src/propgrid/propgridpagestate.cpp @@ -0,0 +1,1871 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/propgridpagestate.cpp +// Purpose: wxPropertyGridPageState class +// Author: Jaakko Salli +// Modified by: +// Created: 2008-08-24 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" + #include "wx/frame.h" +#endif + +// This define is necessary to prevent macro clearing +#define __wxPG_SOURCE_FILE__ + +#include <wx/propgrid/propgridpagestate.h> +#include <wx/propgrid/propgrid.h> +#include <wx/propgrid/editors.h> + + +#define wxPG_DEFAULT_SPLITTERX 110 + + +// ----------------------------------------------------------------------- +// wxPropertyGridIterator +// ----------------------------------------------------------------------- + +void wxPropertyGridIteratorBase::Init( wxPropertyGridPageState* state, int flags, wxPGProperty* property, int dir ) +{ + wxASSERT( dir == 1 || dir == -1 ); + + m_state = state; + m_baseParent = state->DoGetRoot(); + if ( !property && m_baseParent->GetChildCount() ) + property = m_baseParent->Item(0); + + m_property = property; + + wxPG_ITERATOR_CREATE_MASKS(flags, m_itemExMask, m_parentExMask) + + // Need to skip first? + if ( property && (property->GetFlags() & m_itemExMask) ) + { + if ( dir == 1 ) + Next(); + else + Prev(); + } +} + +void wxPropertyGridIteratorBase::Init( wxPropertyGridPageState* state, int flags, int startPos, int dir ) +{ + wxPGProperty* property; + + if ( startPos == wxTOP ) + { + property = NULL; + if ( dir == 0 ) + dir = 1; + } + else if ( startPos == wxBOTTOM ) + { + property = state->GetLastItem(flags); + if ( dir == 0 ) + dir = -1; + } + else + { + wxASSERT_MSG( false, wxT("Only supported stating positions are wxTOP and wxBOTTOM") ); + property = NULL; + } + + Init( state, flags, property, dir ); +} + +void wxPropertyGridIteratorBase::Assign( const wxPropertyGridIteratorBase& it ) +{ + m_property = it.m_property; + m_state = it.m_state; + m_baseParent = it.m_baseParent; + m_itemExMask = it.m_itemExMask; + m_parentExMask = it.m_parentExMask; +} + +void wxPropertyGridIteratorBase::Prev() +{ + wxPGProperty* property = m_property; + wxASSERT( property ); + + wxPGProperty* parent = property->GetParent(); + wxASSERT( parent ); + unsigned int index = property->GetIndexInParent(); + + if ( index > 0 ) + { + // Previous sibling + index--; + + property = parent->Item(index); + + // Go to last children? + if ( property->GetChildCount() && + wxPG_ITERATOR_PARENTEXMASK_TEST(property, m_parentExMask) ) + { + // First child + property = property->Last(); + } + } + else + { + // Up to a parent + if ( parent == m_baseParent ) + { + m_property = NULL; + return; + } + else + { + property = parent; + } + } + + m_property = property; + + // If property does not match our criteria, skip it + if ( property->GetFlags() & m_itemExMask ) + Prev(); +} + +void wxPropertyGridIteratorBase::Next( bool iterateChildren ) +{ + wxPGProperty* property = m_property; + wxASSERT( property ); + + if ( property->GetChildCount() && + wxPG_ITERATOR_PARENTEXMASK_TEST(property, m_parentExMask) && + iterateChildren ) + { + // First child + property = property->Item(0); + } + else + { + wxPGProperty* parent = property->GetParent(); + wxASSERT( parent ); + unsigned int index = property->GetIndexInParent() + 1; + + if ( index < parent->GetChildCount() ) + { + // Next sibling + property = parent->Item(index); + } + else + { + // Next sibling of parent + if ( parent == m_baseParent ) + { + m_property = NULL; + } + else + { + m_property = parent; + Next(false); + } + return; + } + } + + m_property = property; + + // If property does not match our criteria, skip it + if ( property->GetFlags() & m_itemExMask ) + Next(); +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState +// ----------------------------------------------------------------------- + +wxPropertyGridPageState::wxPropertyGridPageState() +{ + m_pPropGrid = (wxPropertyGrid*) NULL; + m_regularArray.SetParentState(this); + m_properties = &m_regularArray; + m_abcArray = (wxPGRootProperty*) NULL; + m_currentCategory = (wxPropertyCategory*) NULL; + m_selected = (wxPGProperty*) NULL; + m_width = 0; + m_virtualHeight = 0; + m_lastCaptionBottomnest = 1; + m_itemsAdded = 0; + m_anyModified = 0; + m_vhCalcPending = 0; + m_colWidths.push_back( wxPG_DEFAULT_SPLITTERX ); + m_colWidths.push_back( wxPG_DEFAULT_SPLITTERX ); + m_fSplitterX = wxPG_DEFAULT_SPLITTERX; +} + +// ----------------------------------------------------------------------- + +wxPropertyGridPageState::~wxPropertyGridPageState() +{ + delete m_abcArray; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::InitNonCatMode() +{ + if ( !m_abcArray ) + { + m_abcArray = new wxPGRootProperty(); + m_abcArray->SetParentState(this); + m_abcArray->SetFlag(wxPG_PROP_CHILDREN_ARE_COPIES); + } + + // Must be called when state::m_properties still points to regularArray. + wxPGProperty* oldProperties = m_properties; + + // Must use temp value in state::m_properties for item iteration loop + // to run as expected. + m_properties = &m_regularArray; + + if ( m_properties->GetChildCount() ) + { + // Copy items. + wxPropertyGridIterator it( this, wxPG_ITERATE_DEFAULT|wxPG_ITERATE_CATEGORIES ); + + for ( ; !it.AtEnd(); it.Next() ) + { + wxPGProperty* p = it.GetProperty(); + wxPGProperty* parent = p->GetParent(); + if ( p->HasFlag(wxPG_PROP_MISC_PARENT) && + ( parent == m_properties || (parent->IsCategory() || parent->IsRoot()) ) ) + { + m_abcArray->AddChild2( p ); + p->m_parent = &m_regularArray; + } + } + } + + m_properties = oldProperties; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::DoClear() +{ + m_regularArray.Empty(); + if ( m_abcArray ) + m_abcArray->Empty(); + + m_dictName.clear(); + + m_currentCategory = (wxPropertyCategory*) NULL; + m_lastCaptionBottomnest = 1; + m_itemsAdded = 0; + + m_virtualHeight = 0; + m_vhCalcPending = 0; + + m_selected = (wxPGProperty*) NULL; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::CalculateFontAndBitmapStuff( int WXUNUSED(vspacing) ) +{ + wxPropertyGrid* propGrid = GetGrid(); + + VirtualHeightChanged(); + + // Recalculate caption text extents. + unsigned int i; + + for ( i=0;i<m_regularArray.GetChildCount();i++ ) + { + wxPGProperty* p =m_regularArray.Item(i); + + if ( p->IsCategory() ) + ((wxPropertyCategory*)p)->CalculateTextExtent(propGrid, propGrid->GetCaptionFont()); + } +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::SetVirtualWidth( int width ) +{ + wxASSERT( width >= 0 ); + wxPropertyGrid* pg = GetGrid(); + int gw = pg->GetClientSize().x; + if ( width < gw ) + width = gw; + + m_width = width; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::OnClientWidthChange( int newWidth, int widthChange, bool fromOnResize ) +{ + wxPropertyGrid* pg = GetGrid(); + + if ( pg->HasVirtualWidth() ) + { + if ( m_width < newWidth ) + SetVirtualWidth( newWidth ); + + CheckColumnWidths(widthChange); + } + else + { + SetVirtualWidth( newWidth ); + + // This should be done before splitter auto centering + // NOTE: Splitter auto-centering is done in this function. + if ( !fromOnResize ) + widthChange = 0; + CheckColumnWidths(widthChange); + + if ( !(GetGrid()->GetInternalFlags() & wxPG_FL_SPLITTER_PRE_SET) && + (GetGrid()->GetInternalFlags() & wxPG_FL_DONT_CENTER_SPLITTER) ) + { + long timeSinceCreation = (::wxGetLocalTimeMillis() - GetGrid()->m_timeCreated).ToLong(); + + // If too long, don't set splitter + if ( timeSinceCreation < 3000 ) + { + if ( m_properties->GetChildCount() || timeSinceCreation > 750 ) + { + SetSplitterLeft( false ); + } + else + { + DoSetSplitterPosition( newWidth / 2 ); + GetGrid()->ClearInternalFlag(wxPG_FL_SPLITTER_PRE_SET); + } + } + } + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState item iteration methods +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::GetLastItem( int flags ) +{ + if ( !m_properties->GetChildCount() ) + return (wxPGProperty*) NULL; + + wxPG_ITERATOR_CREATE_MASKS(flags, int itemExMask, int parentExMask) + + // First, get last child of last parent + wxPGProperty* pwc = (wxPGProperty*)m_properties->Last(); + while ( pwc->GetChildCount() && + wxPG_ITERATOR_PARENTEXMASK_TEST(pwc, parentExMask) ) + pwc = (wxPGProperty*) pwc->Last(); + + // Then, if it doesn't fit our criteria, back up until we find something that does + if ( pwc->GetFlags() & itemExMask ) + { + wxPropertyGridIterator it( this, flags, pwc ); + for ( ; !it.AtEnd(); it.Prev() ); + pwc = (wxPGProperty*) it.GetProperty(); + } + + return pwc; +} + +wxPropertyCategory* wxPropertyGridPageState::GetPropertyCategory( const wxPGProperty* p ) const +{ + const wxPGProperty* parent = (const wxPGProperty*)p; + const wxPGProperty* grandparent = (const wxPGProperty*)parent->GetParent(); + do + { + parent = grandparent; + grandparent = (wxPGProperty*)parent->GetParent(); + if ( parent->IsCategory() && grandparent ) + return (wxPropertyCategory*)parent; + } while ( grandparent ); + + return (wxPropertyCategory*) NULL; +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState GetPropertyXXX methods +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::GetPropertyByLabel( const wxString& label, + wxPGProperty* parent ) const +{ + + size_t i; + + if ( !parent ) parent = (wxPGProperty*) &m_regularArray; + + for ( i=0; i<parent->GetChildCount(); i++ ) + { + wxPGProperty* p = parent->Item(i); + if ( p->m_label == label ) + return p; + // Check children recursively. + if ( p->GetChildCount() ) + { + p = GetPropertyByLabel(label,(wxPGProperty*)p); + if ( p ) + return p; + } + } + + return NULL; +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::BaseGetPropertyByName( const wxString& name ) const +{ + wxPGHashMapS2P::const_iterator it; + it = m_dictName.find(name); + if ( it != m_dictName.end() ) + return (wxPGProperty*) it->second; + return (wxPGProperty*) NULL; +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState global operations +// ----------------------------------------------------------------------- + +// ----------------------------------------------------------------------- +// Item iteration macros +// NB: Nowadays only needed for alphabetic/categoric mode switching. +// ----------------------------------------------------------------------- + +#define II_INVALID_I 0x00FFFFFF + +#define ITEM_ITERATION_VARIABLES \ + wxPGProperty* parent; \ + unsigned int i; \ + unsigned int iMax; + +#define ITEM_ITERATION_INIT_FROM_THE_TOP \ + parent = m_properties; \ + i = 0; + +#define ITEM_ITERATION_INIT(startparent, startindex, state) \ + parent = startparent; \ + i = (unsigned int)startindex; \ + if ( parent == (wxPGProperty*) NULL ) \ + { \ + parent = state->m_properties; \ + i = 0; \ + } + +#define ITEM_ITERATION_LOOP_BEGIN \ + do \ + { \ + iMax = parent->GetChildCount(); \ + while ( i < iMax ) \ + { \ + wxPGProperty* p = parent->Item(i); + +#define ITEM_ITERATION_LOOP_END \ + if ( p->GetChildCount() ) \ + { \ + i = 0; \ + parent = (wxPGProperty*)p; \ + iMax = parent->GetChildCount(); \ + } \ + else \ + i++; \ + } \ + i = parent->m_arrIndex + 1; \ + parent = parent->m_parent; \ + } \ + while ( parent != NULL ); + +bool wxPropertyGridPageState::EnableCategories( bool enable ) +{ + // + // NB: We can't use wxPropertyGridIterator in this + // function, since it depends on m_arrIndexes, + // which, among other things, is being fixed here. + // + ITEM_ITERATION_VARIABLES + + if ( enable ) + { + // + // Enable categories + // + + if ( !IsInNonCatMode() ) + return false; + + m_properties = &m_regularArray; + + // fix parents, indexes, and depths + ITEM_ITERATION_INIT_FROM_THE_TOP + + ITEM_ITERATION_LOOP_BEGIN + + p->m_arrIndex = i; + + p->m_parent = parent; + + // If parent was category, and this is not, + // then the depth stays the same. + if ( parent->IsCategory() && + !p->IsCategory() ) + p->m_depth = parent->m_depth; + else + p->m_depth = parent->m_depth + 1; + + ITEM_ITERATION_LOOP_END + + } + else + { + // + // Disable categories + // + + if ( IsInNonCatMode() ) + return false; + + // Create array, if necessary. + if ( !m_abcArray ) + InitNonCatMode(); + + m_properties = m_abcArray; + + // fix parents, indexes, and depths + ITEM_ITERATION_INIT_FROM_THE_TOP + + ITEM_ITERATION_LOOP_BEGIN + + p->m_arrIndex = i; + + p->m_parent = parent; + + p->m_depth = parent->m_depth + 1; + + ITEM_ITERATION_LOOP_END + } + + VirtualHeightChanged(); + + if ( m_pPropGrid->GetState() == this ) + m_pPropGrid->RecalculateVirtualSize(); + + return true; +} + +// ----------------------------------------------------------------------- + +static int wxPG_SortFunc(void **p1, void **p2) +{ + wxPGProperty *pp1 = *((wxPGProperty**)p1); + wxPGProperty *pp2 = *((wxPGProperty**)p2); + return pp1->GetLabel().compare( pp2->GetLabel() ); +} + +void wxPropertyGridPageState::SortChildren( wxPGProperty* p ) +{ + if ( !p ) + p = (wxPGProperty*)m_properties; + + if ( !p->GetChildCount() ) + return; + + wxPGProperty* pwc = (wxPGProperty*)p; + + // Can only sort items with children + if ( pwc->GetChildCount() < 1 ) + return; + + pwc->m_children.Sort( wxPG_SortFunc ); + + // Fix indexes + pwc->FixIndexesOfChildren(); + +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::Sort() +{ + SortChildren( m_properties ); + + // Sort categories as well + if ( !IsInNonCatMode() ) + { + size_t i; + for ( i=0;i<m_properties->GetChildCount();i++) + { + wxPGProperty* p = m_properties->Item(i); + if ( p->IsCategory() ) + SortChildren( p ); + } + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState splitter, column and hittest functions +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::DoGetItemAtY( int y ) const +{ + // Outside? + if ( y < 0 ) + return (wxPGProperty*) NULL; + + unsigned int a = 0; + return m_properties->GetItemAtY(y, GetGrid()->m_lineHeight, &a); +} + +// ----------------------------------------------------------------------- + +wxPropertyGridHitTestResult wxPropertyGridPageState::HitTest( const wxPoint&pt ) const +{ + wxPropertyGridHitTestResult result; + result.column = HitTestH( pt.x, &result.splitter, &result.splitterHitOffset ); + result.property = DoGetItemAtY( pt.y ); + return result; +} + +// ----------------------------------------------------------------------- + +// Used by SetSplitterLeft() and DotFitColumns() +int wxPropertyGridPageState::GetColumnFitWidth(wxClientDC& dc, + wxPGProperty* pwc, + unsigned int col, + bool subProps) const +{ + wxPropertyGrid* pg = m_pPropGrid; + size_t i; + int maxW = 0; + int w, h; + + for ( i=0; i<pwc->GetChildCount(); i++ ) + { + wxPGProperty* p = pwc->Item(i); + if ( !p->IsCategory() ) + { + dc.GetTextExtent( p->GetColumnText(col), &w, &h ); + if ( col == 0 ) + w += ( ((int)p->m_depth-1) * pg->m_subgroup_extramargin ); + + // + // TODO: Add bitmap support. + + w += (wxPG_XBEFORETEXT*2); + + if ( w > maxW ) + maxW = w; + } + + if ( p->GetChildCount() && + ( subProps || p->IsCategory() ) ) + { + w = GetColumnFitWidth( dc, p, col, subProps ); + + if ( w > maxW ) + maxW = w; + } + } + + return maxW; +} + +int wxPropertyGridPageState::DoGetSplitterPosition( int splitterColumn ) const +{ + int n = GetGrid()->m_marginWidth; + int i; + for ( i=0; i<=splitterColumn; i++ ) + n += m_colWidths[i]; + return n; +} + +int wxPropertyGridPageState::GetColumnMinWidth( int WXUNUSED(column) ) const +{ + return wxPG_DRAG_MARGIN; +} + +void wxPropertyGridPageState::PropagateColSizeDec( int column, int decrease, int dir ) +{ + int origWidth = m_colWidths[column]; + m_colWidths[column] -= decrease; + int min = GetColumnMinWidth(column); + int more = 0; + if ( m_colWidths[column] < min ) + { + more = decrease - (origWidth - min); + m_colWidths[column] = min; + } + + // + // FIXME: Causes erratic splitter changing, so as a workaround + // disabled if two or less columns. + + if ( m_colWidths.size() <= 2 ) + return; + + column += dir; + if ( more && column < (int)m_colWidths.size() && column >= 0 ) + PropagateColSizeDec( column, more, dir ); +} + +void wxPropertyGridPageState::DoSetSplitterPosition( int newXPos, int splitterColumn, bool WXUNUSED(allPages), bool fromAutoCenter ) +{ + wxPropertyGrid* pg = GetGrid(); + + int adjust = newXPos - DoGetSplitterPosition(splitterColumn); + + if ( !pg->HasVirtualWidth() ) + { + // No virtual width + int otherColumn; + if ( adjust > 0 ) + { + otherColumn = splitterColumn + 1; + if ( otherColumn == (int)m_colWidths.size() ) + otherColumn = 0; + m_colWidths[splitterColumn] += adjust; + PropagateColSizeDec( otherColumn, adjust, 1 ); + } + else + { + otherColumn = splitterColumn + 1; + if ( otherColumn == (int)m_colWidths.size() ) + otherColumn = 0; + m_colWidths[otherColumn] -= adjust; + PropagateColSizeDec( splitterColumn, -adjust, -1 ); + } + } + else + { + m_colWidths[splitterColumn] += adjust; + } + + if ( splitterColumn == 0 ) + m_fSplitterX = (double) newXPos; + + if ( !fromAutoCenter ) + { + // Don't allow initial splitter auto-positioning after this. + if ( pg->GetState() == this ) + pg->SetInternalFlag(wxPG_FL_SPLITTER_PRE_SET); + + CheckColumnWidths(); + } +} + +// Moves splitter so that all labels are visible, but just. +void wxPropertyGridPageState::SetSplitterLeft( bool subProps ) +{ + wxPropertyGrid* pg = GetGrid(); + wxClientDC dc(pg); + dc.SetFont(pg->m_font); + + int maxW = GetColumnFitWidth(dc, m_properties, 0, subProps); + + if ( maxW > 0 ) + { + maxW += pg->m_marginWidth; + DoSetSplitterPosition( maxW ); + } + + pg->SetInternalFlag(wxPG_FL_DONT_CENTER_SPLITTER); +} + +wxSize wxPropertyGridPageState::DoFitColumns( bool WXUNUSED(allowGridResize) ) +{ + wxPropertyGrid* pg = GetGrid(); + wxClientDC dc(pg); + dc.SetFont(pg->m_font); + + int marginWidth = pg->m_marginWidth; + int accWid = marginWidth; + int maxColWidth = 500; + + for ( unsigned int col=0; col < GetColumnCount(); col++ ) + { + int fitWid = GetColumnFitWidth(dc, m_properties, col, true); + int colMinWidth = GetColumnMinWidth(col); + if ( fitWid < colMinWidth ) + fitWid = colMinWidth; + else if ( fitWid > maxColWidth ) + fitWid = maxColWidth; + + m_colWidths[col] = fitWid; + + accWid += fitWid; + } + + // Expand last one to fill the width + int remaining = m_width - accWid; + m_colWidths[GetColumnCount()-1] += remaining; + + pg->SetInternalFlag(wxPG_FL_DONT_CENTER_SPLITTER); + + int firstSplitterX = marginWidth + m_colWidths[0]; + m_fSplitterX = (double) firstSplitterX; + + // Don't allow initial splitter auto-positioning after this. + if ( pg->GetState() == this ) + { + pg->SetSplitterPosition(firstSplitterX, false); + pg->Refresh(); + } + + int x, y; + pg->GetVirtualSize(&x, &y); + + return wxSize(accWid, y); +} + +void wxPropertyGridPageState::CheckColumnWidths( int widthChange ) +{ + if ( m_width == 0 ) + return; + + wxPropertyGrid* pg = GetGrid(); + +#ifdef __WXDEBUG__ + const bool debug = false; +#endif + + unsigned int i; + unsigned int lastColumn = m_colWidths.size() - 1; + int width = m_width; + int clientWidth = pg->GetClientSize().x; + + // + // Column to reduce, if needed. Take last one that exceeds minimum width. + // Except if auto splitter centering is used, in which case use widest. + int reduceCol = -1; + int highestColWidth = 0; + + bool minimizedCols = false; + +#ifdef __WXDEBUG__ + if ( debug ) + wxLogDebug(wxT("ColumnWidthCheck (virtualWidth: %i, clientWidth: %i)"), width, clientWidth); +#endif + + // + // Check min sizes + for ( i=0; i<m_colWidths.size(); i++ ) + { + int min = GetColumnMinWidth(i); + if ( m_colWidths[i] <= min ) + { + m_colWidths[i] = min; + minimizedCols = true; + } + else + { + if ( pg->HasFlag(wxPG_SPLITTER_AUTO_CENTER) ) + { + if ( m_colWidths[i] >= highestColWidth ) + { + highestColWidth = m_colWidths[i]; + reduceCol = i; + } + } + else + { + reduceCol = i; + } + } + } + + int colsWidth = pg->m_marginWidth; + for ( i=0; i<m_colWidths.size(); i++ ) + colsWidth += m_colWidths[i]; + +#ifdef __WXDEBUG__ + if ( debug ) + wxLogDebug(wxT(" HasVirtualWidth: %i colsWidth: %i"),(int)pg->HasVirtualWidth(),colsWidth); +#endif + + // Then mode-based requirement + if ( !pg->HasVirtualWidth() ) + { + int widthHigher = width - colsWidth; + + // Adapt colsWidth to width + if ( colsWidth < width ) + { + // Increase column + #ifdef __WXDEBUG__ + if ( debug ) + wxLogDebug(wxT(" Adjust last column to %i"), m_colWidths[lastColumn] + widthHigher); + #endif + m_colWidths[lastColumn] = m_colWidths[lastColumn] + widthHigher; + } + else if ( colsWidth > width ) + { + // Reduce column + if ( reduceCol != -1 ) + { + #ifdef __WXDEBUG__ + if ( debug ) + wxLogDebug(wxT(" Reduce column %i (by %i)"), reduceCol, -widthHigher); + #endif + // Reduce widest column, and recheck + m_colWidths[reduceCol] = m_colWidths[reduceCol] + widthHigher; + CheckColumnWidths(); + } + } + } + else + { + // Only check colsWidth against clientWidth + if ( colsWidth < clientWidth ) + { + m_colWidths[lastColumn] = m_colWidths[lastColumn] + (clientWidth-colsWidth); + } + + m_width = colsWidth; + + // If width changed, recalculate virtual size + if ( pg->GetState() == this ) + pg->RecalculateVirtualSize(); + } + +#ifdef __WXDEBUG__ + if ( debug ) + for ( i=0; i<m_colWidths.size(); i++ ) + wxLogDebug(wxT("col%i: %i"),i,m_colWidths[i]); +#endif + + // Auto center splitter + if ( !(pg->GetInternalFlags() & wxPG_FL_DONT_CENTER_SPLITTER) && + m_colWidths.size() == 2 ) + { + float centerX = (float)(pg->m_width/2); + float splitterX; + + if ( m_fSplitterX < 0.0 ) + { + splitterX = centerX; + } + else if ( widthChange ) + { + //float centerX = float(pg->GetSize().x) * 0.5; + + // Recenter? + splitterX = m_fSplitterX + (float(widthChange) * 0.5); + float deviation = fabs(centerX - splitterX); + + // If deviating from center, adjust towards it + if ( deviation > 20.0 ) + { + if ( splitterX > centerX) + splitterX -= 2; + else + splitterX += 2; + } + } + else + { + // No width change, just keep sure we keep splitter position intact + splitterX = m_fSplitterX; + float deviation = fabs(centerX - splitterX); + if ( deviation > 50.0 ) + { + splitterX = centerX; + } + } + + DoSetSplitterPosition((int)splitterX, 0, false, true); + + m_fSplitterX = splitterX; // needed to retain accuracy + } +} + +void wxPropertyGridPageState::SetColumnCount( int colCount ) +{ + wxASSERT( colCount >= 2 ); + m_colWidths.SetCount( colCount, wxPG_DRAG_MARGIN ); + if ( m_colWidths.size() > (unsigned int)colCount ) + m_colWidths.RemoveAt( m_colWidths.size(), m_colWidths.size() - colCount ); + + if ( m_pPropGrid->GetState() == this ) + m_pPropGrid->RecalculateVirtualSize(); + else + CheckColumnWidths(); +} + +// Returns column index, -1 for margin +int wxPropertyGridPageState::HitTestH( int x, int* pSplitterHit, int* pSplitterHitOffset ) const +{ + int cx = GetGrid()->m_marginWidth; + int col = -1; + int prevSplitter = -1; + + while ( x > cx ) + { + col++; + if ( col >= (int)m_colWidths.size() ) + { + *pSplitterHit = -1; + return col; + } + prevSplitter = cx; + cx += m_colWidths[col]; + } + + // Near prev. splitter + if ( col >= 1 ) + { + int diff = x - prevSplitter; + if ( abs(diff) < wxPG_SPLITTERX_DETECTMARGIN1 ) + { + *pSplitterHit = col - 1; + *pSplitterHitOffset = diff; + return col; + } + } + + // Near next splitter + int nextSplitter = cx; + if ( col < (int)(m_colWidths.size()-1) ) + { + int diff = x - nextSplitter; + if ( abs(diff) < wxPG_SPLITTERX_DETECTMARGIN1 ) + { + *pSplitterHit = col; + *pSplitterHitOffset = diff; + return col; + } + } + + *pSplitterHit = -1; + return col; +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState property value setting and getting +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoSetPropertyValueString( wxPGProperty* p, const wxString& value ) +{ + if ( p ) + { + int flags = wxPG_REPORT_ERROR|wxPG_FULL_VALUE; + + wxVariant variant = p->GetValueRef(); + bool res; + + if ( p->GetMaxLength() <= 0 ) + res = p->StringToValue( variant, value, flags ); + else + res = p->StringToValue( variant, value.Mid(0,p->GetMaxLength()), flags ); + + if ( res ) + { + p->SetValue(variant); + if ( m_selected==p && this==m_pPropGrid->GetState() ) + p->UpdateControl(m_pPropGrid->GetEditorControl()); + } + + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoSetPropertyValue( wxPGProperty* p, wxVariant& value ) +{ + if ( p ) + { + p->SetValue(value); + if ( m_selected==p && this==m_pPropGrid->GetState() ) + p->UpdateControl(m_pPropGrid->GetEditorControl()); + + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoSetPropertyValueWxObjectPtr( wxPGProperty* p, wxObject* value ) +{ + if ( p ) + { + // wnd_primary has to be given so the control can be updated as well. + wxVariant v(value); + DoSetPropertyValue(p, v); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::DoSetPropertyValueUnspecified( wxPGProperty* p ) +{ + wxCHECK_RET( p, wxT("invalid property id") ); + + if ( !p->IsValueUnspecified() ) + { + // Value should be set first - editor class methods may need it + p->m_value.MakeNull(); + + wxASSERT( m_pPropGrid ); + + if ( m_pPropGrid->GetState() == this ) + { + if ( m_pPropGrid->m_selected == p && m_pPropGrid->m_wndEditor ) + { + p->GetEditorClass()->SetValueToUnspecified(p, m_pPropGrid->GetEditorControl()); + } + } + + unsigned int i; + for ( i = 0; i < p->GetChildCount(); i++ ) + DoSetPropertyValueUnspecified( p->Item(i) ); + } +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState property operations +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoCollapse( wxPGProperty* p ) +{ + wxCHECK_MSG( p, false, wxT("invalid property id") ); + + if ( !p->GetChildCount() ) return false; + + if ( !p->IsExpanded() ) return false; + + p->SetExpanded(false); + + VirtualHeightChanged(); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoExpand( wxPGProperty* p ) +{ + wxCHECK_MSG( p, false, wxT("invalid property id") ); + + if ( !p->GetChildCount() ) return false; + + if ( p->IsExpanded() ) return false; + + p->SetExpanded(true); + + VirtualHeightChanged(); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoSelectProperty( wxPGProperty* p, unsigned int flags ) +{ + if ( this == m_pPropGrid->GetState() ) + return m_pPropGrid->DoSelectProperty( p, flags ); + + m_selected = p; + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoHideProperty( wxPGProperty* p, bool hide, int flags ) +{ + if ( !hide ) + p->ClearFlag( wxPG_PROP_HIDDEN ); + else + p->SetFlag( wxPG_PROP_HIDDEN ); + + if ( flags & wxPG_RECURSE ) + { + unsigned int i; + for ( i = 0; i < p->GetChildCount(); i++ ) + DoHideProperty(p->Item(i), hide, flags | wxPG_RECURSE_STARTS); + } + + VirtualHeightChanged(); + + return true; +} + +// ----------------------------------------------------------------------- + +bool wxPropertyGridPageState::DoEnableProperty( wxPGProperty* p, bool enable ) +{ + if ( p ) + { + if ( enable ) + { + if ( !(p->m_flags & wxPG_PROP_DISABLED) ) + return false; + + // Enabling + + p->m_flags &= ~(wxPG_PROP_DISABLED); + } + else + { + if ( p->m_flags & wxPG_PROP_DISABLED ) + return false; + + // Disabling + + p->m_flags |= wxPG_PROP_DISABLED; + + } + + // Apply same to sub-properties as well + unsigned int i; + for ( i = 0; i < p->GetChildCount(); i++ ) + DoEnableProperty( p->Item(i), enable ); + + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState wxVariant related routines +// ----------------------------------------------------------------------- + +// Returns list of wxVariant objects (non-categories and non-sub-properties only). +// Never includes sub-properties (unless they are parented by wxParentProperty). +wxVariant wxPropertyGridPageState::DoGetPropertyValues( const wxString& listname, + wxPGProperty* baseparent, + long flags ) const +{ + wxPGProperty* pwc = (wxPGProperty*) baseparent; + + // Root is the default base-parent. + if ( !pwc ) + pwc = m_properties; + + wxVariantList tempList; + wxVariant v( tempList, listname ); + + if ( pwc->GetChildCount() ) + { + if ( flags & wxPG_KEEP_STRUCTURE ) + { + wxASSERT( !pwc->HasFlag(wxPG_PROP_AGGREGATE) ); + + size_t i; + for ( i=0; i<pwc->GetChildCount(); i++ ) + { + wxPGProperty* p = pwc->Item(i); + if ( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE) ) + { + wxVariant variant = p->GetValue(); + variant.SetName( p->GetBaseName() ); + v.Append( variant ); + } + else + { + v.Append( DoGetPropertyValues(p->m_name,p,flags|wxPG_KEEP_STRUCTURE) ); + } + if ( (flags & wxPG_INC_ATTRIBUTES) && p->m_attributes.GetCount() ) + v.Append( p->GetAttributesAsList() ); + } + } + else + { + wxPropertyGridConstIterator it( this, wxPG_ITERATE_DEFAULT, pwc->Item(0) ); + it.SetBaseParent( pwc ); + + for ( ; !it.AtEnd(); it.Next() ) + { + const wxPGProperty* p = it.GetProperty(); + + // Use a trick to ignore wxParentProperty itself, but not its sub-properties. + if ( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE) ) + { + wxVariant variant = p->GetValue(); + variant.SetName( p->GetName() ); + v.Append( variant ); + if ( (flags & wxPG_INC_ATTRIBUTES) && p->m_attributes.GetCount() ) + v.Append( p->GetAttributesAsList() ); + } + } + } + } + + return v; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::DoSetPropertyValues( const wxVariantList& list, wxPGProperty* defaultCategory ) +{ + unsigned char origFrozen = 1; + + if ( m_pPropGrid->GetState() == this ) + { + origFrozen = m_pPropGrid->m_frozen; + if ( !origFrozen ) m_pPropGrid->Freeze(); + } + + wxPropertyCategory* use_category = (wxPropertyCategory*)defaultCategory; + + if ( !use_category ) + use_category = (wxPropertyCategory*)m_properties; + + // Let's iterate over the list of variants. + wxVariantList::const_iterator node; + int numSpecialEntries = 0; + + // + // Second pass for special entries + for ( node = list.begin(); node != list.end(); node++ ) + { + wxVariant *current = (wxVariant*)*node; + + // Make sure it is wxVariant. + wxASSERT( current ); + wxASSERT( wxStrcmp(current->GetClassInfo()->GetClassName(),wxT("wxVariant")) == 0 ); + + const wxString& name = current->GetName(); + if ( name.length() > 0 ) + { + // + // '@' signified a special entry + if ( name[0] == wxS('@') ) + { + numSpecialEntries++; + } + else + { + wxPGProperty* foundProp = BaseGetPropertyByName(name); + if ( foundProp ) + { + wxPGProperty* p = foundProp; + + // If it was a list, we still have to go through it. + if ( wxStrcmp(current->GetType(), wxS("list")) == 0 ) + { + DoSetPropertyValues( current->GetList(), + p->IsCategory()?p:((wxPGProperty*)NULL) + ); + } + else + { + #ifdef __WXDEBUG__ + if ( wxStrcmp(current->GetType(), p->GetValue().GetType()) != 0) + { + wxLogDebug(wxT("wxPropertyGridPageState::DoSetPropertyValues Warning: Setting value of property \"%s\" from variant"), + p->GetName().c_str()); + } + #endif + + p->SetValue(*current); + } + } + else + { + // Is it list? + if ( current->GetType() != wxS("list") ) + { + // Not. + } + else + { + // Yes, it is; create a sub category and append contents there. + wxPGProperty* newCat = DoInsert(use_category,-1,new wxPropertyCategory(current->GetName(),wxPG_LABEL)); + DoSetPropertyValues( current->GetList(), newCat ); + } + } + } + } + } + + if ( numSpecialEntries ) + { + for ( node = list.begin(); node != list.end(); node++ ) + { + wxVariant *current = (wxVariant*)*node; + + const wxString& name = current->GetName(); + if ( name.length() > 0 ) + { + // + // '@' signified a special entry + if ( name[0] == wxS('@') ) + { + numSpecialEntries--; + + size_t pos2 = name.rfind(wxS('@')); + if ( pos2 > 0 && pos2 < (name.size()-1) ) + { + wxString propName = name.substr(1, pos2-1); + wxString entryType = name.substr(pos2+1, wxString::npos); + + if ( entryType == wxS("attr") ) + { + // + // List of attributes + wxPGProperty* foundProp = BaseGetPropertyByName(propName); + if ( foundProp ) + { + wxASSERT( wxPGIsVariantType(*current, list) ); + + wxVariantList& list2 = current->GetList(); + wxVariantList::const_iterator node2; + + for ( node2 = list2.begin(); node2 != list2.end(); node2++ ) + { + wxVariant *attr = (wxVariant*)*node2; + foundProp->SetAttribute( attr->GetName(), *attr ); + } + } + else + { + // ERROR: No such property: 'propName' + } + } + } + else + { + // ERROR: Special entry requires name of format @<propname>@<entrytype> + } + } + } + + if ( !numSpecialEntries ) + break; + } + } + + if ( !origFrozen ) + { + m_pPropGrid->Thaw(); + + if ( this == m_pPropGrid->GetState() ) + { + m_selected->UpdateControl(m_pPropGrid->GetEditorControl()); + } + } + +} + +// ----------------------------------------------------------------------- +// wxPropertyGridPageState property adding and removal +// ----------------------------------------------------------------------- + +int wxPropertyGridPageState::PrepareToAddItem( wxPGProperty* property, + wxPGProperty* scheduledParent ) +{ + wxPropertyGrid* propGrid = m_pPropGrid; + + // This will allow better behavior. + if ( scheduledParent == m_properties ) + scheduledParent = (wxPGProperty*) NULL; + + property->m_parentState = this; + + if ( property->IsCategory() ) + { + + // Parent of a category must be either root or another category + // (otherwise Bad Things might happen). + wxASSERT_MSG( scheduledParent == NULL || + scheduledParent == m_properties || + scheduledParent->IsCategory(), + wxT("Parent of a category must be either root or another category.")); + + // If we already have category with same name, delete given property + // and use it instead as most recent caption item. + wxPGProperty* found_id = BaseGetPropertyByName( property->GetBaseName() ); + if ( found_id ) + { + wxPropertyCategory* pwc = (wxPropertyCategory*) found_id; + if ( pwc->IsCategory() ) // Must be a category. + { + delete property; + m_currentCategory = pwc; + return 2; // Tells the caller what we did. + } + } + } + +#ifdef __WXDEBUG__ + // Warn for identical names in debug mode. + if ( BaseGetPropertyByName(property->GetName()) && + (!scheduledParent || scheduledParent->IsCategory()) ) + { + wxLogError(wxT("wxPropertyGrid: Warning - item with name \"%s\" already exists."), + property->GetName().c_str()); + wxPGGlobalVars->m_warnings++; + } +#endif + + // Make sure nothing is selected. + if ( propGrid && propGrid->m_selected ) + { + bool selRes = propGrid->ClearSelection(); + wxPG_CHECK_MSG_DBG( selRes, + -1, + wxT("failed to deselect a property (editor probably had invalid value)") ); + } + + if ( scheduledParent ) + { + // Use parent's colours. + property->m_bgColIndex = scheduledParent->m_bgColIndex; + property->m_fgColIndex = scheduledParent->m_fgColIndex; + + // Fix no parent does not yet have parenting flag yet, set one now + if ( !scheduledParent->HasFlag(wxPG_PROP_PARENTAL_FLAGS) ) + scheduledParent->SetParentalType(wxPG_PROP_MISC_PARENT); + //scheduledParent->SetFlag(wxPG_PROP_MISC_PARENT); + } + + // If in hideable adding mode, or if assigned parent is hideable, then + // make this one hideable. + if ( + ( scheduledParent && (scheduledParent->m_flags & wxPG_PROP_HIDDEN) ) || + ( propGrid && (propGrid->m_iFlags & wxPG_FL_ADDING_HIDEABLES) ) + ) + property->SetFlag( wxPG_PROP_HIDDEN ); + + // Set custom image flag. + int custImgHeight = property->OnMeasureImage().y; + if ( custImgHeight < 0 /*|| custImgHeight > 1*/ ) + { + property->m_flags |= wxPG_PROP_CUSTOMIMAGE; + } + + if ( propGrid && (propGrid->GetWindowStyleFlag() & wxPG_LIMITED_EDITING) ) + property->m_flags |= wxPG_PROP_NOEDITOR; + + if ( !property->IsCategory() ) + { + // This is not a category. + + //wxASSERT_MSG( property->GetEditorClass(), wxT("Editor class not initialized!") ); + + // Depth. + // + unsigned char depth = 1; + if ( scheduledParent ) + { + depth = scheduledParent->m_depth; + if ( !scheduledParent->IsCategory() ) + depth++; + } + property->m_depth = depth; + unsigned char greyDepth = depth; + + if ( scheduledParent ) + { + wxPropertyCategory* pc; + + if ( scheduledParent->IsCategory() || scheduledParent->IsRoot() ) + pc = (wxPropertyCategory*)scheduledParent; + else + // This conditional compile is necessary to + // bypass some compiler bug. + pc = GetPropertyCategory(scheduledParent); + + if ( pc ) + greyDepth = pc->GetDepth(); + else + greyDepth = scheduledParent->m_depthBgCol; + } + + property->m_depthBgCol = greyDepth; + + // Prepare children pre-added children + if ( property->GetChildCount() ) + { + property->SetParentalType(wxPG_PROP_AGGREGATE); + + property->SetExpanded(false); // Properties with children are not expanded by default. + if ( propGrid && propGrid->GetWindowStyleFlag() & wxPG_HIDE_MARGIN ) + property->SetExpanded(true); // ...unless it cannot be expanded. + + property->PrepareSubProperties(); + + return -1; + } + + if ( propGrid && (propGrid->GetExtraStyle() & wxPG_EX_AUTO_UNSPECIFIED_VALUES) ) + property->SetFlagRecursively(wxPG_PROP_AUTO_UNSPECIFIED, true); + + return 0; + } + else + { + // This is a category. + + // depth + unsigned char depth = 1; + if ( scheduledParent ) + { + depth = scheduledParent->m_depth + 1; + } + property->m_depth = depth; + property->m_depthBgCol = depth; + + m_currentCategory = (wxPropertyCategory*)property; + + wxPropertyCategory* pc = (wxPropertyCategory*)property; + + // Calculate text extent for caption item. + if ( propGrid ) + pc->CalculateTextExtent(propGrid, propGrid->GetCaptionFont()); + + return 1; + } +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::DoAppend( wxPGProperty* property ) +{ + wxPropertyCategory* cur_cat = m_currentCategory; + if ( property->IsCategory() ) + cur_cat = (wxPropertyCategory*) NULL; + + return DoInsert( cur_cat, -1, property ); +} + +// ----------------------------------------------------------------------- + +wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index, wxPGProperty* property ) +{ + if ( !parent ) + parent = m_properties; + + wxCHECK_MSG( !parent->HasFlag(wxPG_PROP_AGGREGATE), + wxNullProperty, + wxT("when adding properties to fixed parents, use BeginAddChildren and EndAddChildren.") ); + + int parenting = PrepareToAddItem( property, (wxPropertyCategory*)parent ); + + // This type of invalid parenting value indicates we should exit now, returning + // id of most recent category. + if ( parenting > 1 ) + return m_currentCategory; + + // Note that item must be added into current mode later. + + // If parent is wxParentProperty, just stick it in... + // If parent is root (m_properties), then... + // In categoric mode: Add as last item in m_abcArray (if not category). + // Add to given index in m_regularArray. + // In non-cat mode: Add as last item in m_regularArray. + // Add to given index in m_abcArray. + // If parent is category, then... + // 1) Add to given category in given index. + // 2) Add as last item in m_abcArray. + + if ( !parent->IsCategory() && !parent->IsRoot() ) + { + // Parent is wxParentingProperty: Just stick it in... + parent->AddChild2( property, index ); + } + else + { + // Parent is Category or Root. + + if ( m_properties == &m_regularArray ) + { + // Categorized mode + + // Only add non-categories to m_abcArray. + if ( m_abcArray && parenting <= 0 ) + m_abcArray->AddChild2( property, -1, false ); + + // Add to current mode. + parent->AddChild2( property, index ); + + } + else + { + // Non-categorized mode. + + if ( parent != m_properties ) + // Parent is category. + parent->AddChild2( property, index, false ); + else + // Parent is root. + m_regularArray.AddChild2( property, -1, false ); + + // Add to current mode (no categories). + if ( parenting <= 0 ) + m_abcArray->AddChild2( property, index ); + } + } + + // category stuff + if ( property->IsCategory() ) + { + // This is a category caption item. + + // Last caption is not the bottom one (this info required by append) + m_lastCaptionBottomnest = 0; + } + + // Only add name to hashmap if parent is root or category + if ( (parent->IsCategory() || parent->IsRoot()) && property->m_name.length() ) + m_dictName[property->m_name] = (void*) property; + + VirtualHeightChanged(); + + property->UpdateParentValues(); + + m_itemsAdded = 1; + + return property; +} + +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::DoDelete( wxPGProperty* item ) +{ + wxCHECK_RET( item->GetParent(), + wxT("this property was already deleted") ); + + wxCHECK_RET( item != &m_regularArray && item != m_abcArray, + wxT("wxPropertyGrid: Do not attempt to remove the root item.") ); + + size_t i; + unsigned int indinparent = item->GetIndexInParent(); + + wxPGProperty* pwc = (wxPGProperty*)item; + + wxCHECK_RET( !item->GetParent()->HasFlag(wxPG_PROP_AGGREGATE), + wxT("wxPropertyGrid: Do not attempt to remove sub-properties.") ); + + if ( item->IsCategory() ) + { + // deleting a category + + // erase category entries from the hash table + for ( i=0; i<pwc->GetChildCount(); i++ ) + { + wxPGProperty* sp = pwc->Item( i ); + if ( sp->GetBaseName().Len() ) m_dictName.erase(sp->GetBaseName()); + } + + if ( pwc == m_currentCategory ) + m_currentCategory = (wxPropertyCategory*) NULL; + + if ( m_abcArray ) + { + // Remove children from non-categorized array. + for ( i=0; i<pwc->GetChildCount(); i++ ) + { + wxPGProperty * p = pwc->Item( i ); + wxASSERT( p != NULL ); + if ( !p->IsCategory() ) + m_abcArray->m_children.Remove( p ); + } + + if ( IsInNonCatMode() ) + m_abcArray->FixIndexesOfChildren(); + } + } + + if ( !IsInNonCatMode() ) + { + // categorized mode - non-categorized array + + // Remove from non-cat array, but only if parent is in it + if ( !item->IsCategory() && item->GetParent()->IsCategory() ) + { + if ( m_abcArray ) + { + m_abcArray->m_children.Remove( item ); + } + } + + // categorized mode - categorized array + item->m_parent->m_children.RemoveAt(indinparent); + item->m_parent->FixIndexesOfChildren(/*indinparent*/); + } + else + { + // non-categorized mode - categorized array + + // We need to find location of item. + wxPGProperty* cat_parent = &m_regularArray; + int cat_index = m_regularArray.GetChildCount(); + size_t i; + for ( i = 0; i < m_regularArray.GetChildCount(); i++ ) + { + wxPGProperty* p = m_regularArray.Item(i); + if ( p == item ) { cat_index = i; break; } + if ( p->IsCategory() ) + { + int subind = ((wxPGProperty*)p)->Index(item); + if ( subind != wxNOT_FOUND ) + { + cat_parent = ((wxPGProperty*)p); + cat_index = subind; + break; + } + } + } + cat_parent->m_children.RemoveAt(cat_index); + + // non-categorized mode - non-categorized array + if ( !item->IsCategory() ) + { + wxASSERT( item->m_parent == m_abcArray ); + item->m_parent->m_children.RemoveAt(indinparent); + item->m_parent->FixIndexesOfChildren(indinparent); + } + } + + if ( item->GetBaseName().Len() ) m_dictName.erase(item->GetBaseName()); + + // We can actually delete it now + delete item; + + m_itemsAdded = 1; // Not a logical assignment (but required nonetheless). + + VirtualHeightChanged(); +} + +// ----------------------------------------------------------------------- diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp new file mode 100644 index 0000000000..e01c940bcc --- /dev/null +++ b/src/propgrid/props.cpp @@ -0,0 +1,2602 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/propgrid/props.cpp +// Purpose: Basic Property Classes +// Author: Jaakko Salli +// Modified by: +// Created: 2005-05-14 +// RCS-ID: $Id: +// Copyright: (c) Jaakko Salli +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/defs.h" + #include "wx/object.h" + #include "wx/hash.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/event.h" + #include "wx/window.h" + #include "wx/panel.h" + #include "wx/dc.h" + #include "wx/dcclient.h" + #include "wx/dcmemory.h" + #include "wx/button.h" + #include "wx/pen.h" + #include "wx/brush.h" + #include "wx/cursor.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/msgdlg.h" + #include "wx/choice.h" + #include "wx/stattext.h" + #include "wx/scrolwin.h" + #include "wx/dirdlg.h" + #include "wx/combobox.h" + #include "wx/layout.h" + #include "wx/sizer.h" + #include "wx/textdlg.h" + #include "wx/filedlg.h" + #include "wx/statusbr.h" + #include "wx/intl.h" +#endif + +#include <wx/filename.h> + +#include <wx/propgrid/propgrid.h> + +#define wxPG_CUSTOM_IMAGE_WIDTH 20 // for wxColourProperty etc. + + +// ----------------------------------------------------------------------- +// wxStringProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxStringProperty,wxPGProperty, + wxString,const wxString&,TextCtrl) + +wxStringProperty::wxStringProperty( const wxString& label, + const wxString& name, + const wxString& value ) + : wxPGProperty(label,name) +{ + SetValue(value); +} + +void wxStringProperty::OnSetValue() +{ + if ( !m_value.IsNull() && m_value.GetString() == wxS("<composed>") ) + SetFlag(wxPG_PROP_COMPOSED_VALUE); + + if ( HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + { + wxString s; + GenerateComposedValue(s, 0); + m_value = s; + } +} + +wxStringProperty::~wxStringProperty() { } + +wxString wxStringProperty::GetValueAsString( int argFlags ) const +{ + wxString s = m_value.GetString(); + + if ( GetChildCount() && HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + { + // Value stored in m_value is non-editable, non-full value + if ( (argFlags & wxPG_FULL_VALUE) || (argFlags & wxPG_EDITABLE_VALUE) ) + GenerateComposedValue(s, argFlags); + + return s; + } + + // If string is password and value is for visual purposes, + // then return asterisks instead the actual string. + if ( (m_flags & wxPG_PROP_PASSWORD) && !(argFlags & (wxPG_FULL_VALUE|wxPG_EDITABLE_VALUE)) ) + return wxString(wxChar('*'), s.Length()); + + return s; +} + +bool wxStringProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + if ( GetChildCount() && HasFlag(wxPG_PROP_COMPOSED_VALUE) ) + return wxPGProperty::StringToValue(variant, text, argFlags); + + if ( m_value.GetString() != text ) + { + variant = text; + return true; + } + + return false; +} + +bool wxStringProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_STRING_PASSWORD ) + { + m_flags &= ~(wxPG_PROP_PASSWORD); + if ( wxPGVariantToInt(value) ) m_flags |= wxPG_PROP_PASSWORD; + RecreateEditor(); + return false; + } + return true; +} + +// ----------------------------------------------------------------------- +// wxIntProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxIntProperty,wxPGProperty, + long,long,TextCtrl) + +wxIntProperty::wxIntProperty( const wxString& label, const wxString& name, + long value ) : wxPGProperty(label,name) +{ + SetValue(value); +} + +wxIntProperty::wxIntProperty( const wxString& label, const wxString& name, + const wxLongLong& value ) : wxPGProperty(label,name) +{ + SetValue(wxLongLongToVariant(value)); +} + +wxIntProperty::~wxIntProperty() { } + +wxString wxIntProperty::GetValueAsString( int ) const +{ + if ( wxPGIsVariantType(m_value, long) ) + return wxString::Format(wxS("%li"),m_value.GetLong()); + + wxLongLong* ll = &wxLongLongFromVariant(m_value); + if ( ll ) + return ll->ToString(); + + return wxEmptyString; +} + +bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + wxString s; + long value32; + + if ( text.length() == 0 ) + { + variant.MakeNull(); + return true; + } + + // We know it is a number, but let's still check + // the return value. + if ( text.IsNumber() ) + { + // Remove leading zeroes, so that the number is not interpreted as octal + wxString::const_iterator i = text.begin(); + wxString::const_iterator iMax = text.end() - 1; // Let's allow one, last zero though + + int firstNonZeroPos = 0; + + for ( ; i != iMax; i++ ) + { + wxChar c = *i; + if ( c != wxS('0') && c != wxS(' ') ) + break; + firstNonZeroPos++; + } + + wxString useText = text.substr(firstNonZeroPos, text.length() - firstNonZeroPos); + + bool isPrevLong = wxPGIsVariantType(variant, long); + + wxLongLong_t value64 = 0; + + if ( useText.ToLongLong(&value64, 10) && + ( value64 >= INT_MAX || value64 <= INT_MIN ) + ) + { + wxLongLong* _m_value64 = &wxLongLongFromVariant(m_value); + if ( isPrevLong || !_m_value64 || _m_value64->GetValue() != value64 ) + { + variant = wxLongLongToVariant(value64); + return true; + } + } + + if ( useText.ToLong( &value32, 0 ) ) + { + if ( !isPrevLong || m_value.GetLong() != value32 ) + { + variant = value32; + return true; + } + } + } + else if ( argFlags & wxPG_REPORT_ERROR ) + { + } + return false; +} + +bool wxIntProperty::IntToValue( wxVariant& variant, int value, int WXUNUSED(argFlags) ) const +{ + if ( !wxPGIsVariantType(variant, long) || variant.GetLong() != value ) + { + variant = (long)value; + return true; + } + return false; +} + +bool wxIntProperty::DoValidation( const wxPGProperty* property, wxLongLong_t& value, wxPGValidationInfo* pValidationInfo, int mode ) +{ + // Check for min/max + wxLongLong_t min = wxINT64_MIN; + wxLongLong_t max = wxINT64_MAX; + wxVariant variant; + bool minOk = false; + bool maxOk = false; + + variant = property->GetAttribute(wxPGGlobalVars->m_strMin); + if ( !variant.IsNull() ) + { + wxPGVariantToLongLong(variant, &min); + minOk = true; + } + + variant = property->GetAttribute(wxPGGlobalVars->m_strMax); + if ( !variant.IsNull() ) + { + wxPGVariantToLongLong(variant, &max); + maxOk = true; + } + + if ( minOk ) + { + if ( value < min ) + { + if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + pValidationInfo->m_failureMessage = wxString::Format(_("Value must be %lld or higher"),min); + else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + value = min; + else + value = max - (min - value); + return false; + } + } + + if ( maxOk ) + { + if ( value > max ) + { + if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + pValidationInfo->m_failureMessage = wxString::Format(_("Value must be %lld or higher"),min); + else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + value = max; + else + value = min + (value - max); + return false; + } + } + return true; +} + +bool wxIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const +{ + wxLongLong_t ll; + if ( wxPGVariantToLongLong(value, &ll) ) + return DoValidation(this, ll, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + return true; +} + +wxValidator* wxIntProperty::GetClassValidator() +{ +#if wxUSE_VALIDATORS + WX_PG_DOGETVALIDATOR_ENTRY() + + // Atleast wxPython 2.6.2.1 required that the string argument is given + static wxString v; + wxTextValidator* validator = new wxTextValidator(wxFILTER_NUMERIC,&v); + + WX_PG_DOGETVALIDATOR_EXIT(validator) +#else + return NULL; +#endif +} + +wxValidator* wxIntProperty::DoGetValidator() const +{ + return GetClassValidator(); +} + +// ----------------------------------------------------------------------- +// wxUIntProperty +// ----------------------------------------------------------------------- + + +#define wxPG_UINT_TEMPLATE_MAX 8 + +static const wxChar* gs_uintTemplates32[wxPG_UINT_TEMPLATE_MAX] = { + wxT("%x"),wxT("0x%x"),wxT("$%x"), + wxT("%X"),wxT("0x%X"),wxT("$%X"), + wxT("%u"),wxT("%o") +}; + +static const wxChar* gs_uintTemplates64[wxPG_UINT_TEMPLATE_MAX] = { + wxT("%") wxLongLongFmtSpec wxT("x"), + wxT("0x%") wxLongLongFmtSpec wxT("x"), + wxT("$%") wxLongLongFmtSpec wxT("x"), + wxT("%") wxLongLongFmtSpec wxT("X"), + wxT("0x%") wxLongLongFmtSpec wxT("X"), + wxT("$%") wxLongLongFmtSpec wxT("X"), + wxT("%") wxLongLongFmtSpec wxT("u"), + wxT("%") wxLongLongFmtSpec wxT("o") +}; + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxUIntProperty,wxPGProperty, + long,unsigned long,TextCtrl) + +void wxUIntProperty::Init() +{ + m_base = 6; // This is magic number for dec base (must be same as in setattribute) + m_realBase = 10; + m_prefix = wxPG_PREFIX_NONE; +} + +wxUIntProperty::wxUIntProperty( const wxString& label, const wxString& name, + unsigned long value ) : wxPGProperty(label,name) +{ + Init(); + SetValue((long)value); +} + +wxUIntProperty::wxUIntProperty( const wxString& label, const wxString& name, + const wxULongLong& value ) : wxPGProperty(label,name) +{ + Init(); + SetValue(wxULongLongToVariant(value)); +} + +wxUIntProperty::~wxUIntProperty() { } + +wxString wxUIntProperty::GetValueAsString( int ) const +{ + size_t index = m_base + m_prefix; + if ( index >= wxPG_UINT_TEMPLATE_MAX ) + index = wxPG_BASE_DEC; + + if ( wxPGIsVariantType(m_value, long) ) + return wxString::Format(gs_uintTemplates32[index],(unsigned long)m_value.GetLong()); + else + return wxString::Format(gs_uintTemplates64[index],wxULongLongFromVariant(m_value).GetValue()); +} + +bool wxUIntProperty::StringToValue( wxVariant& variant, const wxString& text, int WXUNUSED(argFlags) ) const +{ + //long unsigned value32 = 0; + bool isPrevLong = wxPGIsVariantType(variant, long); + + if ( text.length() == 0 ) + { + variant.MakeNull(); + return true; + } + + size_t start = 0; + if ( text[0] == wxS('$') ) + start++; + + wxULongLong_t value64 = 0; + wxString s = text.substr(start, text.length() - start); + + if ( s.ToULongLong(&value64, (unsigned int)m_realBase) ) + { + if ( value64 >= LONG_MAX ) + { + wxULongLong* _m_value64 = &wxULongLongFromVariant(m_value); + if ( isPrevLong || !_m_value64 || _m_value64->GetValue() != value64 ) + { + variant = wxULongLongToVariant(value64); + return true; + } + } + else + { + unsigned long value32 = wxLongLong(value64).GetLo(); + if ( !isPrevLong || m_value.GetLong() != (long)value32 ) + { + variant = (long)value32; + return true; + } + } + + } + return false; +} + +bool wxUIntProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(argFlags) ) const +{ + if ( m_value != (long)number ) + { + variant = (long)number; + return true; + } + return false; +} + +#ifdef ULLONG_MAX + #define wxUINT64_MAX ULLONG_MAX + #define wxUINT64_MIN wxULL(0) +#else + #define wxUINT64_MAX wxULL(0xFFFFFFFFFFFFFFFF) + #define wxUINT64_MIN wxULL(0) +#endif + +bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const +{ + // Check for min/max + wxULongLong_t ll; + if ( wxPGVariantToULongLong(value, &ll) ) + { + wxULongLong_t min = wxUINT64_MIN; + wxULongLong_t max = wxUINT64_MAX; + wxVariant variant; + + variant = GetAttribute(wxPGGlobalVars->m_strMin); + if ( !variant.IsNull() ) + { + wxPGVariantToULongLong(variant, &min); + if ( ll < min ) + { + validationInfo.m_failureMessage = wxString::Format(_("Value must be %llu or higher"),min); + return false; + } + } + variant = GetAttribute(wxPGGlobalVars->m_strMax); + if ( !variant.IsNull() ) + { + wxPGVariantToULongLong(variant, &max); + if ( ll > max ) + { + validationInfo.m_failureMessage = wxString::Format(_("Value must be %llu or less"),max); + return false; + } + } + } + return true; +} + +bool wxUIntProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_UINT_BASE ) + { + int val = value.GetLong(); + + m_realBase = (wxByte) val; + if ( m_realBase > 16 ) + m_realBase = 16; + + // + // Translate logical base to a template array index + m_base = 7; // oct + if ( val == wxPG_BASE_HEX ) + m_base = 3; + else if ( val == wxPG_BASE_DEC ) + m_base = 6; + else if ( val == wxPG_BASE_HEXL ) + m_base = 0; + return true; + } + else if ( name == wxPG_UINT_PREFIX ) + { + m_prefix = (wxByte) value.GetLong(); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxFloatProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxFloatProperty,wxPGProperty, + double,double,TextCtrl) + +wxFloatProperty::wxFloatProperty( const wxString& label, + const wxString& name, + double value ) + : wxPGProperty(label,name) +{ + m_precision = -1; + SetValue(value); +} + +wxFloatProperty::~wxFloatProperty() { } + +// This helper method provides standard way for floating point-using +// properties to convert values to string. +void wxPropertyGrid::DoubleToString(wxString& target, + double value, + int precision, + bool removeZeroes, + wxString* precTemplate) +{ + if ( precision >= 0 ) + { + wxString text1; + if (!precTemplate) + precTemplate = &text1; + + if ( !precTemplate->length() ) + { + *precTemplate = wxS("%."); + *precTemplate << wxString::Format( wxS("%i"), precision ); + *precTemplate << wxS('f'); + } + + target.Printf( precTemplate->c_str(), value ); + } + else + { + target.Printf( wxS("%f"), value ); + } + + if ( removeZeroes && precision != 0 && target.length() ) + { + // Remove excess zeroes (do not remove this code just yet, + // since sprintf can't do the same consistently across platforms). + wxString::const_iterator i = target.end() - 1; + size_t new_len = target.length() - 1; + + for ( ; i != target.begin(); i-- ) + { + if ( *i != wxS('0') ) + break; + new_len--; + } + + wxChar cur_char = *i; + if ( cur_char != wxS('.') && cur_char != wxS(',') ) + new_len++; + + if ( new_len != target.length() ) + target.resize(new_len); + } +} + +wxString wxFloatProperty::GetValueAsString( int argFlags ) const +{ + wxString text; + if ( !m_value.IsNull() ) + { + wxPropertyGrid::DoubleToString(text, + m_value, + m_precision, + !(argFlags & wxPG_FULL_VALUE), + (wxString*) NULL); + } + return text; +} + +bool wxFloatProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + wxString s; + double value; + + if ( text.length() == 0 ) + { + variant.MakeNull(); + return true; + } + + bool res = text.ToDouble(&value); + if ( res ) + { + if ( m_value != value ) + { + variant = value; + return true; + } + } + else if ( argFlags & wxPG_REPORT_ERROR ) + { + } + return false; +} + +bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, wxPGValidationInfo* pValidationInfo, int mode ) +{ + // Check for min/max + double min = (double)wxINT64_MIN; + double max = (double)wxINT64_MAX; + wxVariant variant; + bool minOk = false; + bool maxOk = false; + + variant = property->GetAttribute(wxPGGlobalVars->m_strMin); + if ( !variant.IsNull() ) + { + wxPGVariantToDouble(variant, &min); + minOk = true; + } + + variant = property->GetAttribute(wxPGGlobalVars->m_strMax); + if ( !variant.IsNull() ) + { + wxPGVariantToDouble(variant, &max); + maxOk = true; + } + + if ( minOk ) + { + if ( value < min ) + { + if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + pValidationInfo->m_failureMessage = wxString::Format(_("Value must be %f or higher"),min); + else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + value = min; + else + value = max - (min - value); + return false; + } + } + + if ( maxOk ) + { + wxPGVariantToDouble(variant, &max); + if ( value > max ) + { + if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + pValidationInfo->m_failureMessage = wxString::Format(_("Value must be %f or less"),max); + else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + value = max; + else + value = min + (value - max); + return false; + } + } + return true; +} + +bool wxFloatProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const +{ + double fpv; + if ( wxPGVariantToDouble(value, &fpv) ) + return DoValidation(this, fpv, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + return true; +} + +bool wxFloatProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_FLOAT_PRECISION ) + { + m_precision = value.GetLong(); + return true; + } + return false; +} + +wxValidator* wxFloatProperty::DoGetValidator() const +{ + return wxIntProperty::GetClassValidator(); +} + +// ----------------------------------------------------------------------- +// wxBoolProperty +// ----------------------------------------------------------------------- + +// We cannot use standard WX_PG_IMPLEMENT_PROPERTY_CLASS macro, since +// there is a custom GetEditorClass. + +IMPLEMENT_DYNAMIC_CLASS(wxBoolProperty, wxPGProperty) + +const wxPGEditor* wxBoolProperty::DoGetEditorClass() const +{ + // Select correct editor control. +#if wxPG_INCLUDE_CHECKBOX + if ( !(m_flags & wxPG_PROP_USE_CHECKBOX) ) + return wxPG_EDITOR(Choice); + return wxPG_EDITOR(CheckBox); +#else + return wxPG_EDITOR(Choice); +#endif +} + +wxBoolProperty::wxBoolProperty( const wxString& label, const wxString& name, bool value ) : + wxPGProperty(label,name) +{ + SetValue(wxPGVariant_Bool(value)); + + m_flags |= wxPG_PROP_USE_DCC; +} + +wxBoolProperty::~wxBoolProperty() { } + +wxString wxBoolProperty::GetValueAsString( int argFlags ) const +{ + bool value = m_value.GetBool(); + + // As a fragment of composite string value, + // make it a little more readable. + if ( argFlags & wxPG_COMPOSITE_FRAGMENT ) + { + if ( value ) + { + return m_label; + } + else + { + if ( argFlags & wxPG_UNEDITABLE_COMPOSITE_FRAGMENT ) + return wxEmptyString; + + const wxChar* notFmt; + if ( wxPGGlobalVars->m_autoGetTranslation ) + notFmt = _("Not %s"); + else + notFmt = wxT("Not %s"); + + return wxString::Format(notFmt,m_label.c_str()); + } + } + + if ( !(argFlags & wxPG_FULL_VALUE) ) + { + return wxPGGlobalVars->m_boolChoices[value?1:0].GetText(); + } + + wxString text; + + if (value) text = wxS("true"); + else text = wxS("false"); + + return text; +} + +int wxBoolProperty::GetChoiceInfo( wxPGChoiceInfo* choiceinfo ) +{ + if ( IsValueUnspecified() ) + return -1; + + if ( choiceinfo ) + choiceinfo->m_choices = &wxPGGlobalVars->m_boolChoices; + return m_value.GetBool()?1:0; +} + +bool wxBoolProperty::StringToValue( wxVariant& variant, const wxString& text, int WXUNUSED(argFlags) ) const +{ + int value = 0; + if ( text.CmpNoCase(wxPGGlobalVars->m_boolChoices[1].GetText()) == 0 || + text.CmpNoCase(wxS("true")) == 0 || + text.CmpNoCase(m_label) == 0 ) + value = 1; + + if ( text.length() == 0 ) + { + variant.MakeNull(); + return true; + } + + bool oldValue = m_value.GetBool(); + + if ( (oldValue && !value) || (!oldValue && value) ) + { + variant = wxPGVariant_Bool(value); + return true; + } + return false; +} + +bool wxBoolProperty::IntToValue( wxVariant& variant, int value, int ) const +{ + bool boolValue = value ? true : false; + bool oldValue = m_value.GetBool(); + + if ( oldValue != boolValue ) + { + variant = wxPGVariant_Bool(boolValue); + return true; + } + return false; +} + +bool wxBoolProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ +#if wxPG_INCLUDE_CHECKBOX + if ( name == wxPG_BOOL_USE_CHECKBOX ) + { + int ival = wxPGVariantToInt(value); + if ( ival ) + m_flags |= wxPG_PROP_USE_CHECKBOX; + else + m_flags &= ~(wxPG_PROP_USE_CHECKBOX); + return true; + } +#endif + if ( name == wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING ) + { + int ival = wxPGVariantToInt(value); + if ( ival ) + m_flags |= wxPG_PROP_USE_DCC; + else + m_flags &= ~(wxPG_PROP_USE_DCC); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxBaseEnumProperty +// ----------------------------------------------------------------------- + +int wxBaseEnumProperty::ms_nextIndex = -2; + +wxBaseEnumProperty::wxBaseEnumProperty( const wxString& label, const wxString& name ) + : wxPGProperty(label,name) +{ + m_value = wxPGVariant_Zero; +} + +/** If has values array, then returns number at index with value - + otherwise just returns the value. +*/ +int wxBaseEnumProperty::GetIndexForValue( int value ) const +{ + return value; +} + +void wxBaseEnumProperty::OnSetValue() +{ + if ( wxPGIsVariantType(m_value, long) ) + ValueFromInt_( m_value, m_value.GetLong(), wxPG_FULL_VALUE ); + else if ( wxPGIsVariantType(m_value, string) ) + ValueFromString_( m_value, m_value.GetString(), 0 ); + else + wxASSERT( false ); + + if ( ms_nextIndex != -2 ) + { + m_index = ms_nextIndex; + ms_nextIndex = -2; + } +} + +bool wxBaseEnumProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& WXUNUSED(validationInfo) ) const +{ + // Make sure string value is in the list, + // unless property has string as preferred value type + // To reduce code size, use conversion here as well + if ( wxPGIsVariantType(value, string) && + !this->IsKindOf(CLASSINFO(wxEditEnumProperty)) ) + return ValueFromString_( value, value.GetString(), wxPG_PROPERTY_SPECIFIC ); + + return true; +} + +wxString wxBaseEnumProperty::GetValueAsString( int ) const +{ + if ( wxPGIsVariantType(m_value, string) ) + return m_value.GetString(); + + if ( m_index >= 0 ) + { + int unusedVal; + const wxString* pstr = GetEntry( m_index, &unusedVal ); + + if ( pstr ) + return *pstr; + } + return wxEmptyString; +} + +bool wxBaseEnumProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + return ValueFromString_( variant, text, argFlags ); +} + +bool wxBaseEnumProperty::IntToValue( wxVariant& variant, int intVal, int argFlags ) const +{ + return ValueFromInt_( variant, intVal, argFlags ); +} + +bool wxBaseEnumProperty::ValueFromString_( wxVariant& value, const wxString& text, int argFlags ) const +{ + size_t i = 0; + const wxString* entryLabel; + int entryValue; + int useIndex = -1; + long useValue = 0; + + entryLabel = GetEntry(i, &entryValue); + while ( entryLabel ) + { + if ( text.CmpNoCase(*entryLabel) == 0 ) + { + useIndex = (int)i; + useValue = (long)entryValue; + break; + } + + i++; + entryLabel = GetEntry(i, &entryValue); + } + + bool asText = false; + + bool isEdit = this->IsKindOf(CLASSINFO(wxEditEnumProperty)); + + // If text not any of the choices, store as text instead + // (but only if we are wxEditEnumProperty) + if ( useIndex == -1 && + (!wxPGIsVariantType(m_value, string) || (m_value.GetString() != text)) && + isEdit ) + { + asText = true; + } + + int setAsNextIndex = -2; + + if ( asText ) + { + setAsNextIndex = -1; + value = text; + } + else if ( m_index != useIndex ) + { + if ( useIndex != -1 ) + { + setAsNextIndex = useIndex; + value = (long)useValue; + } + else + { + setAsNextIndex = -1; + value = wxPGVariant_MinusOne; + } + } + + if ( setAsNextIndex != -2 ) + { + // If wxPG_PROPERTY_SPECIFIC is set, then this is done for + // validation purposes only, and index must not be changed + if ( !(argFlags & wxPG_PROPERTY_SPECIFIC) ) + ms_nextIndex = setAsNextIndex; + + if ( isEdit || setAsNextIndex != -1 ) + return true; + else + return false; + } + return false; +} + +bool wxBaseEnumProperty::ValueFromInt_( wxVariant& variant, int intVal, int argFlags ) const +{ + // If wxPG_FULL_VALUE is *not* in argFlags, then intVal is index from combo box. + // + ms_nextIndex = -2; + + if ( argFlags & wxPG_FULL_VALUE ) + { + ms_nextIndex = GetIndexForValue( intVal ); + } + else + { + if ( m_index != intVal ) + { + ms_nextIndex = intVal; + } + } + + if ( ms_nextIndex != -2 ) + { + if ( !(argFlags & wxPG_FULL_VALUE) ) + GetEntry(intVal, &intVal); + + variant = (long)intVal; + + return true; + } + + return false; +} + +void wxBaseEnumProperty::SetIndex( int index ) +{ + ms_nextIndex = -2; + m_index = index; +} + +int wxBaseEnumProperty::GetIndex() const +{ + if ( ms_nextIndex != -2 ) + return ms_nextIndex; + return m_index; +} + +// ----------------------------------------------------------------------- +// wxEnumProperty +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxEnumProperty, wxPGProperty) + +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxEnumProperty,long,Choice) + +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, + const long* values, int value ) : wxBaseEnumProperty(label,name) +{ + SetIndex(0); + + if ( labels ) + { + m_choices.Add(labels,values); + + if ( GetItemCount() ) + SetValue( (long)value ); + } +} + +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, + const long* values, wxPGChoices* choicesCache, int value ) + : wxBaseEnumProperty(label,name) +{ + SetIndex(0); + + wxASSERT( choicesCache ); + + if ( choicesCache->IsOk() ) + { + m_choices.Assign( *choicesCache ); + m_value = wxPGVariant_Zero; + } + else if ( labels ) + { + m_choices.Add(labels,values); + + if ( GetItemCount() ) + SetValue( (long)value ); + } +} + +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, + const wxArrayString& labels, const wxArrayInt& values, int value ) : wxBaseEnumProperty(label,name) +{ + SetIndex(0); + + if ( &labels && labels.size() ) + { + m_choices.Set(labels, values); + + if ( GetItemCount() ) + SetValue( (long)value ); + } +} + +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, + wxPGChoices& choices, int value ) + : wxBaseEnumProperty(label,name) +{ + m_choices.Assign( choices ); + + if ( GetItemCount() ) + SetValue( (long)value ); +} + +int wxEnumProperty::GetIndexForValue( int value ) const +{ + if ( !m_choices.IsOk() ) + return -1; + + if ( m_choices.HasValues() ) + { + int intVal = m_choices.Index(value); + if ( intVal >= 0 ) + return intVal; + } + + return value; +} + +wxEnumProperty::~wxEnumProperty () +{ +} + +const wxString* wxEnumProperty::GetEntry( size_t index, int* pvalue ) const +{ + if ( m_choices.IsOk() && index < m_choices.GetCount() ) + { + int value = (int)index; + if ( m_choices.HasValue(index) ) + value = m_choices.GetValue(index); + + if ( pvalue ) + *pvalue = value; + + return &m_choices.GetLabel(index); + } + return (const wxString*) NULL; +} + +int wxEnumProperty::GetChoiceInfo( wxPGChoiceInfo* choiceinfo ) +{ + if ( choiceinfo ) + choiceinfo->m_choices = &m_choices; + + if ( !m_choices.IsOk() ) + return -1; + + return GetIndex(); +} + +// ----------------------------------------------------------------------- +// wxEditEnumProperty +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxEditEnumProperty, wxPGProperty) + +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxEditEnumProperty,wxString,ComboBox) + +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, + const long* values, const wxString& value ) + : wxEnumProperty(label,name,labels,values,0) +{ + SetValue( value ); +} + +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, + const long* values, wxPGChoices* choicesCache, const wxString& value ) + : wxEnumProperty(label,name,labels,values,choicesCache,0) +{ + SetValue( value ); +} + +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, + const wxArrayString& labels, const wxArrayInt& values, const wxString& value ) + : wxEnumProperty(label,name,labels,values,0) +{ + SetValue( value ); +} + +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, + wxPGChoices& choices, const wxString& value ) + : wxEnumProperty(label,name,choices,0) +{ + SetValue( value ); +} + +wxEditEnumProperty::~wxEditEnumProperty() +{ +} + +// ----------------------------------------------------------------------- +// wxFlagsProperty +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxFlagsProperty,wxPGProperty) + +WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxFlagsProperty,long,TextCtrl) + +void wxFlagsProperty::Init() +{ + SetFlag(wxPG_PROP_AGGREGATE); // This is must be done here to support flag props + // with inital zero children. + + long value = m_value; + + // + // Generate children + // + unsigned int i; + + unsigned int prevChildCount = m_children.GetCount(); + + int oldSel = -1; + if ( prevChildCount ) + { + wxPropertyGridPageState* state = GetParentState(); + + // State safety check (it may be NULL in immediate parent) + wxASSERT( state ); + + if ( state ) + { + wxPGProperty* selected = state->GetSelection(); + if ( selected ) + { + if ( selected->GetParent() == this ) + oldSel = selected->GetArrIndex(); + else if ( selected == this ) + oldSel = -2; + } + } + state->DoClearSelection(); + } + + // Delete old children + for ( i=0; i<prevChildCount; i++ ) + delete ( (wxPGProperty*) m_children[i] ); + + m_children.Empty(); + + if ( m_choices.IsOk() ) + { + const wxPGChoices& choices = m_choices; + + for ( i=0; i<GetItemCount(); i++ ) + { + bool child_val; + if ( choices.HasValue(i) ) + child_val = ( value & choices.GetValue(i) )?true:false; + else + child_val = ( value & (1<<i) )?true:false; + + wxPGProperty* boolProp; + + #if wxUSE_INTL + if ( wxPGGlobalVars->m_autoGetTranslation ) + { + boolProp = new wxBoolProperty( ::wxGetTranslation( GetLabel(i) ), wxEmptyString, child_val ); + } + else + #endif + { + boolProp = new wxBoolProperty( GetLabel(i), wxEmptyString, child_val ); + } + AddChild(boolProp); + } + + m_oldChoicesData = m_choices.GetDataPtr(); + } + + m_oldValue = m_value; + + if ( prevChildCount ) + SubPropsChanged(oldSel); +} + +wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, + const wxChar** labels, const long* values, long value ) : wxPGProperty(label,name) +{ + m_oldChoicesData = (wxPGChoicesData*) NULL; + + if ( labels ) + { + m_choices.Set(labels,values); + + wxASSERT( GetItemCount() ); + + SetValue( value ); + } + else + { + m_value = wxPGVariant_Zero; + } +} + +wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, + const wxArrayString& labels, const wxArrayInt& values, int value ) + : wxPGProperty(label,name) +{ + m_oldChoicesData = (wxPGChoicesData*) NULL; + + if ( &labels && labels.size() ) + { + m_choices.Set(labels,values); + + wxASSERT( GetItemCount() ); + + SetValue( (long)value ); + } + else + { + m_value = wxPGVariant_Zero; + } +} + +wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, + wxPGChoices& choices, long value ) + : wxPGProperty(label,name) +{ + m_oldChoicesData = (wxPGChoicesData*) NULL; + + if ( choices.IsOk() ) + { + m_choices.Assign(choices); + + wxASSERT( GetItemCount() ); + + SetValue( value ); + } + else + { + m_value = wxPGVariant_Zero; + } +} + +wxFlagsProperty::~wxFlagsProperty() +{ +} + +void wxFlagsProperty::OnSetValue() +{ + if ( !m_choices.IsOk() || !GetItemCount() ) + { + m_value = wxPGVariant_Zero; + } + else + { + long val = m_value.GetLong(); + + long fullFlags = 0; + + // normalize the value (i.e. remove extra flags) + unsigned int i; + const wxPGChoices& choices = m_choices; + for ( i = 0; i < GetItemCount(); i++ ) + { + if ( choices.HasValue(i) ) + fullFlags |= choices.GetValue(i); + else + fullFlags |= (1<<i); + } + + val &= fullFlags; + + m_value = val; + + // Need to (re)init now? + if ( GetChildCount() != GetItemCount() || + m_choices.GetDataPtr() != m_oldChoicesData ) + { + Init(); + } + } + + long newFlags = m_value; + + if ( newFlags != m_oldValue ) + { + // Set child modified states + unsigned int i; + const wxPGChoices& choices = m_choices; + for ( i = 0; i<GetItemCount(); i++ ) + { + int flag; + + if ( choices.HasValue(i) ) + flag = choices.GetValue(i); + else + flag = (1<<i); + + if ( (newFlags & flag) != (m_oldValue & flag) ) + Item(i)->SetFlag( wxPG_PROP_MODIFIED ); + } + + m_oldValue = newFlags; + } +} + +wxString wxFlagsProperty::GetValueAsString( int ) const +{ + wxString text; + + if ( !m_choices.IsOk() ) + return text; + + long flags = m_value; + unsigned int i; + const wxPGChoices& choices = m_choices; + + for ( i = 0; i < GetItemCount(); i++ ) + { + int doAdd; + if ( choices.HasValue(i) ) + doAdd = ( flags & choices.GetValue(i) ); + else + doAdd = ( flags & (1<<i) ); + + if ( doAdd ) + { + text += choices.GetLabel(i); + text += wxS(", "); + } + } + + // remove last comma + if ( text.Len() > 1 ) + text.Truncate ( text.Len() - 2 ); + + return text; +} + +// Translate string into flag tokens +bool wxFlagsProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const +{ + if ( !m_choices.IsOk() ) + return false; + + long newFlags = 0; + long oldValue = m_value; + + // semicolons are no longer valid delimeters + WX_PG_TOKENIZER1_BEGIN(text,wxS(',')) + + if ( token.length() ) + { + // Determine which one it is + long bit = IdToBit( token ); + + if ( bit != -1 ) + { + // Changed? + newFlags |= bit; + } + else + { + break; + } + } + + WX_PG_TOKENIZER1_END() + + variant = newFlags; + + if ( newFlags != oldValue ) + return true; + + return false; +} + +// Converts string id to a relevant bit. +long wxFlagsProperty::IdToBit( const wxString& id ) const +{ + unsigned int i; + for ( i = 0; i < GetItemCount(); i++ ) + { + if ( id == GetLabel(i) ) + { + if ( m_choices.HasValue(i) ) + return m_choices.GetValue(i); + return (1<<i); + } + } + return -1; +} + +void wxFlagsProperty::RefreshChildren() +{ + if ( !m_choices.IsOk() || !GetChildCount() ) return; + + int flags = m_value.GetLong(); + + const wxPGChoices& choices = m_choices; + unsigned int i; + for ( i = 0; i < GetItemCount(); i++ ) + { + long flag; + + if ( choices.HasValue(i) ) + flag = choices.GetValue(i); + else + flag = (1<<i); + + long subVal = flags & flag; + wxPGProperty* p = Item(i); + + if ( subVal != (m_oldValue & flag) ) + p->SetFlag( wxPG_PROP_MODIFIED ); + + p->SetValue( subVal?true:false ); + } + + m_oldValue = flags; +} + +void wxFlagsProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +{ + long oldValue = thisValue.GetLong(); + long val = childValue.GetLong(); + unsigned long vi = (1<<childIndex); + if ( m_choices.HasValue(childIndex) ) vi = m_choices.GetValue(childIndex); + if ( val ) + thisValue = (long)(oldValue | vi); + else + thisValue = (long)(oldValue & ~(vi)); +} + +int wxFlagsProperty::GetChoiceInfo( wxPGChoiceInfo* choiceinfo ) +{ + if ( choiceinfo ) + choiceinfo->m_choices = &m_choices; + return -1; +} + +// ----------------------------------------------------------------------- +// wxDirProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(wxDirProperty,wxLongStringProperty,const wxString&) + +wxDirProperty::wxDirProperty( const wxString& name, const wxString& label, const wxString& value ) + : wxLongStringProperty(name,label,value) +{ + m_flags |= wxPG_NO_ESCAPE; +} +wxDirProperty::~wxDirProperty() { } + +wxValidator* wxDirProperty::DoGetValidator() const +{ + return wxFileProperty::GetClassValidator(); +} + +bool wxDirProperty::OnButtonClick( wxPropertyGrid* propGrid, wxString& value ) +{ + wxSize dlg_sz(300,400); + + wxDirDialog dlg( propGrid, + m_dlgMessage.length() ? m_dlgMessage : wxString(_("Choose a directory:")), + value, + 0, +#if !wxPG_SMALL_SCREEN + propGrid->GetGoodEditorDialogPosition(this,dlg_sz), + dlg_sz ); +#else + wxDefaultPosition, + wxDefaultSize ); +#endif + + if ( dlg.ShowModal() == wxID_OK ) + { + value = dlg.GetPath(); + return true; + } + return false; +} + +bool wxDirProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_DIR_DIALOG_MESSAGE ) + { + m_dlgMessage = value.GetString(); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxPGFileDialogAdapter +// ----------------------------------------------------------------------- + +bool wxPGFileDialogAdapter::DoShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property ) +{ + wxFileProperty* fileProp = NULL; + wxString path; + int indFilter = -1; + + if ( property->IsKindOf(CLASSINFO(wxFileProperty)) ) + { + fileProp = ((wxFileProperty*)property); + path = fileProp->m_filename.GetPath(); + indFilter = fileProp->m_indFilter; + + if ( !path.length() && fileProp->m_basePath.length() ) + path = fileProp->m_basePath; + } + else + { + wxFileName fn(property->GetValue().GetString()); + path = fn.GetPath(); + } + + wxFileDialog dlg( propGrid->GetPanel(), + property->GetAttribute(wxS("DialogTitle"), _("Choose a file")), + property->GetAttribute(wxS("InitialPath"), path), + wxEmptyString, + property->GetAttribute(wxPG_FILE_WILDCARD, _("All files (*.*)|*.*")), + 0, + wxDefaultPosition ); + + if ( indFilter >= 0 ) + dlg.SetFilterIndex( indFilter ); + + if ( dlg.ShowModal() == wxID_OK ) + { + if ( fileProp ) + fileProp->m_indFilter = dlg.GetFilterIndex(); + SetValue( dlg.GetPath() ); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxFileProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxFileProperty,wxPGProperty, + wxString,const wxString&,TextCtrlAndButton) + +wxFileProperty::wxFileProperty( const wxString& label, const wxString& name, + const wxString& value ) : wxPGProperty(label,name) +{ + m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; + m_indFilter = -1; + SetAttribute( wxPG_FILE_WILDCARD, _("All files (*.*)|*.*") ); + + SetValue(value); +} + +wxFileProperty::~wxFileProperty() {} + +#if wxUSE_VALIDATORS + +wxValidator* wxFileProperty::GetClassValidator() +{ + WX_PG_DOGETVALIDATOR_ENTRY() + + // Atleast wxPython 2.6.2.1 required that the string argument is given + static wxString v; + wxTextValidator* validator = new wxTextValidator(wxFILTER_EXCLUDE_CHAR_LIST,&v); + + wxArrayString exChars; + exChars.Add(wxS("?")); + exChars.Add(wxS("*")); + exChars.Add(wxS("|")); + exChars.Add(wxS("<")); + exChars.Add(wxS(">")); + exChars.Add(wxS("\"")); + + validator->SetExcludes(exChars); + + WX_PG_DOGETVALIDATOR_EXIT(validator) +} + +wxValidator* wxFileProperty::DoGetValidator() const +{ + return GetClassValidator(); +} + +#endif + +void wxFileProperty::OnSetValue() +{ + const wxString& fnstr = m_value.GetString(); + + m_filename = fnstr; + + if ( !m_filename.HasName() ) + { + m_value = wxPGVariant_EmptyString; + m_filename.Clear(); + } + + // Find index for extension. + if ( m_indFilter < 0 && fnstr.length() ) + { + wxString ext = m_filename.GetExt(); + int curind = 0; + size_t pos = 0; + size_t len = m_wildcard.length(); + + pos = m_wildcard.find(wxS("|"), pos); + while ( pos != wxString::npos && pos < (len-3) ) + { + size_t ext_begin = pos + 3; + + pos = m_wildcard.find(wxS("|"), ext_begin); + if ( pos == wxString::npos ) + pos = len; + wxString found_ext = m_wildcard.substr(ext_begin, pos-ext_begin); + + if ( found_ext.length() > 0 ) + { + if ( found_ext[0] == wxS('*') ) + { + m_indFilter = curind; + break; + } + if ( ext.CmpNoCase(found_ext) == 0 ) + { + m_indFilter = curind; + break; + } + } + + if ( pos != len ) + pos = m_wildcard.find(wxS("|"), pos+1); + + curind++; + } + } +} + +wxString wxFileProperty::GetValueAsString( int argFlags ) const +{ + // Always return empty string when name component is empty + wxString fullName = m_filename.GetFullName(); + if ( !fullName.length() ) + return fullName; + + if ( argFlags & wxPG_FULL_VALUE ) + { + return m_filename.GetFullPath(); + } + else if ( m_flags & wxPG_PROP_SHOW_FULL_FILENAME ) + { + if ( m_basePath.Length() ) + { + wxFileName fn2(m_filename); + fn2.MakeRelativeTo(m_basePath); + return fn2.GetFullPath(); + } + return m_filename.GetFullPath(); + } + + return m_filename.GetFullName(); +} + +wxPGEditorDialogAdapter* wxFileProperty::GetEditorDialog() const +{ + return new wxPGFileDialogAdapter(); +} + +bool wxFileProperty::StringToValue( wxVariant& variant, const wxString& text, int argFlags ) const +{ + if ( (m_flags & wxPG_PROP_SHOW_FULL_FILENAME) || (argFlags & wxPG_FULL_VALUE) ) + { + if ( m_filename != text ) + { + variant = text; + return true; + } + } + else + { + if ( m_filename.GetFullName() != text ) + { + wxFileName fn = m_filename; + fn.SetFullName(text); + variant = fn.GetFullPath(); + return true; + } + } + + return false; +} + +bool wxFileProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + // Return false on some occasions to make sure those attribs will get + // stored in m_attributes. + if ( name == wxPG_FILE_SHOW_FULL_PATH ) + { + if ( wxPGVariantToInt(value) ) + m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; + else + m_flags &= ~(wxPG_PROP_SHOW_FULL_FILENAME); + return true; + } + else if ( name == wxPG_FILE_WILDCARD ) + { + m_wildcard = value.GetString(); + } + else if ( name == wxPG_FILE_SHOW_RELATIVE_PATH ) + { + m_basePath = value.GetString(); + + // Make sure wxPG_FILE_SHOW_FULL_PATH is also set + m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; + } + else if ( name == wxPG_FILE_INITIAL_PATH ) + { + m_initialPath = value.GetString(); + return true; + } + else if ( name == wxPG_FILE_DIALOG_TITLE ) + { + m_dlgTitle = value.GetString(); + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxPGLongStringDialogAdapter +// ----------------------------------------------------------------------- + +bool wxPGLongStringDialogAdapter::DoShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property ) +{ + wxString val1 = property->GetValueAsString(0); + wxString val_orig = val1; + + wxString value; + if ( !property->HasFlag(wxPG_PROP_NO_ESCAPE) ) + wxPropertyGrid::ExpandEscapeSequences(value, val1); + else + value = wxString(val1); + + // Run editor dialog. + if ( wxLongStringProperty::DisplayEditorDialog(property, propGrid, value) ) + { + if ( !property->HasFlag(wxPG_PROP_NO_ESCAPE) ) + wxPropertyGrid::CreateEscapeSequences(val1,value); + else + val1 = value; + + if ( val1 != val_orig ) + { + SetValue( val1 ); + return true; + } + } + return false; +} + +// ----------------------------------------------------------------------- +// wxLongStringProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxLongStringProperty,wxPGProperty, + wxString,const wxString&,TextCtrlAndButton) + +wxLongStringProperty::wxLongStringProperty( const wxString& label, const wxString& name, + const wxString& value ) : wxPGProperty(label,name) +{ + SetValue(value); +} + +wxLongStringProperty::~wxLongStringProperty() {} + +wxString wxLongStringProperty::GetValueAsString( int ) const +{ + return m_value; +} + +bool wxLongStringProperty::OnEvent( wxPropertyGrid* propGrid, wxWindow* WXUNUSED(primary), + wxEvent& event ) +{ + if ( propGrid->IsMainButtonEvent(event) ) + { + // Update the value + PrepareValueForDialogEditing(propGrid); + + wxString val1 = GetValueAsString(0); + wxString val_orig = val1; + + wxString value; + if ( !(m_flags & wxPG_PROP_NO_ESCAPE) ) + wxPropertyGrid::ExpandEscapeSequences(value,val1); + else + value = wxString(val1); + + // Run editor dialog. + if ( OnButtonClick(propGrid,value) ) + { + if ( !(m_flags & wxPG_PROP_NO_ESCAPE) ) + wxPropertyGrid::CreateEscapeSequences(val1,value); + else + val1 = value; + + if ( val1 != val_orig ) + { + SetValueInEvent( val1 ); + return true; + } + } + } + return false; +} + +bool wxLongStringProperty::OnButtonClick( wxPropertyGrid* propGrid, wxString& value ) +{ + return DisplayEditorDialog(this, propGrid, value); +} + +bool wxLongStringProperty::DisplayEditorDialog( wxPGProperty* prop, wxPropertyGrid* propGrid, wxString& value ) + +{ + // launch editor dialog + wxDialog* dlg = new wxDialog(propGrid,-1,prop->GetLabel(),wxDefaultPosition,wxDefaultSize, + wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxCLIP_CHILDREN); + + dlg->SetFont(propGrid->GetFont()); // To allow entering chars of the same set as the propGrid + + // Multi-line text editor dialog. +#if !wxPG_SMALL_SCREEN + const int spacing = 8; +#else + const int spacing = 4; +#endif + wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL ); + wxTextCtrl* ed = new wxTextCtrl(dlg,11,value, + wxDefaultPosition,wxDefaultSize,wxTE_MULTILINE); + + rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing ); + topsizer->Add( rowsizer, 1, wxEXPAND, 0 ); + rowsizer = new wxBoxSizer( wxHORIZONTAL ); + const int but_sz_flags = + wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; + rowsizer->Add( new wxButton(dlg,wxID_OK,_("Ok")), + 0, but_sz_flags, spacing ); + rowsizer->Add( new wxButton(dlg,wxID_CANCEL,_("Cancel")), + 0, but_sz_flags, spacing ); + topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + + dlg->SetSizer( topsizer ); + topsizer->SetSizeHints( dlg ); + +#if !wxPG_SMALL_SCREEN + dlg->SetSize(400,300); + + dlg->Move( propGrid->GetGoodEditorDialogPosition(prop,dlg->GetSize()) ); +#endif + + int res = dlg->ShowModal(); + + if ( res == wxID_OK ) + { + value = ed->GetValue(); + dlg->Destroy(); + return true; + } + dlg->Destroy(); + return false; +} + +bool wxLongStringProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const +{ + if ( m_value != text ) + { + variant = text; + return true; + } + return false; +} + +// ----------------------------------------------------------------------- +// wxArrayEditorDialog +// ----------------------------------------------------------------------- + +BEGIN_EVENT_TABLE(wxArrayEditorDialog, wxDialog) + EVT_IDLE(wxArrayEditorDialog::OnIdle) + EVT_LISTBOX(24, wxArrayEditorDialog::OnListBoxClick) + EVT_TEXT_ENTER(21, wxArrayEditorDialog::OnAddClick) + EVT_BUTTON(22, wxArrayEditorDialog::OnAddClick) + EVT_BUTTON(23, wxArrayEditorDialog::OnDeleteClick) + EVT_BUTTON(25, wxArrayEditorDialog::OnUpClick) + EVT_BUTTON(26, wxArrayEditorDialog::OnDownClick) + EVT_BUTTON(27, wxArrayEditorDialog::OnUpdateClick) + //EVT_BUTTON(28, wxArrayEditorDialog::OnCustomEditClick) +END_EVENT_TABLE() + +IMPLEMENT_ABSTRACT_CLASS(wxArrayEditorDialog, wxDialog) + +#include <wx/statline.h> + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnIdle(wxIdleEvent& event) +{ + // + // Do control focus detection here. + // + + wxWindow* focused = FindFocus(); + + // This strange focus thing is a workaround for wxGTK wxListBox focus + // reporting bug. + if ( m_curFocus == 0 && focused != m_edValue && + focused != m_butAdd && focused != m_butUpdate && + m_lbStrings->GetSelection() >= 0 ) + { + // ListBox was just focused. + m_butAdd->Enable(false); + m_butUpdate->Enable(false); + m_butRemove->Enable(true); + m_butUp->Enable(true); + m_butDown->Enable(true); + m_curFocus = 1; + } + else if ( (m_curFocus == 1 && focused == m_edValue) /*|| m_curFocus == 2*/ ) + { + // TextCtrl was just focused. + m_butAdd->Enable(true); + bool upd_enable = false; + if ( m_lbStrings->GetCount() && m_lbStrings->GetSelection() >= 0 ) + upd_enable = true; + m_butUpdate->Enable(upd_enable); + m_butRemove->Enable(false); + m_butUp->Enable(false); + m_butDown->Enable(false); + m_curFocus = 0; + } + + event.Skip(); +} + +// ----------------------------------------------------------------------- + +wxArrayEditorDialog::wxArrayEditorDialog() + : wxDialog() +{ + Init(); +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::Init() +{ + m_custBtText = (const wxChar*) NULL; +} + +// ----------------------------------------------------------------------- + +wxArrayEditorDialog::wxArrayEditorDialog( wxWindow *parent, + const wxString& message, + const wxString& caption, + long style, + const wxPoint& pos, + const wxSize& sz ) + : wxDialog() +{ + Init(); + Create(parent,message,caption,style,pos,sz); +} + +// ----------------------------------------------------------------------- + +bool wxArrayEditorDialog::Create( wxWindow *parent, + const wxString& message, + const wxString& caption, + long style, + const wxPoint& pos, + const wxSize& sz ) +{ + // On wxMAC the dialog shows incorrectly if style is not exactly wxCAPTION + // FIXME: This should be only a temporary fix. +#ifdef __WXMAC__ + int useStyle = wxCAPTION; +#else + int useStyle = style; +#endif + + bool res = wxDialog::Create(parent, wxID_ANY, caption, pos, sz, useStyle); + + SetFont(parent->GetFont()); // To allow entering chars of the same set as the propGrid + +#if !wxPG_SMALL_SCREEN + const int spacing = 4; +#else + const int spacing = 3; +#endif + + m_modified = false; + + m_curFocus = 1; + + const int but_sz_flags = + wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL; //wxBOTTOM|wxLEFT|wxRIGHT; + + wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); + + // Message + if ( message.length() ) + topsizer->Add( new wxStaticText(this,-1,message), + 0, wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxALL, spacing ); + + // String editor + wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL ); + m_edValue = new wxTextCtrl(this,21,wxEmptyString, + wxDefaultPosition,wxDefaultSize,wxTE_PROCESS_ENTER); + wxValidator* validator = GetTextCtrlValidator(); + if ( validator ) + { + m_edValue->SetValidator( *validator ); + delete validator; + } + rowsizer->Add( m_edValue, + 1, wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxALL, spacing ); + + // Add button + m_butAdd = new wxButton(this,22,_("Add")); + rowsizer->Add( m_butAdd, + 0, wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, spacing ); + topsizer->Add( rowsizer, 0, wxEXPAND, spacing ); + + // Separator line + topsizer->Add( new wxStaticLine(this,-1), + 0, wxEXPAND|wxBOTTOM|wxLEFT|wxRIGHT, spacing ); + + rowsizer = new wxBoxSizer( wxHORIZONTAL ); + + // list box + m_lbStrings = new wxListBox(this, 24, wxDefaultPosition, wxDefaultSize); + unsigned int i; + for ( i=0; i<ArrayGetCount(); i++ ) + m_lbStrings->Append( ArrayGet(i) ); + rowsizer->Add( m_lbStrings, 1, wxEXPAND|wxRIGHT, spacing ); + + // Manipulator buttons + wxBoxSizer* colsizer = new wxBoxSizer( wxVERTICAL ); + m_butCustom = (wxButton*) NULL; + if ( m_custBtText ) + { + m_butCustom = new wxButton(this,28,::wxGetTranslation(m_custBtText)); + colsizer->Add( m_butCustom, + 0, wxALIGN_CENTER|wxTOP/*wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT*/, + spacing ); + } + m_butUpdate = new wxButton(this,27,_("Update")); + colsizer->Add( m_butUpdate, + 0, wxALIGN_CENTER|wxTOP, spacing ); + m_butRemove = new wxButton(this,23,_("Remove")); + colsizer->Add( m_butRemove, + 0, wxALIGN_CENTER|wxTOP, spacing ); + m_butUp = new wxButton(this,25,_("Up")); + colsizer->Add( m_butUp, + 0, wxALIGN_CENTER|wxTOP, spacing ); + m_butDown = new wxButton(this,26,_("Down")); + colsizer->Add( m_butDown, + 0, wxALIGN_CENTER|wxTOP, spacing ); + rowsizer->Add( colsizer, 0, 0, spacing ); + + topsizer->Add( rowsizer, 1, wxLEFT|wxRIGHT|wxEXPAND, spacing ); + + // Separator line + topsizer->Add( new wxStaticLine(this,-1), + 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, spacing ); + + // buttons + rowsizer = new wxBoxSizer( wxHORIZONTAL ); + /* + const int but_sz_flags = + wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; + */ + rowsizer->Add( new wxButton(this,wxID_OK,_("Ok")), + 0, but_sz_flags, spacing ); + rowsizer->Add( new wxButton(this,wxID_CANCEL,_("Cancel")), + 0, but_sz_flags, spacing ); + topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + + m_edValue->SetFocus(); + + SetSizer( topsizer ); + topsizer->SetSizeHints( this ); + +#if !wxPG_SMALL_SCREEN + if ( sz.x == wxDefaultSize.x && + sz.y == wxDefaultSize.y ) + SetSize( wxSize(275,360) ); + else + SetSize(sz); +#endif + + return res; +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnAddClick(wxCommandEvent& ) +{ + wxString text = m_edValue->GetValue(); + if ( text.length() ) + { + if ( ArrayInsert( text, -1 ) ) + { + m_lbStrings->Append( text ); + m_modified = true; + m_edValue->Clear(); + } + } +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnDeleteClick(wxCommandEvent& ) +{ + int index = m_lbStrings->GetSelection(); + if ( index >= 0 ) + { + ArrayRemoveAt( index ); + m_lbStrings->Delete ( index ); + m_modified = true; + } +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnUpClick(wxCommandEvent& ) +{ + int index = m_lbStrings->GetSelection(); + if ( index > 0 ) + { + ArraySwap(index-1,index); + /*wxString old_str = m_array[index-1]; + wxString new_str = m_array[index]; + m_array[index-1] = new_str; + m_array[index] = old_str;*/ + m_lbStrings->SetString ( index-1, ArrayGet(index-1) ); + m_lbStrings->SetString ( index, ArrayGet(index) ); + m_lbStrings->SetSelection ( index-1 ); + m_modified = true; + } +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnDownClick(wxCommandEvent& ) +{ + int index = m_lbStrings->GetSelection(); + int lastStringIndex = ((int) m_lbStrings->GetCount()) - 1; + if ( index >= 0 && index < lastStringIndex ) + { + ArraySwap(index,index+1); + /*wxString old_str = m_array[index+1]; + wxString new_str = m_array[index]; + m_array[index+1] = new_str; + m_array[index] = old_str;*/ + m_lbStrings->SetString ( index+1, ArrayGet(index+1) ); + m_lbStrings->SetString ( index, ArrayGet(index) ); + m_lbStrings->SetSelection ( index+1 ); + m_modified = true; + } +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnUpdateClick(wxCommandEvent& ) +{ + int index = m_lbStrings->GetSelection(); + if ( index >= 0 ) + { + wxString str = m_edValue->GetValue(); + if ( ArraySet(index,str) ) + { + m_lbStrings->SetString ( index, str ); + //m_array[index] = str; + m_modified = true; + } + } +} + +// ----------------------------------------------------------------------- + +void wxArrayEditorDialog::OnListBoxClick(wxCommandEvent& ) +{ + int index = m_lbStrings->GetSelection(); + if ( index >= 0 ) + { + m_edValue->SetValue( m_lbStrings->GetString(index) ); + } +} + +// ----------------------------------------------------------------------- +// wxPGArrayStringEditorDialog +// ----------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxPGArrayStringEditorDialog, wxArrayEditorDialog) + +BEGIN_EVENT_TABLE(wxPGArrayStringEditorDialog, wxArrayEditorDialog) + EVT_BUTTON(28, wxPGArrayStringEditorDialog::OnCustomEditClick) +END_EVENT_TABLE() + +// ----------------------------------------------------------------------- + +wxString wxPGArrayStringEditorDialog::ArrayGet( size_t index ) +{ + return m_array[index]; +} + +size_t wxPGArrayStringEditorDialog::ArrayGetCount() +{ + return m_array.size(); +} + +bool wxPGArrayStringEditorDialog::ArrayInsert( const wxString& str, int index ) +{ + if (index<0) + m_array.Add(str); + else + m_array.Insert(str,index); + return true; +} + +bool wxPGArrayStringEditorDialog::ArraySet( size_t index, const wxString& str ) +{ + m_array[index] = str; + return true; +} + +void wxPGArrayStringEditorDialog::ArrayRemoveAt( int index ) +{ + m_array.RemoveAt(index); +} + +void wxPGArrayStringEditorDialog::ArraySwap( size_t first, size_t second ) +{ + wxString old_str = m_array[first]; + wxString new_str = m_array[second]; + m_array[first] = new_str; + m_array[second] = old_str; +} + +wxPGArrayStringEditorDialog::wxPGArrayStringEditorDialog() + : wxArrayEditorDialog() +{ + Init(); +} + +void wxPGArrayStringEditorDialog::Init() +{ + m_pCallingClass = (wxArrayStringProperty*) NULL; +} + +void wxPGArrayStringEditorDialog::OnCustomEditClick(wxCommandEvent& ) +{ + wxASSERT( m_pCallingClass ); + wxString str = m_edValue->GetValue(); + if ( m_pCallingClass->OnCustomStringEdit(m_parent,str) ) + { + //m_edValue->SetValue ( str ); + m_lbStrings->Append ( str ); + m_array.Add ( str ); + m_modified = true; + } +} + +// ----------------------------------------------------------------------- +// wxArrayStringProperty +// ----------------------------------------------------------------------- + +WX_PG_IMPLEMENT_PROPERTY_CLASS(wxArrayStringProperty, // Property name + wxPGProperty, // Property we inherit from + wxArrayString, // Value type name + const wxArrayString&, // Value type, as given in constructor + TextCtrlAndButton) // Initial editor + +wxArrayStringProperty::wxArrayStringProperty( const wxString& label, + const wxString& name, + const wxArrayString& array ) + : wxPGProperty(label,name) +{ + SetValue( array ); +} + +wxArrayStringProperty::~wxArrayStringProperty() { } + +void wxArrayStringProperty::OnSetValue() +{ + GenerateValueAsString(); +} + +wxString wxArrayStringProperty::GetValueAsString( int WXUNUSED(argFlags) ) const +{ + return m_display; +} + +// Converts wxArrayString to a string separated by delimeters and spaces. +// preDelim is useful for "str1" "str2" style. Set flags to 1 to do slash +// conversion. +void wxPropertyGrid::ArrayStringToString( wxString& dst, const wxArrayString& src, + wxChar preDelim, wxChar postDelim, + int flags ) +{ + wxString pdr; + + unsigned int i; + unsigned int itemCount = src.size(); + + wxChar preas[2]; + + dst.Empty(); + + if ( !preDelim ) + preas[0] = 0; + else if ( (flags & 1) ) + { + preas[0] = preDelim; + preas[1] = 0; + pdr = wxS("\\"); + pdr += preDelim; + } + + if ( itemCount ) + dst.append( preas ); + + wxASSERT( postDelim ); + wxString postDelimStr(postDelim); + //wxString preDelimStr(preDelim); + + for ( i = 0; i < itemCount; i++ ) + { + wxString str( src.Item(i) ); + + // Do some character conversion. + // Convertes \ to \\ and <preDelim> to \<preDelim> + // Useful when preDelim and postDelim are "\"". + if ( flags & 1 ) + { + str.Replace( wxS("\\"), wxS("\\\\"), true ); + if ( pdr.length() ) + str.Replace( preas, pdr, true ); + } + + dst.append( str ); + + if ( i < (itemCount-1) ) + { + dst.append( postDelimStr ); + dst.append( wxS(" ") ); + dst.append( preas ); + } + else if ( preDelim ) + dst.append( postDelimStr ); + } +} + +#define ARRSTRPROP_ARRAY_TO_STRING(STRING,ARRAY) \ + wxPropertyGrid::ArrayStringToString(STRING,ARRAY,wxS('"'),wxS('"'),1); + +void wxArrayStringProperty::GenerateValueAsString() +{ + wxArrayString arr = m_value.GetArrayString(); + ARRSTRPROP_ARRAY_TO_STRING(m_display, arr) +} + +// Default implementation doesn't do anything. +bool wxArrayStringProperty::OnCustomStringEdit( wxWindow*, wxString& ) +{ + return false; +} + +wxArrayEditorDialog* wxArrayStringProperty::CreateEditorDialog() +{ + return new wxPGArrayStringEditorDialog(); +} + +bool wxArrayStringProperty::OnButtonClick( wxPropertyGrid* propGrid, + wxWindow* WXUNUSED(primaryCtrl), + const wxChar* cbt ) +{ + // Update the value + PrepareValueForDialogEditing(propGrid); + + if ( !propGrid->EditorValidate() ) + return false; + + // Create editor dialog. + wxArrayEditorDialog* dlg = CreateEditorDialog(); +#if wxUSE_VALIDATORS + wxValidator* validator = GetValidator(); + wxPGInDialogValidator dialogValidator; +#endif + + wxPGArrayStringEditorDialog* strEdDlg = wxDynamicCast(dlg, wxPGArrayStringEditorDialog); + + if ( strEdDlg ) + strEdDlg->SetCustomButton(cbt, this); + + dlg->SetDialogValue( wxVariant(m_value) ); + dlg->Create(propGrid, wxEmptyString, m_label); + +#if !wxPG_SMALL_SCREEN + dlg->Move( propGrid->GetGoodEditorDialogPosition(this,dlg->GetSize()) ); +#endif + + bool retVal; + + for (;;) + { + retVal = false; + + int res = dlg->ShowModal(); + + if ( res == wxID_OK && dlg->IsModified() ) + { + wxVariant value = dlg->GetDialogValue(); + if ( !value.IsNull() ) + { + wxArrayString actualValue = value.GetArrayString(); + wxString tempStr; + ARRSTRPROP_ARRAY_TO_STRING(tempStr, actualValue) + #if wxUSE_VALIDATORS + if ( dialogValidator.DoValidate( propGrid, validator, tempStr ) ) + #endif + { + SetValueInEvent( actualValue ); + retVal = true; + break; + } + } + else + break; + } + else + break; + } + + delete dlg; + + return retVal; +} + +bool wxArrayStringProperty::OnEvent( wxPropertyGrid* propGrid, + wxWindow* primary, + wxEvent& event ) +{ + if ( propGrid->IsMainButtonEvent(event) ) + return OnButtonClick(propGrid,primary,(const wxChar*) NULL); + return false; +} + +bool wxArrayStringProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const +{ + wxArrayString arr; + + WX_PG_TOKENIZER2_BEGIN(text,wxS('"')) + + // Need to replace backslashes with empty characters + // (opposite what is done in GenerateValueString). + token.Replace ( wxS("\\"), wxEmptyString, true ); + + arr.Add( token ); + + WX_PG_TOKENIZER2_END() + + variant = arr; + + return true; +} + +// ----------------------------------------------------------------------- +// wxPGInDialogValidator +// ----------------------------------------------------------------------- + +#if wxUSE_VALIDATORS +bool wxPGInDialogValidator::DoValidate( wxPropertyGrid* propGrid, + wxValidator* validator, + const wxString& value ) +{ + if ( !validator ) + return true; + + wxTextCtrl* tc = m_textCtrl; + + if ( !tc ) + { + { + tc = new wxTextCtrl( propGrid, wxPG_SUBID_TEMP1, wxEmptyString, + wxPoint(30000,30000)); + tc->Hide(); + } + + m_textCtrl = tc; + } + + tc->SetValue(value); + + validator->SetWindow(tc); + bool res = validator->Validate(propGrid); + + return res; +} +#else +bool wxPGInDialogValidator::DoValidate( wxPropertyGrid* WXUNUSED(propGrid), + wxValidator* WXUNUSED(validator), + const wxString& WXUNUSED(value) ) +{ + return true; +} +#endif + +// ----------------------------------------------------------------------- + -- 2.47.2