Add new wxBannerWindow class.

A simple banner showing either a bitmap or some text on gradient background.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2011-08-22 12:18:43 +00:00
parent e55d569400
commit ea11bf3abc
36 changed files with 791 additions and 6 deletions

View File

@ -3676,6 +3676,7 @@ COND_TOOLKIT_WINCE_ADVANCED_PLATFORM_NATIVE_HDR = \
COND_WXUNIV_0_ADVANCED_HDR = \
wx/aboutdlg.h \
wx/animate.h \
wx/bannerwindow.h \
wx/bmpcbox.h \
wx/calctrl.h \
wx/commandlinkbutton.h \
@ -3723,6 +3724,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
COND_WXUNIV_1_ADVANCED_HDR = \
wx/aboutdlg.h \
wx/animate.h \
wx/bannerwindow.h \
wx/bmpcbox.h \
wx/calctrl.h \
wx/commandlinkbutton.h \
@ -6073,6 +6075,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_hyperlnkcmn.o \
monodll_odcombocmn.o \
monodll_aboutdlgg.o \
monodll_bannerwindow.o \
monodll_bmpcboxg.o \
monodll_calctrlg.o \
monodll_commandlinkbuttong.o \
@ -6105,6 +6108,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_hyperlnkcmn.o \
monodll_odcombocmn.o \
monodll_aboutdlgg.o \
monodll_bannerwindow.o \
monodll_bmpcboxg.o \
monodll_calctrlg.o \
monodll_commandlinkbuttong.o \
@ -8003,6 +8007,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_hyperlnkcmn.o \
monolib_odcombocmn.o \
monolib_aboutdlgg.o \
monolib_bannerwindow.o \
monolib_bmpcboxg.o \
monolib_calctrlg.o \
monolib_commandlinkbuttong.o \
@ -8035,6 +8040,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_hyperlnkcmn.o \
monolib_odcombocmn.o \
monolib_aboutdlgg.o \
monolib_bannerwindow.o \
monolib_bmpcboxg.o \
monolib_calctrlg.o \
monolib_commandlinkbuttong.o \
@ -11776,6 +11782,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_hyperlnkcmn.o \
advdll_odcombocmn.o \
advdll_aboutdlgg.o \
advdll_bannerwindow.o \
advdll_bmpcboxg.o \
advdll_calctrlg.o \
advdll_commandlinkbuttong.o \
@ -11808,6 +11815,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_hyperlnkcmn.o \
advdll_odcombocmn.o \
advdll_aboutdlgg.o \
advdll_bannerwindow.o \
advdll_bmpcboxg.o \
advdll_calctrlg.o \
advdll_commandlinkbuttong.o \
@ -11880,6 +11888,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_hyperlnkcmn.o \
advlib_odcombocmn.o \
advlib_aboutdlgg.o \
advlib_bannerwindow.o \
advlib_bmpcboxg.o \
advlib_calctrlg.o \
advlib_commandlinkbuttong.o \
@ -11912,6 +11921,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_hyperlnkcmn.o \
advlib_odcombocmn.o \
advlib_aboutdlgg.o \
advlib_bannerwindow.o \
advlib_bmpcboxg.o \
advlib_calctrlg.o \
advlib_commandlinkbuttong.o \
@ -20342,6 +20352,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@COND_USE_GUI_1@monodll_bannerwindow.o: $(srcdir)/src/generic/bannerwindow.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/bannerwindow.cpp
@COND_USE_GUI_1@monodll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
@ -25667,6 +25680,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@COND_USE_GUI_1@monolib_bannerwindow.o: $(srcdir)/src/generic/bannerwindow.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/bannerwindow.cpp
@COND_USE_GUI_1@monolib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
@ -35204,6 +35220,9 @@ advdll_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(ADVDLL_ODEP)
advdll_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
advdll_bannerwindow.o: $(srcdir)/src/generic/bannerwindow.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/bannerwindow.cpp
advdll_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp
@ -35558,6 +35577,9 @@ advlib_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(ADVLIB_ODEP)
advlib_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
advlib_bannerwindow.o: $(srcdir)/src/generic/bannerwindow.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/bannerwindow.cpp
advlib_bmpcboxg.o: $(srcdir)/src/generic/bmpcboxg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/bmpcboxg.cpp

View File

@ -2953,6 +2953,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/hyperlnkcmn.cpp
src/common/odcombocmn.cpp
src/generic/aboutdlgg.cpp
src/generic/bannerwindow.cpp
src/generic/bmpcboxg.cpp
src/generic/calctrlg.cpp
src/generic/commandlinkbuttong.cpp
@ -2978,6 +2979,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<set var="ADVANCED_CMN_HDR" hints="files">
wx/aboutdlg.h
wx/animate.h
wx/bannerwindow.h
wx/bmpcbox.h
wx/calctrl.h
wx/commandlinkbutton.h

View File

@ -2226,6 +2226,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_calctrlg.obj \
$(OBJS)\monodll_commandlinkbuttong.obj \
@ -2270,6 +2271,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_calctrlg.obj \
$(OBJS)\monodll_commandlinkbuttong.obj \
@ -2990,6 +2992,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_calctrlg.obj \
$(OBJS)\monolib_commandlinkbuttong.obj \
@ -3034,6 +3037,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_calctrlg.obj \
$(OBJS)\monolib_commandlinkbuttong.obj \
@ -4194,6 +4198,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_calctrlg.obj \
$(OBJS)\advdll_commandlinkbuttong.obj \
@ -4238,6 +4243,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_calctrlg.obj \
$(OBJS)\advdll_commandlinkbuttong.obj \
@ -4280,6 +4286,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_calctrlg.obj \
$(OBJS)\advlib_commandlinkbuttong.obj \
@ -4324,6 +4331,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_calctrlg.obj \
$(OBJS)\advlib_commandlinkbuttong.obj \
@ -8117,6 +8125,11 @@ $(OBJS)\monodll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
!endif
@ -10468,6 +10481,11 @@ $(OBJS)\monolib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
!endif
@ -14225,6 +14243,9 @@ $(OBJS)\advdll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
$(OBJS)\advdll_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
$(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
@ -14351,6 +14372,9 @@ $(OBJS)\advlib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
$(OBJS)\advlib_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
$(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp

View File

@ -2240,6 +2240,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.o \
$(OBJS)\monodll_odcombocmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bannerwindow.o \
$(OBJS)\monodll_bmpcboxg.o \
$(OBJS)\monodll_calctrlg.o \
$(OBJS)\monodll_commandlinkbuttong.o \
@ -2284,6 +2285,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.o \
$(OBJS)\monodll_odcombocmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bannerwindow.o \
$(OBJS)\monodll_bmpcboxg.o \
$(OBJS)\monodll_calctrlg.o \
$(OBJS)\monodll_commandlinkbuttong.o \
@ -3010,6 +3012,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.o \
$(OBJS)\monolib_odcombocmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bannerwindow.o \
$(OBJS)\monolib_bmpcboxg.o \
$(OBJS)\monolib_calctrlg.o \
$(OBJS)\monolib_commandlinkbuttong.o \
@ -3054,6 +3057,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.o \
$(OBJS)\monolib_odcombocmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bannerwindow.o \
$(OBJS)\monolib_bmpcboxg.o \
$(OBJS)\monolib_calctrlg.o \
$(OBJS)\monolib_commandlinkbuttong.o \
@ -4242,6 +4246,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.o \
$(OBJS)\advdll_odcombocmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bannerwindow.o \
$(OBJS)\advdll_bmpcboxg.o \
$(OBJS)\advdll_calctrlg.o \
$(OBJS)\advdll_commandlinkbuttong.o \
@ -4286,6 +4291,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.o \
$(OBJS)\advdll_odcombocmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bannerwindow.o \
$(OBJS)\advdll_bmpcboxg.o \
$(OBJS)\advdll_calctrlg.o \
$(OBJS)\advdll_commandlinkbuttong.o \
@ -4332,6 +4338,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.o \
$(OBJS)\advlib_odcombocmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bannerwindow.o \
$(OBJS)\advlib_bmpcboxg.o \
$(OBJS)\advlib_calctrlg.o \
$(OBJS)\advlib_commandlinkbuttong.o \
@ -4376,6 +4383,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.o \
$(OBJS)\advlib_odcombocmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bannerwindow.o \
$(OBJS)\advlib_bmpcboxg.o \
$(OBJS)\advlib_calctrlg.o \
$(OBJS)\advlib_commandlinkbuttong.o \
@ -8267,6 +8275,11 @@ $(OBJS)\monodll_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
endif
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_bannerwindow.o: ../../src/generic/bannerwindow.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
@ -10618,6 +10631,11 @@ $(OBJS)\monolib_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
endif
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_bannerwindow.o: ../../src/generic/bannerwindow.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
@ -14375,6 +14393,9 @@ $(OBJS)\advdll_odcombocmn.o: ../../src/common/odcombocmn.cpp
$(OBJS)\advdll_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advdll_bannerwindow.o: ../../src/generic/bannerwindow.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advdll_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@ -14501,6 +14522,9 @@ $(OBJS)\advlib_odcombocmn.o: ../../src/common/odcombocmn.cpp
$(OBJS)\advlib_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advlib_bannerwindow.o: ../../src/generic/bannerwindow.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advlib_bmpcboxg.o: ../../src/generic/bmpcboxg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<

View File

@ -2434,6 +2434,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_calctrlg.obj \
$(OBJS)\monodll_commandlinkbuttong.obj \
@ -2478,6 +2479,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_calctrlg.obj \
$(OBJS)\monodll_commandlinkbuttong.obj \
@ -3204,6 +3206,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_calctrlg.obj \
$(OBJS)\monolib_commandlinkbuttong.obj \
@ -3248,6 +3251,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_calctrlg.obj \
$(OBJS)\monolib_commandlinkbuttong.obj \
@ -4498,6 +4502,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_calctrlg.obj \
$(OBJS)\advdll_commandlinkbuttong.obj \
@ -4542,6 +4547,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_calctrlg.obj \
$(OBJS)\advdll_commandlinkbuttong.obj \
@ -4590,6 +4596,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_calctrlg.obj \
$(OBJS)\advlib_commandlinkbuttong.obj \
@ -4634,6 +4641,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_calctrlg.obj \
$(OBJS)\advlib_commandlinkbuttong.obj \
@ -8697,6 +8705,11 @@ $(OBJS)\monodll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
!endif
@ -11048,6 +11061,11 @@ $(OBJS)\monolib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
!endif
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
!endif
@ -14805,6 +14823,9 @@ $(OBJS)\advdll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
$(OBJS)\advdll_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
$(OBJS)\advdll_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp
@ -14931,6 +14952,9 @@ $(OBJS)\advlib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
$(OBJS)\advlib_bannerwindow.obj: ..\..\src\generic\bannerwindow.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bannerwindow.cpp
$(OBJS)\advlib_bmpcboxg.obj: ..\..\src\generic\bmpcboxg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\bmpcboxg.cpp

View File

@ -792,6 +792,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_hyperlnkcmn.obj &
$(OBJS)\monodll_odcombocmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bannerwindow.obj &
$(OBJS)\monodll_bmpcboxg.obj &
$(OBJS)\monodll_calctrlg.obj &
$(OBJS)\monodll_commandlinkbuttong.obj &
@ -836,6 +837,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_hyperlnkcmn.obj &
$(OBJS)\monodll_odcombocmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bannerwindow.obj &
$(OBJS)\monodll_bmpcboxg.obj &
$(OBJS)\monodll_calctrlg.obj &
$(OBJS)\monodll_commandlinkbuttong.obj &
@ -1567,6 +1569,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_hyperlnkcmn.obj &
$(OBJS)\monolib_odcombocmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bannerwindow.obj &
$(OBJS)\monolib_bmpcboxg.obj &
$(OBJS)\monolib_calctrlg.obj &
$(OBJS)\monolib_commandlinkbuttong.obj &
@ -1611,6 +1614,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_hyperlnkcmn.obj &
$(OBJS)\monolib_odcombocmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bannerwindow.obj &
$(OBJS)\monolib_bmpcboxg.obj &
$(OBJS)\monolib_calctrlg.obj &
$(OBJS)\monolib_commandlinkbuttong.obj &
@ -2815,6 +2819,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_hyperlnkcmn.obj &
$(OBJS)\advdll_odcombocmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bannerwindow.obj &
$(OBJS)\advdll_bmpcboxg.obj &
$(OBJS)\advdll_calctrlg.obj &
$(OBJS)\advdll_commandlinkbuttong.obj &
@ -2859,6 +2864,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_hyperlnkcmn.obj &
$(OBJS)\advdll_odcombocmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bannerwindow.obj &
$(OBJS)\advdll_bmpcboxg.obj &
$(OBJS)\advdll_calctrlg.obj &
$(OBJS)\advdll_commandlinkbuttong.obj &
@ -2907,6 +2913,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_hyperlnkcmn.obj &
$(OBJS)\advlib_odcombocmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bannerwindow.obj &
$(OBJS)\advlib_bmpcboxg.obj &
$(OBJS)\advlib_calctrlg.obj &
$(OBJS)\advlib_commandlinkbuttong.obj &
@ -2951,6 +2958,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_hyperlnkcmn.obj &
$(OBJS)\advlib_odcombocmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bannerwindow.obj &
$(OBJS)\advlib_bmpcboxg.obj &
$(OBJS)\advlib_calctrlg.obj &
$(OBJS)\advlib_commandlinkbuttong.obj &
@ -8526,6 +8534,11 @@ $(OBJS)\monodll_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
!endif
!ifeq USE_GUI 1
$(OBJS)\monodll_bannerwindow.obj : .AUTODEPEND ..\..\src\generic\bannerwindow.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
!ifeq USE_GUI 1
$(OBJS)\monodll_bmpcboxg.obj : .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
@ -10877,6 +10890,11 @@ $(OBJS)\monolib_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
!endif
!ifeq USE_GUI 1
$(OBJS)\monolib_bannerwindow.obj : .AUTODEPEND ..\..\src\generic\bannerwindow.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
!ifeq USE_GUI 1
$(OBJS)\monolib_bmpcboxg.obj : .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
@ -14634,6 +14652,9 @@ $(OBJS)\advdll_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
$(OBJS)\advdll_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
$(OBJS)\advdll_bannerwindow.obj : .AUTODEPEND ..\..\src\generic\bannerwindow.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
$(OBJS)\advdll_bmpcboxg.obj : .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@ -14760,6 +14781,9 @@ $(OBJS)\advlib_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
$(OBJS)\advlib_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
$(OBJS)\advlib_bannerwindow.obj : .AUTODEPEND ..\..\src\generic\bannerwindow.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
$(OBJS)\advlib_bmpcboxg.obj : .AUTODEPEND ..\..\src\generic\bmpcboxg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<

View File

@ -563,6 +563,10 @@ SOURCE=..\..\src\generic\animateg.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\generic\bannerwindow.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\generic\bmpcboxg.cpp
# End Source File
# Begin Source File
@ -1012,6 +1016,10 @@ SOURCE=..\..\include\wx\animate.h
# End Source File
# Begin Source File
SOURCE=..\..\include\wx\bannerwindow.h
# End Source File
# Begin Source File
SOURCE=..\..\include\wx\bmpcbox.h
# End Source File
# Begin Source File

View File

@ -5984,6 +5984,10 @@ SOURCE=..\..\include\wx\aui\auibook.h
# End Source File
# Begin Source File
SOURCE=..\..\include\wx\bannerwindow.h
# End Source File
# Begin Source File
SOURCE=..\..\include\wx\ribbon\bar.h
# End Source File
# Begin Source File

View File

@ -738,6 +738,9 @@
RelativePath="..\..\src\generic\animateg.cpp">
</File>
<File
RelativePath="..\..\src\generic\bannerwindow.cpp">
</File>
<File
RelativePath="..\..\src\generic\bmpcboxg.cpp">
</File>
<File
@ -1068,6 +1071,9 @@
RelativePath="..\..\include\wx\animate.h">
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h">
</File>
<File
RelativePath="..\..\include\wx\bmpcbox.h">
</File>
<File

View File

@ -5064,6 +5064,9 @@
RelativePath="..\..\include\wx\aui\auibook.h">
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h">
</File>
<File
RelativePath="..\..\include\wx\ribbon\bar.h">
</File>
<File

View File

@ -1017,6 +1017,10 @@
>
</File>
<File
RelativePath="..\..\src\generic\bannerwindow.cpp"
>
</File>
<File
RelativePath="..\..\src\generic\bmpcboxg.cpp"
>
</File>
@ -1445,6 +1449,10 @@
>
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h"
>
</File>
<File
RelativePath="..\..\include\wx\bmpcbox.h"
>
</File>

View File

@ -6772,6 +6772,10 @@
>
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h"
>
</File>
<File
RelativePath="..\..\include\wx\ribbon\bar.h"
>
</File>

View File

@ -1013,6 +1013,10 @@
>
</File>
<File
RelativePath="..\..\src\generic\bannerwindow.cpp"
>
</File>
<File
RelativePath="..\..\src\generic\bmpcboxg.cpp"
>
</File>
@ -1441,6 +1445,10 @@
>
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h"
>
</File>
<File
RelativePath="..\..\include\wx\bmpcbox.h"
>
</File>

View File

@ -6768,6 +6768,10 @@
>
</File>
<File
RelativePath="..\..\include\wx\bannerwindow.h"
>
</File>
<File
RelativePath="..\..\include\wx\ribbon\bar.h"
>
</File>

53
configure vendored
View File

@ -1809,6 +1809,7 @@ Optional Features:
--enable-markup support wxControl::SetLabelMarkup
--enable-accel use accelerators
--enable-animatectrl use wxAnimationCtrl class
--enable-bannerwindow use wxBannerWindow class
--enable-artstd use standard XPM icons in wxArtProvider
--enable-arttango use Tango icons in wxArtProvider
--enable-bmpbutton use wxBitmapButton class
@ -9853,6 +9854,7 @@ echo "${ECHO_T}$result" >&6; }
if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_ACCEL=no
DEFAULT_wxUSE_ANIMATIONCTRL=no
DEFAULT_wxUSE_BANNERWINDOW=no
DEFAULT_wxUSE_BMPBUTTON=no
DEFAULT_wxUSE_BUTTON=no
DEFAULT_wxUSE_CALCTRL=no
@ -10044,6 +10046,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}-bannerwindow" >&5
echo $ECHO_N "checking for --${enablestring:-enable}-bannerwindow... $ECHO_C" >&6; }
# Check whether --enable-bannerwindow was given.
if test "${enable_bannerwindow+set}" = set; then
enableval=$enable_bannerwindow;
if test "$enableval" = yes; then
wx_cv_use_bannerwindow='wxUSE_BANNERWINDOW=yes'
else
wx_cv_use_bannerwindow='wxUSE_BANNERWINDOW=no'
fi
else
wx_cv_use_bannerwindow='wxUSE_BANNERWINDOW=${'DEFAULT_wxUSE_BANNERWINDOW":-$defaultval}"
fi
eval "$wx_cv_use_bannerwindow"
if test x"$enablestring" = xdisable; then
if test $wxUSE_BANNERWINDOW = no; then
result=yes
else
result=no
fi
else
result=$wxUSE_BANNERWINDOW
fi
{ echo "$as_me:$LINENO: result: $result" >&5
echo "${ECHO_T}$result" >&6; }
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@ -47255,6 +47301,13 @@ _ACEOF
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS animate"
fi
if test "$wxUSE_BANNERWINDOW" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_BANNERWINDOW 1
_ACEOF
fi
if test "$wxUSE_BUTTON" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_BUTTON 1

View File

@ -877,6 +877,7 @@ dnl disabled
if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_ACCEL=no
DEFAULT_wxUSE_ANIMATIONCTRL=no
DEFAULT_wxUSE_BANNERWINDOW=no
DEFAULT_wxUSE_BMPBUTTON=no
DEFAULT_wxUSE_BUTTON=no
DEFAULT_wxUSE_CALCTRL=no
@ -940,6 +941,7 @@ WX_ARG_FEATURE(markup, [ --enable-markup support wxControl::SetLab
dnl please keep the settings below in alphabetical order
WX_ARG_FEATURE(accel, [ --enable-accel use accelerators], wxUSE_ACCEL)
WX_ARG_FEATURE(animatectrl, [ --enable-animatectrl use wxAnimationCtrl class], wxUSE_ANIMATIONCTRL)
WX_ARG_FEATURE(bannerwindow,[ --enable-bannerwindow use wxBannerWindow class], wxUSE_BANNERWINDOW)
WX_ARG_FEATURE(artstd, [ --enable-artstd use standard XPM icons in wxArtProvider], wxUSE_ARTPROVIDER_STD)
WX_ARG_FEATURE(arttango, [ --enable-arttango use Tango icons in wxArtProvider], wxUSE_ARTPROVIDER_TANGO)
WX_ARG_FEATURE(bmpbutton, [ --enable-bmpbutton use wxBitmapButton class], wxUSE_BMPBUTTON)
@ -6795,6 +6797,10 @@ if test "$wxUSE_ANIMATIONCTRL" = "yes"; then
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS animate"
fi
if test "$wxUSE_BANNERWINDOW" = "yes"; then
AC_DEFINE(wxUSE_BANNERWINDOW)
fi
if test "$wxUSE_BUTTON" = "yes"; then
AC_DEFINE(wxUSE_BUTTON)
USES_CONTROLS=1

View File

@ -450,6 +450,7 @@ All (GUI):
- Added documented, public wxNavigationEnabled<> class.
- Added wxTextCtrl::PositionToCoords() (Navaneeth).
- Added support for wxHELP button to wxMessageDialog.
- Added wxBannerWindow class.
- Support float, double and file name values in wxGenericValidator (troelsk).
- Fix keyboard navigation in wxGrid with hidden columns (ivan_14_32).
- Add wxDataViewEvent::IsEditCancelled() (Allonii).

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

137
include/wx/bannerwindow.h Normal file
View File

@ -0,0 +1,137 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/bannerwindow.h
// Purpose: wxBannerWindow class declaration
// Author: Vadim Zeitlin
// Created: 2011-08-16
// RCS-ID: $Id$
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_BANNERWINDOW_H_
#define _WX_BANNERWINDOW_H_
#include "wx/defs.h"
#if wxUSE_BANNERWINDOW
#include "wx/bitmap.h"
#include "wx/event.h"
#include "wx/window.h"
class WXDLLIMPEXP_FWD_CORE wxBitmap;
class WXDLLIMPEXP_FWD_CORE wxColour;
class WXDLLIMPEXP_FWD_CORE wxDC;
extern WXDLLIMPEXP_DATA_CORE(const char) wxBannerWindowNameStr[];
// ----------------------------------------------------------------------------
// A simple banner window showing either a bitmap or text.
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_ADV wxBannerWindow : public wxWindow
{
public:
// Default constructor, use Create() later.
wxBannerWindow() { Init(); }
// Convenient constructor that should be used in the majority of cases.
//
// The banner orientation changes how the text in it is displayed and also
// defines where is the bitmap truncated if it's too big to fit but doesn't
// do anything for the banner position, this is supposed to be taken care
// of in the usual way, e.g. using sizers.
wxBannerWindow(wxWindow* parent, wxDirection dir = wxLEFT)
{
Init();
Create(parent, wxID_ANY, dir);
}
// Full constructor provided for consistency with the other classes only.
wxBannerWindow(wxWindow* parent,
wxWindowID winid,
wxDirection dir = wxLEFT,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxBannerWindowNameStr)
{
Init();
Create(parent, winid, dir, pos, size, style, name);
}
// Can be only called on objects created with the default constructor.
bool Create(wxWindow* parent,
wxWindowID winid,
wxDirection dir = wxLEFT,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxBannerWindowNameStr);
// Provide an existing bitmap to show. For wxLEFT orientation the bitmap is
// truncated from the top, for wxTOP and wxBOTTOM -- from the right and for
// wxRIGHT -- from the bottom, so put the most important part of the bitmap
// information in the opposite direction.
void SetBitmap(const wxBitmap& bmp);
// Set the text to display. This is mutually exclusive with SetBitmap().
// Title is rendered in bold and should be single line, message can have
// multiple lines but is not wrapped automatically.
void SetText(const wxString& title, const wxString& message);
// Set the colours between which the gradient runs. This can be combined
// with SetText() but not SetBitmap().
void SetGradient(const wxColour& start, const wxColour& end);
protected:
virtual wxSize DoGetBestClientSize() const;
private:
// Common part of all constructors.
void Init();
// Fully invalidates the window.
void OnSize(wxSizeEvent& event);
// Redraws the window using either m_bitmap or m_title/m_message.
void OnPaint(wxPaintEvent& event);
// Helper of OnPaint(): draw the bitmap at the correct position depending
// on our orientation.
void DrawBitmapBackground(wxDC& dc);
// Helper of OnPaint(): draw the text in the appropriate direction.
void DrawBannerTextLine(wxDC& dc, const wxString& str, const wxPoint& pos);
// Return the font to use for the title. Currently this is hardcoded as a
// larger bold version of the standard window font but could be made
// configurable in the future.
wxFont GetTitleFont() const;
// The window side along which the banner is laid out.
wxDirection m_direction;
// If valid, this bitmap is drawn as is.
wxBitmap m_bitmap;
// The title and main message to draw, used if m_bitmap is invalid.
wxString m_title,
m_message;
// Start and stop gradient colours, only used when drawing text.
wxColour m_colStart,
m_colEnd;
wxDECLARE_EVENT_TABLE();
wxDECLARE_NO_COPY_CLASS(wxBannerWindow);
};
#endif // wxUSE_BANNERWINDOW
#endif // _WX_BANNERWINDOW_H_

View File

@ -803,6 +803,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -803,6 +803,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -803,6 +803,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -803,6 +803,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -804,6 +804,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -803,6 +803,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -799,6 +799,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

View File

@ -802,6 +802,7 @@
//
// Recommended setting: 1
#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BANNERWINDOW 1 // wxBannerWindow
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl

151
interface/wx/bannerwindow.h Normal file
View File

@ -0,0 +1,151 @@
///////////////////////////////////////////////////////////////////////////////
// Name: interface.wx/bannerwindow.h
// Purpose: wxBannerWindow class documentation
// Author: Vadim Zeitlin
// Created: 2011-08-16
// RCS-ID: $Id$
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
/**
A simple banner window showing either a bitmap or text.
Banner windows can be used to present some overview of the current window
contents to the user in an aesthetically pleasant way. They are typically
positioned along the left or top edge of the window (although this class
also supports right- and bottom-aligned banners) and show either a bitmap
with a logo or a few lines of text on a gradient-filled background.
Using this class is very simple, e.g.:
@code
MyFrame::MyFrame(...)
{
... create the frame itself ...
// Create and initialize the banner.
wxBannerWindow* banner = new wxBannerWindow(this, wxTOP);
banner->SetText("Welcome to my wonderful program",
" Before doing anything else, you need to connect to "
"the online server.\n"
" Please enter your credentials in the controls below.");
// And position it along the left edge of the window.
wxSizer* sizer = new wxBoxSizer(wxVERTICAL);
sizer->Add(banner, wxSizerFlags().Expand());
... add the rest of the window contents to the same sizer ...
SetSizerAndFit(sizer);
}
@endcode
This class is currently implemented generically and so looks the same under
all platforms.
@library{wxadv}
@category{miscwnd}
@genericAppearance{bannerwindow.png}
@since 2.9.3
*/
class wxBannerWindow : public wxWindow
{
public:
/**
Default constructor, use Create() later.
This constructor is only used for two-step creation, if possible,
prefer using the constructor below directly instead of using this one
and calling Create() later.
*/
wxBannerWindow();
/**
Convenient constructor that should be used in the majority of cases.
The only really important arguments of the full constructor below are
@a parent and @a dir so this class provides a convenient constructor
taking only them.
The banner orientation changes how the text in it is displayed and also
defines where is the bitmap truncated if it's too big to fit but doesn't
do anything for the banner position, this is supposed to be taken care
of in the usual way, e.g. using sizers.
*/
wxBannerWindow(wxWindow* parent, wxDirection dir = wxLEFT);
/**
Full constructor provided for consistency with the other classes only.
Prefer to use the shorter constructor documented above. You should
rarely, if ever, need to use non-default values for any other
parameters: as the banner window doesn't generate any events, its
identifier is not particularly useful; its position and size will be
almost always managed by the containing sizer and it doesn't have any
specific styles. So only the parent and the banner direction need to be
specified.
*/
wxBannerWindow(wxWindow* parent,
wxWindowID winid,
wxDirection dir = wxLEFT,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxBannerWindowNameStr);
/**
Really create the banner window for the objects created using the
default constructor.
It's an error to call Create() for the objects created using
non-default constructor.
*/
bool Create(wxWindow* parent,
wxWindowID winid,
wxDirection dir = wxLEFT,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxBannerWindowNameStr);
/**
Provide the bitmap to use as background.
Notice that the bitmap should be big enough to always cover the entire
banner, e.g. for a horizontal banner with wxTOP style its width should
be bigger than any reasonable window size.
For wxLEFT orientation the bitmap is truncated from the top, for wxTOP
and wxBOTTOM -- from the right and for wxRIGHT -- from the bottom, so
put the most important part of the bitmap information in the opposite
direction.
If no valid background bitmap is specified, the banner draws gradient
background but if a valid bitmap is given here, the gradient is not
draw and the start and end colours specified for it are ignored.
@param bmp Bitmap to use as background. May be invalid to indicate
that no background bitmap should be used.
*/
void SetBitmap(const wxBitmap& bmp);
/**
Set the text to display.
This is mutually exclusive with SetBitmap().
Title is rendered in bold and should be single line, message can have
multiple lines but is not wrapped automatically, include explicit line
breaks in the string if you want to have multiple lines.
*/
void SetText(const wxString& title, const wxString& message);
/**
Set the colours between which the gradient runs.
The gradient colours are ignored if SetBitmap() is used.
*/
void SetGradient(const wxColour& start, const wxColour& end);
};

View File

@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@
DESTDIR =
WX_RELEASE = 2.9
WX_VERSION = $(WX_RELEASE).2
WX_VERSION = $(WX_RELEASE).3
LIBDIRNAME = $(wx_top_builddir)/lib
XRCDEMO_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
@ -196,7 +196,7 @@ xrcdemo$(EXEEXT): $(XRCDEMO_OBJECTS) $(__xrcdemo___win32rc)
data:
@mkdir -p ./rc
@for f in artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm; do \
@for f in artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm wxbanner.gif; do \
if test ! -f ./rc/$$f -a ! -d ./rc/$$f ; \
then x=yep ; \
else x=`find $(srcdir)/rc/$$f -newer ./rc/$$f -print` ; \

View File

@ -256,7 +256,7 @@ $(OBJS)\xrcdemo.exe: $(XRCDEMO_OBJECTS) $(OBJS)\xrcdemo_sample.res
data:
if not exist $(OBJS)\rc mkdir $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm wxbanner.gif) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
$(OBJS)\xrcdemo_sample.res: .\..\..\samples\sample.rc
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) -i$(SETUPHDIR) -i.\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_1_p) -i. $(__DLLFLAG_p_1) -i.\..\..\samples -dNOPCH .\..\..\samples\sample.rc

View File

@ -243,7 +243,7 @@ $(OBJS)\xrcdemo.exe: $(XRCDEMO_OBJECTS) $(OBJS)\xrcdemo_sample_rc.o
data:
if not exist $(OBJS)\rc mkdir $(OBJS)\rc
for %%f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm) do if not exist $(OBJS)\rc\%%f copy .\rc\%%f $(OBJS)\rc
for %%f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm wxbanner.gif) do if not exist $(OBJS)\rc\%%f copy .\rc\%%f $(OBJS)\rc
$(OBJS)\xrcdemo_sample_rc.o: ./../../samples/sample.rc
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir ./../../include $(__CAIRO_INCLUDEDIR_p) --include-dir . $(__DLLFLAG_p_1) --include-dir ./../../samples --define NOPCH

View File

@ -366,7 +366,7 @@ $(OBJS)\xrcdemo.exe: $(XRCDEMO_OBJECTS) $(OBJS)\xrcdemo_sample.res
data:
if not exist $(OBJS)\rc mkdir $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm wxbanner.gif) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
$(OBJS)\xrcdemo_sample.res: .\..\..\samples\sample.rc
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_3_p_1) $(__NO_VC_CRTDBG_p_1) /d __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) /i $(SETUPHDIR) /i .\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_1_p) /i . $(__DLLFLAG_p_1) /d _WINDOWS /i .\..\..\samples /d NOPCH .\..\..\samples\sample.rc

View File

@ -286,7 +286,7 @@ $(OBJS)\xrcdemo.exe : $(XRCDEMO_OBJECTS) $(OBJS)\xrcdemo_sample.res
data : .SYMBOLIC
if not exist $(OBJS)\rc mkdir $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
for %f in (artprov.xpm artprov.xrc basicdlg.xpm basicdlg.xrc controls.xpm controls.xrc custclas.xpm custclas.xrc derivdlg.xpm derivdlg.xrc fileopen.gif filesave.gif frame.xrc fuzzy.gif menu.xrc platform.xpm platform.xrc quotes.gif resource.xrc toolbar.xrc uncenter.xpm objref.xrc objrefdlg.xpm uncenter.xrc update.gif variable.xpm variable.xrc throbber.gif stop.xpm wxbanner.gif) do if not exist $(OBJS)\rc\%f copy .\rc\%f $(OBJS)\rc
$(OBJS)\xrcdemo_sample.res : .AUTODEPEND .\..\..\samples\sample.rc
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES) -i=. $(__DLLFLAG_p) -i=.\..\..\samples -dNOPCH $<

View File

@ -38,6 +38,7 @@
objref.xrc objrefdlg.xpm
uncenter.xrc update.gif variable.xpm variable.xrc
throbber.gif stop.xpm
wxbanner.gif
</files>
</wx-data>

View File

@ -365,6 +365,7 @@
#define wxUSE_TIPWINDOW 0
#define wxUSE_ANIMATIONCTRL 0
#define wxUSE_BANNERWINDOW 0
#define wxUSE_BUTTON 0
#define wxUSE_BMPBUTTON 0
#define wxUSE_CALENDARCTRL 0

View File

@ -0,0 +1,262 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/bannerwindow.h
// Purpose: wxBannerWindow class implementation
// Author: Vadim Zeitlin
// Created: 2011-08-16
// RCS-ID: $Id$
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_BANNERWINDOW
#include "wx/bannerwindow.h"
#ifndef WX_PRECOMP
#include "wx/bitmap.h"
#include "wx/colour.h"
#endif
#include "wx/dcbuffer.h"
namespace
{
// Some constants for banner layout, currently they're hard coded but we could
// easily make them configurable if needed later.
const int MARGIN_X = 5;
const int MARGIN_Y = 5;
} // anonymous namespace
extern WXDLLEXPORT_DATA(const char) wxBannerWindowNameStr[] = "bannerwindow";
BEGIN_EVENT_TABLE(wxBannerWindow, wxWindow)
EVT_SIZE(wxBannerWindow::OnSize)
EVT_PAINT(wxBannerWindow::OnPaint)
END_EVENT_TABLE()
void wxBannerWindow::Init()
{
m_direction = wxLEFT;
m_colStart = *wxWHITE;
m_colEnd = *wxBLUE;
}
bool
wxBannerWindow::Create(wxWindow* parent,
wxWindowID winid,
wxDirection dir,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name)
{
if ( !wxWindow::Create(parent, winid, pos, size, style, name) )
return false;
wxASSERT_MSG
(
dir == wxLEFT || dir == wxRIGHT || dir == wxTOP || dir == wxBOTTOM,
wxS("Invalid banner direction")
);
m_direction = dir;
SetBackgroundStyle(wxBG_STYLE_PAINT);
return true;
}
void wxBannerWindow::SetBitmap(const wxBitmap& bmp)
{
m_bitmap = bmp;
InvalidateBestSize();
Refresh();
}
void wxBannerWindow::SetText(const wxString& title, const wxString& message)
{
m_title = title;
m_message = message;
InvalidateBestSize();
Refresh();
}
void wxBannerWindow::SetGradient(const wxColour& start, const wxColour& end)
{
m_colStart = start;
m_colEnd = end;
Refresh();
}
wxFont wxBannerWindow::GetTitleFont() const
{
wxFont font = GetFont();
font.MakeBold().MakeLarger();
return font;
}
wxSize wxBannerWindow::DoGetBestClientSize() const
{
if ( m_bitmap.IsOk() )
{
return m_bitmap.GetSize();
}
else
{
wxClientDC dc(const_cast<wxBannerWindow *>(this));
const wxSize sizeText = dc.GetMultiLineTextExtent(m_message);
dc.SetFont(GetTitleFont());
const wxSize sizeTitle = dc.GetTextExtent(m_title);
wxSize sizeWin(wxMax(sizeTitle.x, sizeText.x), sizeTitle.y + sizeText.y);
// If we draw the text vertically width and height are swapped.
if ( m_direction == wxLEFT || m_direction == wxRIGHT )
wxSwap(sizeWin.x, sizeWin.y);
sizeWin += 2*wxSize(MARGIN_X, MARGIN_Y);
return sizeWin;
}
}
void wxBannerWindow::OnSize(wxSizeEvent& event)
{
Refresh();
event.Skip();
}
void wxBannerWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
{
if ( m_bitmap.IsOk() && m_title.empty() && m_message.empty() )
{
// No need for buffering in this case.
wxPaintDC dc(this);
DrawBitmapBackground(dc);
}
else // We need to compose our contents ourselves.
{
wxAutoBufferedPaintDC dc(this);
// Deal with the background first.
if ( m_bitmap.IsOk() )
{
DrawBitmapBackground(dc);
}
else // Draw gradient background.
{
wxDirection gradientDir;
if ( m_direction == wxLEFT )
{
gradientDir = wxTOP;
}
else if ( m_direction == wxRIGHT )
{
gradientDir = wxBOTTOM;
}
else // For both wxTOP and wxBOTTOM.
{
gradientDir = wxRIGHT;
}
dc.GradientFillLinear(GetClientRect(), m_colStart, m_colEnd,
gradientDir);
}
// Now draw the text on top of it.
dc.SetFont(GetTitleFont());
wxPoint pos(MARGIN_X, MARGIN_Y);
DrawBannerTextLine(dc, m_title, pos);
pos.y += dc.GetTextExtent(m_title).y;
dc.SetFont(GetFont());
wxArrayString lines = wxSplit(m_message, '\n', '\0');
const unsigned numLines = lines.size();
for ( unsigned n = 0; n < numLines; n++ )
{
const wxString& line = lines[n];
DrawBannerTextLine(dc, line, pos);
pos.y += dc.GetTextExtent(line).y;
}
}
}
void wxBannerWindow::DrawBitmapBackground(wxDC& dc)
{
switch ( m_direction )
{
case wxTOP:
case wxBOTTOM:
case wxRIGHT:
// Draw the bitmap normally, its rightmost or bottom part could be
// truncated, as it's meant to be.
dc.DrawBitmap(m_bitmap, 0, 0);
break;
case wxLEFT:
// The top most part of the bitmap may be truncated but its bottom
// must be always visible so intentionally draw it possibly partly
// outside of the window.
dc.DrawBitmap(m_bitmap,
0, GetClientSize().y - m_bitmap.GetHeight());
break;
// This case is there only to prevent g++ warnings about not handling
// some enum elements in the switch, it can't really happen.
case wxALL:
wxFAIL_MSG( wxS("Unreachable") );
}
}
void
wxBannerWindow::DrawBannerTextLine(wxDC& dc,
const wxString& str,
const wxPoint& pos)
{
switch ( m_direction )
{
case wxTOP:
case wxBOTTOM:
// The simple case: we just draw the text normally.
dc.DrawText(str, pos);
break;
case wxLEFT:
// We draw the text vertically and start from the lower left
// corner and not the upper left one as usual.
dc.DrawRotatedText(str, pos.y, GetClientSize().y - pos.x, 90);
break;
case wxRIGHT:
// We also draw the text vertically but now we start from the upper
// right corner and draw it from top to bottom.
dc.DrawRotatedText(str, GetClientSize().x - pos.y, pos.x, -90);
break;
case wxALL:
wxFAIL_MSG( wxS("Unreachable") );
}
}
#endif // wxUSE_BANNERWINDOW