Files
wxWidgets/src/gtk/fontdlg.cpp
Paul Cornett 08c176650c Silence deprecation warnings about gtk_font_selection_dialog_*
We use GtkFontChooser when available
2016-02-08 10:44:50 -08:00

136 lines
4.0 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/gtk/fontdlg.cpp
// Purpose: wxFontDialog
// Author: Robert Roebling
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#if wxUSE_FONTDLG && !defined(__WXGPE__)
#include "wx/fontdlg.h"
#ifndef WX_PRECOMP
#include "wx/intl.h"
#endif
#include "wx/fontutil.h"
#include "wx/gtk/private.h"
//-----------------------------------------------------------------------------
// "response"
//-----------------------------------------------------------------------------
extern "C" {
static void response(GtkDialog* dialog, int response_id, wxFontDialog* win)
{
int rc = wxID_CANCEL;
if (response_id == GTK_RESPONSE_OK)
{
rc = wxID_OK;
#if GTK_CHECK_VERSION(3,2,0)
if (gtk_check_version(3,2,0) == NULL)
{
wxNativeFontInfo info;
info.description = gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(dialog));
win->GetFontData().SetChosenFont(wxFont(info));
}
else
#endif
{
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
GtkFontSelectionDialog* sel = GTK_FONT_SELECTION_DIALOG(dialog);
wxGtkString name(gtk_font_selection_dialog_get_font_name(sel));
win->GetFontData().SetChosenFont(wxFont(wxString::FromUTF8(name)));
wxGCC_WARNING_RESTORE()
}
}
if (win->IsModal())
win->EndModal(rc);
else
win->Show(false);
}
}
//-----------------------------------------------------------------------------
// wxFontDialog
//-----------------------------------------------------------------------------
wxIMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog);
bool wxFontDialog::DoCreate(wxWindow *parent)
{
parent = GetParentForModalDialog(parent, 0);
if (!PreCreation( parent, wxDefaultPosition, wxDefaultSize ) ||
!CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE,
wxDefaultValidator, wxT("fontdialog") ))
{
wxFAIL_MSG( wxT("wxFontDialog creation failed") );
return false;
}
const wxString message(_("Choose font"));
GtkWindow* gtk_parent = NULL;
if (parent)
gtk_parent = GTK_WINDOW(parent->m_widget);
#if GTK_CHECK_VERSION(3,2,0)
#if GLIB_CHECK_VERSION(2, 34, 0)
g_type_ensure(PANGO_TYPE_FONT_FACE);
#endif
if (gtk_check_version(3,2,0) == NULL)
m_widget = gtk_font_chooser_dialog_new(wxGTK_CONV(message), gtk_parent);
else
#endif
{
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
m_widget = gtk_font_selection_dialog_new(wxGTK_CONV(message));
if (gtk_parent)
gtk_window_set_transient_for(GTK_WINDOW(m_widget), gtk_parent);
wxGCC_WARNING_RESTORE()
}
g_object_ref(m_widget);
g_signal_connect(m_widget, "response", G_CALLBACK(response), this);
wxFont font = m_fontData.GetInitialFont();
if( font.IsOk() )
{
const wxNativeFontInfo *info = font.GetNativeFontInfo();
if ( info )
{
#if GTK_CHECK_VERSION(3,2,0)
if (gtk_check_version(3,2,0) == NULL)
gtk_font_chooser_set_font_desc(GTK_FONT_CHOOSER(m_widget), info->description);
else
#endif
{
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
const wxString& fontname = info->ToString();
GtkFontSelectionDialog* sel = GTK_FONT_SELECTION_DIALOG(m_widget);
gtk_font_selection_dialog_set_font_name(sel, wxGTK_CONV(fontname));
wxGCC_WARNING_RESTORE()
}
}
else
{
// this is not supposed to happen!
wxFAIL_MSG(wxT("font is ok but no native font info?"));
}
}
return true;
}
wxFontDialog::~wxFontDialog()
{
}
#endif // wxUSE_FONTDLG && !__WXGPE__