X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f60765b0fc0d8e38caebada76a89365335c99ae8..71aba8333cc915afff9e740c944f7fa7247abacb:/wxPython/src/fonts.i diff --git a/wxPython/src/fonts.i b/wxPython/src/fonts.i index 454e4af1bc..289562f068 100644 --- a/wxPython/src/fonts.i +++ b/wxPython/src/fonts.i @@ -17,7 +17,6 @@ #include "helpers.h" #include #include -#include #include #include #include @@ -75,6 +74,7 @@ enum wxFontWeight }; + // font encodings enum wxFontEncoding { @@ -116,7 +116,7 @@ enum wxFontEncoding // and for Windows wxFONTENCODING_CP874, // WinThai wxFONTENCODING_CP932, // Japanese (shift-JIS) - wxFONTENCODING_CP936, // Chiniese simplified (GB) + wxFONTENCODING_CP936, // Chinese simplified (GB) wxFONTENCODING_CP949, // Korean (Hangul charset) wxFONTENCODING_CP950, // Chinese (traditional - Big5) wxFONTENCODING_CP1250, // WinLatin2 @@ -132,14 +132,22 @@ enum wxFontEncoding wxFONTENCODING_UTF7, // UTF-7 Unicode encoding wxFONTENCODING_UTF8, // UTF-8 Unicode encoding - wxFONTENCODING_UNICODE, // Unicode - currently used only by - // wxEncodingConverter class + // Far Eastern encodings + // Chinese + wxFONTENCODING_GB2312 = wxFONTENCODING_CP936, // Simplified Chinese + wxFONTENCODING_BIG5 = wxFONTENCODING_CP950, // Traditional Chinese + + // Japanese (see http://zsigri.tripod.com/fontboard/cjk/jis.html) + wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932, // Shift JIS + wxFONTENCODING_EUC_JP = wxFONTENCODING_UTF8 + 1, // Extended Unix Codepage + // for Japanese + + wxFONTENCODING_UNICODE, // Unicode (for wxEncodingConverter only) wxFONTENCODING_MAX }; - //--------------------------------------------------------------------------- // wxNativeFontInfo is platform-specific font representation: this struct // should be considered as opaque font description only used by the native @@ -148,26 +156,11 @@ enum wxFontEncoding // ToString() and restore them using FromString()) struct wxNativeFontInfo { -#ifdef __WXGTK__ - // init the elements from an XLFD, return TRUE if ok - bool FromXFontName(const wxString& xFontName); - - // return false if we were never initialized with a valid XLFD - bool IsDefault() const; - - // generate an XLFD using the fontElements - wxString GetXFontName() const; - - // set the XFLD - void SetXFontName(const wxString& xFontName); -#endif - - wxNativeFontInfo() { Init(); } + wxNativeFontInfo(); // reset to the default state void Init(); -#ifndef __WXGTK__ // accessors and modifiers for the font elements int GetPointSize() const; wxFontStyle GetStyle() const; @@ -184,7 +177,6 @@ struct wxNativeFontInfo void SetFaceName(wxString facename); void SetFamily(wxFontFamily family); void SetEncoding(wxFontEncoding encoding); -#endif // it is important to be able to serialize wxNativeFontInfo objects to be // able to store them (in config file, for example) @@ -205,6 +197,34 @@ struct wxNativeFontInfo }; +%{ +// Fix some link errors... Remove this when these methods get real implementations... +#if defined(__WXGTK__) || defined(__WXX11__) +#if wxUSE_PANGO +void wxNativeFontInfo::SetPointSize(int pointsize) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetStyle(wxFontStyle style) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetWeight(wxFontWeight weight) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined)) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFaceName(wxString facename) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFamily(wxFontFamily family) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) + { wxFAIL_MSG( _T("not implemented") ); } +#endif +#endif +%} + //--------------------------------------------------------------------------- // wxFontMapper manages user-definable correspondence between logical font // names and the fonts present on the machine. @@ -223,14 +243,46 @@ public: wxFontMapper(); ~wxFontMapper(); + // return instance of the wxFontMapper singleton + static wxFontMapper *Get(); + // set the sigleton to 'mapper' instance and return previous one + static wxFontMapper *Set(wxFontMapper *mapper); + + + // returns the encoding for the given charset (in the form of RFC 2046) or + // wxFONTENCODING_SYSTEM if couldn't decode it + // + // interactive parameter is ignored in the base class, we behave as if it + // were always false + virtual wxFontEncoding CharsetToEncoding(const wxString& charset, + bool interactive = true); + + + // get the number of font encodings we know about + static size_t GetSupportedEncodingsCount(); + + // get the n-th supported encoding + static wxFontEncoding GetEncoding(size_t n); + + // return internal string identifier for the encoding (see also + // GetEncodingDescription()) + static wxString GetEncodingName(wxFontEncoding encoding); + + // return user-readable string describing the given encoding + // + // NB: hard-coded now, but might change later (read it from config?) + static wxString GetEncodingDescription(wxFontEncoding encoding); + + + // set the config object to use (may be NULL to use default) + void SetConfig(wxConfigBase *config); + + // set the root config path to use (should be an absolute path) + void SetConfigPath(const wxString& prefix); + + // return default config path + static const wxChar *GetDefaultConfigPath(); - // find an alternative for the given encoding (which is supposed to not be - // available on this system). If successful, return TRUE and rwxFontEcoding - // that can be used it wxFont ctor otherwise return FALSE - //bool GetAltForEncoding(wxFontEncoding encoding, - // wxFontEncoding *alt_encoding, - // const wxString& facename = wxPyEmptyString, - // bool interactive = TRUE); // Find an alternative for the given encoding (which is supposed to not be @@ -256,40 +308,12 @@ public: bool IsEncodingAvailable(wxFontEncoding encoding, const wxString& facename = wxPyEmptyString); - // returns the encoding for the given charset (in the form of RFC 2046) or - // wxFONTENCODING_SYSTEM if couldn't decode it - wxFontEncoding CharsetToEncoding(const wxString& charset, - bool interactive = TRUE); - - // return internal string identifier for the encoding (see also - // GetEncodingDescription()) - static wxString GetEncodingName(wxFontEncoding encoding); - - // return user-readable string describing the given encoding - // - // NB: hard-coded now, but might change later (read it from config?) - static wxString GetEncodingDescription(wxFontEncoding encoding); - // the parent window for modal dialogs - void SetDialogParent(wxWindow *parent); + void SetDialogParent(wxWindow *parent) { m_windowParent = parent; } // the title for the dialogs (note that default is quite reasonable) - void SetDialogTitle(const wxString& title); - - // functions which allow to configure the config object used: by default, - // the global one (from wxConfigBase::Get() will be used) and the default - // root path for the config settings is the string returned by - // GetDefaultConfigPath() + void SetDialogTitle(const wxString& title) { m_titleDialog = title; } - - // set the config object to use (may be NULL to use default) - void SetConfig(wxConfigBase *config); - - // set the root config path to use (should be an absolute path) - void SetConfigPath(const wxString& prefix); - - // return default config path - static wxString GetDefaultConfigPath(); }; @@ -303,6 +327,13 @@ public: wxFontEncoding encoding=wxFONTENCODING_DEFAULT); %name(wxFontFromNativeInfo)wxFont(const wxNativeFontInfo& info); + %addmethods { + %new wxFont* wxFontFromNativeInfoString(const wxString& info) { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } + } ~wxFont(); @@ -336,9 +367,13 @@ public: wxString GetStyleString() const; wxString GetWeightString() const; + void SetNoAntiAliasing( bool no = TRUE ); + bool GetNoAntiAliasing(); + static wxFontEncoding GetDefaultEncoding(); static void SetDefaultEncoding(wxFontEncoding encoding); + %pragma(python) addtoclass = "def __nonzero__(self): return self.Ok()" }; @@ -408,7 +443,9 @@ public: enum wxLanguage { + // user's default/preffered language as got from OS: wxLANGUAGE_DEFAULT, + // unknown language, if wxLocale::GetSystemLanguage fails: wxLANGUAGE_UNKNOWN, wxLANGUAGE_ABKHAZIAN, @@ -687,16 +724,28 @@ public: wxLocale(int language = wxLANGUAGE_DEFAULT, int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); - // the same as a function (returns TRUE on success) - bool Init(const wxString& szName, - const wxString& szShort = wxPyEmptyString, - const wxString& szLocale = wxPyEmptyString, - bool bLoadDefault = TRUE, - bool bConvertEncoding = FALSE); - // restores old locale ~wxLocale(); + %name(Init1)bool Init(const wxString& szName, + const wxString& szShort = wxPyEmptyString, + const wxString& szLocale = wxPyEmptyString, + bool bLoadDefault = TRUE, + bool bConvertEncoding = FALSE); + + %name(Init2) bool Init(int language = wxLANGUAGE_DEFAULT, + int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); + + %pragma(python) addtoclass = " + def Init(self, *_args, **_kwargs): + if type(_args[0]) in [type(''), type(u'')]: + val = self.Init1(*_args, **_kwargs) + else: + val = self.Init2(*_args, **_kwargs) + return val + " + + // Try to get user's (or OS's) prefered language setting. // Return wxLANGUAGE_UNKNOWN if language-guessing algorithm failed static int GetSystemLanguage(); @@ -751,6 +800,22 @@ public: // check if the given catalog is loaded bool IsLoaded(const wxString& szDomain) const; + // Retrieve the language info struct for the given language + // + // Returns NULL if no info found, pointer must *not* be deleted by caller + static const wxLanguageInfo *GetLanguageInfo(int lang); + + // Returns language name in English or empty string if the language + // is not in database + static wxString GetLanguageName(int lang); + + // Find the language for the given locale string which may be either a + // canonical ISO 2 letter language code ("xx"), a language code followed by + // the country code ("xx_XX") or a Windows full language name ("Xxxxx...") + // + // Returns NULL if no info found, pointer must *not* be deleted by caller + static const wxLanguageInfo *FindLanguageInfo(const wxString& locale); + // Add custom language to the list of known languages. // Notes: 1) wxLanguageInfo contains platform-specific data // 2) must be called before Init to have effect @@ -908,6 +973,7 @@ public: // equivalent encodings, regardless the platform, including itself. static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc); + %pragma(python) addtoclass = "def __nonzero__(self): return self.IsOk()" };