]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow customizing AUI tab colours in wxAuiTabArt.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 10 Apr 2011 15:36:03 +0000 (15:36 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 10 Apr 2011 15:36:03 +0000 (15:36 +0000)
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

docs/changes.txt
include/wx/aui/auibook.h
interface/wx/aui/auibook.h
src/aui/auibook.cpp

index e9acd5e75585f35eb180d99133877d31b8974c7d..e542d014da3e7f4b0fd2cda646918bbbba8a1ad3 100644 (file)
@@ -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:
 
index 5fa37345d279cf008b47f13aab31419bed689bb0..874cbcddf5011b6bb071e43dd70b40317dcf4120 100644 (file)
@@ -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);
 
index 42de40116b7a42daea37898137fe9c25a5c8d1b1..b96cf4eb5be0026b9e5cce8b708a0d46584336b1 100644 (file)
@@ -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.
     */
index 0ba56c31cffdee5dcae85f4d655626cbad14cf8a..d308cdd4dd5033db2c718847ad52e60ec7c14185 100644 (file)
@@ -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<wxAuiTabArt*>(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;