]> git.saurik.com Git - wxWidgets.git/commitdiff
added native GTK implementation of wxCalendarCtrl (modified patch 1925439)
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 28 Mar 2008 02:47:12 +0000 (02:47 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 28 Mar 2008 02:47:12 +0000 (02:47 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52891 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

26 files changed:
Makefile.in
build/bakefiles/files.bkl
build/msw/makefile.bcc
build/msw/makefile.gcc
build/msw/makefile.vc
build/msw/makefile.wat
build/msw/wx_adv.dsp
build/msw/wx_core.dsp
build/msw/wx_vc7_adv.vcproj
build/msw/wx_vc7_core.vcproj
build/msw/wx_vc8_adv.vcproj
build/msw/wx_vc8_core.vcproj
docs/changes.txt
include/wx/calctrl.h
include/wx/dateevt.h
include/wx/generic/calctrl.h [deleted file]
include/wx/generic/calctrlg.h [new file with mode: 0644]
include/wx/generic/datectrl.h
include/wx/gtk/calctrl.h [new file with mode: 0644]
interface/calctrl.h
samples/calendar/calendar.cpp
src/common/calctrlcmn.cpp [new file with mode: 0644]
src/generic/calctrl.cpp [deleted file]
src/generic/calctrlg.cpp [new file with mode: 0644]
src/generic/datectlg.cpp
src/gtk/calctrl.cpp [new file with mode: 0644]

index b7ea69cdba88cd4a333de4152af45703f0a7eaa2..a22b10ad2fe88fb141719b16a04cc5bf1c93635e 100644 (file)
@@ -3009,9 +3009,12 @@ COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_HDR =  \
 @COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_HDR)
 @COND_TOOLKIT_X11@ADVANCED_PLATFORM_HDR = \
 @COND_TOOLKIT_X11@     wx/unix/joystick.h wx/unix/sound.h wx/unix/taskbarx11.h
 @COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_HDR)
 @COND_TOOLKIT_X11@ADVANCED_PLATFORM_HDR = \
 @COND_TOOLKIT_X11@     wx/unix/joystick.h wx/unix/sound.h wx/unix/taskbarx11.h
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_NATIVE_HDR \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   = wx/gtk/animate.h wx/gtk/dataview.h \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   wx/gtk/hyperlink.h
+COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_NATIVE_HDR =  \
+       wx/gtk/animate.h \
+       wx/gtk/calctrl.h \
+       wx/gtk/dataview.h \
+       wx/gtk/hyperlink.h
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_NATIVE_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_NATIVE_HDR)
 @COND_TOOLKIT_MSW@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
 @COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
 COND_WXUNIV_0_ADVANCED_HDR =  \
 @COND_TOOLKIT_MSW@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
 @COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
 COND_WXUNIV_0_ADVANCED_HDR =  \
@@ -3026,7 +3029,7 @@ COND_WXUNIV_0_ADVANCED_HDR =  \
        wx/editlbox.h \
        wx/generic/aboutdlgg.h \
        wx/generic/bmpcbox.h \
        wx/editlbox.h \
        wx/generic/aboutdlgg.h \
        wx/generic/bmpcbox.h \
-       wx/generic/calctrl.h \
+       wx/generic/calctrlg.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
        wx/generic/grid.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
        wx/generic/grid.h \
@@ -3068,7 +3071,7 @@ COND_WXUNIV_1_ADVANCED_HDR =  \
        wx/editlbox.h \
        wx/generic/aboutdlgg.h \
        wx/generic/bmpcbox.h \
        wx/editlbox.h \
        wx/generic/aboutdlgg.h \
        wx/generic/bmpcbox.h \
-       wx/generic/calctrl.h \
+       wx/generic/calctrlg.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
        wx/generic/grid.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
        wx/generic/grid.h \
@@ -5313,11 +5316,12 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1 =  \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
        monodll_animatecmn.o \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
        monodll_animatecmn.o \
+       monodll_calctrlcmn.o \
        monodll_datavcmn.o \
        monodll_hyperlnkcmn.o \
        monodll_aboutdlgg.o \
        monodll_bmpcboxg.o \
        monodll_datavcmn.o \
        monodll_hyperlnkcmn.o \
        monodll_aboutdlgg.o \
        monodll_bmpcboxg.o \
-       monodll_calctrl.o \
+       monodll_calctrlg.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
        monodll_editlbox.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
        monodll_editlbox.o \
@@ -5339,11 +5343,12 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS =  \
        monodll_animatecmn.o \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS =  \
        monodll_animatecmn.o \
+       monodll_calctrlcmn.o \
        monodll_datavcmn.o \
        monodll_hyperlnkcmn.o \
        monodll_aboutdlgg.o \
        monodll_bmpcboxg.o \
        monodll_datavcmn.o \
        monodll_hyperlnkcmn.o \
        monodll_aboutdlgg.o \
        monodll_bmpcboxg.o \
-       monodll_calctrl.o \
+       monodll_calctrlg.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
        monodll_editlbox.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
        monodll_editlbox.o \
@@ -5366,6 +5371,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS =  \
        monodll_aboutdlg.o \
        monodll_animate.o \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS =  \
        monodll_aboutdlg.o \
        monodll_animate.o \
+       monodll_calctrl.o \
        monodll_dataview.o \
        monodll_hyperlink.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
        monodll_dataview.o \
        monodll_hyperlink.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
@@ -7220,11 +7226,12 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3 =  \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_animatecmn.o \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_animatecmn.o \
+       monolib_calctrlcmn.o \
        monolib_datavcmn.o \
        monolib_hyperlnkcmn.o \
        monolib_aboutdlgg.o \
        monolib_bmpcboxg.o \
        monolib_datavcmn.o \
        monolib_hyperlnkcmn.o \
        monolib_aboutdlgg.o \
        monolib_bmpcboxg.o \
-       monolib_calctrl.o \
+       monolib_calctrlg.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
        monolib_editlbox.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
        monolib_editlbox.o \
@@ -7246,11 +7253,12 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_animatecmn.o \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_animatecmn.o \
+       monolib_calctrlcmn.o \
        monolib_datavcmn.o \
        monolib_hyperlnkcmn.o \
        monolib_aboutdlgg.o \
        monolib_bmpcboxg.o \
        monolib_datavcmn.o \
        monolib_hyperlnkcmn.o \
        monolib_aboutdlgg.o \
        monolib_bmpcboxg.o \
-       monolib_calctrl.o \
+       monolib_calctrlg.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
        monolib_editlbox.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
        monolib_editlbox.o \
@@ -7273,6 +7281,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 =  \
        monolib_aboutdlg.o \
        monolib_animate.o \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 =  \
        monolib_aboutdlg.o \
        monolib_animate.o \
+       monolib_calctrl.o \
        monolib_dataview.o \
        monolib_hyperlink.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
        monolib_dataview.o \
        monolib_hyperlink.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
@@ -10961,11 +10970,12 @@ COND_USE_SOSYMLINKS_1___advdll___so_symlinks_uninst_cmd = rm -f \
 @COND_PLATFORM_WIN32_1@__advdll___win32rc = advdll_version_rc.o
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_animatecmn.o \
 @COND_PLATFORM_WIN32_1@__advdll___win32rc = advdll_version_rc.o
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_animatecmn.o \
+       advdll_calctrlcmn.o \
        advdll_datavcmn.o \
        advdll_hyperlnkcmn.o \
        advdll_aboutdlgg.o \
        advdll_bmpcboxg.o \
        advdll_datavcmn.o \
        advdll_hyperlnkcmn.o \
        advdll_aboutdlgg.o \
        advdll_bmpcboxg.o \
-       advdll_calctrl.o \
+       advdll_calctrlg.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
        advdll_editlbox.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
        advdll_editlbox.o \
@@ -10987,11 +10997,12 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_animatecmn.o \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_animatecmn.o \
+       advdll_calctrlcmn.o \
        advdll_datavcmn.o \
        advdll_hyperlnkcmn.o \
        advdll_aboutdlgg.o \
        advdll_bmpcboxg.o \
        advdll_datavcmn.o \
        advdll_hyperlnkcmn.o \
        advdll_aboutdlgg.o \
        advdll_bmpcboxg.o \
-       advdll_calctrl.o \
+       advdll_calctrlg.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
        advdll_editlbox.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
        advdll_editlbox.o \
@@ -11011,9 +11022,13 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 =  \
        $(__ADVANCED_PLATFORM_SRC_OBJECTS_8) \
        advdll_animateg.o
 @COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2)
        $(__ADVANCED_PLATFORM_SRC_OBJECTS_8) \
        advdll_animateg.o
 @COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   = advdll_aboutdlg.o advdll_animate.o \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   advdll_dataview.o advdll_hyperlink.o
+COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 =  \
+       advdll_aboutdlg.o \
+       advdll_animate.o \
+       advdll_calctrl.o \
+       advdll_dataview.o \
+       advdll_hyperlink.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2)
 @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 \
 @COND_TOOLKIT_MSW@     = advdll_datectrl.o
 @COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 \
 @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 \
 @COND_TOOLKIT_MSW@     = advdll_datectrl.o
 @COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 \
@@ -11034,11 +11049,12 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1___advlib___depname = \
 @COND_USE_PCH_1@       = .pch/wxprec_advlib/wx/wxprec.h.gch
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_animatecmn.o \
 @COND_USE_PCH_1@       = .pch/wxprec_advlib/wx/wxprec.h.gch
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_animatecmn.o \
+       advlib_calctrlcmn.o \
        advlib_datavcmn.o \
        advlib_hyperlnkcmn.o \
        advlib_aboutdlgg.o \
        advlib_bmpcboxg.o \
        advlib_datavcmn.o \
        advlib_hyperlnkcmn.o \
        advlib_aboutdlgg.o \
        advlib_bmpcboxg.o \
-       advlib_calctrl.o \
+       advlib_calctrlg.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
        advlib_editlbox.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
        advlib_editlbox.o \
@@ -11060,11 +11076,12 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_animatecmn.o \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_animatecmn.o \
+       advlib_calctrlcmn.o \
        advlib_datavcmn.o \
        advlib_hyperlnkcmn.o \
        advlib_aboutdlgg.o \
        advlib_bmpcboxg.o \
        advlib_datavcmn.o \
        advlib_hyperlnkcmn.o \
        advlib_aboutdlgg.o \
        advlib_bmpcboxg.o \
-       advlib_calctrl.o \
+       advlib_calctrlg.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
        advlib_editlbox.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
        advlib_editlbox.o \
@@ -11084,9 +11101,13 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 =  \
        $(__ADVANCED_PLATFORM_SRC_OBJECTS_9) \
        advlib_animateg.o
 @COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3)
        $(__ADVANCED_PLATFORM_SRC_OBJECTS_9) \
        advlib_animateg.o
 @COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   = advlib_aboutdlg.o advlib_animate.o \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@   advlib_dataview.o advlib_hyperlink.o
+COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 =  \
+       advlib_aboutdlg.o \
+       advlib_animate.o \
+       advlib_calctrl.o \
+       advlib_dataview.o \
+       advlib_hyperlink.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3)
 @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 \
 @COND_TOOLKIT_MSW@     = advlib_datectrl.o
 @COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 \
 @COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 \
 @COND_TOOLKIT_MSW@     = advlib_datectrl.o
 @COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 \
@@ -14131,6 +14152,9 @@ monodll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(MONODLL_ODEP)
 monodll_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
 monodll_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
+monodll_calctrl.o: $(srcdir)/src/gtk/calctrl.cpp $(MONODLL_ODEP)
+       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/calctrl.cpp
+
 monodll_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
 monodll_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
@@ -17836,6 +17860,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
 @COND_USE_GUI_1@monodll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
+@COND_USE_GUI_1@monodll_calctrlcmn.o: $(srcdir)/src/common/calctrlcmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/calctrlcmn.cpp
+
 @COND_USE_GUI_1@monodll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
 @COND_USE_GUI_1@monodll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
@@ -17848,8 +17875,8 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
 @COND_USE_GUI_1@monodll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
-@COND_USE_GUI_1@monodll_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(MONODLL_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
+@COND_USE_GUI_1@monodll_calctrlg.o: $(srcdir)/src/generic/calctrlg.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/calctrlg.cpp
 
 @COND_USE_GUI_1@monodll_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
 
 @COND_USE_GUI_1@monodll_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
@@ -18649,6 +18676,9 @@ monolib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(MONOLIB_ODEP)
 monolib_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
 monolib_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
+monolib_calctrl.o: $(srcdir)/src/gtk/calctrl.cpp $(MONOLIB_ODEP)
+       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/calctrl.cpp
+
 monolib_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
 monolib_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
@@ -22354,6 +22384,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
 @COND_USE_GUI_1@monolib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
+@COND_USE_GUI_1@monolib_calctrlcmn.o: $(srcdir)/src/common/calctrlcmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/calctrlcmn.cpp
+
 @COND_USE_GUI_1@monolib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
 @COND_USE_GUI_1@monolib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
@@ -22366,8 +22399,8 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
 @COND_USE_GUI_1@monolib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
-@COND_USE_GUI_1@monolib_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(MONOLIB_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
+@COND_USE_GUI_1@monolib_calctrlg.o: $(srcdir)/src/generic/calctrlg.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/calctrlg.cpp
 
 @COND_USE_GUI_1@monolib_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
 
 @COND_USE_GUI_1@monolib_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
@@ -30496,6 +30529,9 @@ advdll_version_rc.o: $(srcdir)/src/msw/version.rc $(ADVDLL_ODEP)
 advdll_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
 advdll_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
+advdll_calctrl.o: $(srcdir)/src/gtk/calctrl.cpp $(ADVDLL_ODEP)
+       $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/calctrl.cpp
+
 advdll_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
 advdll_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
@@ -30505,6 +30541,9 @@ advdll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVDLL_ODEP)
 advdll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
 advdll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
+advdll_calctrlcmn.o: $(srcdir)/src/common/calctrlcmn.cpp $(ADVDLL_ODEP)
+       $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/calctrlcmn.cpp
+
 advdll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
 advdll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
@@ -30517,8 +30556,8 @@ advdll_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVDLL_ODEP)
 advdll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
 advdll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
-advdll_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(ADVDLL_ODEP)
-       $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
+advdll_calctrlg.o: $(srcdir)/src/generic/calctrlg.cpp $(ADVDLL_ODEP)
+       $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/calctrlg.cpp
 
 advdll_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
 
 advdll_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
@@ -30754,6 +30793,9 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
 advlib_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
 advlib_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
 
+advlib_calctrl.o: $(srcdir)/src/gtk/calctrl.cpp $(ADVLIB_ODEP)
+       $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/calctrl.cpp
+
 advlib_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
 advlib_hyperlink.o: $(srcdir)/src/gtk/hyperlink.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/hyperlink.cpp
 
@@ -30763,6 +30805,9 @@ advlib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVLIB_ODEP)
 advlib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
 advlib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
 
+advlib_calctrlcmn.o: $(srcdir)/src/common/calctrlcmn.cpp $(ADVLIB_ODEP)
+       $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/calctrlcmn.cpp
+
 advlib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
 advlib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
@@ -30775,8 +30820,8 @@ advlib_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVLIB_ODEP)
 advlib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
 advlib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
 
-advlib_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(ADVLIB_ODEP)
-       $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
+advlib_calctrlg.o: $(srcdir)/src/generic/calctrlg.cpp $(ADVLIB_ODEP)
+       $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/calctrlg.cpp
 
 advlib_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
 
 advlib_datavgen.o: $(srcdir)/src/generic/datavgen.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/datavgen.cpp
index 7b0dba2005c5e9bd7f21c3ffc9082f46ad59b146..0e99acb71bb095fde05a97a4c83a33c5e487941f 100644 (file)
@@ -2814,11 +2814,12 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 
 <set var="ADVANCED_CMN_SRC" hints="files">
     src/common/animatecmn.cpp
 
 <set var="ADVANCED_CMN_SRC" hints="files">
     src/common/animatecmn.cpp
+    src/common/calctrlcmn.cpp
     src/common/datavcmn.cpp
     src/common/hyperlnkcmn.cpp
     src/generic/aboutdlgg.cpp
     src/generic/bmpcboxg.cpp
     src/common/datavcmn.cpp
     src/common/hyperlnkcmn.cpp
     src/generic/aboutdlgg.cpp
     src/generic/bmpcboxg.cpp
-    src/generic/calctrl.cpp
+    src/generic/calctrlg.cpp
     src/generic/datavgen.cpp
     src/generic/datectlg.cpp
     src/generic/editlbox.cpp
     src/generic/datavgen.cpp
     src/generic/datectlg.cpp
     src/generic/editlbox.cpp
@@ -2849,7 +2850,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/editlbox.h
     wx/generic/aboutdlgg.h
     wx/generic/bmpcbox.h
     wx/editlbox.h
     wx/generic/aboutdlgg.h
     wx/generic/bmpcbox.h
-    wx/generic/calctrl.h
+    wx/generic/calctrlg.h
     wx/generic/datectrl.h
     wx/generic/dataview.h
     wx/generic/grid.h
     wx/generic/datectrl.h
     wx/generic/dataview.h
     wx/generic/grid.h
@@ -2988,11 +2989,13 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 <set var="ADVANCED_GTK_NATIVE_SRC" hints="files">
     src/gtk/aboutdlg.cpp
     src/gtk/animate.cpp
 <set var="ADVANCED_GTK_NATIVE_SRC" hints="files">
     src/gtk/aboutdlg.cpp
     src/gtk/animate.cpp
+    src/gtk/calctrl.cpp
     src/gtk/dataview.cpp
     src/gtk/hyperlink.cpp
 </set>
 <set var="ADVANCED_GTK_NATIVE_HDR" hints="files">
     wx/gtk/animate.h
     src/gtk/dataview.cpp
     src/gtk/hyperlink.cpp
 </set>
 <set var="ADVANCED_GTK_NATIVE_HDR" hints="files">
     wx/gtk/animate.h
+    wx/gtk/calctrl.h
     wx/gtk/dataview.h
     wx/gtk/hyperlink.h
 </set>
     wx/gtk/dataview.h
     wx/gtk/hyperlink.h
 </set>
index e86526d16a817cc745a894e3e811774a127a8c01..4afaf4e956e892c233a062fbcb7c2673261ef449 100644 (file)
@@ -1936,11 +1936,12 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
+       $(OBJS)\monodll_calctrlcmn.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
-       $(OBJS)\monodll_calctrl.obj \
+       $(OBJS)\monodll_calctrlg.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
@@ -1969,11 +1970,12 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
+       $(OBJS)\monodll_calctrlcmn.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
-       $(OBJS)\monodll_calctrl.obj \
+       $(OBJS)\monodll_calctrlg.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
@@ -2580,11 +2582,12 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
+       $(OBJS)\monolib_calctrlcmn.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
-       $(OBJS)\monolib_calctrl.obj \
+       $(OBJS)\monolib_calctrlg.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
@@ -2613,11 +2616,12 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
+       $(OBJS)\monolib_calctrlcmn.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
-       $(OBJS)\monolib_calctrl.obj \
+       $(OBJS)\monolib_calctrlg.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
@@ -3614,11 +3618,12 @@ __advdll___depname = \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
+       $(OBJS)\advdll_calctrlcmn.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
-       $(OBJS)\advdll_calctrl.obj \
+       $(OBJS)\advdll_calctrlg.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
@@ -3647,11 +3652,12 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
+       $(OBJS)\advdll_calctrlcmn.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
-       $(OBJS)\advdll_calctrl.obj \
+       $(OBJS)\advdll_calctrlg.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
@@ -3684,11 +3690,12 @@ __advlib___depname = \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
+       $(OBJS)\advlib_calctrlcmn.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
-       $(OBJS)\advlib_calctrl.obj \
+       $(OBJS)\advlib_calctrlg.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
@@ -3717,11 +3724,12 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
+       $(OBJS)\advlib_calctrlcmn.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
-       $(OBJS)\advlib_calctrl.obj \
+       $(OBJS)\advlib_calctrlg.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
@@ -7152,6 +7160,11 @@ $(OBJS)\monodll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
@@ -7173,8 +7186,8 @@ $(OBJS)\monodll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\monodll_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
@@ -9273,6 +9286,11 @@ $(OBJS)\monolib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
@@ -9294,8 +9312,8 @@ $(OBJS)\monolib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\monolib_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
@@ -12787,6 +12805,9 @@ $(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
 $(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
+$(OBJS)\advdll_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
@@ -12799,8 +12820,8 @@ $(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
 $(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
-$(OBJS)\advdll_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\advdll_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 
 $(OBJS)\advdll_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\datavgen.cpp
 
 $(OBJS)\advdll_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\datavgen.cpp
@@ -12885,6 +12906,9 @@ $(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
 $(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
+$(OBJS)\advlib_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
@@ -12897,8 +12921,8 @@ $(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
 $(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
-$(OBJS)\advlib_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\advlib_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 
 $(OBJS)\advlib_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\datavgen.cpp
 
 $(OBJS)\advlib_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\datavgen.cpp
index b810e60ff1c8dc6d6dc90380db42464172c33e98..619ab08fbbdb30f783293e1dc61dca0afa6ba65f 100644 (file)
@@ -1956,11 +1956,12 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.o \
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.o \
+       $(OBJS)\monodll_calctrlcmn.o \
        $(OBJS)\monodll_datavcmn.o \
        $(OBJS)\monodll_hyperlnkcmn.o \
        $(OBJS)\monodll_aboutdlgg.o \
        $(OBJS)\monodll_bmpcboxg.o \
        $(OBJS)\monodll_datavcmn.o \
        $(OBJS)\monodll_hyperlnkcmn.o \
        $(OBJS)\monodll_aboutdlgg.o \
        $(OBJS)\monodll_bmpcboxg.o \
-       $(OBJS)\monodll_calctrl.o \
+       $(OBJS)\monodll_calctrlg.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
        $(OBJS)\monodll_editlbox.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
        $(OBJS)\monodll_editlbox.o \
@@ -1989,11 +1990,12 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.o \
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.o \
+       $(OBJS)\monodll_calctrlcmn.o \
        $(OBJS)\monodll_datavcmn.o \
        $(OBJS)\monodll_hyperlnkcmn.o \
        $(OBJS)\monodll_aboutdlgg.o \
        $(OBJS)\monodll_bmpcboxg.o \
        $(OBJS)\monodll_datavcmn.o \
        $(OBJS)\monodll_hyperlnkcmn.o \
        $(OBJS)\monodll_aboutdlgg.o \
        $(OBJS)\monodll_bmpcboxg.o \
-       $(OBJS)\monodll_calctrl.o \
+       $(OBJS)\monodll_calctrlg.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
        $(OBJS)\monodll_editlbox.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
        $(OBJS)\monodll_editlbox.o \
@@ -2606,11 +2608,12 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.o \
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.o \
+       $(OBJS)\monolib_calctrlcmn.o \
        $(OBJS)\monolib_datavcmn.o \
        $(OBJS)\monolib_hyperlnkcmn.o \
        $(OBJS)\monolib_aboutdlgg.o \
        $(OBJS)\monolib_bmpcboxg.o \
        $(OBJS)\monolib_datavcmn.o \
        $(OBJS)\monolib_hyperlnkcmn.o \
        $(OBJS)\monolib_aboutdlgg.o \
        $(OBJS)\monolib_bmpcboxg.o \
-       $(OBJS)\monolib_calctrl.o \
+       $(OBJS)\monolib_calctrlg.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
        $(OBJS)\monolib_editlbox.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
        $(OBJS)\monolib_editlbox.o \
@@ -2639,11 +2642,12 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.o \
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.o \
+       $(OBJS)\monolib_calctrlcmn.o \
        $(OBJS)\monolib_datavcmn.o \
        $(OBJS)\monolib_hyperlnkcmn.o \
        $(OBJS)\monolib_aboutdlgg.o \
        $(OBJS)\monolib_bmpcboxg.o \
        $(OBJS)\monolib_datavcmn.o \
        $(OBJS)\monolib_hyperlnkcmn.o \
        $(OBJS)\monolib_aboutdlgg.o \
        $(OBJS)\monolib_bmpcboxg.o \
-       $(OBJS)\monolib_calctrl.o \
+       $(OBJS)\monolib_calctrlg.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
        $(OBJS)\monolib_editlbox.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
        $(OBJS)\monolib_editlbox.o \
@@ -3668,11 +3672,12 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.o \
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.o \
+       $(OBJS)\advdll_calctrlcmn.o \
        $(OBJS)\advdll_datavcmn.o \
        $(OBJS)\advdll_hyperlnkcmn.o \
        $(OBJS)\advdll_aboutdlgg.o \
        $(OBJS)\advdll_bmpcboxg.o \
        $(OBJS)\advdll_datavcmn.o \
        $(OBJS)\advdll_hyperlnkcmn.o \
        $(OBJS)\advdll_aboutdlgg.o \
        $(OBJS)\advdll_bmpcboxg.o \
-       $(OBJS)\advdll_calctrl.o \
+       $(OBJS)\advdll_calctrlg.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
        $(OBJS)\advdll_editlbox.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
        $(OBJS)\advdll_editlbox.o \
@@ -3701,11 +3706,12 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.o \
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.o \
+       $(OBJS)\advdll_calctrlcmn.o \
        $(OBJS)\advdll_datavcmn.o \
        $(OBJS)\advdll_hyperlnkcmn.o \
        $(OBJS)\advdll_aboutdlgg.o \
        $(OBJS)\advdll_bmpcboxg.o \
        $(OBJS)\advdll_datavcmn.o \
        $(OBJS)\advdll_hyperlnkcmn.o \
        $(OBJS)\advdll_aboutdlgg.o \
        $(OBJS)\advdll_bmpcboxg.o \
-       $(OBJS)\advdll_calctrl.o \
+       $(OBJS)\advdll_calctrlg.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
        $(OBJS)\advdll_editlbox.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
        $(OBJS)\advdll_editlbox.o \
@@ -3742,11 +3748,12 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.o \
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.o \
+       $(OBJS)\advlib_calctrlcmn.o \
        $(OBJS)\advlib_datavcmn.o \
        $(OBJS)\advlib_hyperlnkcmn.o \
        $(OBJS)\advlib_aboutdlgg.o \
        $(OBJS)\advlib_bmpcboxg.o \
        $(OBJS)\advlib_datavcmn.o \
        $(OBJS)\advlib_hyperlnkcmn.o \
        $(OBJS)\advlib_aboutdlgg.o \
        $(OBJS)\advlib_bmpcboxg.o \
-       $(OBJS)\advlib_calctrl.o \
+       $(OBJS)\advlib_calctrlg.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
        $(OBJS)\advlib_editlbox.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
        $(OBJS)\advlib_editlbox.o \
@@ -3775,11 +3782,12 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.o \
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.o \
+       $(OBJS)\advlib_calctrlcmn.o \
        $(OBJS)\advlib_datavcmn.o \
        $(OBJS)\advlib_hyperlnkcmn.o \
        $(OBJS)\advlib_aboutdlgg.o \
        $(OBJS)\advlib_bmpcboxg.o \
        $(OBJS)\advlib_datavcmn.o \
        $(OBJS)\advlib_hyperlnkcmn.o \
        $(OBJS)\advlib_aboutdlgg.o \
        $(OBJS)\advlib_bmpcboxg.o \
-       $(OBJS)\advlib_calctrl.o \
+       $(OBJS)\advlib_calctrlg.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
        $(OBJS)\advlib_editlbox.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
        $(OBJS)\advlib_editlbox.o \
@@ -7406,6 +7414,11 @@ $(OBJS)\monodll_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_calctrlcmn.o: ../../src/common/calctrlcmn.cpp
+       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -7427,7 +7440,7 @@ $(OBJS)\monodll_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
 endif
 
 ifeq ($(USE_GUI),1)
 endif
 
 ifeq ($(USE_GUI),1)
-$(OBJS)\monodll_calctrl.o: ../../src/generic/calctrl.cpp
+$(OBJS)\monodll_calctrlg.o: ../../src/generic/calctrlg.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
@@ -9641,6 +9654,11 @@ $(OBJS)\monolib_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_calctrlcmn.o: ../../src/common/calctrlcmn.cpp
+       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -9662,7 +9680,7 @@ $(OBJS)\monolib_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
 endif
 
 ifeq ($(USE_GUI),1)
 endif
 
 ifeq ($(USE_GUI),1)
-$(OBJS)\monolib_calctrl.o: ../../src/generic/calctrl.cpp
+$(OBJS)\monolib_calctrlg.o: ../../src/generic/calctrlg.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
@@ -13381,6 +13399,9 @@ $(OBJS)\advdll_datectrl.o: ../../src/msw/datectrl.cpp
 $(OBJS)\advdll_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advdll_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advdll_calctrlcmn.o: ../../src/common/calctrlcmn.cpp
+       $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advdll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advdll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -13393,7 +13414,7 @@ $(OBJS)\advdll_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
 $(OBJS)\advdll_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advdll_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
-$(OBJS)\advdll_calctrl.o: ../../src/generic/calctrl.cpp
+$(OBJS)\advdll_calctrlg.o: ../../src/generic/calctrlg.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advdll_datavgen.o: ../../src/generic/datavgen.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advdll_datavgen.o: ../../src/generic/datavgen.cpp
@@ -13479,6 +13500,9 @@ $(OBJS)\advlib_datectrl.o: ../../src/msw/datectrl.cpp
 $(OBJS)\advlib_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advlib_animatecmn.o: ../../src/common/animatecmn.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advlib_calctrlcmn.o: ../../src/common/calctrlcmn.cpp
+       $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advlib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advlib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -13491,7 +13515,7 @@ $(OBJS)\advlib_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
 $(OBJS)\advlib_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advlib_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
-$(OBJS)\advlib_calctrl.o: ../../src/generic/calctrl.cpp
+$(OBJS)\advlib_calctrlg.o: ../../src/generic/calctrlg.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advlib_datavgen.o: ../../src/generic/datavgen.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\advlib_datavgen.o: ../../src/generic/datavgen.cpp
index a4a99aae7a92391899a7ade847debb4414b25bdd..dd71c75ba30494778071268aeafef07e05635197 100644 (file)
@@ -2110,11 +2110,12 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
+       $(OBJS)\monodll_calctrlcmn.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
-       $(OBJS)\monodll_calctrl.obj \
+       $(OBJS)\monodll_calctrlg.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
@@ -2143,11 +2144,12 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_animatecmn.obj \
+       $(OBJS)\monodll_calctrlcmn.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
        $(OBJS)\monodll_datavcmn.obj \
        $(OBJS)\monodll_hyperlnkcmn.obj \
        $(OBJS)\monodll_aboutdlgg.obj \
        $(OBJS)\monodll_bmpcboxg.obj \
-       $(OBJS)\monodll_calctrl.obj \
+       $(OBJS)\monodll_calctrlg.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
        $(OBJS)\monodll_editlbox.obj \
@@ -2760,11 +2762,12 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
+       $(OBJS)\monolib_calctrlcmn.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
-       $(OBJS)\monolib_calctrl.obj \
+       $(OBJS)\monolib_calctrlg.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
@@ -2793,11 +2796,12 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_animatecmn.obj \
+       $(OBJS)\monolib_calctrlcmn.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
        $(OBJS)\monolib_datavcmn.obj \
        $(OBJS)\monolib_hyperlnkcmn.obj \
        $(OBJS)\monolib_aboutdlgg.obj \
        $(OBJS)\monolib_bmpcboxg.obj \
-       $(OBJS)\monolib_calctrl.obj \
+       $(OBJS)\monolib_calctrlg.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
        $(OBJS)\monolib_editlbox.obj \
@@ -3836,11 +3840,12 @@ __RUNTIME_LIBS_208 = $(__THREADSFLAG)
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
+       $(OBJS)\advdll_calctrlcmn.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
-       $(OBJS)\advdll_calctrl.obj \
+       $(OBJS)\advdll_calctrlg.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
@@ -3869,11 +3874,12 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_animatecmn.obj \
+       $(OBJS)\advdll_calctrlcmn.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
        $(OBJS)\advdll_datavcmn.obj \
        $(OBJS)\advdll_hyperlnkcmn.obj \
        $(OBJS)\advdll_aboutdlgg.obj \
        $(OBJS)\advdll_bmpcboxg.obj \
-       $(OBJS)\advdll_calctrl.obj \
+       $(OBJS)\advdll_calctrlg.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
        $(OBJS)\advdll_editlbox.obj \
@@ -3912,11 +3918,12 @@ __RUNTIME_LIBS_221 = $(__THREADSFLAG)
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
+       $(OBJS)\advlib_calctrlcmn.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
-       $(OBJS)\advlib_calctrl.obj \
+       $(OBJS)\advlib_calctrlg.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
@@ -3945,11 +3952,12 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_animatecmn.obj \
+       $(OBJS)\advlib_calctrlcmn.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
        $(OBJS)\advlib_datavcmn.obj \
        $(OBJS)\advlib_hyperlnkcmn.obj \
        $(OBJS)\advlib_aboutdlgg.obj \
        $(OBJS)\advlib_bmpcboxg.obj \
-       $(OBJS)\advlib_calctrl.obj \
+       $(OBJS)\advlib_calctrlg.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
        $(OBJS)\advlib_editlbox.obj \
@@ -7484,6 +7492,11 @@ $(OBJS)\monodll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
@@ -7505,8 +7518,8 @@ $(OBJS)\monodll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\monodll_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
@@ -9605,6 +9618,11 @@ $(OBJS)\monolib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
@@ -9626,8 +9644,8 @@ $(OBJS)\monolib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\monolib_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 !endif
 
 !if "$(USE_GUI)" == "1"
 !endif
 
 !if "$(USE_GUI)" == "1"
@@ -13119,6 +13137,9 @@ $(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
 $(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
+$(OBJS)\advdll_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
@@ -13131,8 +13152,8 @@ $(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
 $(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
-$(OBJS)\advdll_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\advdll_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 
 $(OBJS)\advdll_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\datavgen.cpp
 
 $(OBJS)\advdll_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\datavgen.cpp
@@ -13217,6 +13238,9 @@ $(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
 $(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
 
+$(OBJS)\advlib_calctrlcmn.obj: ..\..\src\common\calctrlcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\calctrlcmn.cpp
+
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\datavcmn.cpp
 
@@ -13229,8 +13253,8 @@ $(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
 $(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
 
-$(OBJS)\advlib_calctrl.obj: ..\..\src\generic\calctrl.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\calctrl.cpp
+$(OBJS)\advlib_calctrlg.obj: ..\..\src\generic\calctrlg.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\calctrlg.cpp
 
 $(OBJS)\advlib_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\datavgen.cpp
 
 $(OBJS)\advlib_datavgen.obj: ..\..\src\generic\datavgen.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\datavgen.cpp
index e7c4ecd50dfdd264c08fccc9af48e033d25d7bb0..a63e6b4762b858d26a06a0b3321a2bb69ed5ca7b 100644 (file)
@@ -676,11 +676,12 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_animatecmn.obj &
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_animatecmn.obj &
+       $(OBJS)\monodll_calctrlcmn.obj &
        $(OBJS)\monodll_datavcmn.obj &
        $(OBJS)\monodll_hyperlnkcmn.obj &
        $(OBJS)\monodll_aboutdlgg.obj &
        $(OBJS)\monodll_bmpcboxg.obj &
        $(OBJS)\monodll_datavcmn.obj &
        $(OBJS)\monodll_hyperlnkcmn.obj &
        $(OBJS)\monodll_aboutdlgg.obj &
        $(OBJS)\monodll_bmpcboxg.obj &
-       $(OBJS)\monodll_calctrl.obj &
+       $(OBJS)\monodll_calctrlg.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
        $(OBJS)\monodll_editlbox.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
        $(OBJS)\monodll_editlbox.obj &
@@ -709,11 +710,12 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_animatecmn.obj &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_animatecmn.obj &
+       $(OBJS)\monodll_calctrlcmn.obj &
        $(OBJS)\monodll_datavcmn.obj &
        $(OBJS)\monodll_hyperlnkcmn.obj &
        $(OBJS)\monodll_aboutdlgg.obj &
        $(OBJS)\monodll_bmpcboxg.obj &
        $(OBJS)\monodll_datavcmn.obj &
        $(OBJS)\monodll_hyperlnkcmn.obj &
        $(OBJS)\monodll_aboutdlgg.obj &
        $(OBJS)\monodll_bmpcboxg.obj &
-       $(OBJS)\monodll_calctrl.obj &
+       $(OBJS)\monodll_calctrlg.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
        $(OBJS)\monodll_editlbox.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
        $(OBJS)\monodll_editlbox.obj &
@@ -1331,11 +1333,12 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_animatecmn.obj &
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_animatecmn.obj &
+       $(OBJS)\monolib_calctrlcmn.obj &
        $(OBJS)\monolib_datavcmn.obj &
        $(OBJS)\monolib_hyperlnkcmn.obj &
        $(OBJS)\monolib_aboutdlgg.obj &
        $(OBJS)\monolib_bmpcboxg.obj &
        $(OBJS)\monolib_datavcmn.obj &
        $(OBJS)\monolib_hyperlnkcmn.obj &
        $(OBJS)\monolib_aboutdlgg.obj &
        $(OBJS)\monolib_bmpcboxg.obj &
-       $(OBJS)\monolib_calctrl.obj &
+       $(OBJS)\monolib_calctrlg.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
        $(OBJS)\monolib_editlbox.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
        $(OBJS)\monolib_editlbox.obj &
@@ -1364,11 +1367,12 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_animatecmn.obj &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_animatecmn.obj &
+       $(OBJS)\monolib_calctrlcmn.obj &
        $(OBJS)\monolib_datavcmn.obj &
        $(OBJS)\monolib_hyperlnkcmn.obj &
        $(OBJS)\monolib_aboutdlgg.obj &
        $(OBJS)\monolib_bmpcboxg.obj &
        $(OBJS)\monolib_datavcmn.obj &
        $(OBJS)\monolib_hyperlnkcmn.obj &
        $(OBJS)\monolib_aboutdlgg.obj &
        $(OBJS)\monolib_bmpcboxg.obj &
-       $(OBJS)\monolib_calctrl.obj &
+       $(OBJS)\monolib_calctrlg.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
        $(OBJS)\monolib_editlbox.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
        $(OBJS)\monolib_editlbox.obj &
@@ -2409,11 +2413,12 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_animatecmn.obj &
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_animatecmn.obj &
+       $(OBJS)\advdll_calctrlcmn.obj &
        $(OBJS)\advdll_datavcmn.obj &
        $(OBJS)\advdll_hyperlnkcmn.obj &
        $(OBJS)\advdll_aboutdlgg.obj &
        $(OBJS)\advdll_bmpcboxg.obj &
        $(OBJS)\advdll_datavcmn.obj &
        $(OBJS)\advdll_hyperlnkcmn.obj &
        $(OBJS)\advdll_aboutdlgg.obj &
        $(OBJS)\advdll_bmpcboxg.obj &
-       $(OBJS)\advdll_calctrl.obj &
+       $(OBJS)\advdll_calctrlg.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
        $(OBJS)\advdll_editlbox.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
        $(OBJS)\advdll_editlbox.obj &
@@ -2442,11 +2447,12 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_animatecmn.obj &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_animatecmn.obj &
+       $(OBJS)\advdll_calctrlcmn.obj &
        $(OBJS)\advdll_datavcmn.obj &
        $(OBJS)\advdll_hyperlnkcmn.obj &
        $(OBJS)\advdll_aboutdlgg.obj &
        $(OBJS)\advdll_bmpcboxg.obj &
        $(OBJS)\advdll_datavcmn.obj &
        $(OBJS)\advdll_hyperlnkcmn.obj &
        $(OBJS)\advdll_aboutdlgg.obj &
        $(OBJS)\advdll_bmpcboxg.obj &
-       $(OBJS)\advdll_calctrl.obj &
+       $(OBJS)\advdll_calctrlg.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
        $(OBJS)\advdll_editlbox.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
        $(OBJS)\advdll_editlbox.obj &
@@ -2485,11 +2491,12 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_animatecmn.obj &
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_animatecmn.obj &
+       $(OBJS)\advlib_calctrlcmn.obj &
        $(OBJS)\advlib_datavcmn.obj &
        $(OBJS)\advlib_hyperlnkcmn.obj &
        $(OBJS)\advlib_aboutdlgg.obj &
        $(OBJS)\advlib_bmpcboxg.obj &
        $(OBJS)\advlib_datavcmn.obj &
        $(OBJS)\advlib_hyperlnkcmn.obj &
        $(OBJS)\advlib_aboutdlgg.obj &
        $(OBJS)\advlib_bmpcboxg.obj &
-       $(OBJS)\advlib_calctrl.obj &
+       $(OBJS)\advlib_calctrlg.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
        $(OBJS)\advlib_editlbox.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
        $(OBJS)\advlib_editlbox.obj &
@@ -2518,11 +2525,12 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_animatecmn.obj &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_animatecmn.obj &
+       $(OBJS)\advlib_calctrlcmn.obj &
        $(OBJS)\advlib_datavcmn.obj &
        $(OBJS)\advlib_hyperlnkcmn.obj &
        $(OBJS)\advlib_aboutdlgg.obj &
        $(OBJS)\advlib_bmpcboxg.obj &
        $(OBJS)\advlib_datavcmn.obj &
        $(OBJS)\advlib_hyperlnkcmn.obj &
        $(OBJS)\advlib_aboutdlgg.obj &
        $(OBJS)\advlib_bmpcboxg.obj &
-       $(OBJS)\advlib_calctrl.obj &
+       $(OBJS)\advlib_calctrlg.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
        $(OBJS)\advlib_editlbox.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
        $(OBJS)\advlib_editlbox.obj &
@@ -7638,6 +7646,11 @@ $(OBJS)\monodll_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_calctrlcmn.obj :  .AUTODEPEND ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !ifeq USE_GUI 1
 $(OBJS)\monodll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -7659,7 +7672,7 @@ $(OBJS)\monodll_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !ifeq USE_GUI 1
 !endif
 
 !ifeq USE_GUI 1
-$(OBJS)\monodll_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
+$(OBJS)\monodll_calctrlg.obj :  .AUTODEPEND ..\..\src\generic\calctrlg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
@@ -9873,6 +9886,11 @@ $(OBJS)\monolib_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_calctrlcmn.obj :  .AUTODEPEND ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !ifeq USE_GUI 1
 $(OBJS)\monolib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -9894,7 +9912,7 @@ $(OBJS)\monolib_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
 !endif
 
 !ifeq USE_GUI 1
 !endif
 
 !ifeq USE_GUI 1
-$(OBJS)\monolib_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
+$(OBJS)\monolib_calctrlg.obj :  .AUTODEPEND ..\..\src\generic\calctrlg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
@@ -13613,6 +13631,9 @@ $(OBJS)\advdll_datectrl.obj :  .AUTODEPEND ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
 $(OBJS)\advdll_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
+$(OBJS)\advdll_calctrlcmn.obj :  .AUTODEPEND ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
 $(OBJS)\advdll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
 $(OBJS)\advdll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
@@ -13625,7 +13646,7 @@ $(OBJS)\advdll_aboutdlgg.obj :  .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advdll_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
 $(OBJS)\advdll_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
-$(OBJS)\advdll_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
+$(OBJS)\advdll_calctrlg.obj :  .AUTODEPEND ..\..\src\generic\calctrlg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
 $(OBJS)\advdll_datavgen.obj :  .AUTODEPEND ..\..\src\generic\datavgen.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
 $(OBJS)\advdll_datavgen.obj :  .AUTODEPEND ..\..\src\generic\datavgen.cpp
@@ -13711,6 +13732,9 @@ $(OBJS)\advlib_datectrl.obj :  .AUTODEPEND ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
 $(OBJS)\advlib_animatecmn.obj :  .AUTODEPEND ..\..\src\common\animatecmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
+$(OBJS)\advlib_calctrlcmn.obj :  .AUTODEPEND ..\..\src\common\calctrlcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
 $(OBJS)\advlib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
 $(OBJS)\advlib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
@@ -13723,7 +13747,7 @@ $(OBJS)\advlib_aboutdlgg.obj :  .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
 $(OBJS)\advlib_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
 $(OBJS)\advlib_bmpcboxg.obj :  .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
-$(OBJS)\advlib_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
+$(OBJS)\advlib_calctrlg.obj :  .AUTODEPEND ..\..\src\generic\calctrlg.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
 $(OBJS)\advlib_datavgen.obj :  .AUTODEPEND ..\..\src\generic\datavgen.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
 $(OBJS)\advlib_datavgen.obj :  .AUTODEPEND ..\..\src\generic\datavgen.cpp
index 1f28135bcec3b113267854bded4a3c3a444f244f..89105441bce053ff0bc779deb96415dc2e7c0f85 100644 (file)
@@ -248,6 +248,10 @@ SOURCE=..\..\src\common\animatecmn.cpp
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\src\common\calctrlcmn.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\src\common\datavcmn.cpp\r
 # End Source File\r
 # Begin Source File\r
 SOURCE=..\..\src\common\datavcmn.cpp\r
 # End Source File\r
 # Begin Source File\r
@@ -403,7 +407,7 @@ SOURCE=..\..\src\generic\bmpcboxg.cpp
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\src\generic\calctrl.cpp\r
+SOURCE=..\..\src\generic\calctrlg.cpp\r
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
@@ -744,7 +748,7 @@ SOURCE=..\..\include\wx\generic\bmpcbox.h
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\include\wx\generic\calctrl.h\r
+SOURCE=..\..\include\wx\generic\calctrlg.h\r
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
index 7b12b93c4e62646a586314113172ceb6b79af589..16161dc89f5e8569296adce586f72e680f2feab4 100644 (file)
@@ -5171,7 +5171,7 @@ SOURCE=..\..\include\wx\generic\buttonbar.h
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\include\wx\generic\calctrl.h\r
+SOURCE=..\..\include\wx\generic\calctrlg.h\r
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
index 3b27f64a5f6f47c607c641bcdee2fdfeb3df3748..5b373d67db76a83b8a2459175c74ee71180b556a 100644 (file)
                        UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}">\r
                        <File\r
                                RelativePath="..\..\src\common\animatecmn.cpp"/>\r
                        UniqueIdentifier="{A6A5C30D-BDB6-5050-906D-10A96065136C}">\r
                        <File\r
                                RelativePath="..\..\src\common\animatecmn.cpp"/>\r
+                       <File\r
+                               RelativePath="..\..\src\common\calctrlcmn.cpp"/>\r
                        <File\r
                                RelativePath="..\..\src\common\datavcmn.cpp"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\src\common\datavcmn.cpp"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\src\generic\bmpcboxg.cpp"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\src\generic\bmpcboxg.cpp"/>\r
                        <File\r
-                               RelativePath="..\..\src\generic\calctrl.cpp"/>\r
+                               RelativePath="..\..\src\generic\calctrlg.cpp"/>\r
                        <File\r
                                RelativePath="..\..\src\generic\datavgen.cpp"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\src\generic\datavgen.cpp"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\bmpcbox.h"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\bmpcbox.h"/>\r
                        <File\r
-                               RelativePath="..\..\include\wx\generic\calctrl.h"/>\r
+                               RelativePath="..\..\include\wx\generic\calctrlg.h"/>\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\dataview.h"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\dataview.h"/>\r
                        <File\r
index 5b97a3ea311458de8bc6ac68bd521f04656dbb3f..5c2fd98abfea5c2fca3f564fdcd78d6fe9890163 100644 (file)
                        <File\r
                                RelativePath="..\..\include\wx\generic\buttonbar.h"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\buttonbar.h"/>\r
                        <File\r
-                               RelativePath="..\..\include\wx\generic\calctrl.h"/>\r
+                               RelativePath="..\..\include\wx\generic\calctrlg.h"/>\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\choicdgg.h"/>\r
                        <File\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\choicdgg.h"/>\r
                        <File\r
index 841f3009f3f074442c64d89d3d12f0df6b242cca..50ae13efb27ac7fea5e226ec6a5eef28f05fba52 100644 (file)
                        <File\r
                                RelativePath="..\..\src\common\animatecmn.cpp"\r
                        />\r
                        <File\r
                                RelativePath="..\..\src\common\animatecmn.cpp"\r
                        />\r
+                       <File\r
+                               RelativePath="..\..\src\common\calctrlcmn.cpp"\r
+                       />\r
                        <File\r
                                RelativePath="..\..\src\common\datavcmn.cpp"\r
                        />\r
                        <File\r
                                RelativePath="..\..\src\common\datavcmn.cpp"\r
                        />\r
                                RelativePath="..\..\src\generic\bmpcboxg.cpp"\r
                        />\r
                        <File\r
                                RelativePath="..\..\src\generic\bmpcboxg.cpp"\r
                        />\r
                        <File\r
-                               RelativePath="..\..\src\generic\calctrl.cpp"\r
+                               RelativePath="..\..\src\generic\calctrlg.cpp"\r
                        />\r
                        <File\r
                                RelativePath="..\..\src\generic\datavgen.cpp"\r
                        />\r
                        <File\r
                                RelativePath="..\..\src\generic\datavgen.cpp"\r
                                RelativePath="..\..\include\wx\generic\bmpcbox.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\bmpcbox.h"\r
                        />\r
                        <File\r
-                               RelativePath="..\..\include\wx\generic\calctrl.h"\r
+                               RelativePath="..\..\include\wx\generic\calctrlg.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\dataview.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\dataview.h"\r
index 1b6fc57d836f8412d6e74024650fe32d031b4c07..45552632b2d528cf234d7f3fbf77ca9b9439fb34 100644 (file)
                                RelativePath="..\..\include\wx\generic\buttonbar.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\buttonbar.h"\r
                        />\r
                        <File\r
-                               RelativePath="..\..\include\wx\generic\calctrl.h"\r
+                               RelativePath="..\..\include\wx\generic\calctrlg.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\choicdgg.h"\r
                        />\r
                        <File\r
                                RelativePath="..\..\include\wx\generic\choicdgg.h"\r
index fe41bfce2ef66854f87612669b766499e4c925fc..4c8ff6c2b244d5f33fcc001c3d0441bffff5d494 100644 (file)
@@ -80,6 +80,11 @@ Changes in behaviour not resulting in compilation errors, please read this!
 - wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
   your code you need to override DoFreeze/Thaw() instead now.
 
 - wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
   your code you need to override DoFreeze/Thaw() instead now.
 
+- wxCalendarCtrl has native implementation in wxGTK, but it has less features
+  than the generic one. The native implementation is used by default, but you
+  can still use wxGenericCalendarCtrl instead of wxCalendarCtrl in your code if
+  you need the extra features.
+
 
 Changes in behaviour which may result in compilation errors
 -----------------------------------------------------------
 
 Changes in behaviour which may result in compilation errors
 -----------------------------------------------------------
@@ -176,6 +181,11 @@ Deprecated methods and their replacements
   respectively a wxBrushStyle and a wxPenStyle value instead of a plain "int style";
   use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX and wxPENSTYLE_XXX) instead
   of the old deprecated wxXXX styles (which however are still available).
   respectively a wxBrushStyle and a wxPenStyle value instead of a plain "int style";
   use the new wxBrush/wxPen style names (wxBRUSHSTYLE_XXX and wxPENSTYLE_XXX) instead
   of the old deprecated wxXXX styles (which however are still available).
+- EVT_CALENDAR_DAY event has been deprecated, use EVT_CALENDAR_SEL_CHANGED.
+- EVT_CALENDAR_MONTH and EVT_CALENDAR_YEAR events are deprecated,
+  use EVT_CALENDAR_PAGE_CHANGED which replaces both of them.
+- wxCalendarCtrl::EnableYearChange() and wxCAL_NO_YEAR_CHANGE are deprecated.
+
 
 
 Major new features in this release
 
 
 Major new features in this release
index 24c4146dff5afee1ed097da0144ebb7449aa773b..7e293b247a3d6e6228da30c8c3875b021a4c6c68 100644 (file)
@@ -9,13 +9,6 @@
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-/*
-   TODO
-
-   1. implement multiple selections for date ranges
-   2. background bitmap for the calendar?
- */
-
 #ifndef _WX_CALCTRL_H_
 #define _WX_CALCTRL_H_
 
 #ifndef _WX_CALCTRL_H_
 #define _WX_CALCTRL_H_
 
@@ -26,6 +19,7 @@
 #include "wx/dateevt.h"
 #include "wx/colour.h"
 #include "wx/font.h"
 #include "wx/dateevt.h"
 #include "wx/colour.h"
 #include "wx/font.h"
+#include "wx/control.h"
 
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl flags
 
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl flags
@@ -43,6 +37,7 @@ enum
     wxCAL_SHOW_HOLIDAYS              = 0x0002,
 
     // disable the year change control, show only the month change one
     wxCAL_SHOW_HOLIDAYS              = 0x0002,
 
     // disable the year change control, show only the month change one
+    // deprecated
     wxCAL_NO_YEAR_CHANGE             = 0x0004,
 
     // don't allow changing neither month nor year (implies
     wxCAL_NO_YEAR_CHANGE             = 0x0004,
 
     // don't allow changing neither month nor year (implies
@@ -85,20 +80,9 @@ enum wxCalendarDateBorder
 
 class WXDLLIMPEXP_ADV wxCalendarDateAttr
 {
 
 class WXDLLIMPEXP_ADV wxCalendarDateAttr
 {
-#if !defined(__VISAGECPP__)
-protected:
-    // This has to be before the use of Init(), for MSVC++ 1.5
-    // But dorks up Visualage!
-    void Init(wxCalendarDateBorder border = wxCAL_BORDER_NONE)
-    {
-        m_border = border;
-        m_holiday = false;
-    }
-#endif
 public:
     // ctors
 public:
     // ctors
-    wxCalendarDateAttr() { Init(); }
-    wxCalendarDateAttr(const wxColour& colText,
+    wxCalendarDateAttr(const wxColour& colText = wxNullColour,
                        const wxColour& colBack = wxNullColour,
                        const wxColour& colBorder = wxNullColour,
                        const wxFont& font = wxNullFont,
                        const wxColour& colBack = wxNullColour,
                        const wxColour& colBorder = wxNullColour,
                        const wxFont& font = wxNullFont,
@@ -137,16 +121,22 @@ public:
     const wxColour& GetBorderColour() const { return m_colBorder; }
     const wxFont& GetFont() const { return m_font; }
     wxCalendarDateBorder GetBorder() const { return m_border; }
     const wxColour& GetBorderColour() const { return m_colBorder; }
     const wxFont& GetFont() const { return m_font; }
     wxCalendarDateBorder GetBorder() const { return m_border; }
-#if defined(__VISAGECPP__)
+
+    // get or change the "mark" attribute, i.e. the one used for the items
+    // marked with wxCalendarCtrl::Mark()
+    static const wxCalendarDateAttr& GetMark() { return m_mark; }
+    static void SetMark(wxCalendarDateAttr const& m) { m_mark = m; }
+
 protected:
 protected:
-    // This has to be here for VisualAge
     void Init(wxCalendarDateBorder border = wxCAL_BORDER_NONE)
     {
         m_border = border;
         m_holiday = false;
     }
     void Init(wxCalendarDateBorder border = wxCAL_BORDER_NONE)
     {
         m_border = border;
         m_holiday = false;
     }
-#endif
+
 private:
 private:
+    static wxCalendarDateAttr m_mark;
+
     wxColour m_colText,
              m_colBack,
              m_colBorder;
     wxColour m_colText,
              m_colBack,
              m_colBorder;
@@ -163,51 +153,120 @@ class WXDLLIMPEXP_FWD_ADV wxCalendarCtrl;
 
 class WXDLLIMPEXP_ADV wxCalendarEvent : public wxDateEvent
 {
 
 class WXDLLIMPEXP_ADV wxCalendarEvent : public wxDateEvent
 {
-friend class wxCalendarCtrl;
 public:
 public:
-    wxCalendarEvent() { Init(); }
-    inline wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
+    wxCalendarEvent() : m_wday(wxDateTime::Inv_WeekDay)  { }
+    wxCalendarEvent(wxWindow *win, const wxDateTime& dt, wxEventType type)
+        : wxDateEvent(win, dt, type),
+          m_wday(wxDateTime::Inv_WeekDay)
+    {
+    }
 
     void SetWeekDay(const wxDateTime::WeekDay wd) { m_wday = wd; }
     wxDateTime::WeekDay GetWeekDay() const { return m_wday; }
 
 
     void SetWeekDay(const wxDateTime::WeekDay wd) { m_wday = wd; }
     wxDateTime::WeekDay GetWeekDay() const { return m_wday; }
 
-protected:
-    void Init()
-    {
-        m_wday = wxDateTime::Inv_WeekDay;
-    }
-
 private:
     wxDateTime::WeekDay m_wday;
 
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent)
 };
 
 private:
     wxDateTime::WeekDay m_wday;
 
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent)
 };
 
+// ----------------------------------------------------------------------------
+// wxCalendarCtrlBase
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxCalendarCtrlBase : public wxControl
+{
+public:
+    // do we allow changing the month/year?
+    bool AllowMonthChange() const { return !HasFlag(wxCAL_NO_MONTH_CHANGE); }
+
+    // get/set the current date
+    virtual wxDateTime GetDate() const = 0;
+    virtual bool SetDate(const wxDateTime& date) = 0;
+
+
+    // returns one of wxCAL_HITTEST_XXX constants and fills either date or wd
+    // with the corresponding value (none for NOWHERE, the date for DAY and wd
+    // for HEADER)
+    //
+    // notice that this is not implemented in all versions
+    virtual wxCalendarHitTestResult
+    HitTest(const wxPoint& WXUNUSED(pos),
+            wxDateTime* WXUNUSED(date) = NULL,
+            wxDateTime::WeekDay* WXUNUSED(wd) = NULL)
+    {
+        return wxCAL_HITTEST_NOWHERE;
+    }
+
+    // allow or disable changing the current month (and year), return true if
+    // the value of this option really changed or false if it was already set
+    // to the required value
+    //
+    // NB: we provide implementation for this pure virtual function, derived
+    //     classes should call it
+    virtual bool EnableMonthChange(bool enable) = 0;
+
+
+    // an item without custom attributes is drawn with the default colours and
+    // font and without border, setting custom attributes allows to modify this
+    //
+    // the day parameter should be in 1..31 range, for days 29, 30, 31 the
+    // corresponding attribute is just unused if there is no such day in the
+    // current month
+    //
+    // notice that currently arbitrary attributes are supported only in the
+    // generic version, the native controls only support Mark() which assigns
+    // some special appearance (which can be customized using SetMark() for the
+    // generic version) to the given day
+
+    virtual void Mark(size_t day, bool mark) = 0;
+
+    virtual wxCalendarDateAttr *GetAttr(size_t WXUNUSED(day)) const
+        { return NULL; }
+    virtual void SetAttr(size_t WXUNUSED(day), wxCalendarDateAttr *attr)
+        { delete attr; }
+    virtual void ResetAttr(size_t WXUNUSED(day)) { }
+
+
+    // implementation only from now on
+
+    // generate the given calendar event(s)
+    void GenerateEvent(wxEventType type)
+    {
+        wxCalendarEvent event(this, GetDate(), type);
+        HandleWindowEvent(event);
+    }
+};
+
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl
 // ----------------------------------------------------------------------------
 
 // ----------------------------------------------------------------------------
 // wxCalendarCtrl
 // ----------------------------------------------------------------------------
 
-// so far we only have a generic version, so keep it simple
-#include "wx/generic/calctrl.h"
+#define wxCalendarNameStr "CalendarCtrl"
 
 
+#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
+    #define wxHAS_NATIVE_CALENDARCTRL
+    #include "wx/gtk/calctrl.h"
+    #define wxCalendarCtrl wxGtkCalendarCtrl
+#else
+    #include "wx/generic/calctrlg.h"
+    #define wxCalendarCtrl wxGenericCalendarCtrl
+#endif
 
 
-// now we can define the inline ctor using wxCalendarCtrl
-inline
-wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type)
-               : wxDateEvent(cal, cal->GetDate(), type)
-{
-}
 
 // ----------------------------------------------------------------------------
 // calendar event types and macros for handling them
 // ----------------------------------------------------------------------------
 
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_SEL_CHANGED;
 
 // ----------------------------------------------------------------------------
 // calendar event types and macros for handling them
 // ----------------------------------------------------------------------------
 
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_SEL_CHANGED;
+extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_PAGE_CHANGED;
+extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_DOUBLECLICKED;
+extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_WEEKDAY_CLICKED;
+
+// deprecated events
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_DAY_CHANGED;
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_MONTH_CHANGED;
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_YEAR_CHANGED;
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_DAY_CHANGED;
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_MONTH_CHANGED;
 extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_YEAR_CHANGED;
-extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_DOUBLECLICKED;
-extern WXDLLIMPEXP_ADV const wxEventType wxEVT_CALENDAR_WEEKDAY_CLICKED;
 
 typedef void (wxEvtHandler::*wxCalendarEventFunction)(wxCalendarEvent&);
 
 
 typedef void (wxEvtHandler::*wxCalendarEventFunction)(wxCalendarEvent&);
 
@@ -219,10 +278,13 @@ typedef void (wxEvtHandler::*wxCalendarEventFunction)(wxCalendarEvent&);
 
 #define EVT_CALENDAR(id, fn) wx__DECLARE_CALEVT(DOUBLECLICKED, id, fn)
 #define EVT_CALENDAR_SEL_CHANGED(id, fn) wx__DECLARE_CALEVT(SEL_CHANGED, id, fn)
 
 #define EVT_CALENDAR(id, fn) wx__DECLARE_CALEVT(DOUBLECLICKED, id, fn)
 #define EVT_CALENDAR_SEL_CHANGED(id, fn) wx__DECLARE_CALEVT(SEL_CHANGED, id, fn)
+#define EVT_CALENDAR_PAGE_CHANGED(id, fn) wx__DECLARE_CALEVT(PAGE_CHANGED, id, fn)
+#define EVT_CALENDAR_WEEKDAY_CLICKED(id, fn) wx__DECLARE_CALEVT(WEEKDAY_CLICKED, id, fn)
+
+// deprecated events
 #define EVT_CALENDAR_DAY(id, fn) wx__DECLARE_CALEVT(DAY_CHANGED, id, fn)
 #define EVT_CALENDAR_MONTH(id, fn) wx__DECLARE_CALEVT(MONTH_CHANGED, id, fn)
 #define EVT_CALENDAR_YEAR(id, fn) wx__DECLARE_CALEVT(YEAR_CHANGED, id, fn)
 #define EVT_CALENDAR_DAY(id, fn) wx__DECLARE_CALEVT(DAY_CHANGED, id, fn)
 #define EVT_CALENDAR_MONTH(id, fn) wx__DECLARE_CALEVT(MONTH_CHANGED, id, fn)
 #define EVT_CALENDAR_YEAR(id, fn) wx__DECLARE_CALEVT(YEAR_CHANGED, id, fn)
-#define EVT_CALENDAR_WEEKDAY_CLICKED(id, fn) wx__DECLARE_CALEVT(WEEKDAY_CLICKED, id, fn)
 
 #endif // wxUSE_CALENDARCTRL
 
 
 #endif // wxUSE_CALENDARCTRL
 
index 18db28eb603e58fed2a4b3823836b9da0b0508a1..2175fb2568e2153613d2e8048857708b28a7ecc8 100644 (file)
@@ -57,11 +57,5 @@ typedef void (wxEvtHandler::*wxDateEventFunction)(wxDateEvent&);
 #define EVT_DATE_CHANGED(id, fn) \
     wx__DECLARE_EVT1(wxEVT_DATE_CHANGED, id, wxDateEventHandler(fn))
 
 #define EVT_DATE_CHANGED(id, fn) \
     wx__DECLARE_EVT1(wxEVT_DATE_CHANGED, id, wxDateEventHandler(fn))
 
-#ifdef _WX_DEFINE_DATE_EVENTS_
-    const wxEventType wxEVT_DATE_CHANGED = wxNewEventType();
-
-    IMPLEMENT_DYNAMIC_CLASS(wxDateEvent, wxCommandEvent)
-#endif
-
 #endif // _WX_DATEEVT_H_
 
 #endif // _WX_DATEEVT_H_
 
diff --git a/include/wx/generic/calctrl.h b/include/wx/generic/calctrl.h
deleted file mode 100644 (file)
index 08acaca..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        generic/calctrl.h
-// Purpose:     generic implementation of date-picker control
-// Author:      Vadim Zeitlin
-// Modified by:
-// Created:     29.12.99
-// RCS-ID:      $Id$
-// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_GENERIC_CALCTRL_H
-#define _WX_GENERIC_CALCTRL_H
-
-#include "wx/control.h"         // the base class
-#include "wx/dcclient.h"        // for wxPaintDC
-
-class WXDLLIMPEXP_FWD_CORE wxComboBox;
-class WXDLLIMPEXP_FWD_CORE wxStaticText;
-class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
-
-#define wxCalendarNameStr _T("CalendarCtrl")
-
-// ----------------------------------------------------------------------------
-// wxCalendarCtrl: a control allowing the user to pick a date interactively
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxControl
-{
-public:
-    // construction
-    wxCalendarCtrl() { Init(); }
-    wxCalendarCtrl(wxWindow *parent,
-                   wxWindowID id,
-                   const wxDateTime& date = wxDefaultDateTime,
-                   const wxPoint& pos = wxDefaultPosition,
-                   const wxSize& size = wxDefaultSize,
-                   long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
-                   const wxString& name = wxCalendarNameStr);
-
-    bool Create(wxWindow *parent,
-                wxWindowID id,
-                const wxDateTime& date = wxDefaultDateTime,
-                const wxPoint& pos = wxDefaultPosition,
-                const wxSize& size = wxDefaultSize,
-                long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
-                const wxString& name = wxCalendarNameStr);
-
-    virtual ~wxCalendarCtrl();
-
-    virtual bool Destroy();
-
-    // set/get the current date
-    // ------------------------
-
-    bool SetDate(const wxDateTime& date); // we need to be able to control if the event should be sent in SetDateAndNotify(...)
-    const wxDateTime& GetDate() const { return m_date; }
-
-    // set/get the range in which selection can occur
-    // ---------------------------------------------
-
-    bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime);
-    const wxDateTime& GetLowerDateLimit() const { return m_lowdate; }
-    bool SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime);
-    const wxDateTime& GetUpperDateLimit() const { return m_highdate; }
-
-    bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime);
-
-    // calendar mode
-    // -------------
-
-    // some calendar styles can't be changed after the control creation by
-    // just using SetWindowStyle() and Refresh() and the functions below
-    // should be used instead for them
-
-    // corresponds to wxCAL_NO_YEAR_CHANGE bit
-    void EnableYearChange(bool enable = true);
-
-    // corresponds to wxCAL_NO_MONTH_CHANGE bit
-    void EnableMonthChange(bool enable = true);
-
-    // corresponds to wxCAL_SHOW_HOLIDAYS bit
-    void EnableHolidayDisplay(bool display = true);
-
-    // customization
-    // -------------
-
-    // header colours are used for painting the weekdays at the top
-    void SetHeaderColours(const wxColour& colFg, const wxColour& colBg)
-    {
-        m_colHeaderFg = colFg;
-        m_colHeaderBg = colBg;
-    }
-
-    const wxColour& GetHeaderColourFg() const { return m_colHeaderFg; }
-    const wxColour& GetHeaderColourBg() const { return m_colHeaderBg; }
-
-    // highlight colour is used for the currently selected date
-    void SetHighlightColours(const wxColour& colFg, const wxColour& colBg)
-    {
-        m_colHighlightFg = colFg;
-        m_colHighlightBg = colBg;
-    }
-
-    const wxColour& GetHighlightColourFg() const { return m_colHighlightFg; }
-    const wxColour& GetHighlightColourBg() const { return m_colHighlightBg; }
-
-    // holiday colour is used for the holidays (if style & wxCAL_SHOW_HOLIDAYS)
-    void SetHolidayColours(const wxColour& colFg, const wxColour& colBg)
-    {
-        m_colHolidayFg = colFg;
-        m_colHolidayBg = colBg;
-    }
-
-    const wxColour& GetHolidayColourFg() const { return m_colHolidayFg; }
-    const wxColour& GetHolidayColourBg() const { return m_colHolidayBg; }
-
-    // an item without custom attributes is drawn with the default colours and
-    // font and without border, setting custom attributes allows to modify this
-    //
-    // the day parameter should be in 1..31 range, for days 29, 30, 31 the
-    // corresponding attribute is just unused if there is no such day in the
-    // current month
-
-    wxCalendarDateAttr *GetAttr(size_t day) const
-    {
-        wxCHECK_MSG( day > 0 && day < 32, NULL, _T("invalid day") );
-
-        return m_attrs[day - 1];
-    }
-
-    void SetAttr(size_t day, wxCalendarDateAttr *attr)
-    {
-        wxCHECK_RET( day > 0 && day < 32, _T("invalid day") );
-
-        delete m_attrs[day - 1];
-        m_attrs[day - 1] = attr;
-    }
-
-    void SetHoliday(size_t day);
-
-    void ResetAttr(size_t day) { SetAttr(day, (wxCalendarDateAttr *)NULL); }
-
-    // returns one of wxCAL_HITTEST_XXX constants and fills either date or wd
-    // with the corresponding value (none for NOWHERE, the date for DAY and wd
-    // for HEADER)
-    wxCalendarHitTestResult HitTest(const wxPoint& pos,
-                                    wxDateTime *date = NULL,
-                                    wxDateTime::WeekDay *wd = NULL);
-
-    // implementation only from now on
-    // -------------------------------
-
-    // forward these functions to all subcontrols
-    virtual bool Enable(bool enable = true);
-    virtual bool Show(bool show = true);
-
-    virtual void SetWindowStyleFlag(long style);
-
-    virtual wxVisualAttributes GetDefaultAttributes() const
-        { return GetClassDefaultAttributes(GetWindowVariant()); }
-
-    static wxVisualAttributes
-    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
-
-    void OnSysColourChanged(wxSysColourChangedEvent& event);
-
-protected:
-    // override some base class virtuals
-    virtual wxSize DoGetBestSize() const;
-    virtual void DoGetPosition(int *x, int *y) const;
-    virtual void DoGetSize(int *width, int *height) const;
-    virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags);
-    virtual void DoMoveWindow(int x, int y, int width, int height);
-
-private:
-    // common part of all ctors
-    void Init();
-
-    // startup colours and reinitialization after colour changes in system
-    void InitColours();
-
-    // event handlers
-    void OnPaint(wxPaintEvent& event);
-    void OnClick(wxMouseEvent& event);
-    void OnDClick(wxMouseEvent& event);
-    void OnChar(wxKeyEvent& event);
-    void OnMonthChange(wxCommandEvent& event);
-    void OnYearChange(wxCommandEvent& event);
-    void OnYearTextChange(wxCommandEvent& event);
-
-    // (re)calc m_widthCol and m_heightRow
-    void RecalcGeometry();
-
-    // set the date and send the notification
-    void SetDateAndNotify(const wxDateTime& date);
-
-    // get the week (row, in range 1..6) for the given date
-    size_t GetWeek(const wxDateTime& date) const;
-
-    // get the date from which we start drawing days
-    wxDateTime GetStartDate() const;
-
-    // is this date shown?
-    bool IsDateShown(const wxDateTime& date) const;
-
-    // is this date in the given range?
-    bool IsDateInRange(const wxDateTime& date) const;
-
-    // range helpers
-    bool ChangeYear(wxDateTime* target) const;
-    bool ChangeMonth(wxDateTime* target) const;
-
-    // redraw the given date
-    void RefreshDate(const wxDateTime& date);
-
-    // change the date inside the same month/year
-    void ChangeDay(const wxDateTime& date);
-
-    // set the attributes for the holidays if needed
-    void SetHolidayAttrs();
-
-    // reset all holidays
-    void ResetHolidayAttrs();
-
-    // generate the given calendar event(s)
-    void GenerateEvent(wxEventType type)
-    {
-        wxCalendarEvent event(this, type);
-        (void)GetEventHandler()->ProcessEvent(event);
-    }
-
-    void GenerateEvents(wxEventType type1, wxEventType type2)
-    {
-        GenerateEvent(type1);
-        GenerateEvent(type2);
-    }
-
-    // do we allow changing the month/year?
-    bool AllowMonthChange() const
-    {
-        return (GetWindowStyle() & wxCAL_NO_MONTH_CHANGE)
-                != wxCAL_NO_MONTH_CHANGE;
-    }
-    bool AllowYearChange() const
-    {
-        return !(GetWindowStyle() & wxCAL_NO_YEAR_CHANGE);
-    }
-
-    // show the correct controls
-    void ShowCurrentControls();
-
-    // create the month combo and year spin controls
-    void CreateMonthComboBox();
-    void CreateYearSpinCtrl();
-
-public:
-    // get the currently shown control for month/year
-    wxControl *GetMonthControl() const;
-    wxControl *GetYearControl() const;
-
-private:
-    // OnPaint helper-methods
-
-    // Highlight the [fromdate : todate] range using pen and brush
-    void HighlightRange(wxPaintDC* dc, const wxDateTime& fromdate, const wxDateTime& todate, const wxPen* pen, const wxBrush* brush);
-
-    // Get the "coordinates" for the date relative to the month currently displayed.
-    // using (day, week): upper left coord is (1, 1), lower right coord is (7, 6)
-    // if the date isn't visible (-1, -1) is put in (day, week) and false is returned
-    bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
-
-    // Set the flag for SetDate(): otherwise it would overwrite the year
-    // typed in by the user
-    void SetUserChangedYear() { m_userChangedYear = true; }
-
-    // the subcontrols
-    wxStaticText *m_staticMonth;
-    wxComboBox *m_comboMonth;
-
-    wxStaticText *m_staticYear;
-    wxSpinCtrl *m_spinYear;
-
-    // the current selection
-    wxDateTime m_date;
-
-    // the date-range
-    wxDateTime m_lowdate;
-    wxDateTime m_highdate;
-
-    // default attributes
-    wxColour m_colHighlightFg,
-             m_colHighlightBg,
-             m_colHolidayFg,
-             m_colHolidayBg,
-             m_colHeaderFg,
-             m_colHeaderBg,
-             m_colBackground,
-             m_colSorrounding;
-
-    // the attributes for each of the month days
-    wxCalendarDateAttr *m_attrs[31];
-
-    // the width and height of one column/row in the calendar
-    wxCoord m_widthCol,
-            m_heightRow,
-            m_rowOffset;
-
-    wxRect m_leftArrowRect,
-           m_rightArrowRect;
-
-    // the week day names
-    wxString m_weekdays[7];
-
-    // true if SetDate() is being called as the result of changing the year in
-    // the year control
-    bool m_userChangedYear;
-
-    DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
-    DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxCalendarCtrl)
-};
-
-#endif // _WX_GENERIC_CALCTRL_H
diff --git a/include/wx/generic/calctrlg.h b/include/wx/generic/calctrlg.h
new file mode 100644 (file)
index 0000000..682227c
--- /dev/null
@@ -0,0 +1,303 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        generic/calctrlg.h
+// Purpose:     generic implementation of date-picker control
+// Author:      Vadim Zeitlin
+// Modified by:
+// Created:     29.12.99
+// RCS-ID:      $Id$
+// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_CALCTRLG_H
+#define _WX_GENERIC_CALCTRLG_H
+
+#include "wx/control.h"         // the base class
+#include "wx/dcclient.h"        // for wxPaintDC
+
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
+
+// ----------------------------------------------------------------------------
+// wxGenericCalendarCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxGenericCalendarCtrl : public wxCalendarCtrlBase
+{
+public:
+    // construction
+    wxGenericCalendarCtrl() { Init(); }
+    wxGenericCalendarCtrl(wxWindow *parent,
+                          wxWindowID id,
+                          const wxDateTime& date = wxDefaultDateTime,
+                          const wxPoint& pos = wxDefaultPosition,
+                          const wxSize& size = wxDefaultSize,
+                          long style = wxCAL_SHOW_HOLIDAYS,
+                          const wxString& name = wxCalendarNameStr);
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxDateTime& date = wxDefaultDateTime,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxCAL_SHOW_HOLIDAYS,
+                const wxString& name = wxCalendarNameStr);
+
+    virtual ~wxGenericCalendarCtrl();
+
+    virtual bool Destroy();
+
+    // set/get the current date
+    // ------------------------
+
+    virtual bool SetDate(const wxDateTime& date);
+    virtual wxDateTime GetDate() const { return m_date; }
+
+
+    // set/get the range in which selection can occur
+    // ---------------------------------------------
+
+    // all functions in this section are for generic version only
+    bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime);
+    const wxDateTime& GetLowerDateLimit() const { return m_lowdate; }
+    bool SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime);
+    const wxDateTime& GetUpperDateLimit() const { return m_highdate; }
+
+    bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime,
+                      const wxDateTime& upperdate = wxDefaultDateTime);
+
+
+    // calendar mode
+    // -------------
+
+    // some calendar styles can't be changed after the control creation by
+    // just using SetWindowStyle() and Refresh() and the functions below
+    // should be used instead for them
+
+    // corresponds to wxCAL_NO_MONTH_CHANGE bit
+    virtual bool EnableMonthChange(bool enable = true);
+
+    // corresponds to wxCAL_NO_YEAR_CHANGE bit, deprecated, generic only
+    void EnableYearChange(bool enable = true);
+
+    // corresponds to wxCAL_SHOW_HOLIDAYS bit, generic only
+    void EnableHolidayDisplay(bool display = true);
+
+
+    // customization
+    // -------------
+
+    virtual void Mark(size_t day, bool mark);
+
+    // all other functions in this section are for generic version only
+
+    // header colours are used for painting the weekdays at the top
+    void SetHeaderColours(const wxColour& colFg, const wxColour& colBg)
+    {
+        m_colHeaderFg = colFg;
+        m_colHeaderBg = colBg;
+    }
+
+    const wxColour& GetHeaderColourFg() const { return m_colHeaderFg; }
+    const wxColour& GetHeaderColourBg() const { return m_colHeaderBg; }
+
+    // highlight colour is used for the currently selected date
+    void SetHighlightColours(const wxColour& colFg, const wxColour& colBg)
+    {
+        m_colHighlightFg = colFg;
+        m_colHighlightBg = colBg;
+    }
+
+    const wxColour& GetHighlightColourFg() const { return m_colHighlightFg; }
+    const wxColour& GetHighlightColourBg() const { return m_colHighlightBg; }
+
+    // holiday colour is used for the holidays (if style & wxCAL_SHOW_HOLIDAYS)
+    void SetHolidayColours(const wxColour& colFg, const wxColour& colBg)
+    {
+        m_colHolidayFg = colFg;
+        m_colHolidayBg = colBg;
+    }
+
+    const wxColour& GetHolidayColourFg() const { return m_colHolidayFg; }
+    const wxColour& GetHolidayColourBg() const { return m_colHolidayBg; }
+
+    virtual wxCalendarDateAttr *GetAttr(size_t day) const
+    {
+        wxCHECK_MSG( day > 0 && day < 32, NULL, _T("invalid day") );
+
+        return m_attrs[day - 1];
+    }
+
+    virtual void SetAttr(size_t day, wxCalendarDateAttr *attr)
+    {
+        wxCHECK_RET( day > 0 && day < 32, _T("invalid day") );
+
+        delete m_attrs[day - 1];
+        m_attrs[day - 1] = attr;
+    }
+
+    virtual void ResetAttr(size_t day) { SetAttr(day, NULL); }
+
+    void SetHoliday(size_t day);
+
+    virtual wxCalendarHitTestResult HitTest(const wxPoint& pos,
+                                            wxDateTime *date = NULL,
+                                            wxDateTime::WeekDay *wd = NULL);
+
+    // implementation only from now on
+    // -------------------------------
+
+    // forward these functions to all subcontrols
+    virtual bool Enable(bool enable = true);
+    virtual bool Show(bool show = true);
+
+    virtual void SetWindowStyleFlag(long style);
+
+    virtual wxVisualAttributes GetDefaultAttributes() const
+        { return GetClassDefaultAttributes(GetWindowVariant()); }
+
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
+    void OnSysColourChanged(wxSysColourChangedEvent& event);
+
+protected:
+    // override some base class virtuals
+    virtual wxSize DoGetBestSize() const;
+    virtual void DoGetPosition(int *x, int *y) const;
+    virtual void DoGetSize(int *width, int *height) const;
+    virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags);
+    virtual void DoMoveWindow(int x, int y, int width, int height);
+
+private:
+    // common part of all ctors
+    void Init();
+
+    // startup colours and reinitialization after colour changes in system
+    void InitColours();
+
+    // event handlers
+    void OnPaint(wxPaintEvent& event);
+    void OnClick(wxMouseEvent& event);
+    void OnDClick(wxMouseEvent& event);
+    void OnChar(wxKeyEvent& event);
+    void OnMonthChange(wxCommandEvent& event);
+    void OnYearChange(wxCommandEvent& event);
+    void OnYearTextChange(wxCommandEvent& event);
+
+    // (re)calc m_widthCol and m_heightRow
+    void RecalcGeometry();
+
+    // set the date and send the notification
+    void SetDateAndNotify(const wxDateTime& date);
+
+    // get the week (row, in range 1..6) for the given date
+    size_t GetWeek(const wxDateTime& date) const;
+
+    // get the date from which we start drawing days
+    wxDateTime GetStartDate() const;
+
+    // is this date shown?
+    bool IsDateShown(const wxDateTime& date) const;
+
+    // is this date in the given range?
+    bool IsDateInRange(const wxDateTime& date) const;
+
+    // range helpers
+    bool ChangeYear(wxDateTime* target) const;
+    bool ChangeMonth(wxDateTime* target) const;
+
+    // redraw the given date
+    void RefreshDate(const wxDateTime& date);
+
+    // change the date inside the same month/year
+    void ChangeDay(const wxDateTime& date);
+
+    // set the attributes for the holidays if needed
+    void SetHolidayAttrs();
+
+    // reset all holidays
+    void ResetHolidayAttrs();
+
+    // deprecated
+    bool AllowYearChange() const
+    {
+        return !(GetWindowStyle() & wxCAL_NO_YEAR_CHANGE);
+    }
+
+    // show the correct controls
+    void ShowCurrentControls();
+
+    // create the month combo and year spin controls
+    void CreateMonthComboBox();
+    void CreateYearSpinCtrl();
+
+public:
+    // get the currently shown control for month/year
+    wxControl *GetMonthControl() const;
+    wxControl *GetYearControl() const;
+
+private:
+    // OnPaint helper-methods
+
+    // Highlight the [fromdate : todate] range using pen and brush
+    void HighlightRange(wxPaintDC* dc, const wxDateTime& fromdate, const wxDateTime& todate, const wxPen* pen, const wxBrush* brush);
+
+    // Get the "coordinates" for the date relative to the month currently displayed.
+    // using (day, week): upper left coord is (1, 1), lower right coord is (7, 6)
+    // if the date isn't visible (-1, -1) is put in (day, week) and false is returned
+    bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
+
+    // Set the flag for SetDate(): otherwise it would overwrite the year
+    // typed in by the user
+    void SetUserChangedYear() { m_userChangedYear = true; }
+
+    // the subcontrols
+    wxStaticText *m_staticMonth;
+    wxComboBox *m_comboMonth;
+
+    wxStaticText *m_staticYear;
+    wxSpinCtrl *m_spinYear;
+
+    // the current selection
+    wxDateTime m_date;
+
+    // the date-range
+    wxDateTime m_lowdate;
+    wxDateTime m_highdate;
+
+    // default attributes
+    wxColour m_colHighlightFg,
+             m_colHighlightBg,
+             m_colHolidayFg,
+             m_colHolidayBg,
+             m_colHeaderFg,
+             m_colHeaderBg,
+             m_colBackground,
+             m_colSorrounding;
+
+    // the attributes for each of the month days
+    wxCalendarDateAttr *m_attrs[31];
+
+    // the width and height of one column/row in the calendar
+    wxCoord m_widthCol,
+            m_heightRow,
+            m_rowOffset;
+
+    wxRect m_leftArrowRect,
+           m_rightArrowRect;
+
+    // the week day names
+    wxString m_weekdays[7];
+
+    // true if SetDate() is being called as the result of changing the year in
+    // the year control
+    bool m_userChangedYear;
+
+    DECLARE_DYNAMIC_CLASS(wxGenericCalendarCtrl)
+    DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxGenericCalendarCtrl)
+};
+
+#endif // _WX_GENERIC_CALCTRLG_H
index da7bf724624748758710f343c9f162dae851c1a3..c84f551994626c1a98174a29885b214e80a107eb 100644 (file)
@@ -13,7 +13,7 @@
 #define _WX_GENERIC_DATECTRL_H_
 
 class WXDLLIMPEXP_FWD_ADV wxCalendarDateAttr;
 #define _WX_GENERIC_DATECTRL_H_
 
 class WXDLLIMPEXP_FWD_ADV wxCalendarDateAttr;
-class WXDLLIMPEXP_FWD_ADV wxCalendarCtrl;
+class WXDLLIMPEXP_FWD_ADV wxGenericCalendarCtrl;
 class WXDLLIMPEXP_FWD_ADV wxCalendarEvent;
 class WXDLLIMPEXP_FWD_CORE wxComboCtrl;
 class WXDLLIMPEXP_FWD_ADV wxCalendarComboPopup;
 class WXDLLIMPEXP_FWD_ADV wxCalendarEvent;
 class WXDLLIMPEXP_FWD_CORE wxComboCtrl;
 class WXDLLIMPEXP_FWD_ADV wxCalendarComboPopup;
@@ -59,7 +59,7 @@ public:
 
     // extra methods available only in this (generic) implementation
     bool SetFormat(const wxString& fmt);
 
     // extra methods available only in this (generic) implementation
     bool SetFormat(const wxString& fmt);
-    wxCalendarCtrl *GetCalendar() const;
+    wxGenericCalendarCtrl *GetCalendar() const;
 
 
     // implementation only from now on
 
 
     // implementation only from now on
diff --git a/include/wx/gtk/calctrl.h b/include/wx/gtk/calctrl.h
new file mode 100644 (file)
index 0000000..73b3d91
--- /dev/null
@@ -0,0 +1,50 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/calctrl.h
+// Purpose:     wxGtkCalendarCtrl control
+// Author:      Marcin Wojdyr
+// RCS-ID:      $Id$
+// Copyright:   (C) 2008 Marcin Wojdyr
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef GTK_CALCTRL_H__
+#define GTK_CALCTRL_H__
+
+class WXDLLIMPEXP_ADV wxGtkCalendarCtrl : public wxCalendarCtrlBase
+{
+public:
+    wxGtkCalendarCtrl() {}
+    wxGtkCalendarCtrl(wxWindow *parent,
+                          wxWindowID id,
+                          const wxDateTime& date = wxDefaultDateTime,
+                          const wxPoint& pos = wxDefaultPosition,
+                          const wxSize& size = wxDefaultSize,
+                          long style = wxCAL_SHOW_HOLIDAYS,
+                          const wxString& name = wxCalendarNameStr)
+    {
+        Create(parent, id, date, pos, size, style, name);
+    }
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxDateTime& date = wxDefaultDateTime,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxCAL_SHOW_HOLIDAYS,
+                const wxString& name = wxCalendarNameStr);
+
+    virtual ~wxGtkCalendarCtrl() {}
+
+    virtual bool SetDate(const wxDateTime& date);
+    virtual wxDateTime GetDate() const;
+
+    virtual bool EnableMonthChange(bool enable = true);
+
+    virtual void Mark(size_t day, bool mark);
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxGtkCalendarCtrl)
+    DECLARE_NO_COPY_CLASS(wxGtkCalendarCtrl)
+};
+
+#endif // GTK_CALCTRL_H__
index 244d841c9baf1f4be9a694696af490e7b9268d72..d894e1f82136739e62984d83fe0348232604cfce 100644 (file)
@@ -29,8 +29,8 @@ public:
     wxDateTime::WeekDay GetWeekDay() const;
 
     /**
     wxDateTime::WeekDay GetWeekDay() const;
 
     /**
-        Sets the week day carried by the event, normally only used by the library
-        internally.
+        Sets the week day carried by the event,
+        normally only used by the library internally.
     */
     void SetWeekDay(wxDateTime::WeekDay day);
 };
     */
     void SetWeekDay(wxDateTime::WeekDay day);
 };
@@ -152,6 +152,17 @@ public:
         Sets the text (foreground) colour to use.
     */
     void SetTextColour(const wxColour& colText);
         Sets the text (foreground) colour to use.
     */
     void SetTextColour(const wxColour& colText);
+
+    /**
+        Used (internally) by generic wxCalendarCtrl::Mark()
+    */
+    static const wxCalendarDateAttr& GetMark();
+
+    /**
+       Set the attribute that will be used to Mark() days
+       on generic wxCalendarCtrl
+    */
+    static void SetMark(wxCalendarDateAttr const& m);
 };
 
 
 };
 
 
@@ -160,56 +171,69 @@ public:
     @class wxCalendarCtrl
     @wxheader{calctrl.h}
 
     @class wxCalendarCtrl
     @wxheader{calctrl.h}
 
-    The calendar control allows the user to pick a date. For this,
-    it displays a window containing several parts: a control at the top to pick the
-    month
-    and the year (either or both of them may be disabled), and a month
-    area below them which shows all the days in the month. The user can move the
+    The calendar control allows the user to pick a date.  The user can move the
     current selection using the keyboard and select the date (generating
     @c EVT_CALENDAR event) by pressing @c Return or double clicking it.
 
     current selection using the keyboard and select the date (generating
     @c EVT_CALENDAR event) by pressing @c Return or double clicking it.
 
-    It has advanced possibilities for the customization of its display. All global
-    settings (such as colours and fonts used) can, of course, be changed. But
-    also, the display style for each day in the month can be set independently
-    using wxCalendarDateAttr class.
+    Generic calendar has advanced possibilities for the customization of its
+    display, described below. If you want to use these possibilities on
+    every platform, use wxGenericCalendarCtrl instead of wxCalendarCtrl.
+
+    All global settings (such as colours and fonts used) can, of course,
+    be changed. But also, the display style for each day in the month can
+    be set independently using wxCalendarDateAttr class.
 
     An item without custom attributes is drawn with the default colours and
     font and without border, but setting custom attributes with
     wxCalendarCtrl::SetAttr allows to modify its appearance. Just
     create a custom attribute object and set it for the day you want to be
 
     An item without custom attributes is drawn with the default colours and
     font and without border, but setting custom attributes with
     wxCalendarCtrl::SetAttr allows to modify its appearance. Just
     create a custom attribute object and set it for the day you want to be
-    displayed specially (note that the control will take ownership of the pointer,
-    i.e. it will delete it itself). A day may be marked as being a holiday, even
-    if it is not recognized as one by wxDateTime using
-    wxCalendarDateAttr::SetHoliday method.
+    displayed specially (note that the control will take ownership of
+    the pointer, i.e. it will delete it itself).
+    A day may be marked as being a holiday, even if it is not recognized as
+    one by wxDateTime using wxCalendarDateAttr::SetHoliday method.
 
     As the attributes are specified for each day, they may change when the month
     is changed, so you will often want to update them in
 
     As the attributes are specified for each day, they may change when the month
     is changed, so you will often want to update them in
-    @c EVT_CALENDAR_MONTH event handler.
+    @c EVT_CALENDAR_PAGE_CHANGED event handler.
 
     @beginStyleTable
     @style{wxCAL_SUNDAY_FIRST}:
 
     @beginStyleTable
     @style{wxCAL_SUNDAY_FIRST}:
-           Show Sunday as the first day in the week
+           Show Sunday as the first day in the week (only generic)
     @style{wxCAL_MONDAY_FIRST}:
     @style{wxCAL_MONDAY_FIRST}:
-           Show Monday as the first day in the week
+           Show Monday as the first day in the week (only generic)
     @style{wxCAL_SHOW_HOLIDAYS}:
     @style{wxCAL_SHOW_HOLIDAYS}:
-           Highlight holidays in the calendar
+           Highlight holidays in the calendar (only generic)
     @style{wxCAL_NO_YEAR_CHANGE}:
     @style{wxCAL_NO_YEAR_CHANGE}:
-           Disable the year changing
+           Disable the year changing (deprecated, only generic)
     @style{wxCAL_NO_MONTH_CHANGE}:
            Disable the month (and, implicitly, the year) changing
     @style{wxCAL_SHOW_SURROUNDING_WEEKS}:
            Show the neighbouring weeks in the previous and next months
     @style{wxCAL_NO_MONTH_CHANGE}:
            Disable the month (and, implicitly, the year) changing
     @style{wxCAL_SHOW_SURROUNDING_WEEKS}:
            Show the neighbouring weeks in the previous and next months
+           (only generic)
     @style{wxCAL_SEQUENTIAL_MONTH_SELECTION}:
            Use alternative, more compact, style for the month and year
     @style{wxCAL_SEQUENTIAL_MONTH_SELECTION}:
            Use alternative, more compact, style for the month and year
-           selection controls.
+           selection controls. (only generic)
     @endStyleTable
 
     @endStyleTable
 
+    @beginEventTable
+    @event{EVT_CALENDAR(id, func)}:
+           A day was double clicked in the calendar.
+    @event{EVT_CALENDAR_SEL_CHANGED(id, func)}:
+           The selected date changed.
+    @event{EVT_CALENDAR_PAGE_CHANGED(id, func)}:
+           The selected month (and/or year) changed.
+    @event{EVT_CALENDAR_WEEKDAY_CLICKED(id, func)}:
+           User clicked on the week day header (only generic).
+    @endEventTable
+
     @library{wxadv}
     @category{ctrl}
     @appearance{calendarctrl.png}
 
     @library{wxadv}
     @category{ctrl}
     @appearance{calendarctrl.png}
 
+    @nativeimpl{wxgtk}
+
     @see @ref overview_samplecalendar "Calendar sample", wxCalendarDateAttr,
     @see @ref overview_samplecalendar "Calendar sample", wxCalendarDateAttr,
-    wxCalendarEvent
+    wxCalendarEvent, wxDatePickerCtrl
 */
 class wxCalendarCtrl : public wxControl
 {
 */
 class wxCalendarCtrl : public wxControl
 {
@@ -253,21 +277,26 @@ public:
     /**
         This function should be used instead of changing
         @c wxCAL_NO_MONTH_CHANGE style bit. It allows or disallows the user to
     /**
         This function should be used instead of changing
         @c wxCAL_NO_MONTH_CHANGE style bit. It allows or disallows the user to
-        change the month interactively. Note that if the month can not be changed, the
-        year can not be changed neither.
+        change the month interactively. Note that if the month can not
+        be changed, the year can not be changed neither.
+
+        @return @true if the value of this option really changed or @false
+                if it was already set to the requested value.
     */
     */
-    void EnableMonthChange(bool enable = true);
+    bool EnableMonthChange(bool enable = true);
 
     /**
 
     /**
+        @deprecated
+
         This function should be used instead of changing @c wxCAL_NO_YEAR_CHANGE
         style bit directly. It allows or disallows the user to change the year
         This function should be used instead of changing @c wxCAL_NO_YEAR_CHANGE
         style bit directly. It allows or disallows the user to change the year
-        interactively.
+        interactively. Only in generic wxCalendarCtrl.
     */
     void EnableYearChange(bool enable = true);
 
     /**
         Returns the attribute for the given date (should be in the range 1...31).
     */
     void EnableYearChange(bool enable = true);
 
     /**
         Returns the attribute for the given date (should be in the range 1...31).
-        The returned pointer may be @NULL.
+        The returned pointer may be @NULL. Only in generic wxCalendarCtrl.
     */
     wxCalendarDateAttr* GetAttr(size_t day) const;
 
     */
     wxCalendarDateAttr* GetAttr(size_t day) const;
 
@@ -285,20 +314,21 @@ public:
 
     /**
         Gets the foreground colour of the header part of the calendar window.
 
     /**
         Gets the foreground colour of the header part of the calendar window.
+        Only in generic wxCalendarCtrl.
 
         @see SetHeaderColours()
     */
     const wxColour GetHeaderColourFg() const;
 
     /**
 
         @see SetHeaderColours()
     */
     const wxColour GetHeaderColourFg() const;
 
     /**
-        Gets the background highlight colour.
+        Gets the background highlight colour. Only in generic wxCalendarCtrl.
 
         @see SetHighlightColours()
     */
     const wxColour GetHighlightColourBg() const;
 
     /**
 
         @see SetHighlightColours()
     */
     const wxColour GetHighlightColourBg() const;
 
     /**
-        Gets the foreground highlight colour.
+        Gets the foreground highlight colour. Only in generic wxCalendarCtrl.
 
         @see SetHighlightColours()
     */
 
         @see SetHighlightColours()
     */
@@ -306,6 +336,7 @@ public:
 
     /**
         Return the background colour currently used for holiday highlighting.
 
     /**
         Return the background colour currently used for holiday highlighting.
+        Only in generic wxCalendarCtrl.
 
         @see SetHolidayColours()
     */
 
         @see SetHolidayColours()
     */
@@ -313,6 +344,7 @@ public:
 
     /**
         Return the foreground colour currently used for holiday highlighting.
 
     /**
         Return the foreground colour currently used for holiday highlighting.
+        Only in generic wxCalendarCtrl.
 
         @see SetHolidayColours()
     */
 
         @see SetHolidayColours()
     */
@@ -320,8 +352,9 @@ public:
 
     /**
         Returns one of @c wxCAL_HITTEST_XXX
 
     /**
         Returns one of @c wxCAL_HITTEST_XXX
-        constants() and fills either @a date or
-        @a wd pointer with the corresponding value depending on the hit test code.
+        constants() and fills either @a date or @a wd pointer with
+        the corresponding value depending on the hit test code.
+        Only in generic wxCalendarCtrl.
     */
     wxCalendarHitTestResult HitTest(const wxPoint& pos,
                                     wxDateTime* date = NULL,
     */
     wxCalendarHitTestResult HitTest(const wxPoint& pos,
                                     wxDateTime* date = NULL,
@@ -330,12 +363,14 @@ public:
     /**
         Clears any attributes associated with the given day (in the range
         1...31).
     /**
         Clears any attributes associated with the given day (in the range
         1...31).
+        Only in generic wxCalendarCtrl.
     */
     void ResetAttr(size_t day);
 
     /**
         Associates the attribute with the specified date (in the range 1...31).
         If the pointer is @NULL, the items attribute is cleared.
     */
     void ResetAttr(size_t day);
 
     /**
         Associates the attribute with the specified date (in the range 1...31).
         If the pointer is @NULL, the items attribute is cleared.
+        Only in generic wxCalendarCtrl.
     */
     void SetAttr(size_t day, wxCalendarDateAttr* attr);
 
     */
     void SetAttr(size_t day, wxCalendarDateAttr* attr);
 
@@ -346,12 +381,14 @@ public:
 
     /**
         Set the colours used for painting the weekdays at the top of the control.
 
     /**
         Set the colours used for painting the weekdays at the top of the control.
+        Only in generic wxCalendarCtrl.
     */
     void SetHeaderColours(const wxColour& colFg,
                           const wxColour& colBg);
 
     /**
         Set the colours to be used for highlighting the currently selected date.
     */
     void SetHeaderColours(const wxColour& colFg,
                           const wxColour& colBg);
 
     /**
         Set the colours to be used for highlighting the currently selected date.
+        Only in generic wxCalendarCtrl.
     */
     void SetHighlightColours(const wxColour& colFg,
                              const wxColour& colBg);
     */
     void SetHighlightColours(const wxColour& colFg,
                              const wxColour& colBg);
@@ -364,8 +401,16 @@ public:
     /**
         Sets the colours to be used for the holidays highlighting (only used if the
         window style includes @c wxCAL_SHOW_HOLIDAYS flag).
     /**
         Sets the colours to be used for the holidays highlighting (only used if the
         window style includes @c wxCAL_SHOW_HOLIDAYS flag).
+        Only in generic wxCalendarCtrl.
     */
     void SetHolidayColours(const wxColour& colFg,
                            const wxColour& colBg);
     */
     void SetHolidayColours(const wxColour& colFg,
                            const wxColour& colBg);
+
+    /**
+        Mark or unmark the day.
+        This day of month will be marked in every month.
+        In generic wxCalendarCtrl,
+    */
+    void Mark(size_t day, bool mark);
 };
 
 };
 
index 4e003535e8483a0edd77a6b3d87b4ab6e15ca743..5241a440a689bd4fb83a8956f024ecd6f9e0a7a3 100644 (file)
@@ -42,6 +42,7 @@
 #endif
 
 #include "wx/calctrl.h"
 #endif
 
 #include "wx/calctrl.h"
+#include "wx/splitter.h"
 
 #if wxUSE_DATEPICKCTRL
     #include "wx/datectrl.h"
 
 #if wxUSE_DATEPICKCTRL
     #include "wx/datectrl.h"
 
 #include "../sample.xpm"
 
 
 #include "../sample.xpm"
 
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    #include "wx/generic/calctrlg.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // private classes
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // private classes
 // ----------------------------------------------------------------------------
@@ -72,29 +77,40 @@ public:
 class MyPanel : public wxPanel
 {
 public:
 class MyPanel : public wxPanel
 {
 public:
-    MyPanel(wxFrame *frame);
+    MyPanel(wxWindow *parent);
 
     void OnCalendar(wxCalendarEvent& event);
     void OnCalendarWeekDayClick(wxCalendarEvent& event);
     void OnCalendarChange(wxCalendarEvent& event);
     void OnCalMonthChange(wxCalendarEvent& event);
 
     void OnCalendar(wxCalendarEvent& event);
     void OnCalendarWeekDayClick(wxCalendarEvent& event);
     void OnCalendarChange(wxCalendarEvent& event);
     void OnCalMonthChange(wxCalendarEvent& event);
-    void OnCalYearChange(wxCalendarEvent& event);
 
 
-    wxCalendarCtrl *GetCal() const { return m_calendar; }
+    wxCalendarCtrlBase *GetCal() const { return m_calendar; }
 
     // turn on/off the specified style bit on the calendar control
     void ToggleCalStyle(bool on, int style);
 
 
     // turn on/off the specified style bit on the calendar control
     void ToggleCalStyle(bool on, int style);
 
+    bool IsUsingGeneric() const { return m_usingGeneric; }
+    void ToggleUseGeneric()
+    {
+        m_usingGeneric = !m_usingGeneric;
+        RecreateCalendar(m_calendar->GetWindowStyle());
+    }
+
     void HighlightSpecial(bool on);
 
     wxDateTime GetDate() const { return m_calendar->GetDate(); }
     void SetDate(const wxDateTime& dt) { m_calendar->SetDate(dt); }
 
 private:
     void HighlightSpecial(bool on);
 
     wxDateTime GetDate() const { return m_calendar->GetDate(); }
     void SetDate(const wxDateTime& dt) { m_calendar->SetDate(dt); }
 
 private:
-    wxCalendarCtrl *m_calendar;
+    void RecreateCalendar(long style);
+
+    wxCalendarCtrlBase *m_calendar;
     wxStaticText   *m_date;
     wxSizer        *m_sizer;
 
     wxStaticText   *m_date;
     wxSizer        *m_sizer;
 
+    bool m_usingGeneric;
+
+
     DECLARE_EVENT_TABLE()
 };
 
     DECLARE_EVENT_TABLE()
 };
 
@@ -106,8 +122,9 @@ public:
     MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
 
     // event handlers (these functions should _not_ be virtual)
     MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
 
     // event handlers (these functions should _not_ be virtual)
-    void OnQuit(wxCommandEvent& event);
     void OnAbout(wxCommandEvent& event);
     void OnAbout(wxCommandEvent& event);
+    void OnClearLog(wxCommandEvent& event);
+    void OnQuit(wxCommandEvent& event);
 
 #if wxUSE_DATEPICKCTRL
     void OnAskDate(wxCommandEvent& event);
 
 #if wxUSE_DATEPICKCTRL
     void OnAskDate(wxCommandEvent& event);
@@ -115,12 +132,18 @@ public:
     void OnUpdateUIStartWithNone(wxUpdateUIEvent& event);
 #endif // wxUSE_DATEPICKCTRL
 
     void OnUpdateUIStartWithNone(wxUpdateUIEvent& event);
 #endif // wxUSE_DATEPICKCTRL
 
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    void OnCalGeneric(wxCommandEvent& WXUNUSED(event))
+    {
+        m_panel->ToggleUseGeneric();
+    }
+#endif // wxHAS_NATIVE_CALENDARCTRL
+
     void OnCalMonday(wxCommandEvent& event);
     void OnCalHolidays(wxCommandEvent& event);
     void OnCalSpecial(wxCommandEvent& event);
 
     void OnCalAllowMonth(wxCommandEvent& event);
     void OnCalMonday(wxCommandEvent& event);
     void OnCalHolidays(wxCommandEvent& event);
     void OnCalSpecial(wxCommandEvent& event);
 
     void OnCalAllowMonth(wxCommandEvent& event);
-    void OnCalAllowYear(wxCommandEvent& event);
 
     void OnCalSeqMonth(wxCommandEvent& event);
     void OnCalShowSurroundingWeeks(wxCommandEvent& event);
 
     void OnCalSeqMonth(wxCommandEvent& event);
     void OnCalShowSurroundingWeeks(wxCommandEvent& event);
@@ -131,10 +154,14 @@ public:
 
     void OnCalToggleResizable(wxCommandEvent& event);
 
 
     void OnCalToggleResizable(wxCommandEvent& event);
 
-    void OnAllowYearUpdate(wxUpdateUIEvent& event);
+    void OnUpdateUIGenericOnly(wxUpdateUIEvent& event)
+    {
+        event.Enable(m_panel->IsUsingGeneric());
+    }
 
 private:
     MyPanel *m_panel;
 
 private:
     MyPanel *m_panel;
+    wxTextCtrl *m_logWindow;
 
     // any class wishing to process wxWidgets events must use this macro
     DECLARE_EVENT_TABLE()
 
     // any class wishing to process wxWidgets events must use this macro
     DECLARE_EVENT_TABLE()
@@ -172,12 +199,13 @@ enum
 {
     // menu items
     Calendar_File_About = wxID_ABOUT,
 {
     // menu items
     Calendar_File_About = wxID_ABOUT,
+    Calendar_File_ClearLog = wxID_CLEAR,
     Calendar_File_Quit = wxID_EXIT,
     Calendar_File_Quit = wxID_EXIT,
-    Calendar_Cal_Monday = 200,
+    Calendar_Cal_Generic = 200,
+    Calendar_Cal_Monday,
     Calendar_Cal_Holidays,
     Calendar_Cal_Special,
     Calendar_Cal_Month,
     Calendar_Cal_Holidays,
     Calendar_Cal_Special,
     Calendar_Cal_Month,
-    Calendar_Cal_Year,
     Calendar_Cal_SeqMonth,
     Calendar_Cal_SurroundWeeks,
     Calendar_Cal_SetDate,
     Calendar_Cal_SeqMonth,
     Calendar_Cal_SurroundWeeks,
     Calendar_Cal_SetDate,
@@ -205,8 +233,9 @@ enum
 // handlers) which process them. It can be also done at run-time, but for the
 // simple menu events like this the static method is much simpler.
 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 // handlers) which process them. It can be also done at run-time, but for the
 // simple menu events like this the static method is much simpler.
 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
-    EVT_MENU(Calendar_File_Quit,  MyFrame::OnQuit)
     EVT_MENU(Calendar_File_About, MyFrame::OnAbout)
     EVT_MENU(Calendar_File_About, MyFrame::OnAbout)
+    EVT_MENU(Calendar_File_ClearLog, MyFrame::OnClearLog)
+    EVT_MENU(Calendar_File_Quit,  MyFrame::OnQuit)
 
 #if wxUSE_DATEPICKCTRL
     EVT_MENU(Calendar_DatePicker_AskDate, MyFrame::OnAskDate)
 
 #if wxUSE_DATEPICKCTRL
     EVT_MENU(Calendar_DatePicker_AskDate, MyFrame::OnAskDate)
@@ -215,12 +244,15 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
                   MyFrame::OnUpdateUIStartWithNone)
 #endif // wxUSE_DATEPICKCTRL
 
                   MyFrame::OnUpdateUIStartWithNone)
 #endif // wxUSE_DATEPICKCTRL
 
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    EVT_MENU(Calendar_Cal_Generic, MyFrame::OnCalGeneric)
+#endif // wxHAS_NATIVE_CALENDARCTRL
+
     EVT_MENU(Calendar_Cal_Monday, MyFrame::OnCalMonday)
     EVT_MENU(Calendar_Cal_Holidays, MyFrame::OnCalHolidays)
     EVT_MENU(Calendar_Cal_Special, MyFrame::OnCalSpecial)
 
     EVT_MENU(Calendar_Cal_Month, MyFrame::OnCalAllowMonth)
     EVT_MENU(Calendar_Cal_Monday, MyFrame::OnCalMonday)
     EVT_MENU(Calendar_Cal_Holidays, MyFrame::OnCalHolidays)
     EVT_MENU(Calendar_Cal_Special, MyFrame::OnCalSpecial)
 
     EVT_MENU(Calendar_Cal_Month, MyFrame::OnCalAllowMonth)
-    EVT_MENU(Calendar_Cal_Year, MyFrame::OnCalAllowYear)
 
     EVT_MENU(Calendar_Cal_SeqMonth, MyFrame::OnCalSeqMonth)
     EVT_MENU(Calendar_Cal_SurroundWeeks, MyFrame::OnCalShowSurroundingWeeks)
 
     EVT_MENU(Calendar_Cal_SeqMonth, MyFrame::OnCalSeqMonth)
     EVT_MENU(Calendar_Cal_SurroundWeeks, MyFrame::OnCalShowSurroundingWeeks)
@@ -232,14 +264,17 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(Calendar_Cal_Resizable, MyFrame::OnCalToggleResizable)
 
 
     EVT_MENU(Calendar_Cal_Resizable, MyFrame::OnCalToggleResizable)
 
 
-    EVT_UPDATE_UI(Calendar_Cal_Year, MyFrame::OnAllowYearUpdate)
+    EVT_UPDATE_UI(Calendar_Cal_SeqMonth, MyFrame::OnUpdateUIGenericOnly)
+    EVT_UPDATE_UI(Calendar_Cal_Monday, MyFrame::OnUpdateUIGenericOnly)
+    EVT_UPDATE_UI(Calendar_Cal_Holidays, MyFrame::OnUpdateUIGenericOnly)
+    EVT_UPDATE_UI(Calendar_Cal_Special, MyFrame::OnUpdateUIGenericOnly)
+    EVT_UPDATE_UI(Calendar_Cal_SurroundWeeks, MyFrame::OnUpdateUIGenericOnly)
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MyPanel, wxPanel)
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MyPanel, wxPanel)
-    EVT_CALENDAR            (Calendar_CalCtrl,   MyPanel::OnCalendar)
-    EVT_CALENDAR_MONTH      (Calendar_CalCtrl,   MyPanel::OnCalMonthChange)
-    EVT_CALENDAR_YEAR       (Calendar_CalCtrl,   MyPanel::OnCalYearChange)
-    EVT_CALENDAR_SEL_CHANGED(Calendar_CalCtrl,   MyPanel::OnCalendarChange)
+    EVT_CALENDAR(Calendar_CalCtrl, MyPanel::OnCalendar)
+    EVT_CALENDAR_PAGE_CHANGED(Calendar_CalCtrl, MyPanel::OnCalMonthChange)
+    EVT_CALENDAR_SEL_CHANGED(Calendar_CalCtrl, MyPanel::OnCalendarChange)
     EVT_CALENDAR_WEEKDAY_CLICKED(Calendar_CalCtrl, MyPanel::OnCalendarWeekDayClick)
 END_EVENT_TABLE()
 
     EVT_CALENDAR_WEEKDAY_CLICKED(Calendar_CalCtrl, MyPanel::OnCalendarWeekDayClick)
 END_EVENT_TABLE()
 
@@ -302,9 +337,16 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     wxMenu *menuFile = new wxMenu;
     menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog"));
     menuFile->AppendSeparator();
     wxMenu *menuFile = new wxMenu;
     menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog"));
     menuFile->AppendSeparator();
+    menuFile->Append(Calendar_File_ClearLog, _T("&Clear log\tCtrl-L"));
+    menuFile->AppendSeparator();
     menuFile->Append(Calendar_File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
 
     wxMenu *menuCal = new wxMenu;
     menuFile->Append(Calendar_File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
 
     wxMenu *menuCal = new wxMenu;
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    menuCal->AppendCheckItem(Calendar_Cal_Generic, "Use &generic version\tCtrl-G",
+                             "Toggle between native and generic control");
+    menuCal->AppendSeparator();
+#endif // wxHAS_NATIVE_CALENDARCTRL
     menuCal->Append(Calendar_Cal_Monday,
                     _T("Monday &first weekday\tCtrl-F"),
                     _T("Toggle between Mon and Sun as the first week day"),
     menuCal->Append(Calendar_Cal_Monday,
                     _T("Monday &first weekday\tCtrl-F"),
                     _T("Toggle between Mon and Sun as the first week day"),
@@ -321,15 +363,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
                     true);
     menuCal->AppendSeparator();
     menuCal->Append(Calendar_Cal_SeqMonth,
                     true);
     menuCal->AppendSeparator();
     menuCal->Append(Calendar_Cal_SeqMonth,
-                    _T("To&ggle month selector style\tCtrl-G"),
+                    _T("Toggle month selector st&yle\tCtrl-Y"),
                     _T("Use another style for the calendar controls"),
                     true);
     menuCal->Append(Calendar_Cal_Month, _T("&Month can be changed\tCtrl-M"),
                     _T("Allow changing the month in the calendar"),
                     true);
                     _T("Use another style for the calendar controls"),
                     true);
     menuCal->Append(Calendar_Cal_Month, _T("&Month can be changed\tCtrl-M"),
                     _T("Allow changing the month in the calendar"),
                     true);
-    menuCal->Append(Calendar_Cal_Year, _T("&Year can be changed\tCtrl-Y"),
-                    _T("Allow changing the year in the calendar"),
-                    true);
     menuCal->AppendSeparator();
     menuCal->Append(Calendar_Cal_SetDate, _T("Call &SetDate(2005-12-24)"), _T("Set date to 2005-12-24."));
     menuCal->Append(Calendar_Cal_Today, _T("Call &Today()"), _T("Set to the current date."));
     menuCal->AppendSeparator();
     menuCal->Append(Calendar_Cal_SetDate, _T("Call &SetDate(2005-12-24)"), _T("Set date to 2005-12-24."));
     menuCal->Append(Calendar_Cal_Today, _T("Call &Today()"), _T("Set to the current date."));
@@ -366,7 +405,6 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     menuBar->Check(Calendar_Cal_Monday, true);
     menuBar->Check(Calendar_Cal_Holidays, true);
     menuBar->Check(Calendar_Cal_Month, true);
     menuBar->Check(Calendar_Cal_Monday, true);
     menuBar->Check(Calendar_Cal_Holidays, true);
     menuBar->Check(Calendar_Cal_Month, true);
-    menuBar->Check(Calendar_Cal_Year, true);
 
 #if wxUSE_DATEPICKCTRL
     menuBar->Check(Calendar_DatePicker_ShowCentury, true);
 
 #if wxUSE_DATEPICKCTRL
     menuBar->Check(Calendar_DatePicker_ShowCentury, true);
@@ -375,13 +413,16 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     // ... and attach this menu bar to the frame
     SetMenuBar(menuBar);
 
     // ... and attach this menu bar to the frame
     SetMenuBar(menuBar);
 
-    m_panel = new MyPanel(this);
-
-#if wxUSE_STATUSBAR
-    // create a status bar just for fun (by default with 1 pane only)
-    CreateStatusBar(2);
-    SetStatusText(_T("Welcome to wxWidgets!"));
-#endif // wxUSE_STATUSBAR
+    wxSplitterWindow *splitter = new wxSplitterWindow(this, wxID_ANY,
+                                            wxDefaultPosition, wxDefaultSize,
+                                            wxSP_NOBORDER);
+    m_panel = new MyPanel(splitter);
+    m_logWindow = new wxTextCtrl(splitter, wxID_ANY, wxEmptyString,
+                                 wxDefaultPosition, wxDefaultSize,
+                                 wxTE_READONLY | wxTE_MULTILINE);
+    splitter->SplitHorizontally(m_panel, m_logWindow);
+    splitter->SetMinimumPaneSize(20);
+    wxLog::SetActiveTarget(new wxLogTextCtrl(m_logWindow));
 }
 
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 }
 
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
@@ -392,22 +433,29 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
-    wxMessageBox(_T("wxCalendarCtrl sample\n(c) 2000 Vadim Zeitlin"),
+    wxMessageBox(_T("wxCalendarCtrl sample\n(c) 2000--2008 Vadim Zeitlin"),
                  _T("About Calendar"), wxOK | wxICON_INFORMATION, this);
 }
 
                  _T("About Calendar"), wxOK | wxICON_INFORMATION, this);
 }
 
-void MyFrame::OnCalMonday(wxCommandEvent& event)
+void MyFrame::OnClearLog(wxCommandEvent& WXUNUSED(event))
 {
 {
-    bool enable = GetMenuBar()->IsChecked(event.GetId());
+    m_logWindow->Clear();
+}
 
 
-    m_panel->ToggleCalStyle(enable, wxCAL_MONDAY_FIRST);
+void MyFrame::OnCalMonday(wxCommandEvent& event)
+{
+    m_panel->ToggleCalStyle(event.IsChecked(), wxCAL_MONDAY_FIRST);
 }
 
 void MyFrame::OnCalHolidays(wxCommandEvent& event)
 {
 }
 
 void MyFrame::OnCalHolidays(wxCommandEvent& event)
 {
-    bool enable = GetMenuBar()->IsChecked(event.GetId());
-
-    m_panel->GetCal()->EnableHolidayDisplay(enable);
+    wxCalendarCtrlBase * cal = m_panel->GetCal();
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    wxStaticCast(cal, wxGenericCalendarCtrl)
+#else
+    cal
+#endif
+    ->EnableHolidayDisplay(event.IsChecked());
 }
 
 void MyFrame::OnCalSpecial(wxCommandEvent& event)
 }
 
 void MyFrame::OnCalSpecial(wxCommandEvent& event)
@@ -417,40 +465,23 @@ void MyFrame::OnCalSpecial(wxCommandEvent& event)
 
 void MyFrame::OnCalAllowMonth(wxCommandEvent& event)
 {
 
 void MyFrame::OnCalAllowMonth(wxCommandEvent& event)
 {
-    bool allow = GetMenuBar()->IsChecked(event.GetId());
-
-    m_panel->GetCal()->EnableMonthChange(allow);
-}
-
-void MyFrame::OnCalAllowYear(wxCommandEvent& event)
-{
-    bool allow = GetMenuBar()->IsChecked(event.GetId());
-
-    m_panel->GetCal()->EnableYearChange(allow);
+    m_panel->GetCal()->EnableMonthChange(event.IsChecked());
 }
 
 void MyFrame::OnCalSeqMonth(wxCommandEvent& event)
 {
 }
 
 void MyFrame::OnCalSeqMonth(wxCommandEvent& event)
 {
-    bool allow = GetMenuBar()->IsChecked(event.GetId());
-
-    m_panel->ToggleCalStyle(allow, wxCAL_SEQUENTIAL_MONTH_SELECTION);
+    m_panel->ToggleCalStyle(event.IsChecked(),
+                            wxCAL_SEQUENTIAL_MONTH_SELECTION);
 }
 
 void MyFrame::OnCalShowSurroundingWeeks(wxCommandEvent& event)
 {
 }
 
 void MyFrame::OnCalShowSurroundingWeeks(wxCommandEvent& event)
 {
-    bool allow = GetMenuBar()->IsChecked(event.GetId());
-
-    m_panel->ToggleCalStyle(allow, wxCAL_SHOW_SURROUNDING_WEEKS);
-}
-
-void MyFrame::OnAllowYearUpdate(wxUpdateUIEvent& event)
-{
-    event.Enable( GetMenuBar()->IsChecked(Calendar_Cal_Month));
+    m_panel->ToggleCalStyle(event.IsChecked(), wxCAL_SHOW_SURROUNDING_WEEKS);
 }
 
 void MyFrame::OnSetDate(wxCommandEvent &WXUNUSED(event))
 {
 }
 
 void MyFrame::OnSetDate(wxCommandEvent &WXUNUSED(event))
 {
-    m_panel->SetDate(wxDateTime(5, wxDateTime::Apr, 2008, 22, 00, 00));
+    m_panel->SetDate(wxDateTime(24, wxDateTime::Dec, 2005, 22, 00, 00));
 }
 
 void MyFrame::OnToday(wxCommandEvent &WXUNUSED(event))
 }
 
 void MyFrame::OnToday(wxCommandEvent &WXUNUSED(event))
@@ -537,9 +568,15 @@ void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event))
 // MyPanel
 // ----------------------------------------------------------------------------
 
 // MyPanel
 // ----------------------------------------------------------------------------
 
-MyPanel::MyPanel(wxFrame *frame)
-       : wxPanel(frame, wxID_ANY)
+MyPanel::MyPanel(wxWindow *parent)
+       : wxPanel(parent, wxID_ANY)
 {
 {
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    m_usingGeneric = false;
+#else
+    m_usingGeneric = true;
+#endif
+
     wxString date;
     date.Printf(wxT("Selected date: %s"),
                 wxDateTime::Today().FormatISODate().c_str());
     wxString date;
     date.Printf(wxT("Selected date: %s"),
                 wxDateTime::Today().FormatISODate().c_str());
@@ -565,7 +602,8 @@ MyPanel::MyPanel(wxFrame *frame)
 
 void MyPanel::OnCalendar(wxCalendarEvent& event)
 {
 
 void MyPanel::OnCalendar(wxCalendarEvent& event)
 {
-    wxLogMessage(wxT("Selected %s from calendar"),
+    m_calendar->Mark(event.GetDate().GetDay(), true);
+    wxLogMessage(wxT("Selected (and marked) %s from calendar."),
                  event.GetDate().FormatISODate().c_str());
 }
 
                  event.GetDate().FormatISODate().c_str());
 }
 
@@ -575,16 +613,14 @@ void MyPanel::OnCalendarChange(wxCalendarEvent& event)
     s.Printf(wxT("Selected date: %s"), event.GetDate().FormatISODate().c_str());
 
     m_date->SetLabel(s);
     s.Printf(wxT("Selected date: %s"), event.GetDate().FormatISODate().c_str());
 
     m_date->SetLabel(s);
+    wxLogStatus(s);
 }
 
 }
 
-void MyPanel::OnCalMonthChange(wxCalendarEvent& WXUNUSED(event))
-{
-    wxLogStatus(wxT("Calendar month changed"));
-}
-
-void MyPanel::OnCalYearChange(wxCalendarEvent& WXUNUSED(event))
+void MyPanel::OnCalMonthChange(wxCalendarEvent& event)
 {
 {
-    wxLogStatus(wxT("Calendar year changed"));
+    wxLogStatus(wxT("Calendar month changed to %s %d"),
+                wxDateTime::GetMonthName(event.GetDate().GetMonth()),
+                event.GetDate().GetYear());
 }
 
 void MyPanel::OnCalendarWeekDayClick(wxCalendarEvent& event)
 }
 
 void MyPanel::OnCalendarWeekDayClick(wxCalendarEvent& event)
@@ -593,6 +629,31 @@ void MyPanel::OnCalendarWeekDayClick(wxCalendarEvent& event)
                  wxDateTime::GetWeekDayName(event.GetWeekDay()).c_str());
 }
 
                  wxDateTime::GetWeekDayName(event.GetWeekDay()).c_str());
 }
 
+void MyPanel::RecreateCalendar(long style)
+{
+    wxCalendarCtrlBase *calendar;
+#ifdef wxHAS_NATIVE_CALENDARCTRL
+    if ( m_usingGeneric )
+        calendar = new wxGenericCalendarCtrl(this, Calendar_CalCtrl,
+                                             m_calendar->GetDate(),
+                                             wxDefaultPosition,
+                                             wxDefaultSize,
+                                             style);
+    else
+#endif // wxHAS_NATIVE_CALENDARCTRL
+        calendar = new wxCalendarCtrl(this, Calendar_CalCtrl,
+                                      m_calendar->GetDate(),
+                                      wxDefaultPosition,
+                                      wxDefaultSize,
+                                      style);
+
+    m_sizer->Replace(m_calendar, calendar);
+    delete m_calendar;
+    m_calendar = calendar;
+
+    m_sizer->Layout();
+}
+
 void MyPanel::ToggleCalStyle(bool on, int flag)
 {
     long style = m_calendar->GetWindowStyle();
 void MyPanel::ToggleCalStyle(bool on, int flag)
 {
     long style = m_calendar->GetWindowStyle();
@@ -604,16 +665,7 @@ void MyPanel::ToggleCalStyle(bool on, int flag)
     if ( flag == wxCAL_SEQUENTIAL_MONTH_SELECTION )
     {
         // changing this style requires recreating the control
     if ( flag == wxCAL_SEQUENTIAL_MONTH_SELECTION )
     {
         // changing this style requires recreating the control
-        wxCalendarCtrl *calendar = new wxCalendarCtrl(this, Calendar_CalCtrl,
-                                                      m_calendar->GetDate(),
-                                                      wxDefaultPosition,
-                                                      wxDefaultSize,
-                                                      style);
-        m_sizer->Replace(m_calendar, calendar);
-        delete m_calendar;
-        m_calendar = calendar;
-
-        m_sizer->Layout();
+        RecreateCalendar(style);
     }
     else // just changing the style is enough
     {
     }
     else // just changing the style is enough
     {
@@ -646,6 +698,7 @@ void MyPanel::HighlightSpecial(bool on)
     m_calendar->Refresh();
 }
 
     m_calendar->Refresh();
 }
 
+
 // ----------------------------------------------------------------------------
 // MyDialog
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // MyDialog
 // ----------------------------------------------------------------------------
diff --git a/src/common/calctrlcmn.cpp b/src/common/calctrlcmn.cpp
new file mode 100644 (file)
index 0000000..481be6e
--- /dev/null
@@ -0,0 +1,64 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        common/calctrlcmn.cpp
+// Author:      Marcin Wojdyr
+// Created:     2008-03-26
+// RCS-ID:      $Id$
+// Copyright:   (C) Marcin Wojdyr
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#if wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL
+
+#include "wx/dateevt.h"
+IMPLEMENT_DYNAMIC_CLASS(wxDateEvent, wxCommandEvent)
+DEFINE_EVENT_TYPE(wxEVT_DATE_CHANGED)
+
+#endif // wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL
+
+
+#if wxUSE_CALENDARCTRL
+
+#include "wx/calctrl.h"
+
+// ----------------------------------------------------------------------------
+// events
+// ----------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxDateEvent)
+
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_SEL_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_PAGE_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DOUBLECLICKED)
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_WEEKDAY_CLICKED)
+
+// deprecated events
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DAY_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_MONTH_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_CALENDAR_YEAR_CHANGED)
+
+
+wxCalendarDateAttr wxCalendarDateAttr::m_mark(wxCAL_BORDER_SQUARE);
+
+bool wxCalendarCtrlBase::EnableMonthChange(bool enable)
+{
+    const long styleOrig = GetWindowStyle();
+    long style = enable ? styleOrig & ~wxCAL_NO_MONTH_CHANGE
+                        : styleOrig | wxCAL_NO_MONTH_CHANGE;
+    if ( style == styleOrig )
+        return false;
+
+    SetWindowStyle(style);
+
+    return true;
+}
+
+#endif // wxUSE_CALENDARCTRL
+
diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp
deleted file mode 100644 (file)
index e9e06ac..0000000
+++ /dev/null
@@ -1,1834 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        src/generic/calctrl.cpp
-// Purpose:     implementation fo the generic wxCalendarCtrl
-// Author:      Vadim Zeitlin
-// Modified by:
-// Created:     29.12.99
-// RCS-ID:      $Id$
-// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-    #pragma hdrstop
-#endif
-
-#ifndef WX_PRECOMP
-    #include "wx/dcclient.h"
-    #include "wx/settings.h"
-    #include "wx/brush.h"
-    #include "wx/combobox.h"
-    #include "wx/listbox.h"
-    #include "wx/stattext.h"
-    #include "wx/textctrl.h"
-#endif //WX_PRECOMP
-
-#if wxUSE_CALENDARCTRL
-
-#include "wx/spinctrl.h"
-
-// if wxDatePickerCtrl code doesn't define the date event, do it here as we
-// need it as well
-#if !wxUSE_DATEPICKCTRL
-    #define _WX_DEFINE_DATE_EVENTS_
-#endif
-
-#include "wx/calctrl.h"
-
-#define DEBUG_PAINT 0
-
-// ----------------------------------------------------------------------------
-// wxWin macros
-// ----------------------------------------------------------------------------
-
-BEGIN_EVENT_TABLE(wxCalendarCtrl, wxControl)
-    EVT_PAINT(wxCalendarCtrl::OnPaint)
-
-    EVT_CHAR(wxCalendarCtrl::OnChar)
-
-    EVT_LEFT_DOWN(wxCalendarCtrl::OnClick)
-    EVT_LEFT_DCLICK(wxCalendarCtrl::OnDClick)
-
-    EVT_SYS_COLOUR_CHANGED(wxCalendarCtrl::OnSysColourChanged)
-END_EVENT_TABLE()
-
-#if wxUSE_EXTENDED_RTTI
-WX_DEFINE_FLAGS( wxCalendarCtrlStyle )
-
-wxBEGIN_FLAGS( wxCalendarCtrlStyle )
-    // new style border flags, we put them first to
-    // use them for streaming out
-    wxFLAGS_MEMBER(wxBORDER_SIMPLE)
-    wxFLAGS_MEMBER(wxBORDER_SUNKEN)
-    wxFLAGS_MEMBER(wxBORDER_DOUBLE)
-    wxFLAGS_MEMBER(wxBORDER_RAISED)
-    wxFLAGS_MEMBER(wxBORDER_STATIC)
-    wxFLAGS_MEMBER(wxBORDER_NONE)
-
-    // old style border flags
-    wxFLAGS_MEMBER(wxSIMPLE_BORDER)
-    wxFLAGS_MEMBER(wxSUNKEN_BORDER)
-    wxFLAGS_MEMBER(wxDOUBLE_BORDER)
-    wxFLAGS_MEMBER(wxRAISED_BORDER)
-    wxFLAGS_MEMBER(wxSTATIC_BORDER)
-    wxFLAGS_MEMBER(wxBORDER)
-
-    // standard window styles
-    wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
-    wxFLAGS_MEMBER(wxCLIP_CHILDREN)
-    wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
-    wxFLAGS_MEMBER(wxWANTS_CHARS)
-    wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
-    wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
-    wxFLAGS_MEMBER(wxVSCROLL)
-    wxFLAGS_MEMBER(wxHSCROLL)
-
-    wxFLAGS_MEMBER(wxCAL_SUNDAY_FIRST)
-    wxFLAGS_MEMBER(wxCAL_MONDAY_FIRST)
-    wxFLAGS_MEMBER(wxCAL_SHOW_HOLIDAYS)
-    wxFLAGS_MEMBER(wxCAL_NO_YEAR_CHANGE)
-    wxFLAGS_MEMBER(wxCAL_NO_MONTH_CHANGE)
-    wxFLAGS_MEMBER(wxCAL_SEQUENTIAL_MONTH_SELECTION)
-    wxFLAGS_MEMBER(wxCAL_SHOW_SURROUNDING_WEEKS)
-
-wxEND_FLAGS( wxCalendarCtrlStyle )
-
-IMPLEMENT_DYNAMIC_CLASS_XTI(wxCalendarCtrl, wxControl,"wx/calctrl.h")
-
-wxBEGIN_PROPERTIES_TABLE(wxCalendarCtrl)
-    wxEVENT_RANGE_PROPERTY( Updated , wxEVT_CALENDAR_SEL_CHANGED , wxEVT_CALENDAR_WEEKDAY_CLICKED , wxCalendarEvent )
-    wxHIDE_PROPERTY( Children )
-    wxPROPERTY( Date,wxDateTime, SetDate , GetDate, , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-    wxPROPERTY_FLAGS( WindowStyle , wxCalendarCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
-wxEND_PROPERTIES_TABLE()
-
-wxBEGIN_HANDLERS_TABLE(wxCalendarCtrl)
-wxEND_HANDLERS_TABLE()
-
-wxCONSTRUCTOR_6( wxCalendarCtrl , wxWindow* , Parent , wxWindowID , Id , wxDateTime , Date , wxPoint , Position , wxSize , Size , long , WindowStyle )
-#else
-IMPLEMENT_DYNAMIC_CLASS(wxCalendarCtrl, wxControl)
-#endif
-IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxDateEvent)
-
-// ----------------------------------------------------------------------------
-// events
-// ----------------------------------------------------------------------------
-
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_SEL_CHANGED)
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DAY_CHANGED)
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_MONTH_CHANGED)
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_YEAR_CHANGED)
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_DOUBLECLICKED)
-DEFINE_EVENT_TYPE(wxEVT_CALENDAR_WEEKDAY_CLICKED)
-
-// ============================================================================
-// implementation
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxCalendarCtrl
-// ----------------------------------------------------------------------------
-
-wxCalendarCtrl::wxCalendarCtrl(wxWindow *parent,
-                   wxWindowID id,
-                   const wxDateTime& date,
-                   const wxPoint& pos,
-                   const wxSize& size,
-                   long style,
-                   const wxString& name)
-{
-    Init();
-
-    (void)Create(parent, id, date, pos, size, style, name);
-}
-
-void wxCalendarCtrl::Init()
-{
-    m_comboMonth = NULL;
-    m_spinYear = NULL;
-    m_staticYear = NULL;
-    m_staticMonth = NULL;
-
-    m_userChangedYear = false;
-
-    m_widthCol =
-    m_heightRow = 0;
-
-    wxDateTime::WeekDay wd;
-    for ( wd = wxDateTime::Sun; wd < wxDateTime::Inv_WeekDay; wxNextWDay(wd) )
-    {
-        m_weekdays[wd] = wxDateTime::GetWeekDayName(wd, wxDateTime::Name_Abbr);
-    }
-
-    for ( size_t n = 0; n < WXSIZEOF(m_attrs); n++ )
-    {
-        m_attrs[n] = NULL;
-    }
-
-    InitColours();
-}
-
-void wxCalendarCtrl::InitColours()
-{
-    m_colHighlightFg = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
-    m_colHighlightBg = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
-    m_colBackground = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-    m_colSorrounding = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
-
-    m_colHolidayFg = *wxRED;
-    // don't set m_colHolidayBg - by default, same as our bg colour
-
-    m_colHeaderFg = *wxBLUE;
-    m_colHeaderBg = *wxLIGHT_GREY;
-}
-
-bool wxCalendarCtrl::Create(wxWindow *parent,
-                            wxWindowID id,
-                            const wxDateTime& date,
-                            const wxPoint& pos,
-                            const wxSize& size,
-                            long style,
-                            const wxString& name)
-{
-    if ( !wxControl::Create(parent, id, pos, size,
-                            style | wxCLIP_CHILDREN | wxWANTS_CHARS | wxFULL_REPAINT_ON_RESIZE,
-                            wxDefaultValidator, name) )
-    {
-        return false;
-    }
-
-    // needed to get the arrow keys normally used for the dialog navigation
-    SetWindowStyle(style | wxWANTS_CHARS);
-
-    m_date = date.IsValid() ? date : wxDateTime::Today();
-
-    m_lowdate = wxDefaultDateTime;
-    m_highdate = wxDefaultDateTime;
-
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        CreateYearSpinCtrl();
-        m_staticYear = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%Y")),
-                                        wxDefaultPosition, wxDefaultSize,
-                                        wxALIGN_CENTRE);
-
-        CreateMonthComboBox();
-        m_staticMonth = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%B")),
-                                         wxDefaultPosition, wxDefaultSize,
-                                         wxALIGN_CENTRE);
-    }
-
-    ShowCurrentControls();
-
-    // we need to set the position as well because the main control position
-    // is not the same as the one specified in pos if we have the controls
-    // above it
-    SetInitialSize(size);
-    SetPosition(pos);
-
-    // Since we don't paint the whole background make sure that the platform
-    // will use the right one.
-    SetBackgroundColour(m_colBackground);
-
-    SetHolidayAttrs();
-
-    return true;
-}
-
-wxCalendarCtrl::~wxCalendarCtrl()
-{
-    for ( size_t n = 0; n < WXSIZEOF(m_attrs); n++ )
-    {
-        delete m_attrs[n];
-    }
-
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        delete m_comboMonth;
-        delete m_staticMonth;
-        delete m_spinYear;
-        delete m_staticYear;
-    }
-}
-
-void wxCalendarCtrl::SetWindowStyleFlag(long style)
-{
-    // changing this style doesn't work because the controls are not
-    // created/shown/hidden accordingly
-    wxASSERT_MSG( (style & wxCAL_SEQUENTIAL_MONTH_SELECTION) ==
-                    (m_windowStyle & wxCAL_SEQUENTIAL_MONTH_SELECTION),
-                  _T("wxCAL_SEQUENTIAL_MONTH_SELECTION can't be changed after creation") );
-
-    wxControl::SetWindowStyleFlag(style);
-}
-
-// ----------------------------------------------------------------------------
-// Create the wxComboBox and wxSpinCtrl
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::CreateMonthComboBox()
-{
-    m_comboMonth = new wxComboBox(GetParent(), wxID_ANY,
-                                  wxEmptyString,
-                                  wxDefaultPosition,
-                                  wxDefaultSize,
-                                  0, NULL,
-                                  wxCB_READONLY | wxCLIP_SIBLINGS);
-
-    wxDateTime::Month m;
-    for ( m = wxDateTime::Jan; m < wxDateTime::Inv_Month; wxNextMonth(m) )
-    {
-        m_comboMonth->Append(wxDateTime::GetMonthName(m));
-    }
-
-    m_comboMonth->SetSelection(GetDate().GetMonth());
-    m_comboMonth->SetSize(wxDefaultCoord,
-                          wxDefaultCoord,
-                          wxDefaultCoord,
-                          wxDefaultCoord,
-                          wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT);
-
-    m_comboMonth->Connect(m_comboMonth->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED,
-                          wxCommandEventHandler(wxCalendarCtrl::OnMonthChange),
-                          NULL, this);
-}
-
-void wxCalendarCtrl::CreateYearSpinCtrl()
-{
-    m_spinYear = new wxSpinCtrl(GetParent(), wxID_ANY,
-                                GetDate().Format(_T("%Y")),
-                                wxDefaultPosition,
-                                wxDefaultSize,
-                                wxSP_ARROW_KEYS | wxCLIP_SIBLINGS,
-                                -4300, 10000, GetDate().GetYear());
-
-    m_spinYear->Connect(m_spinYear->GetId(), wxEVT_COMMAND_TEXT_UPDATED,
-                        wxCommandEventHandler(wxCalendarCtrl::OnYearTextChange),
-                        NULL, this);
-
-    m_spinYear->Connect(m_spinYear->GetId(), wxEVT_COMMAND_SPINCTRL_UPDATED,
-                        wxCommandEventHandler(wxCalendarCtrl::OnYearChange),
-                        NULL, this);
-}
-
-// ----------------------------------------------------------------------------
-// forward wxWin functions to subcontrols
-// ----------------------------------------------------------------------------
-
-bool wxCalendarCtrl::Destroy()
-{
-    if ( m_staticYear )
-        m_staticYear->Destroy();
-    if ( m_spinYear )
-        m_spinYear->Destroy();
-    if ( m_comboMonth )
-        m_comboMonth->Destroy();
-    if ( m_staticMonth )
-        m_staticMonth->Destroy();
-
-    m_staticYear = NULL;
-    m_spinYear = NULL;
-    m_comboMonth = NULL;
-    m_staticMonth = NULL;
-
-    return wxControl::Destroy();
-}
-
-bool wxCalendarCtrl::Show(bool show)
-{
-    if ( !wxControl::Show(show) )
-    {
-        return false;
-    }
-
-    if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        if ( GetMonthControl() )
-        {
-            GetMonthControl()->Show(show);
-            GetYearControl()->Show(show);
-        }
-    }
-
-    return true;
-}
-
-bool wxCalendarCtrl::Enable(bool enable)
-{
-    if ( !wxControl::Enable(enable) )
-    {
-        return false;
-    }
-
-    if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        GetMonthControl()->Enable(enable);
-        GetYearControl()->Enable(enable);
-    }
-
-    return true;
-}
-
-// ----------------------------------------------------------------------------
-// enable/disable month/year controls
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::ShowCurrentControls()
-{
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        if ( AllowMonthChange() )
-        {
-            m_comboMonth->Show();
-            m_staticMonth->Hide();
-
-            if ( AllowYearChange() )
-            {
-                m_spinYear->Show();
-                m_staticYear->Hide();
-
-                // skip the rest
-                return;
-            }
-        }
-        else
-        {
-            m_comboMonth->Hide();
-            m_staticMonth->Show();
-        }
-
-        // year change not allowed here
-        m_spinYear->Hide();
-        m_staticYear->Show();
-    }
-    //else: these controls are not even created, don't show/hide them
-}
-
-wxControl *wxCalendarCtrl::GetMonthControl() const
-{
-    return AllowMonthChange() ? (wxControl *)m_comboMonth : (wxControl *)m_staticMonth;
-}
-
-wxControl *wxCalendarCtrl::GetYearControl() const
-{
-    return AllowYearChange() ? (wxControl *)m_spinYear : (wxControl *)m_staticYear;
-}
-
-void wxCalendarCtrl::EnableYearChange(bool enable)
-{
-    if ( enable != AllowYearChange() )
-    {
-        long style = GetWindowStyle();
-        if ( enable )
-            style &= ~wxCAL_NO_YEAR_CHANGE;
-        else
-            style |= wxCAL_NO_YEAR_CHANGE;
-        SetWindowStyle(style);
-
-        ShowCurrentControls();
-        if ( GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION )
-        {
-            Refresh();
-        }
-    }
-}
-
-void wxCalendarCtrl::EnableMonthChange(bool enable)
-{
-    if ( enable != AllowMonthChange() )
-    {
-        long style = GetWindowStyle();
-        if ( enable )
-            style &= ~wxCAL_NO_MONTH_CHANGE;
-        else
-            style |= wxCAL_NO_MONTH_CHANGE;
-        SetWindowStyle(style);
-
-        ShowCurrentControls();
-        if ( GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION )
-        {
-            Refresh();
-        }
-    }
-}
-
-// ----------------------------------------------------------------------------
-// changing date
-// ----------------------------------------------------------------------------
-
-bool wxCalendarCtrl::SetDate(const wxDateTime& date)
-{
-    bool retval = true;
-
-    bool sameMonth = m_date.GetMonth() == date.GetMonth(),
-         sameYear = m_date.GetYear() == date.GetYear();
-
-    if ( IsDateInRange(date) )
-    {
-        if ( sameMonth && sameYear )
-        {
-            // just change the day
-            ChangeDay(date);
-        }
-        else
-        {
-            if ( AllowMonthChange() && (AllowYearChange() || sameYear) )
-            {
-                // change everything
-                m_date = date;
-
-                if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-                {
-                    // update the controls
-                    m_comboMonth->SetSelection(m_date.GetMonth());
-
-                    if ( AllowYearChange() )
-                    {
-                        if ( !m_userChangedYear )
-                            m_spinYear->SetValue(m_date.Format(_T("%Y")));
-                    }
-                }
-
-                // as the month changed, holidays did too
-                SetHolidayAttrs();
-
-                // update the calendar
-                Refresh();
-            }
-            else
-            {
-                // forbidden
-                retval = false;
-            }
-        }
-    }
-
-    m_userChangedYear = false;
-
-    return retval;
-}
-
-void wxCalendarCtrl::ChangeDay(const wxDateTime& date)
-{
-    if ( m_date != date )
-    {
-        // we need to refresh the row containing the old date and the one
-        // containing the new one
-        wxDateTime dateOld = m_date;
-        m_date = date;
-
-        RefreshDate(dateOld);
-
-        // if the date is in the same row, it was already drawn correctly
-        if ( GetWeek(m_date) != GetWeek(dateOld) )
-        {
-            RefreshDate(m_date);
-        }
-    }
-}
-
-void wxCalendarCtrl::SetDateAndNotify(const wxDateTime& date)
-{
-    wxDateTime::Tm tm1 = m_date.GetTm(),
-                   tm2 = date.GetTm();
-
-    wxEventType type;
-    if ( tm1.year != tm2.year )
-        type = wxEVT_CALENDAR_YEAR_CHANGED;
-    else if ( tm1.mon != tm2.mon )
-        type = wxEVT_CALENDAR_MONTH_CHANGED;
-    else if ( tm1.mday != tm2.mday )
-        type = wxEVT_CALENDAR_DAY_CHANGED;
-    else
-        return;
-
-    if ( SetDate(date) )
-    {
-        GenerateEvents(type, wxEVT_CALENDAR_SEL_CHANGED);
-    }
-}
-
-// ----------------------------------------------------------------------------
-// date range
-// ----------------------------------------------------------------------------
-
-bool wxCalendarCtrl::SetLowerDateLimit(const wxDateTime& date /* = wxDefaultDateTime */)
-{
-    bool retval = true;
-
-    if ( !(date.IsValid()) || ( ( m_highdate.IsValid() ) ? ( date <= m_highdate ) : true ) )
-    {
-        m_lowdate = date;
-    }
-    else
-    {
-        retval = false;
-    }
-
-    return retval;
-}
-
-bool wxCalendarCtrl::SetUpperDateLimit(const wxDateTime& date /* = wxDefaultDateTime */)
-{
-    bool retval = true;
-
-    if ( !(date.IsValid()) || ( ( m_lowdate.IsValid() ) ? ( date >= m_lowdate ) : true ) )
-    {
-        m_highdate = date;
-    }
-    else
-    {
-        retval = false;
-    }
-
-    return retval;
-}
-
-bool wxCalendarCtrl::SetDateRange(const wxDateTime& lowerdate /* = wxDefaultDateTime */, const wxDateTime& upperdate /* = wxDefaultDateTime */)
-{
-    bool retval = true;
-
-    if (
-        ( !( lowerdate.IsValid() ) || ( ( upperdate.IsValid() ) ? ( lowerdate <= upperdate ) : true ) ) &&
-        ( !( upperdate.IsValid() ) || ( ( lowerdate.IsValid() ) ? ( upperdate >= lowerdate ) : true ) ) )
-    {
-        m_lowdate = lowerdate;
-        m_highdate = upperdate;
-    }
-    else
-    {
-        retval = false;
-    }
-
-    return retval;
-}
-
-// ----------------------------------------------------------------------------
-// date helpers
-// ----------------------------------------------------------------------------
-
-wxDateTime wxCalendarCtrl::GetStartDate() const
-{
-    wxDateTime::Tm tm = m_date.GetTm();
-
-    wxDateTime date = wxDateTime(1, tm.mon, tm.year);
-
-    // rewind back
-    date.SetToPrevWeekDay(GetWindowStyle() & wxCAL_MONDAY_FIRST
-                          ? wxDateTime::Mon : wxDateTime::Sun);
-
-    if ( GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS )
-    {
-        // We want to offset the calendar if we start on the first..
-        if ( date.GetDay() == 1 )
-        {
-            date -= wxDateSpan::Week();
-        }
-    }
-
-    return date;
-}
-
-bool wxCalendarCtrl::IsDateShown(const wxDateTime& date) const
-{
-    if ( !(GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) )
-    {
-        return date.GetMonth() == m_date.GetMonth();
-    }
-    else
-    {
-        return true;
-    }
-}
-
-bool wxCalendarCtrl::IsDateInRange(const wxDateTime& date) const
-{
-    // Check if the given date is in the range specified
-    return ( ( ( m_lowdate.IsValid() ) ? ( date >= m_lowdate ) : true )
-        && ( ( m_highdate.IsValid() ) ? ( date <= m_highdate ) : true ) );
-}
-
-bool wxCalendarCtrl::ChangeYear(wxDateTime* target) const
-{
-    bool retval = false;
-
-    if ( !(IsDateInRange(*target)) )
-    {
-        if ( target->GetYear() < m_date.GetYear() )
-        {
-            if ( target->GetYear() >= GetLowerDateLimit().GetYear() )
-            {
-                *target = GetLowerDateLimit();
-                retval = true;
-            }
-            else
-            {
-                *target = m_date;
-            }
-        }
-        else
-        {
-            if ( target->GetYear() <= GetUpperDateLimit().GetYear() )
-            {
-                *target = GetUpperDateLimit();
-                retval = true;
-            }
-            else
-            {
-                *target = m_date;
-            }
-        }
-    }
-    else
-    {
-        retval = true;
-    }
-
-    return retval;
-}
-
-bool wxCalendarCtrl::ChangeMonth(wxDateTime* target) const
-{
-    bool retval = true;
-
-    if ( !(IsDateInRange(*target)) )
-    {
-        retval = false;
-
-        if ( target->GetMonth() < m_date.GetMonth() )
-        {
-            *target = GetLowerDateLimit();
-        }
-        else
-        {
-            *target = GetUpperDateLimit();
-        }
-    }
-
-    return retval;
-}
-
-size_t wxCalendarCtrl::GetWeek(const wxDateTime& date) const
-{
-    size_t retval = date.GetWeekOfMonth(GetWindowStyle() & wxCAL_MONDAY_FIRST
-                                   ? wxDateTime::Monday_First
-                                   : wxDateTime::Sunday_First);
-
-    if ( (GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) )
-    {
-        // we need to offset an extra week if we "start" on the 1st of the month
-        wxDateTime::Tm tm = date.GetTm();
-
-        wxDateTime datetest = wxDateTime(1, tm.mon, tm.year);
-
-        // rewind back
-        datetest.SetToPrevWeekDay(GetWindowStyle() & wxCAL_MONDAY_FIRST
-                              ? wxDateTime::Mon : wxDateTime::Sun);
-
-        if ( datetest.GetDay() == 1 )
-        {
-            retval += 1;
-        }
-    }
-
-    return retval;
-}
-
-// ----------------------------------------------------------------------------
-// size management
-// ----------------------------------------------------------------------------
-
-// this is a composite control and it must arrange its parts each time its
-// size or position changes: the combobox and spinctrl are along the top of
-// the available area and the calendar takes up therest of the space
-
-// the static controls are supposed to be always smaller than combo/spin so we
-// always use the latter for size calculations and position the static to take
-// the same space
-
-// the constants used for the layout
-#define VERT_MARGIN     5           // distance between combo and calendar
-#ifdef __WXMAC__
-#define HORZ_MARGIN    5           //                            spin
-#else
-#define HORZ_MARGIN    15           //                            spin
-#endif
-wxSize wxCalendarCtrl::DoGetBestSize() const
-{
-    // calc the size of the calendar
-    ((wxCalendarCtrl *)this)->RecalcGeometry(); // const_cast
-
-    wxCoord width = 7*m_widthCol,
-            height = 7*m_heightRow + m_rowOffset + VERT_MARGIN;
-
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        // the combobox doesn't report its height correctly (it returns the
-        // height including the drop down list) so don't use it
-        height += m_spinYear->GetBestSize().y;
-
-
-        wxCoord w2 = m_comboMonth->GetBestSize().x + HORZ_MARGIN + GetCharWidth()*6;
-        if (width < w2)
-            width = w2;
-    }
-
-    if ( !HasFlag(wxBORDER_NONE) )
-    {
-        // the border would clip the last line otherwise
-        height += 6;
-        width += 4;
-    }
-
-    wxSize best(width, height);
-    CacheBestSize(best);
-    return best;
-}
-
-void wxCalendarCtrl::DoSetSize(int x, int y,
-                               int width, int height,
-                               int sizeFlags)
-{
-    wxControl::DoSetSize(x, y, width, height, sizeFlags);
-}
-
-void wxCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
-{
-    int yDiff;
-
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && m_staticMonth )
-    {
-        wxSize sizeCombo = m_comboMonth->GetEffectiveMinSize();
-        wxSize sizeStatic = m_staticMonth->GetSize();
-        wxSize sizeSpin = m_spinYear->GetSize();
-
-        // wxMSW sometimes reports the wrong combo height,
-        // so on this platform we'll use the spin control
-        // height instead.
-#ifdef __WXMSW__
-        int maxHeight = sizeSpin.y;
-        int requiredSpinHeight = -1;
-#else
-        int maxHeight = sizeCombo.y;
-        int requiredSpinHeight = sizeCombo.y;
-#endif
-        int dy = (maxHeight - sizeStatic.y) / 2;
-        m_comboMonth->Move(x, y);
-        m_staticMonth->SetSize(x, y + dy, sizeCombo.x, -1, sizeStatic.y);
-
-        int xDiff = sizeCombo.x + HORZ_MARGIN;
-
-        m_spinYear->SetSize(x + xDiff, y, width - xDiff, requiredSpinHeight);
-        m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
-
-        yDiff = wxMax(sizeSpin.y, maxHeight) + VERT_MARGIN;
-    }
-    else // no controls on the top
-    {
-        yDiff = 0;
-    }
-
-    wxControl::DoMoveWindow(x, y + yDiff, width, height - yDiff);
-}
-
-void wxCalendarCtrl::DoGetPosition(int *x, int *y) const
-{
-    wxControl::DoGetPosition(x, y);
-#ifndef __WXPM__
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && GetMonthControl() )
-    {
-        // our real top corner is not in this position
-        if ( y )
-        {
-            *y -= GetMonthControl()->GetSize().y + VERT_MARGIN;
-        }
-    }
-#endif
-}
-
-void wxCalendarCtrl::DoGetSize(int *width, int *height) const
-{
-    wxControl::DoGetSize(width, height);
-#ifndef __WXPM__
-    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        // our real height is bigger
-        if ( height && GetMonthControl())
-        {
-            *height += GetMonthControl()->GetSize().y + VERT_MARGIN;
-        }
-    }
-#endif
-}
-
-void wxCalendarCtrl::RecalcGeometry()
-{
-    wxClientDC dc(this);
-
-    dc.SetFont(GetFont());
-
-    // determine the column width (weekday names are not necessarily wider
-    // than the numbers (in some languages), so let's not assume that they are)
-    m_widthCol = 0;
-    for ( int day = 10; day <= 31; day++)
-    {
-        wxCoord width;
-        dc.GetTextExtent(wxString::Format(wxT("%d"), day), &width, &m_heightRow);
-        if ( width > m_widthCol )
-        {
-            // 1.5 times the width gives nice margins even if the weekday
-            // names are short
-            m_widthCol = width+width/2;
-        }
-    }
-    wxDateTime::WeekDay wd;
-    for ( wd = wxDateTime::Sun; wd < wxDateTime::Inv_WeekDay; wxNextWDay(wd) )
-    {
-        wxCoord width;
-        dc.GetTextExtent(m_weekdays[wd], &width, &m_heightRow);
-        if ( width > m_widthCol )
-        {
-            m_widthCol = width;
-        }
-    }
-
-    // leave some margins
-    m_widthCol += 2;
-    m_heightRow += 2;
-
-    m_rowOffset = HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ? m_heightRow : 0; // conditional in relation to style
-}
-
-// ----------------------------------------------------------------------------
-// drawing
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
-{
-    wxPaintDC dc(this);
-
-    dc.SetFont(GetFont());
-
-    RecalcGeometry();
-
-#if DEBUG_PAINT
-    wxLogDebug("--- starting to paint, selection: %s, week %u\n",
-           m_date.Format("%a %d-%m-%Y %H:%M:%S").c_str(),
-           GetWeek(m_date));
-#endif
-
-    wxCoord y = 0;
-    wxCoord x0 = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
-
-    if ( HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        // draw the sequential month-selector
-
-        dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
-        dc.SetTextForeground(*wxBLACK);
-        dc.SetBrush(wxBrush(m_colHeaderBg, wxBRUSHSTYLE_SOLID));
-        dc.SetPen(wxPen(m_colHeaderBg, 1, wxPENSTYLE_SOLID));
-        dc.DrawRectangle(0, y, GetClientSize().x, m_heightRow);
-
-        // Get extent of month-name + year
-        wxCoord monthw, monthh;
-        wxString headertext = m_date.Format(wxT("%B %Y"));
-        dc.GetTextExtent(headertext, &monthw, &monthh);
-
-        // draw month-name centered above weekdays
-        wxCoord monthx = ((m_widthCol * 7) - monthw) / 2 + x0;
-        wxCoord monthy = ((m_heightRow - monthh) / 2) + y;
-        dc.DrawText(headertext, monthx,  monthy);
-
-        // calculate the "month-arrows"
-        wxPoint leftarrow[3];
-        wxPoint rightarrow[3];
-
-        int arrowheight = monthh / 2;
-
-        leftarrow[0] = wxPoint(0, arrowheight / 2);
-        leftarrow[1] = wxPoint(arrowheight / 2, 0);
-        leftarrow[2] = wxPoint(arrowheight / 2, arrowheight - 1);
-
-        rightarrow[0] = wxPoint(0,0);
-        rightarrow[1] = wxPoint(arrowheight / 2, arrowheight / 2);
-        rightarrow[2] = wxPoint(0, arrowheight - 1);
-
-        // draw the "month-arrows"
-
-        wxCoord arrowy = (m_heightRow - arrowheight) / 2;
-        wxCoord larrowx = (m_widthCol - (arrowheight / 2)) / 2 + x0;
-        wxCoord rarrowx = ((m_widthCol - (arrowheight / 2)) / 2) + m_widthCol*6 + x0;
-        m_leftArrowRect = m_rightArrowRect = wxRect(0,0,0,0);
-
-        if ( AllowMonthChange() )
-        {
-            wxDateTime ldpm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) - wxDateSpan::Day(); // last day prev month
-            // Check if range permits change
-            if ( IsDateInRange(ldpm) && ( ( ldpm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) )
-            {
-                m_leftArrowRect = wxRect(larrowx - 3, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6));
-                dc.SetBrush(*wxBLACK_BRUSH);
-                dc.SetPen(*wxBLACK_PEN);
-                dc.DrawPolygon(3, leftarrow, larrowx , arrowy, wxWINDING_RULE);
-                dc.SetBrush(*wxTRANSPARENT_BRUSH);
-                dc.DrawRectangle(m_leftArrowRect);
-            }
-            wxDateTime fdnm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) + wxDateSpan::Month(); // first day next month
-            if ( IsDateInRange(fdnm) && ( ( fdnm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) )
-            {
-                m_rightArrowRect = wxRect(rarrowx - 4, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6));
-                dc.SetBrush(*wxBLACK_BRUSH);
-                dc.SetPen(*wxBLACK_PEN);
-                dc.DrawPolygon(3, rightarrow, rarrowx , arrowy, wxWINDING_RULE);
-                dc.SetBrush(*wxTRANSPARENT_BRUSH);
-                dc.DrawRectangle(m_rightArrowRect);
-            }
-        }
-
-        y += m_heightRow;
-    }
-
-    // first draw the week days
-    if ( IsExposed(x0, y, x0 + 7*m_widthCol, m_heightRow) )
-    {
-#if DEBUG_PAINT
-        wxLogDebug("painting the header");
-#endif
-
-        dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
-        dc.SetTextForeground(m_colHeaderFg);
-        dc.SetBrush(wxBrush(m_colHeaderBg, wxBRUSHSTYLE_SOLID));
-        dc.SetPen(wxPen(m_colHeaderBg, 1, wxPENSTYLE_SOLID));
-        dc.DrawRectangle(0, y, GetClientSize().x, m_heightRow);
-
-        bool startOnMonday = (GetWindowStyle() & wxCAL_MONDAY_FIRST) != 0;
-        for ( int wd = 0; wd < 7; wd++ )
-        {
-            size_t n;
-            if ( startOnMonday )
-                n = wd == 6 ? 0 : wd + 1;
-            else
-                n = wd;
-            wxCoord dayw, dayh;
-            dc.GetTextExtent(m_weekdays[n], &dayw, &dayh);
-            dc.DrawText(m_weekdays[n], x0 + (wd*m_widthCol) + ((m_widthCol- dayw) / 2), y); // center the day-name
-        }
-    }
-
-    // then the calendar itself
-    dc.SetTextForeground(*wxBLACK);
-    //dc.SetFont(*wxNORMAL_FONT);
-
-    y += m_heightRow;
-    wxDateTime date = GetStartDate();
-
-#if DEBUG_PAINT
-    wxLogDebug("starting calendar from %s\n",
-            date.Format("%a %d-%m-%Y %H:%M:%S").c_str());
-#endif
-
-    dc.SetBackgroundMode(wxBRUSHSTYLE_SOLID);
-    for ( size_t nWeek = 1; nWeek <= 6; nWeek++, y += m_heightRow )
-    {
-        // if the update region doesn't intersect this row, don't paint it
-        if ( !IsExposed(x0, y, x0 + 7*m_widthCol, m_heightRow - 1) )
-        {
-            date += wxDateSpan::Week();
-
-            continue;
-        }
-
-#if DEBUG_PAINT
-        wxLogDebug("painting week %d at y = %d\n", nWeek, y);
-#endif
-
-        for ( int wd = 0; wd < 7; wd++ )
-        {
-            dc.SetTextBackground(m_colBackground);
-            if ( IsDateShown(date) )
-            {
-                // don't use wxDate::Format() which prepends 0s
-                unsigned int day = date.GetDay();
-                wxString dayStr = wxString::Format(_T("%u"), day);
-                wxCoord width;
-                dc.GetTextExtent(dayStr, &width, (wxCoord *)NULL);
-
-                bool changedColours = false,
-                     changedFont = false;
-
-                bool isSel = false;
-                wxCalendarDateAttr *attr = NULL;
-
-                if ( date.GetMonth() != m_date.GetMonth() || !IsDateInRange(date) )
-                {
-                    // surrounding week or out-of-range
-                    // draw "disabled"
-                    dc.SetTextForeground(m_colSorrounding);
-                    changedColours = true;
-                }
-                else
-                {
-                    isSel = date.IsSameDate(m_date);
-                    attr = m_attrs[day - 1];
-
-                    if ( isSel )
-                    {
-                        dc.SetTextForeground(m_colHighlightFg);
-                        dc.SetTextBackground(m_colHighlightBg);
-
-                        changedColours = true;
-                    }
-                    else if ( attr )
-                    {
-                        wxColour colFg, colBg;
-
-                        if ( attr->IsHoliday() )
-                        {
-                            colFg = m_colHolidayFg;
-                            colBg = m_colHolidayBg;
-                        }
-                        else
-                        {
-                            colFg = attr->GetTextColour();
-                            colBg = attr->GetBackgroundColour();
-                        }
-
-                        if ( colFg.Ok() )
-                        {
-                            dc.SetTextForeground(colFg);
-                            changedColours = true;
-                        }
-
-                        if ( colBg.Ok() )
-                        {
-                            dc.SetTextBackground(colBg);
-                            changedColours = true;
-                        }
-
-                        if ( attr->HasFont() )
-                        {
-                            dc.SetFont(attr->GetFont());
-                            changedFont = true;
-                        }
-                    }
-                }
-
-                wxCoord x = wd*m_widthCol + (m_widthCol - width) / 2 + x0;
-                dc.DrawText(dayStr, x, y + 1);
-
-                if ( !isSel && attr && attr->HasBorder() )
-                {
-                    wxColour colBorder;
-                    if ( attr->HasBorderColour() )
-                    {
-                        colBorder = attr->GetBorderColour();
-                    }
-                    else
-                    {
-                        colBorder = GetForegroundColour();
-                    }
-
-                    wxPen pen(colBorder, 1, wxPENSTYLE_SOLID);
-                    dc.SetPen(pen);
-                    dc.SetBrush(*wxTRANSPARENT_BRUSH);
-
-                    switch ( attr->GetBorder() )
-                    {
-                        case wxCAL_BORDER_SQUARE:
-                            dc.DrawRectangle(x - 2, y,
-                                             width + 4, m_heightRow);
-                            break;
-
-                        case wxCAL_BORDER_ROUND:
-                            dc.DrawEllipse(x - 2, y,
-                                           width + 4, m_heightRow);
-                            break;
-
-                        default:
-                            wxFAIL_MSG(_T("unknown border type"));
-                    }
-                }
-
-                if ( changedColours )
-                {
-                    dc.SetTextForeground(GetForegroundColour());
-                    dc.SetTextBackground(GetBackgroundColour());
-                }
-
-                if ( changedFont )
-                {
-                    dc.SetFont(GetFont());
-                }
-            }
-            //else: just don't draw it
-
-            date += wxDateSpan::Day();
-        }
-    }
-
-    // Greying out out-of-range background
-    bool showSurrounding = (GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) != 0;
-
-    date = ( showSurrounding ) ? GetStartDate() : wxDateTime(1, m_date.GetMonth(), m_date.GetYear());
-    if ( !IsDateInRange(date) )
-    {
-        wxDateTime firstOOR = GetLowerDateLimit() - wxDateSpan::Day(); // first out-of-range
-
-        wxBrush oorbrush = *wxLIGHT_GREY_BRUSH;
-        oorbrush.SetStyle(wxBRUSHSTYLE_FDIAGONAL_HATCH);
-
-        HighlightRange(&dc, date, firstOOR, wxTRANSPARENT_PEN, &oorbrush);
-    }
-
-    date = ( showSurrounding ) ? GetStartDate() + wxDateSpan::Weeks(6) - wxDateSpan::Day() : wxDateTime().SetToLastMonthDay(m_date.GetMonth(), m_date.GetYear());
-    if ( !IsDateInRange(date) )
-    {
-        wxDateTime firstOOR = GetUpperDateLimit() + wxDateSpan::Day(); // first out-of-range
-
-        wxBrush oorbrush = *wxLIGHT_GREY_BRUSH;
-        oorbrush.SetStyle(wxBRUSHSTYLE_FDIAGONAL_HATCH);
-
-        HighlightRange(&dc, firstOOR, date, wxTRANSPARENT_PEN, &oorbrush);
-    }
-
-#if DEBUG_PAINT
-    wxLogDebug("+++ finished painting");
-#endif
-}
-
-void wxCalendarCtrl::RefreshDate(const wxDateTime& date)
-{
-    RecalcGeometry();
-
-    wxRect rect;
-
-    // always refresh the whole row at once because our OnPaint() will draw
-    // the whole row anyhow - and this allows the small optimisation in
-    // OnClick() below to work
-    rect.x = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
-
-    rect.y = (m_heightRow * GetWeek(date)) + m_rowOffset;
-
-    rect.width = 7*m_widthCol;
-    rect.height = m_heightRow;
-
-#ifdef __WXMSW__
-    // VZ: for some reason, the selected date seems to occupy more space under
-    //     MSW - this is probably some bug in the font size calculations, but I
-    //     don't know where exactly. This fix is ugly and leads to more
-    //     refreshes than really needed, but without it the selected days
-    //     leaves even more ugly underscores on screen.
-    rect.Inflate(0, 1);
-#endif // MSW
-
-#if DEBUG_PAINT
-    wxLogDebug("*** refreshing week %d at (%d, %d)-(%d, %d)\n",
-           GetWeek(date),
-           rect.x, rect.y,
-           rect.x + rect.width, rect.y + rect.height);
-#endif
-
-    Refresh(true, &rect);
-}
-
-void wxCalendarCtrl::HighlightRange(wxPaintDC* pDC, const wxDateTime& fromdate, const wxDateTime& todate, const wxPen* pPen, const wxBrush* pBrush)
-{
-    // Highlights the given range using pen and brush
-    // Does nothing if todate < fromdate
-
-
-#if DEBUG_PAINT
-    wxLogDebug("+++ HighlightRange: (%s) - (%s) +++", fromdate.Format("%d %m %Y"), todate.Format("%d %m %Y"));
-#endif
-
-    if ( todate >= fromdate )
-    {
-        // do stuff
-        // date-coordinates
-        int fd, fw;
-        int td, tw;
-
-        // implicit: both dates must be currently shown - checked by GetDateCoord
-        if ( GetDateCoord(fromdate, &fd, &fw) && GetDateCoord(todate, &td, &tw) )
-        {
-#if DEBUG_PAINT
-            wxLogDebug("Highlight range: (%i, %i) - (%i, %i)", fd, fw, td, tw);
-#endif
-            if ( ( (tw - fw) == 1 ) && ( td < fd ) )
-            {
-                // special case: interval 7 days or less not in same week
-                // split in two separate intervals
-                wxDateTime tfd = fromdate + wxDateSpan::Days(7-fd);
-                wxDateTime ftd = tfd + wxDateSpan::Day();
-#if DEBUG_PAINT
-                wxLogDebug("Highlight: Separate segments");
-#endif
-                // draw separately
-                HighlightRange(pDC, fromdate, tfd, pPen, pBrush);
-                HighlightRange(pDC, ftd, todate, pPen, pBrush);
-            }
-            else
-            {
-                int numpoints;
-                wxPoint corners[8]; // potentially 8 corners in polygon
-                wxCoord x0 = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
-
-                if ( fw == tw )
-                {
-                    // simple case: same week
-                    numpoints = 4;
-                    corners[0] = wxPoint(x0 + (fd - 1) * m_widthCol, (fw * m_heightRow) + m_rowOffset);
-                    corners[1] = wxPoint(x0 + (fd - 1) * m_widthCol, ((fw + 1 ) * m_heightRow) + m_rowOffset);
-                    corners[2] = wxPoint(x0 + td * m_widthCol, ((tw + 1) * m_heightRow) + m_rowOffset);
-                    corners[3] = wxPoint(x0 + td * m_widthCol, (tw * m_heightRow) + m_rowOffset);
-                }
-                else
-                {
-                    int cidx = 0;
-                    // "complex" polygon
-                    corners[cidx] = wxPoint(x0 + (fd - 1) * m_widthCol, (fw * m_heightRow) + m_rowOffset); cidx++;
-
-                    if ( fd > 1 )
-                    {
-                        corners[cidx] = wxPoint(x0 + (fd - 1) * m_widthCol, ((fw + 1) * m_heightRow) + m_rowOffset); cidx++;
-                        corners[cidx] = wxPoint(x0, ((fw + 1) * m_heightRow) + m_rowOffset); cidx++;
-                    }
-
-                    corners[cidx] = wxPoint(x0, ((tw + 1) * m_heightRow) + m_rowOffset); cidx++;
-                    corners[cidx] = wxPoint(x0 + td * m_widthCol, ((tw + 1) * m_heightRow) + m_rowOffset); cidx++;
-
-                    if ( td < 7 )
-                    {
-                        corners[cidx] = wxPoint(x0 + td * m_widthCol, (tw * m_heightRow) + m_rowOffset); cidx++;
-                        corners[cidx] = wxPoint(x0 + 7 * m_widthCol, (tw * m_heightRow) + m_rowOffset); cidx++;
-                    }
-
-                    corners[cidx] = wxPoint(x0 + 7 * m_widthCol, (fw * m_heightRow) + m_rowOffset); cidx++;
-
-                    numpoints = cidx;
-                }
-
-                // draw the polygon
-                pDC->SetBrush(*pBrush);
-                pDC->SetPen(*pPen);
-                pDC->DrawPolygon(numpoints, corners);
-            }
-        }
-    }
-    // else do nothing
-#if DEBUG_PAINT
-    wxLogDebug("--- HighlightRange ---");
-#endif
-}
-
-bool wxCalendarCtrl::GetDateCoord(const wxDateTime& date, int *day, int *week) const
-{
-    bool retval = true;
-
-#if DEBUG_PAINT
-    wxLogDebug("+++ GetDateCoord: (%s) +++", date.Format("%d %m %Y"));
-#endif
-
-    if ( IsDateShown(date) )
-    {
-        bool startOnMonday = ( GetWindowStyle() & wxCAL_MONDAY_FIRST ) != 0;
-
-        // Find day
-        *day = date.GetWeekDay();
-
-        if ( *day == 0 ) // sunday
-        {
-            *day = ( startOnMonday ) ? 7 : 1;
-        }
-        else
-        {
-            *day += ( startOnMonday ) ? 0 : 1;
-        }
-
-        int targetmonth = date.GetMonth() + (12 * date.GetYear());
-        int thismonth = m_date.GetMonth() + (12 * m_date.GetYear());
-
-        // Find week
-        if ( targetmonth == thismonth )
-        {
-            *week = GetWeek(date);
-        }
-        else
-        {
-            if ( targetmonth < thismonth )
-            {
-                *week = 1; // trivial
-            }
-            else // targetmonth > thismonth
-            {
-                wxDateTime ldcm;
-                int lastweek;
-                int lastday;
-
-                // get the datecoord of the last day in the month currently shown
-#if DEBUG_PAINT
-                wxLogDebug("     +++ LDOM +++");
-#endif
-                GetDateCoord(ldcm.SetToLastMonthDay(m_date.GetMonth(), m_date.GetYear()), &lastday, &lastweek);
-#if DEBUG_PAINT
-                wxLogDebug("     --- LDOM ---");
-#endif
-
-                wxTimeSpan span = date - ldcm;
-
-                int daysfromlast = span.GetDays();
-#if DEBUG_PAINT
-                wxLogDebug("daysfromlast: %i", daysfromlast);
-#endif
-                if ( daysfromlast + lastday > 7 ) // past week boundary
-                {
-                    int wholeweeks = (daysfromlast / 7);
-                    *week = wholeweeks + lastweek;
-                    if ( (daysfromlast - (7 * wholeweeks) + lastday) > 7 )
-                    {
-                        *week += 1;
-                    }
-                }
-                else
-                {
-                    *week = lastweek;
-                }
-            }
-        }
-    }
-    else
-    {
-        *day = -1;
-        *week = -1;
-        retval = false;
-    }
-
-#if DEBUG_PAINT
-    wxLogDebug("--- GetDateCoord: (%s) = (%i, %i) ---", date.Format("%d %m %Y"), *day, *week);
-#endif
-
-    return retval;
-}
-
-// ----------------------------------------------------------------------------
-// mouse handling
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::OnDClick(wxMouseEvent& event)
-{
-    if ( HitTest(event.GetPosition()) != wxCAL_HITTEST_DAY )
-    {
-        event.Skip();
-    }
-    else
-    {
-        GenerateEvent(wxEVT_CALENDAR_DOUBLECLICKED);
-    }
-}
-
-void wxCalendarCtrl::OnClick(wxMouseEvent& event)
-{
-    wxDateTime date;
-    wxDateTime::WeekDay wday;
-    switch ( HitTest(event.GetPosition(), &date, &wday) )
-    {
-        case wxCAL_HITTEST_DAY:
-            if ( IsDateInRange(date) )
-            {
-                ChangeDay(date);
-
-                GenerateEvents(wxEVT_CALENDAR_DAY_CHANGED,
-                               wxEVT_CALENDAR_SEL_CHANGED);
-            }
-            break;
-
-        case wxCAL_HITTEST_HEADER:
-            {
-                wxCalendarEvent eventWd(this, wxEVT_CALENDAR_WEEKDAY_CLICKED);
-                eventWd.m_wday = wday;
-                (void)GetEventHandler()->ProcessEvent(eventWd);
-            }
-            break;
-
-        case wxCAL_HITTEST_DECMONTH:
-        case wxCAL_HITTEST_INCMONTH:
-        case wxCAL_HITTEST_SURROUNDING_WEEK:
-            SetDateAndNotify(date); // we probably only want to refresh the control. No notification.. (maybe as an option?)
-            break;
-
-        default:
-            wxFAIL_MSG(_T("unknown hittest code"));
-            // fall through
-
-        case wxCAL_HITTEST_NOWHERE:
-            event.Skip();
-            break;
-    }
-}
-
-wxCalendarHitTestResult wxCalendarCtrl::HitTest(const wxPoint& pos,
-                                                wxDateTime *date,
-                                                wxDateTime::WeekDay *wd)
-{
-    RecalcGeometry();
-
-    // the position where the calendar really begins
-    wxCoord x0 = wxMax((GetSize().x - m_widthCol*7)/2, 0);
-
-    if ( HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
-    {
-        // Header: month
-
-        // we need to find out if the hit is on left arrow, on month or on right arrow
-        // left arrow?
-        if ( m_leftArrowRect.Contains(pos) )
-        {
-            if ( date )
-            {
-                if ( IsDateInRange(m_date - wxDateSpan::Month()) )
-                {
-                    *date = m_date - wxDateSpan::Month();
-                }
-                else
-                {
-                    *date = GetLowerDateLimit();
-                }
-            }
-
-            return wxCAL_HITTEST_DECMONTH;
-        }
-
-        if ( m_rightArrowRect.Contains(pos) )
-        {
-            if ( date )
-            {
-                if ( IsDateInRange(m_date + wxDateSpan::Month()) )
-                {
-                    *date = m_date + wxDateSpan::Month();
-                }
-                else
-                {
-                    *date = GetUpperDateLimit();
-                }
-            }
-
-            return wxCAL_HITTEST_INCMONTH;
-        }
-
-    }
-
-    // header: week days
-    int wday = (pos.x - x0) / m_widthCol;
-    if ( pos.y < (m_heightRow + m_rowOffset) )
-    {
-        if ( pos.y > m_rowOffset )
-        {
-            if ( wd )
-            {
-                if ( GetWindowStyle() & wxCAL_MONDAY_FIRST )
-                {
-                    wday = wday == 6 ? 0 : wday + 1;
-                }
-
-                *wd = (wxDateTime::WeekDay)wday;
-            }
-
-            return wxCAL_HITTEST_HEADER;
-        }
-        else
-        {
-            return wxCAL_HITTEST_NOWHERE;
-        }
-    }
-
-    int week = (pos.y - (m_heightRow + m_rowOffset)) / m_heightRow;
-    if ( week >= 6 || wday >= 7 )
-    {
-        return wxCAL_HITTEST_NOWHERE;
-    }
-
-    wxDateTime dt = GetStartDate() + wxDateSpan::Days(7*week + wday);
-
-    if ( IsDateShown(dt) )
-    {
-        if ( date )
-            *date = dt;
-
-        if ( dt.GetMonth() == m_date.GetMonth() )
-        {
-
-            return wxCAL_HITTEST_DAY;
-        }
-        else
-        {
-            return wxCAL_HITTEST_SURROUNDING_WEEK;
-        }
-    }
-    else
-    {
-        return wxCAL_HITTEST_NOWHERE;
-    }
-}
-
-// ----------------------------------------------------------------------------
-// subcontrols events handling
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::OnMonthChange(wxCommandEvent& event)
-{
-    wxDateTime::Tm tm = m_date.GetTm();
-
-    wxDateTime::Month mon = (wxDateTime::Month)event.GetInt();
-    if ( tm.mday > wxDateTime::GetNumberOfDays(mon, tm.year) )
-    {
-        tm.mday = wxDateTime::GetNumberOfDays(mon, tm.year);
-    }
-
-    wxDateTime target = wxDateTime(tm.mday, mon, tm.year);
-
-    ChangeMonth(&target);
-    SetDateAndNotify(target);
-}
-
-void wxCalendarCtrl::OnYearChange(wxCommandEvent& event)
-{
-    int year = (int)event.GetInt();
-    if ( year == INT_MIN )
-    {
-        // invalid year in the spin control, ignore it
-        return;
-    }
-
-    wxDateTime::Tm tm = m_date.GetTm();
-
-    if ( tm.mday > wxDateTime::GetNumberOfDays(tm.mon, year) )
-    {
-        tm.mday = wxDateTime::GetNumberOfDays(tm.mon, year);
-    }
-
-    wxDateTime target = wxDateTime(tm.mday, tm.mon, year);
-
-    if ( ChangeYear(&target) )
-    {
-        SetDateAndNotify(target);
-    }
-    else
-    {
-        // In this case we don't want to change the date. That would put us
-        // inside the same year but a strange number of months forward/back..
-        m_spinYear->SetValue(target.GetYear());
-    }
-}
-
-void wxCalendarCtrl::OnYearTextChange(wxCommandEvent& event)
-{
-    SetUserChangedYear();
-    OnYearChange(event);
-}
-
-// Responds to colour changes, and passes event on to children.
-void wxCalendarCtrl::OnSysColourChanged(wxSysColourChangedEvent& event)
-{
-    // reinit colours
-    InitColours();
-
-    // Propagate the event to the children
-    wxControl::OnSysColourChanged(event);
-
-    // Redraw control area
-    SetBackgroundColour(m_colBackground);
-    Refresh();
-}
-
-// ----------------------------------------------------------------------------
-// keyboard interface
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::OnChar(wxKeyEvent& event)
-{
-    wxDateTime target;
-    switch ( event.GetKeyCode() )
-    {
-        case _T('+'):
-        case WXK_ADD:
-            target = m_date + wxDateSpan::Year();
-            if ( ChangeYear(&target) )
-            {
-                SetDateAndNotify(target);
-            }
-            break;
-
-        case _T('-'):
-        case WXK_SUBTRACT:
-            target = m_date - wxDateSpan::Year();
-            if ( ChangeYear(&target) )
-            {
-                SetDateAndNotify(target);
-            }
-            break;
-
-        case WXK_PAGEUP:
-            target = m_date - wxDateSpan::Month();
-            ChangeMonth(&target);
-            SetDateAndNotify(target); // always
-            break;
-
-        case WXK_PAGEDOWN:
-            target = m_date + wxDateSpan::Month();
-            ChangeMonth(&target);
-            SetDateAndNotify(target); // always
-            break;
-
-        case WXK_RIGHT:
-            if ( event.ControlDown() )
-            {
-                target = wxDateTime(m_date).SetToNextWeekDay(
-                                 GetWindowStyle() & wxCAL_MONDAY_FIRST
-                                 ? wxDateTime::Sun : wxDateTime::Sat);
-                if ( !IsDateInRange(target) )
-                {
-                    target = GetUpperDateLimit();
-                }
-                SetDateAndNotify(target);
-            }
-            else
-                SetDateAndNotify(m_date + wxDateSpan::Day());
-            break;
-
-        case WXK_LEFT:
-            if ( event.ControlDown() )
-            {
-                target = wxDateTime(m_date).SetToPrevWeekDay(
-                                 GetWindowStyle() & wxCAL_MONDAY_FIRST
-                                 ? wxDateTime::Mon : wxDateTime::Sun);
-                if ( !IsDateInRange(target) )
-                {
-                    target = GetLowerDateLimit();
-                }
-                SetDateAndNotify(target);
-            }
-            else
-                SetDateAndNotify(m_date - wxDateSpan::Day());
-            break;
-
-        case WXK_UP:
-            SetDateAndNotify(m_date - wxDateSpan::Week());
-            break;
-
-        case WXK_DOWN:
-            SetDateAndNotify(m_date + wxDateSpan::Week());
-            break;
-
-        case WXK_HOME:
-            if ( event.ControlDown() )
-                SetDateAndNotify(wxDateTime::Today());
-            else
-                SetDateAndNotify(wxDateTime(1, m_date.GetMonth(), m_date.GetYear()));
-            break;
-
-        case WXK_END:
-            SetDateAndNotify(wxDateTime(m_date).SetToLastMonthDay());
-            break;
-
-        case WXK_RETURN:
-            GenerateEvent(wxEVT_CALENDAR_DOUBLECLICKED);
-            break;
-
-        default:
-            event.Skip();
-    }
-}
-
-// ----------------------------------------------------------------------------
-// holidays handling
-// ----------------------------------------------------------------------------
-
-void wxCalendarCtrl::EnableHolidayDisplay(bool display)
-{
-    long style = GetWindowStyle();
-    if ( display )
-        style |= wxCAL_SHOW_HOLIDAYS;
-    else
-        style &= ~wxCAL_SHOW_HOLIDAYS;
-
-    SetWindowStyle(style);
-
-    if ( display )
-        SetHolidayAttrs();
-    else
-        ResetHolidayAttrs();
-
-    Refresh();
-}
-
-void wxCalendarCtrl::SetHolidayAttrs()
-{
-    if ( GetWindowStyle() & wxCAL_SHOW_HOLIDAYS )
-    {
-        ResetHolidayAttrs();
-
-        wxDateTime::Tm tm = m_date.GetTm();
-        wxDateTime dtStart(1, tm.mon, tm.year),
-                   dtEnd = dtStart.GetLastMonthDay();
-
-        wxDateTimeArray hol;
-        wxDateTimeHolidayAuthority::GetHolidaysInRange(dtStart, dtEnd, hol);
-
-        size_t count = hol.GetCount();
-        for ( size_t n = 0; n < count; n++ )
-        {
-            SetHoliday(hol[n].GetDay());
-        }
-    }
-}
-
-void wxCalendarCtrl::SetHoliday(size_t day)
-{
-    wxCHECK_RET( day > 0 && day < 32, _T("invalid day in SetHoliday") );
-
-    wxCalendarDateAttr *attr = GetAttr(day);
-    if ( !attr )
-    {
-        attr = new wxCalendarDateAttr;
-    }
-
-    attr->SetHoliday(true);
-
-    // can't use SetAttr() because it would delete this pointer
-    m_attrs[day - 1] = attr;
-}
-
-void wxCalendarCtrl::ResetHolidayAttrs()
-{
-    for ( size_t day = 0; day < 31; day++ )
-    {
-        if ( m_attrs[day] )
-        {
-            m_attrs[day]->SetHoliday(false);
-        }
-    }
-}
-
-
-//static
-wxVisualAttributes
-wxCalendarCtrl::GetClassDefaultAttributes(wxWindowVariant variant)
-{
-    // Use the same color scheme as wxListBox
-    return wxListBox::GetClassDefaultAttributes(variant);
-}
-
-#endif // wxUSE_CALENDARCTRL
diff --git a/src/generic/calctrlg.cpp b/src/generic/calctrlg.cpp
new file mode 100644 (file)
index 0000000..9ac23cf
--- /dev/null
@@ -0,0 +1,1875 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/calctrlg.cpp
+// Purpose:     implementation of the wxGenericCalendarCtrl
+// Author:      Vadim Zeitlin
+// Modified by:
+// Created:     29.12.99
+// RCS-ID:      $Id$
+// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/dcclient.h"
+    #include "wx/settings.h"
+    #include "wx/brush.h"
+    #include "wx/combobox.h"
+    #include "wx/listbox.h"
+    #include "wx/stattext.h"
+    #include "wx/textctrl.h"
+#endif //WX_PRECOMP
+
+
+#if wxUSE_CALENDARCTRL
+
+#include "wx/spinctrl.h"
+#include "wx/calctrl.h"
+#include "wx/generic/calctrlg.h"
+
+#define DEBUG_PAINT 0
+
+// ----------------------------------------------------------------------------
+// wxWin macros
+// ----------------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(wxGenericCalendarCtrl, wxControl)
+    EVT_PAINT(wxGenericCalendarCtrl::OnPaint)
+
+    EVT_CHAR(wxGenericCalendarCtrl::OnChar)
+
+    EVT_LEFT_DOWN(wxGenericCalendarCtrl::OnClick)
+    EVT_LEFT_DCLICK(wxGenericCalendarCtrl::OnDClick)
+
+    EVT_SYS_COLOUR_CHANGED(wxGenericCalendarCtrl::OnSysColourChanged)
+END_EVENT_TABLE()
+
+#if wxUSE_EXTENDED_RTTI
+WX_DEFINE_FLAGS( wxCalendarCtrlStyle )
+
+wxBEGIN_FLAGS( wxCalendarCtrlStyle )
+    // new style border flags, we put them first to
+    // use them for streaming out
+    wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+    wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+    wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+    wxFLAGS_MEMBER(wxBORDER_RAISED)
+    wxFLAGS_MEMBER(wxBORDER_STATIC)
+    wxFLAGS_MEMBER(wxBORDER_NONE)
+
+    // old style border flags
+    wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+    wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+    wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+    wxFLAGS_MEMBER(wxRAISED_BORDER)
+    wxFLAGS_MEMBER(wxSTATIC_BORDER)
+    wxFLAGS_MEMBER(wxBORDER)
+
+    // standard window styles
+    wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+    wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+    wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+    wxFLAGS_MEMBER(wxWANTS_CHARS)
+    wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+    wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+    wxFLAGS_MEMBER(wxVSCROLL)
+    wxFLAGS_MEMBER(wxHSCROLL)
+
+    wxFLAGS_MEMBER(wxCAL_SUNDAY_FIRST)
+    wxFLAGS_MEMBER(wxCAL_MONDAY_FIRST)
+    wxFLAGS_MEMBER(wxCAL_SHOW_HOLIDAYS)
+    wxFLAGS_MEMBER(wxCAL_NO_YEAR_CHANGE)
+    wxFLAGS_MEMBER(wxCAL_NO_MONTH_CHANGE)
+    wxFLAGS_MEMBER(wxCAL_SEQUENTIAL_MONTH_SELECTION)
+    wxFLAGS_MEMBER(wxCAL_SHOW_SURROUNDING_WEEKS)
+
+wxEND_FLAGS( wxCalendarCtrlStyle )
+
+IMPLEMENT_DYNAMIC_CLASS_XTI(wxGenericCalendarCtrl, wxControl,"wx/calctrl.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxGenericCalendarCtrl)
+    wxEVENT_RANGE_PROPERTY( Updated , wxEVT_CALENDAR_SEL_CHANGED , wxEVT_CALENDAR_WEEKDAY_CLICKED , wxCalendarEvent )
+    wxHIDE_PROPERTY( Children )
+    wxPROPERTY( Date,wxDateTime, SetDate , GetDate, , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    wxPROPERTY_FLAGS( WindowStyle , wxCalendarCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxBEGIN_HANDLERS_TABLE(wxGenericCalendarCtrl)
+wxEND_HANDLERS_TABLE()
+
+wxCONSTRUCTOR_6( wxGenericCalendarCtrl , wxWindow* , Parent , wxWindowID , Id , wxDateTime , Date , wxPoint , Position , wxSize , Size , long , WindowStyle )
+#else
+IMPLEMENT_DYNAMIC_CLASS(wxGenericCalendarCtrl, wxControl)
+#endif
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// helper functions
+// ----------------------------------------------------------------------------
+
+namespace
+{
+
+// add attributes that are set in attr
+void AddAttr(wxCalendarDateAttr *self, const wxCalendarDateAttr& attr)
+{
+    if (attr.HasTextColour())
+        self->SetTextColour(attr.GetTextColour());
+    if (attr.HasBackgroundColour())
+        self->SetBackgroundColour(attr.GetBackgroundColour());
+    if (attr.HasBorderColour())
+        self->SetBorderColour(attr.GetBorderColour());
+    if (attr.HasFont())
+        self->SetFont(attr.GetFont());
+    if (attr.HasBorder())
+        self->SetBorder(attr.GetBorder());
+    if (attr.IsHoliday())
+        self->SetHoliday(true);
+}
+
+// remove attributes that are set in attr
+void DelAttr(wxCalendarDateAttr *self, const wxCalendarDateAttr &attr)
+{
+    if (attr.HasTextColour())
+        self->SetTextColour(wxNullColour);
+    if (attr.HasBackgroundColour())
+        self->SetBackgroundColour(wxNullColour);
+    if (attr.HasBorderColour())
+        self->SetBorderColour(wxNullColour);
+    if (attr.HasFont())
+        self->SetFont(wxNullFont);
+    if (attr.HasBorder())
+        self->SetBorder(wxCAL_BORDER_NONE);
+    if (attr.IsHoliday())
+        self->SetHoliday(false);
+}
+
+} // anonymous namespace
+
+// ----------------------------------------------------------------------------
+// wxGenericCalendarCtrl
+// ----------------------------------------------------------------------------
+
+wxGenericCalendarCtrl::wxGenericCalendarCtrl(wxWindow *parent,
+                                             wxWindowID id,
+                                             const wxDateTime& date,
+                                             const wxPoint& pos,
+                                             const wxSize& size,
+                                             long style,
+                                             const wxString& name)
+{
+    Init();
+
+    (void)Create(parent, id, date, pos, size, style, name);
+}
+
+void wxGenericCalendarCtrl::Init()
+{
+    m_comboMonth = NULL;
+    m_spinYear = NULL;
+    m_staticYear = NULL;
+    m_staticMonth = NULL;
+
+    m_userChangedYear = false;
+
+    m_widthCol =
+    m_heightRow = 0;
+
+    wxDateTime::WeekDay wd;
+    for ( wd = wxDateTime::Sun; wd < wxDateTime::Inv_WeekDay; wxNextWDay(wd) )
+    {
+        m_weekdays[wd] = wxDateTime::GetWeekDayName(wd, wxDateTime::Name_Abbr);
+    }
+
+    for ( size_t n = 0; n < WXSIZEOF(m_attrs); n++ )
+    {
+        m_attrs[n] = NULL;
+    }
+
+    InitColours();
+}
+
+void wxGenericCalendarCtrl::InitColours()
+{
+    m_colHighlightFg = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+    m_colHighlightBg = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
+    m_colBackground = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+    m_colSorrounding = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
+
+    m_colHolidayFg = *wxRED;
+    // don't set m_colHolidayBg - by default, same as our bg colour
+
+    m_colHeaderFg = *wxBLUE;
+    m_colHeaderBg = *wxLIGHT_GREY;
+}
+
+bool wxGenericCalendarCtrl::Create(wxWindow *parent,
+                                   wxWindowID id,
+                                   const wxDateTime& date,
+                                   const wxPoint& pos,
+                                   const wxSize& size,
+                                   long style,
+                                   const wxString& name)
+{
+    if ( !wxControl::Create(parent, id, pos, size,
+                            style | wxCLIP_CHILDREN | wxWANTS_CHARS | wxFULL_REPAINT_ON_RESIZE,
+                            wxDefaultValidator, name) )
+    {
+        return false;
+    }
+
+    // needed to get the arrow keys normally used for the dialog navigation
+    SetWindowStyle(style | wxWANTS_CHARS);
+
+    m_date = date.IsValid() ? date : wxDateTime::Today();
+
+    m_lowdate = wxDefaultDateTime;
+    m_highdate = wxDefaultDateTime;
+
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        CreateYearSpinCtrl();
+        m_staticYear = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%Y")),
+                                        wxDefaultPosition, wxDefaultSize,
+                                        wxALIGN_CENTRE);
+
+        CreateMonthComboBox();
+        m_staticMonth = new wxStaticText(GetParent(), wxID_ANY, m_date.Format(_T("%B")),
+                                         wxDefaultPosition, wxDefaultSize,
+                                         wxALIGN_CENTRE);
+    }
+
+    ShowCurrentControls();
+
+    // we need to set the position as well because the main control position
+    // is not the same as the one specified in pos if we have the controls
+    // above it
+    SetInitialSize(size);
+    SetPosition(pos);
+
+    // Since we don't paint the whole background make sure that the platform
+    // will use the right one.
+    SetBackgroundColour(m_colBackground);
+
+    SetHolidayAttrs();
+
+    return true;
+}
+
+wxGenericCalendarCtrl::~wxGenericCalendarCtrl()
+{
+    for ( size_t n = 0; n < WXSIZEOF(m_attrs); n++ )
+    {
+        delete m_attrs[n];
+    }
+
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        delete m_comboMonth;
+        delete m_staticMonth;
+        delete m_spinYear;
+        delete m_staticYear;
+    }
+}
+
+void wxGenericCalendarCtrl::SetWindowStyleFlag(long style)
+{
+    // changing this style doesn't work because the controls are not
+    // created/shown/hidden accordingly
+    wxASSERT_MSG( (style & wxCAL_SEQUENTIAL_MONTH_SELECTION) ==
+                    (m_windowStyle & wxCAL_SEQUENTIAL_MONTH_SELECTION),
+                  _T("wxCAL_SEQUENTIAL_MONTH_SELECTION can't be changed after creation") );
+
+    wxControl::SetWindowStyleFlag(style);
+}
+
+// ----------------------------------------------------------------------------
+// Create the wxComboBox and wxSpinCtrl
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::CreateMonthComboBox()
+{
+    m_comboMonth = new wxComboBox(GetParent(), wxID_ANY,
+                                  wxEmptyString,
+                                  wxDefaultPosition,
+                                  wxDefaultSize,
+                                  0, NULL,
+                                  wxCB_READONLY | wxCLIP_SIBLINGS);
+
+    wxDateTime::Month m;
+    for ( m = wxDateTime::Jan; m < wxDateTime::Inv_Month; wxNextMonth(m) )
+    {
+        m_comboMonth->Append(wxDateTime::GetMonthName(m));
+    }
+
+    m_comboMonth->SetSelection(GetDate().GetMonth());
+    m_comboMonth->SetSize(wxDefaultCoord,
+                          wxDefaultCoord,
+                          wxDefaultCoord,
+                          wxDefaultCoord,
+                          wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT);
+
+    m_comboMonth->Connect(m_comboMonth->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED,
+                          wxCommandEventHandler(wxGenericCalendarCtrl::OnMonthChange),
+                          NULL, this);
+}
+
+void wxGenericCalendarCtrl::CreateYearSpinCtrl()
+{
+    m_spinYear = new wxSpinCtrl(GetParent(), wxID_ANY,
+                                GetDate().Format(_T("%Y")),
+                                wxDefaultPosition,
+                                wxDefaultSize,
+                                wxSP_ARROW_KEYS | wxCLIP_SIBLINGS,
+                                -4300, 10000, GetDate().GetYear());
+
+    m_spinYear->Connect(m_spinYear->GetId(), wxEVT_COMMAND_TEXT_UPDATED,
+                        wxCommandEventHandler(wxGenericCalendarCtrl::OnYearTextChange),
+                        NULL, this);
+
+    m_spinYear->Connect(m_spinYear->GetId(), wxEVT_COMMAND_SPINCTRL_UPDATED,
+                        wxCommandEventHandler(wxGenericCalendarCtrl::OnYearChange),
+                        NULL, this);
+}
+
+// ----------------------------------------------------------------------------
+// forward wxWin functions to subcontrols
+// ----------------------------------------------------------------------------
+
+bool wxGenericCalendarCtrl::Destroy()
+{
+    if ( m_staticYear )
+        m_staticYear->Destroy();
+    if ( m_spinYear )
+        m_spinYear->Destroy();
+    if ( m_comboMonth )
+        m_comboMonth->Destroy();
+    if ( m_staticMonth )
+        m_staticMonth->Destroy();
+
+    m_staticYear = NULL;
+    m_spinYear = NULL;
+    m_comboMonth = NULL;
+    m_staticMonth = NULL;
+
+    return wxControl::Destroy();
+}
+
+bool wxGenericCalendarCtrl::Show(bool show)
+{
+    if ( !wxControl::Show(show) )
+    {
+        return false;
+    }
+
+    if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        if ( GetMonthControl() )
+        {
+            GetMonthControl()->Show(show);
+            GetYearControl()->Show(show);
+        }
+    }
+
+    return true;
+}
+
+bool wxGenericCalendarCtrl::Enable(bool enable)
+{
+    if ( !wxControl::Enable(enable) )
+    {
+        return false;
+    }
+
+    if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        GetMonthControl()->Enable(enable);
+        GetYearControl()->Enable(enable);
+    }
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// enable/disable month/year controls
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::ShowCurrentControls()
+{
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        if ( AllowMonthChange() )
+        {
+            m_comboMonth->Show();
+            m_staticMonth->Hide();
+
+            if ( AllowYearChange() )
+            {
+                m_spinYear->Show();
+                m_staticYear->Hide();
+
+                // skip the rest
+                return;
+            }
+        }
+        else
+        {
+            m_comboMonth->Hide();
+            m_staticMonth->Show();
+        }
+
+        // year change not allowed here
+        m_spinYear->Hide();
+        m_staticYear->Show();
+    }
+    //else: these controls are not even created, don't show/hide them
+}
+
+wxControl *wxGenericCalendarCtrl::GetMonthControl() const
+{
+    return AllowMonthChange() ? (wxControl *)m_comboMonth : (wxControl *)m_staticMonth;
+}
+
+wxControl *wxGenericCalendarCtrl::GetYearControl() const
+{
+    return AllowYearChange() ? (wxControl *)m_spinYear : (wxControl *)m_staticYear;
+}
+
+void wxGenericCalendarCtrl::EnableYearChange(bool enable)
+{
+    if ( enable != AllowYearChange() )
+    {
+        long style = GetWindowStyle();
+        if ( enable )
+            style &= ~wxCAL_NO_YEAR_CHANGE;
+        else
+            style |= wxCAL_NO_YEAR_CHANGE;
+        SetWindowStyle(style);
+
+        ShowCurrentControls();
+        if ( GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION )
+        {
+            Refresh();
+        }
+    }
+}
+
+bool wxGenericCalendarCtrl::EnableMonthChange(bool enable)
+{
+    if ( !wxCalendarCtrlBase::EnableMonthChange(enable) )
+        return false;
+
+    ShowCurrentControls();
+    if ( GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION )
+        Refresh();
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// changing date
+// ----------------------------------------------------------------------------
+
+bool wxGenericCalendarCtrl::SetDate(const wxDateTime& date)
+{
+    bool retval = true;
+
+    bool sameMonth = m_date.GetMonth() == date.GetMonth(),
+         sameYear = m_date.GetYear() == date.GetYear();
+
+    if ( IsDateInRange(date) )
+    {
+        if ( sameMonth && sameYear )
+        {
+            // just change the day
+            ChangeDay(date);
+        }
+        else
+        {
+            if ( AllowMonthChange() && (AllowYearChange() || sameYear) )
+            {
+                // change everything
+                m_date = date;
+
+                if ( !(GetWindowStyle() & wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+                {
+                    // update the controls
+                    m_comboMonth->SetSelection(m_date.GetMonth());
+
+                    if ( AllowYearChange() )
+                    {
+                        if ( !m_userChangedYear )
+                            m_spinYear->SetValue(m_date.Format(_T("%Y")));
+                    }
+                }
+
+                // as the month changed, holidays did too
+                SetHolidayAttrs();
+
+                // update the calendar
+                Refresh();
+            }
+            else
+            {
+                // forbidden
+                retval = false;
+            }
+        }
+    }
+
+    m_userChangedYear = false;
+
+    return retval;
+}
+
+void wxGenericCalendarCtrl::ChangeDay(const wxDateTime& date)
+{
+    if ( m_date != date )
+    {
+        // we need to refresh the row containing the old date and the one
+        // containing the new one
+        wxDateTime dateOld = m_date;
+        m_date = date;
+
+        RefreshDate(dateOld);
+
+        // if the date is in the same row, it was already drawn correctly
+        if ( GetWeek(m_date) != GetWeek(dateOld) )
+        {
+            RefreshDate(m_date);
+        }
+    }
+}
+
+void wxGenericCalendarCtrl::SetDateAndNotify(const wxDateTime& date)
+{
+    wxDateTime::Tm tm1 = m_date.GetTm(),
+                   tm2 = date.GetTm();
+
+    const bool pageChanged = tm1.year != tm2.year || tm1.mon != tm2.mon;
+
+    if ( !pageChanged && tm1.mday == tm2.mday )
+        return;
+
+    if ( SetDate(date) )
+    {
+        GenerateEvent(wxEVT_CALENDAR_SEL_CHANGED);
+        if ( !pageChanged )
+            GenerateEvent(wxEVT_CALENDAR_PAGE_CHANGED);
+
+        // send also one of the deprecated events
+        if ( tm1.year != tm2.year )
+            GenerateEvent(wxEVT_CALENDAR_YEAR_CHANGED);
+        else if ( tm1.mon != tm2.mon )
+            GenerateEvent(wxEVT_CALENDAR_MONTH_CHANGED);
+        else
+            GenerateEvent(wxEVT_CALENDAR_DAY_CHANGED);
+    }
+}
+
+// ----------------------------------------------------------------------------
+// date range
+// ----------------------------------------------------------------------------
+
+bool wxGenericCalendarCtrl::SetLowerDateLimit(const wxDateTime& date /* = wxDefaultDateTime */)
+{
+    bool retval = true;
+
+    if ( !(date.IsValid()) || ( ( m_highdate.IsValid() ) ? ( date <= m_highdate ) : true ) )
+    {
+        m_lowdate = date;
+    }
+    else
+    {
+        retval = false;
+    }
+
+    return retval;
+}
+
+bool wxGenericCalendarCtrl::SetUpperDateLimit(const wxDateTime& date /* = wxDefaultDateTime */)
+{
+    bool retval = true;
+
+    if ( !(date.IsValid()) || ( ( m_lowdate.IsValid() ) ? ( date >= m_lowdate ) : true ) )
+    {
+        m_highdate = date;
+    }
+    else
+    {
+        retval = false;
+    }
+
+    return retval;
+}
+
+bool wxGenericCalendarCtrl::SetDateRange(const wxDateTime& lowerdate /* = wxDefaultDateTime */, const wxDateTime& upperdate /* = wxDefaultDateTime */)
+{
+    bool retval = true;
+
+    if (
+        ( !( lowerdate.IsValid() ) || ( ( upperdate.IsValid() ) ? ( lowerdate <= upperdate ) : true ) ) &&
+        ( !( upperdate.IsValid() ) || ( ( lowerdate.IsValid() ) ? ( upperdate >= lowerdate ) : true ) ) )
+    {
+        m_lowdate = lowerdate;
+        m_highdate = upperdate;
+    }
+    else
+    {
+        retval = false;
+    }
+
+    return retval;
+}
+
+// ----------------------------------------------------------------------------
+// date helpers
+// ----------------------------------------------------------------------------
+
+wxDateTime wxGenericCalendarCtrl::GetStartDate() const
+{
+    wxDateTime::Tm tm = m_date.GetTm();
+
+    wxDateTime date = wxDateTime(1, tm.mon, tm.year);
+
+    // rewind back
+    date.SetToPrevWeekDay(GetWindowStyle() & wxCAL_MONDAY_FIRST
+                          ? wxDateTime::Mon : wxDateTime::Sun);
+
+    if ( GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS )
+    {
+        // We want to offset the calendar if we start on the first..
+        if ( date.GetDay() == 1 )
+        {
+            date -= wxDateSpan::Week();
+        }
+    }
+
+    return date;
+}
+
+bool wxGenericCalendarCtrl::IsDateShown(const wxDateTime& date) const
+{
+    if ( !(GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) )
+    {
+        return date.GetMonth() == m_date.GetMonth();
+    }
+    else
+    {
+        return true;
+    }
+}
+
+bool wxGenericCalendarCtrl::IsDateInRange(const wxDateTime& date) const
+{
+    // Check if the given date is in the range specified
+    return ( ( ( m_lowdate.IsValid() ) ? ( date >= m_lowdate ) : true )
+        && ( ( m_highdate.IsValid() ) ? ( date <= m_highdate ) : true ) );
+}
+
+bool wxGenericCalendarCtrl::ChangeYear(wxDateTime* target) const
+{
+    bool retval = false;
+
+    if ( !(IsDateInRange(*target)) )
+    {
+        if ( target->GetYear() < m_date.GetYear() )
+        {
+            if ( target->GetYear() >= GetLowerDateLimit().GetYear() )
+            {
+                *target = GetLowerDateLimit();
+                retval = true;
+            }
+            else
+            {
+                *target = m_date;
+            }
+        }
+        else
+        {
+            if ( target->GetYear() <= GetUpperDateLimit().GetYear() )
+            {
+                *target = GetUpperDateLimit();
+                retval = true;
+            }
+            else
+            {
+                *target = m_date;
+            }
+        }
+    }
+    else
+    {
+        retval = true;
+    }
+
+    return retval;
+}
+
+bool wxGenericCalendarCtrl::ChangeMonth(wxDateTime* target) const
+{
+    bool retval = true;
+
+    if ( !(IsDateInRange(*target)) )
+    {
+        retval = false;
+
+        if ( target->GetMonth() < m_date.GetMonth() )
+        {
+            *target = GetLowerDateLimit();
+        }
+        else
+        {
+            *target = GetUpperDateLimit();
+        }
+    }
+
+    return retval;
+}
+
+size_t wxGenericCalendarCtrl::GetWeek(const wxDateTime& date) const
+{
+    size_t retval = date.GetWeekOfMonth(GetWindowStyle() & wxCAL_MONDAY_FIRST
+                                   ? wxDateTime::Monday_First
+                                   : wxDateTime::Sunday_First);
+
+    if ( (GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) )
+    {
+        // we need to offset an extra week if we "start" on the 1st of the month
+        wxDateTime::Tm tm = date.GetTm();
+
+        wxDateTime datetest = wxDateTime(1, tm.mon, tm.year);
+
+        // rewind back
+        datetest.SetToPrevWeekDay(GetWindowStyle() & wxCAL_MONDAY_FIRST
+                              ? wxDateTime::Mon : wxDateTime::Sun);
+
+        if ( datetest.GetDay() == 1 )
+        {
+            retval += 1;
+        }
+    }
+
+    return retval;
+}
+
+// ----------------------------------------------------------------------------
+// size management
+// ----------------------------------------------------------------------------
+
+// this is a composite control and it must arrange its parts each time its
+// size or position changes: the combobox and spinctrl are along the top of
+// the available area and the calendar takes up therest of the space
+
+// the static controls are supposed to be always smaller than combo/spin so we
+// always use the latter for size calculations and position the static to take
+// the same space
+
+// the constants used for the layout
+#define VERT_MARGIN     5           // distance between combo and calendar
+#ifdef __WXMAC__
+#define HORZ_MARGIN    5           //                            spin
+#else
+#define HORZ_MARGIN    15           //                            spin
+#endif
+wxSize wxGenericCalendarCtrl::DoGetBestSize() const
+{
+    // calc the size of the calendar
+    wx_const_cast(wxGenericCalendarCtrl *, this)->RecalcGeometry();
+
+    wxCoord width = 7*m_widthCol,
+            height = 7*m_heightRow + m_rowOffset + VERT_MARGIN;
+
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        // the combobox doesn't report its height correctly (it returns the
+        // height including the drop down list) so don't use it
+        height += m_spinYear->GetBestSize().y;
+
+
+        wxCoord w2 = m_comboMonth->GetBestSize().x + HORZ_MARGIN + GetCharWidth()*6;
+        if (width < w2)
+            width = w2;
+    }
+
+    if ( !HasFlag(wxBORDER_NONE) )
+    {
+        // the border would clip the last line otherwise
+        height += 6;
+        width += 4;
+    }
+
+    wxSize best(width, height);
+    CacheBestSize(best);
+    return best;
+}
+
+void wxGenericCalendarCtrl::DoSetSize(int x, int y,
+                               int width, int height,
+                               int sizeFlags)
+{
+    wxControl::DoSetSize(x, y, width, height, sizeFlags);
+}
+
+void wxGenericCalendarCtrl::DoMoveWindow(int x, int y, int width, int height)
+{
+    int yDiff;
+
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && m_staticMonth )
+    {
+        wxSize sizeCombo = m_comboMonth->GetEffectiveMinSize();
+        wxSize sizeStatic = m_staticMonth->GetSize();
+        wxSize sizeSpin = m_spinYear->GetSize();
+
+        // wxMSW sometimes reports the wrong combo height,
+        // so on this platform we'll use the spin control
+        // height instead.
+#ifdef __WXMSW__
+        int maxHeight = sizeSpin.y;
+        int requiredSpinHeight = -1;
+#else
+        int maxHeight = sizeCombo.y;
+        int requiredSpinHeight = sizeCombo.y;
+#endif
+        int dy = (maxHeight - sizeStatic.y) / 2;
+        m_comboMonth->Move(x, y);
+        m_staticMonth->SetSize(x, y + dy, sizeCombo.x, -1, sizeStatic.y);
+
+        int xDiff = sizeCombo.x + HORZ_MARGIN;
+
+        m_spinYear->SetSize(x + xDiff, y, width - xDiff, requiredSpinHeight);
+        m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
+
+        yDiff = wxMax(sizeSpin.y, maxHeight) + VERT_MARGIN;
+    }
+    else // no controls on the top
+    {
+        yDiff = 0;
+    }
+
+    wxControl::DoMoveWindow(x, y + yDiff, width, height - yDiff);
+}
+
+void wxGenericCalendarCtrl::DoGetPosition(int *x, int *y) const
+{
+    wxControl::DoGetPosition(x, y);
+#ifndef __WXPM__
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) && GetMonthControl() )
+    {
+        // our real top corner is not in this position
+        if ( y )
+        {
+            *y -= GetMonthControl()->GetSize().y + VERT_MARGIN;
+        }
+    }
+#endif
+}
+
+void wxGenericCalendarCtrl::DoGetSize(int *width, int *height) const
+{
+    wxControl::DoGetSize(width, height);
+#ifndef __WXPM__
+    if ( !HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        // our real height is bigger
+        if ( height && GetMonthControl())
+        {
+            *height += GetMonthControl()->GetSize().y + VERT_MARGIN;
+        }
+    }
+#endif
+}
+
+void wxGenericCalendarCtrl::RecalcGeometry()
+{
+    wxClientDC dc(this);
+
+    dc.SetFont(GetFont());
+
+    // determine the column width (weekday names are not necessarily wider
+    // than the numbers (in some languages), so let's not assume that they are)
+    m_widthCol = 0;
+    for ( int day = 10; day <= 31; day++)
+    {
+        wxCoord width;
+        dc.GetTextExtent(wxString::Format(wxT("%d"), day), &width, &m_heightRow);
+        if ( width > m_widthCol )
+        {
+            // 1.5 times the width gives nice margins even if the weekday
+            // names are short
+            m_widthCol = width+width/2;
+        }
+    }
+    wxDateTime::WeekDay wd;
+    for ( wd = wxDateTime::Sun; wd < wxDateTime::Inv_WeekDay; wxNextWDay(wd) )
+    {
+        wxCoord width;
+        dc.GetTextExtent(m_weekdays[wd], &width, &m_heightRow);
+        if ( width > m_widthCol )
+        {
+            m_widthCol = width;
+        }
+    }
+
+    // leave some margins
+    m_widthCol += 2;
+    m_heightRow += 2;
+
+    m_rowOffset = HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) ? m_heightRow : 0; // conditional in relation to style
+}
+
+// ----------------------------------------------------------------------------
+// drawing
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
+{
+    wxPaintDC dc(this);
+
+    dc.SetFont(GetFont());
+
+    RecalcGeometry();
+
+#if DEBUG_PAINT
+    wxLogDebug("--- starting to paint, selection: %s, week %u\n",
+           m_date.Format("%a %d-%m-%Y %H:%M:%S").c_str(),
+           GetWeek(m_date));
+#endif
+
+    wxCoord y = 0;
+    wxCoord x0 = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
+
+    if ( HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        // draw the sequential month-selector
+
+        dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
+        dc.SetTextForeground(*wxBLACK);
+        dc.SetBrush(wxBrush(m_colHeaderBg, wxBRUSHSTYLE_SOLID));
+        dc.SetPen(wxPen(m_colHeaderBg, 1, wxPENSTYLE_SOLID));
+        dc.DrawRectangle(0, y, GetClientSize().x, m_heightRow);
+
+        // Get extent of month-name + year
+        wxCoord monthw, monthh;
+        wxString headertext = m_date.Format(wxT("%B %Y"));
+        dc.GetTextExtent(headertext, &monthw, &monthh);
+
+        // draw month-name centered above weekdays
+        wxCoord monthx = ((m_widthCol * 7) - monthw) / 2 + x0;
+        wxCoord monthy = ((m_heightRow - monthh) / 2) + y;
+        dc.DrawText(headertext, monthx,  monthy);
+
+        // calculate the "month-arrows"
+        wxPoint leftarrow[3];
+        wxPoint rightarrow[3];
+
+        int arrowheight = monthh / 2;
+
+        leftarrow[0] = wxPoint(0, arrowheight / 2);
+        leftarrow[1] = wxPoint(arrowheight / 2, 0);
+        leftarrow[2] = wxPoint(arrowheight / 2, arrowheight - 1);
+
+        rightarrow[0] = wxPoint(0,0);
+        rightarrow[1] = wxPoint(arrowheight / 2, arrowheight / 2);
+        rightarrow[2] = wxPoint(0, arrowheight - 1);
+
+        // draw the "month-arrows"
+
+        wxCoord arrowy = (m_heightRow - arrowheight) / 2;
+        wxCoord larrowx = (m_widthCol - (arrowheight / 2)) / 2 + x0;
+        wxCoord rarrowx = ((m_widthCol - (arrowheight / 2)) / 2) + m_widthCol*6 + x0;
+        m_leftArrowRect = m_rightArrowRect = wxRect(0,0,0,0);
+
+        if ( AllowMonthChange() )
+        {
+            wxDateTime ldpm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) - wxDateSpan::Day(); // last day prev month
+            // Check if range permits change
+            if ( IsDateInRange(ldpm) && ( ( ldpm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) )
+            {
+                m_leftArrowRect = wxRect(larrowx - 3, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6));
+                dc.SetBrush(*wxBLACK_BRUSH);
+                dc.SetPen(*wxBLACK_PEN);
+                dc.DrawPolygon(3, leftarrow, larrowx , arrowy, wxWINDING_RULE);
+                dc.SetBrush(*wxTRANSPARENT_BRUSH);
+                dc.DrawRectangle(m_leftArrowRect);
+            }
+            wxDateTime fdnm = wxDateTime(1,m_date.GetMonth(), m_date.GetYear()) + wxDateSpan::Month(); // first day next month
+            if ( IsDateInRange(fdnm) && ( ( fdnm.GetYear() == m_date.GetYear() ) ? true : AllowYearChange() ) )
+            {
+                m_rightArrowRect = wxRect(rarrowx - 4, arrowy - 3, (arrowheight / 2) + 8, (arrowheight + 6));
+                dc.SetBrush(*wxBLACK_BRUSH);
+                dc.SetPen(*wxBLACK_PEN);
+                dc.DrawPolygon(3, rightarrow, rarrowx , arrowy, wxWINDING_RULE);
+                dc.SetBrush(*wxTRANSPARENT_BRUSH);
+                dc.DrawRectangle(m_rightArrowRect);
+            }
+        }
+
+        y += m_heightRow;
+    }
+
+    // first draw the week days
+    if ( IsExposed(x0, y, x0 + 7*m_widthCol, m_heightRow) )
+    {
+#if DEBUG_PAINT
+        wxLogDebug("painting the header");
+#endif
+
+        dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
+        dc.SetTextForeground(m_colHeaderFg);
+        dc.SetBrush(wxBrush(m_colHeaderBg, wxBRUSHSTYLE_SOLID));
+        dc.SetPen(wxPen(m_colHeaderBg, 1, wxPENSTYLE_SOLID));
+        dc.DrawRectangle(0, y, GetClientSize().x, m_heightRow);
+
+        bool startOnMonday = (GetWindowStyle() & wxCAL_MONDAY_FIRST) != 0;
+        for ( int wd = 0; wd < 7; wd++ )
+        {
+            size_t n;
+            if ( startOnMonday )
+                n = wd == 6 ? 0 : wd + 1;
+            else
+                n = wd;
+            wxCoord dayw, dayh;
+            dc.GetTextExtent(m_weekdays[n], &dayw, &dayh);
+            dc.DrawText(m_weekdays[n], x0 + (wd*m_widthCol) + ((m_widthCol- dayw) / 2), y); // center the day-name
+        }
+    }
+
+    // then the calendar itself
+    dc.SetTextForeground(*wxBLACK);
+    //dc.SetFont(*wxNORMAL_FONT);
+
+    y += m_heightRow;
+    wxDateTime date = GetStartDate();
+
+#if DEBUG_PAINT
+    wxLogDebug("starting calendar from %s\n",
+            date.Format("%a %d-%m-%Y %H:%M:%S").c_str());
+#endif
+
+    dc.SetBackgroundMode(wxBRUSHSTYLE_SOLID);
+    for ( size_t nWeek = 1; nWeek <= 6; nWeek++, y += m_heightRow )
+    {
+        // if the update region doesn't intersect this row, don't paint it
+        if ( !IsExposed(x0, y, x0 + 7*m_widthCol, m_heightRow - 1) )
+        {
+            date += wxDateSpan::Week();
+
+            continue;
+        }
+
+#if DEBUG_PAINT
+        wxLogDebug("painting week %d at y = %d\n", nWeek, y);
+#endif
+
+        for ( int wd = 0; wd < 7; wd++ )
+        {
+            dc.SetTextBackground(m_colBackground);
+            if ( IsDateShown(date) )
+            {
+                // don't use wxDate::Format() which prepends 0s
+                unsigned int day = date.GetDay();
+                wxString dayStr = wxString::Format(_T("%u"), day);
+                wxCoord width;
+                dc.GetTextExtent(dayStr, &width, (wxCoord *)NULL);
+
+                bool changedColours = false,
+                     changedFont = false;
+
+                bool isSel = false;
+                wxCalendarDateAttr *attr = NULL;
+
+                if ( date.GetMonth() != m_date.GetMonth() || !IsDateInRange(date) )
+                {
+                    // surrounding week or out-of-range
+                    // draw "disabled"
+                    dc.SetTextForeground(m_colSorrounding);
+                    changedColours = true;
+                }
+                else
+                {
+                    isSel = date.IsSameDate(m_date);
+                    attr = m_attrs[day - 1];
+
+                    if ( isSel )
+                    {
+                        dc.SetTextForeground(m_colHighlightFg);
+                        dc.SetTextBackground(m_colHighlightBg);
+
+                        changedColours = true;
+                    }
+                    else if ( attr )
+                    {
+                        wxColour colFg, colBg;
+
+                        if ( attr->IsHoliday() )
+                        {
+                            colFg = m_colHolidayFg;
+                            colBg = m_colHolidayBg;
+                        }
+                        else
+                        {
+                            colFg = attr->GetTextColour();
+                            colBg = attr->GetBackgroundColour();
+                        }
+
+                        if ( colFg.Ok() )
+                        {
+                            dc.SetTextForeground(colFg);
+                            changedColours = true;
+                        }
+
+                        if ( colBg.Ok() )
+                        {
+                            dc.SetTextBackground(colBg);
+                            changedColours = true;
+                        }
+
+                        if ( attr->HasFont() )
+                        {
+                            dc.SetFont(attr->GetFont());
+                            changedFont = true;
+                        }
+                    }
+                }
+
+                wxCoord x = wd*m_widthCol + (m_widthCol - width) / 2 + x0;
+                dc.DrawText(dayStr, x, y + 1);
+
+                if ( !isSel && attr && attr->HasBorder() )
+                {
+                    wxColour colBorder;
+                    if ( attr->HasBorderColour() )
+                    {
+                        colBorder = attr->GetBorderColour();
+                    }
+                    else
+                    {
+                        colBorder = GetForegroundColour();
+                    }
+
+                    wxPen pen(colBorder, 1, wxPENSTYLE_SOLID);
+                    dc.SetPen(pen);
+                    dc.SetBrush(*wxTRANSPARENT_BRUSH);
+
+                    switch ( attr->GetBorder() )
+                    {
+                        case wxCAL_BORDER_SQUARE:
+                            dc.DrawRectangle(x - 2, y,
+                                             width + 4, m_heightRow);
+                            break;
+
+                        case wxCAL_BORDER_ROUND:
+                            dc.DrawEllipse(x - 2, y,
+                                           width + 4, m_heightRow);
+                            break;
+
+                        default:
+                            wxFAIL_MSG(_T("unknown border type"));
+                    }
+                }
+
+                if ( changedColours )
+                {
+                    dc.SetTextForeground(GetForegroundColour());
+                    dc.SetTextBackground(GetBackgroundColour());
+                }
+
+                if ( changedFont )
+                {
+                    dc.SetFont(GetFont());
+                }
+            }
+            //else: just don't draw it
+
+            date += wxDateSpan::Day();
+        }
+    }
+
+    // Greying out out-of-range background
+    bool showSurrounding = (GetWindowStyle() & wxCAL_SHOW_SURROUNDING_WEEKS) != 0;
+
+    date = ( showSurrounding ) ? GetStartDate() : wxDateTime(1, m_date.GetMonth(), m_date.GetYear());
+    if ( !IsDateInRange(date) )
+    {
+        wxDateTime firstOOR = GetLowerDateLimit() - wxDateSpan::Day(); // first out-of-range
+
+        wxBrush oorbrush = *wxLIGHT_GREY_BRUSH;
+        oorbrush.SetStyle(wxBRUSHSTYLE_FDIAGONAL_HATCH);
+
+        HighlightRange(&dc, date, firstOOR, wxTRANSPARENT_PEN, &oorbrush);
+    }
+
+    date = ( showSurrounding ) ? GetStartDate() + wxDateSpan::Weeks(6) - wxDateSpan::Day() : wxDateTime().SetToLastMonthDay(m_date.GetMonth(), m_date.GetYear());
+    if ( !IsDateInRange(date) )
+    {
+        wxDateTime firstOOR = GetUpperDateLimit() + wxDateSpan::Day(); // first out-of-range
+
+        wxBrush oorbrush = *wxLIGHT_GREY_BRUSH;
+        oorbrush.SetStyle(wxBRUSHSTYLE_FDIAGONAL_HATCH);
+
+        HighlightRange(&dc, firstOOR, date, wxTRANSPARENT_PEN, &oorbrush);
+    }
+
+#if DEBUG_PAINT
+    wxLogDebug("+++ finished painting");
+#endif
+}
+
+void wxGenericCalendarCtrl::RefreshDate(const wxDateTime& date)
+{
+    RecalcGeometry();
+
+    wxRect rect;
+
+    // always refresh the whole row at once because our OnPaint() will draw
+    // the whole row anyhow - and this allows the small optimisation in
+    // OnClick() below to work
+    rect.x = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
+
+    rect.y = (m_heightRow * GetWeek(date)) + m_rowOffset;
+
+    rect.width = 7*m_widthCol;
+    rect.height = m_heightRow;
+
+#ifdef __WXMSW__
+    // VZ: for some reason, the selected date seems to occupy more space under
+    //     MSW - this is probably some bug in the font size calculations, but I
+    //     don't know where exactly. This fix is ugly and leads to more
+    //     refreshes than really needed, but without it the selected days
+    //     leaves even more ugly underscores on screen.
+    rect.Inflate(0, 1);
+#endif // MSW
+
+#if DEBUG_PAINT
+    wxLogDebug("*** refreshing week %d at (%d, %d)-(%d, %d)\n",
+           GetWeek(date),
+           rect.x, rect.y,
+           rect.x + rect.width, rect.y + rect.height);
+#endif
+
+    Refresh(true, &rect);
+}
+
+void wxGenericCalendarCtrl::HighlightRange(wxPaintDC* pDC, const wxDateTime& fromdate, const wxDateTime& todate, const wxPen* pPen, const wxBrush* pBrush)
+{
+    // Highlights the given range using pen and brush
+    // Does nothing if todate < fromdate
+
+
+#if DEBUG_PAINT
+    wxLogDebug("+++ HighlightRange: (%s) - (%s) +++", fromdate.Format("%d %m %Y"), todate.Format("%d %m %Y"));
+#endif
+
+    if ( todate >= fromdate )
+    {
+        // do stuff
+        // date-coordinates
+        int fd, fw;
+        int td, tw;
+
+        // implicit: both dates must be currently shown - checked by GetDateCoord
+        if ( GetDateCoord(fromdate, &fd, &fw) && GetDateCoord(todate, &td, &tw) )
+        {
+#if DEBUG_PAINT
+            wxLogDebug("Highlight range: (%i, %i) - (%i, %i)", fd, fw, td, tw);
+#endif
+            if ( ( (tw - fw) == 1 ) && ( td < fd ) )
+            {
+                // special case: interval 7 days or less not in same week
+                // split in two separate intervals
+                wxDateTime tfd = fromdate + wxDateSpan::Days(7-fd);
+                wxDateTime ftd = tfd + wxDateSpan::Day();
+#if DEBUG_PAINT
+                wxLogDebug("Highlight: Separate segments");
+#endif
+                // draw separately
+                HighlightRange(pDC, fromdate, tfd, pPen, pBrush);
+                HighlightRange(pDC, ftd, todate, pPen, pBrush);
+            }
+            else
+            {
+                int numpoints;
+                wxPoint corners[8]; // potentially 8 corners in polygon
+                wxCoord x0 = wxMax( (GetSize().x - m_widthCol*7) /2 , 0 );
+
+                if ( fw == tw )
+                {
+                    // simple case: same week
+                    numpoints = 4;
+                    corners[0] = wxPoint(x0 + (fd - 1) * m_widthCol, (fw * m_heightRow) + m_rowOffset);
+                    corners[1] = wxPoint(x0 + (fd - 1) * m_widthCol, ((fw + 1 ) * m_heightRow) + m_rowOffset);
+                    corners[2] = wxPoint(x0 + td * m_widthCol, ((tw + 1) * m_heightRow) + m_rowOffset);
+                    corners[3] = wxPoint(x0 + td * m_widthCol, (tw * m_heightRow) + m_rowOffset);
+                }
+                else
+                {
+                    int cidx = 0;
+                    // "complex" polygon
+                    corners[cidx] = wxPoint(x0 + (fd - 1) * m_widthCol, (fw * m_heightRow) + m_rowOffset); cidx++;
+
+                    if ( fd > 1 )
+                    {
+                        corners[cidx] = wxPoint(x0 + (fd - 1) * m_widthCol, ((fw + 1) * m_heightRow) + m_rowOffset); cidx++;
+                        corners[cidx] = wxPoint(x0, ((fw + 1) * m_heightRow) + m_rowOffset); cidx++;
+                    }
+
+                    corners[cidx] = wxPoint(x0, ((tw + 1) * m_heightRow) + m_rowOffset); cidx++;
+                    corners[cidx] = wxPoint(x0 + td * m_widthCol, ((tw + 1) * m_heightRow) + m_rowOffset); cidx++;
+
+                    if ( td < 7 )
+                    {
+                        corners[cidx] = wxPoint(x0 + td * m_widthCol, (tw * m_heightRow) + m_rowOffset); cidx++;
+                        corners[cidx] = wxPoint(x0 + 7 * m_widthCol, (tw * m_heightRow) + m_rowOffset); cidx++;
+                    }
+
+                    corners[cidx] = wxPoint(x0 + 7 * m_widthCol, (fw * m_heightRow) + m_rowOffset); cidx++;
+
+                    numpoints = cidx;
+                }
+
+                // draw the polygon
+                pDC->SetBrush(*pBrush);
+                pDC->SetPen(*pPen);
+                pDC->DrawPolygon(numpoints, corners);
+            }
+        }
+    }
+    // else do nothing
+#if DEBUG_PAINT
+    wxLogDebug("--- HighlightRange ---");
+#endif
+}
+
+bool wxGenericCalendarCtrl::GetDateCoord(const wxDateTime& date, int *day, int *week) const
+{
+    bool retval = true;
+
+#if DEBUG_PAINT
+    wxLogDebug("+++ GetDateCoord: (%s) +++", date.Format("%d %m %Y"));
+#endif
+
+    if ( IsDateShown(date) )
+    {
+        bool startOnMonday = ( GetWindowStyle() & wxCAL_MONDAY_FIRST ) != 0;
+
+        // Find day
+        *day = date.GetWeekDay();
+
+        if ( *day == 0 ) // sunday
+        {
+            *day = ( startOnMonday ) ? 7 : 1;
+        }
+        else
+        {
+            *day += ( startOnMonday ) ? 0 : 1;
+        }
+
+        int targetmonth = date.GetMonth() + (12 * date.GetYear());
+        int thismonth = m_date.GetMonth() + (12 * m_date.GetYear());
+
+        // Find week
+        if ( targetmonth == thismonth )
+        {
+            *week = GetWeek(date);
+        }
+        else
+        {
+            if ( targetmonth < thismonth )
+            {
+                *week = 1; // trivial
+            }
+            else // targetmonth > thismonth
+            {
+                wxDateTime ldcm;
+                int lastweek;
+                int lastday;
+
+                // get the datecoord of the last day in the month currently shown
+#if DEBUG_PAINT
+                wxLogDebug("     +++ LDOM +++");
+#endif
+                GetDateCoord(ldcm.SetToLastMonthDay(m_date.GetMonth(), m_date.GetYear()), &lastday, &lastweek);
+#if DEBUG_PAINT
+                wxLogDebug("     --- LDOM ---");
+#endif
+
+                wxTimeSpan span = date - ldcm;
+
+                int daysfromlast = span.GetDays();
+#if DEBUG_PAINT
+                wxLogDebug("daysfromlast: %i", daysfromlast);
+#endif
+                if ( daysfromlast + lastday > 7 ) // past week boundary
+                {
+                    int wholeweeks = (daysfromlast / 7);
+                    *week = wholeweeks + lastweek;
+                    if ( (daysfromlast - (7 * wholeweeks) + lastday) > 7 )
+                    {
+                        *week += 1;
+                    }
+                }
+                else
+                {
+                    *week = lastweek;
+                }
+            }
+        }
+    }
+    else
+    {
+        *day = -1;
+        *week = -1;
+        retval = false;
+    }
+
+#if DEBUG_PAINT
+    wxLogDebug("--- GetDateCoord: (%s) = (%i, %i) ---", date.Format("%d %m %Y"), *day, *week);
+#endif
+
+    return retval;
+}
+
+// ----------------------------------------------------------------------------
+// mouse handling
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::OnDClick(wxMouseEvent& event)
+{
+    if ( HitTest(event.GetPosition()) != wxCAL_HITTEST_DAY )
+    {
+        event.Skip();
+    }
+    else
+    {
+        GenerateEvent(wxEVT_CALENDAR_DOUBLECLICKED);
+    }
+}
+
+void wxGenericCalendarCtrl::OnClick(wxMouseEvent& event)
+{
+    wxDateTime date;
+    wxDateTime::WeekDay wday;
+    switch ( HitTest(event.GetPosition(), &date, &wday) )
+    {
+        case wxCAL_HITTEST_DAY:
+            if ( IsDateInRange(date) )
+            {
+                ChangeDay(date);
+
+                GenerateEvent(wxEVT_CALENDAR_SEL_CHANGED);
+                GenerateEvent(wxEVT_CALENDAR_DAY_CHANGED);
+            }
+            break;
+
+        case wxCAL_HITTEST_HEADER:
+            {
+                wxCalendarEvent eventWd(this, GetDate(),
+                                        wxEVT_CALENDAR_WEEKDAY_CLICKED);
+                eventWd.SetWeekDay(wday);
+                (void)GetEventHandler()->ProcessEvent(eventWd);
+            }
+            break;
+
+        case wxCAL_HITTEST_DECMONTH:
+        case wxCAL_HITTEST_INCMONTH:
+        case wxCAL_HITTEST_SURROUNDING_WEEK:
+            SetDateAndNotify(date); // we probably only want to refresh the control. No notification.. (maybe as an option?)
+            break;
+
+        default:
+            wxFAIL_MSG(_T("unknown hittest code"));
+            // fall through
+
+        case wxCAL_HITTEST_NOWHERE:
+            event.Skip();
+            break;
+    }
+}
+
+wxCalendarHitTestResult wxGenericCalendarCtrl::HitTest(const wxPoint& pos,
+                                                wxDateTime *date,
+                                                wxDateTime::WeekDay *wd)
+{
+    RecalcGeometry();
+
+    // the position where the calendar really begins
+    wxCoord x0 = wxMax((GetSize().x - m_widthCol*7)/2, 0);
+
+    if ( HasFlag(wxCAL_SEQUENTIAL_MONTH_SELECTION) )
+    {
+        // Header: month
+
+        // we need to find out if the hit is on left arrow, on month or on right arrow
+        // left arrow?
+        if ( m_leftArrowRect.Contains(pos) )
+        {
+            if ( date )
+            {
+                if ( IsDateInRange(m_date - wxDateSpan::Month()) )
+                {
+                    *date = m_date - wxDateSpan::Month();
+                }
+                else
+                {
+                    *date = GetLowerDateLimit();
+                }
+            }
+
+            return wxCAL_HITTEST_DECMONTH;
+        }
+
+        if ( m_rightArrowRect.Contains(pos) )
+        {
+            if ( date )
+            {
+                if ( IsDateInRange(m_date + wxDateSpan::Month()) )
+                {
+                    *date = m_date + wxDateSpan::Month();
+                }
+                else
+                {
+                    *date = GetUpperDateLimit();
+                }
+            }
+
+            return wxCAL_HITTEST_INCMONTH;
+        }
+
+    }
+
+    // header: week days
+    int wday = (pos.x - x0) / m_widthCol;
+    if ( pos.y < (m_heightRow + m_rowOffset) )
+    {
+        if ( pos.y > m_rowOffset )
+        {
+            if ( wd )
+            {
+                if ( GetWindowStyle() & wxCAL_MONDAY_FIRST )
+                {
+                    wday = wday == 6 ? 0 : wday + 1;
+                }
+
+                *wd = (wxDateTime::WeekDay)wday;
+            }
+
+            return wxCAL_HITTEST_HEADER;
+        }
+        else
+        {
+            return wxCAL_HITTEST_NOWHERE;
+        }
+    }
+
+    int week = (pos.y - (m_heightRow + m_rowOffset)) / m_heightRow;
+    if ( week >= 6 || wday >= 7 )
+    {
+        return wxCAL_HITTEST_NOWHERE;
+    }
+
+    wxDateTime dt = GetStartDate() + wxDateSpan::Days(7*week + wday);
+
+    if ( IsDateShown(dt) )
+    {
+        if ( date )
+            *date = dt;
+
+        if ( dt.GetMonth() == m_date.GetMonth() )
+        {
+
+            return wxCAL_HITTEST_DAY;
+        }
+        else
+        {
+            return wxCAL_HITTEST_SURROUNDING_WEEK;
+        }
+    }
+    else
+    {
+        return wxCAL_HITTEST_NOWHERE;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// subcontrols events handling
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::OnMonthChange(wxCommandEvent& event)
+{
+    wxDateTime::Tm tm = m_date.GetTm();
+
+    wxDateTime::Month mon = (wxDateTime::Month)event.GetInt();
+    if ( tm.mday > wxDateTime::GetNumberOfDays(mon, tm.year) )
+    {
+        tm.mday = wxDateTime::GetNumberOfDays(mon, tm.year);
+    }
+
+    wxDateTime target = wxDateTime(tm.mday, mon, tm.year);
+
+    ChangeMonth(&target);
+    SetDateAndNotify(target);
+}
+
+void wxGenericCalendarCtrl::OnYearChange(wxCommandEvent& event)
+{
+    int year = (int)event.GetInt();
+    if ( year == INT_MIN )
+    {
+        // invalid year in the spin control, ignore it
+        return;
+    }
+
+    wxDateTime::Tm tm = m_date.GetTm();
+
+    if ( tm.mday > wxDateTime::GetNumberOfDays(tm.mon, year) )
+    {
+        tm.mday = wxDateTime::GetNumberOfDays(tm.mon, year);
+    }
+
+    wxDateTime target = wxDateTime(tm.mday, tm.mon, year);
+
+    if ( ChangeYear(&target) )
+    {
+        SetDateAndNotify(target);
+    }
+    else
+    {
+        // In this case we don't want to change the date. That would put us
+        // inside the same year but a strange number of months forward/back..
+        m_spinYear->SetValue(target.GetYear());
+    }
+}
+
+void wxGenericCalendarCtrl::OnYearTextChange(wxCommandEvent& event)
+{
+    SetUserChangedYear();
+    OnYearChange(event);
+}
+
+// Responds to colour changes, and passes event on to children.
+void wxGenericCalendarCtrl::OnSysColourChanged(wxSysColourChangedEvent& event)
+{
+    // reinit colours
+    InitColours();
+
+    // Propagate the event to the children
+    wxControl::OnSysColourChanged(event);
+
+    // Redraw control area
+    SetBackgroundColour(m_colBackground);
+    Refresh();
+}
+
+// ----------------------------------------------------------------------------
+// keyboard interface
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::OnChar(wxKeyEvent& event)
+{
+    wxDateTime target;
+    switch ( event.GetKeyCode() )
+    {
+        case _T('+'):
+        case WXK_ADD:
+            target = m_date + wxDateSpan::Year();
+            if ( ChangeYear(&target) )
+            {
+                SetDateAndNotify(target);
+            }
+            break;
+
+        case _T('-'):
+        case WXK_SUBTRACT:
+            target = m_date - wxDateSpan::Year();
+            if ( ChangeYear(&target) )
+            {
+                SetDateAndNotify(target);
+            }
+            break;
+
+        case WXK_PAGEUP:
+            target = m_date - wxDateSpan::Month();
+            ChangeMonth(&target);
+            SetDateAndNotify(target); // always
+            break;
+
+        case WXK_PAGEDOWN:
+            target = m_date + wxDateSpan::Month();
+            ChangeMonth(&target);
+            SetDateAndNotify(target); // always
+            break;
+
+        case WXK_RIGHT:
+            if ( event.ControlDown() )
+            {
+                target = wxDateTime(m_date).SetToNextWeekDay(
+                                 GetWindowStyle() & wxCAL_MONDAY_FIRST
+                                 ? wxDateTime::Sun : wxDateTime::Sat);
+                if ( !IsDateInRange(target) )
+                {
+                    target = GetUpperDateLimit();
+                }
+                SetDateAndNotify(target);
+            }
+            else
+                SetDateAndNotify(m_date + wxDateSpan::Day());
+            break;
+
+        case WXK_LEFT:
+            if ( event.ControlDown() )
+            {
+                target = wxDateTime(m_date).SetToPrevWeekDay(
+                                 GetWindowStyle() & wxCAL_MONDAY_FIRST
+                                 ? wxDateTime::Mon : wxDateTime::Sun);
+                if ( !IsDateInRange(target) )
+                {
+                    target = GetLowerDateLimit();
+                }
+                SetDateAndNotify(target);
+            }
+            else
+                SetDateAndNotify(m_date - wxDateSpan::Day());
+            break;
+
+        case WXK_UP:
+            SetDateAndNotify(m_date - wxDateSpan::Week());
+            break;
+
+        case WXK_DOWN:
+            SetDateAndNotify(m_date + wxDateSpan::Week());
+            break;
+
+        case WXK_HOME:
+            if ( event.ControlDown() )
+                SetDateAndNotify(wxDateTime::Today());
+            else
+                SetDateAndNotify(wxDateTime(1, m_date.GetMonth(), m_date.GetYear()));
+            break;
+
+        case WXK_END:
+            SetDateAndNotify(wxDateTime(m_date).SetToLastMonthDay());
+            break;
+
+        case WXK_RETURN:
+            GenerateEvent(wxEVT_CALENDAR_DOUBLECLICKED);
+            break;
+
+        default:
+            event.Skip();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// holidays handling
+// ----------------------------------------------------------------------------
+
+void wxGenericCalendarCtrl::EnableHolidayDisplay(bool display)
+{
+    long style = GetWindowStyle();
+    if ( display )
+        style |= wxCAL_SHOW_HOLIDAYS;
+    else
+        style &= ~wxCAL_SHOW_HOLIDAYS;
+
+    SetWindowStyle(style);
+
+    if ( display )
+        SetHolidayAttrs();
+    else
+        ResetHolidayAttrs();
+
+    Refresh();
+}
+
+void wxGenericCalendarCtrl::SetHolidayAttrs()
+{
+    if ( GetWindowStyle() & wxCAL_SHOW_HOLIDAYS )
+    {
+        ResetHolidayAttrs();
+
+        wxDateTime::Tm tm = m_date.GetTm();
+        wxDateTime dtStart(1, tm.mon, tm.year),
+                   dtEnd = dtStart.GetLastMonthDay();
+
+        wxDateTimeArray hol;
+        wxDateTimeHolidayAuthority::GetHolidaysInRange(dtStart, dtEnd, hol);
+
+        size_t count = hol.GetCount();
+        for ( size_t n = 0; n < count; n++ )
+        {
+            SetHoliday(hol[n].GetDay());
+        }
+    }
+}
+
+void wxGenericCalendarCtrl::SetHoliday(size_t day)
+{
+    wxCHECK_RET( day > 0 && day < 32, _T("invalid day in SetHoliday") );
+
+    wxCalendarDateAttr *attr = GetAttr(day);
+    if ( !attr )
+    {
+        attr = new wxCalendarDateAttr;
+    }
+
+    attr->SetHoliday(true);
+
+    // can't use SetAttr() because it would delete this pointer
+    m_attrs[day - 1] = attr;
+}
+
+void wxGenericCalendarCtrl::ResetHolidayAttrs()
+{
+    for ( size_t day = 0; day < 31; day++ )
+    {
+        if ( m_attrs[day] )
+        {
+            m_attrs[day]->SetHoliday(false);
+        }
+    }
+}
+
+void wxGenericCalendarCtrl::Mark(size_t day, bool mark)
+{
+    wxCHECK_RET( day > 0 && day < 32, _T("invalid day in Mark") );
+
+    const wxCalendarDateAttr& m = wxCalendarDateAttr::GetMark();
+    if (mark) {
+        if ( m_attrs[day - 1] )
+            AddAttr(m_attrs[day - 1], m);
+        else
+            SetAttr(day, new wxCalendarDateAttr(m));
+    }
+    else {
+        if ( m_attrs[day - 1] )
+            DelAttr(m_attrs[day - 1], m);
+    }
+}
+
+//static
+wxVisualAttributes
+wxGenericCalendarCtrl::GetClassDefaultAttributes(wxWindowVariant variant)
+{
+    // Use the same color scheme as wxListBox
+    return wxListBox::GetClassDefaultAttributes(variant);
+}
+
+#endif // wxUSE_CALENDARCTRL
index 5028bb79b03f20848d8eb6843b027e0d90490acb..c451b1734792aa4cf2414acc27d03e49014ba6a3 100644 (file)
     // this header is not included from wx/datectrl.h if we have a native
     // version, but we do need it here
     #include "wx/generic/datectrl.h"
     // this header is not included from wx/datectrl.h if we have a native
     // version, but we do need it here
     #include "wx/generic/datectrl.h"
-#else
-    // we need to define _WX_DEFINE_DATE_EVENTS_ before including wx/dateevt.h to
-    // define the event types we use if we're the only date picker control version
-    // being compiled -- otherwise it's defined in the native version implementation
-    #define _WX_DEFINE_DATE_EVENTS_
 #endif
 
 #include "wx/dateevt.h"
 
 #include "wx/calctrl.h"
 #endif
 
 #include "wx/dateevt.h"
 
 #include "wx/calctrl.h"
+#include "wx/generic/calctrlg.h"
 #include "wx/combo.h"
 
 // ----------------------------------------------------------------------------
 #include "wx/combo.h"
 
 // ----------------------------------------------------------------------------
 // local classes
 // ----------------------------------------------------------------------------
 
 // local classes
 // ----------------------------------------------------------------------------
 
-class wxCalendarComboPopup : public wxCalendarCtrl,
+class wxCalendarComboPopup : public wxGenericCalendarCtrl,
                              public wxComboPopup
 {
 public:
 
                              public wxComboPopup
 {
 public:
 
-    wxCalendarComboPopup() : wxCalendarCtrl(),
+    wxCalendarComboPopup() : wxGenericCalendarCtrl(),
                              wxComboPopup()
     {
     }
                              wxComboPopup()
     {
     }
@@ -94,12 +90,12 @@ public:
     //     certainly introduce new bugs.
     virtual bool Create(wxWindow* parent)
     {
     //     certainly introduce new bugs.
     virtual bool Create(wxWindow* parent)
     {
-        if ( !wxCalendarCtrl::Create(parent, wxID_ANY, wxDefaultDateTime,
+        if ( !wxGenericCalendarCtrl::Create(parent, wxID_ANY, wxDefaultDateTime,
                               wxPoint(0, 0), wxDefaultSize,
                               wxCAL_SHOW_HOLIDAYS | wxBORDER_SUNKEN) )
             return false;
 
                               wxPoint(0, 0), wxDefaultSize,
                               wxCAL_SHOW_HOLIDAYS | wxBORDER_SUNKEN) )
             return false;
 
-        wxWindow *yearControl = wxCalendarCtrl::GetYearControl();
+        wxWindow *yearControl = wxGenericCalendarCtrl::GetYearControl();
 
         wxClientDC dc(yearControl);
         dc.SetFont(yearControl->GetFont());
 
         wxClientDC dc(yearControl);
         dc.SetFont(yearControl->GetFont());
@@ -107,7 +103,7 @@ public:
         dc.GetTextExtent(wxT("2000"), &width, &dummy);
         width += ConvertDialogToPixels(wxSize(20, 0)).x;
 
         dc.GetTextExtent(wxT("2000"), &width, &dummy);
         width += ConvertDialogToPixels(wxSize(20, 0)).x;
 
-        wxSize calSize = wxCalendarCtrl::GetBestSize();
+        wxSize calSize = wxGenericCalendarCtrl::GetBestSize();
         wxSize yearSize = yearControl->GetSize();
         yearSize.x = width;
 
         wxSize yearSize = yearControl->GetSize();
         yearSize.x = width;
 
@@ -125,10 +121,10 @@ public:
             calPos = 0;
             width += 2;
         }
             calPos = 0;
             width += 2;
         }
-        wxCalendarCtrl::SetSize(calPos, 0, calSize.x, calSize.y);
+        wxGenericCalendarCtrl::SetSize(calPos, 0, calSize.x, calSize.y);
         yearControl->SetSize(width-yearSize.x-CALBORDER/2, yearPosition.y,
                              yearSize.x, yearSize.y);
         yearControl->SetSize(width-yearSize.x-CALBORDER/2, yearPosition.y,
                              yearSize.x, yearSize.y);
-        wxCalendarCtrl::GetMonthControl()->Move(0, 0);
+        wxGenericCalendarCtrl::GetMonthControl()->Move(0, 0);
 
         m_useSize.x = width+CALBORDER/2;
         m_useSize.y = calSize.y-2+CALBORDER;
 
         m_useSize.x = width+CALBORDER/2;
         m_useSize.y = calSize.y-2+CALBORDER;
@@ -186,14 +182,10 @@ public:
 
     void SendDateEvent(const wxDateTime& dt)
     {
 
     void SendDateEvent(const wxDateTime& dt)
     {
-        //
         // Sends both wxCalendarEvent and wxDateEvent
         wxWindow* datePicker = m_combo->GetParent();
 
         // Sends both wxCalendarEvent and wxDateEvent
         wxWindow* datePicker = m_combo->GetParent();
 
-        wxCalendarEvent cev((wxCalendarCtrl*) this, wxEVT_CALENDAR_SEL_CHANGED);
-        cev.SetEventObject(datePicker);
-        cev.SetId(datePicker->GetId());
-        cev.SetDate(dt);
+        wxCalendarEvent cev(datePicker, dt, wxEVT_CALENDAR_SEL_CHANGED);
         datePicker->GetEventHandler()->ProcessEvent(cev);
 
         wxDateEvent event(datePicker, dt, wxEVT_DATE_CHANGED);
         datePicker->GetEventHandler()->ProcessEvent(cev);
 
         wxDateEvent event(datePicker, dt, wxEVT_DATE_CHANGED);
@@ -353,12 +345,10 @@ private:
 };
 
 
 };
 
 
-BEGIN_EVENT_TABLE(wxCalendarComboPopup, wxCalendarCtrl)
+BEGIN_EVENT_TABLE(wxCalendarComboPopup, wxGenericCalendarCtrl)
     EVT_KEY_DOWN(wxCalendarComboPopup::OnCalKey)
     EVT_CALENDAR_SEL_CHANGED(wxID_ANY, wxCalendarComboPopup::OnSelChange)
     EVT_KEY_DOWN(wxCalendarComboPopup::OnCalKey)
     EVT_CALENDAR_SEL_CHANGED(wxID_ANY, wxCalendarComboPopup::OnSelChange)
-    EVT_CALENDAR_DAY(wxID_ANY, wxCalendarComboPopup::OnSelChange)
-    EVT_CALENDAR_MONTH(wxID_ANY, wxCalendarComboPopup::OnSelChange)
-    EVT_CALENDAR_YEAR(wxID_ANY, wxCalendarComboPopup::OnSelChange)
+    EVT_CALENDAR_PAGE_CHANGED(wxID_ANY, wxCalendarComboPopup::OnSelChange)
     EVT_CALENDAR(wxID_ANY, wxCalendarComboPopup::OnSelChange)
 END_EVENT_TABLE()
 
     EVT_CALENDAR(wxID_ANY, wxCalendarComboPopup::OnSelChange)
 END_EVENT_TABLE()
 
@@ -493,7 +483,7 @@ wxDatePickerCtrlGeneric::SetRange(const wxDateTime &dt1, const wxDateTime &dt2)
     m_popup->SetDateRange(dt1, dt2);
 }
 
     m_popup->SetDateRange(dt1, dt2);
 }
 
-wxCalendarCtrl *wxDatePickerCtrlGeneric::GetCalendar() const
+wxGenericCalendarCtrl *wxDatePickerCtrlGeneric::GetCalendar() const
 {
     return m_popup;
 }
 {
     return m_popup;
 }
diff --git a/src/gtk/calctrl.cpp b/src/gtk/calctrl.cpp
new file mode 100644 (file)
index 0000000..9c5b2a1
--- /dev/null
@@ -0,0 +1,158 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/gtk/calctrl.cpp
+// Purpose:     implementation of the wxGtkCalendarCtrl
+// Author:      Marcin Wojdyr
+// RCS-ID:      $Id$
+// Copyright:   (c) 2008 Marcin Wojdyr
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#if wxUSE_CALENDARCTRL
+
+#include "wx/gtk/private.h"
+#include "wx/calctrl.h"
+#include "wx/gtk/calctrl.h"
+
+
+extern "C" {
+
+static void gtk_day_selected_callback(GtkWidget *WXUNUSED(widget),
+                                      wxGtkCalendarCtrl *cal)
+{
+    cal->GenerateEvent(wxEVT_CALENDAR_SEL_CHANGED);
+    cal->GenerateEvent(wxEVT_CALENDAR_DAY_CHANGED);
+}
+
+static void gtk_day_selected_double_click_callback(GtkWidget *WXUNUSED(widget),
+                                                   wxGtkCalendarCtrl *cal)
+{
+    cal->GenerateEvent(wxEVT_CALENDAR_DOUBLECLICKED);
+}
+
+static void gtk_month_changed_callback(GtkWidget *WXUNUSED(widget),
+                                       wxGtkCalendarCtrl *cal)
+{
+    cal->GenerateEvent(wxEVT_CALENDAR_PAGE_CHANGED);
+}
+
+// callbacks that send deprecated events
+
+static void gtk_prev_month_callback(GtkWidget *WXUNUSED(widget),
+                                    wxGtkCalendarCtrl *cal)
+{
+    cal->GenerateEvent(wxEVT_CALENDAR_MONTH_CHANGED);
+}
+
+static void gtk_prev_year_callback(GtkWidget *WXUNUSED(widget),
+                                    wxGtkCalendarCtrl *cal)
+{
+    cal->GenerateEvent(wxEVT_CALENDAR_YEAR_CHANGED);
+}
+
+}
+
+// ----------------------------------------------------------------------------
+// wxGtkCalendarCtrl
+// ----------------------------------------------------------------------------
+
+
+bool wxGtkCalendarCtrl::Create(wxWindow *parent,
+                               wxWindowID id,
+                               const wxDateTime& date,
+                               const wxPoint& pos,
+                               const wxSize& size,
+                               long style,
+                               const wxString& name)
+{
+    if (!PreCreation(parent, pos, size) ||
+          !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name))
+    {
+        wxFAIL_MSG(wxT("wxGtkCalendarCtrl creation failed"));
+        return false;
+    }
+
+    m_widget = gtk_calendar_new();
+    SetDate(date.IsValid() ? date : wxDateTime::Today());
+
+    if (style & wxCAL_NO_MONTH_CHANGE)
+        g_object_set (G_OBJECT (m_widget), "no-month-change", true, NULL);
+
+    g_signal_connect_after(m_widget, "day-selected",
+                           G_CALLBACK (gtk_day_selected_callback),
+                           this);
+    g_signal_connect_after(m_widget, "day-selected-double-click",
+                           G_CALLBACK (gtk_day_selected_double_click_callback),
+                           this);
+    g_signal_connect_after(m_widget, "month-changed",
+                           G_CALLBACK (gtk_month_changed_callback),
+                           this);
+
+    // connect callbacks that send deprecated events
+    g_signal_connect_after(m_widget, "prev-month",
+                           G_CALLBACK (gtk_prev_month_callback),
+                           this);
+    g_signal_connect_after(m_widget, "next-month",
+                           G_CALLBACK (gtk_prev_month_callback),
+                           this);
+    g_signal_connect_after(m_widget, "prev-year",
+                           G_CALLBACK (gtk_prev_year_callback),
+                           this);
+    g_signal_connect_after(m_widget, "next-year",
+                           G_CALLBACK (gtk_prev_year_callback),
+                           this);
+
+    m_parent->DoAddChild(this);
+
+    PostCreation(size);
+
+    return true;
+}
+
+bool wxGtkCalendarCtrl::EnableMonthChange(bool enable)
+{
+    if ( !wxCalendarCtrlBase::EnableMonthChange(enable) )
+        return false;
+
+    g_object_set (G_OBJECT (m_widget), "no-month-change", !enable, NULL);
+
+    return true;
+}
+
+bool wxGtkCalendarCtrl::SetDate(const wxDateTime& date)
+{
+    int year = date.GetYear();
+    int month = date.GetMonth();
+    int day = date.GetDay();
+    gtk_calendar_select_month(GTK_CALENDAR(m_widget), month, year);
+    gtk_calendar_select_day(GTK_CALENDAR(m_widget), day);
+    return true;
+}
+
+wxDateTime wxGtkCalendarCtrl::GetDate() const
+{
+    guint year, month, day;
+    gtk_calendar_get_date(GTK_CALENDAR(m_widget), &year, &month, &day);
+    return wxDateTime(day, (wxDateTime::Month) month, year);
+}
+
+void wxGtkCalendarCtrl::Mark(size_t day, bool mark)
+{
+    if (mark)
+        gtk_calendar_mark_day(GTK_CALENDAR(m_widget), day);
+    else
+        gtk_calendar_unmark_day(GTK_CALENDAR(m_widget), day);
+}
+
+IMPLEMENT_DYNAMIC_CLASS(wxGtkCalendarCtrl, wxControl)
+
+
+#endif // wxUSE_CALENDARCTRL