1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        src/gtk/clrpicker.cpp 
   3 // Purpose:     implementation of wxColourButton 
   4 // Author:      Francesco Montorsi 
   8 // Copyright:   (c) Francesco Montorsi 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  13 // ---------------------------------------------------------------------------- 
  15 // ---------------------------------------------------------------------------- 
  17 // For compilers that support precompilation, includes "wx.h". 
  18 #include "wx/wxprec.h" 
  20 #if wxUSE_COLOURPICKERCTRL && defined(__WXGTK24__) 
  22 #include "wx/clrpicker.h" 
  26 // ============================================================================ 
  28 // ============================================================================ 
  30 //----------------------------------------------------------------------------- 
  32 //----------------------------------------------------------------------------- 
  35 static void gtk_clrbutton_setcolor_callback(GtkColorButton 
*widget
, 
  38     // update the m_colour member of the wxColourButton 
  41     gtk_color_button_get_color(widget
, &gdkColor
); 
  42     p
->SetGdkColor(gdkColor
); 
  44     // fire the colour-changed event 
  45     wxColourPickerEvent 
event(p
, p
->GetId(), p
->GetColour()); 
  46     p
->GetEventHandler()->ProcessEvent(event
); 
  50 //----------------------------------------------------------------------------- 
  52 //----------------------------------------------------------------------------- 
  54 IMPLEMENT_DYNAMIC_CLASS(wxColourButton
, wxGenericColourButton
) 
  56 bool wxColourButton::Create( wxWindow 
*parent
, wxWindowID id
, 
  58                         const wxPoint 
&pos
, const wxSize 
&size
, 
  59                         long style
, const wxValidator
& validator
, 
  60                         const wxString 
&name 
) 
  62     if (!gtk_check_version(2,4,0)) 
  65         m_acceptsFocus 
= true; 
  67         if (!PreCreation( parent
, pos
, size 
) || 
  68             !wxControl::CreateBase(parent
, id
, pos
, size
, style
, validator
, name
)) 
  70             wxFAIL_MSG( wxT("wxColourButton creation failed") ); 
  75         m_widget 
= gtk_color_button_new_with_color( m_colour
.GetColor() ); 
  76         gtk_widget_show( GTK_WIDGET(m_widget
) ); 
  78         // GtkColourButton signals 
  79         g_signal_connect(m_widget
, "color-set", 
  80                         G_CALLBACK(gtk_clrbutton_setcolor_callback
), this); 
  83         m_parent
->DoAddChild( this ); 
  89         return wxGenericColourButton::Create(parent
, id
, col
, pos
, size
, 
  90                                              style
, validator
, name
); 
  94 wxColourButton::~wxColourButton() 
  98 void wxColourButton::UpdateColour() 
 100     if (!gtk_check_version(2,4,0)) 
 101         gtk_color_button_set_color(GTK_COLOR_BUTTON(m_widget
), m_colour
.GetColor()); 
 103         wxGenericColourButton::UpdateColour(); 
 106 #endif      // wxUSE_COLOURPICKERCTRL && defined(__WXGTK24__)