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__)