X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8674d3b5d4b32e5a6d8762475e5a2eba267e9b8d..9b881d3628604915e24b2eb56ecc4504f77ba8b1:/wxPython/src/_font.i diff --git a/wxPython/src/_font.i b/wxPython/src/_font.i index 51a138b0c5..ac507526bc 100644 --- a/wxPython/src/_font.i +++ b/wxPython/src/_font.i @@ -61,33 +61,26 @@ enum wxFontWeight enum { // no special flags: font with default weight/slant/anti-aliasing - wxFONTFLAG_DEFAULT = 0, + wxFONTFLAG_DEFAULT, // slant flags (default: no slant) - wxFONTFLAG_ITALIC = 1 << 0, - wxFONTFLAG_SLANT = 1 << 1, + wxFONTFLAG_ITALIC, + wxFONTFLAG_SLANT, // weight flags (default: medium) - wxFONTFLAG_LIGHT = 1 << 2, - wxFONTFLAG_BOLD = 1 << 3, + wxFONTFLAG_LIGHT, + wxFONTFLAG_BOLD, // anti-aliasing flag: force on or off (default: the current system default) - wxFONTFLAG_ANTIALIASED = 1 << 4, - wxFONTFLAG_NOT_ANTIALIASED = 1 << 5, + wxFONTFLAG_ANTIALIASED, + wxFONTFLAG_NOT_ANTIALIASED, // underlined/strikethrough flags (default: no lines) - wxFONTFLAG_UNDERLINED = 1 << 6, - wxFONTFLAG_STRIKETHROUGH = 1 << 7, + wxFONTFLAG_UNDERLINED, + wxFONTFLAG_STRIKETHROUGH, // the mask of all currently used flags - wxFONTFLAG_MASK = wxFONTFLAG_ITALIC | - wxFONTFLAG_SLANT | - wxFONTFLAG_LIGHT | - wxFONTFLAG_BOLD | - wxFONTFLAG_ANTIALIASED | - wxFONTFLAG_NOT_ANTIALIASED | - wxFONTFLAG_UNDERLINED | - wxFONTFLAG_STRIKETHROUGH + wxFONTFLAG_MASK }; @@ -257,10 +250,18 @@ public: void SetStyle(wxFontStyle style); void SetWeight(wxFontWeight weight); void SetUnderlined(bool underlined); - void SetFaceName(wxString facename); + bool SetFaceName(wxString facename); void SetFamily(wxFontFamily family); void SetEncoding(wxFontEncoding encoding); +// TODO: +// // sets the first facename in the given array which is found +// // to be valid. If no valid facename is given, sets the +// // first valid facename returned by wxFontEnumerator::GetFacenames(). +// // Does not return a bool since it cannot fail. +// void SetFaceName(const wxArrayString &facenames); + + // it is important to be able to serialize wxNativeFontInfo objects to be // able to store them (in config file, for example) bool FromString(const wxString& s); @@ -277,6 +278,14 @@ public: // hopefully be understood by the user) bool FromUserString(const wxString& s); wxString ToUserString() const; + + %property(Encoding, GetEncoding, SetEncoding, doc="See `GetEncoding` and `SetEncoding`"); + %property(FaceName, GetFaceName, SetFaceName, doc="See `GetFaceName` and `SetFaceName`"); + %property(Family, GetFamily, SetFamily, doc="See `GetFamily` and `SetFamily`"); + %property(PointSize, GetPointSize, SetPointSize, doc="See `GetPointSize` and `SetPointSize`"); + %property(Style, GetStyle, SetStyle, doc="See `GetStyle` and `SetStyle`"); + %property(Underlined, GetUnderlined, SetUnderlined, doc="See `GetUnderlined` and `SetUnderlined`"); + %property(Weight, GetWeight, SetWeight, doc="See `GetWeight` and `SetWeight`"); }; @@ -352,7 +361,7 @@ public: // return instance of the wxFontMapper singleton static wxFontMapper *Get(); - // set the sigleton to 'mapper' instance and return previous one + // set the singleton to 'mapper' instance and return previous one static wxFontMapper *Set(wxFontMapper *mapper); @@ -371,10 +380,13 @@ public: // get the n-th supported encoding static wxFontEncoding GetEncoding(size_t n); - // return internal string identifier for the encoding (see also - // GetEncodingDescription()) + // return canonical name of this encoding (this is a short string, + // GetEncodingDescription() returns a longer one) static wxString GetEncodingName(wxFontEncoding encoding); +// // return a list of all names of this encoding (see GetEncodingName) +// static const wxChar** GetAllEncodingNames(wxFontEncoding encoding); + // return user-readable string describing the given encoding // // NB: hard-coded now, but might change later (read it from config?) @@ -387,9 +399,6 @@ public: static wxFontEncoding GetEncodingFromName(const wxString& name); - // 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); @@ -428,6 +437,8 @@ public: // the title for the dialogs (note that default is quite reasonable) void SetDialogTitle(const wxString& title); + + %property(AltForEncoding, GetAltForEncoding, doc="See `GetAltForEncoding`"); }; @@ -440,107 +451,389 @@ MustHaveApp(wxFont); MustHaveApp(wxFont::GetDefaultEncoding); MustHaveApp(wxFont::SetDefaultEncoding); +DocStr(wxFont, +"A font is an object which determines the appearance of text. Fonts are +used for drawing text to a device context, and setting the appearance +of a window's text. + +You can retrieve the current system font settings with `wx.SystemSettings`.", " + +The possible values for the family parameter of wx.Font constructor are: + + ======================== ============================= + wx.FONTFAMILY_DEFAULT Chooses a default font. + wx.FONTFAMILY_DECORATIVE A decorative font. + wx.FONTFAMILY_ROMAN A formal, serif font. + wx.FONTFAMILY_SCRIPT A handwriting font. + wx.FONTFAMILY_SWISS A sans-serif font. + wx.FONTFAMILY_MODERN Usually a fixed pitch font. + wx.FONTFAMILY_TELETYPE A teletype font. + ======================== ============================= + +The possible values for the weight parameter are: + + ==================== == + wx.FONTWEIGHT_NORMAL + wx.FONTWEIGHT_LIGHT + wx.FONTWEIGHT_BOLD + ==================== == + +The known font encodings are: + + =========================== ==================================== + wx.FONTENCODING_SYSTEM system default + wx.FONTENCODING_DEFAULT current default encoding + wx.FONTENCODING_ISO8859_1 West European (Latin1) + wx.FONTENCODING_ISO8859_2 Central and East European (Latin2) + wx.FONTENCODING_ISO8859_3 Esperanto (Latin3) + wx.FONTENCODING_ISO8859_4 Baltic (old) (Latin4) + wx.FONTENCODING_ISO8859_5 Cyrillic + wx.FONTENCODING_ISO8859_6 Arabic + wx.FONTENCODING_ISO8859_7 Greek + wx.FONTENCODING_ISO8859_8 Hebrew + wx.FONTENCODING_ISO8859_9 Turkish (Latin5) + wx.FONTENCODING_ISO8859_10 Variation of Latin4 (Latin6) + wx.FONTENCODING_ISO8859_11 Thai + wx.FONTENCODING_ISO8859_12 doesn't exist currently, but put it + here anyhow to make all ISO8859 + consecutive numbers + wx.FONTENCODING_ISO8859_13 Baltic (Latin7) + wx.FONTENCODING_ISO8859_14 Latin8 + wx.FONTENCODING_ISO8859_15 Latin9 (a.k.a. Latin0, includes euro) + wx.FONTENCODING_KOI8 Cyrillic charset + wx.FONTENCODING_ALTERNATIVE same as MS-DOS CP866 + wx.FONTENCODING_BULGARIAN used under Linux in Bulgaria + wx.FONTENCODING_CP437 original MS-DOS codepage + wx.FONTENCODING_CP850 CP437 merged with Latin1 + wx.FONTENCODING_CP852 CP437 merged with Latin2 + wx.FONTENCODING_CP855 another cyrillic encoding + wx.FONTENCODING_CP866 and another one + wx.FONTENCODING_CP874 WinThai + wx.FONTENCODING_CP1250 WinLatin2 + wx.FONTENCODING_CP1251 WinCyrillic + wx.FONTENCODING_CP1252 WinLatin1 + wx.FONTENCODING_CP1253 WinGreek (8859-7) + wx.FONTENCODING_CP1254 WinTurkish + wx.FONTENCODING_CP1255 WinHebrew + wx.FONTENCODING_CP1256 WinArabic + wx.FONTENCODING_CP1257 WinBaltic (same as Latin 7) + wx.FONTENCODING_UTF7 UTF-7 Unicode encoding + wx.FONTENCODING_UTF8 UTF-8 Unicode encoding + =========================== ==================================== + +"); + class wxFont : public wxGDIObject { public: %pythonPrepend wxFont "if kwargs.has_key('faceName'): kwargs['face'] = kwargs['faceName'];del kwargs['faceName']" - wxFont( int pointSize, int family, int style, int weight, - bool underline=false, const wxString& face = wxPyEmptyString, - wxFontEncoding encoding=wxFONTENCODING_DEFAULT); + DocCtorStr( + wxFont( int pointSize, int family, int style, int weight, + bool underline=false, const wxString& face = wxPyEmptyString, + wxFontEncoding encoding = wxFONTENCODING_DEFAULT), + "Creates a font object with the specified attributes. + + :param pointSize: The size of the font in points. + + :param family: Font family. A generic way of referring to fonts + without specifying actual facename. It can be One of + the ``wx.FONTFAMILY_xxx`` constants. + + :param style: One of the ``wx.FONTSTYLE_xxx`` constants. + + :param weight: Font weight, sometimes also referred to as font + boldness. One of the ``wx.FONTWEIGHT_xxx`` constants. + + :param underline: The value can be ``True`` or ``False`` and + indicates whether the font will include an underline. This + may not be supported on all platforms. + + :param face: An optional string specifying the actual typeface to + be used. If it is an empty string, a default typeface will be + chosen based on the family. + + :param encoding: An encoding which may be one of the + ``wx.FONTENCODING_xxx`` constants. If the specified encoding isn't + available, no font is created. + +:see: `wx.FFont`, `wx.FontFromPixelSize`, `wx.FFontFromPixelSize`, + `wx.FontFromNativeInfoString`, `wx.FontFromNativeInfo` +", ""); + ~wxFont(); - %name(FontFromNativeInfo) wxFont(const wxNativeFontInfo& info); + %RenameDocCtor( + FontFromNativeInfo, + "Construct a `wx.Font` from a `wx.NativeFontInfo` object.", "", + wxFont(const wxNativeFontInfo& info)); + %extend { - %name(FontFromNativeInfoString) wxFont(const wxString& info) { - wxNativeFontInfo nfi; - nfi.FromString(info); - return new wxFont(nfi); - } - - %name(Font2) wxFont(int pointSize, - wxFontFamily family, - int flags = wxFONTFLAG_DEFAULT, - const wxString& face = wxPyEmptyString, - wxFontEncoding encoding = wxFONTENCODING_DEFAULT) { - return wxFont::New(pointSize, family, flags, face, encoding); - } + %RenameDocCtor( + FontFromNativeInfoString, + "Construct a `wx.Font` from the string representation of a +`wx.NativeFontInfo` object.", "", + wxFont(const wxString& info)) + { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } } - // There is a real ctor for this on wxMSW, but not the others, so just use - // the factory funciton in all cases. - %extend { - %name(FontFromPixelSize) wxFont(const wxSize& pixelSize, - int family, - int style, - int weight, - bool underlined = false, - const wxString& face = wxEmptyString, - wxFontEncoding encoding = wxFONTENCODING_DEFAULT) { - return wxFontBase::New(pixelSize, family, - style, weight, underlined, - face, encoding); - } + + %extend { + %RenameDocCtor( + FFont, + "A bit of a simpler way to create a `wx.Font` using flags instead of +individual attribute settings. The value of flags can be a +combination of the following: + + ============================ == + wx.FONTFLAG_DEFAULT + wx.FONTFLAG_ITALIC + wx.FONTFLAG_SLANT + wx.FONTFLAG_LIGHT + wx.FONTFLAG_BOLD + wx.FONTFLAG_ANTIALIASED + wx.FONTFLAG_NOT_ANTIALIASED + wx.FONTFLAG_UNDERLINED + wx.FONTFLAG_STRIKETHROUGH + ============================ == + +:see: `wx.Font.__init__`", "", + + wxFont(int pointSize, + wxFontFamily family, + int flags = wxFONTFLAG_DEFAULT, + const wxString& face = wxPyEmptyString, + wxFontEncoding encoding = wxFONTENCODING_DEFAULT)) + { + return wxFont::New(pointSize, family, flags, face, encoding); + } + + + // There is a real ctor for this on wxMSW, but not the others, so just + // use the factory function in all cases. + + %RenameDocCtor( + FontFromPixelSize, + "Creates a font using a size in pixels rather than points. If there is +platform API support for this then it is used, otherwise a font with +the closest size is found using a binary search. + +:see: `wx.Font.__init__`", "", + wxFont(const wxSize& pixelSize, + int family, + int style, + int weight, + bool underlined = false, + const wxString& face = wxEmptyString, + wxFontEncoding encoding = wxFONTENCODING_DEFAULT)) + { + return wxFontBase::New(pixelSize, family, + style, weight, underlined, + face, encoding); + } + + %RenameDocCtor( + FFontFromPixelSize, + "Creates a font using a size in pixels rather than points. If there is +platform API support for this then it is used, otherwise a font with +the closest size is found using a binary search. + +:see: `wx.Font.__init__`, `wx.FFont`", "", + wxFont(const wxSize& pixelSize, + wxFontFamily family, + int flags = wxFONTFLAG_DEFAULT, + const wxString& face = wxEmptyString, + wxFontEncoding encoding = wxFONTENCODING_DEFAULT)) + { + return wxFontBase::New(pixelSize, family, flags, face, encoding); + } } // was the font successfully created? - bool Ok() const; - %pythoncode { def __nonzero__(self): return self.Ok() } + DocDeclStr( + bool , IsOk() const, + "Returns ``True`` if this font was successfully created.", ""); + %pythoncode { Ok = IsOk } + %pythoncode { def __nonzero__(self): return self.IsOk() } + // comparison %extend { bool __eq__(const wxFont* other) { return other ? (*self == *other) : false; } bool __ne__(const wxFont* other) { return other ? (*self != *other) : true; } } - // accessors: get the font characteristics - virtual int GetPointSize() const; - virtual wxSize GetPixelSize() const; - virtual bool IsUsingSizeInPixels() const; - virtual int GetFamily() const; - virtual int GetStyle() const; - virtual int GetWeight() const; - virtual bool GetUnderlined() const; - virtual wxString GetFaceName() const; - virtual wxFontEncoding GetEncoding() const; - virtual const wxNativeFontInfo *GetNativeFontInfo() const; + + DocDeclStr( + virtual int , GetPointSize() const, + "Gets the point size.", ""); + + DocDeclStr( + virtual wxSize , GetPixelSize() const, + "Returns the size in pixels if the font was constructed with a pixel +size.", ""); + + DocDeclStr( + virtual bool , IsUsingSizeInPixels() const, + "Returns ``True`` if the font is using a pixelSize.", ""); + + + DocDeclStr( + virtual int , GetFamily() const, + "Gets the font family. ", ""); + + DocDeclStr( + virtual int , GetStyle() const, + "Gets the font style.", ""); + + DocDeclStr( + virtual int , GetWeight() const, + "Gets the font weight. ", ""); + + DocDeclStr( + virtual bool , GetUnderlined() const, + "Returns ``True`` if the font is underlined, ``False`` otherwise.", ""); + + DocDeclStr( + virtual wxString , GetFaceName() const, + "Returns the typeface name associated with the font, or the empty +string if there is no typeface information.", ""); + + DocDeclStr( + virtual wxFontEncoding , GetEncoding() const, + "Get the font's encoding.", ""); + + DocDeclStr( + virtual const wxNativeFontInfo *, GetNativeFontInfo() const, + "Constructs a `wx.NativeFontInfo` object from this font.", ""); + - virtual bool IsFixedWidth() const; + DocDeclStr( + virtual bool , IsFixedWidth() const, + "Returns true if the font is a fixed width (or monospaced) font, false +if it is a proportional one or font is invalid.", ""); + - wxString GetNativeFontInfoDesc() const; - wxString GetNativeFontInfoUserDesc() const; + DocDeclStr( + wxString , GetNativeFontInfoDesc() const, + "Returns the platform-dependent string completely describing this font +or an empty string if the font isn't valid.", ""); + + DocDeclStr( + wxString , GetNativeFontInfoUserDesc() const, + "Returns a human readable version of `GetNativeFontInfoDesc`.", ""); + // change the font characteristics - virtual void SetPointSize( int pointSize ); - virtual void SetPixelSize( const wxSize& pixelSize ); - virtual void SetFamily( int family ); - virtual void SetStyle( int style ); - virtual void SetWeight( int weight ); - virtual void SetFaceName( const wxString& faceName ); - virtual void SetUnderlined( bool underlined ); - virtual void SetEncoding(wxFontEncoding encoding); - void SetNativeFontInfo(const wxNativeFontInfo& info); - %name(SetNativeFontInfoFromString) void SetNativeFontInfo(const wxString& info); - void SetNativeFontInfoUserDesc(const wxString& info); - - // translate the fonts into human-readable string (i.e. GetStyleString() - // will return "wxITALIC" for an italic font, ...) - wxString GetFamilyString() const; - wxString GetStyleString() const; - wxString GetWeightString() const; - - // Unofficial API, don't use + DocDeclStr( + virtual void , SetPointSize( int pointSize ), + "Sets the point size.", ""); + + DocDeclStr( + virtual void , SetPixelSize( const wxSize& pixelSize ), + "Sets the size in pixels rather than points. If there is platform API +support for this then it is used, otherwise a font with the closest +size is found using a binary search.", ""); + + DocDeclStr( + virtual void , SetFamily( int family ), + "Sets the font family.", ""); + + DocDeclStr( + virtual void , SetStyle( int style ), + "Sets the font style.", ""); + + DocDeclStr( + virtual void , SetWeight( int weight ), + "Sets the font weight.", ""); + + DocDeclStr( + virtual bool , SetFaceName( const wxString& faceName ), + "Sets the facename for the font. The facename, which should be a valid +font installed on the end-user's system. + +To avoid portability problems, don't rely on a specific face, but +specify the font family instead or as well. A suitable font will be +found on the end-user's system. If both the family and the facename +are specified, wxWidgets will first search for the specific face, and +then for a font belonging to the same family.", ""); + + DocDeclStr( + virtual void , SetUnderlined( bool underlined ), + "Sets underlining.", ""); + + DocDeclStr( + virtual void , SetEncoding(wxFontEncoding encoding), + "Set the font encoding.", ""); + + DocDeclStr( + void , SetNativeFontInfo(const wxNativeFontInfo& info), + "Set the font's attributes from a `wx.NativeFontInfo` object.", ""); + + + DocDeclStrName( + bool , SetNativeFontInfo(const wxString& info), + "Set the font's attributes from string representation of a +`wx.NativeFontInfo` object.", "", + SetNativeFontInfoFromString); + + DocDeclStr( + bool , SetNativeFontInfoUserDesc(const wxString& info), + "Set the font's attributes from a string formerly returned from +`GetNativeFontInfoDesc`.", ""); + + + DocDeclStr( + wxString , GetFamilyString() const, + "Returns a string representation of the font family.", ""); + + DocDeclStr( + wxString , GetStyleString() const, + "Returns a string representation of the font style.", ""); + + DocDeclStr( + wxString , GetWeightString() const, + "Return a string representation of the font weight.", ""); + + virtual void SetNoAntiAliasing( bool no = true ); virtual bool GetNoAntiAliasing() const; // the default encoding is used for creating all fonts with default // encoding parameter - static wxFontEncoding GetDefaultEncoding() { return ms_encodingDefault; } - static void SetDefaultEncoding(wxFontEncoding encoding); + DocDeclStr( + static wxFontEncoding , GetDefaultEncoding(), + "Returns the encoding used for all fonts created with an encoding of +``wx.FONTENCODING_DEFAULT``.", ""); + + DocDeclStr( + static void , SetDefaultEncoding(wxFontEncoding encoding), + "Sets the default font encoding.", ""); + + %property(Encoding, GetEncoding, SetEncoding, doc="See `GetEncoding` and `SetEncoding`"); + %property(FaceName, GetFaceName, SetFaceName, doc="See `GetFaceName` and `SetFaceName`"); + %property(Family, GetFamily, SetFamily, doc="See `GetFamily` and `SetFamily`"); + %property(FamilyString, GetFamilyString, doc="See `GetFamilyString`"); + %property(NativeFontInfo, GetNativeFontInfo, SetNativeFontInfo, doc="See `GetNativeFontInfo` and `SetNativeFontInfo`"); + %property(NativeFontInfoDesc, GetNativeFontInfoDesc, doc="See `GetNativeFontInfoDesc`"); + %property(NativeFontInfoUserDesc, GetNativeFontInfoUserDesc, SetNativeFontInfoUserDesc, doc="See `GetNativeFontInfoUserDesc` and `SetNativeFontInfoUserDesc`"); + %property(NoAntiAliasing, GetNoAntiAliasing, SetNoAntiAliasing, doc="See `GetNoAntiAliasing` and `SetNoAntiAliasing`"); + %property(PixelSize, GetPixelSize, SetPixelSize, doc="See `GetPixelSize` and `SetPixelSize`"); + %property(PointSize, GetPointSize, SetPointSize, doc="See `GetPointSize` and `SetPointSize`"); + %property(Style, GetStyle, SetStyle, doc="See `GetStyle` and `SetStyle`"); + %property(StyleString, GetStyleString, doc="See `GetStyleString`"); + %property(Underlined, GetUnderlined, SetUnderlined, doc="See `GetUnderlined` and `SetUnderlined`"); + %property(Weight, GetWeight, SetWeight, doc="See `GetWeight` and `SetWeight`"); + %property(WeightString, GetWeightString, doc="See `GetWeightString`"); + }; - +%pythoncode { Font2 = wx._deprecated(FFont, "Use `wx.FFont` instead.") } //--------------------------------------------------------------------------- %newgroup @@ -565,13 +858,14 @@ IMP_PYCALLBACK_BOOL_STRINGSTRING(wxPyFontEnumerator, wxFontEnumerator, OnFontEnc MustHaveApp(wxPyFontEnumerator); -%name(FontEnumerator) class wxPyFontEnumerator { +%rename(FontEnumerator) wxPyFontEnumerator; +class wxPyFontEnumerator { public: - %pythonAppend wxPyFontEnumerator "self._setCallbackInfo(self, FontEnumerator, 0)" + %pythonAppend wxPyFontEnumerator setCallbackInfo(FontEnumerator) wxPyFontEnumerator(); ~wxPyFontEnumerator(); - void _setCallbackInfo(PyObject* self, PyObject* _class, bool incref); + void _setCallbackInfo(PyObject* self, PyObject* _class, int incref=0); bool EnumerateFacenames( wxFontEncoding encoding = wxFONTENCODING_SYSTEM, // all @@ -579,25 +873,31 @@ public: bool EnumerateEncodings(const wxString& facename = wxPyEmptyString); - //wxArrayString* GetEncodings(); - //wxArrayString* GetFacenames(); %extend { - PyObject* GetEncodings() { - wxArrayString* arr = self->GetEncodings(); - if (arr) - return wxArrayString2PyList_helper(*arr); - else - return PyList_New(0); + static PyObject* GetEncodings() { + PyObject* ret; + wxArrayString arr = wxFontEnumerator::GetEncodings(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + ret = wxArrayString2PyList_helper(arr); + wxPyEndBlockThreads(blocked); + return ret; } - PyObject* GetFacenames() { - wxArrayString* arr = self->GetFacenames(); - if (arr) - return wxArrayString2PyList_helper(*arr); - else - return PyList_New(0); + static PyObject* GetFacenames() { + PyObject* ret; + wxArrayString arr = wxFontEnumerator::GetFacenames(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + ret = wxArrayString2PyList_helper(arr); + wxPyEndBlockThreads(blocked); + return ret; } } + + DocDeclStr( + static bool , IsValidFacename(const wxString &str), + "Convenience function that returns true if the given face name exist in +the user's system", ""); + };