X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a16c6fdcbdcf470b00cddbf8635bb6904fa6e1bb..b5b0a35d6b648aead1aa353dfe9c03775496981f:/src/generic/toolbkg.cpp diff --git a/src/generic/toolbkg.cpp b/src/generic/toolbkg.cpp index cd205b2dd2..e0cbd98b81 100644 --- a/src/generic/toolbkg.cpp +++ b/src/generic/toolbkg.cpp @@ -9,14 +9,6 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -26,11 +18,19 @@ #if wxUSE_TOOLBOOK +#ifndef WX_PRECOMP + #include "wx/icon.h" + #include "wx/settings.h" + #include "wx/toolbar.h" +#endif + #include "wx/imaglist.h" -#include "wx/toolbar.h" -#include "wx/toolbook.h" -#include "wx/settings.h" #include "wx/sysopt.h" +#include "wx/toolbook.h" + +#if defined(__WXMAC__) && wxUSE_TOOLBAR && wxUSE_BMPBUTTON +#include "wx/generic/buttonbar.h" +#endif // ---------------------------------------------------------------------------- // various wxWidgets macros @@ -46,8 +46,10 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolbook, wxBookCtrlBase) IMPLEMENT_DYNAMIC_CLASS(wxToolbookEvent, wxNotifyEvent) +#if !WXWIN_COMPATIBILITY_EVENT_TYPES const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING = wxNewEventType(); const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED = wxNewEventType(); +#endif const int wxID_TOOLBOOKTOOLBAR = wxNewId(); BEGIN_EVENT_TABLE(wxToolbook, wxBookCtrlBase) @@ -70,8 +72,7 @@ void wxToolbook::Init() m_needsRealizing = false; } -bool -wxToolbook::Create(wxWindow *parent, +bool wxToolbook::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -79,9 +80,7 @@ wxToolbook::Create(wxWindow *parent, const wxString& name) { if ( (style & wxBK_ALIGN_MASK) == wxBK_DEFAULT ) - { style |= wxBK_TOP; - } // no border for this control style &= ~wxBORDER_MASK; @@ -91,20 +90,36 @@ wxToolbook::Create(wxWindow *parent, wxDefaultValidator, name) ) return false; - int orient = wxTB_HORIZONTAL; if ( (style & (wxBK_LEFT | wxBK_RIGHT)) != 0) orient = wxTB_VERTICAL; - + // TODO: make more configurable - m_bookctrl = new wxToolBar + +#if defined(__WXMAC__) && wxUSE_TOOLBAR && wxUSE_BMPBUTTON + if (style & wxBK_BUTTONBAR) + { + m_bookctrl = new wxButtonToolBar + ( + this, + wxID_TOOLBOOKTOOLBAR, + wxDefaultPosition, + wxDefaultSize, + orient|wxTB_TEXT|wxTB_FLAT|wxNO_BORDER + ); + } + else +#endif + { + m_bookctrl = new wxToolBar ( this, wxID_TOOLBOOKTOOLBAR, wxDefaultPosition, wxDefaultSize, - orient | wxTB_TEXT|wxTB_FLAT|wxTB_NODIVIDER + orient|wxTB_TEXT|wxTB_FLAT|wxTB_NODIVIDER|wxNO_BORDER ); + } return true; } @@ -139,7 +154,7 @@ void wxToolbook::OnSize(wxSizeEvent& event) { if (m_needsRealizing) Realize(); - + wxBookCtrlBase::OnSize(event); } @@ -161,7 +176,6 @@ wxSize wxToolbook::CalcSizeFromPage(const wxSize& sizePage) const return size; } - // ---------------------------------------------------------------------------- // accessing the pages // ---------------------------------------------------------------------------- @@ -169,7 +183,7 @@ wxSize wxToolbook::CalcSizeFromPage(const wxSize& sizePage) const bool wxToolbook::SetPageText(size_t n, const wxString& strText) { // Assume tool ids start from 1 - wxToolBarToolBase* tool = GetToolBar()->FindById(n+1); + wxToolBarToolBase* tool = GetToolBar()->FindById(n + 1); if (tool) { tool->SetLabel(strText); @@ -181,11 +195,9 @@ bool wxToolbook::SetPageText(size_t n, const wxString& strText) wxString wxToolbook::GetPageText(size_t n) const { - wxToolBarToolBase* tool = GetToolBar()->FindById(n+1); + wxToolBarToolBase* tool = GetToolBar()->FindById(n + 1); if (tool) - { return tool->GetLabel(); - } else return wxEmptyString; } @@ -202,8 +214,8 @@ bool wxToolbook::SetPageImage(size_t n, int imageId) wxASSERT( GetImageList() != NULL ); if (!GetImageList()) return false; - - wxToolBarToolBase* tool = GetToolBar()->FindById(n+1); + + wxToolBarToolBase* tool = GetToolBar()->FindById(n + 1); if (tool) { // Find the image list index for this tool @@ -257,7 +269,7 @@ int wxToolbook::SetSelection(size_t n) // change m_selection now to ignore the selection change event m_selection = n; - GetToolBar()->ToggleTool(n+1, true); + GetToolBar()->ToggleTool(n + 1, true); // program allows the page change event.SetEventType(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED); @@ -281,9 +293,9 @@ void wxToolbook::Realize() GetToolBar()->Realize(); wxSystemOptions::SetOption(wxT("msw.remap"), remap); } - + m_needsRealizing = false; - + if (m_selection == -1) m_selection = 0; @@ -293,7 +305,7 @@ void wxToolbook::Realize() m_selection = -1; SetSelection(sel); } - + DoSize(); } @@ -308,8 +320,7 @@ void wxToolbook::OnIdle(wxIdleEvent& event) // adding/removing the pages // ---------------------------------------------------------------------------- -bool -wxToolbook::InsertPage(size_t n, +bool wxToolbook::InsertPage(size_t n, wxWindow *page, const wxString& text, bool bSelect, @@ -319,9 +330,9 @@ wxToolbook::InsertPage(size_t n, return false; m_needsRealizing = true; - + wxASSERT(GetImageList() != NULL); - + if (!GetImageList()) return false; @@ -335,16 +346,16 @@ wxToolbook::InsertPage(size_t n, wxBitmap bitmap; bitmap.CopyFromIcon(icon); #endif - + m_maxBitmapSize.x = wxMax(bitmap.GetWidth(), m_maxBitmapSize.x); m_maxBitmapSize.y = wxMax(bitmap.GetHeight(), m_maxBitmapSize.y); - + GetToolBar()->SetToolBitmapSize(m_maxBitmapSize); - GetToolBar()->AddRadioTool(n+1, text, bitmap, wxNullBitmap, text); + GetToolBar()->AddRadioTool(n + 1, text, bitmap, wxNullBitmap, text); if (bSelect) { - // GetToolBar()->ToggleTool(n, true); + GetToolBar()->ToggleTool(n, true); m_selection = n; } else @@ -361,7 +372,7 @@ wxWindow *wxToolbook::DoRemovePage(size_t page) if ( win ) { - GetToolBar()->DeleteTool(page+1); + GetToolBar()->DeleteTool(page + 1); if (m_selection >= (int)page) { @@ -396,7 +407,7 @@ bool wxToolbook::DeleteAllPages() void wxToolbook::OnToolSelected(wxCommandEvent& event) { - const int selNew = event.GetId() -1; + const int selNew = event.GetId() - 1; if ( selNew == m_selection ) {