From 569c7d8ccb0c3f350b50f0f8435b6c6ac3d78cc8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 29 Sep 2011 13:43:15 +0000 Subject: [PATCH] Add wxTimePickerCtrl class. Implement wxTimePickerCtrl natively for MSW and add a generic implementation (very loosely based on the original class by Paul Breen) for the other platforms. Also update the calendar sample to show the new control. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 78 ++- build/bakefiles/files.bkl | 5 + build/msw/makefile.bcc | 88 ++- build/msw/makefile.gcc | 88 ++- build/msw/makefile.vc | 88 ++- build/msw/makefile.wat | 88 ++- build/msw/wx_adv.dsp | 51 ++ build/msw/wx_core.dsp | 12 + build/msw/wx_vc7_adv.vcproj | 99 +++ build/msw/wx_vc7_core.vcproj | 9 + build/msw/wx_vc8_adv.vcproj | 132 ++++ build/msw/wx_vc8_core.vcproj | 12 + build/msw/wx_vc9_adv.vcproj | 132 ++++ build/msw/wx_vc9_core.vcproj | 12 + configure | 54 ++ configure.in | 7 + docs/changes.txt | 1 + docs/doxygen/images/wxmsw/timepickerctrl.png | Bin 0 -> 1065 bytes include/wx/chkconf.h | 14 +- include/wx/dateevt.h | 6 +- include/wx/datetimectrl.h | 4 +- include/wx/generic/timectrl.h | 93 +++ include/wx/motif/setup0.h | 1 + include/wx/msw/setup0.h | 9 + include/wx/msw/setup_inc.h | 8 + include/wx/msw/timectrl.h | 61 ++ include/wx/msw/wince/setup.h | 1 + include/wx/os2/setup0.h | 1 + include/wx/osx/setup0.h | 1 + include/wx/palmos/setup0.h | 1 + include/wx/setup_inc.h | 1 + include/wx/timectrl.h | 88 +++ include/wx/univ/setup0.h | 1 + interface/wx/timectrl.h | 108 +++ samples/calendar/calendar.cpp | 199 ++++-- setup.h.in | 16 +- src/common/calctrlcmn.cpp | 5 +- src/generic/timectrl.cpp | 672 +++++++++++++++++++ src/msw/timectrl.cpp | 60 ++ 39 files changed, 2140 insertions(+), 166 deletions(-) create mode 100644 docs/doxygen/images/wxmsw/timepickerctrl.png create mode 100644 include/wx/generic/timectrl.h create mode 100644 include/wx/msw/timectrl.h create mode 100644 include/wx/timectrl.h create mode 100644 interface/wx/timectrl.h create mode 100644 src/generic/timectrl.cpp create mode 100644 src/msw/timectrl.cpp 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 0000000000000000000000000000000000000000..6cc4c99876a8391ea712b1befd1c45359bf4c5f1 GIT binary patch literal 1065 zcmV+^1lIeBP)UkTl7Mg?;ZkzaR6y`{up(+g-7|yv$MMvHc#ve$wE)%@l84{_W2j zw^#OeG<(DIEuph7J=+_8X5IV~O~=m1PIjxu_jg!(!))p9?|+8+$G}phoBi}XF*4F9=G&VN+l*2IdfRxfV$?qjbeTtOQmvuZ%%6uoxy~|ubbN$dBtoYC^qC#LBfDIyQ2qAF3^eDGh#JXo0+McSk8YK+MI|nE3u8dU&0bJ;Y`$DBFD)%O?GMjX zU2^rNrlxx4GaKFt3%q{{P6Q}kE?M+-~zun*`^a6i6>p|!PjyD1HUYU>HEFTjP$Sul=t%-vVFyEZSXo(lt@qV!#fL&6ryXGa+t(RghJ|1yt$`+iV#-L5XRVra zRksS^gcIWi`>;Wc8gh6ZQ|cDF5NTO(H;8Q!3Wa>7OMUv@d9Wq;&0l$iQJA<|PjSfS z=Y^Vq1Q1m*OQ6J~hFzdXO9vSCVnZ@Nj~N37H3lMC?*_30&b}4hO4#KeO>ei#{8&5J z6()YDr?|^l$~2@cND196b)dv`i@uzynWfs`+9i;Iv^9mM&DezVIh5h8*$hTX=~j3n zU)tVF7d~FUb!~-LWxo4mx{q;gqkx^g=2yC|{qOB<$fOMNB!s#?ph6PTPFq9`@(Dnw zWFv{VS<05uLXCphh}5=jH4yh0A36Wr(8#pY{`|t}+T-0tIKSllT>AI)i!BGVw$DvW zzWruob#>J%e(=#}-+lF|S7~l;zVcJvS@Ylj^2eDMnuCwJ1BX-Ld6jRz81gBbRCouM za=Bbvz}3e1lq&O&;3K_7cCE-caCndIZSmk+-E8UZE)C{U$91~C+yC{?{l$CxI- +// 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