Make wxGenericColourButton derive from wxBitmapButton
authorRobert Roebling <robert@roebling.de>
Sat, 8 Dec 2007 17:29:19 +0000 (17:29 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 8 Dec 2007 17:29:19 +0000 (17:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/clrpickerg.h
src/generic/clrpickerg.cpp

index 758e51619ffb3e9dd9eab3affca52012bfba177c..585abfc1f5aad95ca2c755705fba4ac602d49941 100644 (file)
@@ -19,7 +19,7 @@
 // wxGenericColourButton: a button which brings up a wxColourDialog
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGenericColourButton : public wxButton,
+class WXDLLIMPEXP_CORE wxGenericColourButton : public wxBitmapButton,
                                                public wxColourPickerWidgetBase
 {
 public:
@@ -63,6 +63,7 @@ public:
 
 
 protected:
+    wxBitmap    m_bitmap;
 
     wxSize DoGetBestSize() const;
 
index 717b1811ae0700abe188fd2eedc487f06d30b7f7..4e2a86b32cc129480bd9fcc1d15b200495d653d1 100644 (file)
@@ -36,7 +36,7 @@
 // ============================================================================
 
 wxColourData wxGenericColourButton::ms_data;
-IMPLEMENT_DYNAMIC_CLASS(wxGenericColourButton, wxButton)
+IMPLEMENT_DYNAMIC_CLASS(wxGenericColourButton, wxBitmapButton)
 
 // ----------------------------------------------------------------------------
 // wxGenericColourButton
@@ -47,8 +47,10 @@ bool wxGenericColourButton::Create( wxWindow *parent, wxWindowID id,
                         const wxSize &size, long style,
                         const wxValidator& validator, const wxString &name)
 {
+    m_bitmap = wxBitmap( 60, 13 );
+
     // create this button
-    if (!wxButton::Create( parent, id, wxEmptyString, pos,
+    if (!wxBitmapButton::Create( parent, id, m_bitmap, pos,
                            size, style, validator, name ))
     {
         wxFAIL_MSG( wxT("wxGenericColourButton creation failed") );
@@ -99,33 +101,30 @@ void wxGenericColourButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
 
 void wxGenericColourButton::UpdateColour()
 {
-    if ( !m_colour.Ok() )
-    {
-        if ( HasFlag(wxCLRP_SHOW_LABEL) )
-            SetLabel(wxEmptyString);
-        return;
-    }
-
-    // some combinations of the fg/bg colours may be unreadable, so we invert
-    // the colour to make sure fg colour is different enough from m_colour
-    wxColour colFg(~m_colour.Red(), ~m_colour.Green(), ~m_colour.Blue());
-
-    SetForegroundColour(colFg);
-    SetBackgroundColour(m_colour);
-
+    wxMemoryDC dc(m_bitmap);
+    dc.SetPen( *wxTRANSPARENT_PEN );
+    dc.SetBrush( wxBrush(m_colour) );
+    dc.DrawRectangle( 0,0,m_bitmap.GetWidth(),m_bitmap.GetHeight() );
+    dc.SelectObject( wxNullBitmap );
+    SetBitmapLabel( m_bitmap );
+    
+#if 0
     if ( HasFlag(wxCLRP_SHOW_LABEL) )
         SetLabel(m_colour.GetAsString(wxC2S_HTML_SYNTAX));
+#endif
 }
 
 wxSize wxGenericColourButton::DoGetBestSize() const
 {
-    wxSize sz(wxButton::DoGetBestSize());
+    wxSize sz(wxBitmapButton::DoGetBestSize());
+    sz.y += 6;
+    sz.x += 30;
     if ( HasFlag(wxCLRP_SHOW_LABEL) )
         return sz;
 
     // if we have no label, then make this button a square
-    // (like e.g. native GTK version of this control)
-    sz.SetWidth(sz.GetHeight());
+    // (like e.g. native GTK version of this control) ???
+    // sz.SetWidth(sz.GetHeight());
     return sz;
 }