wxNativeFontInfo changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
|
||||
wxFont wxNullFont;
|
||||
wxColour wxNullColour;
|
||||
wxPalette wxNullPalette;
|
||||
wxNativeFontInfo wxNullNativeFontInfo;
|
||||
|
||||
/* Default window names */
|
||||
const wxChar *wxControlNameStr = wxT("control");
|
||||
|
@@ -47,8 +47,7 @@ public:
|
||||
int weight = wxDEFAULT,
|
||||
bool underlined = FALSE,
|
||||
const wxString& faceName = wxEmptyString,
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||
wxFontRefData( const wxFontRefData& data );
|
||||
virtual ~wxFontRefData();
|
||||
|
||||
@@ -60,8 +59,7 @@ protected:
|
||||
int weight,
|
||||
bool underlined,
|
||||
const wxString& faceName,
|
||||
wxFontEncoding encoding,
|
||||
const wxNativeFontInfo& info);
|
||||
wxFontEncoding encoding);
|
||||
|
||||
private:
|
||||
wxList m_scaled_xfonts;
|
||||
@@ -72,6 +70,7 @@ private:
|
||||
bool m_underlined;
|
||||
wxString m_faceName;
|
||||
wxFontEncoding m_encoding;
|
||||
|
||||
wxNativeFontInfo m_nativeFontInfo;
|
||||
|
||||
friend class wxFont;
|
||||
@@ -91,8 +90,7 @@ void wxFontRefData::Init(int pointSize,
|
||||
int weight,
|
||||
bool underlined,
|
||||
const wxString& faceName,
|
||||
wxFontEncoding encoding,
|
||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
||||
wxFontEncoding encoding)
|
||||
{
|
||||
if (family == wxDEFAULT)
|
||||
m_family = wxSWISS;
|
||||
@@ -118,24 +116,22 @@ void wxFontRefData::Init(int pointSize,
|
||||
|
||||
m_underlined = underlined;
|
||||
m_encoding = encoding;
|
||||
m_nativeFontInfo = info;
|
||||
}
|
||||
|
||||
wxFontRefData::wxFontRefData( const wxFontRefData& data )
|
||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||
{
|
||||
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
|
||||
data.m_underlined, data.m_faceName, data.m_encoding,
|
||||
data.m_nativeFontInfo );
|
||||
data.m_underlined, data.m_faceName, data.m_encoding);
|
||||
}
|
||||
|
||||
wxFontRefData::wxFontRefData(int size, int family, int style,
|
||||
int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
|
||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
||||
int weight, bool underlined,
|
||||
const wxString& faceName,
|
||||
wxFontEncoding encoding)
|
||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||
{
|
||||
Init(size, family, style, weight,
|
||||
underlined, faceName, encoding, info);
|
||||
Init(size, family, style, weight, underlined, faceName, encoding);
|
||||
}
|
||||
|
||||
wxFontRefData::~wxFontRefData()
|
||||
@@ -179,7 +175,14 @@ void wxFont::Init()
|
||||
|
||||
wxFont::wxFont(const wxNativeFontInfo& info)
|
||||
{
|
||||
Create(info.xFontName, wxFontData());
|
||||
Init();
|
||||
|
||||
Create(info.ToString());
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info)
|
||||
{
|
||||
return Create(info.xFontName);
|
||||
}
|
||||
|
||||
bool wxFont::Create( int pointSize,
|
||||
@@ -188,20 +191,19 @@ bool wxFont::Create( int pointSize,
|
||||
int weight,
|
||||
bool underlined,
|
||||
const wxString& face,
|
||||
wxFontEncoding encoding,
|
||||
const wxNativeFontInfo& info )
|
||||
wxFontEncoding encoding)
|
||||
{
|
||||
m_refData = new wxFontRefData(pointSize, family, style, weight,
|
||||
underlined, face, encoding, info);
|
||||
underlined, face, encoding);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
||||
bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
|
||||
{
|
||||
Init();
|
||||
|
||||
if(!fontname)
|
||||
if( !fontname )
|
||||
{
|
||||
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
|
||||
return TRUE;
|
||||
@@ -267,7 +269,7 @@ bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
||||
tn.GetNextToken(); // avg width
|
||||
|
||||
// deal with font encoding
|
||||
M_FONTDATA->m_encoding = fontdata.GetEncoding();
|
||||
M_FONTDATA->m_encoding = enc;
|
||||
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
|
||||
{
|
||||
wxString registry = tn.GetNextToken().MakeUpper(),
|
||||
@@ -376,13 +378,14 @@ wxFontEncoding wxFont::GetEncoding() const
|
||||
return M_FONTDATA->m_encoding;
|
||||
}
|
||||
|
||||
wxNativeFontInfo wxFont::GetNativeFontInfo() const
|
||||
wxNativeFontInfo *wxFont::GetNativeFontInfo() const
|
||||
{
|
||||
wxCHECK_MSG( Ok(), wxNullNativeFontInfo, wxT("invalid font") );
|
||||
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
|
||||
|
||||
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
|
||||
GetInternalFont();
|
||||
return M_FONTDATA->m_nativeFontInfo;
|
||||
|
||||
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#pragma implementation "fontdlg.h"
|
||||
#endif
|
||||
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/fontdlg.h"
|
||||
#include "wx/utils.h"
|
||||
#include "wx/intl.h"
|
||||
@@ -64,7 +65,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
|
||||
|
||||
if (!gfont)
|
||||
{
|
||||
wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
|
||||
wxMessageBox(_("Please choose a valid font."), _("Error"),
|
||||
wxOK | wxICON_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -101,13 +103,12 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
|
||||
|
||||
// we ignore the facename here - should be enough to choose an arbitrary
|
||||
// one if the registry/encoding are specified
|
||||
// dialog->m_fontData.EncodingInfo().facename = xfamily;
|
||||
fontdata.EncodingInfo().xregistry = xregistry;
|
||||
fontdata.EncodingInfo().xencoding = xencoding;
|
||||
|
||||
// pass fontdata to wxFont ctor so that it can get the encoding from there
|
||||
// if it is already known (otherwise it will try to deduce it itself)
|
||||
dialog->m_fontData.SetChosenFont( wxFont(fontname, fontdata) );
|
||||
dialog->m_fontData.SetChosenFont(wxFont(fontname, fontdata.GetEncoding()));
|
||||
|
||||
g_free( fontname );
|
||||
|
||||
@@ -178,11 +179,21 @@ wxFontDialog::wxFontDialog( wxWindow *parent, wxFontData *fontdata )
|
||||
wxFont font = m_fontData.GetInitialFont();
|
||||
if( font.Ok() )
|
||||
{
|
||||
wxNativeFontInfo info = font.GetNativeFontInfo();
|
||||
wxNativeFontInfo *info = font.GetNativeFontInfo();
|
||||
|
||||
if( info.xFontName.IsEmpty() )
|
||||
font.GetInternalFont();
|
||||
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
|
||||
if ( info )
|
||||
{
|
||||
const wxString& fontname = info->xFontName;
|
||||
if ( !fontname )
|
||||
font.GetInternalFont();
|
||||
gtk_font_selection_dialog_set_font_name(sel,
|
||||
wxConvCurrent->cWX2MB(fontname));
|
||||
}
|
||||
else
|
||||
{
|
||||
// this is not supposed to happen!
|
||||
wxFAIL_MSG(_T("font is ok but no native font info?"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user