1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/gtk/fontpicker.cpp
3 // Purpose: implementation of wxFontButton
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_FONTPICKERCTRL && defined(__WXGTK24__)
22 #include "wx/fontpicker.h"
24 #include "wx/fontutil.h" // for wxNativeFontInfo
25 #include "wx/gtk/private.h"
30 // ============================================================================
32 // ============================================================================
34 //-----------------------------------------------------------------------------
36 //-----------------------------------------------------------------------------
39 static void gtk_fontbutton_setfont_callback(GtkFontButton
*widget
,
42 // update the m_selectedFont member of the wxFontButton
44 p
->SetNativeFontInfo(gtk_font_button_get_font_name(widget
));
46 // fire the colour-changed event
47 wxFontPickerEvent
event(p
, p
->GetId(), p
->GetSelectedFont());
48 p
->GetEventHandler()->ProcessEvent(event
);
52 //-----------------------------------------------------------------------------
54 //-----------------------------------------------------------------------------
56 IMPLEMENT_DYNAMIC_CLASS(wxFontButton
, wxGenericFontButton
)
58 bool wxFontButton::Create( wxWindow
*parent
, wxWindowID id
,
59 const wxFont
&initial
,
60 const wxPoint
&pos
, const wxSize
&size
,
61 long style
, const wxValidator
& validator
,
62 const wxString
&name
)
64 if (!gtk_check_version(2,4,0))
68 if (!PreCreation( parent
, pos
, size
) ||
69 !wxControl::CreateBase(parent
, id
, pos
, size
, style
, validator
, name
))
71 wxFAIL_MSG( wxT("wxFontButton creation failed") );
75 m_widget
= gtk_font_button_new();
78 m_selectedFont
= initial
;
81 // honour the fontbutton styles
82 bool showall
= (style
& wxFNTP_FONTDESC_AS_LABEL
) != 0,
83 usefont
= (style
& wxFNTP_USEFONT_FOR_LABEL
) != 0;
84 gtk_font_button_set_show_style(GTK_FONT_BUTTON(m_widget
), showall
);
85 gtk_font_button_set_show_size(GTK_FONT_BUTTON(m_widget
), showall
);
87 gtk_font_button_set_use_size(GTK_FONT_BUTTON(m_widget
), usefont
);
88 gtk_font_button_set_use_font(GTK_FONT_BUTTON(m_widget
), usefont
);
90 gtk_widget_show( GTK_WIDGET(m_widget
) );
92 // GtkFontButton signals
93 g_signal_connect(m_widget
, "font-set",
94 G_CALLBACK(gtk_fontbutton_setfont_callback
), this);
97 m_parent
->DoAddChild( this );
103 return wxGenericFontButton::Create(parent
, id
, initial
, pos
, size
,
104 style
, validator
, name
);
108 wxFontButton::~wxFontButton()
112 void wxFontButton::UpdateFont()
114 if (!gtk_check_version(2,4,0))
116 const wxNativeFontInfo
*info
= m_selectedFont
.GetNativeFontInfo();
117 wxASSERT_MSG( info
, wxT("The fontbutton's internal font is not valid ?") );
119 const wxString
& fontname
= info
->ToString();
120 gtk_font_button_set_font_name(GTK_FONT_BUTTON(m_widget
), wxGTK_CONV(fontname
));
123 wxGenericFontButton::UpdateFont();
126 #endif // wxUSE_FONTPICKERCTRL && defined(__WXGTK24__)