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) \
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 \
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 \
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 \
@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)
= \
-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)
@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@ = \
### 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
@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 \
$(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)
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)
@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@
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
@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
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
@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
@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
@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
@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
@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
@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
@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
$(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
$(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
$(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
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
$(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
$(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
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
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
$(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
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
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
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
$(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
# 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
-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)
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=""
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=""
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
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
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
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
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=""
<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>
</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>
<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>
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 -->
<!-- ====================================================================== -->
$(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>
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
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
$(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
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
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
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
$(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
<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">
<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 -->
<!-- ================================================================ -->
<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>
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
<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>
<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: -->
# 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)',
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
# 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
# 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
# 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
-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)" \
$(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) \
$(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 \
$(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 \
!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
$(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
__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
### 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
-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
!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
!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
!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
!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
!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
!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
!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
!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
!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
!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
!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
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
!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
!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
$(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
!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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
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)" \
$(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) \
$(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 \
$(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 \
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
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)
### 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
-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
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)
$(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) $<
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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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) $<
$(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)
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)" \
$(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__ \
$(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__ \
$(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__ \
$(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__ \
$(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__ \
$(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__ \
$(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 \
$(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 \
!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)
$(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)
$(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 = \
$(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)
____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
### 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
-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
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) @<<
$(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
!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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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
$(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 &
$(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 &
!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
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)" &
$(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) &
### 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
-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
!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
$(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) $<
$(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) $<
$(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) $<
\r
###############################################################################\r
\r
+Project: "propgrid"=wx_propgrid.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
Project: "richtext"=wx_richtext.dsp - Package Owner=<4>\r
\r
Package=<5>\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\include\wx\propgrid\advprops.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\anidecod.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\include\wx\propgrid\editors.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\effects.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\include\wx\propgrid\manager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\matrix.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\include\wx\propgrid\property.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgrid.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgriddefs.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgridiface.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgridpagestate.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\props.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\quantize.h\r
# End Source File\r
# Begin Source File\r
--- /dev/null
+# Microsoft Developer Studio Project File - Name="wx_propgrid" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+\r
+CFG=propgrid - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "wx_propgrid.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "wx_propgrid.mak" CFG="propgrid - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "propgrid - Win32 DLL Universal Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "propgrid - Win32 DLL Universal Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "propgrid - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "propgrid - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "propgrid - Win32 Universal Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "propgrid - Win32 Universal Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "propgrid - Win32 Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "propgrid - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_dll"\r
+# PROP BASE Intermediate_Dir "vc_mswunivudll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_dll"\r
+# PROP Intermediate_Dir "vc_mswunivudll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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"\r
+# 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"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_dll"\r
+# PROP BASE Intermediate_Dir "vc_mswunivuddll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_dll"\r
+# PROP Intermediate_Dir "vc_mswunivuddll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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"\r
+# 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"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_dll"\r
+# PROP BASE Intermediate_Dir "vc_mswudll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_dll"\r
+# PROP Intermediate_Dir "vc_mswudll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "WXUSINGDLL" /D "WXMAKINGDLL_PROPGRID" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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"\r
+# 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"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_dll"\r
+# PROP BASE Intermediate_Dir "vc_mswuddll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_dll"\r
+# PROP Intermediate_Dir "vc_mswuddll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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"\r
+# 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"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_lib"\r
+# PROP BASE Intermediate_Dir "vc_mswunivu\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_lib"\r
+# PROP Intermediate_Dir "vc_mswunivu\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE RSC /l 0x409\r
+# ADD RSC /l 0x409\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib"\r
+# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_lib"\r
+# PROP BASE Intermediate_Dir "vc_mswunivud\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_lib"\r
+# PROP Intermediate_Dir "vc_mswunivud\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE RSC /l 0x409\r
+# ADD RSC /l 0x409\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib"\r
+# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_lib"\r
+# PROP BASE Intermediate_Dir "vc_mswu\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_lib"\r
+# PROP Intermediate_Dir "vc_mswu\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE RSC /l 0x409\r
+# ADD RSC /l 0x409\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29u_propgrid.lib"\r
+# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29u_propgrid.lib"\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\lib\vc_lib"\r
+# PROP BASE Intermediate_Dir "vc_mswud\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\lib\vc_lib"\r
+# PROP Intermediate_Dir "vc_mswud\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE RSC /l 0x409\r
+# ADD RSC /l 0x409\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29ud_propgrid.lib"\r
+# ADD LIB32 /nologo /out:"..\..\lib\vc_lib\wxmsw29ud_propgrid.lib"\r
+\r
+!ENDIF\r
+\r
+# Begin Target\r
+\r
+# Name "propgrid - Win32 DLL Universal Release"\r
+# Name "propgrid - Win32 DLL Universal Debug"\r
+# Name "propgrid - Win32 DLL Release"\r
+# Name "propgrid - Win32 DLL Debug"\r
+# Name "propgrid - Win32 Universal Release"\r
+# Name "propgrid - Win32 Universal Debug"\r
+# Name "propgrid - Win32 Release"\r
+# Name "propgrid - Win32 Debug"\r
+# Begin Group "Common Sources"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\common\dummy.cpp\r
+# ADD BASE CPP /Yc"wx/wxprec.h"\r
+# ADD CPP /Yc"wx/wxprec.h"\r
+# End Source File\r
+# End Group\r
+# Begin Group "MSW Sources"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\msw\version.rc\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF\r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "Setup Headers"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\univ\setup.h\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h\r
+InputPath=..\..\include\wx\univ\setup.h\r
+\r
+"..\..\lib\vc_dll\mswunivu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h\r
+InputPath=..\..\include\wx\univ\setup.h\r
+\r
+"..\..\lib\vc_dll\mswunivud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h\r
+InputPath=..\..\include\wx\univ\setup.h\r
+\r
+"..\..\lib\vc_lib\mswunivu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h\r
+InputPath=..\..\include\wx\univ\setup.h\r
+\r
+"..\..\lib\vc_lib\mswunivud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ENDIF\r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\msw\setup.h\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswu\wx\setup.h\r
+InputPath=..\..\include\wx\msw\setup.h\r
+\r
+"..\..\lib\vc_dll\mswu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswud\wx\setup.h\r
+InputPath=..\..\include\wx\msw\setup.h\r
+\r
+"..\..\lib\vc_dll\mswud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# Begin Custom Build - \r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswu\wx\setup.h\r
+InputPath=..\..\include\wx\msw\setup.h\r
+\r
+"..\..\lib\vc_lib\mswu\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswud\wx\setup.h\r
+InputPath=..\..\include\wx\msw\setup.h\r
+\r
+"..\..\lib\vc_lib\mswud\wx\setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+ copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h\r
+\r
+# End Custom Build\r
+\r
+!ENDIF\r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "MSW Headers"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\msw\genrcdefs.h\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswunivu\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswunivud\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswu\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_dll\mswud\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswunivu\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswunivud\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswu\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# Begin Custom Build - Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h\r
+InputPath=..\..\include\wx\msw\genrcdefs.h\r
+\r
+"..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h" : "$(SOURCE)" "..\..\lib\vc_lib\mswud\wx\msw"\r
+ cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"\r
+\r
+# End Custom Build\r
+\r
+!ENDIF\r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "Common Headers"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\advprops.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\editors.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\manager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\property.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgrid.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgriddefs.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgridiface.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\propgridpagestate.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\propgrid\props.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\advprops.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\editors.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\manager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\property.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\propgrid.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\propgridiface.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\propgridpagestate.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\propgrid\props.cpp\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
+\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "wx_vc7_aui.vcproj", "{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}"\r
EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "propgrid", "wx_vc7_propgrid.vcproj", "{F7A944F0-250D-57CD-8F71-BC38B2513B28}"\r
+EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "wx_vc7_richtext.vcproj", "{52F16F53-E13D-55CA-AD64-ACB0274B0704}"\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stc", "wx_vc7_stc.vcproj", "{4B498696-42F2-5547-B159-87E4CAF436C1}"\r
{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Release|Win32.Build.0 = Release|Win32\r
{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug|Win32.ActiveCfg = Debug|Win32\r
{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug|Win32.Build.0 = Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Release|Win32.ActiveCfg = Universal Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Release|Win32.Build.0 = Universal Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Universal Debug|Win32.Build.0 = Universal Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Release|Win32.ActiveCfg = Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Release|Win32.Build.0 = Release|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {F7A944F0-250D-57CD-8F71-BC38B2513B28}.Debug|Win32.Build.0 = Debug|Win32\r
{52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32\r
{52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32\r
{52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32\r
RelativePath="..\..\include\wx\accel.h"/>\r
<File\r
RelativePath="..\..\include\wx\access.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\advprops.h"/>\r
<File\r
RelativePath="..\..\include\wx\anidecod.h"/>\r
<File\r
RelativePath="..\..\include\wx\dragimag.h"/>\r
<File\r
RelativePath="..\..\include\wx\editlbox.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\editors.h"/>\r
<File\r
RelativePath="..\..\include\wx\effects.h"/>\r
<File\r
RelativePath="..\..\include\wx\listbox.h"/>\r
<File\r
RelativePath="..\..\include\wx\listctrl.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\manager.h"/>\r
<File\r
RelativePath="..\..\include\wx\matrix.h"/>\r
<File\r
RelativePath="..\..\include\wx\progdlg.h"/>\r
<File\r
RelativePath="..\..\include\wx\propdlg.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\property.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgrid.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgriddefs.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridiface.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\props.h"/>\r
<File\r
RelativePath="..\..\include\wx\quantize.h"/>\r
<File\r
--- /dev/null
+<?xml version="1.0" ?>\r
+<!--\r
+\r
+ This makefile was generated by\r
+ Bakefile 0.2.3 (http://www.bakefile.org)\r
+ Do not modify, all changes will be overwritten!\r
+\r
+-->\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="7.10"\r
+ Name="propgrid"\r
+ ProjectGUID="{F7A944F0-250D-57CD-8F71-BC38B2513B28}">\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"/>\r
+ </Platforms>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="DLL Universal Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswunivudll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivudll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswunivudll\propgrid\"\r
+ ObjectFile="vc_mswunivudll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Universal Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswunivuddll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivuddll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswunivuddll\propgrid\"\r
+ ObjectFile="vc_mswunivuddll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswudll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswudll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswudll\propgrid\"\r
+ ObjectFile="vc_mswudll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmsw29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswuddll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswuddll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswuddll\propgrid\"\r
+ ObjectFile="vc_mswuddll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmsw29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswunivu\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_LIB;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivu\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswunivu\propgrid\"\r
+ ObjectFile="vc_mswunivu\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswunivud\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivud\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswunivud\propgrid\"\r
+ ObjectFile="vc_mswunivud\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswu\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_LIB;__WXMSW__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswu\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswu\propgrid\"\r
+ ObjectFile="vc_mswu\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29u_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmsw29u_propgrid.lib"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswud\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="3"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswud\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswud\propgrid\"\r
+ ObjectFile="vc_mswud\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmsw29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc7_propgrid.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ \r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Common Sources"\r
+ UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}">\r
+ <File\r
+ RelativePath="..\..\src\common\dummy.cpp">\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32">\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"/>\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="MSW Sources"\r
+ UniqueIdentifier="{D030D8C2-53EE-5B96-8F89-D78157B06140}">\r
+ <File\r
+ RelativePath="..\..\src\msw\version.rc">\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ ExcludedFromBuild="true"/>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ ExcludedFromBuild="true"/>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"/>\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"/>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Setup Headers"\r
+ UniqueIdentifier="{63537534-1833-5C1F-8DBD-359A84F294C8}">\r
+ <File\r
+ RelativePath="..\..\include\wx\univ\setup.h">\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32"/>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32"/>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"/>\r
+ <FileConfiguration\r
+ Name="Debug|Win32"/>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\include\wx\msw\setup.h">\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"/>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"/>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"/>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"/>\r
+ <FileConfiguration\r
+ Name="Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""/>\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="MSW Headers"\r
+ UniqueIdentifier="{5AFFF20E-29F9-512B-B80A-7DC45976CDAC}">\r
+ <File\r
+ RelativePath="..\..\include\wx\msw\genrcdefs.h">\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswunivu\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswunivud\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswu\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswud\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswunivu\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswunivud\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswu\wx\msw""/>\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32">\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswud\wx\msw""/>\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Common Headers"\r
+ UniqueIdentifier="{8C07E926-65B0-5F00-B0D6-7F40DA69BB25}">\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\advprops.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\editors.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\manager.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\property.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgrid.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgriddefs.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridiface.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\props.h"/>\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx">\r
+ <File\r
+ RelativePath="..\..\src\propgrid\advprops.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\editors.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\manager.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\property.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgrid.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgridiface.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgridpagestate.cpp"/>\r
+ <File\r
+ RelativePath="..\..\src\propgrid\props.cpp"/>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ \r
+ </Globals>\r
+</VisualStudioProject>\r
+\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "wx_vc8_aui.vcproj", "{B361C000-79E7-5B8A-8F5F-BC0168C7002E}"\r
EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "propgrid", "wx_vc8_propgrid.vcproj", "{93781718-26B6-5541-84C5-78C6A8226AEC}"\r
+EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "wx_vc8_richtext.vcproj", "{4928FA3B-C258-5E39-AE05-E4BD709955B3}"\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stc", "wx_vc8_stc.vcproj", "{FA559111-7B08-54E7-BD3B-0B621C819C78}"\r
{B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Release|Win32.Build.0 = Release|Win32\r
{B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Debug|Win32.ActiveCfg = Debug|Win32\r
{B361C000-79E7-5B8A-8F5F-BC0168C7002E}.Debug|Win32.Build.0 = Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Release|Win32.ActiveCfg = Universal Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Release|Win32.Build.0 = Universal Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Universal Debug|Win32.Build.0 = Universal Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Release|Win32.ActiveCfg = Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Release|Win32.Build.0 = Release|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {93781718-26B6-5541-84C5-78C6A8226AEC}.Debug|Win32.Build.0 = Debug|Win32\r
{4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32\r
{4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32\r
{4928FA3B-C258-5E39-AE05-E4BD709955B3}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32\r
<File\r
RelativePath="..\..\include\wx\access.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\advprops.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\anidecod.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\editlbox.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\editors.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\effects.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\listctrl.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\manager.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\matrix.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\propdlg.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\property.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgrid.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgriddefs.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridiface.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\props.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\quantize.h"\r
/>\r
--- /dev/null
+<?xml version="1.0" ?>\r
+<!--\r
+\r
+ This makefile was generated by\r
+ Bakefile 0.2.3 (http://www.bakefile.org)\r
+ Do not modify, all changes will be overwritten!\r
+\r
+-->\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8.00"\r
+ Name="propgrid"\r
+ ProjectGUID="{93781718-26B6-5541-84C5-78C6A8226AEC}"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ \r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="DLL Universal Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswunivudll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivudll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswunivudll\propgrid\"\r
+ ObjectFile="vc_mswunivudll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmswuniv29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290u_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Universal Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswunivuddll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivuddll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswunivuddll\propgrid\"\r
+ ObjectFile="vc_mswunivuddll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmswuniv290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmswuniv29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmswuniv290ud_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswudll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;__WXMSW__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswudll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswudll\propgrid\"\r
+ ObjectFile="vc_mswudll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290u_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmsw29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290u_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_dll"\r
+ IntermediateDirectory="vc_mswuddll\propgrid"\r
+ ConfigurationType="2"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_USRDLL;DLL_EXPORTS;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswuddll\wxprec_propgriddll.pch"\r
+ AssemblerListingLocation="vc_mswuddll\propgrid\"\r
+ ObjectFile="vc_mswuddll\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_dll\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING;WXDLLNAME=wxmsw290ud_propgrid_vc_custom;WXUSINGDLL;WXMAKINGDLL_PROPGRID"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.dll"\r
+ LinkIncremental="2"\r
+ ImportLibrary="..\..\lib\vc_dll\wxmsw29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories="..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="..\..\lib\vc_dll\wxmsw290ud_propgrid_vc_custom.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_dll\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswunivu\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_LIB;__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivu\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswunivu\propgrid\"\r
+ ObjectFile="vc_mswunivu\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29u_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXBUILDING"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmswuniv29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswunivud\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswunivud\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswunivud\propgrid\"\r
+ ObjectFile="vc_mswunivud\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswunivud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmswuniv29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswu\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="_LIB;__WXMSW__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswu\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswu\propgrid\"\r
+ ObjectFile="vc_mswu\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29u_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswu;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXBUILDING"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmsw29u_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="..\..\lib\vc_lib"\r
+ IntermediateDirectory="vc_mswud\propgrid"\r
+ ConfigurationType="4"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_LIB;_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ UsePrecompiledHeader="2"\r
+ PrecompiledHeaderThrough="wx/wxprec.h"\r
+ PrecompiledHeaderFile="vc_mswud\wxprec_propgridlib.pch"\r
+ AssemblerListingLocation="vc_mswud\propgrid\"\r
+ ObjectFile="vc_mswud\propgrid\"\r
+ ProgramDataBaseFileName="..\..\lib\vc_lib\wxmsw29ud_propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories="..\..\lib\vc_lib\mswud;..\..\include;..\..\src\tiff\libtiff;..\..\src\jpeg;..\..\src\png;..\..\src\zlib;..\..\src\regex;..\..\src\expat\lib"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXBUILDING"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ OutputFile="..\..\lib\vc_lib\wxmsw29ud_propgrid.lib"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="..\..\lib\vc_lib\wx_vc8_propgrid.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ \r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Common Sources"\r
+ UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\common\dummy.cpp"\r
+ >\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="MSW Sources"\r
+ UniqueIdentifier="{D030D8C2-53EE-5B96-8F89-D78157B06140}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\msw\version.rc"\r
+ >\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Setup Headers"\r
+ UniqueIdentifier="{63537534-1833-5C1F-8DBD-359A84F294C8}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\include\wx\univ\setup.h"\r
+ >\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswunivu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswunivud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswunivu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswunivud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ />\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\include\wx\msw\setup.h"\r
+ >\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_dll\mswud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ />\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswu\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ CommandLine="copy "$(InputPath)" ..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ Outputs="..\..\lib\vc_lib\mswud\wx\setup.h"\r
+ AdditionalDependencies=""$(INTDIR)" "$(OUTDIR)""\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="MSW Headers"\r
+ UniqueIdentifier="{5AFFF20E-29F9-512B-B80A-7DC45976CDAC}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\include\wx\msw\genrcdefs.h"\r
+ >\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswunivu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswunivu\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswunivud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswunivud\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswu\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="DLL Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_dll\mswud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_dll\mswud\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswunivu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswunivu\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswunivud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswunivud\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswu\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswu\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ Description="Creating ..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"\r
+ CommandLine="cl /EP /nologo "$(InputPath)" > "..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h""\r
+ Outputs="..\..\lib\vc_lib\mswud\wx\msw\rcdefs.h"\r
+ AdditionalDependencies=""..\..\lib\vc_lib\mswud\wx\msw""\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Common Headers"\r
+ UniqueIdentifier="{8C07E926-65B0-5F00-B0D6-7F40DA69BB25}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\advprops.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\editors.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\manager.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\property.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgrid.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgriddefs.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridiface.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\propgridpagestate.h"\r
+ />\r
+ <File\r
+ RelativePath="..\..\include\wx\propgrid\props.h"\r
+ />\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\propgrid\advprops.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\editors.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\manager.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\property.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgrid.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgridiface.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\propgridpagestate.cpp"\r
+ />\r
+ <File\r
+ RelativePath="..\..\src\propgrid\props.cpp"\r
+ />\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ \r
+ </Globals>\r
+</VisualStudioProject>\r
+\r
#! /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.
#
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
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
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
--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
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
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
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
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=""
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=""
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=""
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
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
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
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
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
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
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
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
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)
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)
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
src/aui/*.cpp
+src/propgrid/*.cpp
+
src/unix/*.cpp
src/unix/*.c
include/wx/html/msw/*.rc
include/wx/richtext/*.h
include/wx/aui/*.h
+include/wx/propgrid/*.h
lib/dummy
tools/gettext/*.*
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
samples/printing/printing.dsp
+samples/propgrid/propgrid.dsp
+
samples/propsize/propsize.dsp
samples/regtest/regtest.dsp
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
src/aui/*.cpp
+src/propgrid/*.cpp
+
src/png/*.c
src/png/*.h
src/png/makefile*
include/wx/html/*.h
include/wx/richtext/*.h
include/wx/aui/*.h
+include/wx/propgrid/*.h
lib/dummy
utils/*.bkl
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
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
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
- 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.
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().
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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
+
+*/
+
@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
@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
- wxNO_HTML_LIB
- wxNO_MEDIA_LIB
- wxNO_NET_LIB
+ - wxNO_PROPGRID_LIB
- wxNO_QA_LIB
- wxNO_RICHTEXT_LIB
- wxNO_XML_LIB
@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)}
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"];
wxGL -> wxCore;
wxHTML -> wxCore;
wxMedia -> wxCore;
+ wxPropertyGrid -> wxAdvanced;
wxQA -> wxCore; wxQA -> wxXML;
wxRichText -> wxAdvanced; wxRichText -> wxHTML; wxRichText -> wxXML;
wxSTC -> wxCore;
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.
@li @sample{popup}
@li @sample{power}
@li @sample{printing}
+@li @sample{propgrid}
</td><td>
@li @sample{regtest}
@li @sample{render}
@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}
@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
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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
+
+*/
+
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
# 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)
// 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
// 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
#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
// ----------------------------------------------------------------------------
// 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
// 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
#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
// ----------------------------------------------------------------------------
// 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
// 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
#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
// ----------------------------------------------------------------------------
// 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
// 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
#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
// ----------------------------------------------------------------------------
// 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
// 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
// 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
#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
// ----------------------------------------------------------------------------
// 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
// 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
#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
// ----------------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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__
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
// 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
// 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
// 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
#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
// ----------------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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 );
+};
+
+// -----------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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);
+ }
+};
+
+// -----------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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; }
+};
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+};
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+};
+
+
-@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
-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 \
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 \
--- /dev/null
+# =========================================================================
+# 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
--- /dev/null
+# =========================================================================
+# 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
+
--- /dev/null
+# =========================================================================
+# 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
--- /dev/null
+# =========================================================================
+# 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
--- /dev/null
+# =========================================================================
+# 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
+
--- /dev/null
+# =========================================================================
+# 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 $<
+
--- /dev/null
+<?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>
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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();
+}
+
+// -----------------------------------------------------------------------
--- /dev/null
+# Microsoft Developer Studio Project File - Name="propgrid" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Application" 0x0101\r
+\r
+CFG=propgrid - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "propgrid.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "propgrid.mak" CFG="propgrid - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "propgrid - Win32 DLL Universal Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 DLL Universal Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 DLL Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 DLL Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 Universal Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 Universal Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "propgrid - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF "$(CFG)" == "propgrid - Win32 DLL Universal Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswunivudll"\r
+# PROP BASE Intermediate_Dir "vc_mswunivudll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswunivudll"\r
+# PROP Intermediate_Dir "vc_mswunivudll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Universal Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswunivuddll"\r
+# PROP BASE Intermediate_Dir "vc_mswunivuddll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswunivuddll"\r
+# PROP Intermediate_Dir "vc_mswunivuddll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswudll"\r
+# PROP BASE Intermediate_Dir "vc_mswudll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswudll"\r
+# PROP Intermediate_Dir "vc_mswudll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 DLL Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswuddll"\r
+# PROP BASE Intermediate_Dir "vc_mswuddll\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswuddll"\r
+# PROP Intermediate_Dir "vc_mswuddll\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswunivu"\r
+# PROP BASE Intermediate_Dir "vc_mswunivu\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswunivu"\r
+# PROP Intermediate_Dir "vc_mswunivu\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Universal Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswunivud"\r
+# PROP BASE Intermediate_Dir "vc_mswunivud\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswunivud"\r
+# PROP Intermediate_Dir "vc_mswunivud\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswu"\r
+# PROP BASE Intermediate_Dir "vc_mswu\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswu"\r
+# PROP Intermediate_Dir "vc_mswu\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH\r
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ELSEIF "$(CFG)" == "propgrid - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "vc_mswud"\r
+# PROP BASE Intermediate_Dir "vc_mswud\propgrid"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "vc_mswud"\r
+# PROP Intermediate_Dir "vc_mswud\propgrid"\r
+# PROP Target_Dir ""\r
+# 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\r
+# 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\r
+# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32\r
+# 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\r
+# 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\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# 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\r
+# 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\r
+\r
+!ENDIF\r
+\r
+# Begin Target\r
+\r
+# Name "propgrid - Win32 DLL Universal Release"\r
+# Name "propgrid - Win32 DLL Universal Debug"\r
+# Name "propgrid - Win32 DLL Release"\r
+# Name "propgrid - Win32 DLL Debug"\r
+# Name "propgrid - Win32 Universal Release"\r
+# Name "propgrid - Win32 Universal Debug"\r
+# Name "propgrid - Win32 Release"\r
+# Name "propgrid - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\propgrid.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\propgrid_minimal.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\..\sample.rc\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\sampleprops.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\tests.cpp\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
+\r
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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 &)
+{
+}
--- /dev/null
+<?xml version="1.0" ?>\r
+<!--\r
+\r
+ This makefile was generated by\r
+ Bakefile 0.2.3 (http://www.bakefile.org)\r
+ Do not modify, all changes will be overwritten!\r
+\r
+-->\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="7.10"\r
+ Name="propgrid"\r
+ ProjectGUID="{6A7A28DD-C53E-50B0-B8E2-8D5A1D4206C7}">\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"/>\r
+ </Platforms>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="DLL Universal Release|Win32"\r
+ OutputDirectory="vc_mswunivudll"\r
+ IntermediateDirectory="vc_mswunivudll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivudll\propgrid\"\r
+ ObjectFile="vc_mswunivudll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivudll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivudll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivudll\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivudll\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Universal Debug|Win32"\r
+ OutputDirectory="vc_mswunivuddll"\r
+ IntermediateDirectory="vc_mswunivuddll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivuddll\propgrid\"\r
+ ObjectFile="vc_mswunivuddll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivuddll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivuddll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivuddll\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivuddll\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Release|Win32"\r
+ OutputDirectory="vc_mswudll"\r
+ IntermediateDirectory="vc_mswudll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswudll\propgrid\"\r
+ ObjectFile="vc_mswudll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswudll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswudll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswudll\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswudll\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Debug|Win32"\r
+ OutputDirectory="vc_mswuddll"\r
+ IntermediateDirectory="vc_mswuddll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswuddll\propgrid\"\r
+ ObjectFile="vc_mswuddll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswuddll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswuddll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswuddll\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswuddll\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Release|Win32"\r
+ OutputDirectory="vc_mswunivu"\r
+ IntermediateDirectory="vc_mswunivu\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivu\propgrid\"\r
+ ObjectFile="vc_mswunivu\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivu\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivu\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivu\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivu\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Debug|Win32"\r
+ OutputDirectory="vc_mswunivud"\r
+ IntermediateDirectory="vc_mswunivud\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivud\propgrid\"\r
+ ObjectFile="vc_mswunivud\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivud\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivud\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivud\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivud\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="vc_mswu"\r
+ IntermediateDirectory="vc_mswu\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswu\propgrid\"\r
+ ObjectFile="vc_mswu\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswu\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswu\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswu\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswu\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="vc_mswud"\r
+ IntermediateDirectory="vc_mswud\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1">\r
+ <Tool\r
+ Name="VCPreBuildEventTool"/>\r
+ <Tool\r
+ Name="VCCustomBuildTool"/>\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"/>\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"/>\r
+ <Tool\r
+ Name="VCIDLTool"/>\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswud\propgrid\"\r
+ ObjectFile="vc_mswud\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswud\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"/>\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"/>\r
+ <Tool\r
+ Name="VCPreLinkEventTool"/>\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswud\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswud\propgrid.pdb"\r
+ TargetMachine="1"/>\r
+ <Tool\r
+ Name="VCALinkTool"/>\r
+ <Tool\r
+ Name="VCXDCMakeTool"/>\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswud\propgrid_vc7.bsc"\r
+ SuppressStartupBanner="true"/>\r
+ <Tool\r
+ Name="VCFxCopTool"/>\r
+ <Tool\r
+ Name="VCAppVerifierTool"/>\r
+ <Tool\r
+ Name="VCWebDeploymentTool"/>\r
+ <Tool\r
+ Name="VCPostBuildEventTool"/>\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ \r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Source Files"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx">\r
+ <File\r
+ RelativePath=".\propgrid.cpp"/>\r
+ <File\r
+ RelativePath=".\propgrid_minimal.cpp"/>\r
+ <File\r
+ RelativePath=".\sampleprops.cpp"/>\r
+ <File\r
+ RelativePath=".\tests.cpp"/>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav">\r
+ <File\r
+ RelativePath=".\..\sample.rc"/>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ \r
+ </Globals>\r
+</VisualStudioProject>\r
+\r
--- /dev/null
+<?xml version="1.0" ?>\r
+<!--\r
+\r
+ This makefile was generated by\r
+ Bakefile 0.2.3 (http://www.bakefile.org)\r
+ Do not modify, all changes will be overwritten!\r
+\r
+-->\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8.00"\r
+ Name="propgrid"\r
+ ProjectGUID="{67938AAC-80E6-5FE3-BA5F-1B02DB39DBAC}"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ \r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="DLL Universal Release|Win32"\r
+ OutputDirectory="vc_mswunivudll"\r
+ IntermediateDirectory="vc_mswunivudll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivudll\propgrid\"\r
+ ObjectFile="vc_mswunivudll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivudll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivudll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivudll\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivudll\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Universal Debug|Win32"\r
+ OutputDirectory="vc_mswunivuddll"\r
+ IntermediateDirectory="vc_mswunivuddll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivuddll\propgrid\"\r
+ ObjectFile="vc_mswunivuddll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivuddll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivuddll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivuddll\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivuddll\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Release|Win32"\r
+ OutputDirectory="vc_mswudll"\r
+ IntermediateDirectory="vc_mswudll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswudll\propgrid\"\r
+ ObjectFile="vc_mswudll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswudll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswudll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswudll\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswudll\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="DLL Debug|Win32"\r
+ OutputDirectory="vc_mswuddll"\r
+ IntermediateDirectory="vc_mswuddll\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswuddll\propgrid\"\r
+ ObjectFile="vc_mswuddll\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswuddll\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswuddll\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_dll"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswuddll\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswuddll\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Release|Win32"\r
+ OutputDirectory="vc_mswunivu"\r
+ IntermediateDirectory="vc_mswunivu\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivu\propgrid\"\r
+ ObjectFile="vc_mswunivu\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivu\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivu\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivu\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivu\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Universal Debug|Win32"\r
+ OutputDirectory="vc_mswunivud"\r
+ IntermediateDirectory="vc_mswunivud\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswunivud\propgrid\"\r
+ ObjectFile="vc_mswunivud\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswunivud\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswunivud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswunivud\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswunivud\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswunivud\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="vc_mswu"\r
+ IntermediateDirectory="vc_mswu\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="2"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="false"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="2"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswu\propgrid\"\r
+ ObjectFile="vc_mswu\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswu\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswu;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="__WXMSW__;_UNICODE;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswu\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswu\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswu\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="vc_mswud"\r
+ IntermediateDirectory="vc_mswud\propgrid"\r
+ ConfigurationType="1"\r
+ UseOfMFC="0"\r
+ ATLMinimizesCRunTimeLibraryUsage="false"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ InlineFunctionExpansion="1"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples"\r
+ MinimalRebuild="true"\r
+ ExceptionHandling="1"\r
+ AdditionalOptions=""\r
+ RuntimeLibrary="3"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ BasicRuntimeChecks="3"\r
+ DebugInformationFormat="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ RuntimeTypeInfo="true"\r
+ AssemblerListingLocation="vc_mswud\propgrid\"\r
+ ObjectFile="vc_mswud\propgrid\"\r
+ ProgramDataBaseFileName="vc_mswud\propgrid.pdb"\r
+ WarningLevel="4"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ Culture="1033"\r
+ AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples"\r
+ PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_WINDOWS;NOPCH"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ 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"\r
+ AdditionalOptions=""\r
+ OutputFile="vc_mswud\propgrid.exe"\r
+ LinkIncremental="2"\r
+ SubSystem="2"\r
+ SuppressStartupBanner="true"\r
+ AdditionalLibraryDirectories=".\..\..\lib\vc_lib"\r
+ GenerateManifest="true"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="vc_mswud\propgrid.pdb"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ OutputFile="vc_mswud\propgrid_vc8.bsc"\r
+ SuppressStartupBanner="true"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ \r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Source Files"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ >\r
+ <File\r
+ RelativePath=".\propgrid.cpp"\r
+ />\r
+ <File\r
+ RelativePath=".\propgrid_minimal.cpp"\r
+ />\r
+ <File\r
+ RelativePath=".\sampleprops.cpp"\r
+ />\r
+ <File\r
+ RelativePath=".\tests.cpp"\r
+ />\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ >\r
+ <File\r
+ RelativePath=".\..\sample.rc"\r
+ />\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ \r
+ </Globals>\r
+</VisualStudioProject>\r
+\r
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+}
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+}
+
+// -----------------------------------------------------------------------
#define wxUSE_AUI 0
+#define wxUSE_PROPGRID 0
+
#define wxUSE_STC 0
#define wxUSE_AUI 1
+#define wxUSE_PROPGRID 1
+
#ifndef wxUSE_GRAPHICS_CONTEXT
#define wxUSE_GRAPHICS_CONTEXT 0
#endif
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+}
+
+// -----------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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 ) );
+}
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+}
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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());
+}
+
+// -----------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+}
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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();
+}
+
+// -----------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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
+
+// -----------------------------------------------------------------------
+