Merge branch 'master' into webview-chromium

This commit is contained in:
Vadim Zeitlin 2024-01-17 00:22:39 +01:00
commit ff59ef301b
342 changed files with 8214 additions and 4407 deletions

View file

@ -68,17 +68,21 @@ jobs:
# versions of MinGW and Wine and is simpler to test with locally than the
# bespoke container used by GitHub Actions by default.
runs-on: ubuntu-latest
container: debian:testing-slim
container: debian:${{ matrix.debian_release }}-slim
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: wxMSW 64 bits
debian_release: testing
configure_flags: --disable-compat32
- name: wxMSW 32 bits
# Testing doesn't have 32 bit support any more.
debian_release: stable
triplet: i686-w64-mingw32
- name: wxMSW/Univ
debian_release: testing
configure_flags: --enable-universal --disable-compat32 --disable-debug --disable-optimise
minimal: true
env:

View file

@ -88,7 +88,7 @@ math(EXPR wxSOVERSION_MAJOR "${WX_CURRENT} - ${WX_AGE}")
set(wxSOVERSION ${wxSOVERSION_MAJOR}.${WX_AGE}.${WX_REVISION})
set(wxVERSION ${wxMAJOR_VERSION}.${wxMINOR_VERSION}.${wxRELEASE_NUMBER})
set(wxCOPYRIGHT "2002-2023 wxWidgets")
set(wxCOPYRIGHT "2002-2024 wxWidgets")
set(wxLANGUAGES C CXX)
if(APPLE AND NOT CMAKE_VERSION VERSION_LESS "3.16")
@ -97,9 +97,6 @@ endif()
project(wxWidgets VERSION ${wxVERSION} LANGUAGES ${wxLANGUAGES})
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(build/cmake/main.cmake)
# Set the default startup project for Visual Studio

View file

@ -604,6 +604,7 @@ ALL_BASE_HEADERS = \
wx/lzmastream.h \
wx/localedefs.h \
wx/uilocale.h \
wx/fs_data.h \
$(BASE_PLATFORM_HDR) \
wx/fs_inet.h \
wx/protocol/file.h \
@ -790,6 +791,7 @@ ALL_PORTS_BASE_HEADERS = \
wx/lzmastream.h \
wx/localedefs.h \
wx/uilocale.h \
wx/fs_data.h \
wx/unix/app.h \
wx/unix/apptbase.h \
wx/unix/apptrait.h \
@ -926,6 +928,7 @@ ALL_BASE_SOURCES = \
src/common/secretstore.cpp \
src/common/lzmastream.cpp \
src/common/uilocale.cpp \
src/common/fs_data.cpp \
src/common/fdiodispatcher.cpp \
src/common/selectdispatcher.cpp \
src/unix/appunix.cpp \
@ -1131,6 +1134,7 @@ MONODLL_OBJECTS = \
monodll_common_secretstore.o \
monodll_lzmastream.o \
monodll_common_uilocale.o \
monodll_fs_data.o \
$(__BASE_PLATFORM_SRC_OBJECTS) \
monodll_event.o \
monodll_fs_mem.o \
@ -1290,6 +1294,7 @@ MONOLIB_OBJECTS = \
monolib_common_secretstore.o \
monolib_lzmastream.o \
monolib_common_uilocale.o \
monolib_fs_data.o \
$(__BASE_PLATFORM_SRC_OBJECTS_1) \
monolib_event.o \
monolib_fs_mem.o \
@ -1418,6 +1423,7 @@ BASEDLL_OBJECTS = \
basedll_common_secretstore.o \
basedll_lzmastream.o \
basedll_common_uilocale.o \
basedll_fs_data.o \
$(__BASE_PLATFORM_SRC_OBJECTS_2) \
basedll_event.o \
basedll_fs_mem.o \
@ -1528,6 +1534,7 @@ BASELIB_OBJECTS = \
baselib_common_secretstore.o \
baselib_lzmastream.o \
baselib_common_uilocale.o \
baselib_fs_data.o \
$(__BASE_PLATFORM_SRC_OBJECTS_3) \
baselib_event.o \
baselib_fs_mem.o \
@ -3893,6 +3900,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS = \
wx/bmpbndl.h \
wx/filedlgcustomize.h \
wx/compositebookctrl.h \
wx/persist/combobox.h \
$(LOWLEVEL_HDR) \
$(GUI_CORE_HEADERS) \
wx/mediactrl.h \
@ -5542,7 +5550,8 @@ COND_TOOLKIT_QT___GUI_SRC_OBJECTS = \
monodll_qt_treectrl.o \
monodll_paletteg.o \
monodll_qt_datectrl.o \
monodll_qt_timectrl.o
monodll_qt_timectrl.o \
monodll_qt_overlay.o
@COND_TOOLKIT_QT@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_QT___GUI_SRC_OBJECTS)
@COND_PLATFORM_UNIX_1@__QT_PLATFORM_SRC_OBJECTS = \
@COND_PLATFORM_UNIX_1@ monodll_unix_dialup.o monodll_unix_joystick.o \
@ -7307,7 +7316,8 @@ COND_TOOLKIT_QT___GUI_SRC_OBJECTS_1 = \
monolib_qt_treectrl.o \
monolib_paletteg.o \
monolib_qt_datectrl.o \
monolib_qt_timectrl.o
monolib_qt_timectrl.o \
monolib_qt_overlay.o
@COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_QT___GUI_SRC_OBJECTS_1)
@COND_PLATFORM_UNIX_1@__QT_PLATFORM_SRC_OBJECTS_1 = \
@COND_PLATFORM_UNIX_1@ monolib_unix_dialup.o monolib_unix_joystick.o \
@ -9223,7 +9233,8 @@ COND_TOOLKIT_QT___GUI_SRC_OBJECTS_2 = \
coredll_qt_treectrl.o \
coredll_paletteg.o \
coredll_qt_datectrl.o \
coredll_qt_timectrl.o
coredll_qt_timectrl.o \
coredll_qt_overlay.o
@COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_QT___GUI_SRC_OBJECTS_2)
@COND_PLATFORM_UNIX_1@__QT_PLATFORM_SRC_OBJECTS_2 = \
@COND_PLATFORM_UNIX_1@ coredll_unix_dialup.o coredll_unix_joystick.o \
@ -10714,7 +10725,8 @@ COND_TOOLKIT_QT___GUI_SRC_OBJECTS_3 = \
corelib_qt_treectrl.o \
corelib_paletteg.o \
corelib_qt_datectrl.o \
corelib_qt_timectrl.o
corelib_qt_timectrl.o \
corelib_qt_overlay.o
@COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_QT___GUI_SRC_OBJECTS_3)
@COND_PLATFORM_UNIX_1@__QT_PLATFORM_SRC_OBJECTS_3 = \
@COND_PLATFORM_UNIX_1@ corelib_unix_dialup.o corelib_unix_joystick.o \
@ -14975,6 +14987,9 @@ monodll_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(MONODLL_ODEP)
monodll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
monodll_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
monodll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
@ -15815,6 +15830,9 @@ monodll_qt_datectrl.o: $(srcdir)/src/qt/datectrl.cpp $(MONODLL_ODEP)
monodll_qt_timectrl.o: $(srcdir)/src/qt/timectrl.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/qt/timectrl.cpp
monodll_qt_overlay.o: $(srcdir)/src/qt/overlay.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/qt/overlay.cpp
monodll_mdig.o: $(srcdir)/src/generic/mdig.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/mdig.cpp
@ -19724,6 +19742,9 @@ monolib_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(MONOLIB_ODEP)
monolib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
monolib_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
monolib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
@ -20564,6 +20585,9 @@ monolib_qt_datectrl.o: $(srcdir)/src/qt/datectrl.cpp $(MONOLIB_ODEP)
monolib_qt_timectrl.o: $(srcdir)/src/qt/timectrl.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/qt/timectrl.cpp
monolib_qt_overlay.o: $(srcdir)/src/qt/overlay.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/qt/overlay.cpp
monolib_mdig.o: $(srcdir)/src/generic/mdig.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/mdig.cpp
@ -24473,6 +24497,9 @@ basedll_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(BASEDLL_ODEP)
basedll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASEDLL_ODEP)
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
basedll_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(BASEDLL_ODEP)
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
basedll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASEDLL_ODEP)
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
@ -24953,6 +24980,9 @@ baselib_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(BASELIB_ODEP)
baselib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASELIB_ODEP)
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
baselib_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(BASELIB_ODEP)
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
baselib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASELIB_ODEP)
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
@ -25991,6 +26021,9 @@ coredll_qt_datectrl.o: $(srcdir)/src/qt/datectrl.cpp $(COREDLL_ODEP)
coredll_qt_timectrl.o: $(srcdir)/src/qt/timectrl.cpp $(COREDLL_ODEP)
$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/qt/timectrl.cpp
coredll_qt_overlay.o: $(srcdir)/src/qt/overlay.cpp $(COREDLL_ODEP)
$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/qt/overlay.cpp
coredll_mdig.o: $(srcdir)/src/generic/mdig.cpp $(COREDLL_ODEP)
$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/mdig.cpp
@ -29708,6 +29741,9 @@ corelib_qt_datectrl.o: $(srcdir)/src/qt/datectrl.cpp $(CORELIB_ODEP)
corelib_qt_timectrl.o: $(srcdir)/src/qt/timectrl.cpp $(CORELIB_ODEP)
$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/qt/timectrl.cpp
corelib_qt_overlay.o: $(srcdir)/src/qt/overlay.cpp $(CORELIB_ODEP)
$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/qt/overlay.cpp
corelib_mdig.o: $(srcdir)/src/generic/mdig.cpp $(CORELIB_ODEP)
$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/mdig.cpp

View file

@ -485,9 +485,9 @@ it if SHARED=1 unless you know what you are doing.
<set var="EXTRALIBS_MEDIA"/>
<set var="EXTRALIBS_GUI"/>
<set var="EXTRALIBS_OPENGL">
<if cond="COMPILER=='wat' and TOOLKIT=='MSW'">opengl32.lib glu32.lib</if>
<if cond="COMPILER=='vc'">opengl32.lib glu32.lib</if>
<if cond="COMPILER=='gcc'">-lopengl32 -lglu32</if>
<if cond="COMPILER=='wat' and TOOLKIT=='MSW'">opengl32.lib</if>
<if cond="COMPILER=='vc'">opengl32.lib</if>
<if cond="COMPILER=='gcc'">-lopengl32</if>
</set>
<set var="EXTRALIBS_SDL"/>
<set var="EXTRALIBS_STC">

View file

@ -477,6 +477,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/generic/paletteg.cpp
src/qt/datectrl.cpp
src/qt/timectrl.cpp
src/qt/overlay.cpp
</set>
<set var="MEDIA_QT_SRC" hints="files">
@ -579,6 +580,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/secretstore.cpp
src/common/lzmastream.cpp
src/common/uilocale.cpp
src/common/fs_data.cpp
</set>
<set var="BASE_AND_GUI_CMN_SRC" hints="files">
src/common/event.cpp
@ -754,6 +756,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/lzmastream.h
wx/localedefs.h
wx/uilocale.h
wx/fs_data.h
</set>
@ -1321,6 +1324,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/bmpbndl.h
wx/filedlgcustomize.h
wx/compositebookctrl.h
wx/persist/combobox.h
</set>
<!-- ====================================================================== -->

View file

@ -49,10 +49,10 @@
sed -e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_GUI_IDENTIFIER}/org.wxwidgets.$(id)/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_EXECUTABLE_NAME}/$(id)/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_NAME}/$(id)/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2023 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_COPYRIGHT}/Copyright 2002-2024 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_BUNDLE_VERSION}/$(WX_VERSION)/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2023 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2023 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_INFO_STRING}/$(id) version $(WX_VERSION), (c) 2002-2024 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_LONG_VERSION_STRING}/$(WX_VERSION), (c) 2002-2024 wxWidgets/" \
-e "s/\$(DOLLAR)$(DOLLAR){MACOSX_BUNDLE_SHORT_VERSION_STRING}/$(WX_RELEASE)/" \
$(BUNDLE_PLIST) >$(BUNDLE)/Info.plist

View file

@ -390,6 +390,7 @@ set(QT_SRC
src/generic/paletteg.cpp
src/qt/datectrl.cpp
src/qt/timectrl.cpp
src/qt/overlay.cpp
)
set(MEDIA_QT_SRC
@ -491,6 +492,7 @@ set(BASE_CMN_SRC
src/generic/fswatcherg.cpp
src/common/lzmastream.cpp
src/common/uilocale.cpp
src/common/fs_data.cpp
)
set(BASE_AND_GUI_CMN_SRC
@ -668,6 +670,7 @@ set(BASE_CMN_HDR
wx/lzmastream.h
wx/localedefs.h
wx/uilocale.h
wx/fs_data.h
)
set(NET_UNIX_SRC
@ -1222,6 +1225,7 @@ set(GUI_CMN_HDR
wx/bmpbndl.h
wx/filedlgcustomize.h
wx/compositebookctrl.h
wx/persist/combobox.h
)
set(UNIX_SRC

View file

@ -10,6 +10,25 @@
if(DEFINED wxBUILD_CXX_STANDARD AND NOT wxBUILD_CXX_STANDARD STREQUAL COMPILER_DEFAULT)
set(CMAKE_CXX_STANDARD ${wxBUILD_CXX_STANDARD})
set(CMAKE_CXX_STANDARD_REQUIRED ON)
else()
# If the standard is not set explicitly, check whether we can use C++11
# without any special options.
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
#include <vector>
int main() {
std::vector<int> v{1,2,3};
for (auto& n : v)
--n;
return v[0];
}"
wxHAVE_CXX11)
if(NOT wxHAVE_CXX11)
# If not, request it explicitly and let CMake check if it's supported.
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
endif()
if(MSVC)
@ -411,7 +430,7 @@ if(wxUSE_GUI)
else()
find_package(OpenGL)
if(OPENGL_FOUND)
foreach(gltarget OpenGL::GL OpenGL::GLU OpenGL::OpenGL)
foreach(gltarget OpenGL::GL OpenGL::OpenGL)
if(TARGET ${gltarget})
set(OPENGL_LIBRARIES ${gltarget} ${OPENGL_LIBRARIES})
endif()

View file

@ -46,8 +46,6 @@ endif()
# support setting the C++ standard, present it an option to the user
if(DEFINED CMAKE_CXX_STANDARD)
set(wxCXX_STANDARD_DEFAULT ${CMAKE_CXX_STANDARD})
elseif(APPLE)
set(wxCXX_STANDARD_DEFAULT 11)
else()
set(wxCXX_STANDARD_DEFAULT COMPILER_DEFAULT)
endif()

View file

@ -110,7 +110,7 @@ function(wx_check_cxx_source_compiles code res_var)
cmake_pop_check_state()
endfunction()
# wx_check_cxx_source_compiles(<code> <var> [headers...])
# wx_check_c_source_compiles(<code> <var> [headers...])
function(wx_check_c_source_compiles code res_var)
set(src)
foreach(header ${ARGN})

View file

@ -379,6 +379,7 @@ QT_SRC=
src/qt/msgdlg.cpp
src/qt/nonownedwnd.cpp
src/qt/notebook.cpp
src/qt/overlay.cpp
src/qt/pen.cpp
src/qt/popupwin.cpp
src/qt/printdlg.cpp
@ -454,6 +455,7 @@ BASE_CMN_SRC =
src/common/filtfind.cpp
src/common/fmapbase.cpp
src/common/fs_arc.cpp
src/common/fs_data.cpp
src/common/fs_filter.cpp
src/common/hash.cpp
src/common/hashmap.cpp
@ -570,6 +572,7 @@ BASE_CMN_HDR =
wx/fontenc.h
wx/fontmap.h
wx/fs_arc.h
wx/fs_data.h
wx/fs_filter.h
wx/fs_mem.h
wx/fs_zip.h
@ -1149,6 +1152,7 @@ GUI_CMN_HDR =
wx/peninfobase.h
wx/persist.h
wx/persist/bookctrl.h
wx/persist/combobox.h
wx/persist/dataview.h
wx/persist/splitter.h
wx/persist/toplevel.h

View file

@ -500,6 +500,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_common_secretstore.o \
$(OBJS)\monodll_lzmastream.o \
$(OBJS)\monodll_common_uilocale.o \
$(OBJS)\monodll_fs_data.o \
$(OBJS)\monodll_basemsw.o \
$(OBJS)\monodll_crashrpt.o \
$(OBJS)\monodll_debughlp.o \
@ -661,6 +662,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_common_secretstore.o \
$(OBJS)\monolib_lzmastream.o \
$(OBJS)\monolib_common_uilocale.o \
$(OBJS)\monolib_fs_data.o \
$(OBJS)\monolib_basemsw.o \
$(OBJS)\monolib_crashrpt.o \
$(OBJS)\monolib_debughlp.o \
@ -810,6 +812,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_common_secretstore.o \
$(OBJS)\basedll_lzmastream.o \
$(OBJS)\basedll_common_uilocale.o \
$(OBJS)\basedll_fs_data.o \
$(OBJS)\basedll_basemsw.o \
$(OBJS)\basedll_crashrpt.o \
$(OBJS)\basedll_debughlp.o \
@ -940,6 +943,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_common_secretstore.o \
$(OBJS)\baselib_lzmastream.o \
$(OBJS)\baselib_common_uilocale.o \
$(OBJS)\baselib_fs_data.o \
$(OBJS)\baselib_basemsw.o \
$(OBJS)\baselib_crashrpt.o \
$(OBJS)\baselib_debughlp.o \
@ -5959,7 +5963,7 @@ ifeq ($(USE_OPENGL),1)
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG).dll: $(GLDLL_OBJECTS) $(LIBDIRNAME)\libwxexpat$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxzlib$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxregexu$(WXDEBUGFLAG).a $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(__wxlexilla) $(OBJS)\gldll_version_rc.o $(__basedll___depname) $(__coredll___depname) $(__monodll___depname)
$(foreach f,$(subst \,/,$(GLDLL_OBJECTS)),$(shell echo $f >> $(subst \,/,$@).rsp.tmp))
@move /y $@.rsp.tmp $@.rsp >nul
$(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ @$@.rsp $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib=$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.a $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregexu$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) -lopengl32 -lglu32
$(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ @$@.rsp $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib=$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.a $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregexu$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) -lopengl32
@-del $@.rsp
endif
endif
@ -7243,6 +7247,9 @@ $(OBJS)\monodll_lzmastream.o: ../../src/common/lzmastream.cpp
$(OBJS)\monodll_common_uilocale.o: ../../src/common/uilocale.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_fs_data.o: ../../src/common/fs_data.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_basemsw.o: ../../src/msw/basemsw.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@ -9837,6 +9844,9 @@ $(OBJS)\monolib_lzmastream.o: ../../src/common/lzmastream.cpp
$(OBJS)\monolib_common_uilocale.o: ../../src/common/uilocale.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monolib_fs_data.o: ../../src/common/fs_data.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monolib_basemsw.o: ../../src/msw/basemsw.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@ -12431,6 +12441,9 @@ $(OBJS)\basedll_lzmastream.o: ../../src/common/lzmastream.cpp
$(OBJS)\basedll_common_uilocale.o: ../../src/common/uilocale.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\basedll_fs_data.o: ../../src/common/fs_data.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\basedll_basemsw.o: ../../src/msw/basemsw.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
@ -12773,6 +12786,9 @@ $(OBJS)\baselib_lzmastream.o: ../../src/common/lzmastream.cpp
$(OBJS)\baselib_common_uilocale.o: ../../src/common/uilocale.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\baselib_fs_data.o: ../../src/common/fs_data.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\baselib_basemsw.o: ../../src/msw/basemsw.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<

View file

@ -536,6 +536,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_common_secretstore.obj \
$(OBJS)\monodll_lzmastream.obj \
$(OBJS)\monodll_common_uilocale.obj \
$(OBJS)\monodll_fs_data.obj \
$(OBJS)\monodll_basemsw.obj \
$(OBJS)\monodll_crashrpt.obj \
$(OBJS)\monodll_debughlp.obj \
@ -706,6 +707,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_common_secretstore.obj \
$(OBJS)\monolib_lzmastream.obj \
$(OBJS)\monolib_common_uilocale.obj \
$(OBJS)\monolib_fs_data.obj \
$(OBJS)\monolib_basemsw.obj \
$(OBJS)\monolib_crashrpt.obj \
$(OBJS)\monolib_debughlp.obj \
@ -864,6 +866,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_common_secretstore.obj \
$(OBJS)\basedll_lzmastream.obj \
$(OBJS)\basedll_common_uilocale.obj \
$(OBJS)\basedll_fs_data.obj \
$(OBJS)\basedll_basemsw.obj \
$(OBJS)\basedll_crashrpt.obj \
$(OBJS)\basedll_debughlp.obj \
@ -1004,6 +1007,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_common_secretstore.obj \
$(OBJS)\baselib_lzmastream.obj \
$(OBJS)\baselib_common_uilocale.obj \
$(OBJS)\baselib_fs_data.obj \
$(OBJS)\baselib_basemsw.obj \
$(OBJS)\baselib_crashrpt.obj \
$(OBJS)\baselib_debughlp.obj \
@ -6436,7 +6440,7 @@ wxstc: $(____wxstc_namedll_DEP) $(____wxstc_namelib_DEP)
!if "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_OPENGL)" == "1"
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG).dll: $(OBJS)\gldll_dummy.obj $(GLDLL_OBJECTS) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregexu$(WXDEBUGFLAG).lib $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(__wxlexilla) $(OBJS)\gldll_version.res $(__basedll___depname) $(__coredll___depname) $(__monodll___depname)
link /DLL /NOLOGO /OUT:$@ $(__DEBUGINFO_6) /pdb:"$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl$(WXCOMPILER)$(VENDORTAG).pdb" $(__DEBUGINFO_619) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) @<<
$(GLDLL_OBJECTS) $(GLDLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregexu$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib ws2_32.lib wininet.lib $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) opengl32.lib glu32.lib /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.lib
$(GLDLL_OBJECTS) $(GLDLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregexu$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib ws2_32.lib wininet.lib $(__WXLIBGLDEP_CORE_p) $(__WXLIBGLDEP_BASE_p) $(__WXLIB_MONO_p) opengl32.lib /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)u$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.lib
<<
!endif
@ -7700,6 +7704,9 @@ $(OBJS)\monodll_lzmastream.obj: ..\..\src\common\lzmastream.cpp
$(OBJS)\monodll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
$(OBJS)\monodll_fs_data.obj: ..\..\src\common\fs_data.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\fs_data.cpp
$(OBJS)\monodll_basemsw.obj: ..\..\src\msw\basemsw.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
@ -10294,6 +10301,9 @@ $(OBJS)\monolib_lzmastream.obj: ..\..\src\common\lzmastream.cpp
$(OBJS)\monolib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
$(OBJS)\monolib_fs_data.obj: ..\..\src\common\fs_data.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\fs_data.cpp
$(OBJS)\monolib_basemsw.obj: ..\..\src\msw\basemsw.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp
@ -12888,6 +12898,9 @@ $(OBJS)\basedll_lzmastream.obj: ..\..\src\common\lzmastream.cpp
$(OBJS)\basedll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
$(OBJS)\basedll_fs_data.obj: ..\..\src\common\fs_data.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\fs_data.cpp
$(OBJS)\basedll_basemsw.obj: ..\..\src\msw\basemsw.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
@ -13230,6 +13243,9 @@ $(OBJS)\baselib_lzmastream.obj: ..\..\src\common\lzmastream.cpp
$(OBJS)\baselib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
$(OBJS)\baselib_fs_data.obj: ..\..\src\common\fs_data.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\fs_data.cpp
$(OBJS)\baselib_basemsw.obj: ..\..\src\msw\basemsw.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp

View file

@ -622,6 +622,7 @@
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\common\fs_data.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\src\msw\version.rc">
@ -841,6 +842,7 @@
<ClInclude Include="..\..\include\wx\lzmastream.h" />
<ClInclude Include="..\..\include\wx\localedefs.h" />
<ClInclude Include="..\..\include\wx\uilocale.h" />
<ClInclude Include="..\..\include\wx\fs_data.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View file

@ -123,6 +123,9 @@
<ClCompile Include="..\..\src\common\fs_arc.cpp">
<Filter>Common Sources</Filter>
</ClCompile>
<ClCompile Include="..\..\src\common\fs_data.cpp">
<Filter>Common Sources</Filter>
</ClCompile>
<ClCompile Include="..\..\src\common\fs_filter.cpp">
<Filter>Common Sources</Filter>
</ClCompile>
@ -535,6 +538,9 @@
<ClInclude Include="..\..\include\wx\fs_arc.h">
<Filter>Common Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\wx\fs_data.h">
<Filter>Common Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\wx\fs_filter.h">
<Filter>Common Headers</Filter>
</ClInclude>

View file

@ -1518,6 +1518,7 @@
<ClInclude Include="..\..\include\wx\filedlgcustomize.h" />
<ClInclude Include="..\..\include\wx\compositebookctrl.h" />
<ClInclude Include="..\..\include\wx\msw\darkmode.h" />
<ClInclude Include="..\..\include\wx\persist\combobox.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View file

@ -2056,6 +2056,9 @@
<ClInclude Include="..\..\include\wx\persist\bookctrl.h">
<Filter>Common Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\wx\persist\combobox.h">
<Filter>Common Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\wx\persist\dataview.h">
<Filter>Common Headers</Filter>
</ClInclude>

View file

@ -306,7 +306,7 @@
</ResourceCompile>
<Link>
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary>$(OutDir)$(wxToolkitLibNamePrefix)$(ProjectName).lib</ImportLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@ -347,7 +347,7 @@
</ResourceCompile>
<Link>
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary>$(OutDir)$(wxToolkitLibNamePrefix)$(ProjectName).lib</ImportLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@ -388,7 +388,7 @@
</ResourceCompile>
<Link>
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary>$(OutDir)$(wxToolkitLibNamePrefix)$(ProjectName).lib</ImportLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@ -432,7 +432,7 @@
</ResourceCompile>
<Link>
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>wxtiff$(wxSuffixDebug).lib;wxjpeg$(wxSuffixDebug).lib;wxpng$(wxSuffixDebug).lib;wxzlib$(wxSuffixDebug).lib;wxregexu$(wxSuffixDebug).lib;wxexpat$(wxSuffixDebug).lib;$(wxToolkitLibNamePrefix)core.lib;$(wxBaseLibNamePrefix).lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary>$(OutDir)$(wxToolkitLibNamePrefix)$(ProjectName).lib</ImportLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@ -494,4 +494,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View file

@ -11,6 +11,7 @@
<wxCompilerPrefix>vc</wxCompilerPrefix>
<wxCfg>
</wxCfg>
<wxSuffix>u</wxSuffix>
<wxVendor>custom</wxVendor>
<wxRuntimeLibs>dynamic</wxRuntimeLibs>
<wxReleaseRuntimeLibrary>MultiThreadedDLL</wxReleaseRuntimeLibrary>

View file

@ -95,7 +95,7 @@ case $(uname -s) in
extra_deps="$extra_deps \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libglu1-mesa-dev"
"
esac
# Install locales used by our tests to run all the tests instead of
@ -128,7 +128,7 @@ case $(uname -s) in
fi
if [ -f /etc/redhat-release ]; then
dnf install -y ${WX_EXTRA_PACKAGES} expat-devel findutils g++ git-core gspell-devel gstreamer1-plugins-base-devel gtk3-devel make libcurl-devel libGLU-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel
dnf install -y ${WX_EXTRA_PACKAGES} expat-devel findutils g++ git-core gspell-devel gstreamer1-plugins-base-devel gtk3-devel make libcurl-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk4.1-devel zlib-devel
fi
;;

393
configure vendored
View file

@ -962,8 +962,6 @@ WAYLAND_EGL_LIBS
WAYLAND_EGL_CFLAGS
EGL_LIBS
EGL_CFLAGS
GLU_LIBS
GLU_CFLAGS
GL_LIBS
GL_CFLAGS
SM_LIBS
@ -1421,8 +1419,6 @@ SM_CFLAGS
SM_LIBS
GL_CFLAGS
GL_LIBS
GLU_CFLAGS
GLU_LIBS
EGL_CFLAGS
EGL_LIBS
WAYLAND_EGL_CFLAGS
@ -2458,8 +2454,6 @@ Some influential environment variables:
SM_LIBS linker flags for SM, overriding pkg-config
GL_CFLAGS C compiler flags for GL, overriding pkg-config
GL_LIBS linker flags for GL, overriding pkg-config
GLU_CFLAGS C compiler flags for GLU, overriding pkg-config
GLU_LIBS linker flags for GLU, overriding pkg-config
EGL_CFLAGS C compiler flags for EGL, overriding pkg-config
EGL_LIBS linker flags for EGL, overriding pkg-config
WAYLAND_EGL_CFLAGS
@ -22922,10 +22916,8 @@ $as_echo "$as_me: WARNING: --enable-macosx_arch is ignored when --enable-univers
if test "x$wxUSE_UNIVERSAL_BINARY" != xyes; then
OSX_ARCH_OPTS=$wxUSE_UNIVERSAL_BINARY
else OSX_ARCH_OPTS="i386"
if test "$wxUSE_OSX_COCOA" = 1; then
OSX_ARCH_OPTS="$OSX_ARCH_OPTS,x86_64"
fi
else
OSX_ARCH_OPTS=arm64,x86_64
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for architectures to use in universal binary" >&5
@ -30212,7 +30204,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
if test "$wxUSE_OSX_COCOA" = 1; then
OPENGL_LIBS="-framework OpenGL -framework AGL"
elif test "$wxUSE_MSW" = 1; then
OPENGL_LIBS="-lopengl32 -lglu32"
OPENGL_LIBS="-lopengl32"
elif test "$wxUSE_X11" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL headers" >&5
@ -30253,10 +30245,6 @@ $as_echo "not found" >&6; }
"
if test "x$ac_cv_header_GL_gl_h" = xyes; then :
ac_fn_c_check_header_compile "$LINENO" "GL/glu.h" "ac_cv_header_GL_glu_h" "
"
if test "x$ac_cv_header_GL_glu_h" = xyes; then :
found_gl=0
@ -30619,369 +30607,8 @@ fi
fi
fi
ac_find_libraries=
fl_pkgname=`echo "GLU" | tr [:upper:] [:lower:]`
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
$as_echo "$PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
$as_echo "$ac_pt_PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
PKG_CONFIG=""
fi
fi 6> /dev/null
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLU" >&5
$as_echo_n "checking for GLU... " >&6; }
if test -n "$PKG_CONFIG"; then
if test -n "$GLU_CFLAGS"; then
pkg_cv_GLU_CFLAGS="$GLU_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$fl_pkgname\""; } >&5
($PKG_CONFIG --exists --print-errors "$fl_pkgname") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_GLU_CFLAGS=`$PKG_CONFIG --cflags "$fl_pkgname" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test -n "$PKG_CONFIG"; then
if test -n "$GLU_LIBS"; then
pkg_cv_GLU_LIBS="$GLU_LIBS"
else
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$fl_pkgname\""; } >&5
($PKG_CONFIG --exists --print-errors "$fl_pkgname") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_GLU_LIBS=`$PKG_CONFIG --libs "$fl_pkgname" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
GLU_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$fl_pkgname"`
else
GLU_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$fl_pkgname"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GLU_PKG_ERRORS" >&5
if test "x$ac_find_libraries" = "x"; then
if test "xgluBeginCurve" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluBeginCurve in -lGLU" >&5
$as_echo_n "checking for gluBeginCurve in -lGLU... " >&6; }
if ${ac_cv_lib_GLU_gluBeginCurve+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lGLU $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char gluBeginCurve ();
int
main ()
{
return gluBeginCurve ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_GLU_gluBeginCurve=yes
else
ac_cv_lib_GLU_gluBeginCurve=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluBeginCurve" >&5
$as_echo "$ac_cv_lib_GLU_gluBeginCurve" >&6; }
if test "x$ac_cv_lib_GLU_gluBeginCurve" = xyes; then :
ac_find_libraries="std"
fi
fi
fi
if test "x$ac_find_libraries" = "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking elsewhere" >&5
$as_echo_n "checking elsewhere... " >&6; }
ac_find_libraries=
for ac_dir in /opt/graphics/OpenGL/lib $SEARCH_LIB
do
for ac_extension in a so sl dylib dll.a; do
if test -f "$ac_dir/libGLU.$ac_extension"; then
ac_find_libraries=$ac_dir
break 2
fi
done
done
if test "x$ac_find_libraries" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
elif test $pkg_failed = untried; then
if test "x$ac_find_libraries" = "x"; then
if test "xgluBeginCurve" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluBeginCurve in -lGLU" >&5
$as_echo_n "checking for gluBeginCurve in -lGLU... " >&6; }
if ${ac_cv_lib_GLU_gluBeginCurve+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lGLU $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char gluBeginCurve ();
int
main ()
{
return gluBeginCurve ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_GLU_gluBeginCurve=yes
else
ac_cv_lib_GLU_gluBeginCurve=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluBeginCurve" >&5
$as_echo "$ac_cv_lib_GLU_gluBeginCurve" >&6; }
if test "x$ac_cv_lib_GLU_gluBeginCurve" = xyes; then :
ac_find_libraries="std"
fi
fi
fi
if test "x$ac_find_libraries" = "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking elsewhere" >&5
$as_echo_n "checking elsewhere... " >&6; }
ac_find_libraries=
for ac_dir in /opt/graphics/OpenGL/lib $SEARCH_LIB
do
for ac_extension in a so sl dylib dll.a; do
if test -f "$ac_dir/libGLU.$ac_extension"; then
ac_find_libraries=$ac_dir
break 2
fi
done
done
if test "x$ac_find_libraries" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
else
GLU_CFLAGS=$pkg_cv_GLU_CFLAGS
GLU_LIBS=$pkg_cv_GLU_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ac_find_libraries="std"
eval ac_find_cflags=\$GLU_CFLAGS
eval fl_libs=\$GLU_LIBS
for fl_path in $fl_libs
do
if test `echo "$fl_path" | cut -c 1-2` = "-L"; then
ac_find_libraries=`echo "$fl_path" | cut -c 3-`
fi
done
fi
if test "$ac_find_libraries" != "" ; then
if test "$ac_find_libraries" != "std" ; then
if test "$ac_find_libraries" = "default location"; then
ac_path_to_link=""
else
echo "$LDFLAGS" | grep "\-L$ac_find_libraries" > /dev/null
result=$?
if test $result = 0; then
ac_path_to_link=""
else
ac_path_to_link=" -L$ac_find_libraries"
fi
fi
if test "$ac_path_to_link" != " -L/usr/lib" -a \
"$ac_path_to_link" != "$LDFLAGS_GL" ; then
LDFLAGS_GL="$LDFLAGS_GL $ac_path_to_link"
fi
fi
found_gl=1
OPENGL_LIBS="-lGL -lGLU"
OPENGL_LIBS="-lGL"
if test "$WXGTK3" = 1; then
if test "$wxUSE_GLCANVAS_EGL" != "no"; then
@ -31148,7 +30775,6 @@ $as_echo "$as_me: wxGLCanvas will not have Wayland support" >&6;}
fi
fi
fi
fi
fi
if test "$found_gl" != 1; then
@ -31511,7 +31137,7 @@ fi
LDFLAGS_GL="$LDFLAGS_GL $ac_path_to_link"
fi
fi
OPENGL_LIBS="-lMesaGL -lMesaGLU"
OPENGL_LIBS="-lMesaGL"
fi
fi
@ -31519,10 +31145,6 @@ fi
fi
if test "x$OPENGL_LIBS" = "x"; then
if test "$wxUSE_OPENGL" = "yes"; then
as_fn_error $? "OpenGL libraries not available" "$LINENO" 5
@ -43580,10 +43202,7 @@ for subdir in $SUBDIRS; do
makefiles="samples/$subtree/Makefile.in $makefiles"
done
else
disabled_var=DISABLED_`echo $subdir | tr '[a-z]' '[A-Z]'`
eval "disabled=\$$disabled_var"
disabled=/`echo X $disabled | sed 's@ @/|/@g'`/
makefiles=`(cd $srcdir ; find $subdir -name Makefile.in) | $EGREP -v "$disabled"`
makefiles=`(cd $srcdir ; find $subdir -name Makefile.in)`
fi
else
if test ${subdir} = "samples"; then

View file

@ -1188,10 +1188,14 @@ if test "x$wxUSE_UNIVERSAL_BINARY" != xno ; then
if test "x$wxUSE_UNIVERSAL_BINARY" != xyes; then
OSX_ARCH_OPTS=$wxUSE_UNIVERSAL_BINARY
else dnl Use all architectures supported
OSX_ARCH_OPTS="i386"
if test "$wxUSE_OSX_COCOA" = 1; then
OSX_ARCH_OPTS="$OSX_ARCH_OPTS,x86_64"
else
dnl Use default architectures for the universal binaries: x86_64 is
dnl currently supported everywhere...
OSX_ARCH_OPTS=x86_64
dnl ... and non-ancient macOS versions also support ARM.
if [ `sw_vers -productVersion | sed 's/\..*//'` -gt 10 ]; then
OSX_ARCH_OPTS=arm64,$OSX_ARCH_OPTS
fi
fi
@ -3313,7 +3317,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
if test "$wxUSE_OSX_COCOA" = 1; then
OPENGL_LIBS="-framework OpenGL -framework AGL"
elif test "$wxUSE_MSW" = 1; then
OPENGL_LIBS="-lopengl32 -lglu32"
OPENGL_LIBS="-lopengl32"
elif test "$wxUSE_X11" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1; then
dnl adjust CPPFLAGS to include GL/gl.h location if necessary
@ -3329,7 +3333,6 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
fi
AC_CHECK_HEADER(GL/gl.h, [
AC_CHECK_HEADER(GL/glu.h, [
found_gl=0
WX_FIND_LIB(GL, glBegin, [/opt/graphics/OpenGL/lib])
@ -3341,21 +3344,8 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
fi
fi
dnl don't suppose that libGL and libGLU are always in the
dnl same directory -- this is not true for some common
dnl distributions
WX_FIND_LIB(GLU, gluBeginCurve, [/opt/graphics/OpenGL/lib])
if test "$ac_find_libraries" != "" ; then
if test "$ac_find_libraries" != "std" ; then
WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
if test "$ac_path_to_link" != " -L/usr/lib" -a \
"$ac_path_to_link" != "$LDFLAGS_GL" ; then
LDFLAGS_GL="$LDFLAGS_GL $ac_path_to_link"
fi
fi
found_gl=1
OPENGL_LIBS="-lGL -lGLU"
OPENGL_LIBS="-lGL"
if test "$WXGTK3" = 1; then
if test "$wxUSE_GLCANVAS_EGL" != "no"; then
@ -3382,7 +3372,6 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
fi
fi
fi
fi
fi
if test "$found_gl" != 1; then
@ -3394,10 +3383,9 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
LDFLAGS_GL="$LDFLAGS_GL $ac_path_to_link"
fi
fi
OPENGL_LIBS="-lMesaGL -lMesaGLU"
OPENGL_LIBS="-lMesaGL"
fi
fi
],, [ ])
],
[],
[ ])
@ -8186,12 +8174,7 @@ for subdir in $SUBDIRS; do
done
else
dnl assume that everything compiles for utils &c
dnl any that shouldn't be built can be added to
dnl DISABLED_UTILS, DISABLED_DEMOS
disabled_var=DISABLED_`echo $subdir | tr '[[a-z]]' '[[A-Z]]'`
eval "disabled=\$$disabled_var"
disabled=/`echo X $disabled | sed 's@ @/|/@g'`/
makefiles=`(cd $srcdir ; find $subdir -name Makefile.in) | $EGREP -v "$disabled"`
makefiles=`(cd $srcdir ; find $subdir -name Makefile.in)`
fi
else
dnl we build wxBase only

View file

@ -31,6 +31,12 @@ Changes in behaviour not resulting in compilation errors
wxGLAttributes::Samplers(1).SampleBuffers(4) explicitly if you need to keep
using the same attributes that were previously used by default.
- Default location of file used by wxFileConfig under Unix has changed to
XDG-compliant ~/.config/appname.conf instead of ~/.appname but note that
any existing files at the old location will still continue to be used.
See wxCONFIG_USE_XDG and wxCONFIG_USE_HOME for how to customize this
behaviour. You may also find wxFileConfig::MigrateLocalFile() useful.
- As first mentioned in 3.0 release notes, the value of wxTHREAD_WAIT_DEFAULT,
used by wxThread::Delete() and Wait() by default, has changed from
wxTHREAD_WAIT_YIELD to wxTHREAD_WAIT_BLOCK for safety and consistency.
@ -113,6 +119,12 @@ Changes in behaviour which may result in build errors
compatible with the previous wxWidgets versions, but now compare values, and
not pointers, in their Index() member function.
- All operators (e.g. "==", "+", etc) on wx types are not defined in global
scope any more, resulting in much better error messages but also preventing
them from implicitly being used with types convertible to wx types. If you
really need to use these operators with your own types, please use explicit
conversions.
- Due to the possibility to construct wxString from std::string_view some
previously valid code, such as "wxstr = {"Hello", 2}", is now ambiguous.
Please use explicit class name, e.g. "wxstr = wxString{"Hello", 2}" to

View file

@ -168,6 +168,10 @@ Currently the following symbols exist:
implemented in a generic way, using a critical section.}
@itemdef{wxHAS_BITMAPTOGGLEBUTTON, Defined in @c wx/tglbtn.h if
wxBitmapToggleButton class is available in addition to wxToggleButton.}
@itemdef{wxHAS_CONFIG_AS_FILECONFIG, Defined if wxConfig is defined as
wxFileConfig. This constant is available since wxWidgets 3.3.0.}
@itemdef{wxHAS_CONFIG_AS_REGCONFIG, Defined if wxConfig is defined as
wxRegConfig. This constant is available since wxWidgets 3.3.0.}
@itemdef{wxHAS_CONFIG_TEMPLATE_RW, Defined if the currently used compiler
supports template Read() and Write() methods in wxConfig.}
@itemdef{wxHAS_DEPRECATED_ATTR, Defined if C++14 @c [[deprecated]] attribute is

View file

@ -11,7 +11,7 @@
@section section_copyright wxWidgets Copyrights and Licenses
Copyright (c) 1992-2023 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert
Copyright (c) 1992-2024 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert
Roebling, and other members of the wxWidgets team, please see the
acknowledgements section below.

View file

@ -73,6 +73,10 @@ The following virtual file system handlers are part of wxWidgets so far:
A handler for archives such as zip
and tar. Include file is wx/fs_arc.h. URLs examples:
"archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename".
@li @b wxDataSchemeFSHandler:
A handler for accessing data inlined in URI according to RFC 2397.
URI example: "data:text/plain;base64,d3hXaWRnZXRzIGV4YW1wbGU=".
Include file is wx/fs_data.h.
@li @b wxFilterFSHandler:
A handler for compression schemes such
as gzip. Header is wx/fs_filter.h. URLs are in the form, e.g.:

View file

@ -215,7 +215,7 @@ if [[ "$1" = "docset" ]]; then
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFeedURL $ATOMDIR/$ATOM
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetFallbackURL https://docs.wxwidgets.org
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetDescription "API reference and conceptual documentation for wxWidgets 3.0"
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2023 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute"
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info NSHumanReadableCopyright "Copyright 1992-2024 wxWidgets team, Portions 1996 Artificial Intelligence Applications Institute"
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info isJavaScriptEnabled true
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info dashIndexFilePath index.html
$PLIST_WRITE_CMD $DESTINATIONDIR/$DOCSETNAME/Contents/Info DocSetPlatformFamily wx

View file

@ -18,13 +18,38 @@ the following in wxWidgets directory:
$ cd buildgtk
$ ../configure --with-gtk
$ make
It is recommended to use `-jN` option with the last command, where `N` is a
number of the processors in your system (which can be checked using `nproc`
command if you are not sure), as this will dramatically speed up the build
on modern systems. So in practice you should use a command like this:
$ make -j8
(but don't use it unless you actually have 8 CPUs and enough memory for that
many parallel compiler invocations).
You may also prefer to add `-s` option to avoid normal output from make and/or
redirect it you to a log file for further inspection.
You should build at least the smallest possible wxWidgets sample to verify that
everything is working as intended, by doing
$ cd samples/minimal
$ make
and try running it using `./minimal` command from the same directory.
After confirming that it works, you may want to install wxWidgets by running
$ sudo make install
$ sudo ldconfig
(if you get "ldconfig: command not found", try using `/sbin/ldconfig`)
If you don't do the `make install` part, you can still use the libraries from
the `buildgtk` directory, but they may not be available to other users.
but note that this part is optional and you can use the libraries from
the `buildgtk` directory by running `.../buildgtk/wx-config` script using its
full path instead of just using `wx-config`.
Note that by default, GTK 3 is used. GTK 2 can be specified
with `--with-gtk=2` configure option.
@ -47,8 +72,8 @@ Debian and Debian-based distribution these libraries are part of `libgtk-3-dev`
package, while in Fedora and other RPM-based distributions the same package is
known as `gtk3-devel`.
For OpenGL support, you need `libgl1-mesa-dev` and `libglu1-mesa-dev` packages
under Debian and `mesa-libGL-devel` and `mesa-libGLU-devel` under Fedora. For
For OpenGL support, you need `libgl1-mesa-dev` packages
under Debian and `mesa-libGL-devel` and under Fedora. For
EGL support, `libegl1-mesa-dev` or `mesa-libEGL-devel` is needed.
wxMediaCtrl implementation requires GStreamer and its plugins development

View file

@ -9,11 +9,11 @@ Most OS X developers should start by downloading and installing Xcode
from the App Store. It is a free IDE from Apple that provides
all of the tools you need for working with wxWidgets.
After Xcode is installed, download wxWidgets-{version}.tar.bz2 and then
After Xcode is installed, download `wxWidgets-{version}.tar.bz2` and then
double-click on it to unpack it to create a wxWidgets directory.
Next use Terminal (under Applications, Utilities, Terminal) to access a command
prompt. Use cd to change directories to your wxWidgets directory and execute
prompt. Use `cd` to change directories to your wxWidgets directory and execute
the following sets of commands from the wxWidgets directory.
mkdir build-cocoa-debug
@ -21,27 +21,54 @@ the following sets of commands from the wxWidgets directory.
../configure --enable-debug
make
Build the samples and demos
It is recommended to use `-jN` option with the last command, where `N` is a
number of the processors in your system (which can be checked using `sysctl -n
hw.ncpu` command if you are not sure), as this will dramatically speed up the
build on modern systems. So in practice you should use a command like this:
make -j8
(but don't use it unless you actually have 8 CPUs and enough memory for that
many parallel compiler invocations).
You may also prefer to add `-s` option to avoid normal output from make and/or
redirect it you to a log file for further inspection.
You should build at least the smallest possible wxWidgets sample to verify that
everything is working as intended, by doing
cd samples/minimal
make
and then running `minimal.app` from this directory from Finder.
If you'd like to, you can also build all the other samples and demos
cd samples; make;cd ..
cd demos; make;cd ..
After the compilation completes, use Finder to run the samples and demos
* Go to build-cocoa-debug/samples to experiment with the Cocoa samples.
* Go to build-cocoa-debug/demos to experiment with the Cocoa demos.
* Double-click on the executables which have an icon showing three small squares.
* The source code for the samples is in wxWidgets/samples
* The source code for the demos is in wxWidgets/demos
More information about building on macOS is available in the wxWiki.
Here are two useful links
* https://wiki.wxwidgets.org/Guides_%26_Tutorials
* https://wiki.wxwidgets.org/Development:_wxMac
Advanced topics {#osx_advanced}
===============
Building library for distribution
---------------------------------
When building library for the distribution with your application, you shouldn't
use `--enable-debug` option above but you may want to use `--disable-sys-libs`
option to ensure that it has no dependencies on the other libraries available
on the current system as they might not be present on all systems where the
application is used.
It is also often desirable to build the final version of the application as
"universal binary", i.e. a combination of binaries for several different
architectures. In this case, you should build wxWidgets as universal binary
too, using `--enable-universal_binary` option. By default, this option enables
building for the usually wanted set of architectures (currently ARM and Intel)
but you may override this by listing the architectures you want to use
explicitly, separating them with commas.
Installing library {#osx_install}
------------------

View file

@ -1334,7 +1334,7 @@
// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
// set to 1 and, under Windows, also to add opengl32.lib and glu32.lib to the
// set to 1 and, under Windows, also to add opengl32.lib to the
// list of libraries used to link your application when linking to wxWidgets
// statically (although this is done implicitly for Microsoft Visual C++ users).
//

View file

@ -693,7 +693,6 @@ protected:
bool m_gripperVisible;
bool m_overflowVisible;
bool RealizeHelper(wxClientDC& dc, bool horizontal);
static bool IsPaneValid(long style, const wxAuiPaneInfo& pane);
bool IsPaneValid(long style) const;
void SetArtFlags() const;
@ -705,6 +704,8 @@ private:
// Common part of OnLeaveWindow() and OnCaptureLost().
void DoResetMouseState();
wxSize RealizeHelper(wxClientDC& dc, wxOrientation orientation);
wxDECLARE_EVENT_TABLE();
wxDECLARE_CLASS(wxAuiToolBar);
};

View file

@ -189,6 +189,9 @@ protected:
wxRect m_rect;
size_t m_tabOffset;
unsigned int m_flags;
private:
int GetCloseButtonState(const wxAuiNotebookPage& page) const;
};
@ -210,6 +213,9 @@ public:
void SetRect(const wxRect& rect) { wxAuiTabContainer::SetRect(rect, this); }
// Internal helper.
void DoShowTab(int idx);
protected:
// choose the default border for this window
virtual wxBorder GetDefaultBorder() const override { return wxBORDER_NONE; }

View file

@ -51,7 +51,8 @@ enum wxAuiManagerOption
wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
wxAUI_MGR_TRANSPARENT_HINT |
wxAUI_MGR_HINT_FADE |
wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
wxAUI_MGR_NO_VENETIAN_BLINDS_FADE |
wxAUI_MGR_LIVE_RESIZE
};
@ -416,7 +417,7 @@ public:
void SetFlags(unsigned int flags);
unsigned int GetFlags() const;
static bool AlwaysUsesLiveResize();
static bool AlwaysUsesLiveResize(const wxWindow* window = nullptr);
bool HasLiveResize() const;
void SetManagedWindow(wxWindow* managedWnd);
@ -485,8 +486,6 @@ public:
virtual void ShowHint(const wxRect& rect);
virtual void HideHint();
void OnHintActivate(wxActivateEvent& event);
public:
// deprecated -- please use SetManagedWindow()

View file

@ -18,6 +18,7 @@
#include "wx/gdicmn.h" // for wxBitmapType
#include "wx/colour.h"
#include "wx/image.h"
#include "wx/variant.h"
class WXDLLIMPEXP_FWD_CORE wxBitmap;
class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
@ -28,15 +29,6 @@ class WXDLLIMPEXP_FWD_CORE wxMask;
class WXDLLIMPEXP_FWD_CORE wxPalette;
class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
// ----------------------------------------------------------------------------
// wxVariant support
// ----------------------------------------------------------------------------
#if wxUSE_VARIANT
#include "wx/variant.h"
DECLARE_VARIANT_OBJECT_EXPORTED(wxBitmap,WXDLLIMPEXP_CORE)
#endif
// ----------------------------------------------------------------------------
// wxMask represents the transparent area of the bitmap
// ----------------------------------------------------------------------------
@ -100,6 +92,9 @@ public:
// Rescale the given bitmap to the requested size.
static void Rescale(wxBitmap& bmp, const wxSize& sizeNeeded);
// wxVariant support
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxBitmap, WXDLLIMPEXP_CORE);
};
@ -178,6 +173,11 @@ public:
virtual bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) = 0;
virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) = 0;
// DIP size and logical size are the same thing for ports using scaling,
// i.e. where physical and logical sizes are different (e.g. wxGTK and
// wxOSX), but we want to have both sets of functions to use them in the
// ports where physical and logical sizes are the same (wxMSW).
bool CreateWithDIPSize(const wxSize& sz,
double scale,
int depth = wxBITMAP_SCREEN_DEPTH)
@ -187,6 +187,15 @@ public:
int depth = wxBITMAP_SCREEN_DEPTH)
{ return DoCreate(wxSize(width, height), scale, depth); }
bool CreateWithLogicalSize(const wxSize& sz,
double scale,
int depth = wxBITMAP_SCREEN_DEPTH)
{ return DoCreate(sz, scale, depth); }
bool CreateWithLogicalSize(int width, int height,
double scale,
int depth = wxBITMAP_SCREEN_DEPTH)
{ return DoCreate(wxSize(width, height), scale, depth); }
virtual int GetHeight() const = 0;
virtual int GetWidth() const = 0;
virtual int GetDepth() const = 0;

View file

@ -17,6 +17,7 @@
class wxBitmapBundleImpl;
class WXDLLIMPEXP_FWD_CORE wxIconBundle;
class WXDLLIMPEXP_FWD_CORE wxImageList;
class WXDLLIMPEXP_FWD_BASE wxVariant;
class WXDLLIMPEXP_FWD_CORE wxWindow;
// ----------------------------------------------------------------------------
@ -155,6 +156,15 @@ public:
return GetImpl() == other.GetImpl();
}
// Allow using wxBitmapBundle with wxVariant
#if wxUSE_VARIANT
friend WXDLLIMPEXP_CORE
wxBitmapBundle& operator<<(wxBitmapBundle& value, const wxVariant& variant);
friend WXDLLIMPEXP_CORE
wxVariant& operator<<(wxVariant& variant, const wxBitmapBundle& value);
#endif // wxUSE_VARIANT
// Implementation only from now on.
// Get the bitmap size preferred by the majority of the elements of the
@ -274,19 +284,4 @@ public:
virtual wxBitmap GetBitmap(const wxSize& size) = 0;
};
// ----------------------------------------------------------------------------
// Allow using wxBitmapBundle in wxVariant
// ----------------------------------------------------------------------------
#if wxUSE_VARIANT
class WXDLLIMPEXP_FWD_BASE wxVariant;
WXDLLIMPEXP_CORE
wxBitmapBundle& operator<<(wxBitmapBundle& value, const wxVariant& variant);
WXDLLIMPEXP_CORE
wxVariant& operator<<(wxVariant& variant, const wxBitmapBundle& value);
#endif // wxUSE_VARIANT
#endif // _WX_BMPBNDL_H_

View file

@ -102,6 +102,8 @@ extern WXDLLIMPEXP_DATA_CORE(wxBrushList*) wxTheBrushList;
// to compile without warnings which it would otherwise provoke from some
// compilers as it compares elements of different enums
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxBRUSHSTYLE_XXX constants only")
inline bool operator==(wxBrushStyle s, wxDeprecatedGUIConstants t)
{
@ -114,4 +116,6 @@ inline bool operator!=(wxBrushStyle s, wxDeprecatedGUIConstants t)
return static_cast<int>(s) != static_cast<int>(t);
}
#endif // WXWIN_COMPATIBILITY_3_2
#endif // _WX_BRUSH_H_BASE_

View file

@ -13,6 +13,10 @@
#include "wx/defs.h"
#include "wx/wxcrtbase.h"
#if wxUSE_STD_IOSTREAM
#include "wx/iosfwrap.h"
#endif
#include <stdlib.h> // malloc() and free()
class WXDLLIMPEXP_FWD_BASE wxCStrData;
@ -55,14 +59,70 @@ struct UntypedBufferData
// NB: this is defined in string.cpp and not the (non-existent) buffer.cpp
WXDLLIMPEXP_BASE UntypedBufferData * GetUntypedNullData();
// Implementation of stream insertion operators: they can't be inline because
// we don't have full std::ostream declaration here.
#if wxUSE_STD_IOSTREAM
WXDLLIMPEXP_BASE std::ostream& OutputCharBuffer(std::ostream&, const char* s);
WXDLLIMPEXP_BASE std::ostream& OutputWCharBuffer(std::ostream&, const wchar_t* ws);
#if defined(HAVE_WOSTREAM)
WXDLLIMPEXP_BASE std::wostream& OutputWCharBuffer(std::wostream&, const wchar_t* ws);
#endif // defined(HAVE_WOSTREAM)
#endif // wxUSE_STD_IOSTREAM
} // namespace wxPrivate
// Template used as CRTP base class for wxScopedCharTypeBuffer in order to
// define overloaded operator<<() for it.
//
// By default we don't define any operators, but we do define them for the
// usual char and wchar_t specializations below.
template <typename T, typename Buffer>
struct wxScopedCharTypeBufferStreamSupport
{
};
// Suppress the warning about declaring a non-template friend because this is
// exactly what we want to do here.
wxGCC_ONLY_WARNING_SUPPRESS(non-template-friend)
template <typename Buffer>
struct wxScopedCharTypeBufferStreamSupport<char, Buffer>
{
#if wxUSE_STD_IOSTREAM
friend std::ostream& operator<<(std::ostream& oss, const Buffer& buf)
{
return wxPrivate::OutputCharBuffer(oss, buf.data());
}
#endif // wxUSE_STD_IOSTREAM
};
template <typename Buffer>
struct wxScopedCharTypeBufferStreamSupport<wchar_t, Buffer>
{
#if wxUSE_STD_IOSTREAM
friend std::ostream& operator<<(std::ostream& oss, const Buffer& buf)
{
return wxPrivate::OutputWCharBuffer(oss, buf.data());
}
#if defined(HAVE_WOSTREAM)
friend std::wostream& operator<<(std::wostream& woss, const Buffer& buf)
{
return wxPrivate::OutputWCharBuffer(woss, buf.data());
}
#endif // defined(HAVE_WOSTREAM)
#endif // wxUSE_STD_IOSTREAM
};
wxGCC_ONLY_WARNING_RESTORE(non-template-friend)
// Reference-counted character buffer for storing string data. The buffer
// is only valid for as long as the "parent" object that provided the data
// is valid; see wxCharTypeBuffer<T> for persistent variant.
template <typename T>
class wxScopedCharTypeBuffer
: wxScopedCharTypeBufferStreamSupport<T, wxScopedCharTypeBuffer<T>>
{
public:
typedef T CharType;
@ -368,6 +428,13 @@ public:
wxCharBuffer(size_t len) : wxCharTypeBufferBase(len) {}
wxCharBuffer(const wxCStrData& cstr);
#if wxUSE_STD_IOSTREAM
// Define this to disambiguate between converting to the base class or to
// wxString when using operator<<() with the objects of this class.
friend WXDLLIMPEXP_BASE
std::ostream& operator<<(std::ostream& oss, const wxCharBuffer& buf);
#endif // wxUSE_STD_IOSTREAM
};
class wxWCharBuffer : public wxCharTypeBuffer<wchar_t>
@ -385,6 +452,16 @@ public:
wxWCharBuffer(size_t len) : wxCharTypeBufferBase(len) {}
wxWCharBuffer(const wxCStrData& cstr);
#if wxUSE_STD_IOSTREAM
// See wxCharBuffer for why this is needed.
friend WXDLLIMPEXP_BASE
std::ostream& operator<<(std::ostream& oss, const wxWCharBuffer& buf);
#if defined(HAVE_WOSTREAM)
friend WXDLLIMPEXP_BASE
std::wostream& operator<<(std::wostream& woss, const wxWCharBuffer& buf);
#endif // defined(HAVE_WOSTREAM)
#endif // wxUSE_STD_IOSTREAM
};
// wxCharTypeBuffer<T> implicitly convertible to T*, for char and wchar_t,

View file

@ -13,6 +13,7 @@
#include "wx/defs.h"
#include "wx/gdiobj.h"
#include "wx/variant.h"
class WXDLLIMPEXP_FWD_CORE wxColour;
@ -53,15 +54,6 @@ const unsigned char wxALPHA_OPAQUE = 0xff;
#define wxTransparentColour wxColour(0, 0, 0, wxALPHA_TRANSPARENT)
#define wxTransparentColor wxTransparentColour
// ----------------------------------------------------------------------------
// wxVariant support
// ----------------------------------------------------------------------------
#if wxUSE_VARIANT
#include "wx/variant.h"
DECLARE_VARIANT_OBJECT_EXPORTED(wxColour,WXDLLIMPEXP_CORE)
#endif
//-----------------------------------------------------------------------------
// wxColourBase: this class has no data members, just some functions to avoid
// code redundancy in all native wxColour implementations
@ -188,6 +180,8 @@ public:
wxColour ChangeLightness(int ialpha) const;
wxColour& MakeDisabled(unsigned char brightness = 255);
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxColour, WXDLLIMPEXP_CORE);
protected:
// Some ports need Init() and while we don't, provide a stub so that the
// ports which don't need it are not forced to define it

View file

@ -62,7 +62,9 @@ enum
wxCONFIG_USE_GLOBAL_FILE = 2,
wxCONFIG_USE_RELATIVE_PATH = 4,
wxCONFIG_USE_NO_ESCAPE_CHARACTERS = 8,
wxCONFIG_USE_SUBDIR = 16
wxCONFIG_USE_SUBDIR = 16,
wxCONFIG_USE_XDG = 32,
wxCONFIG_USE_HOME = 64
};
// ----------------------------------------------------------------------------

View file

@ -23,9 +23,11 @@
#if defined(__WINDOWS__) && wxUSE_CONFIG_NATIVE
#include "wx/msw/regconf.h"
#define wxConfig wxRegConfig
#define wxHAS_CONFIG_AS_REGCONFIG
#else // either we're under Unix or wish to always use config files
#include "wx/fileconf.h"
#define wxConfig wxFileConfig
#define wxHAS_CONFIG_AS_FILECONFIG
#endif
#endif // wxUSE_CONFIG

View file

@ -17,6 +17,8 @@
#include <time.h>
#include <vector>
#include <limits.h> // for INT_MIN
#include "wx/longlong.h"
@ -44,7 +46,7 @@ struct _SYSTEMTIME;
* ? 2. getdate() function like under Solaris
* + 3. text conversion for wxDateSpan
* + 4. pluggable modules for the workdays calculations
* 5. wxDateTimeHolidayAuthority for Easter and other christian feasts
* 5. wxDateTimeHolidayAuthority Christian feasts outside of US
*/
/*
@ -1276,6 +1278,8 @@ public:
return wxTimeSpan(*this).Multiply(n);
}
friend WXDLLIMPEXP_BASE wxTimeSpan operator*(int n, const wxTimeSpan& ts);
// return this timespan with opposite sign
wxTimeSpan Negate() const { return wxTimeSpan(-GetValue()); }
// negate the value of the timespan
@ -1529,6 +1533,7 @@ public:
{
return wxDateSpan(*this).Multiply(n);
}
friend WXDLLIMPEXP_BASE wxDateSpan operator*(int n, const wxDateSpan& ds);
// ds1 == d2 if and only if for every wxDateTime t t + ds1 == t + ds2
inline bool operator==(const wxDateSpan& ds) const
@ -1599,13 +1604,7 @@ protected:
virtual bool DoIsHoliday(const wxDateTime& dt) const = 0;
// this function should fill the array with all holidays between the two
// given dates - it is implemented in the base class, but in a very
// inefficient way (it just iterates over all days and uses IsHoliday() for
// each of them), so it must be overridden in the derived class where the
// base class version may be explicitly used if needed
//
// returns the number of holidays in the given range and fills holidays
// array
// given dates
virtual size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
const wxDateTime& dtEnd,
wxDateTimeArray& holidays) const = 0;
@ -1625,6 +1624,85 @@ protected:
wxDateTimeArray& holidays) const override;
};
// https://marian.org/mary/feast-days
// https://www.omvusa.org/blog/catholic-holy-days-of-obligation/
class WXDLLIMPEXP_BASE wxDateTimeUSCatholicFeasts : public wxDateTimeHolidayAuthority
{
public:
// Easter for a given year.
// Based on https://www.geeksforgeeks.org/how-to-calculate-the-easter-date-for-a-given-year-using-gauss-algorithm/
// Validated against 1600 to 2099, using data from:
// https://www.assa.org.au/edm (Astronomical Society of South Australia)
// https://www.census.gov/data/software/x13as/genhol/easter-dates.html (US Census Bureau)
static wxDateTime GetEaster(int year);
// Ascension for a given year.
// Celebrated on the 40th day of Easter/
// the sixth Thursday after Easter Sunday.
static wxDateTime GetThursdayAscension(int year)
{
const wxDateTime ascension = GetEaster(year) + wxDateSpan::Days(39);
wxASSERT_MSG(
ascension.GetWeekDay() == wxDateTime::WeekDay::Thu,
"Error in Ascension calculation!");
return ascension;
}
// Ascension for a given year.
// Same as traditional Ascension, but moved to the following Sunday.
static wxDateTime GetSundayAscension(int year)
{
const wxDateTime ascension = GetEaster(year) + wxDateSpan::Weeks(6);
wxASSERT_MSG(
ascension.GetWeekDay() == wxDateTime::WeekDay::Sun,
"Error in Ascension calculation!");
return ascension;
}
protected:
bool DoIsHoliday(const wxDateTime& dt) const override
{
if (dt.IsSameDate(GetEaster(dt.GetYear())) ||
dt.IsSameDate(GetThursdayAscension(dt.GetYear())) )
{
return true;
}
for (const auto& feast : m_holyDaysOfObligation)
{
if (feast.GetMonth() == dt.GetMonth() &&
feast.GetDay() == dt.GetDay())
{
return true;
}
}
return false;
}
size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
const wxDateTime& dtEnd,
wxDateTimeArray& holidays) const override;
private:
static std::vector<wxDateTime> m_holyDaysOfObligation;
};
// Christmas and Easter
class WXDLLIMPEXP_BASE wxDateTimeChristianHolidays : public wxDateTimeUSCatholicFeasts
{
protected:
bool DoIsHoliday(const wxDateTime& dt) const override
{
if (dt.IsSameDate(GetEaster(dt.GetYear())) ||
(dt.GetMonth() == 12 && dt.GetDay() == 25))
{
return true;
}
return false;
}
size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
const wxDateTime& dtEnd,
wxDateTimeArray& holidays) const override;
};
// ============================================================================
// inline functions implementation
// ============================================================================
@ -2168,22 +2246,6 @@ inline wxDateSpan wxDateSpan::Subtract(const wxDateSpan& other) const
#undef MODIFY_AND_RETURN
// ============================================================================
// binary operators
// ============================================================================
// ----------------------------------------------------------------------------
// wxTimeSpan operators
// ----------------------------------------------------------------------------
wxTimeSpan WXDLLIMPEXP_BASE operator*(int n, const wxTimeSpan& ts);
// ----------------------------------------------------------------------------
// wxDateSpan
// ----------------------------------------------------------------------------
wxDateSpan WXDLLIMPEXP_BASE operator*(int n, const wxDateSpan& ds);
// ============================================================================
// other helper functions
// ============================================================================

View file

@ -128,6 +128,8 @@ public:
virtual wxDCImpl* CreatePrinterDC( wxPrinterDC *owner, const wxPrintData &data ) = 0;
#endif
virtual bool CanDrawUsingClientDC(const wxWindow* window) const = 0;
static void Set(wxDCFactory *factory);
static wxDCFactory *Get();
@ -154,6 +156,8 @@ public:
#if wxUSE_PRINTING_ARCHITECTURE
virtual wxDCImpl* CreatePrinterDC( wxPrinterDC *owner, const wxPrintData &data ) override;
#endif
virtual bool CanDrawUsingClientDC(const wxWindow* window) const override;
};
//-----------------------------------------------------------------------------

View file

@ -36,6 +36,8 @@ class WXDLLIMPEXP_CORE wxClientDC : public wxWindowDC
public:
wxClientDC(wxWindow *win);
static bool CanBeUsedForDrawing(const wxWindow* window);
protected:
wxClientDC(wxDCImpl *impl) : wxWindowDC(impl) { }

View file

@ -782,19 +782,22 @@ typedef short int WXTYPE;
#define wxDEFINE_COMPARISON(op, T1, T2, cmp) \
inline bool operator op(T1 x, T2 y) { return cmp(x, y, op); }
friend bool operator op(T1 x, T2 y) { return cmp(x, y, op); }
#define wxDEFINE_COMPARISON_REV(op, T1, T2, cmp, oprev) \
inline bool operator op(T2 y, T1 x) { return cmp(x, y, oprev); }
friend bool operator op(T2 y, T1 x) { return cmp(x, y, oprev); }
#define wxDEFINE_COMPARISON_BY_REV(op, T1, T2, oprev) \
inline bool operator op(T1 x, T2 y) { return y oprev x; }
friend bool operator op(T1 x, T2 y) { return y oprev x; }
/*
Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given
types in the specified order. The implementation is provided by the cmp
macro. Normally wxDEFINE_ALL_COMPARISONS should be used as comparison
operators are usually symmetric.
Note that comparison operators are defined as hidden friends and so this
macro can only be used inside the class declaration.
*/
#define wxDEFINE_COMPARISONS(T1, T2, cmp) \
wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON, T1, T2, cmp)
@ -803,6 +806,9 @@ typedef short int WXTYPE;
Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given
types in the specified order, implemented in terms of existing operators
for the reverse order.
Note that comparison operators are defined as hidden friends and so this
macro can only be used inside the class declaration.
*/
#define wxDEFINE_COMPARISONS_BY_REV(T1, T2) \
wxFOR_ALL_COMPARISONS_2_REV(wxDEFINE_COMPARISON_BY_REV, T1, T2)

View file

@ -51,6 +51,9 @@ public:
wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { }
wxClientDCImpl(wxDC *owner, wxWindow *win);
static bool
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return true; }
wxDECLARE_DYNAMIC_CLASS(wxClientDCImpl);
wxDECLARE_NO_COPY_CLASS(wxClientDCImpl);
};

View file

@ -67,6 +67,8 @@ public:
return !IsSameAs(other);
}
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxDataViewIconText, WXDLLIMPEXP_CORE);
private:
wxString m_text;
wxBitmapBundle m_bitmap;
@ -74,8 +76,6 @@ private:
wxDECLARE_DYNAMIC_CLASS(wxDataViewIconText);
};
DECLARE_VARIANT_OBJECT_EXPORTED(wxDataViewIconText, WXDLLIMPEXP_CORE)
// ----------------------------------------------------------------------------
// wxDataViewCheckIconText: value class used by wxDataViewCheckIconTextRenderer
// ----------------------------------------------------------------------------
@ -94,14 +94,14 @@ public:
wxCheckBoxState GetCheckedState() const { return m_checkedState; }
void SetCheckedState(wxCheckBoxState state) { m_checkedState = state; }
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxDataViewCheckIconText, WXDLLIMPEXP_CORE);
private:
wxCheckBoxState m_checkedState;
wxDECLARE_DYNAMIC_CLASS(wxDataViewCheckIconText);
};
DECLARE_VARIANT_OBJECT_EXPORTED(wxDataViewCheckIconText, WXDLLIMPEXP_CORE)
// ----------------------------------------------------------------------------
// wxDataViewRendererBase
// ----------------------------------------------------------------------------

View file

@ -123,6 +123,24 @@ public:
return GetLocalFile(szFile, style).GetFullPath();
}
// Function to migrate, i.e. move, an existing local config file to another
// location. Old and new style determine the existing and new file paths.
struct MigrationResult
{
// If empty, it means the old file wasn't found and nothing was done.
wxString oldPath;
// The name of the new file.
wxString newPath;
// If empty, means the file was successfully migrated.
wxString error;
};
static MigrationResult
MigrateLocalFile(const wxString& name,
int newStyle,
int oldStyle = wxCONFIG_USE_HOME);
// ctor & dtor
// New constructor: one size fits all. Specify wxCONFIG_USE_LOCAL_FILE or
// wxCONFIG_USE_GLOBAL_FILE to say which files should be used.

View file

@ -671,6 +671,8 @@ extern WXDLLIMPEXP_DATA_CORE(wxFontList*) wxTheFontList;
// to compile without warnings which it would otherwise provoke from some
// compilers as it compares elements of different enums
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxFONTFAMILY_XXX constants") \
inline bool operator==(wxFontFamily s, wxDeprecatedGUIConstants t)
{ return static_cast<int>(s) == static_cast<int>(t); }
@ -690,4 +692,6 @@ wxDEPRECATED_MSG("use wxFONTWEIGHT_XXX constants") \
inline bool operator!=(wxFontWeight s, wxDeprecatedGUIConstants t)
{ return static_cast<int>(s) != static_cast<int>(t); }
#endif // WXWIN_COMPATIBILITY_3_2
#endif // _WX_FONT_H_BASE_

31
include/wx/fs_data.h Normal file
View file

@ -0,0 +1,31 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/fs_data.h
// Purpose: DATA scheme file system.
// Author: Vyacheslav Lisovski
// Copyright: (c) 2023 Vyacheslav Lisovski
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_FS_DATA_H_
#define _WX_FS_DATA_H_
#include "wx/defs.h"
#if wxUSE_FILESYSTEM
#include "wx/filesys.h"
// ----------------------------------------------------------------------------
// wxDataSchemeFSHandler
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_BASE wxDataSchemeFSHandler : public wxFileSystemHandler
{
public:
virtual bool CanOpen(const wxString& location) override;
virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location) override;
};
#endif // wxUSE_FILESYSTEM
#endif // _WX_FS_DATA_H_

View file

@ -295,6 +295,102 @@ public:
wxSize& operator/=(double i) { x = wxRound(x/i); y = wxRound(y/i); return *this; }
wxSize& operator*=(double i) { x = wxRound(x*i); y = wxRound(y*i); return *this; }
friend bool operator==(const wxSize& s1, const wxSize& s2)
{
return s1.x == s2.x && s1.y == s2.y;
}
friend bool operator!=(const wxSize& s1, const wxSize& s2)
{
return s1.x != s2.x || s1.y != s2.y;
}
friend wxSize operator+(const wxSize& s1, const wxSize& s2)
{
return wxSize(s1.x + s2.x, s1.y + s2.y);
}
friend wxSize operator-(const wxSize& s1, const wxSize& s2)
{
return wxSize(s1.x - s2.x, s1.y - s2.y);
}
friend wxSize operator/(const wxSize& s, int i)
{
return wxSize(s.x / i, s.y / i);
}
friend wxSize operator*(const wxSize& s, int i)
{
return wxSize(s.x * i, s.y * i);
}
friend wxSize operator*(int i, const wxSize& s)
{
return wxSize(s.x * i, s.y * i);
}
friend wxSize operator/(const wxSize& s, unsigned int i)
{
return wxSize(s.x / i, s.y / i);
}
friend wxSize operator*(const wxSize& s, unsigned int i)
{
return wxSize(s.x * i, s.y * i);
}
friend wxSize operator*(unsigned int i, const wxSize& s)
{
return wxSize(s.x * i, s.y * i);
}
friend wxSize operator/(const wxSize& s, long i)
{
return wxSize(s.x / i, s.y / i);
}
friend wxSize operator*(const wxSize& s, long i)
{
return wxSize(int(s.x * i), int(s.y * i));
}
friend wxSize operator*(long i, const wxSize& s)
{
return wxSize(int(s.x * i), int(s.y * i));
}
friend wxSize operator/(const wxSize& s, unsigned long i)
{
return wxSize(int(s.x / i), int(s.y / i));
}
friend wxSize operator*(const wxSize& s, unsigned long i)
{
return wxSize(int(s.x * i), int(s.y * i));
}
friend wxSize operator*(unsigned long i, const wxSize& s)
{
return wxSize(int(s.x * i), int(s.y * i));
}
friend wxSize operator/(const wxSize& s, double i)
{
return wxSize(wxRound(s.x / i), wxRound(s.y / i));
}
friend wxSize operator*(const wxSize& s, double i)
{
return wxSize(wxRound(s.x * i), wxRound(s.y * i));
}
friend wxSize operator*(double i, const wxSize& s)
{
return wxSize(wxRound(s.x * i), wxRound(s.y * i));
}
void IncTo(const wxSize& sz)
{ if ( sz.x > x ) x = sz.x; if ( sz.y > y ) y = sz.y; }
void DecTo(const wxSize& sz)
@ -350,103 +446,6 @@ public:
int GetY() const { return y; }
};
inline bool operator==(const wxSize& s1, const wxSize& s2)
{
return s1.x == s2.x && s1.y == s2.y;
}
inline bool operator!=(const wxSize& s1, const wxSize& s2)
{
return s1.x != s2.x || s1.y != s2.y;
}
inline wxSize operator+(const wxSize& s1, const wxSize& s2)
{
return wxSize(s1.x + s2.x, s1.y + s2.y);
}
inline wxSize operator-(const wxSize& s1, const wxSize& s2)
{
return wxSize(s1.x - s2.x, s1.y - s2.y);
}
inline wxSize operator/(const wxSize& s, int i)
{
return wxSize(s.x / i, s.y / i);
}
inline wxSize operator*(const wxSize& s, int i)
{
return wxSize(s.x * i, s.y * i);
}
inline wxSize operator*(int i, const wxSize& s)
{
return wxSize(s.x * i, s.y * i);
}
inline wxSize operator/(const wxSize& s, unsigned int i)
{
return wxSize(s.x / i, s.y / i);
}
inline wxSize operator*(const wxSize& s, unsigned int i)
{
return wxSize(s.x * i, s.y * i);
}
inline wxSize operator*(unsigned int i, const wxSize& s)
{
return wxSize(s.x * i, s.y * i);
}
inline wxSize operator/(const wxSize& s, long i)
{
return wxSize(s.x / i, s.y / i);
}
inline wxSize operator*(const wxSize& s, long i)
{
return wxSize(int(s.x * i), int(s.y * i));
}
inline wxSize operator*(long i, const wxSize& s)
{
return wxSize(int(s.x * i), int(s.y * i));
}
inline wxSize operator/(const wxSize& s, unsigned long i)
{
return wxSize(int(s.x / i), int(s.y / i));
}
inline wxSize operator*(const wxSize& s, unsigned long i)
{
return wxSize(int(s.x * i), int(s.y * i));
}
inline wxSize operator*(unsigned long i, const wxSize& s)
{
return wxSize(int(s.x * i), int(s.y * i));
}
inline wxSize operator/(const wxSize& s, double i)
{
return wxSize(wxRound(s.x / i), wxRound(s.y / i));
}
inline wxSize operator*(const wxSize& s, double i)
{
return wxSize(wxRound(s.x * i), wxRound(s.y * i));
}
inline wxSize operator*(double i, const wxSize& s)
{
return wxSize(wxRound(s.x * i), wxRound(s.y * i));
}
// ---------------------------------------------------------------------------
// Point classes: with real or integer coordinates
// ---------------------------------------------------------------------------
@ -469,102 +468,134 @@ public:
wxRealPoint& operator+=(const wxSize& s) { x += s.GetWidth(); y += s.GetHeight(); return *this; }
wxRealPoint& operator-=(const wxSize& s) { x -= s.GetWidth(); y -= s.GetHeight(); return *this; }
wxRealPoint& operator/=(int i) { x *= i; y *= i; return *this; }
wxRealPoint& operator*=(int i) { x /= i; y /= i; return *this; }
wxRealPoint& operator/=(double f) { x /= f; y /= f; return *this; }
wxRealPoint& operator*=(double f) { x *= f; y *= f; return *this; }
friend bool operator==(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxIsSameDouble(p1.x, p2.x) && wxIsSameDouble(p1.y, p2.y);
}
friend bool operator!=(const wxRealPoint& p1, const wxRealPoint& p2)
{
return !(p1 == p2);
}
friend wxRealPoint operator+(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxRealPoint(p1.x + p2.x, p1.y + p2.y);
}
friend wxRealPoint operator-(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxRealPoint(p1.x - p2.x, p1.y - p2.y);
}
friend wxRealPoint operator+(const wxRealPoint& pt, const wxSize& sz)
{
return wxRealPoint(pt.x + sz.GetWidth(), pt.y + sz.GetHeight());
}
friend wxRealPoint operator-(const wxRealPoint& pt, const wxSize& sz)
{
return wxRealPoint(pt.x - sz.GetWidth(), pt.y - sz.GetHeight());
}
friend wxRealPoint operator+(const wxSize& sz, const wxRealPoint& pt)
{
return wxRealPoint(sz.GetWidth() + pt.x, sz.GetHeight() + pt.y);
}
friend wxRealPoint operator-(const wxSize& sz, const wxRealPoint& pt)
{
return wxRealPoint(sz.GetWidth() - pt.x, sz.GetHeight() - pt.y);
}
friend wxRealPoint operator-(const wxRealPoint& pt)
{
return wxRealPoint(-pt.x, -pt.y);
}
friend wxRealPoint operator/(const wxRealPoint& p, int i)
{
return wxRealPoint(p.x / i, p.y / i);
}
friend wxRealPoint operator*(const wxRealPoint& p, int i)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator*(int i, const wxRealPoint& p)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator/(const wxRealPoint& p, unsigned int i)
{
return wxRealPoint(p.x / i, p.y / i);
}
friend wxRealPoint operator*(const wxRealPoint& p, unsigned int i)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator*(unsigned int i, const wxRealPoint& p)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator/(const wxRealPoint& p, long i)
{
return wxRealPoint(p.x / i, p.y / i);
}
friend wxRealPoint operator*(const wxRealPoint& p, long i)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator*(long i, const wxRealPoint& p)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator/(const wxRealPoint& p, unsigned long i)
{
return wxRealPoint(p.x / i, p.y / i);
}
friend wxRealPoint operator*(const wxRealPoint& p, unsigned long i)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator*(unsigned long i, const wxRealPoint& p)
{
return wxRealPoint(p.x * i, p.y * i);
}
friend wxRealPoint operator/(const wxRealPoint& p, double f)
{
return wxRealPoint(p.x / f, p.y / f);
}
friend wxRealPoint operator*(const wxRealPoint& p, double f)
{
return wxRealPoint(p.x * f, p.y * f);
}
friend wxRealPoint operator*(double f, const wxRealPoint& p)
{
return wxRealPoint(p.x * f, p.y * f);
}
};
inline bool operator==(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxIsSameDouble(p1.x, p2.x) && wxIsSameDouble(p1.y, p2.y);
}
inline bool operator!=(const wxRealPoint& p1, const wxRealPoint& p2)
{
return !(p1 == p2);
}
inline wxRealPoint operator+(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxRealPoint(p1.x + p2.x, p1.y + p2.y);
}
inline wxRealPoint operator-(const wxRealPoint& p1, const wxRealPoint& p2)
{
return wxRealPoint(p1.x - p2.x, p1.y - p2.y);
}
inline wxRealPoint operator/(const wxRealPoint& s, int i)
{
return wxRealPoint(s.x / i, s.y / i);
}
inline wxRealPoint operator*(const wxRealPoint& s, int i)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(int i, const wxRealPoint& s)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator/(const wxRealPoint& s, unsigned int i)
{
return wxRealPoint(s.x / i, s.y / i);
}
inline wxRealPoint operator*(const wxRealPoint& s, unsigned int i)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(unsigned int i, const wxRealPoint& s)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator/(const wxRealPoint& s, long i)
{
return wxRealPoint(s.x / i, s.y / i);
}
inline wxRealPoint operator*(const wxRealPoint& s, long i)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(long i, const wxRealPoint& s)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator/(const wxRealPoint& s, unsigned long i)
{
return wxRealPoint(s.x / i, s.y / i);
}
inline wxRealPoint operator*(const wxRealPoint& s, unsigned long i)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(unsigned long i, const wxRealPoint& s)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(const wxRealPoint& s, double i)
{
return wxRealPoint(s.x * i, s.y * i);
}
inline wxRealPoint operator*(double i, const wxRealPoint& s)
{
return wxRealPoint(s.x * i, s.y * i);
}
// ----------------------------------------------------------------------------
// wxPoint: 2D point with integer coordinates
// ----------------------------------------------------------------------------
@ -587,6 +618,134 @@ public:
wxPoint& operator+=(const wxSize& s) { x += s.GetWidth(); y += s.GetHeight(); return *this; }
wxPoint& operator-=(const wxSize& s) { x -= s.GetWidth(); y -= s.GetHeight(); return *this; }
wxPoint& operator/=(int i) { x /= i; y /= i; return *this; }
wxPoint& operator*=(int i) { x *= i; y *= i; return *this; }
wxPoint& operator/=(double f) { x = wxRound(x/f); y = wxRound(y/f); return *this; }
wxPoint& operator*=(double f) { x = wxRound(x*f); y = wxRound(y*f); return *this; }
// comparison
friend bool operator==(const wxPoint& p1, const wxPoint& p2)
{
return p1.x == p2.x && p1.y == p2.y;
}
friend bool operator!=(const wxPoint& p1, const wxPoint& p2)
{
return !(p1 == p2);
}
// arithmetic operations (component wise)
friend wxPoint operator+(const wxPoint& p1, const wxPoint& p2)
{
return wxPoint(p1.x + p2.x, p1.y + p2.y);
}
friend wxPoint operator-(const wxPoint& p1, const wxPoint& p2)
{
return wxPoint(p1.x - p2.x, p1.y - p2.y);
}
friend wxPoint operator+(const wxPoint& p, const wxSize& s)
{
return wxPoint(p.x + s.x, p.y + s.y);
}
friend wxPoint operator-(const wxPoint& p, const wxSize& s)
{
return wxPoint(p.x - s.x, p.y - s.y);
}
friend wxPoint operator+(const wxSize& s, const wxPoint& p)
{
return wxPoint(p.x + s.x, p.y + s.y);
}
friend wxPoint operator-(const wxSize& s, const wxPoint& p)
{
return wxPoint(s.x - p.x, s.y - p.y);
}
friend wxPoint operator-(const wxPoint& p)
{
return wxPoint(-p.x, -p.y);
}
friend wxPoint operator/(const wxPoint& p, int i)
{
return wxPoint(p.x / i, p.y / i);
}
friend wxPoint operator*(const wxPoint& p, int i)
{
return wxPoint(p.x * i, p.y * i);
}
friend wxPoint operator*(int i, const wxPoint& p)
{
return wxPoint(p.x * i, p.y * i);
}
friend wxPoint operator/(const wxPoint& p, unsigned int i)
{
return wxPoint(p.x / i, p.y / i);
}
friend wxPoint operator*(const wxPoint& p, unsigned int i)
{
return wxPoint(p.x * i, p.y * i);
}
friend wxPoint operator*(unsigned int i, const wxPoint& p)
{
return wxPoint(p.x * i, p.y * i);
}
friend wxPoint operator/(const wxPoint& p, long i)
{
return wxPoint(p.x / i, p.y / i);
}
friend wxPoint operator*(const wxPoint& p, long i)
{
return wxPoint(int(p.x * i), int(p.y * i));
}
friend wxPoint operator*(long i, const wxPoint& p)
{
return wxPoint(int(p.x * i), int(p.y * i));
}
friend wxPoint operator/(const wxPoint& p, unsigned long i)
{
return wxPoint(p.x / i, p.y / i);
}
friend wxPoint operator*(const wxPoint& p, unsigned long i)
{
return wxPoint(int(p.x * i), int(p.y * i));
}
friend wxPoint operator*(unsigned long i, const wxPoint& p)
{
return wxPoint(int(p.x * i), int(p.y * i));
}
friend wxPoint operator/(const wxPoint& p, double f)
{
return wxPoint(wxRound(p.x / f), wxRound(p.y / f));
}
friend wxPoint operator*(const wxPoint& p, double f)
{
return wxPoint(int(p.x * f), int(p.y * f));
}
friend wxPoint operator*(double f, const wxPoint& p)
{
return wxPoint(int(p.x * f), int(p.y * f));
}
// check if both components are set/initialized
bool IsFullySpecified() const { return x != wxDefaultCoord && y != wxDefaultCoord; }
@ -601,124 +760,6 @@ public:
};
// comparison
inline bool operator==(const wxPoint& p1, const wxPoint& p2)
{
return p1.x == p2.x && p1.y == p2.y;
}
inline bool operator!=(const wxPoint& p1, const wxPoint& p2)
{
return !(p1 == p2);
}
// arithmetic operations (component wise)
inline wxPoint operator+(const wxPoint& p1, const wxPoint& p2)
{
return wxPoint(p1.x + p2.x, p1.y + p2.y);
}
inline wxPoint operator-(const wxPoint& p1, const wxPoint& p2)
{
return wxPoint(p1.x - p2.x, p1.y - p2.y);
}
inline wxPoint operator+(const wxPoint& p, const wxSize& s)
{
return wxPoint(p.x + s.x, p.y + s.y);
}
inline wxPoint operator-(const wxPoint& p, const wxSize& s)
{
return wxPoint(p.x - s.x, p.y - s.y);
}
inline wxPoint operator+(const wxSize& s, const wxPoint& p)
{
return wxPoint(p.x + s.x, p.y + s.y);
}
inline wxPoint operator-(const wxSize& s, const wxPoint& p)
{
return wxPoint(s.x - p.x, s.y - p.y);
}
inline wxPoint operator-(const wxPoint& p)
{
return wxPoint(-p.x, -p.y);
}
inline wxPoint operator/(const wxPoint& s, int i)
{
return wxPoint(s.x / i, s.y / i);
}
inline wxPoint operator*(const wxPoint& s, int i)
{
return wxPoint(s.x * i, s.y * i);
}
inline wxPoint operator*(int i, const wxPoint& s)
{
return wxPoint(s.x * i, s.y * i);
}
inline wxPoint operator/(const wxPoint& s, unsigned int i)
{
return wxPoint(s.x / i, s.y / i);
}
inline wxPoint operator*(const wxPoint& s, unsigned int i)
{
return wxPoint(s.x * i, s.y * i);
}
inline wxPoint operator*(unsigned int i, const wxPoint& s)
{
return wxPoint(s.x * i, s.y * i);
}
inline wxPoint operator/(const wxPoint& s, long i)
{
return wxPoint(s.x / i, s.y / i);
}
inline wxPoint operator*(const wxPoint& s, long i)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
inline wxPoint operator*(long i, const wxPoint& s)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
inline wxPoint operator/(const wxPoint& s, unsigned long i)
{
return wxPoint(s.x / i, s.y / i);
}
inline wxPoint operator*(const wxPoint& s, unsigned long i)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
inline wxPoint operator*(unsigned long i, const wxPoint& s)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
inline wxPoint operator*(const wxPoint& s, double i)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
inline wxPoint operator*(double i, const wxPoint& s)
{
return wxPoint(int(s.x * i), int(s.y * i));
}
WX_DECLARE_LIST_WITH_DECL(wxPoint, wxPointList, class WXDLLIMPEXP_CORE);
// ---------------------------------------------------------------------------
@ -845,9 +886,24 @@ public:
// like Union() but don't ignore empty rectangles
wxRect& operator+=(const wxRect& rect);
friend WXDLLIMPEXP_CORE wxRect operator+(const wxRect& r1, const wxRect& r2);
// intersections of two rectangles not testing for empty rectangles
wxRect& operator*=(const wxRect& rect);
friend WXDLLIMPEXP_CORE wxRect operator*(const wxRect& r1, const wxRect& r2);
// compare rectangles
friend bool operator==(const wxRect& r1, const wxRect& r2)
{
return (r1.x == r2.x) && (r1.y == r2.y) &&
(r1.width == r2.width) && (r1.height == r2.height);
}
friend bool operator!=(const wxRect& r1, const wxRect& r2)
{
return !(r1 == r2);
}
// centre this rectangle in the given (usually, but not necessarily,
// larger) one
@ -877,24 +933,6 @@ public:
};
// compare rectangles
inline bool operator==(const wxRect& r1, const wxRect& r2)
{
return (r1.x == r2.x) && (r1.y == r2.y) &&
(r1.width == r2.width) && (r1.height == r2.height);
}
inline bool operator!=(const wxRect& r1, const wxRect& r2)
{
return !(r1 == r2);
}
// like Union() but don't treat empty rectangles specially
WXDLLIMPEXP_CORE wxRect operator+(const wxRect& r1, const wxRect& r2);
// intersections of two rectangles
WXDLLIMPEXP_CORE wxRect operator*(const wxRect& r1, const wxRect& r2);
// define functions which couldn't be defined above because of declarations
// order
inline void wxSize::IncBy(const wxPoint& pt) { IncBy(pt.x, pt.y); }

View file

@ -2284,6 +2284,8 @@ public:
void ClearSelection();
bool CopySelection();
bool IsInSelection( int row, int col ) const;
bool IsInSelection( const wxGridCellCoords& coords ) const

View file

@ -51,6 +51,8 @@ public:
// ctors, assignment operators...), but it's ok to have such function
void CopyFromBitmap(const wxBitmap& bmp);
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxIcon, WXDLLIMPEXP_CORE);
private:
wxDECLARE_DYNAMIC_CLASS(wxIcon);
};

View file

@ -131,6 +131,9 @@ public:
// Is the window split?
bool IsSplit() const { return (m_windowTwo != nullptr); }
// Return true if wxSP_LIVE_UPDATE is always used.
bool AlwaysUsesLiveUpdate() const;
// Sets the border size
void SetBorderSize(int WXUNUSED(width)) { }

View file

@ -243,7 +243,7 @@ protected:
*m_key_current,
// A hint to select a parent item after deleting a child
*m_select_me;
unsigned short m_indent;
unsigned int m_indent;
int m_lineHeight;
wxPen m_dottedPen;
wxBrush m_hilightBrush,
@ -357,6 +357,8 @@ protected:
virtual wxSize DoGetBestSize() const override;
private:
void OnDPIChanged(wxDPIChangedEvent& event);
void OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event))
{
InitVisualAttributes();

View file

@ -71,6 +71,60 @@ public :
inline bool operator==(const wxPoint2DInt& pt) const;
inline bool operator!=(const wxPoint2DInt& pt) const;
friend wxPoint2DInt operator+(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x + pt2.m_x , pt1.m_y + pt2.m_y );
}
friend wxPoint2DInt operator-(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x - pt2.m_x , pt1.m_y - pt2.m_y );
}
friend wxPoint2DInt operator*(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y );
}
friend wxPoint2DInt operator*(wxInt32 n , const wxPoint2DInt& pt)
{
return wxPoint2DInt( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DInt operator*(wxDouble n , const wxPoint2DInt& pt)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x * n) ,
static_cast<wxInt32>(pt.m_y * n) );
}
friend wxPoint2DInt operator*(const wxPoint2DInt& pt , wxInt32 n)
{
return wxPoint2DInt( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DInt operator*(const wxPoint2DInt& pt , wxDouble n)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x * n) ,
static_cast<wxInt32>(pt.m_y * n) );
}
friend wxPoint2DInt operator/(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y );
}
friend wxPoint2DInt operator/(const wxPoint2DInt& pt , wxInt32 n)
{
return wxPoint2DInt( pt.m_x / n , pt.m_y / n );
}
friend wxPoint2DInt operator/(const wxPoint2DInt& pt , wxDouble n)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x / n) ,
static_cast<wxInt32>(pt.m_y / n) );
}
#if wxUSE_STREAMS
void WriteTo( wxDataOutputStream &stream ) const;
void ReadFrom( wxDataInputStream &stream );
@ -80,17 +134,6 @@ public :
wxInt32 m_y;
};
inline wxPoint2DInt operator+(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2);
inline wxPoint2DInt operator-(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2);
inline wxPoint2DInt operator*(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2);
inline wxPoint2DInt operator*(wxInt32 n , const wxPoint2DInt& pt);
inline wxPoint2DInt operator*(wxDouble n , const wxPoint2DInt& pt);
inline wxPoint2DInt operator*(const wxPoint2DInt& pt , wxInt32 n);
inline wxPoint2DInt operator*(const wxPoint2DInt& pt , wxDouble n);
inline wxPoint2DInt operator/(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2);
inline wxPoint2DInt operator/(const wxPoint2DInt& pt , wxInt32 n);
inline wxPoint2DInt operator/(const wxPoint2DInt& pt , wxDouble n);
inline wxPoint2DInt::wxPoint2DInt()
{
m_x = 0;
@ -209,60 +252,6 @@ inline bool wxPoint2DInt::operator!=(const wxPoint2DInt& pt) const
return m_x != pt.m_x || m_y != pt.m_y;
}
inline wxPoint2DInt operator+(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x + pt2.m_x , pt1.m_y + pt2.m_y );
}
inline wxPoint2DInt operator-(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x - pt2.m_x , pt1.m_y - pt2.m_y );
}
inline wxPoint2DInt operator*(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y );
}
inline wxPoint2DInt operator*(wxInt32 n , const wxPoint2DInt& pt)
{
return wxPoint2DInt( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DInt operator*(wxDouble n , const wxPoint2DInt& pt)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x * n) ,
static_cast<wxInt32>(pt.m_y * n) );
}
inline wxPoint2DInt operator*(const wxPoint2DInt& pt , wxInt32 n)
{
return wxPoint2DInt( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DInt operator*(const wxPoint2DInt& pt , wxDouble n)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x * n) ,
static_cast<wxInt32>(pt.m_y * n) );
}
inline wxPoint2DInt operator/(const wxPoint2DInt& pt1 , const wxPoint2DInt& pt2)
{
return wxPoint2DInt( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y );
}
inline wxPoint2DInt operator/(const wxPoint2DInt& pt , wxInt32 n)
{
return wxPoint2DInt( pt.m_x / n , pt.m_y / n );
}
inline wxPoint2DInt operator/(const wxPoint2DInt& pt , wxDouble n)
{
return wxPoint2DInt( static_cast<wxInt32>(pt.m_x / n) ,
static_cast<wxInt32>(pt.m_y / n) );
}
// wxPoint2Ds represent a point or a vector in a 2d coordinate system
class WXDLLIMPEXP_CORE wxPoint2DDouble
@ -307,21 +296,61 @@ public :
inline bool operator==(const wxPoint2DDouble& pt) const;
inline bool operator!=(const wxPoint2DDouble& pt) const;
friend wxPoint2DDouble operator+(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x + pt2.m_x , pt1.m_y + pt2.m_y );
}
friend wxPoint2DDouble operator-(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x - pt2.m_x , pt1.m_y - pt2.m_y );
}
friend wxPoint2DDouble operator*(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y );
}
friend wxPoint2DDouble operator*(wxDouble n , const wxPoint2DDouble& pt)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DDouble operator*(wxInt32 n , const wxPoint2DDouble& pt)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxDouble n)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxInt32 n)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y );
}
friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxDouble n)
{
return wxPoint2DDouble( pt.m_x / n , pt.m_y / n );
}
friend wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxInt32 n)
{
return wxPoint2DDouble( pt.m_x / n , pt.m_y / n );
}
wxDouble m_x;
wxDouble m_y;
};
inline wxPoint2DDouble operator+(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2);
inline wxPoint2DDouble operator-(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2);
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2);
inline wxPoint2DDouble operator*(wxDouble n , const wxPoint2DDouble& pt);
inline wxPoint2DDouble operator*(wxInt32 n , const wxPoint2DDouble& pt);
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxDouble n);
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxInt32 n);
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2);
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxDouble n);
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxInt32 n);
inline wxPoint2DDouble::wxPoint2DDouble()
{
m_x = 0.0;
@ -426,57 +455,6 @@ inline bool wxPoint2DDouble::operator!=(const wxPoint2DDouble& pt) const
return !(*this == pt);
}
inline wxPoint2DDouble operator+(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x + pt2.m_x , pt1.m_y + pt2.m_y );
}
inline wxPoint2DDouble operator-(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x - pt2.m_x , pt1.m_y - pt2.m_y );
}
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x * pt2.m_x , pt1.m_y * pt2.m_y );
}
inline wxPoint2DDouble operator*(wxDouble n , const wxPoint2DDouble& pt)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DDouble operator*(wxInt32 n , const wxPoint2DDouble& pt)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxDouble n)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DDouble operator*(const wxPoint2DDouble& pt , wxInt32 n)
{
return wxPoint2DDouble( pt.m_x * n , pt.m_y * n );
}
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt1 , const wxPoint2DDouble& pt2)
{
return wxPoint2DDouble( pt1.m_x / pt2.m_x , pt1.m_y / pt2.m_y );
}
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxDouble n)
{
return wxPoint2DDouble( pt.m_x / n , pt.m_y / n );
}
inline wxPoint2DDouble operator/(const wxPoint2DDouble& pt , wxInt32 n)
{
return wxPoint2DDouble( pt.m_x / n , pt.m_y / n );
}
// wxRect2Ds are an axis-aligned rectangles, each side of the rect is parallel to the x- or m_y- axis. The rectangle is either defined by the
// top left and bottom right corner, or by the top left corner and size. A point is contained within the rectangle if
// left <= x < right and top <= m_y < bottom , thus it is a half open interval.

View file

@ -59,6 +59,8 @@ protected:
private:
typedef wxCheckBoxBase base_type;
virtual void GTKRemoveBorder() override;
GtkWidget *m_widgetCheckbox;
GtkWidget *m_widgetLabel;

View file

@ -87,6 +87,8 @@ protected:
wxSize GTKGetEntryMargins(GtkEntry* entry) const;
private:
virtual void GTKRemoveBorder() override;
wxDECLARE_DYNAMIC_CLASS(wxControl);
};

View file

@ -64,6 +64,8 @@ class wxClientDCImpl: public wxGTKCairoDCImpl
public:
wxClientDCImpl(wxClientDC* owner, wxWindow* window);
static bool CanBeUsedForDrawing(const wxWindow* window);
wxDECLARE_NO_COPY_CLASS(wxClientDCImpl);
};
//-----------------------------------------------------------------------------

View file

@ -150,6 +150,9 @@ public:
virtual void DoGetSize(int *width, int *height) const override;
static bool
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return true; }
wxDECLARE_ABSTRACT_CLASS(wxClientDCImpl);
};

View file

@ -62,7 +62,7 @@ template<typename T> void InitMouseEvent(wxWindowGTK *win,
// Some no-window widgets, notably GtkEntry on GTK3, have a GdkWindow
// covering part of their area. Event coordinates from that window are
// not relative to the widget, so do the conversion here.
if (!gtk_widget_get_has_window(win->m_widget) &&
if (win->m_wxwindow == nullptr && !gtk_widget_get_has_window(win->m_widget) &&
gtk_widget_get_window(win->m_widget) == gdk_window_get_parent(gdk_event->window))
{
GtkAllocation a;

View file

@ -1334,7 +1334,7 @@
// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
// set to 1 and, under Windows, also to add opengl32.lib and glu32.lib to the
// set to 1 and, under Windows, also to add opengl32.lib to the
// list of libraries used to link your application when linking to wxWidgets
// statically (although this is done implicitly for Microsoft Visual C++ users).
//

View file

@ -466,6 +466,7 @@ protected:
private:
void Init();
virtual void GTKRemoveBorder();
// return true if this window must have a non-null parent, false if it can
// be created without parent (normally only top level windows but in wxGTK

View file

@ -343,6 +343,9 @@ protected:
virtual const wxHeaderColumn& GetColumn(unsigned int idx) const override;
virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle) override;
virtual void UpdateColumnVisibility(unsigned int idx, bool show) override;
virtual void UpdateColumnsOrder(const wxArrayInt& order) override;
// and define another one to be overridden in the derived classes: it
// should return the best width for the given column contents or -1 if not
// implemented, we use it to implement UpdateColumnWidthToFit()

View file

@ -11,7 +11,7 @@
#define _WX_ICON_H_BASE_
#include "wx/iconloc.h"
#include "wx/variant.h"
// a more readable way to tell
#define wxICON_SCREEN_DEPTH (-1)
@ -57,15 +57,5 @@
#define wxICON_IS_BITMAP
#endif
//-----------------------------------------------------------------------------
// wxVariant support
//-----------------------------------------------------------------------------
#if wxUSE_VARIANT
#include "wx/variant.h"
DECLARE_VARIANT_OBJECT_EXPORTED(wxIcon,WXDLLIMPEXP_CORE)
#endif
#endif
// _WX_ICON_H_BASE_

View file

@ -18,6 +18,7 @@
#include "wx/gdicmn.h"
#include "wx/hashmap.h"
#include "wx/arrstr.h"
#include "wx/variant.h"
#if wxUSE_STREAMS
# include "wx/stream.h"
@ -98,15 +99,6 @@ class WXDLLIMPEXP_FWD_CORE wxImageHandler;
class WXDLLIMPEXP_FWD_CORE wxImage;
class WXDLLIMPEXP_FWD_CORE wxPalette;
//-----------------------------------------------------------------------------
// wxVariant support
//-----------------------------------------------------------------------------
#if wxUSE_VARIANT
#include "wx/variant.h"
DECLARE_VARIANT_OBJECT_EXPORTED(wxImage,WXDLLIMPEXP_CORE)
#endif
//-----------------------------------------------------------------------------
// wxImageHandler
//-----------------------------------------------------------------------------
@ -594,6 +586,9 @@ public:
static HSVValue RGBtoHSV(const RGBValue& rgb);
static RGBValue HSVtoRGB(const HSVValue& hsv);
// wxVariant support
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxImage, WXDLLIMPEXP_CORE);
protected:
static wxList sm_handlers;

View file

@ -341,6 +341,19 @@ protected:
#endif // WXWIN_COMPATIBILITY_3_0
};
// Special kind of trivial formatter which simply uses the message unchanged.
class wxLogFormatterNone : public wxLogFormatter
{
public:
wxLogFormatterNone() = default;
virtual wxString Format(wxLogLevel WXUNUSED(level),
const wxString& msg,
const wxLogRecordInfo& WXUNUSED(info)) const override
{
return msg;
}
};
// ----------------------------------------------------------------------------
// derive from this class to redirect (or suppress, or ...) log messages
@ -665,6 +678,10 @@ public:
// get the string contents with all messages logged
const wxString& GetBuffer() const { return m_str; }
// clear all the messages, this, in particular, prevents them from being
// flushed
void Clear() { m_str.clear(); }
// show the buffer contents to the user in the best possible way (this uses
// wxMessageOutputMessageBox) and clear it
virtual void Flush() override;
@ -748,6 +765,41 @@ private:
bool m_flagOld; // the previous value of the wxLog::ms_doLog
};
// ----------------------------------------------------------------------------
// Collect all logged messages into a (multiline) string.
// ----------------------------------------------------------------------------
// This class is supposed to be used as a local variable and collects, without
// showing them, all the messages logged during its lifetime.
class wxLogCollector
{
public:
wxLogCollector()
: m_logOrig{wxLog::SetActiveTarget(&m_logBuf)}
{
delete m_logBuf.SetFormatter(new wxLogFormatterNone{});
}
~wxLogCollector()
{
// Don't flush the messages in the buffer.
m_logBuf.Clear();
wxLog::SetActiveTarget(m_logOrig);
}
const wxString& GetMessages() const
{
return m_logBuf.GetBuffer();
}
private:
wxLogBuffer m_logBuf;
wxLog* const m_logOrig;
wxDECLARE_NO_COPY_CLASS(wxLogCollector);
};
// ----------------------------------------------------------------------------
// chaining log target: installs itself as a log target and passes all
// messages to the real log target given to it in the ctor but also forwards

View file

@ -197,6 +197,8 @@ public:
{ return wxLongLongNative(m_ll + ll.m_ll); }
wxLongLongNative& operator+=(const wxLongLongNative& ll)
{ m_ll += ll.m_ll; return *this; }
friend wxLongLongNative operator+(long l, const wxLongLongNative& ll)
{ return ll + l; }
wxLongLongNative operator+(const wxLongLong_t ll) const
{ return wxLongLongNative(m_ll + ll); }
@ -221,6 +223,10 @@ public:
{ return wxLongLongNative(m_ll - ll.m_ll); }
wxLongLongNative& operator-=(const wxLongLongNative& ll)
{ m_ll -= ll.m_ll; return *this; }
friend wxLongLongNative operator-(long l, const wxLongLongNative& ll)
{
return wxLongLongNative(l) - ll;
}
wxLongLongNative operator-(const wxLongLong_t ll) const
{ return wxLongLongNative(m_ll - ll); }
@ -314,6 +320,13 @@ public:
bool operator>=(long l) const
{ return m_ll >= l; }
friend bool operator<(long l, const wxLongLongNative& ll) { return ll > l; }
friend bool operator>(long l, const wxLongLongNative& ll) { return ll < l; }
friend bool operator<=(long l, const wxLongLongNative& ll) { return ll >= l; }
friend bool operator>=(long l, const wxLongLongNative& ll) { return ll <= l; }
friend bool operator==(long l, const wxLongLongNative& ll) { return ll == l; }
friend bool operator!=(long l, const wxLongLongNative& ll) { return ll != l; }
// miscellaneous
// return the string representation of this number
@ -421,6 +434,8 @@ public:
{ return wxULongLongNative(m_ll + ll.m_ll); }
wxULongLongNative& operator+=(const wxULongLongNative& ll)
{ m_ll += ll.m_ll; return *this; }
friend wxULongLongNative operator+(unsigned long l, const wxULongLongNative& ull)
{ return ull + l; }
wxULongLongNative operator+(const wxULongLong_t ll) const
{ return wxULongLongNative(m_ll + ll); }
@ -440,6 +455,10 @@ public:
{ return wxULongLongNative(m_ll - ll.m_ll); }
wxULongLongNative& operator-=(const wxULongLongNative& ll)
{ m_ll -= ll.m_ll; return *this; }
friend wxULongLongNative operator-(unsigned long l, const wxULongLongNative& ull)
{
return wxULongLongNative(l - ull.m_ll);
}
wxULongLongNative operator-(const wxULongLong_t ll) const
{ return wxULongLongNative(m_ll - ll); }
@ -533,6 +552,13 @@ public:
bool operator>=(unsigned long l) const
{ return m_ll >= l; }
friend bool operator<(unsigned long l, const wxULongLongNative& ull) { return ull > l; }
friend bool operator>(unsigned long l, const wxULongLongNative& ull) { return ull < l; }
friend bool operator<=(unsigned long l, const wxULongLongNative& ull) { return ull >= l; }
friend bool operator>=(unsigned long l, const wxULongLongNative& ull) { return ull <= l; }
friend bool operator==(unsigned long l, const wxULongLongNative& ull) { return ull == l; }
friend bool operator!=(unsigned long l, const wxULongLongNative& ull) { return ull != l; }
// miscellaneous
// return the string representation of this number
@ -696,6 +722,8 @@ public:
wxLongLongWx operator+(long l) const;
wxLongLongWx& operator+=(long l);
friend wxLongLongWx operator+(long l, const wxLongLongWx& ll) { return ll + l; }
// pre increment operator
wxLongLongWx& operator++();
@ -709,6 +737,10 @@ public:
// subtraction
wxLongLongWx operator-(const wxLongLongWx& ll) const;
wxLongLongWx& operator-=(const wxLongLongWx& ll);
friend wxLongLongWx operator-(long l, const wxLongLongWx& ll)
{
return wxLongLongWx(l) - ll;
}
// pre decrement operator
wxLongLongWx& operator--();
@ -761,6 +793,13 @@ public:
bool operator<=(long l) const { return *this < l || *this == l; }
bool operator>=(long l) const { return *this > l || *this == l; }
friend bool operator<(long l, const wxLongLongWx& ll) { return ll > l; }
friend bool operator>(long l, const wxLongLongWx& ll) { return ll < l; }
friend bool operator<=(long l, const wxLongLongWx& ll) { return ll >= l; }
friend bool operator>=(long l, const wxLongLongWx& ll) { return ll <= l; }
friend bool operator==(long l, const wxLongLongWx& ll) { return ll == l; }
friend bool operator!=(long l, const wxLongLongWx& ll) { return ll != l; }
// multiplication
wxLongLongWx operator*(const wxLongLongWx& ll) const;
wxLongLongWx& operator*=(const wxLongLongWx& ll);
@ -795,7 +834,14 @@ public:
class wxTextOutputStream& operator<<(class wxTextOutputStream&, const wxLongLongWx&);
friend WXDLLIMPEXP_BASE
class wxTextInputStream& operator>>(class wxTextInputStream&, wxLongLongWx&);
#endif
#if wxUSE_LONGLONG_NATIVE
friend WXDLLIMPEXP_BASE
class wxTextOutputStream &operator<<(class wxTextOutputStream &stream, wxLongLong_t value);
friend WXDLLIMPEXP_BASE
class wxTextInputStream &operator>>(class wxTextInputStream &stream, wxLongLong_t &value);
#endif // wxUSE_LONGLONG_NATIVE
#endif // wxUSE_STREAMS
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
@ -920,6 +966,8 @@ public:
wxULongLongWx& operator+=(const wxULongLongWx& ll);
wxULongLongWx operator+(unsigned long l) const;
wxULongLongWx& operator+=(unsigned long l);
friend wxULongLongWx operator+(unsigned long l, const wxULongLongWx& ull)
{ return ull + l; }
// pre increment operator
wxULongLongWx& operator++();
@ -931,6 +979,13 @@ public:
wxLongLongWx operator-(const wxULongLongWx& ll) const;
wxULongLongWx& operator-=(const wxULongLongWx& ll);
friend wxLongLongWx operator-(unsigned long l, const wxULongLongWx& ull)
{
const wxULongLongWx ret = wxULongLongWx(l) - ull;
return wxLongLongWx((wxInt32)ret.GetHi(),ret.GetLo());
}
// pre decrement operator
wxULongLongWx& operator--();
@ -977,6 +1032,13 @@ public:
bool operator<=(unsigned long l) const { return *this < l || *this == l; }
bool operator>=(unsigned long l) const { return *this > l || *this == l; }
friend bool operator<(unsigned long l, const wxULongLongWx& ull) { return ull > l; }
friend bool operator>(unsigned long l, const wxULongLongWx& ull) { return ull < l; }
friend bool operator<=(unsigned long l, const wxULongLongWx& ull) { return ull >= l; }
friend bool operator>=(unsigned long l, const wxULongLongWx& ull) { return ull <= l; }
friend bool operator==(unsigned long l, const wxULongLongWx& ull) { return ull == l; }
friend bool operator!=(unsigned long l, const wxULongLongWx& ull) { return ull != l; }
// multiplication
wxULongLongWx operator*(const wxULongLongWx& ll) const;
wxULongLongWx& operator*=(const wxULongLongWx& ll);
@ -1011,7 +1073,14 @@ public:
class wxTextOutputStream& operator<<(class wxTextOutputStream&, const wxULongLongWx&);
friend WXDLLIMPEXP_BASE
class wxTextInputStream& operator>>(class wxTextInputStream&, wxULongLongWx&);
#endif
#if wxUSE_LONGLONG_NATIVE
friend WXDLLIMPEXP_BASE
class wxTextOutputStream &operator<<(class wxTextOutputStream &stream, wxULongLong_t value);
friend WXDLLIMPEXP_BASE
class wxTextInputStream &operator>>(class wxTextInputStream &stream, wxULongLong_t &value);
#endif // wxUSE_LONGLONG_NATIVE
#endif // wxUSE_STREAMS
private:
// long is at least 32 bits, so represent our 64bit number as 2 longs
@ -1031,48 +1100,6 @@ private:
#endif // wxUSE_LONGLONG_WX
// ----------------------------------------------------------------------------
// binary operators
// ----------------------------------------------------------------------------
inline bool operator<(long l, const wxLongLong& ll) { return ll > l; }
inline bool operator>(long l, const wxLongLong& ll) { return ll < l; }
inline bool operator<=(long l, const wxLongLong& ll) { return ll >= l; }
inline bool operator>=(long l, const wxLongLong& ll) { return ll <= l; }
inline bool operator==(long l, const wxLongLong& ll) { return ll == l; }
inline bool operator!=(long l, const wxLongLong& ll) { return ll != l; }
inline wxLongLong operator+(long l, const wxLongLong& ll) { return ll + l; }
inline wxLongLong operator-(long l, const wxLongLong& ll)
{
return wxLongLong(l) - ll;
}
inline bool operator<(unsigned long l, const wxULongLong& ull) { return ull > l; }
inline bool operator>(unsigned long l, const wxULongLong& ull) { return ull < l; }
inline bool operator<=(unsigned long l, const wxULongLong& ull) { return ull >= l; }
inline bool operator>=(unsigned long l, const wxULongLong& ull) { return ull <= l; }
inline bool operator==(unsigned long l, const wxULongLong& ull) { return ull == l; }
inline bool operator!=(unsigned long l, const wxULongLong& ull) { return ull != l; }
inline wxULongLong operator+(unsigned long l, const wxULongLong& ull) { return ull + l; }
inline wxLongLong operator-(unsigned long l, const wxULongLong& ull)
{
const wxULongLong ret = wxULongLong(l) - ull;
return wxLongLong((wxInt32)ret.GetHi(),ret.GetLo());
}
#if wxUSE_LONGLONG_NATIVE && wxUSE_STREAMS
WXDLLIMPEXP_BASE class wxTextOutputStream &operator<<(class wxTextOutputStream &stream, wxULongLong_t value);
WXDLLIMPEXP_BASE class wxTextOutputStream &operator<<(class wxTextOutputStream &stream, wxLongLong_t value);
WXDLLIMPEXP_BASE class wxTextInputStream &operator>>(class wxTextInputStream &stream, wxULongLong_t &value);
WXDLLIMPEXP_BASE class wxTextInputStream &operator>>(class wxTextInputStream &stream, wxLongLong_t &value);
#endif
// ----------------------------------------------------------------------------
// Specialize numeric_limits<> for our long long wrapper classes.
// ----------------------------------------------------------------------------

View file

@ -157,6 +157,14 @@ public:
int depth = wxBITMAP_SCREEN_DEPTH)
{ return CreateWithDIPSize(wxSize(width, height), scale, depth); }
bool CreateWithLogicalSize(const wxSize& sz,
double scale,
int depth = wxBITMAP_SCREEN_DEPTH);
bool CreateWithLogicalSize(int width, int height,
double scale,
int depth = wxBITMAP_SCREEN_DEPTH)
{ return CreateWithLogicalSize(wxSize(width, height), scale, depth); }
virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette *cmap = nullptr) const;

View file

@ -56,6 +56,9 @@ public:
virtual void DoGetSize(int *width, int *height) const override;
static bool
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return true; }
protected:
void InitDC();

View file

@ -19,6 +19,7 @@ class wxFileDialogMSWData;
class WXDLLIMPEXP_CORE wxFileDialog: public wxFileDialogBase
{
public:
wxFileDialog() = default;
wxFileDialog(wxWindow *parent,
const wxString& message = wxASCII_STR(wxFileSelectorPromptStr),
const wxString& defaultDir = wxEmptyString,
@ -78,7 +79,7 @@ private:
// Extra data, possibly null if not needed, use MSWData() to access it if
// it should be created on demand.
wxFileDialogMSWData* m_data;
wxFileDialogMSWData* m_data = nullptr;
wxDECLARE_DYNAMIC_CLASS(wxFileDialog);

View file

@ -77,6 +77,8 @@ public:
// ctors, assignment operators...), but it's ok to have such function
void CopyFromBitmap(const wxBitmap& bmp);
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxIcon, WXDLLIMPEXP_CORE);
protected:
virtual wxGDIImageRefData *CreateData() const override
{

View file

@ -1334,7 +1334,7 @@
// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
// set to 1 and, under Windows, also to add opengl32.lib and glu32.lib to the
// set to 1 and, under Windows, also to add opengl32.lib to the
// list of libraries used to link your application when linking to wxWidgets
// statically (although this is done implicitly for Microsoft Visual C++ users).
//

View file

@ -221,7 +221,7 @@ public :
virtual void controlTextDidChange();
virtual void AdjustClippingView(wxScrollBar* horizontal, wxScrollBar* vertical) override;
virtual void UseClippingView(bool clip) override;
virtual void UseClippingView() override;
virtual WXWidget GetContainer() const override { return m_osxClipView ? m_osxClipView : m_osxView; }
protected:

View file

@ -368,7 +368,7 @@ public :
// scrolling views need a clip subview that acts as parent for native children
// (except for the scollbars) which are children of the view itself
virtual void AdjustClippingView(wxScrollBar* horizontal, wxScrollBar* vertical);
virtual void UseClippingView(bool clip);
virtual void UseClippingView();
// returns native view which acts as a parent for native children
virtual WXWidget GetContainer() const;

View file

@ -54,6 +54,9 @@ public:
wxClientDCImpl( wxDC *owner, wxWindow *window );
virtual ~wxClientDCImpl();
static bool
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return false; }
private:
wxDECLARE_CLASS(wxClientDCImpl);
wxDECLARE_NO_COPY_CLASS(wxClientDCImpl);

View file

@ -1341,7 +1341,7 @@
// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
// set to 1 and, under Windows, also to add opengl32.lib and glu32.lib to the
// set to 1 and, under Windows, also to add opengl32.lib to the
// list of libraries used to link your application when linking to wxWidgets
// statically (although this is done implicitly for Microsoft Visual C++ users).
//

View file

@ -224,7 +224,7 @@ public:
// returns true if children have to clipped to the content area
// (e.g., scrolled windows)
bool MacClipChildren() const { return m_clipChildren ; }
void MacSetClipChildren( bool clip );
void MacSetClipChildren();
// returns true if the grandchildren need to be clipped to the children's content area
// (e.g., splitter windows)

View file

@ -133,6 +133,8 @@ extern WXDLLIMPEXP_DATA_CORE(wxPenList*) wxThePenList;
// to compile without warnings which it would otherwise provoke from some
// compilers as it compares elements of different enums
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxPENSTYLE_XXX constants")
inline bool operator==(wxPenStyle s, wxDeprecatedGUIConstants t)
{
@ -145,4 +147,6 @@ inline bool operator!=(wxPenStyle s, wxDeprecatedGUIConstants t)
return static_cast<int>(s) != static_cast<int>(t);
}
#endif // WXWIN_COMPATIBILITY_3_2
#endif // _WX_PEN_H_BASE_

View file

@ -455,6 +455,9 @@
# ifndef MAC_OS_X_VERSION_10_16
# define MAC_OS_X_VERSION_10_16 101600
# endif
/*
Note that since macOS 11 there is no more "X" in the names.
*/
# ifndef MAC_OS_VERSION_11_0
# define MAC_OS_VERSION_11_0 110000
# endif

View file

@ -21,6 +21,8 @@
#elif defined(__WXGTK3__)
#define wxHAS_NATIVE_OVERLAY 1
#define wxHAS_GENERIC_OVERLAY 1
#elif defined(__WXQT__)
#define wxHAS_NATIVE_OVERLAY 1
#else
#define wxHAS_GENERIC_OVERLAY 1
#endif

View file

@ -113,6 +113,8 @@ public:
Init( cpv.m_type, cpv.m_colour );
}
wxDECLARE_VARIANT_OBJECT_EXPORTED(wxColourPropertyValue, WXDLLIMPEXP_PROPGRID);
private:
wxDECLARE_DYNAMIC_CLASS(wxColourPropertyValue);
};
@ -121,8 +123,6 @@ private:
bool WXDLLIMPEXP_PROPGRID
operator==(const wxColourPropertyValue&, const wxColourPropertyValue&);
DECLARE_VARIANT_OBJECT_EXPORTED(wxColourPropertyValue, WXDLLIMPEXP_PROPGRID)
// -----------------------------------------------------------------------
// Property representing wxFont.
@ -136,7 +136,16 @@ public:
const wxFont& value = wxFont());
virtual ~wxFontProperty() = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual wxVariant ChildChanged( wxVariant& thisValue,
int childIndex,
wxVariant& childValue ) const override;
@ -150,8 +159,8 @@ protected:
#if WXWIN_COMPATIBILITY_3_2
// If set, then match from list is searched for a custom colour.
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_TRANSLATE_CUSTOM is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_TRANSLATE_CUSTOM = wxPG_PROP_RESERVED_1;
wxDEPRECATED_MSG("wxPG_PROP_TRANSLATE_CUSTOM is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_TRANSLATE_CUSTOM = wxPGPropertyFlags::Reserved_1;
#endif // WXWIN_COMPATIBILITY_3_2
// Has dropdown list of wxWidgets system colours. Value used is
@ -168,23 +177,60 @@ public:
virtual ~wxSystemColourProperty() = default;
virtual void OnSetValue() override;
virtual bool IntToValue(wxVariant& variant,
int number,
int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& variant, int number,
int flags) const override
{
m_oldIntToValueCalled = true;
return IntToValue(variant, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& variant, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
// Override in derived class to customize how colours are printed as
// strings.
virtual wxString ColourToString( const wxColour& col, int index,
int argFlags = 0 ) const;
#if WXWIN_COMPATIBILITY_3_2
mutable bool m_oldColourToStringCalled = false;
wxString ColourToStringWithCheck(const wxColour& col, int index,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("use ColourToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ColourToString(const wxColour& col, int index,
int flags) const
{
m_oldColourToStringCalled = true;
return ColourToString(col, index, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ColourToString(const wxColour& col, int index,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Returns index of entry that triggers colour picker dialog
// (default is last).
virtual int GetCustomColourIndex() const;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool OnEvent( wxPropertyGrid* propgrid,
wxWindow* primary, wxEvent& event ) override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
@ -240,7 +286,16 @@ public:
const wxColour& value = *wxWHITE );
virtual ~wxColourProperty() = default;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual wxColour GetColour( int index ) const override;
protected:
@ -262,7 +317,16 @@ class WXDLLIMPEXP_PROPGRID wxCursorProperty : public wxEnumProperty
int value = 0 );
virtual ~wxCursorProperty() = default;
virtual wxString ValueToString(wxVariant& value, int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual wxSize OnMeasureImage( int item ) const override;
virtual void OnCustomPaint( wxDC& dc,
const wxRect& rect, wxPGPaintData& paintdata ) override;
@ -332,10 +396,27 @@ public:
virtual ~wxMultiChoiceProperty() = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue(wxVariant& variant,
const wxString& text,
int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
wxArrayInt GetValueAsArrayInt() const
@ -382,10 +463,27 @@ public:
virtual ~wxDateProperty() = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue(wxVariant& variant,
const wxString& text,
int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;

View file

@ -188,31 +188,29 @@ wxDECLARE_EVENT(wxEVT_PG_COLS_RESIZED, wxPropertyGridEvent);
// Flags used only internally
// wxBoolProperty, wxFlagsProperty specific flags
constexpr wxPGPropertyFlags wxPG_PROP_USE_CHECKBOX = wxPG_PROP_RESERVED_1;
constexpr wxPGPropertyFlags wxPGPropertyFlags_UseCheckBox = wxPGPropertyFlags::Reserved_1;
// DCC = Double Click Cycles
constexpr wxPGPropertyFlags wxPG_PROP_USE_DCC = wxPG_PROP_RESERVED_2;
constexpr wxPGPropertyFlags wxPGPropertyFlags_UseDCC = wxPGPropertyFlags::Reserved_2;
// wxStringProperty flag
constexpr wxPGPropertyFlags wxPG_PROP_PASSWORD = wxPG_PROP_RESERVED_2;
constexpr wxPGPropertyFlags wxPGPropertyFlags_Password = wxPGPropertyFlags::Reserved_2;
#if !WXWIN_COMPATIBILITY_3_2
// wxColourProperty flag - if set, then match from list is searched for a custom colour.
constexpr wxPGPropertyFlags wxPG_PROP_TRANSLATE_CUSTOM = wxPG_PROP_RESERVED_1;
constexpr wxPGPropertyFlags wxPGPropertyFlags_TranslateCustom = wxPGPropertyFlags::Reserved_1;
// wxCursorProperty, wxSystemColourProperty - If set, then selection of choices is static
// and should not be changed (i.e. returns nullptr in GetPropertyChoices).
constexpr wxPGPropertyFlags wxPG_PROP_STATIC_CHOICES = wxPG_PROP_RESERVED_1;
constexpr wxPGPropertyFlags wxPGPropertyFlags_StaticChoices = wxPGPropertyFlags::Reserved_1;
// wxSystemColourProperty - wxEnumProperty based classes cannot use wxPG_PROP_RESERVED_1
constexpr wxPGPropertyFlags wxPG_PROP_HIDE_CUSTOM_COLOUR = wxPG_PROP_RESERVED_2;
constexpr wxPGPropertyFlags wxPG_PROP_COLOUR_HAS_ALPHA = wxPG_PROP_RESERVED_3;
// wxSystemColourProperty - wxEnumProperty based classes cannot use wxPGPropertyFlags::Reserved_1
constexpr wxPGPropertyFlags wxPGPropertyFlags_HideCustomColour = wxPGPropertyFlags::Reserved_2;
constexpr wxPGPropertyFlags wxPGPropertyFlags_ColourHasAlpha = wxPGPropertyFlags::Reserved_3;
// wxFileProperty - if set, full path is shown in wxFileProperty.
constexpr wxPGPropertyFlags wxPG_PROP_SHOW_FULL_FILENAME = wxPG_PROP_RESERVED_1;
constexpr wxPGPropertyFlags wxPGPropertyFlags_ShowFullFileName = wxPGPropertyFlags::Reserved_1;
// wxLongStringProperty - flag used to mark that edit button
// should be enabled even in the read-only mode.
constexpr wxPGPropertyFlags wxPG_PROP_ACTIVE_BTN = wxPG_PROP_RESERVED_3;
#endif // !WXWIN_COMPATIBILITY_3_2
constexpr wxPGPropertyFlags wxPGPropertyFlags_ActiveButton = wxPGPropertyFlags::Reserved_3;
#endif // _WX_PROPGRID_PRIVATE_H_

View file

@ -304,129 +304,229 @@ protected:
std::unordered_map<wxString, wxVariantData*> m_map;
};
// -----------------------------------------------------------------------
enum wxPGPropertyFlags
enum class wxPGPropertyFlags : int
{
// No flags.
Null = 0,
// Indicates bold font.
wxPG_PROP_MODIFIED = 0x0001,
// Indicates bold font.
Modified = 0x0001,
// Disables ('greyed' text and editor does not activate) property.
wxPG_PROP_DISABLED = 0x0002,
// Disables ('greyed' text and editor does not activate) property.
Disabled = 0x0002,
// Hider button will hide this property.
wxPG_PROP_HIDDEN = 0x0004,
// Hider button will hide this property.
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,
// 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.
CustomImage = 0x0008,
// Do not create text based editor for this property (but button-triggered
// dialog and choice are ok).
wxPG_PROP_NOEDITOR = 0x0010,
// Do not create text based editor for this property (but button-triggered
// dialog and choice are ok).
NoEditor = 0x0010,
// Property is collapsed, ie. its children are hidden.
wxPG_PROP_COLLAPSED = 0x0020,
// Property is collapsed, ie. it's children are hidden.
Collapsed = 0x0020,
// If property is selected, then indicates that validation failed for pending
// value.
// If property is not selected, that indicates that the actual property
// value has failed validation (NB: this behaviour is not currently supported,
// but may be used in future).
wxPG_PROP_INVALID_VALUE = 0x0040,
// If property is selected, then indicates that validation failed for pending
// value.
// If property is not selected, that indicates that the actual property
// value has failed validation (NB: this behaviour is not currently supported,
// but may be used in future).
InvalidValue = 0x0040,
// 0x0080,
// 0x0080,
// Switched via SetWasModified(). Temporary flag - only used when
// setting/changing property value.
wxPG_PROP_WAS_MODIFIED = 0x0200,
// Switched via SetWasModified(). Temporary flag - only used when
// setting/changing property value.
WasModified = 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 private, and should be
// "invisible" to the application.
Aggregate = 0x0400,
// If set, then child properties (if any) are copies and should not
// be deleted in dtor.
wxPG_PROP_CHILDREN_ARE_COPIES = 0x0800,
// If set, then child properties (if any) are copies and should not
// be deleted in dtor.
ChildrenAreCopies = 0x0800,
// Classifies this item as a non-category.
// Used for faster item type identification.
wxPG_PROP_PROPERTY = 0x1000,
// Classifies this item as a non-category.
// Used for faster item type identification.
Property = 0x1000,
// Classifies this item as a category.
// Used for faster item type identification.
wxPG_PROP_CATEGORY = 0x2000,
// Classifies this item as a category.
// Used for faster item type identification.
Category = 0x2000,
// Classifies this item as a property that has children,
//but is not aggregate (i.e. children are not private).
wxPG_PROP_MISC_PARENT = 0x4000,
// Classifies this item as a property that has children,
//but is not aggregate (i.e. children are not private).
MiscParent = 0x4000,
// Property is read-only. Editor is still created for wxTextCtrl-based
// property editors. For others, editor is not usually created because
// they do implement wxTE_READONLY style or equivalent.
wxPG_PROP_READONLY = 0x8000,
// Property is read-only. Editor is still created for wxTextCtrl-based
// property editors. For others, editor is not usually created because
// they do implement wxTE_READONLY style or equivalent.
ReadOnly = 0x8000,
//
// NB: FLAGS ABOVE 0x8000 CANNOT BE USED WITH PROPERTY ITERATORS
//
//
// NB: FLAGS ABOVE 0x8000 CANNOT BE USED WITH PROPERTY ITERATORS
//
// Property's value is composed from values of child properties.
// This flag cannot be used with property iterators.
wxPG_PROP_COMPOSED_VALUE = 0x00010000,
// Property's value is composed from values of child properties.
// This flag cannot be used with property iterators.
ComposedValue = 0x00010000,
// Common value of property is selectable in editor.
// This flag cannot be used with property iterators.
wxPG_PROP_USES_COMMON_VALUE = 0x00020000,
// Common value of property is selectable in editor.
// This flag cannot be used with property iterators.
UsesCommonValue = 0x00020000,
// Property can be set to unspecified value via editor.
// Currently, this applies to following properties:
// - wxIntProperty, wxUIntProperty, wxFloatProperty, wxEditEnumProperty:
// Clear the text field
// This flag cannot be used with property iterators.
// See wxPGProperty::SetAutoUnspecified().
wxPG_PROP_AUTO_UNSPECIFIED = 0x00040000,
// Property can be set to unspecified value via editor.
// Currently, this applxPGies to following properties:
// - wxIntProperty, wxUIntProperty, wxFloatProperty, wxEditEnumProperty:
// Clear the text field
// This flag cannot be used with property iterators.
// See wxPGProperty::SetAutoUnspecified().
AutoUnspecified = 0x00040000,
// For internal use only.
wxPG_PROP_RESERVED_1 = 0x00080000,
// Indicates that the property is being deleted and should be ignored.
BeingDeleted = 0x00080000,
// For internal use only.
wxPG_PROP_RESERVED_2 = 0x00100000,
// If set, full path is shown in wxFileProperty.
ShowFullFileName = 0x00100000,
// Indicates that the property is being deleted and should be ignored.
wxPG_PROP_BEING_DELETED = 0x00200000,
// For internal use only.
Reserved_1 = 0x10000000,
// For internal use only.
wxPG_PROP_RESERVED_3 = 0x00400000
// For internal use only.
Reserved_2 = 0x20000000,
// For internal use only.
Reserved_3 = 0x40000000,
// Topmost flag.
Max = ShowFullFileName,
// Property with children must have one of these set, otherwise iterators
// will not work correctly.
// Code should automatically take care of this, however.
ParentalFlags = Aggregate | Category | MiscParent,
// Combination of flags that can be stored by GetFlagsAsString
StringStoredFlags = Disabled | Hidden | NoEditor | Collapsed
};
constexpr wxPGPropertyFlags operator|(wxPGPropertyFlags a, wxPGPropertyFlags b)
{
return static_cast<wxPGPropertyFlags>(static_cast<int>(a) | static_cast<int>(b));
}
inline wxPGPropertyFlags operator|=(wxPGPropertyFlags & a, wxPGPropertyFlags b)
{
return a = a | b;
}
constexpr wxPGPropertyFlags operator&(wxPGPropertyFlags a, wxPGPropertyFlags b)
{
return static_cast<wxPGPropertyFlags>(static_cast<int>(a) & static_cast<int>(b));
}
inline wxPGPropertyFlags operator&=(wxPGPropertyFlags & a, wxPGPropertyFlags b)
{
return a = a & b;
}
constexpr wxPGPropertyFlags operator^(wxPGPropertyFlags a, wxPGPropertyFlags b)
{
return static_cast<wxPGPropertyFlags>(static_cast<int>(a) ^ static_cast<int>(b));
}
constexpr wxPGPropertyFlags operator~(wxPGPropertyFlags a)
{
return static_cast<wxPGPropertyFlags>(~static_cast<int>(a));
}
constexpr bool operator!(wxPGPropertyFlags a)
{
return static_cast<int>(a) == 0;
}
// We need these operators with int arguments for interoperability
// with wxPG_ITERATOR_FLAGS as plain enumeration).
// =====
constexpr int operator<<(wxPGPropertyFlags a, int n)
{
return static_cast<int>(a) << n;
}
constexpr int operator|(wxPGPropertyFlags a, int b)
{
return static_cast<int>(a) | b;
}
constexpr int operator|(int a, wxPGPropertyFlags b)
{
return a | static_cast<int>(b);
}
constexpr int operator&(int a, wxPGPropertyFlags b)
{
return a & static_cast<int>(b);
}
// =====
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxPGPropertyFlags::Modified instead")
constexpr wxPGPropertyFlags wxPG_PROP_MODIFIED = wxPGPropertyFlags::Modified;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Disabled instead")
constexpr wxPGPropertyFlags wxPG_PROP_DISABLED = wxPGPropertyFlags::Disabled;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Hidden instead")
constexpr wxPGPropertyFlags wxPG_PROP_HIDDEN = wxPGPropertyFlags::Hidden;
wxDEPRECATED_MSG("use wxPGPropertyFlags::CustomImage instead")
constexpr wxPGPropertyFlags wxPG_PROP_CUSTOMIMAGE = wxPGPropertyFlags::CustomImage;
wxDEPRECATED_MSG("use wxPGPropertyFlags::NoEditor instead")
constexpr wxPGPropertyFlags wxPG_PROP_NOEDITOR = wxPGPropertyFlags::NoEditor;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Collapsed instead")
constexpr wxPGPropertyFlags wxPG_PROP_COLLAPSED = wxPGPropertyFlags::Collapsed;
wxDEPRECATED_MSG("use wxPGPropertyFlags::InvalidValue instead")
constexpr wxPGPropertyFlags wxPG_PROP_INVALID_VALUE = wxPGPropertyFlags::InvalidValue;
wxDEPRECATED_MSG("use wxPGPropertyFlags::WasModified instead")
constexpr wxPGPropertyFlags wxPG_PROP_WAS_MODIFIED = wxPGPropertyFlags::WasModified;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Aggregate instead")
constexpr wxPGPropertyFlags wxPG_PROP_AGGREGATE = wxPGPropertyFlags::Aggregate;
wxDEPRECATED_MSG("use wxPGPropertyFlags::ChildrenAreCopies instead")
constexpr wxPGPropertyFlags wxPG_PROP_CHILDREN_ARE_COPIES = wxPGPropertyFlags::ChildrenAreCopies;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Property instead")
constexpr wxPGPropertyFlags wxPG_PROP_PROPERTY = wxPGPropertyFlags::Property;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Category instead")
constexpr wxPGPropertyFlags wxPG_PROP_CATEGORY = wxPGPropertyFlags::Category;
wxDEPRECATED_MSG("use wxPGPropertyFlags::MiscParent instead")
constexpr wxPGPropertyFlags wxPG_PROP_MISC_PARENT = wxPGPropertyFlags::MiscParent;
wxDEPRECATED_MSG("use wxPGPropertyFlags::ReadOnly instead")
constexpr wxPGPropertyFlags wxPG_PROP_READONLY = wxPGPropertyFlags::ReadOnly;
wxDEPRECATED_MSG("use wxPGPropertyFlags::ComposedValue instead")
constexpr wxPGPropertyFlags wxPG_PROP_COMPOSED_VALUE = wxPGPropertyFlags::ComposedValue;
wxDEPRECATED_MSG("use wxPGPropertyFlags::UsesCommonValue instead")
constexpr wxPGPropertyFlags wxPG_PROP_USES_COMMON_VALUE = wxPGPropertyFlags::UsesCommonValue;
wxDEPRECATED_MSG("use wxPGPropertyFlags::AutoUnspecified instead")
constexpr wxPGPropertyFlags wxPG_PROP_AUTO_UNSPECIFIED = wxPGPropertyFlags::AutoUnspecified;
wxDEPRECATED_MSG("use wxPGPropertyFlags::BeingDeleted instead")
constexpr wxPGPropertyFlags wxPG_PROP_BEING_DELETED = wxPGPropertyFlags::BeingDeleted;
wxDEPRECATED_MSG("use wxPGPropertyFlags::ParentalFlags instead")
constexpr wxPGPropertyFlags wxPG_PROP_PARENTAL_FLAGS = wxPGPropertyFlags::ParentalFlags;
wxDEPRECATED_MSG("use wxPGPropertyFlags::StringStoredFlags instead")
constexpr wxPGPropertyFlags wxPG_STRING_STORED_FLAGS = wxPGPropertyFlags::StringStoredFlags;
wxDEPRECATED_MSG("use wxPGPropertyFlags::Max instead")
constexpr wxPGPropertyFlags wxPG_PROP_MAX = wxPGPropertyFlags::Max;
// Indicates bits usable by derived properties.
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_CLASS_SPECIFIC_1 in intended for internal use only.")
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_1 = wxPG_PROP_RESERVED_1;
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_1 = wxPGPropertyFlags::Reserved_1;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_CLASS_SPECIFIC_2 in intended for internal use only.")
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_2 = wxPG_PROP_RESERVED_2;
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_2 = wxPGPropertyFlags::Reserved_2;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_CLASS_SPECIFIC_3 in intended for internal use only.")
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_3 = wxPG_PROP_RESERVED_3;
constexpr wxPGPropertyFlags wxPG_PROP_CLASS_SPECIFIC_3 = wxPGPropertyFlags::Reserved_3;
#endif // WXWIN_COMPATIBILITY_3_2
// Topmost flag.
constexpr wxPGPropertyFlags 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 \
((wxPGPropertyFlags)(wxPG_PROP_AGGREGATE | \
wxPG_PROP_CATEGORY | \
wxPG_PROP_MISC_PARENT))
// 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)
// -----------------------------------------------------------------------
// Helpers to mark macros as deprecated
@ -729,10 +829,10 @@ public:
// Simple interface constructor.
wxPGChoices( wxPGChoicesData* data )
: m_data(data)
{
wxCHECK_RET(data, "Data pointer cannot be null");
m_data = data;
data->IncRef();
m_data->IncRef();
}
// Destructor.
@ -950,7 +1050,12 @@ class WXDLLIMPEXP_PROPGRID wxPGProperty : public wxObject
wxDECLARE_ABSTRACT_CLASS(wxPGProperty);
public:
#if WXWIN_COMPATIBILITY_3_0
typedef wxUint32 FlagType;
#elif WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxPGPropertyFlags type instead")
typedef wxUint32 FlagType;
#endif // WXWIN_COMPATIBILITY_3_0, WXWIN_COMPATIBILITY_3_2
// Virtual destructor.
// It is customary for derived properties to implement this.
@ -983,9 +1088,9 @@ public:
// null wxVariant in normal cases). Translated value must be assigned
// back to it.
// text - Text to be translated into variant.
// argFlags - If wxPG_FULL_VALUE is set, returns complete, storable value instead
// flags - If wxPGPropValFormatFlags::FullValue 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
// If wxPGPropValFormatFlags::CompositeFragment is set, text is interpreted as a part of
// composite property string value (as generated by ValueToString()
// called with this same flag).
// Returns true if resulting wxVariant value was different.
@ -994,9 +1099,19 @@ public:
// You might want to take into account that m_value is Null variant
// if property value is unspecified (which is usually only case if
// you explicitly enabled that sort behaviour).
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const;
#if WXWIN_COMPATIBILITY_3_2
mutable bool m_oldStringToValueCalled = false;
bool StringToValueWithCheck(wxVariant& variant, const wxString& text, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue( wxVariant& variant, const wxString& text,
int flags ) const
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Converts integer (possibly a choice selection) into wxVariant value
// appropriate for this property.
@ -1004,7 +1119,7 @@ public:
// variant - On function entry this is the old value (should not be null wxVariant
// in normal cases). Translated value must be assigned back to it.
// number - Integer to be translated into variant.
// argFlags - If wxPG_FULL_VALUE is set, returns complete, storable value
// flags - If wxPGPropValFormatFlags::FullValue is set, returns complete, storable value
// instead of displayable one.
// Returns true if resulting wxVariant value was different.
// Remarks
@ -1017,36 +1132,69 @@ public:
// - You might want to take into account that m_value is Null variant
// if property value is unspecified (which is usually only case if
// you explicitly enabled that sort behaviour).
virtual bool IntToValue( wxVariant& value,
int number,
int argFlags = 0 ) const;
#if WXWIN_COMPATIBILITY_3_2
mutable bool m_oldIntToValueCalled = false;
bool IntToValueWithCheck(wxVariant& variant, int number, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& value, int number, int flags) const
{
m_oldIntToValueCalled = true;
return IntToValue(value, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& value, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Converts property value into a text representation.
// Parameters:
// value - Value to be converted.
// argFlags - If 0 (default value), then displayed string is returned.
// If wxPG_FULL_VALUE is set, returns complete, storable string value
// instead of displayable. If wxPG_EDITABLE_VALUE is set, returns
// flags - If wxPGPropValFormatFlags::Null (default value), then displayed string is returned.
// If wxPGPropValFormatFlags::FullValue is set, returns complete, storable string value
// instead of displayable. If wxPGPropValFormatFlags::EditableValue is set, returns
// string value that must be editable in textctrl. If
// wxPG_COMPOSITE_FRAGMENT is set, returns text that is appropriate to
// wxPGPropValFormatFlags::CompositeFragment is set, returns text that is appropriate to
// display as a part of string property's composite text
// representation.
// Default implementation calls GenerateComposedValue().
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
#if WXWIN_COMPATIBILITY_3_2
mutable bool m_oldValueToStringCalled = false;
wxString ValueToStringWithCheck(wxVariant& variant, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Converts string to a value, and if successful, calls SetValue() on it.
// Default behaviour is to do nothing.
// Returns true if value was changed.
bool SetValueFromString( const wxString& text, int flags = wxPG_PROGRAMMATIC_VALUE );
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use SetValueFromString with 'flags' argument as wxPGPropValFormatFlags")
bool SetValueFromString(const wxString& text, int flags)
{
return SetValueFromString(text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool SetValueFromString(const wxString& text, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::ProgrammaticValue);
// Converts integer to a value, and if successful, calls SetValue() on it.
// Default behaviour is to do nothing.
// Parameters:
// value - Int to get the value from.
// flags - If has wxPG_FULL_VALUE, then the value given is a actual value
// flags - If has wxPGPropValFormatFlags::FullValue, then the value given is a actual value
// and not an index.
// Returns true if value was changed.
bool SetValueFromInt( long value, int flags = 0 );
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use SetValueFromInt with 'flags' argument as wxPGPropValFormatFlags")
bool SetValueFromInt(long value, int flags)
{
return SetValueFromInt(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool SetValueFromInt(long value, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null);
// Returns size of the custom painted image in front of property.
// This method must be overridden to return non-default value if
@ -1197,7 +1345,7 @@ public:
// values of a font).
bool AreChildrenComponents() const
{
return (m_flags & (wxPG_PROP_COMPOSED_VALUE|wxPG_PROP_AGGREGATE)) != 0;
return !!(m_flags & (wxPGPropertyFlags::ComposedValue|wxPGPropertyFlags::Aggregate));
}
// Deletes children of the property.
@ -1219,7 +1367,7 @@ public:
// Common values are disabled by the default for all properties.
void EnableCommonValue( bool enable = true )
{
ChangeFlag(wxPG_PROP_USES_COMMON_VALUE, enable);
ChangeFlag(wxPGPropertyFlags::UsesCommonValue, enable);
}
// Composes text from values of child properties.
@ -1277,18 +1425,28 @@ public:
}
// Returns text representation of property's value.
// argFlags - If 0 (default value), then displayed string is returned.
// If wxPG_FULL_VALUE is set, returns complete, storable string value
// instead of displayable. If wxPG_EDITABLE_VALUE is set, returns
// flags - If wxPGPropValFormatFlags::Null (default value), then displayed string is returned.
// If wxPGPropValFormatFlags::FullValue is set, returns complete, storable string value
// instead of displayable. If wxPGPropValFormatFlags::EditableValue is set, returns
// string value that must be editable in textctrl. If
// wxPG_COMPOSITE_FRAGMENT is set, returns text that is appropriate to
// wxPGPropValFormatFlags::CompositeFragment is set, returns text that is appropriate to
// display as a part of string property's composite text
// representation.
// In older versions, this function used to be overridden to convert
// property's value into a string representation. This function is
// now handled by ValueToString(), and overriding this function now
// will result in run-time assertion failure.
virtual wxString GetValueAsString( int argFlags = 0 ) const;
#if WXWIN_COMPATIBILITY_3_2
mutable bool m_oldGetValueAsString = false;
wxString GetValueAsStringWithCheck(wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("use GetValueAsString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString GetValueAsString(int flags) const
{
m_oldGetValueAsString = true;
return GetValueAsString(static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString GetValueAsString(wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Returns wxPGCell of given column.
// Const version of this member function returns 'default'
@ -1311,7 +1469,12 @@ public:
// Returns property's displayed text.
wxString GetDisplayedString() const
{
return GetValueAsString(0);
#if WXWIN_COMPATIBILITY_3_2
// Special implementation with check if user-overriden obsolete function is still in use
return GetValueAsStringWithCheck(wxPGPropValFormatFlags::Null);
#else
return GetValueAsString(wxPGPropValFormatFlags::Null);
#endif // WXWIN_COMPATIBILITY_3_2 | !WXWIN_COMPATIBILITY_3_2
}
// Returns property's hint text (shown in empty value cell).
@ -1348,25 +1511,35 @@ public:
#if WXWIN_COMPATIBILITY_3_0
// Returns non-zero if property has given flag set.
FlagType HasFlag( wxPGPropertyFlags flag ) const
wxDEPRECATED_MSG("use HasFlag() with 'flag' argument as wxPGPropertyFlags")
FlagType HasFlag( FlagType flag ) const
{
return ( m_flags & flag );
}
#else
// Returns true if property has given flag set.
bool HasFlag(wxPGPropertyFlags flag) const
{
return (m_flags & flag) != 0;
return ( static_cast<FlagType>(m_flags) & flag );
}
#endif
// Returns true if property has given flag set.
bool HasFlag(FlagType flag) const
bool HasFlag(wxPGPropertyFlags flag) const
{
return (m_flags & flag) != 0;
return !!(m_flags & flag);
}
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use HasFlag() with 'flag' argument as wxPGPropertyFlags")
// Returns true if property has given flag set.
bool HasFlag(int flag) const
{
return HasFlag(static_cast<wxPGPropertyFlags>(flag));
}
#endif // WXWIN_COMPATIBILITY_3_2
// Returns true if property has all given flags set.
bool HasFlagsExact(FlagType flags) const
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use HasFlagExact() with 'flags' argument as wxPGPropertyFlags")
bool HasFlagsExact(int flags) const
{
return HasFlagsExact(static_cast<wxPGPropertyFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool HasFlagsExact(wxPGPropertyFlags flags) const
{
return (m_flags & flags) == flags;
}
@ -1385,7 +1558,7 @@ public:
wxDEPRECATED_MSG("Use HasFlag or HasFlagsExact functions instead.")
FlagType GetFlags() const
{
return m_flags;
return static_cast<FlagType>(m_flags);
}
#endif
@ -1425,7 +1598,7 @@ public:
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 (m_flags & wxPG_PROP_CATEGORY) != 0; }
bool IsCategory() const { return !!(m_flags & wxPGPropertyFlags::Category); }
// Returns true if this property is actually a wxRootProperty.
bool IsRoot() const { return (m_parent == nullptr); }
@ -1467,7 +1640,7 @@ public:
// Returns true if containing grid uses wxPG_EX_AUTO_UNSPECIFIED_VALUES.
bool UsesAutoUnspecified() const
{
return (m_flags & wxPG_PROP_AUTO_UNSPECIFIED) != 0;
return !!(m_flags & wxPGPropertyFlags::AutoUnspecified);
}
// Returns bitmap that appears next to value text. Only returns non-null
@ -1492,9 +1665,16 @@ public:
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_'.
// prepended with 'wxPGPropertyFlags'.
// flagmask - String will only be made to include flags combined by this parameter.
wxString GetFlagsAsString( FlagType flagsMask ) const;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use GetFlagsAsString() with 'flags' argument as wxPGPropertyFlags")
wxString GetFlagsAsString( int flagsMask ) const
{
return GetFlagsAsString(static_cast<wxPGPropertyFlags>(flagsMask));
}
#endif // WXWIN_COMPATIBILITY_3_2
wxString GetFlagsAsString(wxPGPropertyFlags flagsMask) const;
// Returns position in parent's array.
unsigned int GetIndexInParent() const
@ -1517,13 +1697,13 @@ public:
// Returns true if property has visible children.
bool IsExpanded() const
{ return (!(m_flags & wxPG_PROP_COLLAPSED) && HasAnyChild()); }
{ return (!(m_flags & wxPGPropertyFlags::Collapsed) && HasAnyChild()); }
// Returns true if all parents expanded.
bool IsVisible() const;
// Returns true if property is enabled.
bool IsEnabled() const { return !(m_flags & wxPG_PROP_DISABLED); }
bool IsEnabled() const { return !(m_flags & wxPGPropertyFlags::Disabled); }
// If property's editor is created this forces its recreation.
// Useful in SetAttribute etc. Returns true if actually did anything.
@ -1549,7 +1729,7 @@ public:
// by default).
void SetAutoUnspecified( bool enable = true )
{
ChangeFlag(wxPG_PROP_AUTO_UNSPECIFIED, enable);
ChangeFlag(wxPGPropertyFlags::AutoUnspecified, enable);
}
// Sets property's background colour.
@ -1624,13 +1804,13 @@ public:
}
// Sets flags from a '|' delimited string. Note that flag names are not
// prepended with 'wxPG_PROP_'.
// prepended with 'wxPGPropertyFlags'.
void SetFlagsFromString( const wxString& str );
// Sets property's "is it modified?" flag. Affects children recursively.
void SetModifiedStatus( bool modified )
{
SetFlagRecursively(wxPG_PROP_MODIFIED, modified);
SetFlagRecursively(wxPGPropertyFlags::Modified, modified);
}
// Call in OnEvent(), OnButtonClick() etc. to change the property value
@ -1671,14 +1851,14 @@ public:
void SetExpanded( bool expanded )
{
ChangeFlag(wxPG_PROP_COLLAPSED, !expanded);
ChangeFlag(wxPGPropertyFlags::Collapsed, !expanded);
}
// Sets or clears given property flag. Mainly for internal use.
// Setting a property flag never has any side-effect, and is
// intended almost exclusively for internal use. So, for
// example, if you want to disable a property, call
// Enable(false) instead of setting wxPG_PROP_DISABLED flag.
// Enable(false) instead of setting wxPGPropertyFlags::Disabled flag.
void ChangeFlag( wxPGPropertyFlags flag, bool set )
{
if ( set )
@ -1707,14 +1887,21 @@ public:
void SetName( const wxString& newName );
// Changes what sort of parent this property is for its children.
// flag - Use one of the following values: wxPG_PROP_MISC_PARENT (for
// generic parents), wxPG_PROP_CATEGORY (for categories), or
// wxPG_PROP_AGGREGATE (for derived property classes with private
// flag - Use one of the following values: wxPGPropertyFlags::MiscParent (for
// generic parents), wxPGPropertyFlags::Category (for categories), or
// wxPGPropertyFlags::Aggregate (for derived property classes with private
// children).
// You generally do not need to call this function.
void SetParentalType( int flag )
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use SetParentalType() with 'flag' argument as wxPGPropertyFlags")
void SetParentalType(int flag)
{
m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS);
SetParentalType(static_cast<wxPGPropertyFlags>(flag));
}
#endif // WXWIN_COMPATIBILITY_3_2
void SetParentalType(wxPGPropertyFlags flag)
{
m_flags &= ~(wxPGPropertyFlags::Property | wxPGPropertyFlags::ParentalFlags);
m_flags |= flag;
}
@ -1781,7 +1968,7 @@ public:
// (i.e. cancel 'true' returned by StringToValue() or IntToValue()).
void SetWasModified( bool set = true )
{
ChangeFlag(wxPG_PROP_WAS_MODIFIED, set);
ChangeFlag(wxPGPropertyFlags::WasModified, set);
}
// Returns property's help or description text.
@ -1801,7 +1988,7 @@ public:
// Adds a private child property. If you use this instead of
// wxPropertyGridInterface::Insert() or
// wxPropertyGridInterface::AppendIn(), then property's parental
// type will automatically be set up to wxPG_PROP_AGGREGATE. In other
// type will automatically be set up to wxPGPropertyFlags::Aggregate. In other
// words, all properties of this property will become private.
void AddPrivateChild( wxPGProperty* prop );
@ -1910,17 +2097,38 @@ protected:
// preparedCell.
// ignoreWithFlags - Properties with any one of these flags are skipped.
// recursively - If true, apply this operation recursively in child properties.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use AdaptiveSetCell() with 'ignoreWithFlags' argument as wxPGPropertyFlags")
void AdaptiveSetCell( unsigned int firstCol,
unsigned int lastCol,
const wxPGCell& preparedCell,
const wxPGCell& srcData,
wxPGCellData* unmodCellData,
FlagType ignoreWithFlags,
bool recursively );
int ignoreWithFlags,
bool recursively )
{
AdaptiveSetCell(firstCol, lastCol, preparedCell, srcData, unmodCellData,
static_cast<wxPGPropertyFlags>(ignoreWithFlags), recursively);
}
#endif // WXWIN_COMPATIBILITY_3_2
void AdaptiveSetCell(unsigned int firstCol,
unsigned int lastCol,
const wxPGCell& preparedCell,
const wxPGCell& srcData,
wxPGCellData* unmodCellData,
wxPGPropertyFlags ignoreWithFlags,
bool recursively);
// Clear cells associated with property.
// recursively - If true, apply this operation recursively in child properties.
void ClearCells(FlagType ignoreWithFlags, bool recursively);
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ClearCells() with 'ignoreWithFlags' argument as wxPGPropertyFlags")
void ClearCells(int ignoreWithFlags, bool recursively)
{
ClearCells(static_cast<wxPGPropertyFlags>(ignoreWithFlags), recursively);
}
#endif // WXWIN_COMPATIBILITY_3_2
void ClearCells(wxPGPropertyFlags ignoreWithFlags, bool recursively);
// Makes sure m_cells has size of column+1 (or more).
void EnsureCells( unsigned int column );
@ -1937,10 +2145,20 @@ protected:
int index = -1,
bool correct_mode = true );
void DoGenerateComposedValue( wxString& text,
int argFlags = wxPG_VALUE_IS_CURRENT,
const wxVariantList* valueOverrides = nullptr,
wxPGHashMapS2S* childResults = nullptr ) const;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use DoGenerateComposedValue with 'flags' argument as wxPGPropValFormatFlags")
void DoGenerateComposedValue(wxString& text, int flags,
const wxVariantList* valueOverrides,
wxPGHashMapS2S* childResults) const
{
DoGenerateComposedValue(text, static_cast<wxPGPropValFormatFlags>(flags),
valueOverrides, childResults);
}
#endif // WXWIN_COMPATIBILITY_3_2
void DoGenerateComposedValue(wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::ValueIsCurrent,
const wxVariantList* valueOverrides = nullptr,
wxPGHashMapS2S* childResults = nullptr) const;
bool DoHide( bool hide, wxPGPropertyValuesFlags flags );
@ -1989,7 +2207,17 @@ protected:
m_flags |= flag;
}
void ClearFlag( FlagType flag ) { m_flags &= ~(flag); }
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ClearFlag() with 'flag' argument as wxPGPropertyFlags")
void ClearFlag( int flag )
{
ClearFlag(static_cast<wxPGPropertyFlags>(flag));
}
#endif // WXWIN_COMPATIBILITY_3_2
void ClearFlag(wxPGPropertyFlags flag)
{
m_flags &= ~(flag);
}
// Called when the property is being removed from the grid and/or
// page state (but *not* when it is also deleted).
@ -2041,7 +2269,7 @@ protected:
// If not -1, then overrides m_value
int m_commonValue;
FlagType m_flags;
wxPGPropertyFlags m_flags;
// Maximum length (for string properties). Could be in some sort of
// wxBaseStringProperty, but currently, for maximum flexibility and
@ -2106,10 +2334,17 @@ public:
wxPGRootProperty( const wxString& name = wxS("<Root>") );
virtual ~wxPGRootProperty() = default;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue( wxVariant&, const wxString&, int ) const override
{
return false;
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue( wxVariant&, const wxString&, wxPGPropValFormatFlags ) const override
{
return false;
}
protected:
};
@ -2132,8 +2367,24 @@ public:
int GetTextExtent( const wxWindow* wnd, const wxFont& font ) const;
virtual wxString ValueToString( wxVariant& value, int argFlags ) const override;
virtual wxString GetValueAsString( int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value, wxPGPropValFormatFlags flags) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use GetValueAsString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString GetValueAsString(int flags) const override
{
m_oldGetValueAsString = true;
return GetValueAsString(static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString GetValueAsString(wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
protected:
void SetTextColIndex( unsigned int colInd )

View file

@ -250,7 +250,7 @@ wxPG_EX_HELP_AS_TOOLTIPS = 0x00010000,
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
// unspecified state. Same as setting wxPGPropertyFlags::AutoUnspecified for
// all properties.
wxPG_EX_AUTO_UNSPECIFIED_VALUES = 0x00200000,
@ -438,7 +438,7 @@ private:
// These are used with wxPropertyGrid::AddActionTrigger() and
// wxPropertyGrid::ClearActionTriggers().
enum class wxPGKeyboardActions
enum class wxPGKeyboardAction
{
#if WXWIN_COMPATIBILITY_3_2
Invalid = 0,
@ -471,22 +471,25 @@ enum class wxPGKeyboardActions
};
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxPGKeyboardActions::Invalid instead")
constexpr wxPGKeyboardActions wxPG_ACTION_INVALID { wxPGKeyboardActions::Invalid };
wxDEPRECATED_MSG("use wxPGKeyboardActions::NextProperty instead")
constexpr wxPGKeyboardActions wxPG_ACTION_NEXT_PROPERTY { wxPGKeyboardActions::NextProperty };
wxDEPRECATED_MSG("use wxPGKeyboardActions::PrevProperty instead")
constexpr wxPGKeyboardActions wxPG_ACTION_PREV_PROPERTY { wxPGKeyboardActions::PrevProperty };
wxDEPRECATED_MSG("use wxPGKeyboardActions::ExpandProperty instead")
constexpr wxPGKeyboardActions wxPG_ACTION_EXPAND_PROPERTY { wxPGKeyboardActions::ExpandProperty };
wxDEPRECATED_MSG("use wxPGKeyboardActions::CollapseProperty instead")
constexpr wxPGKeyboardActions wxPG_ACTION_COLLAPSE_PROPERTY { wxPGKeyboardActions::CollapseProperty };
wxDEPRECATED_MSG("use wxPGKeyboardActions::CancelEdit instead")
constexpr wxPGKeyboardActions wxPG_ACTION_CANCEL_EDIT { wxPGKeyboardActions::CancelEdit };
wxDEPRECATED_MSG("use wxPGKeyboardActions::Edit instead")
constexpr wxPGKeyboardActions wxPG_ACTION_EDIT { wxPGKeyboardActions::Edit };
wxDEPRECATED_MSG("use wxPGKeyboardActions::PressButton instead")
constexpr wxPGKeyboardActions wxPG_ACTION_PRESS_BUTTON { wxPGKeyboardActions::PressButton };
wxDEPRECATED_MSG("use wxPGKeyboardAction type instead")
typedef wxPGKeyboardAction wxPGKeyboardActions;
wxDEPRECATED_MSG("use wxPGKeyboardAction::Invalid instead")
constexpr wxPGKeyboardAction wxPG_ACTION_INVALID { wxPGKeyboardAction::Invalid };
wxDEPRECATED_MSG("use wxPGKeyboardAction::NextProperty instead")
constexpr wxPGKeyboardAction wxPG_ACTION_NEXT_PROPERTY { wxPGKeyboardAction::NextProperty };
wxDEPRECATED_MSG("use wxPGKeyboardAction::PrevProperty instead")
constexpr wxPGKeyboardAction wxPG_ACTION_PREV_PROPERTY { wxPGKeyboardAction::PrevProperty };
wxDEPRECATED_MSG("use wxPGKeyboardAction::ExpandProperty instead")
constexpr wxPGKeyboardAction wxPG_ACTION_EXPAND_PROPERTY { wxPGKeyboardAction::ExpandProperty };
wxDEPRECATED_MSG("use wxPGKeyboardAction::CollapseProperty instead")
constexpr wxPGKeyboardAction wxPG_ACTION_COLLAPSE_PROPERTY { wxPGKeyboardAction::CollapseProperty };
wxDEPRECATED_MSG("use wxPGKeyboardAction::CancelEdit instead")
constexpr wxPGKeyboardAction wxPG_ACTION_CANCEL_EDIT { wxPGKeyboardAction::CancelEdit };
wxDEPRECATED_MSG("use wxPGKeyboardAction::Edit instead")
constexpr wxPGKeyboardAction wxPG_ACTION_EDIT { wxPGKeyboardAction::Edit };
wxDEPRECATED_MSG("use wxPGKeyboardAction::PressButton instead")
constexpr wxPGKeyboardAction wxPG_ACTION_PRESS_BUTTON { wxPGKeyboardAction::PressButton };
#endif // WXWIN_COMPATIBILITY_3_2
// -----------------------------------------------------------------------
@ -585,20 +588,20 @@ public:
// Adds given key combination to trigger given action.
// Here is a sample code to make Enter key press move focus to
// the next property.
// propGrid->AddActionTrigger(wxPGKeyboardActions::NextProperty, WXK_RETURN);
// propGrid->AddActionTrigger(wxPGKeyboardAction::NextProperty, WXK_RETURN);
// propGrid->DedicateKey(WXK_RETURN);
// action - Which action to trigger. See @ref propgrid_keyboard_actions.
// keycode - Which keycode triggers the action.
// modifiers - Which key event modifiers, in addition to keycode, are needed to
// trigger the action.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use AddActionTrigger with 'action' argument as wxPGKeyboardActions")
wxDEPRECATED_MSG("use AddActionTrigger with 'action' argument as wxPGKeyboardAction")
void AddActionTrigger(int action, int keycode, int modifiers)
{
AddActionTrigger(static_cast<wxPGKeyboardActions>(action), keycode, modifiers);
AddActionTrigger(static_cast<wxPGKeyboardAction>(action), keycode, modifiers);
}
#endif // WXWIN_COMPATIBILITY_3_2
void AddActionTrigger(wxPGKeyboardActions action, int keycode, int modifiers = 0);
void AddActionTrigger(wxPGKeyboardAction action, int keycode, int modifiers = 0);
// Dedicates a specific keycode to wxPropertyGrid. This means that such
// key presses will not be redirected to editor controls.
@ -632,13 +635,13 @@ public:
// Clears action triggers for given action.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ClearActionTriggers with wxPGKeyboardActions argument")
wxDEPRECATED_MSG("use ClearActionTriggers with wxPGKeyboardAction argument")
void ClearActionTriggers(int action)
{
ClearActionTriggers(static_cast<wxPGKeyboardActions>(action));
ClearActionTriggers(static_cast<wxPGKeyboardAction>(action));
}
#endif // WXWIN_COMPATIBILITY_3_2
void ClearActionTriggers(wxPGKeyboardActions action);
void ClearActionTriggers(wxPGKeyboardAction action);
// Forces updating the value of property from the editor control.
// Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using
@ -1032,8 +1035,15 @@ public:
// Returns (visual) text representation of the unspecified
// property value.
// argFlags - For internal use only.
wxString GetUnspecifiedValueText( int argFlags = 0 ) const;
// flags - For internal use only.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use GetUnspecifiedValueText with 'flags' argument as wxPGPropValFormatFlags")
wxString GetUnspecifiedValueText(int flags) const
{
return GetUnspecifiedValueText(static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
wxString GetUnspecifiedValueText(wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const;
// Set virtual width for this particular page. Width -1 indicates that the
// virtual width should be disabled.
@ -1300,10 +1310,10 @@ public:
// Called to indicate property and editor has valid value now.
void OnValidationFailureReset( wxPGProperty* property )
{
if ( property && property->HasFlag(wxPG_PROP_INVALID_VALUE) )
if ( property && property->HasFlag(wxPGPropertyFlags::InvalidValue) )
{
DoOnValidationFailureReset(property);
property->ClearFlag(wxPG_PROP_INVALID_VALUE);
property->ClearFlag(wxPGPropertyFlags::InvalidValue);
}
m_validationInfo.ClearFailureMessage();
}
@ -1337,7 +1347,7 @@ public:
wxVariant& invalidValue );
// Override to customize resetting of property validation failure status.
// Property is guaranteed to have flag wxPG_PROP_INVALID_VALUE set.
// Property is guaranteed to have flag wxPGPropertyFlags::InvalidValue set.
virtual void DoOnValidationFailureReset( wxPGProperty* property );
int GetSpacingY() const { return m_spacingy; }
@ -1512,7 +1522,7 @@ protected:
wxPGValidationInfo m_validationInfo;
// Actions and keys that trigger them.
std::unordered_map<int, std::pair<wxPGKeyboardActions, wxPGKeyboardActions>> m_actionTriggers;
std::unordered_map<int, std::pair<wxPGKeyboardAction, wxPGKeyboardAction>> m_actionTriggers;
// Appearance of currently active editor.
wxPGCell m_editorAppearance;
@ -1768,14 +1778,14 @@ protected:
unsigned int bottomItemY,
const wxRect* itemsRect = nullptr );
// Translate wxKeyEvent to wxPGKeyboardActions::XXX
std::pair<wxPGKeyboardActions, wxPGKeyboardActions> KeyEventToActions(const wxKeyEvent& event) const;
// Translate wxKeyEvent to wxPGKeyboardAction::XXX
std::pair<wxPGKeyboardAction, wxPGKeyboardAction> KeyEventToActions(const wxKeyEvent& event) const;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use single-argument function KeyEventToActions(event)")
wxPGKeyboardActions KeyEventToActions(wxKeyEvent &event, wxPGKeyboardActions* pSecond) const;
wxPGKeyboardAction KeyEventToActions(wxKeyEvent &event, wxPGKeyboardAction* pSecond) const;
#endif // WXWIN_COMPATIBILITY_3_2
wxPGKeyboardActions KeyEventToAction(wxKeyEvent& event) const;
wxPGKeyboardAction KeyEventToAction(wxKeyEvent& event) const;
void ImprovedClientToScreen( int* px, int* py ) const;
@ -1869,7 +1879,7 @@ protected:
private:
bool ButtonTriggerKeyTest(wxPGKeyboardActions action, wxKeyEvent& event);
bool ButtonTriggerKeyTest(wxPGKeyboardAction action, wxKeyEvent& event);
wxDECLARE_EVENT_TABLE();
};

View file

@ -212,36 +212,93 @@ constexpr bool operator!=(wxPGPropertyValuesFlags a, int b)
// -----------------------------------------------------------------------
// Misc. argument flags.
enum wxPG_MISC_ARG_FLAGS
// Miscellaneous property value format flags
enum class wxPGPropValFormatFlags : int
{
// No flags.
Null = 0,
// Get/Store full value instead of displayed value.
wxPG_FULL_VALUE = 0x00000001,
FullValue = 0x00000001,
// Perform special action in case of unsuccessful conversion.
wxPG_REPORT_ERROR = 0x00000002,
ReportError = 0x00000002,
wxPG_PROPERTY_SPECIFIC = 0x00000004,
PropertySpecific = 0x00000004,
// Get/Store editable value instead of displayed one (should only be
// different in the case of common values)
wxPG_EDITABLE_VALUE = 0x00000008,
EditableValue = 0x00000008,
// Used when dealing with fragments of composite string value
wxPG_COMPOSITE_FRAGMENT = 0x00000010,
CompositeFragment = 0x00000010,
// Means property for which final string value is for cannot really be
// edited.
wxPG_UNEDITABLE_COMPOSITE_FRAGMENT = 0x00000020,
UneditableCompositeFragment = 0x00000020,
// ValueToString() called from GetValueAsString()
// (guarantees that input wxVariant value is current own value)
wxPG_VALUE_IS_CURRENT = 0x00000040,
ValueIsCurrent = 0x00000040,
// Value is being set programmatically (i.e. not by user)
wxPG_PROGRAMMATIC_VALUE = 0x00000080
ProgrammaticValue = 0x00000080
};
constexpr wxPGPropValFormatFlags operator&(wxPGPropValFormatFlags a, wxPGPropValFormatFlags b)
{
return static_cast<wxPGPropValFormatFlags>(static_cast<int>(a) & static_cast<int>(b));
}
constexpr wxPGPropValFormatFlags operator|(wxPGPropValFormatFlags a, wxPGPropValFormatFlags b)
{
return static_cast<wxPGPropValFormatFlags>(static_cast<int>(a) | static_cast<int>(b));
}
inline wxPGPropValFormatFlags operator|=(wxPGPropValFormatFlags& a, wxPGPropValFormatFlags b)
{
return a = a | b;
}
constexpr bool operator!(wxPGPropValFormatFlags a)
{
return static_cast<int>(a) == 0;
}
#if WXWIN_COMPATIBILITY_3_2
constexpr int operator&(int a, wxPGPropValFormatFlags b)
{
return a & static_cast<int>(b);
}
constexpr int operator|(int a, wxPGPropValFormatFlags b)
{
return a | static_cast<int>(b);
}
inline int operator|=(int& a, wxPGPropValFormatFlags b)
{
return a = a | static_cast<int>(b);
}
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::FullValue instead")
constexpr wxPGPropValFormatFlags wxPG_FULL_VALUE { wxPGPropValFormatFlags::FullValue };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::ReportError instead")
constexpr wxPGPropValFormatFlags wxPG_REPORT_ERROR { wxPGPropValFormatFlags::ReportError };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::PropertySpecific instead")
constexpr wxPGPropValFormatFlags wxPG_PROPERTY_SPECIFIC { wxPGPropValFormatFlags::PropertySpecific };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::EditableValue instead")
constexpr wxPGPropValFormatFlags wxPG_EDITABLE_VALUE { wxPGPropValFormatFlags::EditableValue };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::CompositeFragment instead")
constexpr wxPGPropValFormatFlags wxPG_COMPOSITE_FRAGMENT { wxPGPropValFormatFlags::CompositeFragment };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::UneditableCompositeFragment instead")
constexpr wxPGPropValFormatFlags wxPG_UNEDITABLE_COMPOSITE_FRAGMENT { wxPGPropValFormatFlags::UneditableCompositeFragment };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::ValueIsCurrent instead")
constexpr wxPGPropValFormatFlags wxPG_VALUE_IS_CURRENT { wxPGPropValFormatFlags::ValueIsCurrent };
wxDEPRECATED_MSG("use wxPGPropValFormatFlags::ProgrammaticValue instead")
constexpr wxPGPropValFormatFlags wxPG_PROGRAMMATIC_VALUE { wxPGPropValFormatFlags::ProgrammaticValue };
#endif // WXWIN_COMPATIBILITY_3_2
// -----------------------------------------------------------------------
// wxPGProperty::SetValue() flags

View file

@ -331,7 +331,7 @@ public:
{
wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty)
if ( !p->HasAnyChild() || p->HasFlag(wxPG_PROP_AGGREGATE) )
if ( !p->HasAnyChild() || p->HasFlag(wxPGPropertyFlags::Aggregate) )
return wxNullProperty;
return p->Item(0);
@ -410,12 +410,24 @@ public:
// only properties without given flags are stored.
// flags - Property flags to use.
// iterFlags - Iterator flags to use. Default is everything expect private children.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use GetPropertiesWithFlag() with 'flags' argument as wxPGPropertyFlags")
void GetPropertiesWithFlag( wxArrayPGProperty* targetArr,
wxPGProperty::FlagType flags,
int flags,
bool inverse = false,
int iterFlags = wxPG_ITERATE_PROPERTIES |
wxPG_ITERATE_HIDDEN |
wxPG_ITERATE_CATEGORIES) const;
wxPG_ITERATE_CATEGORIES) const
{
GetPropertiesWithFlag(targetArr, static_cast<wxPGPropertyFlags>(flags), inverse, iterFlags);
}
#endif // WXWIN_COMPATIBILITY_3_2
void GetPropertiesWithFlag(wxArrayPGProperty* targetArr,
wxPGPropertyFlags 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 wxVariant.
wxVariant GetPropertyAttribute( wxPGPropArg id,
@ -652,7 +664,7 @@ public:
bool IsPropertyEnabled( wxPGPropArg id ) const
{
wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false)
return !p->HasFlag(wxPG_PROP_DISABLED);
return !p->HasFlag(wxPGPropertyFlags::Disabled);
}
// Returns true if given property is expanded.
@ -664,11 +676,7 @@ public:
bool IsPropertyModified( wxPGPropArg id ) const
{
wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false)
#if WXWIN_COMPATIBILITY_3_0
return p->HasFlag(wxPG_PROP_MODIFIED)?true:false;
#else
return p->HasFlag(wxPG_PROP_MODIFIED);
#endif
return p->HasFlag(wxPGPropertyFlags::Modified);
}
// Returns true if property is selected.
@ -683,7 +691,7 @@ public:
bool IsPropertyShown( wxPGPropArg id ) const
{
wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false)
return !p->HasFlag(wxPG_PROP_HIDDEN);
return !p->HasFlag(wxPGPropertyFlags::Hidden);
}
// Returns true if property value is set to unspecified.
@ -789,22 +797,22 @@ public:
// Sets an attribute for this property.
// name - Text identifier of attribute. See @ref propgrid_property_attributes.
// value - Value of attribute.
// argFlags - Optional. Use wxPGPropertyValuesFlags::Recurse to set the attribute to child
// flags - Optional. Use wxPGPropertyValuesFlags::Recurse to set the attribute to child
// properties recursively.
// Setting attribute's value to null wxVariant will simply remove it
// from property's set of attributes.
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use SetPropertyAttribute with argFlags argument as wxPGPropertyValuesFlags")
wxDEPRECATED_MSG("use SetPropertyAttribute with 'flags' argument as wxPGPropertyValuesFlags")
void SetPropertyAttribute(wxPGPropArg id, const wxString& attrName,
wxVariant value, long argFlags)
wxVariant value, long flags)
{
DoSetPropertyAttribute(id, attrName, value, static_cast<wxPGPropertyValuesFlags>(argFlags));
DoSetPropertyAttribute(id, attrName, value, static_cast<wxPGPropertyValuesFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
void SetPropertyAttribute(wxPGPropArg id, const wxString& attrName, wxVariant value,
wxPGPropertyValuesFlags argFlags = wxPGPropertyValuesFlags::DontRecurse)
wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse)
{
DoSetPropertyAttribute(id, attrName, value, argFlags);
DoSetPropertyAttribute(id, attrName, value, flags);
}
// Sets property attribute for all applicable properties.
// Be sure to use this method only after all properties have been
@ -1228,7 +1236,7 @@ protected:
// Intermediate version needed due to wxVariant copying inefficiency
void DoSetPropertyAttribute( wxPGPropArg id,
const wxString& name,
wxVariant& value, wxPGPropertyValuesFlags argFlags );
wxVariant& value, wxPGPropertyValuesFlags flags );
// Empty string object to return from member functions returning const
// wxString&.

View file

@ -213,54 +213,54 @@ 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),
wxPG_ITERATE_PROPERTIES = wxPGPropertyFlags::Property |
wxPGPropertyFlags::MiscParent |
wxPGPropertyFlags::Aggregate |
wxPGPropertyFlags::Collapsed |
wxPG_IT_CHILDREN(wxPGPropertyFlags::MiscParent) |
wxPG_IT_CHILDREN(wxPGPropertyFlags::Category),
// Iterate children of collapsed parents, and individual items that are hidden.
wxPG_ITERATE_HIDDEN = wxPG_PROP_HIDDEN |
wxPG_IT_CHILDREN(wxPG_PROP_COLLAPSED),
wxPG_ITERATE_HIDDEN = wxPGPropertyFlags::Hidden |
wxPG_IT_CHILDREN(wxPGPropertyFlags::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_FIXED_CHILDREN = wxPG_IT_CHILDREN(wxPGPropertyFlags::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_CATEGORIES = wxPGPropertyFlags::Category |
wxPG_IT_CHILDREN(wxPGPropertyFlags::Category) |
wxPGPropertyFlags::Collapsed,
wxPG_ITERATE_ALL_PARENTS = wxPG_PROP_MISC_PARENT |
wxPG_PROP_AGGREGATE |
wxPG_PROP_CATEGORY,
wxPG_ITERATE_ALL_PARENTS = static_cast<int>(wxPGPropertyFlags::MiscParent |
wxPGPropertyFlags::Aggregate |
wxPGPropertyFlags::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_FLAGS_ALL = static_cast<int>(wxPGPropertyFlags::Property |
wxPGPropertyFlags::MiscParent |
wxPGPropertyFlags::Aggregate |
wxPGPropertyFlags::Hidden |
wxPGPropertyFlags::Category |
wxPGPropertyFlags::Collapsed),
wxPG_ITERATOR_MASK_OP_ITEM = wxPG_ITERATOR_FLAGS_ALL,
// (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY)
// (wxPGPropertyFlags::MiscParent|wxPGPropertyFlags::Aggregate|wxPGPropertyFlags::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 = static_cast<int>(wxPG_ITERATE_PROPERTIES) |
wxPG_PROP_CATEGORY |
wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE),
wxPG_ITERATE_VISIBLE = wxPG_ITERATE_PROPERTIES |
wxPGPropertyFlags::Category |
wxPG_IT_CHILDREN(wxPGPropertyFlags::Aggregate),
// Iterate all items.
wxPG_ITERATE_ALL = wxPG_ITERATE_VISIBLE |
@ -276,21 +276,21 @@ wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL
};
inline void wxPGCreateIteratorMasks(int flags, wxPGPropertyFlags& itemExMask, wxPGPropertyFlags& parentExMask)
{
itemExMask = static_cast<wxPGPropertyFlags>((flags ^ wxPG_ITERATOR_MASK_OP_ITEM) &
wxPG_ITERATOR_MASK_OP_ITEM & 0xFFFF);
parentExMask = static_cast<wxPGPropertyFlags>(((flags >> 16) ^ wxPG_ITERATOR_MASK_OP_PARENT) &
wxPG_ITERATOR_MASK_OP_PARENT & 0xFFFF);
}
#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->HasFlag(PARENTMASK) && \
PWC->HasAnyChild() \
)
#if WXWIN_COMPATIBILITY_3_2
#ifdef wxPG_MUST_DEPRECATE_MACRO_NAME
#pragma deprecated(wxPG_ITERATOR_CREATE_MASKS)
#endif
#define wxPG_ITERATOR_CREATE_MASKS wxPG_DEPRECATED_MACRO_VALUE(wxPGCreateIteratorMasks,\
"wxPG_ITERATOR_CREATE_MASKS is deprecated. Call wxPGCreateIteratorMasks instead.")
#endif // WXWIN_COMPATIBILITY_3_2
// Base for wxPropertyGridIterator classes.
class WXDLLIMPEXP_PROPGRID wxPropertyGridIteratorBase
@ -337,8 +337,8 @@ private:
wxPGProperty* m_baseParent;
// Masks are used to quickly exclude items
wxPGProperty::FlagType m_itemExMask;
wxPGProperty::FlagType m_parentExMask;
wxPGPropertyFlags m_itemExMask;
wxPGPropertyFlags m_parentExMask;
};
template <typename PROPERTY, typename STATE>
@ -640,7 +640,7 @@ protected:
void DoLimitPropertyEditing(wxPGProperty* p, bool limit = true)
{
p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit);
p->SetFlagRecursively(wxPGPropertyFlags::NoEditor, limit);
}
bool DoSelectProperty(wxPGProperty* p, wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null);
@ -813,7 +813,6 @@ protected:
bool m_dontCenterSplitter;
private:
// Only inits arrays, doesn't migrate things or such.
void InitNonCatMode();
};

View file

@ -99,10 +99,28 @@ public:
const wxString& value = wxString() );
virtual ~wxStringProperty() = default;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue( wxVariant& variant, const wxString& text,
int flags ) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
@ -115,18 +133,27 @@ protected:
// -----------------------------------------------------------------------
// Constants used with NumericValidation<>().
enum wxPGNumericValidationConstants
enum class wxPGNumericValidationMode
{
// Instead of modifying the value, show an error message.
wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE = 0,
ErrorMessage,
// Modify value, but stick with the limitations.
wxPG_PROPERTY_VALIDATION_SATURATE = 1,
Saturate,
// Modify value, wrap around on overflow.
wxPG_PROPERTY_VALIDATION_WRAP = 2
Wrap
};
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use wxPGNumericValidationMode::ErrorMessage instead")
constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE { wxPGNumericValidationMode::ErrorMessage };
wxDEPRECATED_MSG("use wxPGNumericValidationMode::Saturate instead")
constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_SATURATE { wxPGNumericValidationMode::Saturate };
wxDEPRECATED_MSG("use wxPGNumericValidationMode::Wrap instead")
constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_WRAP { wxPGNumericValidationMode::Wrap };
#endif // WXWIN_COMPATIBILITY_3_2
// -----------------------------------------------------------------------
#if wxUSE_VALIDATORS
@ -135,13 +162,22 @@ enum wxPGNumericValidationConstants
class WXDLLIMPEXP_PROPGRID wxNumericPropertyValidator : public wxTextValidator
{
public:
enum NumericType
enum class NumericType
{
Signed = 0,
Signed,
Unsigned,
Float
};
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use NumericType::Signed instead")
static const NumericType Signed = NumericType::Signed;
wxDEPRECATED_MSG("use NumericType::Unsigned instead")
static const NumericType Unsigned = NumericType::Unsigned;
wxDEPRECATED_MSG("use NumericType::Float instead")
static const NumericType Float = NumericType::Float;
#endif // WXWIN_COMPATIBILITY_3_2
wxNumericPropertyValidator( NumericType numericType, int base = 10 );
virtual ~wxNumericPropertyValidator() = default;
virtual bool Validate(wxWindow* parent) override;
@ -164,9 +200,16 @@ public:
bool UseSpinMotion() const { return m_spinMotion; }
// Common validation code - for internal use.
#if WXWIN_COMPATIBILITY_3_2
template<typename T>
wxDEPRECATED_MSG("use DoNumericValidation with 'mode' argument as wxPGNumericValidationMode")
bool DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo,
int mode, T defMin, T defMax) const;
#endif // WXWIN_COMPATIBILITY_3_2
template<typename T>
bool DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo,
wxPGNumericValidationMode mode, T defMin, T defMax) const;
protected:
wxNumericProperty(const wxString& label, const wxString& name);
@ -194,15 +237,39 @@ public:
const wxString& name,
const wxLongLong& value );
#endif
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool ValidateValue( wxVariant& value,
wxPGValidationInfo& validationInfo ) const override;
virtual bool IntToValue( wxVariant& variant,
int number,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& variant, int number, int flags) const override
{
m_oldIntToValueCalled = true;
return IntToValue(variant, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& variant, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
static wxValidator* GetClassValidator();
virtual wxValidator* DoGetValidator() const override;
virtual wxVariant AddSpinStepValue(long stepScale) const override;
@ -213,22 +280,12 @@ private:
static bool DoValidation( const wxNumericProperty* property,
wxLongLong& value,
wxPGValidationInfo* pValidationInfo,
int mode =
wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
#if defined(wxLongLong_t)
static bool DoValidation( const wxNumericProperty* property,
wxLongLong_t& value,
wxPGValidationInfo* pValidationInfo,
int mode =
wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
#endif // wxLongLong_t
wxPGNumericValidationMode = wxPGNumericValidationMode::ErrorMessage);
#endif // wxUSE_LONGLONG
static bool DoValidation(const wxNumericProperty* property,
long& value,
wxPGValidationInfo* pValidationInfo,
int mode =
wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage);
};
// -----------------------------------------------------------------------
@ -248,17 +305,42 @@ public:
const wxString& name,
const wxULongLong& value );
#endif
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
virtual bool ValidateValue( wxVariant& value,
wxPGValidationInfo& validationInfo ) const override;
virtual wxValidator* DoGetValidator () const override;
virtual bool IntToValue( wxVariant& variant,
int number,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& variant, int number,
int flags) const override
{
m_oldIntToValueCalled = true;
return IntToValue(variant, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& variant, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual wxVariant AddSpinStepValue(long stepScale) const override;
protected:
@ -273,18 +355,12 @@ private:
static bool DoValidation(const wxNumericProperty* property,
wxULongLong& value,
wxPGValidationInfo* pValidationInfo,
int mode =wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
#if defined(wxULongLong_t)
static bool DoValidation(const wxNumericProperty* property,
wxULongLong_t& value,
wxPGValidationInfo* pValidationInfo,
int mode =wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
#endif // wxULongLong_t
wxPGNumericValidationMode = wxPGNumericValidationMode::ErrorMessage);
#endif // wxUSE_LONGLONG
static bool DoValidation(const wxNumericProperty* property,
long& value,
wxPGValidationInfo* pValidationInfo,
int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage);
};
// -----------------------------------------------------------------------
@ -299,10 +375,27 @@ public:
double value = 0.0 );
virtual ~wxFloatProperty() = default;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
virtual bool ValidateValue( wxVariant& value,
@ -320,7 +413,7 @@ private:
static bool DoValidation(const wxNumericProperty* property,
double& value,
wxPGValidationInfo* pValidationInfo,
int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage);
};
// -----------------------------------------------------------------------
@ -335,12 +428,37 @@ public:
bool value = false );
virtual ~wxBoolProperty() = default;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
virtual bool IntToValue( wxVariant& variant,
int number, int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& variant, int number, int flags) const override
{
m_oldIntToValueCalled = true;
return IntToValue(variant, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& variant, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
};
@ -349,8 +467,8 @@ public:
#if WXWIN_COMPATIBILITY_3_2
// If set, then selection of choices is static and should not be
// changed (i.e. returns nullptr in GetPropertyChoices).
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_STATIC_CHOICES is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_STATIC_CHOICES = wxPG_PROP_RESERVED_1;
wxDEPRECATED_MSG("wxPG_PROP_STATIC_CHOICES is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_STATIC_CHOICES = wxPGPropertyFlags::Reserved_1;
#endif // WXWIN_COMPATIBILITY_3_2
// Represents a single selection from a list of choices
@ -401,18 +519,41 @@ public:
size_t GetItemCount() const { return m_choices.GetCount(); }
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool ValidateValue( wxVariant& value,
wxPGValidationInfo& validationInfo ) const override;
// If wxPG_FULL_VALUE is not set in flags, then the value is interpreted
// If wxPGPropValFormatFlags::FullValue 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 override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use IntToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool IntToValue(wxVariant& variant, int number, int flags) const override
{
m_oldIntToValueCalled = true;
return IntToValue(variant, number, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool IntToValue(wxVariant& variant, int number,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
//
// Additional virtuals
@ -434,25 +575,38 @@ protected:
wxDEPRECATED_MSG("use ValueFromString_(wxVariant&, int*, const wxString&, int) function instead")
bool ValueFromString_( wxVariant& value,
const wxString& text,
int argFlags ) const
int flags ) const
{
return ValueFromString_(value, nullptr, text, argFlags);
return ValueFromString_(value, nullptr, text, static_cast<wxPGPropValFormatFlags>(flags));
}
wxDEPRECATED_MSG("use ValueFromInt_(wxVariant&, int*, int, int) function instead")
bool ValueFromInt_( wxVariant& value, int intVal, int argFlags ) const
bool ValueFromInt_( wxVariant& value, int intVal, int flags ) const
{
return ValueFromInt_(value, nullptr, intVal, argFlags);
return ValueFromInt_(value, nullptr, intVal, static_cast<wxPGPropValFormatFlags>(flags));
}
wxDEPRECATED_MSG("don't use ResetNextIndex() function")
static void ResetNextIndex() { }
#endif
// Converts text to value and returns corresponding index in the collection
bool ValueFromString_(wxVariant& value,
int* pIndex,
const wxString& text,
int argFlags) const;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueFromString_ with 'flags' argument as wxPGPropValFormatFlags")
bool ValueFromString_(wxVariant& value, int* pIndex,
const wxString& text, int flags) const
{
return ValueFromString_(value, pIndex, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool ValueFromString_(wxVariant& value, int* pIndex,
const wxString& text, wxPGPropValFormatFlags flags) const;
// Converts number to value and returns corresponding index in the collection
bool ValueFromInt_(wxVariant& value, int* pIndex, int intVal, int argFlags) const;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueFromInt_ with 'flags' argument as wxPGPropValFormatFlags")
bool ValueFromInt_(wxVariant& value, int* pIndex, int intVal, int flags) const
{
return ValueFromInt_(value, pIndex, intVal, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool ValueFromInt_(wxVariant& value, int* pIndex, int intVal, wxPGPropValFormatFlags flags) const;
private:
// This is private so that classes are guaranteed to use GetIndex
@ -496,9 +650,17 @@ public:
virtual ~wxEditEnumProperty() = default;
void OnSetValue() override;
bool StringToValue(wxVariant& variant,
const wxString& text,
int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
bool ValidateValue(wxVariant& value,
wxPGValidationInfo& validationInfo) const override;
@ -538,10 +700,27 @@ public:
virtual ~wxFlagsProperty () = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int flags ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags) const override;
virtual wxVariant ChildChanged( wxVariant& thisValue,
int childIndex,
wxVariant& childValue ) const override;
@ -595,8 +774,8 @@ protected:
#if WXWIN_COMPATIBILITY_3_2
// Indicates first bit usable by derived properties.
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_SHOW_FULL_FILENAME is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_SHOW_FULL_FILENAME = wxPG_PROP_RESERVED_1;
wxDEPRECATED_MSG("wxPG_PROP_SHOW_FULL_FILENAME is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_SHOW_FULL_FILENAME = wxPGPropertyFlags::Reserved_1;
#endif // WXWIN_COMPATIBILITY_3_2
// Like wxLongStringProperty, but the button triggers file selector instead.
@ -611,10 +790,26 @@ public:
virtual ~wxFileProperty() = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value, wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
static wxValidator* GetClassValidator();
@ -637,8 +832,8 @@ protected:
#if WXWIN_COMPATIBILITY_3_2
// Flag used in wxLongStringProperty to mark that edit button
// should be enabled even in the read-only mode.
wxDEPRECATED_BUT_USED_INTERNALLY_MSG("wxPG_PROP_ACTIVE_BTN is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_ACTIVE_BTN = wxPG_PROP_RESERVED_3;
wxDEPRECATED_MSG("wxPG_PROP_ACTIVE_BTN is intended for internal use.")
constexpr wxPGPropertyFlags wxPG_PROP_ACTIVE_BTN = wxPGPropertyFlags::Reserved_3;
#endif // WXWIN_COMPATIBILITY_3_2
// Like wxStringProperty, but has a button that triggers a small text
@ -653,10 +848,27 @@ public:
const wxString& value = wxString() );
virtual ~wxLongStringProperty() = default;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
protected:
virtual bool DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value) override;
@ -675,9 +887,27 @@ public:
const wxString& value = wxString() );
virtual ~wxDirProperty() = default;
virtual wxString ValueToString(wxVariant& value, int argFlags = 0) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int argFlags = 0) const override;
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_0
virtual bool DoSetAttribute(const wxString& name, wxVariant& value) override;
#endif // WXWIN_COMPATIBILITY_3_0
@ -700,10 +930,27 @@ public:
virtual ~wxArrayStringProperty() = default;
virtual void OnSetValue() override;
virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const override;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use ValueToString with 'flags' argument as wxPGPropValFormatFlags")
virtual wxString ValueToString(wxVariant& value, int flags) const override
{
m_oldValueToStringCalled = true;
return ValueToString(value, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual wxString ValueToString(wxVariant& value,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
#if WXWIN_COMPATIBILITY_3_2
wxDEPRECATED_MSG("use StringToValue with 'flags' argument as wxPGPropValFormatFlags")
virtual bool StringToValue(wxVariant& variant, const wxString& text,
int flags) const override
{
m_oldStringToValueCalled = true;
return StringToValue(variant, text, static_cast<wxPGPropValFormatFlags>(flags));
}
#endif // WXWIN_COMPATIBILITY_3_2
virtual bool StringToValue(wxVariant& variant, const wxString& text,
wxPGPropValFormatFlags flags = wxPGPropValFormatFlags::Null) const override;
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) override;
// Implement in derived class for custom array-to-string conversion.

View file

@ -24,13 +24,6 @@ public:
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxASCII_STR(wxControlNameStr));
virtual wxSize DoGetBestSize() const override;
protected:
bool QtCreateControl( wxWindow *parent, wxWindowID id, const wxPoint &pos,
const wxSize &size, long style, const wxValidator &validator,
const wxString &name );
private:
wxDECLARE_DYNAMIC_CLASS(wxControl);
};

View file

@ -23,7 +23,10 @@ public:
~wxWindowDCImpl();
protected:
wxWindow *m_window;
std::unique_ptr<QPicture> m_pict;
// @true if m_qtPainter is owned by the window, @false otherwise (default).
bool m_isWindowPainter = false;
private:
wxDECLARE_CLASS(wxWindowDCImpl);
@ -37,10 +40,10 @@ public:
wxClientDCImpl( wxDC *owner );
wxClientDCImpl( wxDC *owner, wxWindow *win );
~wxClientDCImpl();
private:
std::unique_ptr<QPicture> m_pict;
static bool
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return false; }
private:
wxDECLARE_CLASS(wxClientDCImpl);
wxDECLARE_NO_COPY_CLASS(wxClientDCImpl);
};
@ -51,6 +54,7 @@ class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxWindowDCImpl
public:
wxPaintDCImpl( wxDC *owner );
wxPaintDCImpl( wxDC *owner, wxWindow *win );
private:
wxDECLARE_CLASS(wxPaintDCImpl);
wxDECLARE_NO_COPY_CLASS(wxPaintDCImpl);

View file

@ -13,7 +13,6 @@
#include "wx/frame.h"
class QMainWindow;
class QScrollArea;
class WXDLLIMPEXP_CORE wxFrame : public wxFrameBase
{
@ -51,7 +50,6 @@ public:
virtual void RemoveChild( wxWindowBase *child ) override;
QMainWindow *GetQMainWindow() const;
virtual QScrollArea *QtGetScrollBarsContainer() const override;
protected:
virtual wxPoint GetClientAreaOrigin() const override;

View file

@ -10,7 +10,6 @@
class QListWidget;
class QModelIndex;
class QScrollArea;
class WXDLLIMPEXP_CORE wxListBox : public wxListBoxBase
{
@ -87,8 +86,6 @@ protected:
virtual int DoListHitTest(const wxPoint& point) const override;
virtual QScrollArea *QtGetScrollBarsContainer() const override;
#if wxUSE_CHECKLISTBOX
bool m_hasCheckBoxes;
#endif // wxUSE_CHECKLISTBOX

View file

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////////
// Name: include/wx/qt/winevent_qt.h
// Name: include/wx/qt/private/winevent.h
// Purpose: QWidget to wxWindow event handler
// Author: Javier Torres, Peter Most
// Created: 21.06.10
@ -371,7 +371,7 @@ protected:
virtual bool winEvent ( MSG * message, long * result ) { }
virtual bool x11Event ( XEvent * event ) { } */
virtual bool event(QEvent *event)
virtual bool event(QEvent *event) override
{
if (event->type() == QEvent::Gesture)
{

View file

@ -10,15 +10,12 @@
#include "wx/statusbr.h"
class QLabel;
class QStatusBar;
template < class T > class QList;
class WXDLLIMPEXP_CORE wxStatusBar : public wxStatusBarBase
{
public:
wxStatusBar();
wxStatusBar() = default;
wxStatusBar(wxWindow *parent, wxWindowID winid = wxID_ANY,
long style = wxSTB_DEFAULT_STYLE,
const wxString& name = wxASCII_STR(wxStatusBarNameStr));
@ -27,12 +24,11 @@ public:
long style = wxSTB_DEFAULT_STYLE,
const wxString& name = wxASCII_STR(wxStatusBarNameStr));
virtual void SetStatusWidths(int n, const int widths_field[]) override;
virtual bool GetFieldRect(int i, wxRect& rect) const override;
virtual void SetMinHeight(int height) override;
virtual int GetBorderX() const override;
virtual int GetBorderY() const override;
virtual void Refresh( bool eraseBackground = true,
const wxRect *rect = nullptr ) override;
QStatusBar *GetQStatusBar() const { return m_qtStatusBar; }
QWidget *GetHandle() const override;
@ -41,11 +37,10 @@ protected:
virtual void DoUpdateStatusText(int number) override;
private:
void Init();
void UpdateFields();
QStatusBar *m_qtStatusBar;
wxVector<QLabel*> m_qtPanes;
QStatusBar *m_qtStatusBar = nullptr;
std::vector<QWidget*> m_qtPanes;
wxDECLARE_DYNAMIC_CLASS(wxStatusBar);
};

View file

@ -8,7 +8,6 @@
#ifndef _WX_QT_TEXTCTRL_H_
#define _WX_QT_TEXTCTRL_H_
class QScrollArea;
class wxQtEdit;
class WXDLLIMPEXP_CORE wxTextCtrl : public wxTextCtrlBase
@ -93,8 +92,6 @@ protected:
virtual bool DoLoadFile(const wxString& file, int fileType) override;
virtual bool DoSaveFile(const wxString& file, int fileType) override;
virtual QScrollArea *QtGetScrollBarsContainer() const override;
// From wxTextEntry:
virtual wxWindow *GetEditableWindow() override { return this; }

View file

@ -14,46 +14,37 @@
class QShortcut;
template < class T > class QList;
class QWidget;
class QScrollArea;
class QScrollBar;
class QPicture;
class QAbstractScrollArea;
class QPainter;
class QPicture;
class QScrollBar;
class QWidget;
class QCloseEvent;
class QContextMenuEvent;
class QEvent;
class QFocusEvent;
class QKeyEvent;
class QPaintEvent;
class QResizeEvent;
class QWheelEvent;
class QKeyEvent;
class QMouseEvent;
class QEvent;
class QMoveEvent;
class QEvent;
class QEvent;
class QCloseEvent;
class QContextMenuEvent;
class QFocusEvent;
class WXDLLIMPEXP_FWD_CORE wxScrollBar;
class WXDLLIMPEXP_FWD_CORE wxQtShortcutHandler;
/* wxQt specific notes:
*
* Remember to implement the Qt object getters on all subclasses:
* - GetHandle() returns the Qt object
* - QtGetScrollBarsContainer() returns the widget where scrollbars are placed
* For example, for wxFrame, GetHandle() is the QMainWindow,
* QtGetScrollBarsContainer() is the central widget and QtGetContainer() is a widget
* in a layout inside the central widget that also contains the scrollbars.
* Return 0 from QtGetScrollBarsContainer() to disable SetScrollBar() and friends
* for wxWindow subclasses.
*
*
* Event handling is achieved by using the template class wxQtEventForwarder
* found in winevent_qt.(h|cpp) to send all Qt events here to QtHandleXXXEvent()
* methods. All these methods receive the Qt event and the handler. This is
* done because events of the containers (the scrolled part of the window) are
* sent to the same wxWindow instance, that must be able to differentiate them
* as some events need different handling (paintEvent) depending on that.
* Event handling is achieved by using the template class wxQtEventSignalHandler
* found in winevent.h to send all Qt events here to QtHandleXXXEvent() methods.
* All these methods receive the Qt event and the handler. This is done because
* events of the containers (the scrolled part of the window) are sent to the
* same wxWindow instance, that must be able to differentiate them as some events
* need different handling (paintEvent) depending on that.
* We pass the QWidget pointer to all event handlers for consistency.
*/
class WXDLLIMPEXP_CORE wxWindowQt : public wxWindowBase
@ -75,7 +66,8 @@ public:
long style = 0,
const wxString& name = wxASCII_STR(wxPanelNameStr));
// Used by all window classes in the widget creation process.
// Derived classes have to call PostCreation() explicitly if they don't call
// our Create() method during widget creation process.
void PostCreation( bool generic = true );
void AddChild( wxWindowBase *child ) override;
@ -136,6 +128,9 @@ public:
virtual bool SetBackgroundColour(const wxColour& colour) override;
virtual bool SetForegroundColour(const wxColour& colour) override;
virtual void SetDoubleBuffered(bool on) override;
virtual bool IsDoubleBuffered() const override;
QWidget *GetHandle() const override;
#if wxUSE_DRAG_AND_DROP
@ -152,7 +147,7 @@ public:
// wxQt implementation internals:
// Caller maintains ownership of pict - window will NOT delete it
// Takes ownership of pict - window will delete it
void QtSetPicture( QPicture* pict );
QPainter *QtGetPainter();
@ -178,8 +173,6 @@ public:
virtual void QtHandleShortcut ( int command );
#endif // wxUSE_ACCEL
virtual QScrollArea *QtGetScrollBarsContainer() const;
#if wxUSE_TOOLTIPS
// applies tooltip to the widget.
virtual void QtApplyToolTip(const wxString& text);
@ -210,6 +203,8 @@ protected:
virtual void DoSetClientSize(int width, int height) override;
virtual void DoGetClientSize(int *width, int *height) const override;
virtual wxSize DoGetBestSize() const override;
virtual void DoMoveWindow(int x, int y, int width, int height) override;
#if wxUSE_TOOLTIPS
@ -225,14 +220,13 @@ protected:
// itself.
virtual QWidget* QtGetParentWidget() const { return GetHandle(); }
QWidget *m_qtWindow;
QWidget *m_qtWindow;
QAbstractScrollArea *m_qtContainer; // either nullptr or the same as m_qtWindow pointer
// if m_qtWindow derives from QAbstractScrollArea,
// e.g. QListWidget and QTextEdit.
private:
void Init();
QScrollArea *m_qtContainer; // either nullptr or the same as m_qtWindow pointer
QScrollBar *m_horzScrollBar; // owned by m_qtWindow when allocated
QScrollBar *m_vertScrollBar; // owned by m_qtWindow when allocated
// Return the viewport of m_qtContainer, if it's used, or just m_qtWindow.
//
@ -240,11 +234,10 @@ private:
QWidget *QtGetClientWidget() const;
QScrollBar *QtGetScrollBar( int orientation ) const;
QScrollBar *QtSetScrollBar( int orientation, QScrollBar *scrollBar=nullptr );
bool QtSetBackgroundStyle();
QPicture *m_qtPicture; // not owned
std::unique_ptr<QPicture> m_qtPicture; // owned by this window
std::unique_ptr<QPainter> m_qtPainter; // always allocated
bool m_mouseInside;

View file

@ -439,7 +439,7 @@ public:
m_targetWindow = this;
#ifdef __WXMAC__
this->MacSetClipChildren(true);
this->MacSetClipChildren();
#endif
// by default, we're scrollable in both directions (but if one of the

View file

@ -1330,7 +1330,7 @@
// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL
// headers and libraries to be able to compile the library with wxUSE_GLCANVAS
// set to 1 and, under Windows, also to add opengl32.lib and glu32.lib to the
// set to 1 and, under Windows, also to add opengl32.lib to the
// list of libraries used to link your application when linking to wxWidgets
// statically (although this is done implicitly for Microsoft Visual C++ users).
//

View file

@ -110,6 +110,18 @@ public:
bool unique() const { return (m_ref ? m_ref->m_count == 1 : true); }
long use_count() const { return (m_ref ? (long)m_ref->m_count : 0); }
template <class U>
friend bool operator == (wxSharedPtr<T> const &a, wxSharedPtr<U> const &b )
{
return a.get() == b.get();
}
template <class U>
friend bool operator != (wxSharedPtr<T> const &a, wxSharedPtr<U> const &b )
{
return a.get() != b.get();
}
private:
struct reftype
@ -154,16 +166,4 @@ private:
}
};
template <class T, class U>
bool operator == (wxSharedPtr<T> const &a, wxSharedPtr<U> const &b )
{
return a.get() == b.get();
}
template <class T, class U>
bool operator != (wxSharedPtr<T> const &a, wxSharedPtr<U> const &b )
{
return a.get() != b.get();
}
#endif // _WX_SHAREDPTR_H_

View file

@ -17,6 +17,7 @@
#include "wx/control.h"
#include "wx/list.h"
#include "wx/dynarray.h"
#include "wx/weakref.h"
extern WXDLLIMPEXP_DATA_CORE(const char) wxStatusBarNameStr[];
@ -84,6 +85,11 @@ public:
// really restored anything
bool PopText();
// set/get the control (child of the wxStatusBar) that will be shown in
// this pane.
void SetFieldControl(wxWindow* win) { m_control = win; }
wxWindow* GetFieldControl() const { return m_control; }
private:
int m_nStyle;
int m_nWidth; // may be negative, indicating a variable-width field
@ -97,6 +103,9 @@ private:
// is the currently shown value shown with ellipsis in the status bar?
bool m_bEllipsized;
// remember the control that will be shown in this pane. Updated by SetFieldControl().
wxWindowRef m_control;
};
// This is preserved for compatibility, but is not supposed to be used by the
@ -173,6 +182,14 @@ public:
wxSize GetBorders() const
{ return wxSize(GetBorderX(), GetBorderY()); }
// controls
// --------
// Add a control (child of the wxStatusBar) to be shown at the specified
// field position #n. Note that you must delete the control to remove it
// from the status bar, as simply passing _nullptr_ will not do that.
bool AddFieldControl(int n, wxWindow* win);
// miscellaneous
// -------------
@ -192,6 +209,9 @@ protected:
// display
virtual void DoUpdateStatusText(int number) = 0;
// Position the added controls (added by AddFieldControl()), if any, in
// their corresponding destination.
void OnSize(wxSizeEvent& event);
// wxWindow overrides:

Some files were not shown because too many files have changed in this diff Show more