diff --git a/Makefile.in b/Makefile.in
index 1e58584aa2..b1b17ef28b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -3699,7 +3699,8 @@ COND_TOOLKIT_MSW_ADVANCED_PLATFORM_NATIVE_HDR = \
wx/msw/calctrl.h \
wx/msw/datectrl.h \
wx/msw/datetimectrl.h \
- wx/msw/hyperlink.h
+ wx/msw/hyperlink.h \
+ wx/msw/timectrl.h
@COND_TOOLKIT_MSW@ADVANCED_PLATFORM_NATIVE_HDR = $(COND_TOOLKIT_MSW_ADVANCED_PLATFORM_NATIVE_HDR)
COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_NATIVE_HDR = \
wx/generic/animate.h \
@@ -3708,7 +3709,8 @@ COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_NATIVE_HDR = \
wx/msw/calctrl.h \
wx/msw/datectrl.h \
wx/msw/datetimectrl.h \
- wx/msw/hyperlink.h
+ wx/msw/hyperlink.h \
+ wx/msw/timectrl.h
@COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_NATIVE_HDR = $(COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_NATIVE_HDR)
COND_WXUNIV_0_ADVANCED_HDR = \
wx/aboutdlg.h \
@@ -3741,6 +3743,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/generic/propdlg.h \
wx/generic/sashwin.h \
wx/generic/splash.h \
+ wx/generic/timectrl.h \
wx/generic/wizard.h \
wx/grid.h \
wx/hyperlink.h \
@@ -3753,6 +3756,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/sound.h \
wx/splash.h \
wx/taskbar.h \
+ wx/timectrl.h \
wx/tipdlg.h \
wx/treelist.h \
wx/wizard.h \
@@ -3790,6 +3794,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/generic/propdlg.h \
wx/generic/sashwin.h \
wx/generic/splash.h \
+ wx/generic/timectrl.h \
wx/generic/wizard.h \
wx/grid.h \
wx/hyperlink.h \
@@ -3802,6 +3807,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/sound.h \
wx/splash.h \
wx/taskbar.h \
+ wx/timectrl.h \
wx/tipdlg.h \
wx/treelist.h \
wx/wizard.h \
@@ -6141,6 +6147,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_propdlg.o \
monodll_sashwin.o \
monodll_splash.o \
+ monodll_generic_timectrl.o \
monodll_tipdlg.o \
monodll_treelist.o \
monodll_wizard.o \
@@ -6175,6 +6182,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_propdlg.o \
monodll_sashwin.o \
monodll_splash.o \
+ monodll_generic_timectrl.o \
monodll_tipdlg.o \
monodll_treelist.o \
monodll_wizard.o \
@@ -6197,7 +6205,8 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = \
monodll_datecontrols.o \
monodll_datectrl.o \
monodll_datetimectrl.o \
- monodll_msw_hyperlink.o
+ monodll_msw_hyperlink.o \
+ monodll_msw_timectrl.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = \
monodll_animateg.o \
@@ -6207,7 +6216,8 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = \
monodll_datecontrols.o \
monodll_datectrl.o \
monodll_datetimectrl.o \
- monodll_msw_hyperlink.o
+ monodll_msw_hyperlink.o \
+ monodll_msw_timectrl.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
@COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS = \
@COND_TOOLKIT_COCOA@ monodll_cocoa_mediactrl.o
@@ -8086,6 +8096,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_propdlg.o \
monolib_sashwin.o \
monolib_splash.o \
+ monolib_generic_timectrl.o \
monolib_tipdlg.o \
monolib_treelist.o \
monolib_wizard.o \
@@ -8120,6 +8131,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_propdlg.o \
monolib_sashwin.o \
monolib_splash.o \
+ monolib_generic_timectrl.o \
monolib_tipdlg.o \
monolib_treelist.o \
monolib_wizard.o \
@@ -8142,7 +8154,8 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = \
monolib_datecontrols.o \
monolib_datectrl.o \
monolib_datetimectrl.o \
- monolib_msw_hyperlink.o
+ monolib_msw_hyperlink.o \
+ monolib_msw_timectrl.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = \
monolib_animateg.o \
@@ -8152,7 +8165,8 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = \
monolib_datecontrols.o \
monolib_datectrl.o \
monolib_datetimectrl.o \
- monolib_msw_hyperlink.o
+ monolib_msw_hyperlink.o \
+ monolib_msw_timectrl.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
@COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \
@COND_TOOLKIT_COCOA@ monolib_cocoa_mediactrl.o
@@ -11870,6 +11884,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_propdlg.o \
advdll_sashwin.o \
advdll_splash.o \
+ advdll_generic_timectrl.o \
advdll_tipdlg.o \
advdll_treelist.o \
advdll_wizard.o \
@@ -11904,6 +11919,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_propdlg.o \
advdll_sashwin.o \
advdll_splash.o \
+ advdll_generic_timectrl.o \
advdll_tipdlg.o \
advdll_treelist.o \
advdll_wizard.o \
@@ -11926,7 +11942,8 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = \
advdll_datecontrols.o \
advdll_datectrl.o \
advdll_datetimectrl.o \
- advdll_msw_hyperlink.o
+ advdll_msw_hyperlink.o \
+ advdll_msw_timectrl.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2)
COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = \
advdll_animateg.o \
@@ -11936,7 +11953,8 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = \
advdll_datecontrols.o \
advdll_datectrl.o \
advdll_datetimectrl.o \
- advdll_msw_hyperlink.o
+ advdll_msw_hyperlink.o \
+ advdll_msw_timectrl.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2)
@COND_PLATFORM_UNIX_1_USE_PLUGINS_0@__PLUGIN_ADV_SRC_OBJECTS_2 \
@COND_PLATFORM_UNIX_1_USE_PLUGINS_0@ = advdll_sound_sdl.o
@@ -11980,6 +11998,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_propdlg.o \
advlib_sashwin.o \
advlib_splash.o \
+ advlib_generic_timectrl.o \
advlib_tipdlg.o \
advlib_treelist.o \
advlib_wizard.o \
@@ -12014,6 +12033,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_propdlg.o \
advlib_sashwin.o \
advlib_splash.o \
+ advlib_generic_timectrl.o \
advlib_tipdlg.o \
advlib_treelist.o \
advlib_wizard.o \
@@ -12036,7 +12056,8 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = \
advlib_datecontrols.o \
advlib_datectrl.o \
advlib_datetimectrl.o \
- advlib_msw_hyperlink.o
+ advlib_msw_hyperlink.o \
+ advlib_msw_timectrl.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3)
COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = \
advlib_animateg.o \
@@ -12046,7 +12067,8 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = \
advlib_datecontrols.o \
advlib_datectrl.o \
advlib_datetimectrl.o \
- advlib_msw_hyperlink.o
+ advlib_msw_hyperlink.o \
+ advlib_msw_timectrl.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3)
@COND_PLATFORM_UNIX_1_USE_PLUGINS_0@__PLUGIN_ADV_SRC_OBJECTS_3 \
@COND_PLATFORM_UNIX_1_USE_PLUGINS_0@ = advlib_sound_sdl.o
@@ -20643,6 +20665,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_splash.o: $(srcdir)/src/generic/splash.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/splash.cpp
+@COND_USE_GUI_1@monodll_generic_timectrl.o: $(srcdir)/src/generic/timectrl.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/timectrl.cpp
+
@COND_USE_GUI_1@monodll_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/tipdlg.cpp
@@ -20907,6 +20932,12 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_msw_hyperlink.o: $(srcdir)/src/msw/hyperlink.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/hyperlink.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_mediactrl_am.o: $(srcdir)/src/msw/mediactrl_am.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/mediactrl_am.cpp
@@ -25998,6 +26029,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_splash.o: $(srcdir)/src/generic/splash.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/splash.cpp
+@COND_USE_GUI_1@monolib_generic_timectrl.o: $(srcdir)/src/generic/timectrl.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/timectrl.cpp
+
@COND_USE_GUI_1@monolib_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/tipdlg.cpp
@@ -26262,6 +26296,12 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_msw_hyperlink.o: $(srcdir)/src/msw/hyperlink.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/hyperlink.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_mediactrl_am.o: $(srcdir)/src/msw/mediactrl_am.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/mediactrl_am.cpp
@@ -35547,6 +35587,9 @@ advdll_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(ADVDLL_ODEP)
advdll_splash.o: $(srcdir)/src/generic/splash.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/splash.cpp
+advdll_generic_timectrl.o: $(srcdir)/src/generic/timectrl.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/timectrl.cpp
+
advdll_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/tipdlg.cpp
@@ -35811,6 +35854,12 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_WINCE_WXUNIV_0@advdll_msw_hyperlink.o: $(srcdir)/src/msw/hyperlink.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_WINCE_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/hyperlink.cpp
+@COND_TOOLKIT_MSW_WXUNIV_0@advdll_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_MSW_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
+@COND_TOOLKIT_WINCE_WXUNIV_0@advdll_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_WINCE_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
advlib_gtk_aboutdlg.o: $(srcdir)/src/gtk/aboutdlg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/aboutdlg.cpp
@@ -35913,6 +35962,9 @@ advlib_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(ADVLIB_ODEP)
advlib_splash.o: $(srcdir)/src/generic/splash.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/splash.cpp
+advlib_generic_timectrl.o: $(srcdir)/src/generic/timectrl.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/timectrl.cpp
+
advlib_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/tipdlg.cpp
@@ -36177,6 +36229,12 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_WINCE_WXUNIV_0@advlib_msw_hyperlink.o: $(srcdir)/src/msw/hyperlink.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_WINCE_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/hyperlink.cpp
+@COND_TOOLKIT_MSW_WXUNIV_0@advlib_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_MSW_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
+@COND_TOOLKIT_WINCE_WXUNIV_0@advlib_msw_timectrl.o: $(srcdir)/src/msw/timectrl.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_WINCE_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/timectrl.cpp
+
mediadll_version_rc.o: $(srcdir)/src/msw/version.rc $(MEDIADLL_ODEP)
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_66) $(__INC_TIFF_p_66) $(__INC_JPEG_p_66) $(__INC_PNG_p_65) $(__INC_ZLIB_p_67) $(__INC_REGEX_p_65) $(__INC_EXPAT_p_65) --define WXUSINGDLL --define WXMAKINGDLL_MEDIA
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 28e0f8d481..8b130ea02c 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -2974,6 +2974,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/generic/propdlg.cpp
src/generic/sashwin.cpp
src/generic/splash.cpp
+ src/generic/timectrl.cpp
src/generic/tipdlg.cpp
src/generic/treelist.cpp
src/generic/wizard.cpp
@@ -3010,6 +3011,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/generic/propdlg.h
wx/generic/sashwin.h
wx/generic/splash.h
+ wx/generic/timectrl.h
wx/generic/wizard.h
wx/grid.h
wx/hyperlink.h
@@ -3022,6 +3024,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/sound.h
wx/splash.h
wx/taskbar.h
+ wx/timectrl.h
wx/tipdlg.h
wx/treelist.h
wx/wizard.h
@@ -3050,6 +3053,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/msw/datectrl.cpp
src/msw/datetimectrl.cpp
src/msw/hyperlink.cpp
+ src/msw/timectrl.cpp
wx/generic/animate.h
@@ -3059,6 +3063,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/msw/datectrl.h
wx/msw/datetimectrl.h
wx/msw/hyperlink.h
+ wx/msw/timectrl.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index 8936a1ce19..49f3a8a512 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -2280,6 +2280,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
+ $(OBJS)\monodll_generic_timectrl.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
@@ -2293,13 +2294,14 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_bmpcbox.obj \
$(OBJS)\monodll_calctrl.obj \
$(OBJS)\monodll_commandlinkbutton.obj \
- $(OBJS)\monodll_datecontrols.obj \
- $(OBJS)\monodll_datectrl.obj \
+ $(OBJS)\monodll_datecontrols.obj \
+ $(OBJS)\monodll_datectrl.obj \
$(OBJS)\monodll_datetimectrl.obj \
- $(OBJS)\monodll_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_hyperlink.obj \
+ $(OBJS)\monodll_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_bmpcboxcmn.obj \
$(OBJS)\monodll_calctrlcmn.obj \
@@ -2327,6 +2329,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
+ $(OBJS)\monodll_generic_timectrl.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
@@ -3053,6 +3056,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
+ $(OBJS)\monolib_generic_timectrl.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
@@ -3066,13 +3070,14 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_bmpcbox.obj \
$(OBJS)\monolib_calctrl.obj \
$(OBJS)\monolib_commandlinkbutton.obj \
- $(OBJS)\monolib_datecontrols.obj \
- $(OBJS)\monolib_datectrl.obj \
+ $(OBJS)\monolib_datecontrols.obj \
+ $(OBJS)\monolib_datectrl.obj \
$(OBJS)\monolib_datetimectrl.obj \
- $(OBJS)\monolib_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_hyperlink.obj \
+ $(OBJS)\monolib_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_bmpcboxcmn.obj \
$(OBJS)\monolib_calctrlcmn.obj \
@@ -3100,6 +3105,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
+ $(OBJS)\monolib_generic_timectrl.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
@@ -4262,6 +4268,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
+ $(OBJS)\advdll_generic_timectrl.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
@@ -4275,13 +4282,14 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_bmpcbox.obj \
$(OBJS)\advdll_calctrl.obj \
$(OBJS)\advdll_commandlinkbutton.obj \
- $(OBJS)\advdll_datecontrols.obj \
- $(OBJS)\advdll_datectrl.obj \
+ $(OBJS)\advdll_datecontrols.obj \
+ $(OBJS)\advdll_datectrl.obj \
$(OBJS)\advdll_datetimectrl.obj \
- $(OBJS)\advdll_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_hyperlink.obj \
+ $(OBJS)\advdll_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_bmpcboxcmn.obj \
$(OBJS)\advdll_calctrlcmn.obj \
@@ -4309,6 +4317,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
+ $(OBJS)\advdll_generic_timectrl.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
@@ -4353,6 +4362,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
+ $(OBJS)\advlib_generic_timectrl.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
@@ -4366,13 +4376,14 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_bmpcbox.obj \
$(OBJS)\advlib_calctrl.obj \
$(OBJS)\advlib_commandlinkbutton.obj \
- $(OBJS)\advlib_datecontrols.obj \
- $(OBJS)\advlib_datectrl.obj \
+ $(OBJS)\advlib_datecontrols.obj \
+ $(OBJS)\advlib_datectrl.obj \
$(OBJS)\advlib_datetimectrl.obj \
- $(OBJS)\advlib_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_hyperlink.obj \
+ $(OBJS)\advlib_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_bmpcboxcmn.obj \
$(OBJS)\advlib_calctrlcmn.obj \
@@ -4400,6 +4411,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
+ $(OBJS)\advlib_generic_timectrl.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
@@ -6704,6 +6716,9 @@ $(OBJS)\monodll_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monodll_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\monodll_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\monodll_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp
@@ -8329,6 +8344,11 @@ $(OBJS)\monodll_splash.obj: ..\..\src\generic\splash.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
!endif
@@ -9080,6 +9100,9 @@ $(OBJS)\monolib_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monolib_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\monolib_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\monolib_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp
@@ -10705,6 +10728,11 @@ $(OBJS)\monolib_splash.obj: ..\..\src\generic\splash.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
!endif
@@ -14356,6 +14384,9 @@ $(OBJS)\advdll_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advdll_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\advdll_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
@@ -14437,6 +14468,9 @@ $(OBJS)\advdll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(OBJS)\advdll_splash.obj: ..\..\src\generic\splash.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\splash.cpp
+$(OBJS)\advdll_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+
$(OBJS)\advdll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
@@ -14491,6 +14525,9 @@ $(OBJS)\advlib_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advlib_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\advlib_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
@@ -14572,6 +14609,9 @@ $(OBJS)\advlib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(OBJS)\advlib_splash.obj: ..\..\src\generic\splash.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\splash.cpp
+$(OBJS)\advlib_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+
$(OBJS)\advlib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index bee702f499..713346f21a 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -2295,6 +2295,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.o \
$(OBJS)\monodll_sashwin.o \
$(OBJS)\monodll_splash.o \
+ $(OBJS)\monodll_generic_timectrl.o \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_treelist.o \
$(OBJS)\monodll_wizard.o \
@@ -2308,13 +2309,14 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_bmpcbox.o \
$(OBJS)\monodll_calctrl.o \
$(OBJS)\monodll_commandlinkbutton.o \
- $(OBJS)\monodll_datecontrols.o \
- $(OBJS)\monodll_datectrl.o \
+ $(OBJS)\monodll_datecontrols.o \
+ $(OBJS)\monodll_datectrl.o \
$(OBJS)\monodll_datetimectrl.o \
- $(OBJS)\monodll_hyperlink.o
-endif
-ifeq ($(WXUNIV),1)
-____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_hyperlink.o \
+ $(OBJS)\monodll_msw_timectrl.o
+endif
+ifeq ($(WXUNIV),1)
+____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_animatecmn.o \
$(OBJS)\monodll_bmpcboxcmn.o \
$(OBJS)\monodll_calctrlcmn.o \
@@ -2342,6 +2344,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.o \
$(OBJS)\monodll_sashwin.o \
$(OBJS)\monodll_splash.o \
+ $(OBJS)\monodll_generic_timectrl.o \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_treelist.o \
$(OBJS)\monodll_wizard.o \
@@ -3074,6 +3077,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.o \
$(OBJS)\monolib_sashwin.o \
$(OBJS)\monolib_splash.o \
+ $(OBJS)\monolib_generic_timectrl.o \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_treelist.o \
$(OBJS)\monolib_wizard.o \
@@ -3087,13 +3091,14 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_bmpcbox.o \
$(OBJS)\monolib_calctrl.o \
$(OBJS)\monolib_commandlinkbutton.o \
- $(OBJS)\monolib_datecontrols.o \
- $(OBJS)\monolib_datectrl.o \
+ $(OBJS)\monolib_datecontrols.o \
+ $(OBJS)\monolib_datectrl.o \
$(OBJS)\monolib_datetimectrl.o \
- $(OBJS)\monolib_hyperlink.o
-endif
-ifeq ($(WXUNIV),1)
-____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_hyperlink.o \
+ $(OBJS)\monolib_msw_timectrl.o
+endif
+ifeq ($(WXUNIV),1)
+____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_animatecmn.o \
$(OBJS)\monolib_bmpcboxcmn.o \
$(OBJS)\monolib_calctrlcmn.o \
@@ -3121,6 +3126,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.o \
$(OBJS)\monolib_sashwin.o \
$(OBJS)\monolib_splash.o \
+ $(OBJS)\monolib_generic_timectrl.o \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_treelist.o \
$(OBJS)\monolib_wizard.o \
@@ -4311,6 +4317,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.o \
$(OBJS)\advdll_sashwin.o \
$(OBJS)\advdll_splash.o \
+ $(OBJS)\advdll_generic_timectrl.o \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_treelist.o \
$(OBJS)\advdll_wizard.o \
@@ -4324,13 +4331,14 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_bmpcbox.o \
$(OBJS)\advdll_calctrl.o \
$(OBJS)\advdll_commandlinkbutton.o \
- $(OBJS)\advdll_datecontrols.o \
- $(OBJS)\advdll_datectrl.o \
+ $(OBJS)\advdll_datecontrols.o \
+ $(OBJS)\advdll_datectrl.o \
$(OBJS)\advdll_datetimectrl.o \
- $(OBJS)\advdll_hyperlink.o
-endif
-ifeq ($(WXUNIV),1)
-____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_hyperlink.o \
+ $(OBJS)\advdll_msw_timectrl.o
+endif
+ifeq ($(WXUNIV),1)
+____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_animatecmn.o \
$(OBJS)\advdll_bmpcboxcmn.o \
$(OBJS)\advdll_calctrlcmn.o \
@@ -4358,6 +4366,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.o \
$(OBJS)\advdll_sashwin.o \
$(OBJS)\advdll_splash.o \
+ $(OBJS)\advdll_generic_timectrl.o \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_treelist.o \
$(OBJS)\advdll_wizard.o \
@@ -4406,6 +4415,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.o \
$(OBJS)\advlib_sashwin.o \
$(OBJS)\advlib_splash.o \
+ $(OBJS)\advlib_generic_timectrl.o \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_treelist.o \
$(OBJS)\advlib_wizard.o \
@@ -4419,13 +4429,14 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_bmpcbox.o \
$(OBJS)\advlib_calctrl.o \
$(OBJS)\advlib_commandlinkbutton.o \
- $(OBJS)\advlib_datecontrols.o \
- $(OBJS)\advlib_datectrl.o \
+ $(OBJS)\advlib_datecontrols.o \
+ $(OBJS)\advlib_datectrl.o \
$(OBJS)\advlib_datetimectrl.o \
- $(OBJS)\advlib_hyperlink.o
-endif
-ifeq ($(WXUNIV),1)
-____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_hyperlink.o \
+ $(OBJS)\advlib_msw_timectrl.o
+endif
+ifeq ($(WXUNIV),1)
+____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_animatecmn.o \
$(OBJS)\advlib_bmpcboxcmn.o \
$(OBJS)\advlib_calctrlcmn.o \
@@ -4453,6 +4464,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.o \
$(OBJS)\advlib_sashwin.o \
$(OBJS)\advlib_splash.o \
+ $(OBJS)\advlib_generic_timectrl.o \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_treelist.o \
$(OBJS)\advlib_wizard.o \
@@ -6872,6 +6884,9 @@ $(OBJS)\monodll_datetimectrl.o: ../../src/msw/datetimectrl.cpp
$(OBJS)\monodll_hyperlink.o: ../../src/msw/hyperlink.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\monodll_msw_timectrl.o: ../../src/msw/timectrl.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\monodll_mediactrlcmn.o: ../../src/common/mediactrlcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -8497,6 +8512,11 @@ $(OBJS)\monodll_splash.o: ../../src/generic/splash.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_generic_timectrl.o: ../../src/generic/timectrl.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monodll_tipdlg.o: ../../src/generic/tipdlg.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -9248,6 +9268,9 @@ $(OBJS)\monolib_datetimectrl.o: ../../src/msw/datetimectrl.cpp
$(OBJS)\monolib_hyperlink.o: ../../src/msw/hyperlink.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\monolib_msw_timectrl.o: ../../src/msw/timectrl.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\monolib_mediactrlcmn.o: ../../src/common/mediactrlcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10873,6 +10896,11 @@ $(OBJS)\monolib_splash.o: ../../src/generic/splash.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_generic_timectrl.o: ../../src/generic/timectrl.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monolib_tipdlg.o: ../../src/generic/tipdlg.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -14524,6 +14552,9 @@ $(OBJS)\advdll_datetimectrl.o: ../../src/msw/datetimectrl.cpp
$(OBJS)\advdll_hyperlink.o: ../../src/msw/hyperlink.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_msw_timectrl.o: ../../src/msw/timectrl.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_animatecmn.o: ../../src/common/animatecmn.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14605,6 +14636,9 @@ $(OBJS)\advdll_sashwin.o: ../../src/generic/sashwin.cpp
$(OBJS)\advdll_splash.o: ../../src/generic/splash.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_generic_timectrl.o: ../../src/generic/timectrl.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_tipdlg.o: ../../src/generic/tipdlg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14659,6 +14693,9 @@ $(OBJS)\advlib_datetimectrl.o: ../../src/msw/datetimectrl.cpp
$(OBJS)\advlib_hyperlink.o: ../../src/msw/hyperlink.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_msw_timectrl.o: ../../src/msw/timectrl.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_animatecmn.o: ../../src/common/animatecmn.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -14740,6 +14777,9 @@ $(OBJS)\advlib_sashwin.o: ../../src/generic/sashwin.cpp
$(OBJS)\advlib_splash.o: ../../src/generic/splash.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_generic_timectrl.o: ../../src/generic/timectrl.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_tipdlg.o: ../../src/generic/tipdlg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index b87655973a..a45e851a89 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -2494,6 +2494,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
+ $(OBJS)\monodll_generic_timectrl.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
@@ -2507,13 +2508,14 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_bmpcbox.obj \
$(OBJS)\monodll_calctrl.obj \
$(OBJS)\monodll_commandlinkbutton.obj \
- $(OBJS)\monodll_datecontrols.obj \
- $(OBJS)\monodll_datectrl.obj \
+ $(OBJS)\monodll_datecontrols.obj \
+ $(OBJS)\monodll_datectrl.obj \
$(OBJS)\monodll_datetimectrl.obj \
- $(OBJS)\monodll_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_hyperlink.obj \
+ $(OBJS)\monodll_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_bmpcboxcmn.obj \
$(OBJS)\monodll_calctrlcmn.obj \
@@ -2541,6 +2543,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
+ $(OBJS)\monodll_generic_timectrl.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
@@ -3273,6 +3276,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
+ $(OBJS)\monolib_generic_timectrl.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
@@ -3286,13 +3290,14 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_bmpcbox.obj \
$(OBJS)\monolib_calctrl.obj \
$(OBJS)\monolib_commandlinkbutton.obj \
- $(OBJS)\monolib_datecontrols.obj \
- $(OBJS)\monolib_datectrl.obj \
+ $(OBJS)\monolib_datecontrols.obj \
+ $(OBJS)\monolib_datectrl.obj \
$(OBJS)\monolib_datetimectrl.obj \
- $(OBJS)\monolib_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_hyperlink.obj \
+ $(OBJS)\monolib_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_bmpcboxcmn.obj \
$(OBJS)\monolib_calctrlcmn.obj \
@@ -3320,6 +3325,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
+ $(OBJS)\monolib_generic_timectrl.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
@@ -4572,6 +4578,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
+ $(OBJS)\advdll_generic_timectrl.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
@@ -4585,13 +4592,14 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_bmpcbox.obj \
$(OBJS)\advdll_calctrl.obj \
$(OBJS)\advdll_commandlinkbutton.obj \
- $(OBJS)\advdll_datecontrols.obj \
- $(OBJS)\advdll_datectrl.obj \
+ $(OBJS)\advdll_datecontrols.obj \
+ $(OBJS)\advdll_datectrl.obj \
$(OBJS)\advdll_datetimectrl.obj \
- $(OBJS)\advdll_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_hyperlink.obj \
+ $(OBJS)\advdll_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_bmpcboxcmn.obj \
$(OBJS)\advdll_calctrlcmn.obj \
@@ -4619,6 +4627,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
+ $(OBJS)\advdll_generic_timectrl.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
@@ -4669,6 +4678,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
+ $(OBJS)\advlib_generic_timectrl.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
@@ -4682,13 +4692,14 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_bmpcbox.obj \
$(OBJS)\advlib_calctrl.obj \
$(OBJS)\advlib_commandlinkbutton.obj \
- $(OBJS)\advlib_datecontrols.obj \
- $(OBJS)\advlib_datectrl.obj \
+ $(OBJS)\advlib_datecontrols.obj \
+ $(OBJS)\advlib_datectrl.obj \
$(OBJS)\advlib_datetimectrl.obj \
- $(OBJS)\advlib_hyperlink.obj
-!endif
-!if "$(WXUNIV)" == "1"
-____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_hyperlink.obj \
+ $(OBJS)\advlib_msw_timectrl.obj
+!endif
+!if "$(WXUNIV)" == "1"
+____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_bmpcboxcmn.obj \
$(OBJS)\advlib_calctrlcmn.obj \
@@ -4716,6 +4727,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
+ $(OBJS)\advlib_generic_timectrl.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
@@ -7310,6 +7322,9 @@ $(OBJS)\monodll_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monodll_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\monodll_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\monodll_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp
@@ -8935,6 +8950,11 @@ $(OBJS)\monodll_splash.obj: ..\..\src\generic\splash.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
!endif
@@ -9686,6 +9706,9 @@ $(OBJS)\monolib_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monolib_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\monolib_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\monolib_mediactrlcmn.obj: ..\..\src\common\mediactrlcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\mediactrlcmn.cpp
@@ -11311,6 +11334,11 @@ $(OBJS)\monolib_splash.obj: ..\..\src\generic\splash.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
!endif
@@ -14962,6 +14990,9 @@ $(OBJS)\advdll_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advdll_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\advdll_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\animatecmn.cpp
@@ -15043,6 +15074,9 @@ $(OBJS)\advdll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(OBJS)\advdll_splash.obj: ..\..\src\generic\splash.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\splash.cpp
+$(OBJS)\advdll_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+
$(OBJS)\advdll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
@@ -15097,6 +15131,9 @@ $(OBJS)\advlib_datetimectrl.obj: ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advlib_hyperlink.obj: ..\..\src\msw\hyperlink.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\hyperlink.cpp
+$(OBJS)\advlib_msw_timectrl.obj: ..\..\src\msw\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\timectrl.cpp
+
$(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\animatecmn.cpp
@@ -15178,6 +15215,9 @@ $(OBJS)\advlib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(OBJS)\advlib_splash.obj: ..\..\src\generic\splash.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\splash.cpp
+$(OBJS)\advlib_generic_timectrl.obj: ..\..\src\generic\timectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\timectrl.cpp
+
$(OBJS)\advlib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\tipdlg.cpp
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index 75e6d3b581..933bbc77ec 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -815,6 +815,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_propdlg.obj &
$(OBJS)\monodll_sashwin.obj &
$(OBJS)\monodll_splash.obj &
+ $(OBJS)\monodll_generic_timectrl.obj &
$(OBJS)\monodll_tipdlg.obj &
$(OBJS)\monodll_treelist.obj &
$(OBJS)\monodll_wizard.obj &
@@ -828,13 +829,14 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_bmpcbox.obj &
$(OBJS)\monodll_calctrl.obj &
$(OBJS)\monodll_commandlinkbutton.obj &
- $(OBJS)\monodll_datecontrols.obj &
- $(OBJS)\monodll_datectrl.obj &
+ $(OBJS)\monodll_datecontrols.obj &
+ $(OBJS)\monodll_datectrl.obj &
$(OBJS)\monodll_datetimectrl.obj &
- $(OBJS)\monodll_hyperlink.obj
-!endif
-!ifeq WXUNIV 1
-____ADVANCED_SRC_FILENAMES_OBJECTS = &
+ $(OBJS)\monodll_hyperlink.obj &
+ $(OBJS)\monodll_msw_timectrl.obj
+!endif
+!ifeq WXUNIV 1
+____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_animatecmn.obj &
$(OBJS)\monodll_bmpcboxcmn.obj &
$(OBJS)\monodll_calctrlcmn.obj &
@@ -862,6 +864,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_propdlg.obj &
$(OBJS)\monodll_sashwin.obj &
$(OBJS)\monodll_splash.obj &
+ $(OBJS)\monodll_generic_timectrl.obj &
$(OBJS)\monodll_tipdlg.obj &
$(OBJS)\monodll_treelist.obj &
$(OBJS)\monodll_wizard.obj &
@@ -1599,6 +1602,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_propdlg.obj &
$(OBJS)\monolib_sashwin.obj &
$(OBJS)\monolib_splash.obj &
+ $(OBJS)\monolib_generic_timectrl.obj &
$(OBJS)\monolib_tipdlg.obj &
$(OBJS)\monolib_treelist.obj &
$(OBJS)\monolib_wizard.obj &
@@ -1612,13 +1616,14 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_bmpcbox.obj &
$(OBJS)\monolib_calctrl.obj &
$(OBJS)\monolib_commandlinkbutton.obj &
- $(OBJS)\monolib_datecontrols.obj &
- $(OBJS)\monolib_datectrl.obj &
+ $(OBJS)\monolib_datecontrols.obj &
+ $(OBJS)\monolib_datectrl.obj &
$(OBJS)\monolib_datetimectrl.obj &
- $(OBJS)\monolib_hyperlink.obj
-!endif
-!ifeq WXUNIV 1
-____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
+ $(OBJS)\monolib_hyperlink.obj &
+ $(OBJS)\monolib_msw_timectrl.obj
+!endif
+!ifeq WXUNIV 1
+____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_animatecmn.obj &
$(OBJS)\monolib_bmpcboxcmn.obj &
$(OBJS)\monolib_calctrlcmn.obj &
@@ -1646,6 +1651,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_propdlg.obj &
$(OBJS)\monolib_sashwin.obj &
$(OBJS)\monolib_splash.obj &
+ $(OBJS)\monolib_generic_timectrl.obj &
$(OBJS)\monolib_tipdlg.obj &
$(OBJS)\monolib_treelist.obj &
$(OBJS)\monolib_wizard.obj &
@@ -2852,6 +2858,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_propdlg.obj &
$(OBJS)\advdll_sashwin.obj &
$(OBJS)\advdll_splash.obj &
+ $(OBJS)\advdll_generic_timectrl.obj &
$(OBJS)\advdll_tipdlg.obj &
$(OBJS)\advdll_treelist.obj &
$(OBJS)\advdll_wizard.obj &
@@ -2865,13 +2872,14 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_bmpcbox.obj &
$(OBJS)\advdll_calctrl.obj &
$(OBJS)\advdll_commandlinkbutton.obj &
- $(OBJS)\advdll_datecontrols.obj &
- $(OBJS)\advdll_datectrl.obj &
+ $(OBJS)\advdll_datecontrols.obj &
+ $(OBJS)\advdll_datectrl.obj &
$(OBJS)\advdll_datetimectrl.obj &
- $(OBJS)\advdll_hyperlink.obj
-!endif
-!ifeq WXUNIV 1
-____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
+ $(OBJS)\advdll_hyperlink.obj &
+ $(OBJS)\advdll_msw_timectrl.obj
+!endif
+!ifeq WXUNIV 1
+____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_animatecmn.obj &
$(OBJS)\advdll_bmpcboxcmn.obj &
$(OBJS)\advdll_calctrlcmn.obj &
@@ -2899,6 +2907,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_propdlg.obj &
$(OBJS)\advdll_sashwin.obj &
$(OBJS)\advdll_splash.obj &
+ $(OBJS)\advdll_generic_timectrl.obj &
$(OBJS)\advdll_tipdlg.obj &
$(OBJS)\advdll_treelist.obj &
$(OBJS)\advdll_wizard.obj &
@@ -2949,6 +2958,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_propdlg.obj &
$(OBJS)\advlib_sashwin.obj &
$(OBJS)\advlib_splash.obj &
+ $(OBJS)\advlib_generic_timectrl.obj &
$(OBJS)\advlib_tipdlg.obj &
$(OBJS)\advlib_treelist.obj &
$(OBJS)\advlib_wizard.obj &
@@ -2962,13 +2972,14 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_bmpcbox.obj &
$(OBJS)\advlib_calctrl.obj &
$(OBJS)\advlib_commandlinkbutton.obj &
- $(OBJS)\advlib_datecontrols.obj &
- $(OBJS)\advlib_datectrl.obj &
+ $(OBJS)\advlib_datecontrols.obj &
+ $(OBJS)\advlib_datectrl.obj &
$(OBJS)\advlib_datetimectrl.obj &
- $(OBJS)\advlib_hyperlink.obj
-!endif
-!ifeq WXUNIV 1
-____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
+ $(OBJS)\advlib_hyperlink.obj &
+ $(OBJS)\advlib_msw_timectrl.obj
+!endif
+!ifeq WXUNIV 1
+____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_animatecmn.obj &
$(OBJS)\advlib_bmpcboxcmn.obj &
$(OBJS)\advlib_calctrlcmn.obj &
@@ -2996,6 +3007,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_propdlg.obj &
$(OBJS)\advlib_sashwin.obj &
$(OBJS)\advlib_splash.obj &
+ $(OBJS)\advlib_generic_timectrl.obj &
$(OBJS)\advlib_tipdlg.obj &
$(OBJS)\advlib_treelist.obj &
$(OBJS)\advlib_wizard.obj &
@@ -7143,6 +7155,9 @@ $(OBJS)\monodll_datetimectrl.obj : .AUTODEPEND ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monodll_hyperlink.obj : .AUTODEPEND ..\..\src\msw\hyperlink.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+$(OBJS)\monodll_msw_timectrl.obj : .AUTODEPEND ..\..\src\msw\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
$(OBJS)\monodll_mediactrlcmn.obj : .AUTODEPEND ..\..\src\common\mediactrlcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -8768,6 +8783,11 @@ $(OBJS)\monodll_splash.obj : .AUTODEPEND ..\..\src\generic\splash.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monodll_generic_timectrl.obj : .AUTODEPEND ..\..\src\generic\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monodll_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
@@ -9519,6 +9539,9 @@ $(OBJS)\monolib_datetimectrl.obj : .AUTODEPEND ..\..\src\msw\datetimectrl.cpp
$(OBJS)\monolib_hyperlink.obj : .AUTODEPEND ..\..\src\msw\hyperlink.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+$(OBJS)\monolib_msw_timectrl.obj : .AUTODEPEND ..\..\src\msw\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
$(OBJS)\monolib_mediactrlcmn.obj : .AUTODEPEND ..\..\src\common\mediactrlcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -11144,6 +11167,11 @@ $(OBJS)\monolib_splash.obj : .AUTODEPEND ..\..\src\generic\splash.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monolib_generic_timectrl.obj : .AUTODEPEND ..\..\src\generic\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monolib_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
@@ -14795,6 +14823,9 @@ $(OBJS)\advdll_datetimectrl.obj : .AUTODEPEND ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advdll_hyperlink.obj : .AUTODEPEND ..\..\src\msw\hyperlink.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_msw_timectrl.obj : .AUTODEPEND ..\..\src\msw\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -14876,6 +14907,9 @@ $(OBJS)\advdll_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(OBJS)\advdll_splash.obj : .AUTODEPEND ..\..\src\generic\splash.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_generic_timectrl.obj : .AUTODEPEND ..\..\src\generic\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -14930,6 +14964,9 @@ $(OBJS)\advlib_datetimectrl.obj : .AUTODEPEND ..\..\src\msw\datetimectrl.cpp
$(OBJS)\advlib_hyperlink.obj : .AUTODEPEND ..\..\src\msw\hyperlink.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_msw_timectrl.obj : .AUTODEPEND ..\..\src\msw\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
@@ -15011,6 +15048,9 @@ $(OBJS)\advlib_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(OBJS)\advlib_splash.obj : .AUTODEPEND ..\..\src\generic\splash.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_generic_timectrl.obj : .AUTODEPEND ..\..\src\generic\timectrl.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
diff --git a/build/msw/wx_adv.dsp b/build/msw/wx_adv.dsp
index b19a99847d..c207230558 100644
--- a/build/msw/wx_adv.dsp
+++ b/build/msw/wx_adv.dsp
@@ -551,6 +551,41 @@ SOURCE=..\..\src\msw\taskbar.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\msw\timectrl.cpp
+
+!IF "$(CFG)" == "adv - Win32 DLL Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "adv - Win32 DLL Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "adv - Win32 DLL Release"
+
+
+!ELSEIF "$(CFG)" == "adv - Win32 DLL Debug"
+
+
+!ELSEIF "$(CFG)" == "adv - Win32 Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "adv - Win32 Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "adv - Win32 Release"
+
+
+!ELSEIF "$(CFG)" == "adv - Win32 Debug"
+
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\msw\version.rc
!IF "$(CFG)" == "adv - Win32 DLL Universal Release"
@@ -674,6 +709,10 @@ SOURCE=..\..\src\generic\splash.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\generic\timectrl.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\generic\tipdlg.cpp
# End Source File
# Begin Source File
@@ -961,6 +1000,10 @@ SOURCE=..\..\include\wx\msw\sound.h
SOURCE=..\..\include\wx\msw\taskbar.h
# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\wx\msw\timectrl.h
+# End Source File
# End Group
# Begin Group "Generic Headers"
@@ -1043,6 +1086,10 @@ SOURCE=..\..\include\wx\generic\splash.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\timectrl.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\wizard.h
# End Source File
# End Group
@@ -1143,6 +1190,10 @@ SOURCE=..\..\include\wx\taskbar.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\timectrl.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\tipdlg.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index 467e05c009..61534fa9af 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -5404,6 +5404,10 @@ SOURCE=..\..\include\wx\msw\tglbtn.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\msw\timectrl.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\msw\toolbar.h
# End Source File
# Begin Source File
@@ -5676,6 +5680,10 @@ SOURCE=..\..\include\wx\generic\textdlgg.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\timectrl.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\treectlg.h
# End Source File
# Begin Source File
@@ -6884,6 +6892,10 @@ SOURCE=..\..\include\wx\tglbtn.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\timectrl.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\tipdlg.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_vc7_adv.vcproj b/build/msw/wx_vc7_adv.vcproj
index a55f1b3700..73f27ad070 100644
--- a/build/msw/wx_vc7_adv.vcproj
+++ b/build/msw/wx_vc7_adv.vcproj
@@ -728,6 +728,45 @@
RelativePath="..\..\src\msw\taskbar.cpp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1155,6 +1251,9 @@
RelativePath="..\..\include\wx\taskbar.h">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1378,6 +1498,10 @@
RelativePath="..\..\include\wx\msw\taskbar.h"
>
+
+
+
+
@@ -1561,6 +1689,10 @@
>
+
+
diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj
index 0be72503f0..400fa42735 100644
--- a/build/msw/wx_vc8_core.vcproj
+++ b/build/msw/wx_vc8_core.vcproj
@@ -6188,6 +6188,10 @@
>
+
+
@@ -6461,6 +6465,10 @@
>
+
+
@@ -7672,6 +7680,10 @@
>
+
+
diff --git a/build/msw/wx_vc9_adv.vcproj b/build/msw/wx_vc9_adv.vcproj
index 598252c315..9d0358931d 100644
--- a/build/msw/wx_vc9_adv.vcproj
+++ b/build/msw/wx_vc9_adv.vcproj
@@ -1000,6 +1000,58 @@
>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1374,6 +1494,10 @@
RelativePath="..\..\include\wx\msw\taskbar.h"
>
+
+
+
+
@@ -1557,6 +1685,10 @@
>
+
+
diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj
index 24281624f1..f8cc2d1d55 100644
--- a/build/msw/wx_vc9_core.vcproj
+++ b/build/msw/wx_vc9_core.vcproj
@@ -6184,6 +6184,10 @@
>
+
+
@@ -6457,6 +6461,10 @@
>
+
+
@@ -7668,6 +7676,10 @@
>
+
+
diff --git a/configure b/configure
index 33c7deccce..4a875dff04 100755
--- a/configure
+++ b/configure
@@ -1870,6 +1870,7 @@ Optional Features:
--enable-taskbaricon use wxTaskBarIcon class
--enable-tbarnative use native wxToolBar class
--enable-textctrl use wxTextCtrl class
+ --enable-timepick use wxTimePickerCtrl class
--enable-tipwindow use wxTipWindow class
--enable-togglebtn use wxToggleButton class
--enable-toolbar use wxToolBar class
@@ -9911,6 +9912,7 @@ if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_STATBOX=no
DEFAULT_wxUSE_STATLINE=no
DEFAULT_wxUSE_STATUSBAR=no
+ DEFAULT_wxUSE_TIMEPICKCTRL=no
DEFAULT_wxUSE_TIPWINDOW=no
DEFAULT_wxUSE_TOGGLEBTN=no
DEFAULT_wxUSE_TOOLBAR=no
@@ -12608,6 +12610,50 @@ fi
echo "${ECHO_T}$result" >&6; }
+ enablestring=
+ defaultval=$wxUSE_ALL_FEATURES
+ if test -z "$defaultval"; then
+ if test x"$enablestring" = xdisable; then
+ defaultval=yes
+ else
+ defaultval=no
+ fi
+ fi
+
+ { echo "$as_me:$LINENO: checking for --${enablestring:-enable}-datepick" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-datepick... $ECHO_C" >&6; }
+ # Check whether --enable-datepick was given.
+if test "${enable_datepick+set}" = set; then
+ enableval=$enable_datepick;
+ if test "$enableval" = yes; then
+ wx_cv_use_datepick='wxUSE_TIMEPICKCTRL=yes'
+ else
+ wx_cv_use_datepick='wxUSE_TIMEPICKCTRL=no'
+ fi
+
+else
+
+ wx_cv_use_datepick='wxUSE_TIMEPICKCTRL=${'DEFAULT_wxUSE_TIMEPICKCTRL":-$defaultval}"
+
+fi
+
+
+ eval "$wx_cv_use_datepick"
+
+ if test x"$enablestring" = xdisable; then
+ if test $wxUSE_TIMEPICKCTRL = no; then
+ result=yes
+ else
+ result=no
+ fi
+ else
+ result=$wxUSE_TIMEPICKCTRL
+ fi
+
+ { echo "$as_me:$LINENO: result: $result" >&5
+echo "${ECHO_T}$result" >&6; }
+
+
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@@ -47955,6 +48001,14 @@ _ACEOF
fi
+if test "$wxUSE_TIMEPICKCTRL" = "yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define wxUSE_TIMEPICKCTRL 1
+_ACEOF
+
+ USES_CONTROLS=1
+fi
+
if test "$wxUSE_TOGGLEBTN" = "yes"; then
if test "$wxUSE_OLD_COCOA" = 1 ; then
{ echo "$as_me:$LINENO: WARNING: Toggle button not yet supported under Mac OS X... disabled" >&5
diff --git a/configure.in b/configure.in
index a45717410e..06768cdcf4 100644
--- a/configure.in
+++ b/configure.in
@@ -927,6 +927,7 @@ if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_STATBOX=no
DEFAULT_wxUSE_STATLINE=no
DEFAULT_wxUSE_STATUSBAR=no
+ DEFAULT_wxUSE_TIMEPICKCTRL=no
DEFAULT_wxUSE_TIPWINDOW=no
DEFAULT_wxUSE_TOGGLEBTN=no
DEFAULT_wxUSE_TOOLBAR=no
@@ -1002,6 +1003,7 @@ WX_ARG_FEATURE(statusbar, [ --enable-statusbar use wxStatusBar class], w
WX_ARG_FEATURE(taskbaricon, [ --enable-taskbaricon use wxTaskBarIcon class], wxUSE_TASKBARICON)
WX_ARG_FEATURE(tbarnative, [ --enable-tbarnative use native wxToolBar class], wxUSE_TOOLBAR_NATIVE)
WX_ARG_FEATURE(textctrl, [ --enable-textctrl use wxTextCtrl class], wxUSE_TEXTCTRL)
+WX_ARG_FEATURE(datepick, [ --enable-timepick use wxTimePickerCtrl class], wxUSE_TIMEPICKCTRL)
WX_ARG_FEATURE(tipwindow, [ --enable-tipwindow use wxTipWindow class], wxUSE_TIPWINDOW)
WX_ARG_FEATURE(togglebtn, [ --enable-togglebtn use wxToggleButton class], wxUSE_TOGGLEBTN)
WX_ARG_FEATURE(toolbar, [ --enable-toolbar use wxToolBar class], wxUSE_TOOLBAR)
@@ -7110,6 +7112,11 @@ if test "$wxUSE_TEXTCTRL" = "yes"; then
AC_DEFINE(wxUSE_RICHEDIT2)
fi
+if test "$wxUSE_TIMEPICKCTRL" = "yes"; then
+ AC_DEFINE(wxUSE_TIMEPICKCTRL)
+ USES_CONTROLS=1
+fi
+
if test "$wxUSE_TOGGLEBTN" = "yes"; then
if test "$wxUSE_OLD_COCOA" = 1 ; then
AC_MSG_WARN([Toggle button not yet supported under Mac OS X... disabled])
diff --git a/docs/changes.txt b/docs/changes.txt
index 921285e5ca..207808e4d8 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -452,6 +452,7 @@ All:
All (GUI):
- Added wxTreeListCtrl class.
+- Added wxTimePickerCtrl class.
- Added documented, public wxNavigationEnabled<> class.
- Added wxTextCtrl::PositionToCoords() (Navaneeth).
- Added support for wxHELP button to wxMessageDialog.
diff --git a/docs/doxygen/images/wxmsw/timepickerctrl.png b/docs/doxygen/images/wxmsw/timepickerctrl.png
new file mode 100644
index 0000000000..6cc4c99876
Binary files /dev/null and b/docs/doxygen/images/wxmsw/timepickerctrl.png differ
diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h
index fc4612f7ae..cbe16ae778 100644
--- a/include/wx/chkconf.h
+++ b/include/wx/chkconf.h
@@ -1101,6 +1101,14 @@
# endif
#endif /* !defined(wxUSE_TEXTCTRL) */
+#ifndef wxUSE_TIMEPICKCTRL
+# ifdef wxABORT_ON_CONFIG_ERROR
+# error "wxUSE_TIMEPICKCTRL must be defined, please read comment near the top of this file."
+# else
+# define wxUSE_TIMEPICKCTRL 0
+# endif
+#endif /* !defined(wxUSE_TIMEPICKCTRL) */
+
#ifndef wxUSE_TIPWINDOW
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_TIPWINDOW must be defined, please read comment near the top of this file."
@@ -1713,16 +1721,16 @@
# endif
#endif /* wxUSE_CALENDARCTRL */
-#if wxUSE_DATEPICKCTRL
+#if wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL
# if !wxUSE_DATETIME
# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxDatePickerCtrl requires wxUSE_DATETIME"
+# error "wxDatePickerCtrl and wxTimePickerCtrl requires wxUSE_DATETIME"
# else
# undef wxUSE_DATETIME
# define wxUSE_DATETIME 1
# endif
# endif
-#endif /* wxUSE_DATEPICKCTRL */
+#endif /* wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL */
#if wxUSE_CHECKLISTBOX
# if !wxUSE_LISTBOX
diff --git a/include/wx/dateevt.h b/include/wx/dateevt.h
index b6cec94f9c..8364efb402 100644
--- a/include/wx/dateevt.h
+++ b/include/wx/dateevt.h
@@ -17,7 +17,7 @@
#include "wx/window.h"
// ----------------------------------------------------------------------------
-// wxDateEvent: used by wxCalendarCtrl and wxDatePickerCtrl
+// wxDateEvent: used by wxCalendarCtrl, wxDatePickerCtrl and wxTimePickerCtrl.
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_ADV wxDateEvent : public wxCommandEvent
@@ -48,6 +48,7 @@ private:
// ----------------------------------------------------------------------------
wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_ADV, wxEVT_DATE_CHANGED, wxDateEvent);
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_ADV, wxEVT_TIME_CHANGED, wxDateEvent);
typedef void (wxEvtHandler::*wxDateEventFunction)(wxDateEvent&);
@@ -57,5 +58,8 @@ typedef void (wxEvtHandler::*wxDateEventFunction)(wxDateEvent&);
#define EVT_DATE_CHANGED(id, fn) \
wx__DECLARE_EVT1(wxEVT_DATE_CHANGED, id, wxDateEventHandler(fn))
+#define EVT_TIME_CHANGED(id, fn) \
+ wx__DECLARE_EVT1(wxEVT_TIME_CHANGED, id, wxDateEventHandler(fn))
+
#endif // _WX_DATEEVT_H_
diff --git a/include/wx/datetimectrl.h b/include/wx/datetimectrl.h
index 90da113f99..453c9174b5 100644
--- a/include/wx/datetimectrl.h
+++ b/include/wx/datetimectrl.h
@@ -13,7 +13,7 @@
#include "wx/defs.h"
-#if wxUSE_DATEPICKCTRL
+#if wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL
#define wxNEEDS_DATETIMEPICKCTRL
@@ -43,6 +43,6 @@ public:
typedef wxDateTimePickerCtrlBase wxDateTimePickerCtrl;
#endif
-#endif // wxUSE_DATEPICKCTRL
+#endif // wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL
#endif // _WX_DATETIME_CTRL_H_
diff --git a/include/wx/generic/timectrl.h b/include/wx/generic/timectrl.h
new file mode 100644
index 0000000000..e2052cc1cf
--- /dev/null
+++ b/include/wx/generic/timectrl.h
@@ -0,0 +1,93 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/timectrl.h
+// Purpose: Generic implementation of wxTimePickerCtrl.
+// Author: Paul Breen, Vadim Zeitlin
+// Created: 2011-09-22
+// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_TIMECTRL_H_
+#define _WX_GENERIC_TIMECTRL_H_
+
+#include "wx/containr.h"
+#include "wx/compositewin.h"
+
+class WXDLLIMPEXP_ADV wxTimePickerCtrlGeneric
+ : public wxCompositeWindow< wxNavigationEnabled >
+{
+public:
+ typedef wxCompositeWindow< wxNavigationEnabled > Base;
+
+ // Creating the control.
+ wxTimePickerCtrlGeneric() { Init(); }
+ virtual ~wxTimePickerCtrlGeneric();
+ wxTimePickerCtrlGeneric(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr)
+ {
+ Init();
+
+ (void)Create(parent, id, date, pos, size, style, validator, name);
+ }
+
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr);
+
+ // Implement pure virtual wxTimePickerCtrlBase methods.
+ virtual void SetValue(const wxDateTime& date);
+ virtual wxDateTime GetValue() const;
+
+protected:
+ virtual wxSize DoGetBestSize() const;
+
+ virtual void DoMoveWindow(int x, int y, int width, int height);
+
+ // This is a really ugly hack but to compile this class in wxMSW we must
+ // define these functions even though they are never called because they're
+ // only used by the native implementation.
+#ifdef __WXMSW__
+ virtual wxLocaleInfo MSWGetFormat() const
+ {
+ wxFAIL_MSG( "Unreachable" );
+ return wxLOCALE_TIME_FMT;
+ }
+
+ virtual bool MSWAllowsNone() const
+ {
+ wxFAIL_MSG( "Unreachable" );
+ return false;
+ }
+
+ virtual bool MSWOnDateTimeChange(const tagNMDATETIMECHANGE& WXUNUSED(dtch))
+ {
+ wxFAIL_MSG( "Unreachable" );
+ return false;
+ }
+#endif // __WXMSW__
+
+private:
+ void Init();
+
+ // Return the list of the windows composing this one.
+ virtual wxWindowList GetCompositeWindowParts() const;
+
+ // Implementation data.
+ class wxTimePickerGenericImpl* m_impl;
+
+ wxDECLARE_NO_COPY_CLASS(wxTimePickerCtrlGeneric);
+};
+
+#endif // _WX_GENERIC_TIMECTRL_H_
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index 53a9f15ef3..72c3721f07 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -867,6 +867,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index 4112a5a5b2..a8f62e2241 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -867,6 +867,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
@@ -1604,6 +1605,14 @@
// Recommended setting: 0, this is mainly used for testing
#define wxUSE_DATEPICKCTRL_GENERIC 0
+// Set this to 1 to be able to use wxTimePickerCtrlGeneric in addition to the
+// native wxTimePickerCtrl for the platforms that have the latter (MSW).
+//
+// Default is 0.
+//
+// Recommended setting: 0, this is mainly used for testing
+#define wxUSE_TIMEPICKCTRL_GENERIC 0
+
// ----------------------------------------------------------------------------
// Crash debugging helpers
// ----------------------------------------------------------------------------
diff --git a/include/wx/msw/setup_inc.h b/include/wx/msw/setup_inc.h
index 74efe5b8d0..ead970f51d 100644
--- a/include/wx/msw/setup_inc.h
+++ b/include/wx/msw/setup_inc.h
@@ -144,6 +144,14 @@
// Recommended setting: 0, this is mainly used for testing
#define wxUSE_DATEPICKCTRL_GENERIC 0
+// Set this to 1 to be able to use wxTimePickerCtrlGeneric in addition to the
+// native wxTimePickerCtrl for the platforms that have the latter (MSW).
+//
+// Default is 0.
+//
+// Recommended setting: 0, this is mainly used for testing
+#define wxUSE_TIMEPICKCTRL_GENERIC 0
+
// ----------------------------------------------------------------------------
// Crash debugging helpers
// ----------------------------------------------------------------------------
diff --git a/include/wx/msw/timectrl.h b/include/wx/msw/timectrl.h
new file mode 100644
index 0000000000..4ee7fa0e92
--- /dev/null
+++ b/include/wx/msw/timectrl.h
@@ -0,0 +1,61 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/msw/timectrl.h
+// Purpose: wxTimePickerCtrl for Windows.
+// Author: Vadim Zeitlin
+// Created: 2011-09-22
+// RCS-ID: $Id$
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_MSW_TIMECTRL_H_
+#define _WX_MSW_TIMECTRL_H_
+
+// ----------------------------------------------------------------------------
+// wxTimePickerCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxTimePickerCtrl : public wxTimePickerCtrlBase
+{
+public:
+ // ctors
+ wxTimePickerCtrl() { }
+
+ wxTimePickerCtrl(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& dt = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr)
+ {
+ Create(parent, id, dt, pos, size, style, validator, name);
+ }
+
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& dt = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr)
+ {
+ return MSWCreateDateTimePicker(parent, id, dt,
+ pos, size, style,
+ validator, name);
+ }
+
+ // Override MSW-specific functions used during control creation.
+ virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
+
+protected:
+ virtual wxLocaleInfo MSWGetFormat() const;
+ virtual bool MSWAllowsNone() const { return false; }
+ virtual bool MSWOnDateTimeChange(const tagNMDATETIMECHANGE& dtch);
+
+ wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxTimePickerCtrl);
+};
+
+#endif // _WX_MSW_TIMECTRL_H_
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index a953589934..a1a8bb702a 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -867,6 +867,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h
index 74975fb319..3f7ba32ff7 100644
--- a/include/wx/os2/setup0.h
+++ b/include/wx/os2/setup0.h
@@ -867,6 +867,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/osx/setup0.h b/include/wx/osx/setup0.h
index e9c75bf7f9..db61cb128f 100644
--- a/include/wx/osx/setup0.h
+++ b/include/wx/osx/setup0.h
@@ -868,6 +868,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h
index 9532fdf3b9..d2384305df 100644
--- a/include/wx/palmos/setup0.h
+++ b/include/wx/palmos/setup0.h
@@ -867,6 +867,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 2b3ce56c6e..4168e64d59 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -863,6 +863,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/include/wx/timectrl.h b/include/wx/timectrl.h
new file mode 100644
index 0000000000..0bc9db79ca
--- /dev/null
+++ b/include/wx/timectrl.h
@@ -0,0 +1,88 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/timectrl.h
+// Purpose: Declaration of wxTimePickerCtrl class.
+// Author: Vadim Zeitlin
+// Created: 2011-09-22
+// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_TIMECTRL_H_
+#define _WX_TIMECTRL_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_TIMEPICKCTRL
+
+#include "wx/datetimectrl.h"
+
+#define wxTimePickerCtrlNameStr wxS("timectrl")
+
+// No special styles are currently defined for this control but still define a
+// symbolic constant for the default style for consistency.
+enum
+{
+ wxTP_DEFAULT = 0
+};
+
+// ----------------------------------------------------------------------------
+// wxTimePickerCtrl: Allow the user to enter the time.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxTimePickerCtrlBase : public wxDateTimePickerCtrl
+{
+public:
+ /*
+ The derived classes should implement ctor and Create() method with the
+ following signature:
+
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& dt = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr);
+ */
+
+ /*
+ We also inherit Set/GetValue() methods from the base class which define
+ our public API. Notice that the date portion of the date passed as
+ input is ignored and for the result date it's always today, but only
+ the time part of wxDateTime objects is really significant here.
+ */
+};
+
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ #include "wx/msw/timectrl.h"
+
+ #define wxHAS_NATIVE_TIMEPICKERCTRL
+#else
+ #include "wx/generic/timectrl.h"
+
+ class WXDLLIMPEXP_ADV wxTimePickerCtrl : public wxTimePickerCtrlGeneric
+ {
+ public:
+ wxTimePickerCtrl() { }
+ wxTimePickerCtrl(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxTimePickerCtrlNameStr)
+ : wxTimePickerCtrlGeneric(parent, id, date, pos, size, style, validator, name)
+ {
+ }
+
+ private:
+ wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxTimePickerCtrl);
+ };
+#endif
+
+#endif // wxUSE_TIMEPICKCTRL
+
+#endif // _WX_TIMECTRL_H_
diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h
index cedab2e3e8..632c93a5b0 100644
--- a/include/wx/univ/setup0.h
+++ b/include/wx/univ/setup0.h
@@ -866,6 +866,7 @@
#define wxUSE_STATTEXT 1 // wxStaticText
#define wxUSE_STATBMP 1 // wxStaticBitmap
#define wxUSE_TEXTCTRL 1 // wxTextCtrl
+#define wxUSE_TIMEPICKCTRL 1 // wxTimePickerCtrl
#define wxUSE_TOGGLEBTN 1 // requires wxButton
#define wxUSE_TREECTRL 1 // wxTreeCtrl
#define wxUSE_TREELISTCTRL 1 // wxTreeListCtrl
diff --git a/interface/wx/timectrl.h b/interface/wx/timectrl.h
new file mode 100644
index 0000000000..41bbc54217
--- /dev/null
+++ b/interface/wx/timectrl.h
@@ -0,0 +1,108 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/timectrl.h
+// Purpose: interface of wxTimePickerCtrl
+// Author: Vadim Zeitlin
+// Created: 2011-09-22
+// RCS-ID: $Id$
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxTimePickerCtrl
+
+ This control allows the user to enter time.
+
+ It is similar to wxDatePickerCtrl but is used for time, and not date,
+ selection. While GetValue() and SetValue() still work with values of type
+ wxDateTime (because wxWidgets doesn't provide a time-only class), their
+ date part is ignored by this control.
+
+ It is only available if @c wxUSE_TIMEPICKCTRL is set to 1.
+
+ This control currently doesn't have any specific flags.
+
+ @beginEventEmissionTable{wxDateEvent}
+ @event{EVT_TIME_CHANGED(id, func)}
+ This event fires when the user changes the current selection in the
+ control.
+ @endEventTable
+
+ @library{wxadv}
+ @category{pickers}
+ @appearance{timepickerctrl.png}
+
+ @see wxDatePickerCtrl, wxDateEvent
+
+ @since 2.9.3
+*/
+class wxTimePickerCtrl : public wxControl
+{
+public:
+ /**
+ Initializes the object and calls Create() with all the parameters.
+ */
+ wxTimePickerCtrl(wxWindow* parent, wxWindowID id,
+ const wxDateTime& dt = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxTP_DEFAULT,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = "timectrl");
+
+ /**
+ Create the control window.
+
+ This method should only be used for objects created using default
+ constructor.
+
+ @param parent
+ Parent window, must not be non-@NULL.
+ @param id
+ The identifier for the control.
+ @param dt
+ The initial value of the control, if an invalid date (such as the
+ default value) is used, the control is set to current time.
+ @param pos
+ Initial position.
+ @param size
+ Initial size. If left at default value, the control chooses its own
+ best size by using the height approximately equal to a text control
+ and width large enough to show the time fully.
+ @param style
+ The window style, should be left at 0 as there are no special
+ styles for this control in this version.
+ @param validator
+ Validator which can be used for additional checks.
+ @param name
+ Control name.
+
+ @return @true if the control was successfully created or @false if
+ creation failed.
+ */
+ bool Create(wxWindow* parent, wxWindowID id,
+ const wxDateTime& dt = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDP_DEFAULT | wxDP_SHOWCENTURY,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = "timectrl");
+
+ /**
+ Returns the currently entered time.
+
+ The date part of the returned wxDateTime object is always set to today
+ and should be ignored, only the time part is relevant.
+ */
+ virtual wxDateTime GetValue() const = 0;
+
+ /**
+ Changes the current value of the control.
+
+ The date part of @a dt is ignored, only the time part is displayed in
+ the control. The @a dt object must however be valid.
+
+ Calling this method does not result in a time change event.
+ */
+ virtual void SetValue(const wxDateTime& dt) = 0;
+};
diff --git a/samples/calendar/calendar.cpp b/samples/calendar/calendar.cpp
index 73cf2adf12..822e097994 100644
--- a/samples/calendar/calendar.cpp
+++ b/samples/calendar/calendar.cpp
@@ -51,6 +51,13 @@
#endif // wxUSE_DATEPICKCTRL_GENERIC
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+ #include "wx/timectrl.h"
+ #if wxUSE_TIMEPICKCTRL_GENERIC
+ #include "wx/generic/timectrl.h"
+ #endif // wxUSE_TIMEPICKCTRL_GENERIC
+#endif // wxUSE_TIMEPICKCTRL
+
#include "../sample.xpm"
#ifdef wxHAS_NATIVE_CALENDARCTRL
@@ -136,6 +143,10 @@ public:
void OnUpdateUIStartWithNone(wxUpdateUIEvent& event);
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+ void OnAskTime(wxCommandEvent& event);
+#endif // wxUSE_TIMEPICKCTRL
+
#ifdef wxHAS_NATIVE_CALENDARCTRL
void OnCalGeneric(wxCommandEvent& WXUNUSED(event))
{
@@ -177,10 +188,10 @@ private:
#if wxUSE_DATEPICKCTRL
// Define a simple modal dialog which asks the user for a date
-class MyDialog : public wxDialog
+class MyDateDialog : public wxDialog
{
public:
- MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle);
+ MyDateDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle);
wxDateTime GetDate() const { return m_datePicker->GetValue(); }
@@ -189,7 +200,7 @@ private:
wxDatePickerCtrlBase *m_datePicker;
- wxTextCtrl *m_text;
+ wxStaticText *m_dateText;
DECLARE_EVENT_TABLE()
@@ -197,6 +208,27 @@ private:
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+
+// Another simple dialog, this one asking for time.
+class MyTimeDialog : public wxDialog
+{
+public:
+ MyTimeDialog(wxWindow* parent);
+
+ wxDateTime GetTime() const { return m_timePicker->GetValue(); }
+
+private:
+ void OnTimeChange(wxDateEvent& event);
+
+ wxTimePickerCtrlBase* m_timePicker;
+ wxStaticText* m_timeText;
+
+ wxDECLARE_EVENT_TABLE();
+};
+
+#endif // wxUSE_TIMEPICKCTRL
+
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
@@ -231,6 +263,12 @@ enum
Calendar_DatePicker_Generic,
#endif // wxUSE_DATEPICKCTRL_GENERIC
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+ Calendar_TimePicker_AskTime = 400,
+#if wxUSE_TIMEPICKCTRL_GENERIC
+ Calendar_TimePicker_Generic,
+#endif // wxUSE_TIMEPICKCTRL_GENERIC
+#endif // wxUSE_TIMEPICKCTRL
Calendar_CalCtrl = 1000
};
@@ -253,6 +291,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
MyFrame::OnUpdateUIStartWithNone)
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+ EVT_MENU(Calendar_TimePicker_AskTime, MyFrame::OnAskTime)
+#endif // wxUSE_TIMEPICKCTRL
+
#ifdef wxHAS_NATIVE_CALENDARCTRL
EVT_MENU(Calendar_Cal_Generic, MyFrame::OnCalGeneric)
#endif // wxHAS_NATIVE_CALENDARCTRL
@@ -293,14 +335,6 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel)
EVT_CALENDAR_WEEK_CLICKED(Calendar_CalCtrl, MyPanel::OnCalendarWeekClick)
END_EVENT_TABLE()
-#if wxUSE_DATEPICKCTRL
-
-BEGIN_EVENT_TABLE(MyDialog, wxDialog)
- EVT_DATE_CHANGED(wxID_ANY, MyDialog::OnDateChange)
-END_EVENT_TABLE()
-
-#endif // wxUSE_DATEPICKCTRL
-
// Create a new application object: this macro will allow wxWidgets to create
// the application object during program execution (it's better than using a
// static object for many reasons) and also declares the accessor function
@@ -349,12 +383,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
SetIcon(wxICON(sample));
// create a menu bar
+ wxMenuBar *menuBar = new wxMenuBar;
+
wxMenu *menuFile = new wxMenu;
menuFile->Append(Calendar_File_About, wxT("&About...\tCtrl-A"), wxT("Show about dialog"));
menuFile->AppendSeparator();
menuFile->Append(Calendar_File_ClearLog, wxT("&Clear log\tCtrl-L"));
menuFile->AppendSeparator();
menuFile->Append(Calendar_File_Quit, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
+ menuBar->Append(menuFile, wxT("&File"));
wxMenu *menuCal = new wxMenu;
#ifdef wxHAS_NATIVE_CALENDARCTRL
@@ -396,6 +433,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
menuCal->Append(Calendar_Cal_BeginDST, "Call SetDate(GetBeginDST())");
menuCal->AppendSeparator();
menuCal->AppendCheckItem(Calendar_Cal_Resizable, wxT("Make &resizable\tCtrl-R"));
+ menuBar->Append(menuCal, wxT("&Calendar"));
#if wxUSE_DATEPICKCTRL
wxMenu *menuDate = new wxMenu;
@@ -413,16 +451,20 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
#endif // wxUSE_DATEPICKCTRL_GENERIC
menuDate->AppendSeparator();
menuDate->Append(Calendar_DatePicker_AskDate, wxT("&Choose date...\tCtrl-D"), wxT("Show dialog with wxDatePickerCtrl"));
-#endif // wxUSE_DATEPICKCTRL
-
- // now append the freshly created menu to the menu bar...
- wxMenuBar *menuBar = new wxMenuBar;
- menuBar->Append(menuFile, wxT("&File"));
- menuBar->Append(menuCal, wxT("&Calendar"));
-#if wxUSE_DATEPICKCTRL
menuBar->Append(menuDate, wxT("&Date picker"));
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+ wxMenu *menuTime = new wxMenu;
+#if wxUSE_TIMEPICKCTRL_GENERIC
+ menuTime->AppendCheckItem(Calendar_TimePicker_Generic,
+ wxT("Use &generic version of the control"));
+ menuTime->AppendSeparator();
+#endif // wxUSE_TIMEPICKCTRL_GENERIC
+ menuTime->Append(Calendar_TimePicker_AskTime, wxT("&Choose time...\tCtrl-T"), wxT("Show dialog with wxTimePickerCtrl"));
+ menuBar->Append(menuTime, wxT("&Time picker"));
+#endif // wxUSE_TIMEPICKCTRL
+
menuBar->Check(Calendar_Cal_Monday, true);
menuBar->Check(Calendar_Cal_Holidays, true);
menuBar->Check(Calendar_Cal_Month, true);
@@ -605,7 +647,7 @@ void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event))
dt = wxDefaultDateTime;
}
- MyDialog dlg(this, dt, style);
+ MyDateDialog dlg(this, dt, style);
if ( dlg.ShowModal() == wxID_OK )
{
dt = dlg.GetDate();
@@ -632,6 +674,19 @@ void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event))
#endif // wxUSE_DATEPICKCTRL
+#if wxUSE_TIMEPICKCTRL
+
+void MyFrame::OnAskTime(wxCommandEvent& WXUNUSED(event))
+{
+ MyTimeDialog dlg(this);
+ if ( dlg.ShowModal() == wxID_OK )
+ {
+ wxLogMessage("You entered %s", dlg.GetTime().FormatISOTime());
+ }
+}
+
+#endif // wxUSE_TIMEPICKCTRL
+
// ----------------------------------------------------------------------------
// MyPanel
// ----------------------------------------------------------------------------
@@ -833,34 +888,18 @@ void MyPanel::LimitDateRange(bool on)
}
// ----------------------------------------------------------------------------
-// MyDialog
+// MyDateDialog
// ----------------------------------------------------------------------------
#if wxUSE_DATEPICKCTRL
-MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle)
+BEGIN_EVENT_TABLE(MyDateDialog, wxDialog)
+ EVT_DATE_CHANGED(wxID_ANY, MyDateDialog::OnDateChange)
+END_EVENT_TABLE()
+
+MyDateDialog::MyDateDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle)
: wxDialog(parent, wxID_ANY, wxString(wxT("Calendar: Choose a date")))
{
- wxStdDialogButtonSizer *sizerBtns = new wxStdDialogButtonSizer;
- sizerBtns->AddButton(new wxButton(this, wxID_OK));
- sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
- sizerBtns->Realize();
-
- wxSizer *sizerText = new wxBoxSizer(wxHORIZONTAL);
- sizerText->Add(new wxStaticText(this, wxID_ANY, wxT("Date in ISO format: ")),
- wxSizerFlags().Border().Align(wxALIGN_CENTRE_VERTICAL));
- m_text = new wxTextCtrl(this, wxID_ANY);
- sizerText->Add(m_text, wxSizerFlags().
- Expand().Border().Align(wxALIGN_CENTRE_VERTICAL));
-
- wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
- sizerTop->Add(new wxStaticText
- (
- this, wxID_ANY,
- wxT("Enter your birthday date (not before 20th century):")
- ),
- wxSizerFlags().Border());
-
#if wxUSE_DATEPICKCTRL_GENERIC
wxFrame *frame = (wxFrame *)wxGetTopLevelParent(parent);
if ( frame && frame->GetMenuBar()->IsChecked(Calendar_DatePicker_Generic) )
@@ -875,24 +914,86 @@ MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle)
dtpStyle);
m_datePicker->SetRange(wxDateTime(1, wxDateTime::Jan, 1900),
wxDefaultDateTime);
- sizerTop->Add(m_datePicker, wxSizerFlags().Expand().Border());
+ m_dateText = new wxStaticText(this, wxID_ANY, wxString());
- sizerTop->AddStretchSpacer(1);
- sizerTop->Add(sizerText);
+ const wxSizerFlags flags = wxSizerFlags().Centre().Border();
+ wxFlexGridSizer* const sizerMain = new wxFlexGridSizer(2);
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Enter &date:"), flags);
+ sizerMain->Add(m_datePicker, flags);
- sizerTop->Add(sizerBtns, wxSizerFlags().Centre().Border());
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Date in ISO format:"),
+ flags);
+ sizerMain->Add(m_dateText, flags);
+
+ wxStdDialogButtonSizer *sizerBtns = new wxStdDialogButtonSizer;
+ sizerBtns->AddButton(new wxButton(this, wxID_OK));
+ sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
+ sizerBtns->Realize();
+
+ wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(sizerMain, flags);
+ sizerTop->Add(sizerBtns, flags);
SetSizerAndFit(sizerTop);
- Layout();
}
-void MyDialog::OnDateChange(wxDateEvent& event)
+void MyDateDialog::OnDateChange(wxDateEvent& event)
{
const wxDateTime dt = event.GetDate();
if ( dt.IsValid() )
- m_text->SetValue(dt.FormatISODate());
+ m_dateText->SetLabel(dt.FormatISODate());
else
- m_text->SetValue(wxEmptyString);
+ m_dateText->SetLabel(wxEmptyString);
}
#endif // wxUSE_DATEPICKCTRL
+
+// ----------------------------------------------------------------------------
+// MyTimeDialog
+// ----------------------------------------------------------------------------
+
+#if wxUSE_TIMEPICKCTRL
+
+BEGIN_EVENT_TABLE(MyTimeDialog, wxDialog)
+ EVT_TIME_CHANGED(wxID_ANY, MyTimeDialog::OnTimeChange)
+END_EVENT_TABLE()
+
+MyTimeDialog::MyTimeDialog(wxWindow *parent)
+ : wxDialog(parent, wxID_ANY, wxString(wxT("Calendar: Choose time")))
+{
+#if wxUSE_TIMEPICKCTRL_GENERIC
+ wxFrame *frame = (wxFrame *)wxGetTopLevelParent(parent);
+ if ( frame && frame->GetMenuBar()->IsChecked(Calendar_TimePicker_Generic) )
+ m_timePicker = new wxTimePickerCtrlGeneric(this, wxID_ANY);
+ else
+#endif // wxUSE_TIMEPICKCTRL_GENERIC
+ m_timePicker = new wxTimePickerCtrl(this, wxID_ANY);
+ m_timeText = new wxStaticText(this, wxID_ANY, wxString());
+
+ const wxSizerFlags flags = wxSizerFlags().Centre().Border();
+ wxFlexGridSizer* const sizerMain = new wxFlexGridSizer(2);
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Enter &time:"), flags);
+ sizerMain->Add(m_timePicker, flags);
+
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Time in ISO format:"),
+ flags);
+ sizerMain->Add(m_timeText, flags);
+
+ wxStdDialogButtonSizer* sizerBtns = new wxStdDialogButtonSizer;
+ sizerBtns->AddButton(new wxButton(this, wxID_OK));
+ sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
+ sizerBtns->Realize();
+
+ wxSizer* sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(sizerMain, flags);
+ sizerTop->Add(sizerBtns, flags);
+
+ SetSizerAndFit(sizerTop);
+}
+
+void MyTimeDialog::OnTimeChange(wxDateEvent& event)
+{
+ m_timeText->SetLabel(event.GetDate().FormatISOTime());
+}
+
+#endif // wxUSE_TIMEPICKCTRL
diff --git a/setup.h.in b/setup.h.in
index fc43f2c17b..26ae556bdb 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -330,10 +330,17 @@
#define wxUSE_WEBVIEW 0
+#ifdef __WXMSW__
+#define wxUSE_WEBVIEW_IE 0
+#else
+#define wxUSE_WEBVIEW_IE 0
+#endif
+
+#if defined(__WXGTK__) || defined(__WXOSX__)
#define wxUSE_WEBVIEW_WEBKIT 0
-
-#define wxUSE_WEBVIEW_IE 0
-
+#else
+#define wxUSE_WEBVIEW_WEBKIT 0
+#endif
#ifdef _MSC_VER
@@ -404,6 +411,7 @@
#define wxUSE_STATTEXT 0
#define wxUSE_STATBMP 0
#define wxUSE_TEXTCTRL 0
+#define wxUSE_TIMEPICKCTRL 0
#define wxUSE_TOGGLEBTN 0
#define wxUSE_TREECTRL 0
#define wxUSE_TREELISTCTRL 0
@@ -671,6 +679,8 @@
#define wxUSE_DATEPICKCTRL_GENERIC 0
+#define wxUSE_TIMEPICKCTRL_GENERIC 0
+
#define wxUSE_CRASHREPORT 0
/* --- end MSW options --- */
diff --git a/src/common/calctrlcmn.cpp b/src/common/calctrlcmn.cpp
index b39628fb9a..ecdd588087 100644
--- a/src/common/calctrlcmn.cpp
+++ b/src/common/calctrlcmn.cpp
@@ -16,13 +16,14 @@
#ifndef WX_PRECOMP
#endif //WX_PRECOMP
-#if wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL
+#if wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL
#include "wx/dateevt.h"
IMPLEMENT_DYNAMIC_CLASS(wxDateEvent, wxCommandEvent)
wxDEFINE_EVENT(wxEVT_DATE_CHANGED, wxDateEvent);
+wxDEFINE_EVENT(wxEVT_TIME_CHANGED, wxDateEvent);
-#endif // wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL
+#endif // wxUSE_CALENDARCTRL || wxUSE_DATEPICKCTRL || wxUSE_TIMEPICKCTRL
#if wxUSE_CALENDARCTRL
diff --git a/src/generic/timectrl.cpp b/src/generic/timectrl.cpp
new file mode 100644
index 0000000000..38218a6a62
--- /dev/null
+++ b/src/generic/timectrl.cpp
@@ -0,0 +1,672 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/generic/timectrl.cpp
+// Purpose: Generic implementation of wxTimePickerCtrl.
+// Author: Paul Breen, Vadim Zeitlin
+// Created: 2011-09-22
+// RCS-ID: $Id: wxhead.cpp,v 1.11 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_TIMEPICKCTRL
+
+#ifndef WX_PRECOMP
+ #include "wx/textctrl.h"
+#endif // WX_PRECOMP
+
+#include "wx/timectrl.h"
+
+// This class is only compiled if there is no native version or if we
+// explicitly want to use both the native and generic one (this is useful for
+// testing but not much otherwise and so by default we don't use the generic
+// implementation if a native one is available).
+#if !defined(wxHAS_NATIVE_TIMEPICKERCTRL) || wxUSE_TIMEPICKCTRL_GENERIC
+
+#include "wx/generic/timectrl.h"
+
+#include "wx/dateevt.h"
+#include "wx/spinbutt.h"
+
+#ifndef wxHAS_NATIVE_TIMEPICKERCTRL
+ IMPLEMENT_DYNAMIC_CLASS(wxTimePickerCtrl, wxControl)
+#endif
+
+// ----------------------------------------------------------------------------
+// Constants
+// ----------------------------------------------------------------------------
+
+enum
+{
+ // Horizontal margin between the text and spin control.
+ HMARGIN_TEXT_SPIN = 2
+};
+
+// ----------------------------------------------------------------------------
+// wxTimePickerGenericImpl: used to implement wxTimePickerCtrlGeneric
+// ----------------------------------------------------------------------------
+
+class wxTimePickerGenericImpl : public wxEvtHandler
+{
+public:
+ wxTimePickerGenericImpl(wxTimePickerCtrlGeneric* ctrl)
+ {
+ m_text = new wxTextCtrl(ctrl, wxID_ANY, wxString());
+
+ // As this text can't be edited, don't use the standard cursor for it
+ // to avoid misleading the user. Ideally we'd also hide the caret but
+ // this is not currently supported by wxTextCtrl.
+ m_text->SetCursor(wxCURSOR_ARROW);
+
+ m_btn = new wxSpinButton(ctrl);
+
+ m_currentField = Field_Hour;
+ m_isFirstDigit = true;
+
+ // We don't support arbitrary formats currently as this requires
+ // significantly more work both here and also in wxLocale::GetInfo().
+ //
+ // For now just use either "%H:%M:%S" or "%I:%M:%S %p". It would be
+ // nice to add support to "%k" and "%l" (hours with leading blanks
+ // instead of zeros) too as this is the most common unsupported case in
+ // practice.
+ m_useAMPM = wxLocale::GetInfo(wxLOCALE_TIME_FMT).Contains("%p");
+
+ m_text->Connect
+ (
+ wxEVT_SET_FOCUS,
+ wxFocusEventHandler(wxTimePickerGenericImpl::OnTextSetFocus),
+ NULL,
+ this
+ );
+ m_text->Connect
+ (
+ wxEVT_KEY_DOWN,
+ wxKeyEventHandler(wxTimePickerGenericImpl::OnTextKeyDown),
+ NULL,
+ this
+ );
+ m_text->Connect
+ (
+ wxEVT_LEFT_DOWN,
+ wxMouseEventHandler(wxTimePickerGenericImpl::OnTextClick),
+ NULL,
+ this
+ );
+
+ m_btn->Connect
+ (
+ wxEVT_SPIN_UP,
+ wxSpinEventHandler(wxTimePickerGenericImpl::OnArrowUp),
+ NULL,
+ this
+ );
+ m_btn->Connect
+ (
+ wxEVT_SPIN_DOWN,
+ wxSpinEventHandler(wxTimePickerGenericImpl::OnArrowDown),
+ NULL,
+ this
+ );
+ }
+
+ // Set the new value.
+ void SetValue(const wxDateTime& time)
+ {
+ m_time = time.IsValid() ? time : wxDateTime::Now();
+
+ UpdateTextWithoutEvent();
+ }
+
+
+ // The text part of the control.
+ wxTextCtrl* m_text;
+
+ // The spin button used to change the text fields.
+ wxSpinButton* m_btn;
+
+ // The current time (date part is ignored).
+ wxDateTime m_time;
+
+private:
+ // The logical fields of the text control (AM/PM one may not be present).
+ enum Field
+ {
+ Field_Hour,
+ Field_Min,
+ Field_Sec,
+ Field_AMPM,
+ Field_Max
+ };
+
+ // Direction of change of time fields.
+ enum Direction
+ {
+ // Notice that the enum elements values matter.
+ Dir_Down = -1,
+ Dir_Up = +1
+ };
+
+ // A range of character positions ("from" is inclusive, "to" -- exclusive).
+ struct CharRange
+ {
+ int from,
+ to;
+ };
+
+ // Event handlers for various events in our controls.
+ void OnTextSetFocus(wxFocusEvent& event)
+ {
+ HighlightCurrentField();
+
+ event.Skip();
+ }
+
+ // Keyboard interface here is modelled over MSW native control and may need
+ // adjustments for other platforms.
+ void OnTextKeyDown(wxKeyEvent& event)
+ {
+ const int key = event.GetKeyCode();
+
+ switch ( key )
+ {
+ case WXK_DOWN:
+ ChangeCurrentFieldBy1(Dir_Down);
+ break;
+
+ case WXK_UP:
+ ChangeCurrentFieldBy1(Dir_Up);
+ break;
+
+ case WXK_LEFT:
+ CycleCurrentField(Dir_Down);
+ break;
+
+ case WXK_RIGHT:
+ CycleCurrentField(Dir_Up);
+ break;
+
+ case WXK_HOME:
+ ResetCurrentField(Dir_Down);
+ break;
+
+ case WXK_END:
+ ResetCurrentField(Dir_Up);
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ // The digits work in all keys except AM/PM.
+ if ( m_currentField != Field_AMPM )
+ {
+ AppendDigitToCurrentField(key - '0');
+ }
+ break;
+
+ case 'A':
+ case 'P':
+ // These keys only work to toggle AM/PM field.
+ if ( m_currentField == Field_AMPM )
+ {
+ unsigned hour = m_time.GetHour();
+ if ( key == 'A' )
+ {
+ if ( hour >= 12 )
+ hour -= 12;
+ }
+ else // PM
+ {
+ if ( hour < 12 )
+ hour += 12;
+ }
+
+ if ( hour != m_time.GetHour() )
+ {
+ m_time.SetHour(hour);
+ UpdateText();
+ }
+ }
+ break;
+
+ // Do not skip the other events, just consume them to prevent the
+ // user from editing the text directly.
+ }
+ }
+
+ void OnTextClick(wxMouseEvent& event)
+ {
+ Field field wxDUMMY_INITIALIZE(Field_Max);
+ long pos;
+ switch ( m_text->HitTest(event.GetPosition(), &pos) )
+ {
+ case wxTE_HT_UNKNOWN:
+ // Don't do anything, it's better than doing something wrong.
+ return;
+
+ case wxTE_HT_BEFORE:
+ // Select the first field.
+ field = Field_Hour;
+ break;
+
+ case wxTE_HT_ON_TEXT:
+ // Find the field containing this position.
+ for ( field = Field_Hour; field <= GetLastField(); )
+ {
+ const CharRange range = GetFieldRange(field);
+
+ // Normally the "to" end is exclusive but we want to give
+ // focus to some field when the user clicks between them so
+ // count it as part of the preceding field here.
+ if ( range.from <= pos && pos <= range.to )
+ break;
+
+ field = static_cast(field + 1);
+ }
+ break;
+
+ case wxTE_HT_BELOW:
+ // This shouldn't happen for single line control.
+ wxFAIL_MSG( "Unreachable" );
+ // fall through
+
+ case wxTE_HT_BEYOND:
+ // Select the last field.
+ field = GetLastField();
+ break;
+ }
+
+ ChangeCurrentField(field);
+
+ // As we don't skip the event, we also prevent the system from setting
+ // focus to this control as it does by default, so do it manually.
+ m_text->SetFocus();
+ }
+
+ void OnArrowUp(wxSpinEvent& WXUNUSED(event))
+ {
+ ChangeCurrentFieldBy1(Dir_Up);
+
+ m_text->SetFocus();
+ }
+
+ void OnArrowDown(wxSpinEvent& WXUNUSED(event))
+ {
+ ChangeCurrentFieldBy1(Dir_Down);
+
+ m_text->SetFocus();
+ }
+
+
+ // Get the range of the given field in character positions ("from" is
+ // inclusive, "to" exclusive).
+ static CharRange GetFieldRange(Field field)
+ {
+ // Currently we can just hard code the ranges as they are the same for
+ // both supported formats, if we want to support arbitrary formats in
+ // the future, we'd need to determine them dynamically by examining the
+ // format here.
+ static const CharRange ranges[] =
+ {
+ { 0, 2 },
+ { 3, 5 },
+ { 6, 8 },
+ { 9, 11},
+ };
+
+ wxCOMPILE_TIME_ASSERT( WXSIZEOF(ranges) == Field_Max,
+ FieldRangesMismatch );
+
+ return ranges[field];
+ }
+
+ // Get the last field used depending on m_useAMPM.
+ Field GetLastField() const
+ {
+ return m_useAMPM ? Field_AMPM : Field_Sec;
+ }
+
+ // Change the current field. For convenience, accept int field here as this
+ // allows us to use arithmetic operations in the caller.
+ void ChangeCurrentField(int field)
+ {
+ if ( field == m_currentField )
+ return;
+
+ wxCHECK_RET( field <= GetLastField(), "Invalid field" );
+
+ m_currentField = static_cast(field);
+ m_isFirstDigit = true;
+
+ HighlightCurrentField();
+ }
+
+ // Go to the next (Dir_Up) or previous (Dir_Down) field, wrapping if
+ // necessary.
+ void CycleCurrentField(Direction dir)
+ {
+ const unsigned numFields = GetLastField() + 1;
+
+ ChangeCurrentField((m_currentField + numFields + dir) % numFields);
+ }
+
+ // Select the currently actively field.
+ void HighlightCurrentField()
+ {
+ const CharRange range = GetFieldRange(m_currentField);
+
+ m_text->SetSelection(range.from, range.to);
+ }
+
+ // Decrement or increment the value of the current field (wrapping if
+ // necessary).
+ void ChangeCurrentFieldBy1(Direction dir)
+ {
+ switch ( m_currentField )
+ {
+ case Field_Hour:
+ m_time.SetHour((m_time.GetHour() + 24 + dir) % 24);
+ break;
+
+ case Field_Min:
+ m_time.SetMinute((m_time.GetMinute() + 60 + dir) % 60);
+ break;
+
+ case Field_Sec:
+ m_time.SetSecond((m_time.GetSecond() + 60 + dir) % 60);
+ break;
+
+ case Field_AMPM:
+ m_time.SetHour((m_time.GetHour() + 12) % 24);
+ break;
+
+ case Field_Max:
+ wxFAIL_MSG( "Invalid field" );
+ }
+
+ UpdateText();
+ }
+
+ // Set the current field to its minimal or maximal value.
+ void ResetCurrentField(Direction dir)
+ {
+ switch ( m_currentField )
+ {
+ case Field_Hour:
+ case Field_AMPM:
+ // In 12-hour mode setting the hour to the minimal value
+ // also changes the suffix to AM and, correspondingly,
+ // setting it to the maximal one changes the suffix to PM.
+ // And, for consistency with the native MSW behaviour, we
+ // also do the same thing when changing AM/PM field itself,
+ // so change hours in any case.
+ m_time.SetHour(dir == Dir_Down ? 0 : 23);
+ break;
+
+ case Field_Min:
+ m_time.SetMinute(dir == Dir_Down ? 0 : 59);
+ break;
+
+ case Field_Sec:
+ m_time.SetSecond(dir == Dir_Down ? 0 : 59);
+ break;
+
+ case Field_Max:
+ wxFAIL_MSG( "Invalid field" );
+ }
+
+ UpdateText();
+ }
+
+ // Append the given digit (from 0 to 9) to the current value of the current
+ // field.
+ void AppendDigitToCurrentField(int n)
+ {
+ bool moveToNextField = false;
+
+ if ( !m_isFirstDigit )
+ {
+ // The first digit simply replaces the existing field contents,
+ // but the second one should be combined with the previous one,
+ // otherwise entering 2-digit numbers would be impossible.
+ int currentValue wxDUMMY_INITIALIZE(0),
+ maxValue wxDUMMY_INITIALIZE(0);
+
+ switch ( m_currentField )
+ {
+ case Field_Hour:
+ currentValue = m_time.GetHour();
+ maxValue = 23;
+ break;
+
+ case Field_Min:
+ currentValue = m_time.GetMinute();
+ maxValue = 59;
+ break;
+
+ case Field_Sec:
+ currentValue = m_time.GetSecond();
+ maxValue = 59;
+ break;
+
+ case Field_AMPM:
+ case Field_Max:
+ wxFAIL_MSG( "Invalid field" );
+ }
+
+ // Check if the new value is acceptable. If not, we just handle
+ // this digit as if it were the first one.
+ int newValue = currentValue*10 + n;
+ if ( newValue < maxValue )
+ {
+ n = newValue;
+
+ // If we're not on the seconds field, advance to the next one.
+ // This makes it more convenient to enter times as you can just
+ // press all digits one after one without touching the cursor
+ // arrow keys at all.
+ //
+ // Notice that MSW native control doesn't do this but it seems
+ // so useful that we intentionally diverge from it here.
+ moveToNextField = true;
+
+ // We entered both digits so the next one will be "first" again.
+ m_isFirstDigit = true;
+ }
+ }
+ else // First digit entered.
+ {
+ // The next one won't be first any more.
+ m_isFirstDigit = false;
+ }
+
+ switch ( m_currentField )
+ {
+ case Field_Hour:
+ m_time.SetHour(n);
+ break;
+
+ case Field_Min:
+ m_time.SetMinute(n);
+ break;
+
+ case Field_Sec:
+ m_time.SetSecond(n);
+ break;
+
+ case Field_AMPM:
+ case Field_Max:
+ wxFAIL_MSG( "Invalid field" );
+ }
+
+ if ( moveToNextField && m_currentField < Field_Sec )
+ CycleCurrentField(Dir_Up);
+
+ UpdateText();
+ }
+
+ // Update the text value to correspond to the current time. By default also
+ // generate an event but this can be avoided by calling the "WithoutEvent"
+ // variant.
+ void UpdateText()
+ {
+ UpdateTextWithoutEvent();
+
+ wxWindow* const ctrl = m_text->GetParent();
+
+ wxDateEvent event(ctrl, m_time, wxEVT_TIME_CHANGED);
+ ctrl->HandleWindowEvent(event);
+ }
+
+ void UpdateTextWithoutEvent()
+ {
+ m_text->SetValue(m_time.Format(m_useAMPM ? "%I:%M:%S %p" : "%H:%M:%S"));
+
+ HighlightCurrentField();
+ }
+
+
+ // The current field of the text control: this is the one affected by
+ // pressing arrow keys or spin button.
+ Field m_currentField;
+
+ // Flag indicating whether we use AM/PM indicator or not.
+ bool m_useAMPM;
+
+ // Flag indicating whether the next digit pressed by user will be the first
+ // digit of the current field or the second one. This is necessary because
+ // the first digit replaces the current field contents while the second one
+ // is appended to it (if possible, e.g. pressing '7' in a field already
+ // containing '8' will still replace it as "78" would be invalid).
+ bool m_isFirstDigit;
+
+ wxDECLARE_NO_COPY_CLASS(wxTimePickerGenericImpl);
+};
+
+// ============================================================================
+// wxTimePickerCtrlGeneric implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxTimePickerCtrlGeneric creation
+// ----------------------------------------------------------------------------
+
+void wxTimePickerCtrlGeneric::Init()
+{
+ m_impl = NULL;
+}
+
+bool
+wxTimePickerCtrlGeneric::Create(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxValidator& validator,
+ const wxString& name)
+{
+ // The text control we use already has a border, so we don't need one
+ // ourselves.
+ style &= ~wxBORDER_MASK;
+ style |= wxBORDER_NONE;
+
+ if ( !Base::Create(parent, id, pos, size, style, validator, name) )
+ return false;
+
+ m_impl = new wxTimePickerGenericImpl(this);
+ m_impl->SetValue(date);
+
+ InvalidateBestSize();
+ SetInitialSize(size);
+
+ return true;
+}
+
+wxTimePickerCtrlGeneric::~wxTimePickerCtrlGeneric()
+{
+ delete m_impl;
+}
+
+wxWindowList wxTimePickerCtrlGeneric::GetCompositeWindowParts() const
+{
+ wxWindowList parts;
+ if ( m_impl )
+ {
+ parts.push_back(m_impl->m_text);
+ parts.push_back(m_impl->m_btn);
+ }
+ return parts;
+}
+
+// ----------------------------------------------------------------------------
+// wxTimePickerCtrlGeneric value
+// ----------------------------------------------------------------------------
+
+void wxTimePickerCtrlGeneric::SetValue(const wxDateTime& date)
+{
+ wxCHECK_RET( m_impl, "Must create first" );
+
+ m_impl->SetValue(date);
+}
+
+wxDateTime wxTimePickerCtrlGeneric::GetValue() const
+{
+ wxCHECK_MSG( m_impl, wxDateTime(), "Must create first" );
+
+ return m_impl->m_time;
+}
+
+// ----------------------------------------------------------------------------
+// wxTimePickerCtrlGeneric geometry
+// ----------------------------------------------------------------------------
+
+void wxTimePickerCtrlGeneric::DoMoveWindow(int x, int y, int width, int height)
+{
+ Base::DoMoveWindow(x, y, width, height);
+
+ if ( !m_impl )
+ return;
+
+ const int widthBtn = m_impl->m_btn->GetSize().x;
+ const int widthText = width - widthBtn - HMARGIN_TEXT_SPIN;
+
+ m_impl->m_text->SetSize(0, 0, widthText, height);
+ m_impl->m_btn->SetSize(widthText + HMARGIN_TEXT_SPIN, 0, widthBtn, height);
+}
+
+wxSize wxTimePickerCtrlGeneric::DoGetBestSize() const
+{
+ if ( !m_impl )
+ return Base::DoGetBestSize();
+
+ wxSize size = m_impl->m_text->GetBestSize();
+ size.x += m_impl->m_btn->GetBestSize().x + HMARGIN_TEXT_SPIN;
+
+ return size;
+}
+
+#endif // !wxHAS_NATIVE_TIMEPICKERCTRL || wxUSE_TIMEPICKCTRL_GENERIC
+
+#endif // wxUSE_TIMEPICKCTRL
diff --git a/src/msw/timectrl.cpp b/src/msw/timectrl.cpp
new file mode 100644
index 0000000000..86951d52d3
--- /dev/null
+++ b/src/msw/timectrl.cpp
@@ -0,0 +1,60 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/msw/timectrl.cpp
+// Purpose: wxTimePickerCtrl implementation
+// Author: Vadim Zeitlin
+// Created: 2005-01-09
+// RCS-ID: $Id$
+// Copyright: (c) 2005 Vadim Zeitlin
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_DATEPICKCTRL
+
+#ifndef WX_PRECOMP
+#endif
+
+#include "wx/timectrl.h"
+#include "wx/dateevt.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxTimePickerCtrl, wxControl)
+
+// ============================================================================
+// wxTimePickerCtrl implementation
+// ============================================================================
+
+WXDWORD wxTimePickerCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
+{
+ WXDWORD styleMSW = wxTimePickerCtrlBase::MSWGetStyle(style, exstyle);
+
+ styleMSW |= DTS_TIMEFORMAT;
+
+ return styleMSW;
+}
+
+wxLocaleInfo wxTimePickerCtrl::MSWGetFormat() const
+{
+ return wxLOCALE_TIME_FMT;
+}
+
+bool wxTimePickerCtrl::MSWOnDateTimeChange(const NMDATETIMECHANGE& dtch)
+{
+ m_date.SetFromMSWSysTime(dtch.st);
+
+ wxDateEvent event(this, m_date, wxEVT_TIME_CHANGED);
+ return HandleWindowEvent(event);
+}
+#endif // wxUSE_DATEPICKCTRL