From: Vadim Zeitlin Date: Sun, 10 Apr 2011 15:36:03 +0000 (+0000) Subject: Allow customizing AUI tab colours in wxAuiTabArt. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ceb9b8db81a7ae5d1c997610a689e47d322a5dfd Allow customizing AUI tab colours in wxAuiTabArt. Add wxAuiTabArt::SetColour() and SetActiveColour() methods and provide trivial default implementation of them in wxAuiDefaultTabArt to allow customizing the tab colours. Closes #11411. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index e9acd5e755..e542d014da 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -500,6 +500,7 @@ All (GUI): panel backgrounds, especially on OS X. - Add WXK_CONTROL_A..WXK_CONTROL_Z constants (Jan van Dijk). - Add support for alpha channel in colours in wxSVGFileDC (snowleopard). +- Allow customizing AUI tab colours in wxAuiTabArt (snowleopard). GTK: diff --git a/include/wx/aui/auibook.h b/include/wx/aui/auibook.h index 5fa37345d2..874cbcddf5 100644 --- a/include/wx/aui/auibook.h +++ b/include/wx/aui/auibook.h @@ -149,6 +149,8 @@ public: virtual void SetNormalFont(const wxFont& font) = 0; virtual void SetSelectedFont(const wxFont& font) = 0; virtual void SetMeasuringFont(const wxFont& font) = 0; + virtual void SetColour(const wxColour& colour) = 0; + virtual void SetActiveColour(const wxColour& colour) = 0; virtual void DrawBackground( wxDC& dc, @@ -212,6 +214,8 @@ public: void SetNormalFont(const wxFont& font); void SetSelectedFont(const wxFont& font); void SetMeasuringFont(const wxFont& font); + void SetColour(const wxColour& colour); + void SetActiveColour(const wxColour& colour); void DrawBackground( wxDC& dc, @@ -265,6 +269,7 @@ protected: wxPen m_base_colour_pen; wxPen m_border_pen; wxBrush m_base_colour_brush; + wxColour m_active_colour; wxBitmap m_active_close_bmp; wxBitmap m_disabled_close_bmp; wxBitmap m_active_left_bmp; @@ -297,6 +302,8 @@ public: void SetNormalFont(const wxFont& font); void SetSelectedFont(const wxFont& font); void SetMeasuringFont(const wxFont& font); + void SetColour(const wxColour& colour); + void SetActiveColour(const wxColour& colour); void DrawBackground( wxDC& dc, @@ -404,6 +411,8 @@ public: void SetNormalFont(const wxFont& normal_font); void SetSelectedFont(const wxFont& selected_font); void SetMeasuringFont(const wxFont& measuring_font); + void SetColour(const wxColour& colour); + void SetActiveColour(const wxColour& colour); void DoShowHide(); void SetRect(const wxRect& rect); diff --git a/interface/wx/aui/auibook.h b/interface/wx/aui/auibook.h index 42de40116b..b96cf4eb5b 100644 --- a/interface/wx/aui/auibook.h +++ b/interface/wx/aui/auibook.h @@ -340,6 +340,20 @@ public: */ virtual void SetSelectedFont(const wxFont& font) = 0; + /** + Sets the colour of the inactive tabs. + + @since 2.9.2 + */ + virtual void SetColour(const wxColour& colour) = 0; + + /** + Sets the colour of the selected tab. + + @since 2.9.2 + */ + virtual void SetActiveColour(const wxColour& colour) = 0; + /** Sets sizing information. */ diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index 0ba56c31cf..d308cdd4dd 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -206,6 +206,7 @@ wxAuiDefaultTabArt::wxAuiDefaultTabArt() base_colour = base_colour.ChangeLightness(92); } + m_active_colour = base_colour; m_base_colour = base_colour; wxColor border_colour = base_colour.ChangeLightness(75); @@ -438,8 +439,8 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc, // draw base background color wxRect r(tab_x, tab_y, tab_width, tab_height); - dc.SetPen(m_base_colour_pen); - dc.SetBrush(m_base_colour_brush); + dc.SetPen(wxPen(m_active_colour)); + dc.SetBrush(wxBrush(m_active_colour)); dc.DrawRectangle(r.x+1, r.y+1, r.width-1, r.height-4); // this white helps fill out the gradient at the top of the tab @@ -448,7 +449,7 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc, dc.DrawRectangle(r.x+2, r.y+1, r.width-3, r.height-4); // these two points help the rounded corners appear more antialiased - dc.SetPen(m_base_colour_pen); + dc.SetPen(wxPen(m_active_colour)); dc.DrawPoint(r.x+2, r.y+1); dc.DrawPoint(r.x+r.width-2, r.y+1); @@ -461,7 +462,7 @@ void wxAuiDefaultTabArt::DrawTab(wxDC& dc, // draw gradient background wxColor top_color = *wxWHITE; - wxColor bottom_color = m_base_colour; + wxColor bottom_color = m_active_colour; dc.GradientFillLinear(r, bottom_color, top_color, wxNORTH); } else @@ -831,6 +832,18 @@ void wxAuiDefaultTabArt::SetMeasuringFont(const wxFont& font) m_measuring_font = font; } +void wxAuiDefaultTabArt::SetColour(const wxColour& colour) +{ + m_base_colour = colour; + m_border_pen = wxPen(m_base_colour.ChangeLightness(75)); + m_base_colour_pen = wxPen(m_base_colour); + m_base_colour_brush = wxBrush(m_base_colour); +} + +void wxAuiDefaultTabArt::SetActiveColour(const wxColour& colour) +{ + m_active_colour = colour; +} // -- wxAuiSimpleTabArt class implementation -- @@ -876,10 +889,9 @@ wxAuiSimpleTabArt::~wxAuiSimpleTabArt() wxAuiTabArt* wxAuiSimpleTabArt::Clone() { - return static_cast(new wxAuiSimpleTabArt); + return new wxAuiSimpleTabArt(*this); } - void wxAuiSimpleTabArt::SetFlags(unsigned int flags) { m_flags = flags; @@ -913,6 +925,19 @@ void wxAuiSimpleTabArt::SetSizingInfo(const wxSize& tab_ctrl_size, m_fixed_tab_width = 220; } +void wxAuiSimpleTabArt::SetColour(const wxColour& colour) +{ + m_bkbrush = wxBrush(colour); + m_normal_bkbrush = wxBrush(colour); + m_normal_bkpen = wxPen(colour); +} + +void wxAuiSimpleTabArt::SetActiveColour(const wxColour& colour) +{ + m_selected_bkbrush = wxBrush(colour); + m_selected_bkpen = wxPen(colour); +} + void wxAuiSimpleTabArt::DrawBackground(wxDC& dc, wxWindow* WXUNUSED(wnd), const wxRect& rect) @@ -1365,6 +1390,16 @@ void wxAuiTabContainer::SetMeasuringFont(const wxFont& font) m_art->SetMeasuringFont(font); } +void wxAuiTabContainer::SetColour(const wxColour& colour) +{ + m_art->SetColour(colour); +} + +void wxAuiTabContainer::SetActiveColour(const wxColour& colour) +{ + m_art->SetActiveColour(colour); +} + void wxAuiTabContainer::SetRect(const wxRect& rect) { m_rect = rect;