add support for GtkFontChooserDialog, new in GTK 3.2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e12b91a306
commit
dddda0eb88
@ -8,8 +8,8 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __GTK_FONTDLGH__
|
||||
#define __GTK_FONTDLGH__
|
||||
#ifndef _WX_GTK_FONTDLG_H_
|
||||
#define _WX_GTK_FONTDLG_H_
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxFontDialog
|
||||
@ -26,9 +26,6 @@ public:
|
||||
|
||||
virtual ~wxFontDialog();
|
||||
|
||||
// implementation only
|
||||
void SetChosenFont(const char *name);
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_6
|
||||
// deprecated interface, don't use
|
||||
wxDEPRECATED( wxFontDialog(wxWindow *parent, const wxFontData *data) );
|
||||
@ -38,7 +35,6 @@ protected:
|
||||
// create the GTK dialog
|
||||
virtual bool DoCreate(wxWindow *parent);
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxFontDialog)
|
||||
};
|
||||
|
||||
|
@ -129,18 +129,6 @@ static inline guint16 wx_gtk_entry_get_text_length(GtkEntry* entry)
|
||||
}
|
||||
#define gtk_entry_get_text_length wx_gtk_entry_get_text_length
|
||||
|
||||
static inline GtkWidget* wx_gtk_font_selection_dialog_get_cancel_button(GtkFontSelectionDialog* fsd)
|
||||
{
|
||||
return fsd->cancel_button;
|
||||
}
|
||||
#define gtk_font_selection_dialog_get_cancel_button wx_gtk_font_selection_dialog_get_cancel_button
|
||||
|
||||
static inline GtkWidget* wx_gtk_font_selection_dialog_get_ok_button(GtkFontSelectionDialog* fsd)
|
||||
{
|
||||
return fsd->ok_button;
|
||||
}
|
||||
#define gtk_font_selection_dialog_get_ok_button wx_gtk_font_selection_dialog_get_ok_button
|
||||
|
||||
static inline const guchar* wx_gtk_selection_data_get_data(GtkSelectionData* selection_data)
|
||||
{
|
||||
return selection_data->data;
|
||||
|
@ -16,65 +16,42 @@
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/intl.h"
|
||||
#include "wx/utils.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#endif
|
||||
|
||||
#include "wx/fontutil.h"
|
||||
|
||||
#include "wx/gtk/private.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "delete_event"
|
||||
// "response"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
extern "C" {
|
||||
static
|
||||
bool gtk_fontdialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win )
|
||||
static void response(GtkDialog* dialog, int response_id, wxFontDialog* win)
|
||||
{
|
||||
/*
|
||||
printf( "OnDelete from " );
|
||||
if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
|
||||
printf( win->GetClassInfo()->GetClassName() );
|
||||
printf( ".\n" );
|
||||
*/
|
||||
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
|
||||
{
|
||||
GtkFontSelectionDialog* sel = GTK_FONT_SELECTION_DIALOG(dialog);
|
||||
wxGtkString name(gtk_font_selection_dialog_get_font_name(sel));
|
||||
win->GetFontData().SetChosenFont(wxFont(wxString::FromUTF8(name)));
|
||||
}
|
||||
}
|
||||
|
||||
win->Close();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "clicked" for OK-button
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
extern "C" {
|
||||
static
|
||||
void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dialog )
|
||||
{
|
||||
GtkFontSelectionDialog *fontdlg = GTK_FONT_SELECTION_DIALOG(dialog->m_widget);
|
||||
|
||||
wxGtkString fontname(gtk_font_selection_dialog_get_font_name(fontdlg));
|
||||
dialog->SetChosenFont( fontname);
|
||||
|
||||
wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK);
|
||||
event.SetEventObject( dialog );
|
||||
dialog->HandleWindowEvent( event );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "clicked" for Cancel-button
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
extern "C" {
|
||||
static
|
||||
void gtk_fontdialog_cancel_callback( GtkWidget *WXUNUSED(w), wxFontDialog *dialog )
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL);
|
||||
event.SetEventObject( dialog );
|
||||
dialog->HandleWindowEvent( event );
|
||||
if (win->IsModal())
|
||||
win->EndModal(rc);
|
||||
else
|
||||
win->Show(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,24 +73,24 @@ bool wxFontDialog::DoCreate(wxWindow *parent)
|
||||
return false;
|
||||
}
|
||||
|
||||
wxString m_message( _("Choose font") );
|
||||
m_widget = gtk_font_selection_dialog_new( wxGTK_CONV( m_message ) );
|
||||
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 (gtk_check_version(3,2,0) == NULL)
|
||||
m_widget = gtk_font_chooser_dialog_new(wxGTK_CONV(message), gtk_parent);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
m_widget = gtk_font_selection_dialog_new(wxGTK_CONV(message));
|
||||
if (gtk_parent)
|
||||
gtk_window_set_transient_for(GTK_WINDOW(m_widget), gtk_parent);
|
||||
}
|
||||
g_object_ref(m_widget);
|
||||
|
||||
if (parent)
|
||||
gtk_window_set_transient_for(GTK_WINDOW(m_widget),
|
||||
GTK_WINDOW(parent->m_widget));
|
||||
|
||||
GtkFontSelectionDialog *sel = GTK_FONT_SELECTION_DIALOG(m_widget);
|
||||
|
||||
g_signal_connect (gtk_font_selection_dialog_get_ok_button(sel), "clicked",
|
||||
G_CALLBACK (gtk_fontdialog_ok_callback), this);
|
||||
|
||||
g_signal_connect (gtk_font_selection_dialog_get_cancel_button(sel), "clicked",
|
||||
G_CALLBACK (gtk_fontdialog_cancel_callback), this);
|
||||
|
||||
g_signal_connect (m_widget, "delete_event",
|
||||
G_CALLBACK (gtk_fontdialog_delete_callback), this);
|
||||
g_signal_connect(m_widget, "response", G_CALLBACK(response), this);
|
||||
|
||||
wxFont font = m_fontData.GetInitialFont();
|
||||
if( font.IsOk() )
|
||||
@ -122,9 +99,16 @@ bool wxFontDialog::DoCreate(wxWindow *parent)
|
||||
|
||||
if ( info )
|
||||
{
|
||||
|
||||
const wxString& fontname = info->ToString();
|
||||
gtk_font_selection_dialog_set_font_name(sel, wxGTK_CONV(fontname));
|
||||
#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
|
||||
{
|
||||
const wxString& fontname = info->ToString();
|
||||
GtkFontSelectionDialog* sel = GTK_FONT_SELECTION_DIALOG(m_widget);
|
||||
gtk_font_selection_dialog_set_font_name(sel, wxGTK_CONV(fontname));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -140,9 +124,4 @@ wxFontDialog::~wxFontDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void wxFontDialog::SetChosenFont(const char *fontname)
|
||||
{
|
||||
m_fontData.SetChosenFont(wxFont( wxString::FromUTF8(fontname) ));
|
||||
}
|
||||
|
||||
#endif // wxUSE_FONTDLG && !__WXGPE__
|
||||
|
Loading…
Reference in New Issue
Block a user