diff --git a/Makefile.in b/Makefile.in
index e1e3f7dd69..5946f47040 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2923,9 +2923,12 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION__ADVANCED_PLATFORM_HDR = \
wx/unix/taskbarx11.h \
wx/generic/animate.h
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION__ADVANCED_PLATFORM_HDR)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_HDR \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = wx/unix/joystick.h wx/unix/sound.h \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ wx/unix/taskbarx11.h
+COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_HDR = \
+ wx/unix/joystick.h \
+ wx/unix/sound.h \
+ wx/unix/taskbarx11.h \
+ wx/gtk/hildon/notifmsg.h
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_HDR)
COND_TOOLKIT_MAC_ADVANCED_PLATFORM_HDR = \
wx/generic/animate.h \
wx/mac/carbon/drawer.h \
@@ -2979,6 +2982,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/generic/helpext.h \
wx/generic/hyperlink.h \
wx/generic/laywin.h \
+ wx/generic/notifmsg.h \
wx/generic/propdlg.h \
wx/generic/sashwin.h \
wx/generic/splash.h \
@@ -2987,6 +2991,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/hyperlink.h \
wx/joystick.h \
wx/laywin.h \
+ wx/notifmsg.h \
wx/odcombo.h \
wx/propdlg.h \
wx/sashwin.h \
@@ -3021,6 +3026,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/generic/helpext.h \
wx/generic/hyperlink.h \
wx/generic/laywin.h \
+ wx/generic/notifmsg.h \
wx/generic/propdlg.h \
wx/generic/sashwin.h \
wx/generic/splash.h \
@@ -3029,6 +3035,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/hyperlink.h \
wx/joystick.h \
wx/laywin.h \
+ wx/notifmsg.h \
wx/odcombo.h \
wx/propdlg.h \
wx/sashwin.h \
@@ -5255,6 +5262,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_helpext.o \
monodll_hyperlinkg.o \
monodll_laywin.o \
+ monodll_notifmsgg.o \
monodll_odcombo.o \
monodll_propdlg.o \
monodll_sashwin.o \
@@ -5280,6 +5288,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_helpext.o \
monodll_hyperlinkg.o \
monodll_laywin.o \
+ monodll_notifmsgg.o \
monodll_odcombo.o \
monodll_propdlg.o \
monodll_sashwin.o \
@@ -7148,6 +7157,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_helpext.o \
monolib_hyperlinkg.o \
monolib_laywin.o \
+ monolib_notifmsgg.o \
monolib_odcombo.o \
monolib_propdlg.o \
monolib_sashwin.o \
@@ -7173,6 +7183,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_helpext.o \
monolib_hyperlinkg.o \
monolib_laywin.o \
+ monolib_notifmsgg.o \
monolib_odcombo.o \
monolib_propdlg.o \
monolib_sashwin.o \
@@ -10871,6 +10882,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_helpext.o \
advdll_hyperlinkg.o \
advdll_laywin.o \
+ advdll_notifmsgg.o \
advdll_odcombo.o \
advdll_propdlg.o \
advdll_sashwin.o \
@@ -10896,6 +10908,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_helpext.o \
advdll_hyperlinkg.o \
advdll_laywin.o \
+ advdll_notifmsgg.o \
advdll_odcombo.o \
advdll_propdlg.o \
advdll_sashwin.o \
@@ -10942,6 +10955,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_helpext.o \
advlib_hyperlinkg.o \
advlib_laywin.o \
+ advlib_notifmsgg.o \
advlib_odcombo.o \
advlib_propdlg.o \
advlib_sashwin.o \
@@ -10967,6 +10981,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_helpext.o \
advlib_hyperlinkg.o \
advlib_laywin.o \
+ advlib_notifmsgg.o \
advlib_odcombo.o \
advlib_propdlg.o \
advlib_sashwin.o \
@@ -11699,7 +11714,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_sound.o \
monodll_taskbarx11.o \
monodll_taskbar.o \
- monodll_eggtrayicon.o
+ monodll_eggtrayicon.o \
+ monodll_notifmsg.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_taskbarcmn.o \
@@ -11772,7 +11788,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_sound.o \
monolib_taskbarx11.o \
monolib_taskbar.o \
- monolib_eggtrayicon.o
+ monolib_eggtrayicon.o \
+ monolib_notifmsg.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_taskbarcmn.o \
@@ -11845,7 +11862,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
advdll_sound.o \
advdll_taskbarx11.o \
advdll_taskbar.o \
- advdll_eggtrayicon.o
+ advdll_eggtrayicon.o \
+ advdll_notifmsg.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
advdll_taskbarcmn.o \
@@ -11909,7 +11927,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
advlib_sound.o \
advlib_taskbarx11.o \
advlib_taskbar.o \
- advlib_eggtrayicon.o
+ advlib_eggtrayicon.o \
+ advlib_notifmsg.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
advlib_taskbarcmn.o \
@@ -17682,6 +17701,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_laywin.o: $(srcdir)/src/generic/laywin.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
+@COND_USE_GUI_1@monodll_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
@COND_USE_GUI_1@monodll_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
@@ -17838,6 +17860,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(MONODLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
@@ -22149,6 +22174,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_laywin.o: $(srcdir)/src/generic/laywin.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
+@COND_USE_GUI_1@monolib_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
@COND_USE_GUI_1@monolib_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
@@ -22305,6 +22333,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(MONOLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
@@ -30222,6 +30253,9 @@ advdll_hyperlinkg.o: $(srcdir)/src/generic/hyperlinkg.cpp $(ADVDLL_ODEP)
advdll_laywin.o: $(srcdir)/src/generic/laywin.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
+advdll_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
advdll_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
@@ -30408,6 +30442,9 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@advdll_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(ADVDLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ $(CCC) -c -o $@ $(ADVDLL_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advdll_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
@COND_TOOLKIT_MSW_WXUNIV_0@advdll_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_MSW_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
@@ -30468,6 +30505,9 @@ advlib_hyperlinkg.o: $(srcdir)/src/generic/hyperlinkg.cpp $(ADVLIB_ODEP)
advlib_laywin.o: $(srcdir)/src/generic/laywin.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
+advlib_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
advlib_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
@@ -30654,6 +30694,9 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@advlib_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(ADVLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ $(CCC) -c -o $@ $(ADVLIB_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advlib_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
@COND_TOOLKIT_MSW_WXUNIV_0@advlib_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_MSW_WXUNIV_0@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 93ae093520..7485165a77 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -2789,6 +2789,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/generic/helpext.cpp
src/generic/hyperlinkg.cpp
src/generic/laywin.cpp
+ src/generic/notifmsgg.cpp
src/generic/odcombo.cpp
src/generic/propdlg.cpp
src/generic/sashwin.cpp
@@ -2818,6 +2819,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/generic/helpext.h
wx/generic/hyperlink.h
wx/generic/laywin.h
+ wx/generic/notifmsg.h
wx/generic/propdlg.h
wx/generic/sashwin.h
wx/generic/splash.h
@@ -2826,6 +2828,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/hyperlink.h
wx/joystick.h
wx/laywin.h
+ wx/notifmsg.h
wx/odcombo.h
wx/propdlg.h
wx/sashwin.h
@@ -2937,8 +2940,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/gtk/taskbar.cpp
src/gtk/eggtrayicon.c
+ src/gtk/hildon/notifmsg.cpp
+ wx/gtk/hildon/notifmsg.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index c07c6dc124..bb716c3b86 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -1930,6 +1930,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.obj \
$(OBJS)\monodll_hyperlinkg.obj \
$(OBJS)\monodll_laywin.obj \
+ $(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
@@ -1961,6 +1962,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.obj \
$(OBJS)\monodll_hyperlinkg.obj \
$(OBJS)\monodll_laywin.obj \
+ $(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
@@ -2569,6 +2571,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.obj \
$(OBJS)\monolib_hyperlinkg.obj \
$(OBJS)\monolib_laywin.obj \
+ $(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
@@ -2600,6 +2603,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.obj \
$(OBJS)\monolib_hyperlinkg.obj \
$(OBJS)\monolib_laywin.obj \
+ $(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
@@ -3597,6 +3601,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.obj \
$(OBJS)\advdll_hyperlinkg.obj \
$(OBJS)\advdll_laywin.obj \
+ $(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
@@ -3628,6 +3633,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.obj \
$(OBJS)\advdll_hyperlinkg.obj \
$(OBJS)\advdll_laywin.obj \
+ $(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
@@ -3663,6 +3669,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.obj \
$(OBJS)\advlib_hyperlinkg.obj \
$(OBJS)\advlib_laywin.obj \
+ $(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
@@ -3694,6 +3701,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.obj \
$(OBJS)\advlib_hyperlinkg.obj \
$(OBJS)\advlib_laywin.obj \
+ $(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
@@ -7129,6 +7137,11 @@ $(OBJS)\monodll_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -9219,6 +9232,11 @@ $(OBJS)\monolib_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -12653,6 +12671,9 @@ $(OBJS)\advdll_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advdll_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
@@ -12745,6 +12766,9 @@ $(OBJS)\advlib_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advlib_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index c31e781d8f..0f771555cf 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -1948,6 +1948,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.o \
$(OBJS)\monodll_hyperlinkg.o \
$(OBJS)\monodll_laywin.o \
+ $(OBJS)\monodll_notifmsgg.o \
$(OBJS)\monodll_odcombo.o \
$(OBJS)\monodll_propdlg.o \
$(OBJS)\monodll_sashwin.o \
@@ -1979,6 +1980,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.o \
$(OBJS)\monodll_hyperlinkg.o \
$(OBJS)\monodll_laywin.o \
+ $(OBJS)\monodll_notifmsgg.o \
$(OBJS)\monodll_odcombo.o \
$(OBJS)\monodll_propdlg.o \
$(OBJS)\monodll_sashwin.o \
@@ -2593,6 +2595,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.o \
$(OBJS)\monolib_hyperlinkg.o \
$(OBJS)\monolib_laywin.o \
+ $(OBJS)\monolib_notifmsgg.o \
$(OBJS)\monolib_odcombo.o \
$(OBJS)\monolib_propdlg.o \
$(OBJS)\monolib_sashwin.o \
@@ -2624,6 +2627,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.o \
$(OBJS)\monolib_hyperlinkg.o \
$(OBJS)\monolib_laywin.o \
+ $(OBJS)\monolib_notifmsgg.o \
$(OBJS)\monolib_odcombo.o \
$(OBJS)\monolib_propdlg.o \
$(OBJS)\monolib_sashwin.o \
@@ -3649,6 +3653,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.o \
$(OBJS)\advdll_hyperlinkg.o \
$(OBJS)\advdll_laywin.o \
+ $(OBJS)\advdll_notifmsgg.o \
$(OBJS)\advdll_odcombo.o \
$(OBJS)\advdll_propdlg.o \
$(OBJS)\advdll_sashwin.o \
@@ -3680,6 +3685,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.o \
$(OBJS)\advdll_hyperlinkg.o \
$(OBJS)\advdll_laywin.o \
+ $(OBJS)\advdll_notifmsgg.o \
$(OBJS)\advdll_odcombo.o \
$(OBJS)\advdll_propdlg.o \
$(OBJS)\advdll_sashwin.o \
@@ -3719,6 +3725,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.o \
$(OBJS)\advlib_hyperlinkg.o \
$(OBJS)\advlib_laywin.o \
+ $(OBJS)\advlib_notifmsgg.o \
$(OBJS)\advlib_odcombo.o \
$(OBJS)\advlib_propdlg.o \
$(OBJS)\advlib_sashwin.o \
@@ -3750,6 +3757,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.o \
$(OBJS)\advlib_hyperlinkg.o \
$(OBJS)\advlib_laywin.o \
+ $(OBJS)\advlib_notifmsgg.o \
$(OBJS)\advlib_odcombo.o \
$(OBJS)\advlib_propdlg.o \
$(OBJS)\advlib_sashwin.o \
@@ -7369,6 +7377,11 @@ $(OBJS)\monodll_laywin.o: ../../src/generic/laywin.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_odcombo.o: ../../src/generic/odcombo.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9561,6 +9574,11 @@ $(OBJS)\monolib_laywin.o: ../../src/generic/laywin.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_odcombo.o: ../../src/generic/odcombo.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -13197,6 +13215,9 @@ $(OBJS)\advdll_hyperlinkg.o: ../../src/generic/hyperlinkg.cpp
$(OBJS)\advdll_laywin.o: ../../src/generic/laywin.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_odcombo.o: ../../src/generic/odcombo.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -13289,6 +13310,9 @@ $(OBJS)\advlib_hyperlinkg.o: ../../src/generic/hyperlinkg.cpp
$(OBJS)\advlib_laywin.o: ../../src/generic/laywin.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_odcombo.o: ../../src/generic/odcombo.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index a05e194740..5a44c1aa4c 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -2104,6 +2104,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.obj \
$(OBJS)\monodll_hyperlinkg.obj \
$(OBJS)\monodll_laywin.obj \
+ $(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
@@ -2135,6 +2136,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_helpext.obj \
$(OBJS)\monodll_hyperlinkg.obj \
$(OBJS)\monodll_laywin.obj \
+ $(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
$(OBJS)\monodll_sashwin.obj \
@@ -2749,6 +2751,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.obj \
$(OBJS)\monolib_hyperlinkg.obj \
$(OBJS)\monolib_laywin.obj \
+ $(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
@@ -2780,6 +2783,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_helpext.obj \
$(OBJS)\monolib_hyperlinkg.obj \
$(OBJS)\monolib_laywin.obj \
+ $(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
$(OBJS)\monolib_sashwin.obj \
@@ -3819,6 +3823,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.obj \
$(OBJS)\advdll_hyperlinkg.obj \
$(OBJS)\advdll_laywin.obj \
+ $(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
@@ -3850,6 +3855,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_helpext.obj \
$(OBJS)\advdll_hyperlinkg.obj \
$(OBJS)\advdll_laywin.obj \
+ $(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
$(OBJS)\advdll_sashwin.obj \
@@ -3891,6 +3897,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.obj \
$(OBJS)\advlib_hyperlinkg.obj \
$(OBJS)\advlib_laywin.obj \
+ $(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
@@ -3922,6 +3929,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_helpext.obj \
$(OBJS)\advlib_hyperlinkg.obj \
$(OBJS)\advlib_laywin.obj \
+ $(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
$(OBJS)\advlib_sashwin.obj \
@@ -7461,6 +7469,11 @@ $(OBJS)\monodll_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -9551,6 +9564,11 @@ $(OBJS)\monolib_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -12985,6 +13003,9 @@ $(OBJS)\advdll_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advdll_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
@@ -13077,6 +13098,9 @@ $(OBJS)\advlib_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advlib_laywin.obj: ..\..\src\generic\laywin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index c82e9b4db1..8823b2ee9e 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -689,6 +689,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_helpext.obj &
$(OBJS)\monodll_hyperlinkg.obj &
$(OBJS)\monodll_laywin.obj &
+ $(OBJS)\monodll_notifmsgg.obj &
$(OBJS)\monodll_odcombo.obj &
$(OBJS)\monodll_propdlg.obj &
$(OBJS)\monodll_sashwin.obj &
@@ -720,6 +721,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_helpext.obj &
$(OBJS)\monodll_hyperlinkg.obj &
$(OBJS)\monodll_laywin.obj &
+ $(OBJS)\monodll_notifmsgg.obj &
$(OBJS)\monodll_odcombo.obj &
$(OBJS)\monodll_propdlg.obj &
$(OBJS)\monodll_sashwin.obj &
@@ -1339,6 +1341,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_helpext.obj &
$(OBJS)\monolib_hyperlinkg.obj &
$(OBJS)\monolib_laywin.obj &
+ $(OBJS)\monolib_notifmsgg.obj &
$(OBJS)\monolib_odcombo.obj &
$(OBJS)\monolib_propdlg.obj &
$(OBJS)\monolib_sashwin.obj &
@@ -1370,6 +1373,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_helpext.obj &
$(OBJS)\monolib_hyperlinkg.obj &
$(OBJS)\monolib_laywin.obj &
+ $(OBJS)\monolib_notifmsgg.obj &
$(OBJS)\monolib_odcombo.obj &
$(OBJS)\monolib_propdlg.obj &
$(OBJS)\monolib_sashwin.obj &
@@ -2411,6 +2415,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_helpext.obj &
$(OBJS)\advdll_hyperlinkg.obj &
$(OBJS)\advdll_laywin.obj &
+ $(OBJS)\advdll_notifmsgg.obj &
$(OBJS)\advdll_odcombo.obj &
$(OBJS)\advdll_propdlg.obj &
$(OBJS)\advdll_sashwin.obj &
@@ -2442,6 +2447,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_helpext.obj &
$(OBJS)\advdll_hyperlinkg.obj &
$(OBJS)\advdll_laywin.obj &
+ $(OBJS)\advdll_notifmsgg.obj &
$(OBJS)\advdll_odcombo.obj &
$(OBJS)\advdll_propdlg.obj &
$(OBJS)\advdll_sashwin.obj &
@@ -2483,6 +2489,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_helpext.obj &
$(OBJS)\advlib_hyperlinkg.obj &
$(OBJS)\advlib_laywin.obj &
+ $(OBJS)\advlib_notifmsgg.obj &
$(OBJS)\advlib_odcombo.obj &
$(OBJS)\advlib_propdlg.obj &
$(OBJS)\advlib_sashwin.obj &
@@ -2514,6 +2521,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_helpext.obj &
$(OBJS)\advlib_hyperlinkg.obj &
$(OBJS)\advlib_laywin.obj &
+ $(OBJS)\advlib_notifmsgg.obj &
$(OBJS)\advlib_odcombo.obj &
$(OBJS)\advlib_propdlg.obj &
$(OBJS)\advlib_sashwin.obj &
@@ -7603,6 +7611,11 @@ $(OBJS)\monodll_laywin.obj : .AUTODEPEND ..\..\src\generic\laywin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monodll_notifmsgg.obj : .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monodll_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -9795,6 +9808,11 @@ $(OBJS)\monolib_laywin.obj : .AUTODEPEND ..\..\src\generic\laywin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monolib_notifmsgg.obj : .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monolib_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -13431,6 +13449,9 @@ $(OBJS)\advdll_hyperlinkg.obj : .AUTODEPEND ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advdll_laywin.obj : .AUTODEPEND ..\..\src\generic\laywin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_notifmsgg.obj : .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -13523,6 +13544,9 @@ $(OBJS)\advlib_hyperlinkg.obj : .AUTODEPEND ..\..\src\generic\hyperlinkg.cpp
$(OBJS)\advlib_laywin.obj : .AUTODEPEND ..\..\src\generic\laywin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_notifmsgg.obj : .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
diff --git a/build/msw/wx_adv.dsp b/build/msw/wx_adv.dsp
index 387e2d3b3a..4a2778eaa0 100644
--- a/build/msw/wx_adv.dsp
+++ b/build/msw/wx_adv.dsp
@@ -727,6 +727,10 @@ SOURCE=..\..\src\generic\laywin.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\generic\notifmsgg.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\generic\odcombo.cpp
# End Source File
# Begin Source File
@@ -1264,6 +1268,10 @@ SOURCE=..\..\include\wx\generic\laywin.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\notifmsg.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\propdlg.h
# End Source File
# Begin Source File
@@ -1340,6 +1348,10 @@ SOURCE=..\..\include\wx\laywin.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\notifmsg.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\odcombo.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index f5df6be904..c95ed92121 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -8440,6 +8440,10 @@ SOURCE=..\..\include\wx\generic\notebook.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\notifmsg.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\numdlgg.h
# End Source File
# Begin Source File
@@ -9244,6 +9248,10 @@ SOURCE=..\..\include\wx\notebook.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\notifmsg.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\numdlg.h
# End Source File
# Begin Source File
diff --git a/configure b/configure
index f33124c9b4..fc39feac0f 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Id: configure.in 50116 2007-11-20 22:35:40Z VS .
+# From configure.in Id: configure.in 50135 2007-11-21 14:24:40Z VZ .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0.
#
@@ -1781,6 +1781,7 @@ Optional Features:
--enable-listbox use wxListBox class
--enable-listctrl use wxListCtrl class
--enable-notebook use wxNotebook class
+ --enable-notifmsg use wxNotificationMessage class
--enable-odcombobox use wxOwnerDrawnComboBox class
--enable-radiobox use wxRadioBox class
--enable-radiobtn use wxRadioButton class
@@ -10692,6 +10693,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}-notifmsg" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-notifmsg... $ECHO_C" >&6; }
+ # Check whether --enable-notifmsg was given.
+if test "${enable_notifmsg+set}" = set; then
+ enableval=$enable_notifmsg;
+ if test "$enableval" = yes; then
+ wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=yes'
+ else
+ wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=no'
+ fi
+
+else
+
+ wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=${'DEFAULT_wxUSE_NOTIFICATION_MESSAGE":-$defaultval}"
+
+fi
+
+
+ eval "$wx_cv_use_notifmsg"
+
+ if test x"$enablestring" = xdisable; then
+ if test $wxUSE_NOTIFICATION_MESSAGE = yes; then
+ result=no
+ else
+ result=yes
+ fi
+ else
+ result=$wxUSE_NOTIFICATION_MESSAGE
+ fi
+
+ { echo "$as_me:$LINENO: result: $result" >&5
+echo "${ECHO_T}$result" >&6; }
+
+
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@@ -45133,6 +45178,13 @@ _ACEOF
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS notebook"
fi
+if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define wxUSE_NOTIFICATION_MESSAGE 1
+_ACEOF
+
+fi
+
if test "$wxUSE_ODCOMBOBOX" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_ODCOMBOBOX 1
diff --git a/configure.in b/configure.in
index d578f98a35..0111e0580d 100644
--- a/configure.in
+++ b/configure.in
@@ -821,6 +821,7 @@ WX_ARG_FEATURE(listbook, [ --enable-listbook use wxListbook class], wx
WX_ARG_FEATURE(listbox, [ --enable-listbox use wxListBox class], wxUSE_LISTBOX)
WX_ARG_FEATURE(listctrl, [ --enable-listctrl use wxListCtrl class], wxUSE_LISTCTRL)
WX_ARG_FEATURE(notebook, [ --enable-notebook use wxNotebook class], wxUSE_NOTEBOOK)
+WX_ARG_FEATURE(notifmsg, [ --enable-notifmsg use wxNotificationMessage class], wxUSE_NOTIFICATION_MESSAGE)
WX_ARG_FEATURE(odcombobox, [ --enable-odcombobox use wxOwnerDrawnComboBox class], wxUSE_ODCOMBOBOX)
WX_ARG_FEATURE(radiobox, [ --enable-radiobox use wxRadioBox class], wxUSE_RADIOBOX)
WX_ARG_FEATURE(radiobtn, [ --enable-radiobtn use wxRadioButton class], wxUSE_RADIOBTN)
@@ -6508,6 +6509,10 @@ if test "$wxUSE_NOTEBOOK" = "yes"; then
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS notebook"
fi
+if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes"; then
+ AC_DEFINE(wxUSE_NOTIFICATION_MESSAGE)
+fi
+
if test "$wxUSE_ODCOMBOBOX" = "yes"; then
AC_DEFINE(wxUSE_ODCOMBOBOX)
USES_CONTROLS=1
diff --git a/docs/changes.txt b/docs/changes.txt
index fe6bb73f8d..757591fd5b 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -193,6 +193,7 @@ All (GUI):
- Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames()
- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
+- Added wxNotificationMessage class for non-intrusive notifications
- Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron).
- Added support for drop down toolbar buttons (Tim Kosse).
- Added support for labels for toolbar controls (Vince Harron).
diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex
index e19606d4bc..cfa0522bcc 100644
--- a/docs/latex/wx/classes.tex
+++ b/docs/latex/wx/classes.tex
@@ -291,6 +291,7 @@
\input notebook.tex
\input noteevt.tex
\input nbsizer.tex
+\input notifmsg.tex
\input notifevt.tex
\input object.tex
\input objectdataptr.tex
diff --git a/docs/latex/wx/notifmsg.tex b/docs/latex/wx/notifmsg.tex
new file mode 100644
index 0000000000..481f6ac428
--- /dev/null
+++ b/docs/latex/wx/notifmsg.tex
@@ -0,0 +1,94 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: notifmsg.tex
+%% Purpose: wxNotificationMessage documentation
+%% Author: Vadim Zeitlin
+%% Created: 2007-11-24
+%% RCS-ID: $Id: cmdlpars.tex 49199 2007-10-17 17:32:16Z VZ $
+%% Copyright: (c) 2007 Vadim Zeitlin
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxNotificationMessage}}\label{wxnotificationmessage}
+
+This class allows to show the user a message non intrusively. Currently it is
+implemented natively only for the Maemo platform and uses (non-modal) dialogs
+for the display of the notifications under the other platforms but it will be
+extended to use the platform-specific notifications in the other ports in the
+future.
+
+Notice that this class is not a window and so doesn't derive from wxWindow.
+
+\wxheading{Derived from}
+
+\helpref{wxEvtHandler}{wxevthandler}
+
+\wxheading{Include files}
+
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxNotificationMessage::wxNotificationMessage}\label{wxnotificationmessagewxnotificationmessage}
+
+\func{}{wxNotificationMessage}{\void}
+
+Default constructor, use \helpref{SetParent}{\wxnotificationmessagesetparent},
+\helpref{SetTitle}{wxnotificationmessagesettitle} and
+\helpref{SetMessage}{wxnotificationmessagesetmessage} to initialize the object
+before showing it.
+
+
+\func{}{wxNotificationMessage}{\param{const wxString\& }{title}, \param{const wxString\& }{message = wxString()}, \param{wxWindow* }{parent = NULL}}
+
+Create a notification object with the given title and message (the
+latter may be empty in which case only the title will be shown).
+
+
+\membersection{wxNotificationMessage::Close}\label{wxnotificationmessageclose}
+
+\func{bool}{Close}{\void}
+
+Hides the notification.
+
+Returns \true if it was hidden or \false if it couldn't be done (e.g. on some
+systems automatically hidden notifications can't be hidden manually)
+
+
+\membersection{wxNotificationMessage::SetMessage}\label{wxnotificationmessagesetmessage}
+
+\func{void}{SetMessage}{\param{const wxString\& }{message}}
+
+Set the main text of the notification.
+
+
+\membersection{wxNotificationMessage::SetParent}\label{wxnotificationmessagesetparent}
+
+\func{void}{SetParent}{\param{wxWindow* }{parent}}
+
+Set the parent for this notification: the notification will be associated with
+the top level parent of this window or, if this method is not called, with the
+main application window by default
+
+
+\membersection{wxNotificationMessage::SetTitle}\label{wxnotificationmessagesettitle}
+
+\func{void}{SetTitle}{\param{const wxString\& }{title}}
+
+Set the title, it must be a concise string, use
+\helpref{SetMessage}{wxnotificationmessagesetmessage} to give the user more
+details.
+
+
+\membersection{wxNotificationMessage::Show}\label{wxnotificationmessageshow}
+
+\func{bool}{Show}{\param{int }{timeout = Timeout\_Auto}}
+
+Show the notification to the user and hides it after timeout seconds
+pass. Special values \texttt{Timeout\_Auto} and \texttt{Timeout\_Never} can be
+used here, notice that you shouldn't rely on \arg{timeout} being exactly
+respected because the current platform may only support default timeout value
+and also because the user may be able to close the notification.
+
+Returns \false if an error occurred.
+
diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h
index 237b479b54..7ff4cb9010 100644
--- a/include/wx/chkconf.h
+++ b/include/wx/chkconf.h
@@ -741,6 +741,14 @@
# endif
#endif /* !defined(wxUSE_NOTEBOOK) */
+#ifndef wxUSE_NOTIFICATION_MESSAGE
+# ifdef wxABORT_ON_CONFIG_ERROR
+# error "wxUSE_NOTIFICATION_MESSAGE must be defined."
+# else
+# define wxUSE_NOTIFICATION_MESSAGE 0
+# endif
+#endif /* !defined(wxUSE_NOTIFICATION_MESSAGE) */
+
#ifndef wxUSE_ODCOMBOBOX
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_ODCOMBOBOX must be defined."
diff --git a/include/wx/generic/notifmsg.h b/include/wx/generic/notifmsg.h
new file mode 100644
index 0000000000..e4beca030e
--- /dev/null
+++ b/include/wx/generic/notifmsg.h
@@ -0,0 +1,60 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/notifmsg.h
+// Purpose: generic implementation of wxNotificationMessage
+// Author: Vadim Zeitlin
+// Created: 2007-11-24
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_NOTIFMSG_H_
+#define _WX_GENERIC_NOTIFMSG_H_
+
+class wxNotificationMessageDialog;
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxNotificationMessage : public wxNotificationMessageBase
+{
+public:
+ wxNotificationMessage() { Init(); }
+ wxNotificationMessage(const wxString& title,
+ const wxString& message = wxString(),
+ wxWindow *parent = NULL)
+ : wxNotificationMessageBase(title, message, parent)
+ {
+ Init();
+ }
+
+ virtual ~wxNotificationMessage();
+
+
+ virtual bool Show(int timeout = Timeout_Auto);
+ virtual bool Close();
+
+ // generic implementation-specific methods
+
+ // get/set the default timeout (used if Timeout_Auto is specified)
+ static int GetDefaultTimeout() { return ms_timeout; }
+ static void SetDefaultTimeout(int timeout);
+
+private:
+ void Init();
+
+
+ // default timeout
+ static int ms_timeout;
+
+ // notification message is represented by a modeless dialog in this
+ // implementation
+ wxNotificationMessageDialog *m_dialog;
+
+
+ DECLARE_NO_COPY_CLASS(wxNotificationMessage)
+};
+
+#endif // _WX_GENERIC_NOTIFMSG_H_
+
diff --git a/include/wx/gtk/hildon/notifmsg.h b/include/wx/gtk/hildon/notifmsg.h
new file mode 100644
index 0000000000..5f3b5504f7
--- /dev/null
+++ b/include/wx/gtk/hildon/notifmsg.h
@@ -0,0 +1,59 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/gtk/hildon/notifmsg.h
+// Purpose: Hildon implementation of wxNotificationMessage
+// Author: Vadim Zeitlin
+// Created: 2007-11-21
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_HILDON_NOTIFMSG_H_
+#define _WX_GTK_HILDON_NOTIFMSG_H_
+
+typedef struct _HildonBanner HildonBanner;
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxNotificationMessage : public wxNotificationMessageBase
+{
+public:
+ wxNotificationMessage() { Init(); }
+ wxNotificationMessage(const wxString& title,
+ const wxString& message = wxString(),
+ wxWindow *parent = NULL)
+ : wxNotificationMessageBase(title, message, parent)
+ {
+ Init();
+ }
+
+ virtual ~wxNotificationMessage();
+
+
+ virtual bool Show(int timeout = Timeout_Auto);
+ virtual bool Close();
+
+private:
+ void Init() { m_banner = NULL; }
+
+ // return the string containing markup for both the title and, if
+ // specified, the message
+ wxString HildonGetMarkup() const;
+
+ // returns the widget of the parent GtkWindow to use or NULL
+ GtkWidget *HildonGetWindow() const;
+
+
+ // the banner we're showing, only non-NULL if it's an animation or progress
+ // banner as the informational dialog times out on its own and we don't
+ // need to store it (nor do we have any way to get its widget anyhow)
+ GtkWidget *m_banner;
+
+
+ DECLARE_NO_COPY_CLASS(wxNotificationMessage)
+};
+
+#endif // _WX_GTK_HILDON_NOTIFMSG_H_
+
diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h
index a617ff9a49..1e5083e394 100644
--- a/include/wx/mac/setup0.h
+++ b/include/wx/mac/setup0.h
@@ -852,6 +852,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index 5637c68c82..b9a5c9c6b0 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -851,6 +851,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index 58b967d0d8..709b7fe5f9 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -851,6 +851,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index cefc9000ac..fb40f30a33 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -851,6 +851,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/notifmsg.h b/include/wx/notifmsg.h
new file mode 100644
index 0000000000..532b258be2
--- /dev/null
+++ b/include/wx/notifmsg.h
@@ -0,0 +1,131 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/notifmsg.h
+// Purpose: class allowing to show notification messages to the user
+// Author: Vadim Zeitlin
+// Created: 2007-11-19
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_NOTIFMSG_H_
+#define _WX_NOTIFMSG_H_
+
+#include "wx/event.h"
+
+#if wxUSE_NOTIFICATION_MESSAGE
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage: allows to show the user a message non intrusively
+// ----------------------------------------------------------------------------
+
+// notice that this class is not a window and so doesn't derive from wxWindow
+
+class WXDLLIMPEXP_ADV wxNotificationMessageBase : public wxEvtHandler
+{
+public:
+ // ctors and initializers
+ // ----------------------
+
+ // default ctor, use setters below to initialize it later
+ wxNotificationMessageBase() { }
+
+ // create a notification object with the given title and message (the
+ // latter may be empty in which case only the title will be shown)
+ wxNotificationMessageBase(const wxString& title,
+ const wxString& message = wxString(),
+ wxWindow *parent = NULL)
+ : m_title(title),
+ m_message(message),
+ m_parent(parent)
+ {
+ }
+
+ // note that the setters must be called before Show()
+
+ // set the title: short string, markup not allowed
+ void SetTitle(const wxString& title) { m_title = title; }
+
+ // set the text of the message: this is a longer string than the title and
+ // some platforms allow simple HTML-like markup in it
+ void SetMessage(const wxString& message) { m_message = message; }
+
+ // set the parent for this notification: we'll be associated with the top
+ // level parent of this window or, if this method is not called, with the
+ // main application window by default
+ void SetParent(wxWindow *parent) { m_parent = parent; }
+
+
+ // showing and hiding
+ // ------------------
+
+ // possible values for Show() timeout
+ enum
+ {
+ Timeout_Auto = -1, // notification will be hidden automatically
+ Timeout_Never = 0 // notification will never time out
+ };
+
+ // show the notification to the user and hides it after timeout seconds
+ // pass (special values Timeout_Auto and Timeout_Never can be used)
+ //
+ // returns false if an error occurred
+ virtual bool Show(int timeout = Timeout_Auto) = 0;
+
+ // hide the notification, returns true if it was hidden or false if it
+ // couldn't be done (e.g. on some systems automatically hidden
+ // notifications can't be hidden manually)
+ virtual bool Close() = 0;
+
+protected:
+ // accessors for the derived classes
+ const wxString& GetTitle() const { return m_title; }
+ const wxString& GetMessage() const { return m_message; }
+ wxWindow *GetParent() const { return m_parent; }
+
+ // return the concatenation of title and message separated by a new line,
+ // this is suitable for simple implementation which have no support for
+ // separate title and message parts of the notification
+ wxString GetFullMessage() const
+ {
+ wxString text(m_title);
+ if ( !m_message.empty() )
+ {
+ text << "\n\n" << m_message;
+ }
+
+ return text;
+ }
+
+private:
+ wxString m_title,
+ m_message;
+
+ wxWindow *m_parent;
+
+ DECLARE_NO_COPY_CLASS(wxNotificationMessageBase)
+};
+
+#define wxUSE_GENERIC_NOTIFICATION_MESSAGE 1
+
+#if defined(__WXGTK__) && wxUSE_LIBHILDON
+ // we always use the native implementation in Hildon while the other ports
+ // will fall back to the generic one even if they have a native version too
+ #undef wxUSE_GENERIC_NOTIFICATION_MESSAGE
+ #define wxUSE_GENERIC_NOTIFICATION_MESSAGE 0
+
+ #include "wx/gtk/hildon/notifmsg.h"
+/*
+ TODO: provide support for
+ - libnotify (Gnome)
+ - Snarl (http://www.fullphat.net/, Win32)
+ - Growl (http://growl.info/, OS X)
+ */
+#else
+ #include "wx/generic/notifmsg.h"
+#endif
+
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
+#endif // _WX_NOTIFMSG_H_
+
diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h
index 7de4161ad8..be39d4b4fa 100644
--- a/include/wx/os2/setup0.h
+++ b/include/wx/os2/setup0.h
@@ -851,6 +851,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h
index 313ba4f3bd..01ee5a4cf8 100644
--- a/include/wx/palmos/setup0.h
+++ b/include/wx/palmos/setup0.h
@@ -851,6 +851,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 5e329cba58..07ed994071 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -847,6 +847,17 @@
// Recommended setting: 1 (can't be disabled under MSW)
#define wxUSE_MENUS 1
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp
index ad0fff1d44..29195ad6df 100644
--- a/samples/dialogs/dialogs.cpp
+++ b/samples/dialogs/dialogs.cpp
@@ -29,6 +29,7 @@
#include "wx/imaglist.h"
#include "wx/minifram.h"
#include "wx/sysopt.h"
+#include "wx/notifmsg.h"
#if wxUSE_COLOURDLG
#include "wx/colordlg.h"
@@ -219,10 +220,16 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_PROPERTY_SHEET, MyFrame::OnPropertySheet)
EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK, MyFrame::OnPropertySheet)
EVT_MENU(DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK, MyFrame::OnPropertySheet)
-#endif
+#endif // USE_SETTINGS_DIALOG
EVT_MENU(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, MyFrame::OnStandardButtonsSizerDialog)
+
EVT_MENU(DIALOGS_REQUEST, MyFrame::OnRequestUserAttention)
+#if wxUSE_NOTIFICATION_MESSAGE
+ EVT_MENU(DIALOGS_NOTIFY_AUTO, MyFrame::OnNotifMsgAuto)
+ EVT_MENU(DIALOGS_NOTIFY_SHOW, MyFrame::OnNotifMsgShow)
+ EVT_MENU(DIALOGS_NOTIFY_HIDE, MyFrame::OnNotifMsgHide)
+#endif // wxUSE_NOTIFICATION_MESSAGE
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
@@ -422,9 +429,16 @@ bool MyApp::OnInit()
menuDlg->Append(wxID_ANY, _T("&Property sheets"), sheet_menu);
#endif // USE_SETTINGS_DIALOG
- menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
+ wxMenu *menuNotif = new wxMenu;
+ menuNotif->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+#if wxUSE_NOTIFICATION_MESSAGE
+ menuNotif->Append(DIALOGS_NOTIFY_AUTO, "&Automatically hidden notification");
+ menuNotif->Append(DIALOGS_NOTIFY_SHOW, "&Show manual notification");
+ menuNotif->Append(DIALOGS_NOTIFY_HIDE, "&Hide manual notification");
+#endif // wxUSE_NOTIFICATION_MESSAGE
+ menuDlg->AppendSubMenu(menuNotif, "&User notifications");
- menuDlg->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+ menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
menuDlg->AppendSeparator();
menuDlg->Append(wxID_EXIT, _T("E&xit\tAlt-X"));
@@ -483,11 +497,22 @@ MyFrame::MyFrame(wxWindow *parent,
}
#endif // wxUSE_COLOURDLG
+#if wxUSE_NOTIFICATION_MESSAGE
+ m_notifMsg = NULL;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
#if wxUSE_STATUSBAR
CreateStatusBar();
#endif // wxUSE_STATUSBAR
}
+MyFrame::~MyFrame()
+{
+#if wxUSE_NOTIFICATION_MESSAGE
+ delete m_notifMsg;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+}
+
#if wxUSE_COLOURDLG
void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event))
@@ -1147,6 +1172,50 @@ void MyFrame::OnRequestUserAttention(wxCommandEvent& WXUNUSED(event))
RequestUserAttention(wxUSER_ATTENTION_ERROR);
}
+#if wxUSE_NOTIFICATION_MESSAGE
+
+void MyFrame::OnNotifMsgAuto(wxCommandEvent& WXUNUSED(event))
+{
+ if ( !wxNotificationMessage
+ (
+ "Automatic Notification",
+ "Nothing important has happened\n"
+ "this notification will disappear soon."
+ ).Show() )
+ {
+ wxLogStatus("Failed to show notification message");
+ }
+}
+
+void MyFrame::OnNotifMsgShow(wxCommandEvent& WXUNUSED(event))
+{
+ if ( !m_notifMsg )
+ {
+ m_notifMsg = new wxNotificationMessage
+ (
+ "wxWidgets Manual Notification",
+ "You can hide this notification from the menu",
+ this
+ );
+ }
+
+ if ( !m_notifMsg->Show(wxNotificationMessage::Timeout_Never) )
+ {
+ wxLogStatus("Failed to show manual notification message");
+ }
+}
+
+void MyFrame::OnNotifMsgHide(wxCommandEvent& WXUNUSED(event))
+{
+ if ( m_notifMsg )
+ {
+ if ( !m_notifMsg->Close() )
+ wxLogStatus("Failed to hide manual notification message");
+ }
+}
+
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
void MyFrame::OnStandardButtonsSizerDialog(wxCommandEvent& WXUNUSED(event))
{
StdButtonSizerDialog dialog(this);
diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h
index 9e46371a4e..659e9c4e79 100644
--- a/samples/dialogs/dialogs.h
+++ b/samples/dialogs/dialogs.h
@@ -206,6 +206,7 @@ class MyFrame: public wxFrame
{
public:
MyFrame(wxWindow *parent, const wxString& title);
+ virtual ~MyFrame();
#if wxUSE_MSGDLG
void MessageBox(wxCommandEvent& event);
@@ -304,7 +305,14 @@ public:
#endif // USE_FONTDLG_GENERIC
void OnPropertySheet(wxCommandEvent& event);
+
void OnRequestUserAttention(wxCommandEvent& event);
+#if wxUSE_NOTIFICATION_MESSAGE
+ void OnNotifMsgAuto(wxCommandEvent& event);
+ void OnNotifMsgShow(wxCommandEvent& event);
+ void OnNotifMsgHide(wxCommandEvent& event);
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
void OnStandardButtonsSizerDialog(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
@@ -324,6 +332,10 @@ private:
*m_dlgReplace;
#endif // wxUSE_FINDREPLDLG
+#if wxUSE_NOTIFICATION_MESSAGE
+ wxNotificationMessage *m_notifMsg;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
wxColourData m_clrData;
DECLARE_EVENT_TABLE()
@@ -384,6 +396,9 @@ enum
DIALOGS_FIND,
DIALOGS_REPLACE,
DIALOGS_REQUEST,
+ DIALOGS_NOTIFY_AUTO,
+ DIALOGS_NOTIFY_SHOW,
+ DIALOGS_NOTIFY_HIDE,
DIALOGS_PROPERTY_SHEET,
DIALOGS_PROPERTY_SHEET_TOOLBOOK,
DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
diff --git a/setup.h.in b/setup.h.in
index 585313f3e0..62e68e9d92 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -399,6 +399,8 @@
#define wxUSE_MENUS 0
+#define wxUSE_NOTIFICATION_MESSAGE 0
+
#define wxUSE_SASH 0
#define wxUSE_SPLITTER 0
diff --git a/src/generic/notifmsgg.cpp b/src/generic/notifmsgg.cpp
new file mode 100644
index 0000000000..2f95e1ca76
--- /dev/null
+++ b/src/generic/notifmsgg.cpp
@@ -0,0 +1,211 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/generic/notifmsgg.cpp
+// Purpose: generic implementation of wxNotificationMessage
+// Author: Vadim Zeitlin
+// Created: 2007-11-24
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// include this before the test below, wxUSE_GENERIC_NOTIFICATION_MESSAGE is
+// defined in this header
+#include "wx/notifmsg.h"
+
+#if wxUSE_GENERIC_NOTIFICATION_MESSAGE
+
+#ifndef WX_PRECOMP
+ #include "wx/dialog.h"
+ #include "wx/timer.h"
+#endif //WX_PRECOMP
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessageDialog
+// ----------------------------------------------------------------------------
+
+class wxNotificationMessageDialog : public wxDialog
+{
+public:
+ wxNotificationMessageDialog(wxWindow *parent,
+ const wxString& text,
+ int timeout);
+
+ void Set(wxWindow *parent,
+ const wxString& text,
+ int timeout);
+
+ bool IsAutomatic() const { return m_timer.IsRunning(); }
+ void SetDeleteOnHide() { m_deleteOnHide = true; }
+
+private:
+ void OnClose(wxCloseEvent& event);
+ void OnTimer(wxTimerEvent& event);
+
+ // if true, delete the dialog when it should disappear, otherwise just hide
+ // it (initially false)
+ bool m_deleteOnHide;
+
+ // timer which will hide this dialog when it expires, if it's not running
+ // it means we were created without timeout
+ wxTimer m_timer;
+
+
+ DECLARE_EVENT_TABLE()
+ DECLARE_NO_COPY_CLASS(wxNotificationMessageDialog)
+};
+
+// ============================================================================
+// wxNotificationMessageDialog implementation
+// ============================================================================
+
+BEGIN_EVENT_TABLE(wxNotificationMessageDialog, wxDialog)
+ EVT_CLOSE(wxNotificationMessageDialog::OnClose)
+
+ EVT_TIMER(wxID_ANY, wxNotificationMessageDialog::OnTimer)
+END_EVENT_TABLE()
+
+wxNotificationMessageDialog::wxNotificationMessageDialog(wxWindow *parent,
+ const wxString& text,
+ int timeout)
+ : wxDialog(parent, wxID_ANY, _("Notice"),
+ wxDefaultPosition, wxDefaultSize,
+ 0 /* no caption, no border styles */),
+ m_timer(this)
+{
+ m_deleteOnHide = false;
+
+ Set(parent, text, timeout);
+}
+
+void
+wxNotificationMessageDialog::Set(wxWindow * WXUNUSED(parent),
+ const wxString& text,
+ int timeout)
+{
+ wxSizer *sizer = CreateTextSizer(text);
+ SetSizerAndFit(sizer);
+
+ if ( timeout != wxNotificationMessage::Timeout_Never )
+ {
+ // wxTimer uses ms, timeout is in seconds
+ m_timer.Start(timeout*1000, true /* one shot only */);
+ }
+ else if ( m_timer.IsRunning() )
+ {
+ m_timer.Stop();
+ }
+}
+
+void wxNotificationMessageDialog::OnClose(wxCloseEvent& event)
+{
+ if ( m_deleteOnHide )
+ {
+ // we don't need to keep this dialog alive any more
+ Destroy();
+ }
+ else // don't really close, just hide, as we can be shown again later
+ {
+ event.Veto();
+
+ Hide();
+ }
+}
+
+void wxNotificationMessageDialog::OnTimer(wxTimerEvent& WXUNUSED(event))
+{
+ if ( m_deleteOnHide )
+ Destroy();
+ else
+ Hide();
+}
+
+// ============================================================================
+// wxNotificationMessage implementation
+// ============================================================================
+
+int wxNotificationMessage::ms_timeout = 10;
+
+/* static */ void wxNotificationMessage::SetDefaultTimeout(int timeout)
+{
+ wxASSERT_MSG( timeout > 0,
+ "negative or zero default timeout doesn't make sense" );
+
+ ms_timeout = timeout;
+}
+
+void wxNotificationMessage::Init()
+{
+ m_dialog = NULL;
+}
+
+wxNotificationMessage::~wxNotificationMessage()
+{
+ if ( m_dialog->IsAutomatic() )
+ {
+ // we want to allow the user to create an automatically hidden
+ // notification just by creating a local wxNotificationMessage object
+ // and so we shouldn't hide the notification when this object goes out
+ // of scope
+ m_dialog->SetDeleteOnHide();
+ }
+ else // manual dialog, hide it immediately
+ {
+ // OTOH for permanently shown dialogs only the code can hide them and
+ // if the object is deleted, we must do it now as it won't be
+ // accessible programmatically any more
+ delete m_dialog;
+ }
+}
+
+bool wxNotificationMessage::Show(int timeout)
+{
+ if ( timeout == Timeout_Auto )
+ {
+ timeout = GetDefaultTimeout();
+ }
+
+ if ( !m_dialog )
+ {
+ m_dialog = new wxNotificationMessageDialog
+ (
+ GetParent(),
+ GetFullMessage(),
+ timeout
+ );
+ }
+ else // update the existing dialog
+ {
+ m_dialog->Set(GetParent(), GetFullMessage(), timeout);
+ }
+
+ m_dialog->Show();
+
+ return true;
+}
+
+bool wxNotificationMessage::Close()
+{
+ if ( !m_dialog )
+ return false;
+
+ m_dialog->Hide();
+
+ return true;
+}
+
+#endif // wxUSE_GENERIC_NOTIFICATION_MESSAGE
diff --git a/src/gtk/hildon/notifmsg.cpp b/src/gtk/hildon/notifmsg.cpp
new file mode 100644
index 0000000000..3cad17868e
--- /dev/null
+++ b/src/gtk/hildon/notifmsg.cpp
@@ -0,0 +1,126 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: gtk/hildon/notifmsg.cpp
+// Purpose: Hildon implementation of wxNotificationMessage
+// Author: Vadim Zeitlin
+// Created: 2007-11-21
+// RCS-ID: $Id$
+// Copyright: (c) 2007 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_LIBHILDON
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#include "wx/notifmsg.h"
+#include "wx/toplevel.h"
+
+#include
+
+// ============================================================================
+// wxNotificationMessage implementation
+// ============================================================================
+
+wxString wxNotificationMessage::HildonGetMarkup() const
+{
+ const wxString& message = GetMessage(),
+ title = GetTitle();
+
+ wxString text;
+ if ( message.empty() )
+ {
+ text = title;
+ }
+ else // combine title with message in a single string
+ {
+ text << "" << title << "\n"
+ "\n"
+ << message;
+ }
+
+ return text;
+}
+
+GtkWidget *wxNotificationMessage::HildonGetWindow() const
+{
+ wxWindow *parent = GetParent();
+ if ( parent )
+ {
+ parent = wxGetTopLevelParent(parent);
+ if ( parent )
+ {
+ wxTopLevelWindow * const
+ tlw = wxDynamicCast(parent, wxTopLevelWindow);
+ if ( tlw )
+ return tlw->m_mainWidget;
+ }
+ }
+
+ return NULL;
+}
+
+bool wxNotificationMessage::Show(int timeout)
+{
+ if ( timeout == Timeout_Never )
+ {
+ m_banner = hildon_banner_show_animation
+ (
+ HildonGetWindow(),
+ NULL,
+ GetFullMessage() // markup not supported here
+ );
+ if ( !m_banner )
+ return false;
+ }
+ else // the message will time out
+ {
+ // we don't have any way to set the timeout interval so we just let it
+ // time out automatically
+ hildon_banner_show_information_with_markup
+ (
+ HildonGetWindow(),
+ NULL,
+ HildonGetMarkup()
+ );
+ }
+
+ return true;
+}
+
+bool wxNotificationMessage::Close()
+{
+ if ( !m_banner )
+ {
+ // either we hadn't been shown or we are using an information banner
+ // which will disappear on its own, nothing we can do about it
+ return false;
+ }
+
+ gtk_widget_destroy(m_banner);
+ m_banner = NULL;
+
+ return true;
+}
+
+wxNotificationMessage::~wxNotificationMessage()
+{
+ Close();
+}
+
+#endif // wxUSE_LIBHILDON