]> git.saurik.com Git - wxWidgets.git/commitdiff
Steps towards implementing native-style, non-top-level toolbars on Mac
authorJulian Smart <julian@anthemion.co.uk>
Fri, 14 Apr 2006 09:15:10 +0000 (09:15 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 14 Apr 2006 09:15:10 +0000 (09:15 +0000)
by implementing a toolbar class that uses native buttons.
Ultimately this should allow wxToolbook and wxPropertySheetDialog
classes to look native, when we complete the button API improvements
to combine text, bitmaps and toggling.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

16 files changed:
Makefile.in
build/bakefiles/files.bkl
build/msw/makefile.bcc
build/msw/makefile.gcc
build/msw/makefile.vc
build/msw/makefile.wat
build/msw/wx_adv.dsp
build/msw/wx_core.dsp
include/wx/generic/buttonbar.h [new file with mode: 0644]
include/wx/generic/propdlg.h
include/wx/toolbook.h
samples/dialogs/dialogs.cpp
samples/dialogs/dialogs.h
src/generic/buttonbar.cpp [new file with mode: 0644]
src/generic/propdlg.cpp
src/generic/toolbkg.cpp

index f5000687a798fb396f0a72dc78ad49d498b6578d..8cf84a95d40f4bdaa8b5e4f6858e322f25a1130b 100644 (file)
@@ -2483,6 +2483,7 @@ COND_WXUNIV_0_ADVANCED_HDR =  \
        wx/dataview.h \
        wx/dateevt.h \
        wx/dcbuffer.h \
+       wx/generic/buttonbar.h \
        wx/generic/calctrl.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
@@ -2520,6 +2521,7 @@ COND_WXUNIV_1_ADVANCED_HDR =  \
        wx/dataview.h \
        wx/dateevt.h \
        wx/dcbuffer.h \
+       wx/generic/buttonbar.h \
        wx/generic/calctrl.h \
        wx/generic/datectrl.h \
        wx/generic/dataview.h \
@@ -4444,6 +4446,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1 =  \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
        monodll_datavcmn.o \
+       monodll_buttonbar.o \
        monodll_calctrl.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
@@ -4467,6 +4470,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS =  \
        monodll_datavcmn.o \
+       monodll_buttonbar.o \
        monodll_calctrl.o \
        monodll_datavgen.o \
        monodll_datectlg.o \
@@ -6068,6 +6072,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3 =  \
 @COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3)
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_datavcmn.o \
+       monolib_buttonbar.o \
        monolib_calctrl.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
@@ -6091,6 +6096,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 =  \
        monolib_datavcmn.o \
+       monolib_buttonbar.o \
        monolib_calctrl.o \
        monolib_datavgen.o \
        monolib_datectlg.o \
@@ -9300,6 +9306,7 @@ COND_USE_SOSYMLINKS_1___advdll___so_symlinks_inst_cmd = rm -f \
 @COND_PLATFORM_WIN32_1@__advdll___win32rc = advdll_version_rc.o
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_datavcmn.o \
+       advdll_buttonbar.o \
        advdll_calctrl.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
@@ -9323,6 +9330,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 =  \
        advdll_datavcmn.o \
+       advdll_buttonbar.o \
        advdll_calctrl.o \
        advdll_datavgen.o \
        advdll_datectlg.o \
@@ -9361,6 +9369,7 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1___advlib___depname = \
 @COND_USE_PCH_1@       = .pch/wxprec_advlib/wx/wxprec.h.gch
 COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_datavcmn.o \
+       advlib_buttonbar.o \
        advlib_calctrl.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
@@ -9384,6 +9393,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
 @COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3)
 COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 =  \
        advlib_datavcmn.o \
+       advlib_buttonbar.o \
        advlib_calctrl.o \
        advlib_datavgen.o \
        advlib_datectlg.o \
@@ -14743,6 +14753,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
+@COND_USE_GUI_1@monodll_buttonbar.o: $(srcdir)/src/generic/buttonbar.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/buttonbar.cpp
+
 @COND_USE_GUI_1@monodll_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
 
@@ -18529,6 +18542,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
+@COND_USE_GUI_1@monolib_buttonbar.o: $(srcdir)/src/generic/buttonbar.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/buttonbar.cpp
+
 @COND_USE_GUI_1@monolib_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
 
@@ -25477,6 +25493,9 @@ advdll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVDLL_ODEP)
 advdll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
+advdll_buttonbar.o: $(srcdir)/src/generic/buttonbar.cpp $(ADVDLL_ODEP)
+       $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/buttonbar.cpp
+
 advdll_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(ADVDLL_ODEP)
        $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
 
@@ -25651,6 +25670,9 @@ advlib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVLIB_ODEP)
 advlib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
 
+advlib_buttonbar.o: $(srcdir)/src/generic/buttonbar.cpp $(ADVLIB_ODEP)
+       $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/buttonbar.cpp
+
 advlib_calctrl.o: $(srcdir)/src/generic/calctrl.cpp $(ADVLIB_ODEP)
        $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/calctrl.cpp
 
index b58dc6fa6d6879b79c3d92b00cba0dbcc9cbec9c..6c543f2642ef3b293e040c147295b84f9cf3e613 100644 (file)
@@ -2516,6 +2516,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 
 <set var="ADVANCED_CMN_SRC" hints="files">
     src/common/datavcmn.cpp
+    src/generic/buttonbar.cpp
     src/generic/calctrl.cpp
     src/generic/datavgen.cpp
     src/generic/datectlg.cpp
@@ -2541,6 +2542,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/dataview.h
     wx/dateevt.h
     wx/dcbuffer.h
+    wx/generic/buttonbar.h
     wx/generic/calctrl.h
     wx/generic/datectrl.h
     wx/generic/dataview.h
index 8c1863f65849ff991be1f0986dc93e7d64ecfa65..d334482da3db90a07874aa540e56656cc95e943e 100644 (file)
@@ -1545,6 +1545,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.obj \
+       $(OBJS)\monodll_buttonbar.obj \
        $(OBJS)\monodll_calctrl.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
@@ -1572,6 +1573,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.obj \
+       $(OBJS)\monodll_buttonbar.obj \
        $(OBJS)\monodll_calctrl.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
@@ -2082,6 +2084,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.obj \
+       $(OBJS)\monolib_buttonbar.obj \
        $(OBJS)\monolib_calctrl.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
@@ -2109,6 +2112,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.obj \
+       $(OBJS)\monolib_buttonbar.obj \
        $(OBJS)\monolib_calctrl.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
@@ -2957,6 +2961,7 @@ __advdll___depname = \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.obj \
+       $(OBJS)\advdll_buttonbar.obj \
        $(OBJS)\advdll_calctrl.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
@@ -2984,6 +2989,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.obj \
+       $(OBJS)\advdll_buttonbar.obj \
        $(OBJS)\advdll_calctrl.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
@@ -3014,6 +3020,7 @@ __advlib___depname = \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.obj \
+       $(OBJS)\advlib_buttonbar.obj \
        $(OBJS)\advlib_calctrl.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
@@ -3041,6 +3048,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.obj \
+       $(OBJS)\advlib_buttonbar.obj \
        $(OBJS)\advlib_calctrl.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
@@ -5688,6 +5696,11 @@ $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -7444,6 +7457,11 @@ $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -10425,6 +10443,9 @@ $(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
 
+$(OBJS)\advdll_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+
 $(OBJS)\advdll_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
 
@@ -10500,6 +10521,9 @@ $(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
 
+$(OBJS)\advlib_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+
 $(OBJS)\advlib_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
 
index 2dccbab4aac01f6348495157db896085ca12f2ae..6fc34bbef64b1cd1ce90eb407346fdfe083c5329 100644 (file)
@@ -1559,6 +1559,7 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.o \
+       $(OBJS)\monodll_buttonbar.o \
        $(OBJS)\monodll_calctrl.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
@@ -1586,6 +1587,7 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.o \
+       $(OBJS)\monodll_buttonbar.o \
        $(OBJS)\monodll_calctrl.o \
        $(OBJS)\monodll_datavgen.o \
        $(OBJS)\monodll_datectlg.o \
@@ -2102,6 +2104,7 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.o \
+       $(OBJS)\monolib_buttonbar.o \
        $(OBJS)\monolib_calctrl.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
@@ -2129,6 +2132,7 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.o \
+       $(OBJS)\monolib_buttonbar.o \
        $(OBJS)\monolib_calctrl.o \
        $(OBJS)\monolib_datavgen.o \
        $(OBJS)\monolib_datectlg.o \
@@ -3005,6 +3009,7 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.o \
+       $(OBJS)\advdll_buttonbar.o \
        $(OBJS)\advdll_calctrl.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
@@ -3032,6 +3037,7 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.o \
+       $(OBJS)\advdll_buttonbar.o \
        $(OBJS)\advdll_calctrl.o \
        $(OBJS)\advdll_datavgen.o \
        $(OBJS)\advdll_datectlg.o \
@@ -3066,6 +3072,7 @@ endif
 ifeq ($(WXUNIV),0)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.o \
+       $(OBJS)\advlib_buttonbar.o \
        $(OBJS)\advlib_calctrl.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
@@ -3093,6 +3100,7 @@ endif
 ifeq ($(WXUNIV),1)
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.o \
+       $(OBJS)\advlib_buttonbar.o \
        $(OBJS)\advlib_calctrl.o \
        $(OBJS)\advlib_datavgen.o \
        $(OBJS)\advlib_datectlg.o \
@@ -5892,6 +5900,11 @@ $(OBJS)\monodll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_buttonbar.o: ../../src/generic/buttonbar.cpp
+       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_calctrl.o: ../../src/generic/calctrl.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -7748,6 +7761,11 @@ $(OBJS)\monolib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_buttonbar.o: ../../src/generic/buttonbar.cpp
+       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_calctrl.o: ../../src/generic/calctrl.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10929,6 +10947,9 @@ $(OBJS)\advdll_datectrl.o: ../../src/msw/datectrl.cpp
 $(OBJS)\advdll_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advdll_buttonbar.o: ../../src/generic/buttonbar.cpp
+       $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advdll_calctrl.o: ../../src/generic/calctrl.cpp
        $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -11004,6 +11025,9 @@ $(OBJS)\advlib_datectrl.o: ../../src/msw/datectrl.cpp
 $(OBJS)\advlib_datavcmn.o: ../../src/common/datavcmn.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advlib_buttonbar.o: ../../src/generic/buttonbar.cpp
+       $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advlib_calctrl.o: ../../src/generic/calctrl.cpp
        $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
index b4f1fad142efa55b401d6cd055f07bcd03ecb59b..101afa073d77fc83aa937922e0af003a547fc4d6 100644 (file)
@@ -1704,6 +1704,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.obj \
+       $(OBJS)\monodll_buttonbar.obj \
        $(OBJS)\monodll_calctrl.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
@@ -1731,6 +1732,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
        $(OBJS)\monodll_datavcmn.obj \
+       $(OBJS)\monodll_buttonbar.obj \
        $(OBJS)\monodll_calctrl.obj \
        $(OBJS)\monodll_datavgen.obj \
        $(OBJS)\monodll_datectlg.obj \
@@ -2247,6 +2249,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.obj \
+       $(OBJS)\monolib_buttonbar.obj \
        $(OBJS)\monolib_calctrl.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
@@ -2274,6 +2277,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
        $(OBJS)\monolib_datavcmn.obj \
+       $(OBJS)\monolib_buttonbar.obj \
        $(OBJS)\monolib_calctrl.obj \
        $(OBJS)\monolib_datavgen.obj \
        $(OBJS)\monolib_datectlg.obj \
@@ -3164,6 +3168,7 @@ __RUNTIME_LIBS_195 = $(__THREADSFLAG)
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.obj \
+       $(OBJS)\advdll_buttonbar.obj \
        $(OBJS)\advdll_calctrl.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
@@ -3191,6 +3196,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
        $(OBJS)\advdll_datavcmn.obj \
+       $(OBJS)\advdll_buttonbar.obj \
        $(OBJS)\advdll_calctrl.obj \
        $(OBJS)\advdll_datavgen.obj \
        $(OBJS)\advdll_datectlg.obj \
@@ -3227,6 +3233,7 @@ __RUNTIME_LIBS_208 = $(__THREADSFLAG)
 !if "$(WXUNIV)" == "0"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.obj \
+       $(OBJS)\advlib_buttonbar.obj \
        $(OBJS)\advlib_calctrl.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
@@ -3254,6 +3261,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 !if "$(WXUNIV)" == "1"
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
        $(OBJS)\advlib_datavcmn.obj \
+       $(OBJS)\advlib_buttonbar.obj \
        $(OBJS)\advlib_calctrl.obj \
        $(OBJS)\advlib_datavgen.obj \
        $(OBJS)\advlib_datectlg.obj \
@@ -5997,6 +6005,11 @@ $(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -7753,6 +7766,11 @@ $(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -10734,6 +10752,9 @@ $(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
 
+$(OBJS)\advdll_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+
 $(OBJS)\advdll_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
 
@@ -10809,6 +10830,9 @@ $(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
 
+$(OBJS)\advlib_buttonbar.obj: ..\..\src\generic\buttonbar.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+
 $(OBJS)\advlib_calctrl.obj: ..\..\src\generic\calctrl.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
 
index e630e6ab1efc8b6271092372edf14101e47ae6f3..3da1e13cafea047b424d45bcfa9885b3f9e68dcd 100644 (file)
@@ -585,6 +585,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_datavcmn.obj &
+       $(OBJS)\monodll_buttonbar.obj &
        $(OBJS)\monodll_calctrl.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
@@ -612,6 +613,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
        $(OBJS)\monodll_datavcmn.obj &
+       $(OBJS)\monodll_buttonbar.obj &
        $(OBJS)\monodll_calctrl.obj &
        $(OBJS)\monodll_datavgen.obj &
        $(OBJS)\monodll_datectlg.obj &
@@ -1132,6 +1134,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_datavcmn.obj &
+       $(OBJS)\monolib_buttonbar.obj &
        $(OBJS)\monolib_calctrl.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
@@ -1159,6 +1162,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
        $(OBJS)\monolib_datavcmn.obj &
+       $(OBJS)\monolib_buttonbar.obj &
        $(OBJS)\monolib_calctrl.obj &
        $(OBJS)\monolib_datavgen.obj &
        $(OBJS)\monolib_datectlg.obj &
@@ -2045,6 +2049,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_datavcmn.obj &
+       $(OBJS)\advdll_buttonbar.obj &
        $(OBJS)\advdll_calctrl.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
@@ -2072,6 +2077,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
        $(OBJS)\advdll_datavcmn.obj &
+       $(OBJS)\advdll_buttonbar.obj &
        $(OBJS)\advdll_calctrl.obj &
        $(OBJS)\advdll_datavgen.obj &
        $(OBJS)\advdll_datectlg.obj &
@@ -2108,6 +2114,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =
 !ifeq WXUNIV 0
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_datavcmn.obj &
+       $(OBJS)\advlib_buttonbar.obj &
        $(OBJS)\advlib_calctrl.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
@@ -2135,6 +2142,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
 !ifeq WXUNIV 1
 ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
        $(OBJS)\advlib_datavcmn.obj &
+       $(OBJS)\advlib_buttonbar.obj &
        $(OBJS)\advlib_calctrl.obj &
        $(OBJS)\advlib_datavgen.obj &
        $(OBJS)\advlib_datectlg.obj &
@@ -6092,6 +6100,11 @@ $(OBJS)\monodll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_buttonbar.obj :  .AUTODEPEND ..\..\src\generic\buttonbar.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -7948,6 +7961,11 @@ $(OBJS)\monolib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_buttonbar.obj :  .AUTODEPEND ..\..\src\generic\buttonbar.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -11129,6 +11147,9 @@ $(OBJS)\advdll_datectrl.obj :  .AUTODEPEND ..\..\src\msw\datectrl.cpp
 $(OBJS)\advdll_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
+$(OBJS)\advdll_buttonbar.obj :  .AUTODEPEND ..\..\src\generic\buttonbar.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
 $(OBJS)\advdll_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
@@ -11204,6 +11225,9 @@ $(OBJS)\advlib_datectrl.obj :  .AUTODEPEND ..\..\src\msw\datectrl.cpp
 $(OBJS)\advlib_datavcmn.obj :  .AUTODEPEND ..\..\src\common\datavcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
+$(OBJS)\advlib_buttonbar.obj :  .AUTODEPEND ..\..\src\generic\buttonbar.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
 $(OBJS)\advlib_calctrl.obj :  .AUTODEPEND ..\..\src\generic\calctrl.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
index 0fdfa476c56128b2ed836e227835a11f260fadff..8d8abb1c3b96fa94e375deea55ff2b63179c4e69 100644 (file)
@@ -612,6 +612,10 @@ SOURCE=..\..\src\msw\version.rc
 # PROP Default_Filter ""
 # Begin Source File
 
+SOURCE=..\..\src\generic\buttonbar.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\generic\calctrl.cpp
 # End Source File
 # Begin Source File
@@ -1113,6 +1117,10 @@ SOURCE=..\..\include\wx\msw\taskbar.h
 # PROP Default_Filter ""
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\buttonbar.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\calctrl.h
 # End Source File
 # Begin Source File
index b63fa483a8e6af958a0fd280ae09210009ec574f..18a40537a2d07264d21980b9803982e98b3d7f64 100644 (file)
@@ -7971,6 +7971,10 @@ SOURCE=..\..\include\wx\generic\busyinfo.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\buttonbar.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\calctrl.h
 # End Source File
 # Begin Source File
diff --git a/include/wx/generic/buttonbar.h b/include/wx/generic/buttonbar.h
new file mode 100644 (file)
index 0000000..1cb9d63
--- /dev/null
@@ -0,0 +1,110 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/generic/buttonbar.h
+// Purpose:     wxButtonToolBar declaration
+// Author:      Julian Smart, after Robert Roebling, Vadim Zeitlin, SciTech
+// Modified by:
+// Created:     2006-04-13
+// Id:          $Id$
+// Copyright:   (c) Julian Smart, Robert Roebling, Vadim Zeitlin,
+//              SciTech Software, Inc. 
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_BUTTONBAR_H_
+#define _WX_BUTTONBAR_H_
+
+#include "wx/bmpbuttn.h"
+
+class WXDLLEXPORT wxButtonToolBarTool;
+
+// ----------------------------------------------------------------------------
+// wxButtonToolBar
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxButtonToolBar : public wxToolBarBase
+{    
+public:
+    // construction/destruction
+    wxButtonToolBar() { Init(); }
+    wxButtonToolBar(wxWindow *parent,
+              wxWindowID id,
+              const wxPoint& pos = wxDefaultPosition,
+              const wxSize& size = wxDefaultSize,
+              long style = 0,
+              const wxString& name = wxToolBarNameStr)
+    {
+        Init();
+
+        Create(parent, id, pos, size, style, name);
+    }
+
+    bool Create( wxWindow *parent,
+                 wxWindowID id,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = 0,
+                 const wxString& name = wxToolBarNameStr );
+                 
+    virtual ~wxButtonToolBar();
+
+    virtual bool Realize();
+
+    virtual void SetToolShortHelp(int id, const wxString& helpString);
+    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
+
+protected:
+    // common part of all ctors
+    void Init();
+
+    // implement base class pure virtuals
+    virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
+    virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
+
+    virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
+    virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
+    virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
+
+    virtual wxToolBarToolBase *CreateTool(int id,
+                                          const wxString& label,
+                                          const wxBitmap& bmpNormal,
+                                          const wxBitmap& bmpDisabled,
+                                          wxItemKind kind,
+                                          wxObject *clientData,
+                                          const wxString& shortHelp,
+                                          const wxString& longHelp);
+    virtual wxToolBarToolBase *CreateTool(wxControl *control);
+
+    virtual wxSize DoGetBestClientSize() const;
+
+    // calculate layout
+    void DoLayout();
+
+    // get the bounding rect for the given tool
+    wxRect GetToolRect(wxToolBarToolBase *tool) const;
+
+    // get the rect limits depending on the orientation: top/bottom for a
+    // vertical toolbar, left/right for a horizontal one
+    void GetRectLimits(const wxRect& rect, wxCoord *start, wxCoord *end) const;
+
+    // receives button commands
+    void OnCommand(wxCommandEvent& event);
+
+private:
+    // have we calculated the positions of our tools?
+    bool m_needsLayout;
+
+    // the width of a separator
+    wxCoord m_widthSeparator;
+
+    // the total size of all toolbar elements
+    wxCoord m_maxWidth,
+            m_maxHeight;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxButtonToolBar)
+    DECLARE_EVENT_TABLE()
+};
+
+#endif
+ // _WX_BUTTONBAR_H_
+
index 6ecb9ec47ccb7fe4a397eb918188d9042bc00107..5be620facae104323bb6a6ed2c6223d0b524d317 100644 (file)
@@ -66,6 +66,9 @@ class WXDLLEXPORT wxBookCtrlBase;
 // Shrink dialog to fit current page
 #define wxPROPSHEET_SHRINKTOFIT 0x0100
 
+// Use a wxButtonToolBar toolbook
+#define wxPROPSHEET_BUTTONTOOLBOOK    0x0200
+
 class WXDLLIMPEXP_ADV wxPropertySheetDialog : public wxDialog
 {
 public:
index f5b6fc8f1eefd7b692260bdcf0bb9fdf7053c3d7..472054e467a7113e8ab82e4475e29ed503d18990 100644 (file)
@@ -21,6 +21,9 @@
 class WXDLLEXPORT wxToolBarBase;
 class WXDLLEXPORT wxCommandEvent;
 
+// Use wxButtonToolBar
+#define wxBK_BUTTONBAR            0x0100
+
 // ----------------------------------------------------------------------------
 // wxToolbook
 // ----------------------------------------------------------------------------
index 035c2e1557b66f19533f3a98fb47e4d210a1cfeb..b29c7530f751a1e4c833f7a95af0e8c5cf922f76 100644 (file)
@@ -196,7 +196,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 
 #if USE_SETTINGS_DIALOG
     EVT_MENU(DIALOGS_PROPERTY_SHEET,                MyFrame::OnPropertySheet)
-    EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK,       MyFrame::OnPropertySheetToolBook)
+    EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK,       MyFrame::OnPropertySheet)
+    EVT_MENU(DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK, MyFrame::OnPropertySheet)
 #endif
 
     EVT_MENU(DIALOGS_REQUEST,                       MyFrame::OnRequestUserAttention)
@@ -368,6 +369,7 @@ bool MyApp::OnInit()
     wxMenu *sheet_menu = new wxMenu;
     sheet_menu->Append(DIALOGS_PROPERTY_SHEET, _T("&Standard property sheet\tShift-Ctrl-P"));
     sheet_menu->Append(DIALOGS_PROPERTY_SHEET_TOOLBOOK, _T("&Toolbook sheet\tShift-Ctrl-T"));
+    sheet_menu->Append(DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK, _T("Button &Toolbook sheet\tShift-Ctrl-U"));
     file_menu->Append(wxID_ANY, _T("&Property sheets"), sheet_menu);
 #endif // USE_SETTINGS_DIALOG
 
@@ -1005,15 +1007,9 @@ void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event))
 #endif // wxUSE_STARTUP_TIPS
 
 #if USE_SETTINGS_DIALOG
-void MyFrame::OnPropertySheet(wxCommandEvent& WXUNUSED(event))
+void MyFrame::OnPropertySheet(wxCommandEvent& event)
 {
-    SettingsDialog dialog(this);
-    dialog.ShowModal();
-}
-
-void MyFrame::OnPropertySheetToolBook(wxCommandEvent& WXUNUSED(event))
-{
-    SettingsDialog dialog(this, true);
+    SettingsDialog dialog(this, event.GetId());
     dialog.ShowModal();
 }
 #endif // USE_SETTINGS_DIALOG
@@ -1414,18 +1410,27 @@ IMPLEMENT_CLASS(SettingsDialog, wxPropertySheetDialog)
 BEGIN_EVENT_TABLE(SettingsDialog, wxPropertySheetDialog)
 END_EVENT_TABLE()
 
-SettingsDialog::SettingsDialog(wxWindow* win, bool useToolBook)
+SettingsDialog::SettingsDialog(wxWindow* win, int dialogType)
 {
     SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
 
     int tabImage1 = -1;
     int tabImage2 = -1;
+    
+    bool useToolBook = (dialogType == DIALOGS_PROPERTY_SHEET_TOOLBOOK || dialogType == DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK);
 
     if (useToolBook)
     {
         tabImage1 = 0;
         tabImage2 = 1;
-        SetSheetStyle(wxPROPSHEET_TOOLBOOK|wxPROPSHEET_SHRINKTOFIT);
+        
+        int sheetStyle = wxPROPSHEET_SHRINKTOFIT;
+        if (dialogType == DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK)
+            sheetStyle |= wxPROPSHEET_BUTTONTOOLBOOK;
+        else
+            sheetStyle |= wxPROPSHEET_TOOLBOOK;
+            
+        SetSheetStyle(sheetStyle);
 
         // create a dummy image list with a few icons
         const wxSize imageSize(32, 32);
index 6b9b05064e44ff7fa04dba5722ba416816a71945..45e8d92843148f9bea0c8533f5bc16289b9fc29d 100644 (file)
@@ -147,7 +147,7 @@ class SettingsDialog: public wxPropertySheetDialog
 {
 DECLARE_CLASS(SettingsDialog)
 public:
-    SettingsDialog(wxWindow* parent, bool useToolBook = false);
+    SettingsDialog(wxWindow* parent, int dialogType);
     ~SettingsDialog();
 
     wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
@@ -263,7 +263,6 @@ public:
 #endif // USE_FONTDLG_GENERIC
 
     void OnPropertySheet(wxCommandEvent& event);
-    void OnPropertySheetToolBook(wxCommandEvent& event);
     void OnRequestUserAttention(wxCommandEvent& event);
     void OnExit(wxCommandEvent& event);
 
@@ -336,7 +335,8 @@ enum
     DIALOGS_REPLACE,
     DIALOGS_REQUEST,
     DIALOGS_PROPERTY_SHEET,
-    DIALOGS_PROPERTY_SHEET_TOOLBOOK
+    DIALOGS_PROPERTY_SHEET_TOOLBOOK,
+    DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK
 };
 
 #endif
diff --git a/src/generic/buttonbar.cpp b/src/generic/buttonbar.cpp
new file mode 100644 (file)
index 0000000..f6a261c
--- /dev/null
@@ -0,0 +1,428 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/buttonbar.cpp
+// Purpose:     wxButtonToolBar implementation
+// Author:      Julian Smart, after Robert Roebling, Vadim Zeitlin, SciTech
+// Modified by:
+// Created:     2006-04-13
+// Id:          $Id$
+// Copyright:   (c) Julian Smart, Robert Roebling, Vadim Zeitlin,
+//              SciTech Software, Inc. 
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_TOOLBAR && wxUSE_BMPBUTTON
+
+#ifndef WX_PRECOMP
+    #include "wx/utils.h"
+    #include "wx/app.h"
+#endif
+
+#include "wx/generic/buttonbar.h"
+#include "wx/frame.h"
+#include "wx/image.h"
+#include "wx/log.h"
+
+// ----------------------------------------------------------------------------
+// wxButtonToolBarTool: our implementation of wxToolBarToolBase
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxButtonToolBarTool : public wxToolBarToolBase
+{
+public:
+    wxButtonToolBarTool(wxButtonToolBar *tbar,
+                  int id,
+                  const wxString& label,
+                  const wxBitmap& bmpNormal,
+                  const wxBitmap& bmpDisabled,
+                  wxItemKind kind,
+                  wxObject *clientData,
+                  const wxString& shortHelp,
+                  const wxString& longHelp)
+        : wxToolBarToolBase(tbar, id, label, bmpNormal, bmpDisabled, kind,
+                            clientData, shortHelp, longHelp)
+    {
+        m_x = m_y = wxDefaultCoord;
+        m_width =
+        m_height = 0;
+        
+        m_button = NULL;
+    }
+
+    wxButtonToolBarTool(wxButtonToolBar *tbar, wxControl *control)
+        : wxToolBarToolBase(tbar, control)
+    {
+        m_x = m_y = wxDefaultCoord;
+        m_width =
+        m_height = 0;
+        m_button = NULL;
+    }
+
+    wxBitmapButton* GetButton() const { return m_button; }
+    void SetButton(wxBitmapButton* button) { m_button = button; }
+
+public:
+    // the tool position (for controls)
+    wxCoord m_x;
+    wxCoord m_y;
+    wxCoord m_width;
+    wxCoord m_height;
+
+private:
+    // the control representing the button
+    wxBitmapButton* m_button;
+};
+
+// ============================================================================
+// wxButtonToolBar implementation
+// ============================================================================
+
+IMPLEMENT_DYNAMIC_CLASS(wxButtonToolBar, wxControl)
+
+BEGIN_EVENT_TABLE(wxButtonToolBar, wxControl)
+    EVT_BUTTON(wxID_ANY, wxButtonToolBar::OnCommand)
+END_EVENT_TABLE()
+
+// ----------------------------------------------------------------------------
+// wxButtonToolBar creation
+// ----------------------------------------------------------------------------
+
+void wxButtonToolBar::Init()
+{
+    // no tools yet
+    m_needsLayout = false;
+
+    // unknown widths for the tools and separators
+    m_widthSeparator = wxDefaultCoord;
+
+    m_maxWidth =
+    m_maxHeight = 0;
+}
+
+bool wxButtonToolBar::Create(wxWindow *parent,
+                       wxWindowID id,
+                       const wxPoint& pos,
+                       const wxSize& size,
+                       long style,
+                       const wxString& name)
+{
+    if ( !wxToolBarBase::Create(parent, id, pos, size, style,
+                                wxDefaultValidator, name) )
+    {
+        return false;
+    }
+
+    return true;
+}
+
+wxButtonToolBar::~wxButtonToolBar()
+{
+}
+
+// ----------------------------------------------------------------------------
+// wxButtonToolBar tool-related methods
+// ----------------------------------------------------------------------------
+
+wxToolBarToolBase *wxButtonToolBar::FindToolForPosition(wxCoord x, wxCoord y) const
+{
+    // check the "other" direction first: it must be inside the toolbar or we
+    // don't risk finding anything
+    if ( IsVertical() )
+    {
+        if ( x < 0 || x > m_maxWidth )
+            return NULL;
+
+        // we always use x, even for a vertical toolbar, this makes the code
+        // below simpler
+        x = y;
+    }
+    else // horizontal
+    {
+        if ( y < 0 || y > m_maxHeight )
+            return NULL;
+    }
+
+    for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
+          node;
+          node = node->GetNext() )
+    {
+        wxButtonToolBarTool *tool =  (wxButtonToolBarTool*) node->GetData();
+        wxRect rectTool = GetToolRect(tool);
+
+        wxCoord startTool, endTool;
+        GetRectLimits(rectTool, &startTool, &endTool);
+
+        if ( x >= startTool && x <= endTool )
+        {
+            // don't return the separators from here, they don't accept any
+            // input anyhow
+            return tool->IsSeparator() ? NULL : tool;
+        }
+    }
+
+    return NULL;
+}
+
+void wxButtonToolBar::GetRectLimits(const wxRect& rect,
+                              wxCoord *start,
+                              wxCoord *end) const
+{
+    wxCHECK_RET( start && end, _T("NULL pointer in GetRectLimits") );
+
+    if ( IsVertical() )
+    {
+        *start = rect.GetTop();
+        *end = rect.GetBottom();
+    }
+    else // horizontal
+    {
+        *start = rect.GetLeft();
+        *end = rect.GetRight();
+    }
+}
+
+
+void wxButtonToolBar::SetToolShortHelp(int id, const wxString& help)
+{
+    wxToolBarToolBase *tool = FindById(id);
+
+    wxCHECK_RET( tool, _T("SetToolShortHelp: no such tool") );
+
+    // TODO: set tooltip/short help
+    tool->SetShortHelp(help);
+}
+
+bool wxButtonToolBar::DoInsertTool(size_t WXUNUSED(pos),
+                             wxToolBarToolBase * WXUNUSED(tool))
+{
+    return true;
+}
+
+bool wxButtonToolBar::DoDeleteTool(size_t WXUNUSED(pos),
+                             wxToolBarToolBase * WXUNUSED(tool))
+{
+    // TODO
+    return true;
+}
+
+void wxButtonToolBar::DoEnableTool(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(enable))
+{
+    // TODO
+}
+
+void wxButtonToolBar::DoToggleTool(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(toggle))
+{
+    // TODO
+}
+
+void wxButtonToolBar::DoSetToggle(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(toggle))
+{
+    // TODO
+}
+
+wxToolBarToolBase *wxButtonToolBar::CreateTool(int id,
+                                         const wxString& label,
+                                         const wxBitmap& bmpNormal,
+                                         const wxBitmap& bmpDisabled,
+                                         wxItemKind kind,
+                                         wxObject *clientData,
+                                         const wxString& shortHelp,
+                                         const wxString& longHelp)
+{
+    return new wxButtonToolBarTool(this, id, label, bmpNormal, bmpDisabled, kind,
+                             clientData, shortHelp, longHelp);
+}
+
+wxToolBarToolBase *wxButtonToolBar::CreateTool(wxControl *control)
+{
+    return new wxButtonToolBarTool(this, control);
+}
+
+// ----------------------------------------------------------------------------
+// wxButtonToolBar geometry
+// ----------------------------------------------------------------------------
+
+wxRect wxButtonToolBar::GetToolRect(wxToolBarToolBase *toolBase) const
+{
+    const wxButtonToolBarTool *tool = (wxButtonToolBarTool *)toolBase;
+
+    wxRect rect;
+
+    wxCHECK_MSG( tool, rect, _T("GetToolRect: NULL tool") );
+
+    // ensure that we always have the valid tool position
+    if ( m_needsLayout )
+    {
+        wxConstCast(this, wxButtonToolBar)->DoLayout();
+    }
+
+    rect.x = tool->m_x - m_xMargin;
+    rect.y = tool->m_y - m_yMargin;
+
+    if ( IsVertical() )
+    {
+        if (tool->IsButton())
+        {
+            rect.width = m_defaultWidth;
+            rect.height = m_defaultHeight;
+            if (tool->GetButton())
+                rect.SetSize(tool->GetButton()->GetSize());
+        }
+        else if (tool->IsSeparator())
+        {
+            rect.width = m_defaultWidth;
+            rect.height = m_widthSeparator;
+        }
+        else // control
+        {
+            rect.width = tool->m_width;
+            rect.height = tool->m_height;
+        }
+    }
+    else // horizontal
+    {
+        if (tool->IsButton())
+        {
+            rect.width = m_defaultWidth;
+            rect.height = m_defaultHeight;
+            if (tool->GetButton())
+                rect.SetSize(tool->GetButton()->GetSize());
+        }
+        else if (tool->IsSeparator())
+        {
+            rect.width = m_widthSeparator;
+            rect.height = m_defaultHeight;
+        }
+        else // control
+        {
+            rect.width = tool->m_width;
+            rect.height = tool->m_height;
+        }
+    }
+
+    rect.width += 2*m_xMargin;
+    rect.height += 2*m_yMargin;
+
+    return rect;
+}
+
+bool wxButtonToolBar::Realize()
+{
+    if ( !wxToolBarBase::Realize() )
+        return false;
+    
+    m_needsLayout = true;
+    DoLayout();
+    
+    SetBestSize(wxSize(m_maxWidth, m_maxHeight));
+
+    return true;
+}
+
+void wxButtonToolBar::DoLayout()
+{
+    m_needsLayout = false;
+
+    wxCoord x = m_xMargin,
+            y = m_yMargin;
+
+    int maxHeight = 0;
+
+    const wxCoord widthTool = IsVertical() ? m_defaultHeight : m_defaultWidth;
+    wxCoord margin = IsVertical() ? m_xMargin : m_yMargin;
+    wxCoord *pCur = IsVertical() ? &y : &x;
+
+    // calculate the positions of all elements
+    for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
+          node;
+          node = node->GetNext() )
+    {
+        wxButtonToolBarTool *tool = (wxButtonToolBarTool *) node->GetData();
+
+        tool->m_x = x;
+        tool->m_y = y;
+        
+        if (tool->IsButton())
+        {
+            if (!tool->GetButton())
+            {
+                wxBitmapButton* bmpButton = new wxBitmapButton(this, tool->GetId(), tool->GetNormalBitmap(), wxPoint(tool->m_x, tool->m_y), wxDefaultSize,
+                    wxBU_AUTODRAW);
+                
+                tool->SetButton(bmpButton);
+            }
+            else
+            {
+                tool->GetButton()->Move(wxPoint(tool->m_x, tool->m_y));
+            }
+            
+            int w = widthTool;
+            if (tool->GetButton())
+            {
+                wxSize sz = tool->GetButton()->GetSize();
+                w = sz.x;
+
+                maxHeight = wxMax(maxHeight, sz.y);
+            }
+
+            *pCur += (w + GetToolPacking());
+        }
+        else if (tool->IsSeparator())
+        {
+            *pCur += m_widthSeparator;
+        }
+        else if (!IsVertical()) // horizontal control
+        {
+            wxControl *control = tool->GetControl();
+            wxSize size = control->GetSize();
+            tool->m_y += (m_defaultHeight - size.y)/2;
+            tool->m_width = size.x;
+            tool->m_height = size.y;
+
+            *pCur += tool->m_width;
+
+            maxHeight = wxMax(maxHeight, size.y);
+        }
+        *pCur += margin;
+    }
+
+    // calculate the total toolbar size
+    m_maxWidth = x + 2*m_xMargin;
+    m_maxHeight = maxHeight + 2*m_yMargin;
+}
+
+wxSize wxButtonToolBar::DoGetBestClientSize() const
+{
+    return wxSize(m_maxWidth, m_maxHeight);
+}
+
+// receives button commands
+void wxButtonToolBar::OnCommand(wxCommandEvent& event)
+{
+    wxButtonToolBarTool* tool = (wxButtonToolBarTool*) FindById(event.GetId());
+    if (!tool)
+    {
+        event.Skip();
+        return;
+    }
+
+    // TODO: handle toggle items
+    OnLeftClick(event.GetId(), false);    
+}
+
+#endif // wxUSE_TOOLBAR && wxUSE_BMPBUTTON
+
index aa4589b2b97228153158b767746eb1b69852da5a..096758dcc4bd0e4601323f73e2ae9132501b5fa8 100644 (file)
@@ -154,7 +154,12 @@ wxBookCtrlBase* wxPropertySheetDialog::CreateBookCtrl()
         bookCtrl = new wxChoicebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
 #endif
 #if wxUSE_TOOLBOOK
-    if (GetSheetStyle() & wxPROPSHEET_TOOLBOOK)
+#if wxUSE_TOOLBAR && wxUSE_BMPBUTTON
+    if (GetSheetStyle() & wxPROPSHEET_BUTTONTOOLBOOK)
+        bookCtrl = new wxToolbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style|wxBK_BUTTONBAR );
+    else
+#endif
+    if ((GetSheetStyle() & wxPROPSHEET_TOOLBOOK) || (GetSheetStyle() & wxPROPSHEET_BUTTONTOOLBOOK))
         bookCtrl = new wxToolbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
 #endif
 #if wxUSE_LISTBOOK
index f5720f5ab870acc6ed9534704c77ecdd78e1c425..b2536e57aefdedd4eed96780fdaa8d5f4d8e0967 100644 (file)
@@ -27,6 +27,7 @@
 #include "wx/imaglist.h"
 #include "wx/sysopt.h"
 #include "wx/toolbook.h"
+#include "wx/generic/buttonbar.h"
 
 // ----------------------------------------------------------------------------
 // various wxWidgets macros
@@ -89,7 +90,21 @@ bool wxToolbook::Create(wxWindow *parent,
         orient = wxTB_VERTICAL;
 
     // TODO: make more configurable
-    m_bookctrl = new wxToolBar
+    
+    if (style & wxBK_BUTTONBAR)
+    {
+        m_bookctrl = new wxButtonToolBar
+                 (
+                    this,
+                    wxID_TOOLBOOKTOOLBAR,
+                    wxDefaultPosition,
+                    wxDefaultSize,
+                    orient|wxTB_TEXT|wxTB_FLAT|wxTB_NODIVIDER|wxNO_BORDER
+                 );
+    }
+    else
+    {
+        m_bookctrl = new wxToolBar
                  (
                     this,
                     wxID_TOOLBOOKTOOLBAR,
@@ -97,6 +112,7 @@ bool wxToolbook::Create(wxWindow *parent,
                     wxDefaultSize,
                     orient | wxTB_TEXT|wxTB_FLAT|wxTB_NODIVIDER
                  );
+    }
 
     return true;
 }