diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h index 415639287c..d65e329dda 100644 --- a/include/wx/textctrl.h +++ b/include/wx/textctrl.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // Name: wx/textctrl.h -// Purpose: wxTextCtrlBase class - the interface of wxTextCtrl +// Purpose: wxTextAttr and wxTextCtrlBase class - the interface of wxTextCtrl // Author: Vadim Zeitlin // Modified by: // Created: 13.07.99 @@ -165,6 +165,7 @@ enum wxTextAttrFlags { wxTEXT_ATTR_TEXT_COLOUR = 0x00000001, wxTEXT_ATTR_BACKGROUND_COLOUR = 0x00000002, + wxTEXT_ATTR_FONT_FACE = 0x00000004, wxTEXT_ATTR_FONT_SIZE = 0x00000008, wxTEXT_ATTR_FONT_WEIGHT = 0x00000010, @@ -180,17 +181,23 @@ enum wxTextAttrFlags wxTEXT_ATTR_LEFT_INDENT = 0x00000100, wxTEXT_ATTR_RIGHT_INDENT = 0x00000200, wxTEXT_ATTR_TABS = 0x00000400, - wxTEXT_ATTR_PARA_SPACING_AFTER = 0x00000800, wxTEXT_ATTR_PARA_SPACING_BEFORE = 0x00001000, wxTEXT_ATTR_LINE_SPACING = 0x00002000, wxTEXT_ATTR_CHARACTER_STYLE_NAME = 0x00004000, wxTEXT_ATTR_PARAGRAPH_STYLE_NAME = 0x00008000, wxTEXT_ATTR_LIST_STYLE_NAME = 0x00010000, + wxTEXT_ATTR_BULLET_STYLE = 0x00020000, wxTEXT_ATTR_BULLET_NUMBER = 0x00040000, wxTEXT_ATTR_BULLET_TEXT = 0x00080000, wxTEXT_ATTR_BULLET_NAME = 0x00100000, + + wxTEXT_ATTR_BULLET = \ + ( wxTEXT_ATTR_BULLET_STYLE | wxTEXT_ATTR_BULLET_NUMBER | wxTEXT_ATTR_BULLET_TEXT | \ + wxTEXT_ATTR_BULLET_NAME ), + + wxTEXT_ATTR_URL = 0x00200000, wxTEXT_ATTR_PAGE_BREAK = 0x00400000, wxTEXT_ATTR_EFFECTS = 0x00800000, @@ -207,8 +214,7 @@ enum wxTextAttrFlags wxTEXT_ATTR_PARAGRAPH = \ (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\ wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\ - wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|\ - wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL), + wxTEXT_ATTR_BULLET|wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL), wxTEXT_ATTR_ALL = (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH) }; @@ -307,12 +313,12 @@ public: void SetRightIndent(int indent) { m_rightIndent = indent; m_flags |= wxTEXT_ATTR_RIGHT_INDENT; } void SetFontSize(int pointSize) { m_fontSize = pointSize; m_flags |= wxTEXT_ATTR_FONT_SIZE; } - void SetFontStyle(int fontStyle) { m_fontStyle = fontStyle; m_flags |= wxTEXT_ATTR_FONT_ITALIC; } - void SetFontWeight(int fontWeight) { m_fontWeight = fontWeight; m_flags |= wxTEXT_ATTR_FONT_WEIGHT; } + void SetFontStyle(wxFontStyle fontStyle) { m_fontStyle = fontStyle; m_flags |= wxTEXT_ATTR_FONT_ITALIC; } + void SetFontWeight(wxFontWeight fontWeight) { m_fontWeight = fontWeight; m_flags |= wxTEXT_ATTR_FONT_WEIGHT; } void SetFontFaceName(const wxString& faceName) { m_fontFaceName = faceName; m_flags |= wxTEXT_ATTR_FONT_FACE; } void SetFontUnderlined(bool underlined) { m_fontUnderlined = underlined; m_flags |= wxTEXT_ATTR_FONT_UNDERLINE; } void SetFontEncoding(wxFontEncoding encoding) { m_fontEncoding = encoding; m_flags |= wxTEXT_ATTR_FONT_ENCODING; } - void SetFontFamily(int family) { m_fontFamily = family; m_flags |= wxTEXT_ATTR_FONT_FAMILY; } + void SetFontFamily(wxFontFamily family) { m_fontFamily = family; m_flags |= wxTEXT_ATTR_FONT_FAMILY; } // Set font void SetFont(const wxFont& font, int flags = wxTEXT_ATTR_FONT) { GetFontAttributes(font, flags); } @@ -346,12 +352,12 @@ public: long GetFlags() const { return m_flags; } int GetFontSize() const { return m_fontSize; } - int GetFontStyle() const { return m_fontStyle; } - int GetFontWeight() const { return m_fontWeight; } + wxFontStyle GetFontStyle() const { return m_fontStyle; } + wxFontWeight GetFontWeight() const { return m_fontWeight; } bool GetFontUnderlined() const { return m_fontUnderlined; } const wxString& GetFontFaceName() const { return m_fontFaceName; } wxFontEncoding GetFontEncoding() const { return m_fontEncoding; } - int GetFontFamily() const { return m_fontFamily; } + wxFontFamily GetFontFamily() const { return m_fontFamily; } wxFont GetFont() const; @@ -361,7 +367,6 @@ public: int GetParagraphSpacingAfter() const { return m_paragraphSpacingAfter; } int GetParagraphSpacingBefore() const { return m_paragraphSpacingBefore; } - // TODO: should return the relative wxTextAttr* enumeration values int GetLineSpacing() const { return m_lineSpacing; } int GetBulletStyle() const { return m_bulletStyle; } int GetBulletNumber() const { return m_bulletNumber; } @@ -489,9 +494,9 @@ private: wxColour m_colText, m_colBack; int m_fontSize; - int m_fontStyle; - int m_fontWeight; - int m_fontFamily; + wxFontStyle m_fontStyle; + wxFontWeight m_fontWeight; + wxFontFamily m_fontFamily; bool m_fontUnderlined; wxString m_fontFaceName; diff --git a/interface/wx/textctrl.h b/interface/wx/textctrl.h index aa8bfad77a..e9ac22eab8 100644 --- a/interface/wx/textctrl.h +++ b/interface/wx/textctrl.h @@ -7,9 +7,8 @@ ///////////////////////////////////////////////////////////////////////////// - /** - The following values can be passed to wxTextAttr::SetAlignment to determine paragraph alignment. + One of the following values can be passed to wxTextAttr::SetAlignment to determine paragraph alignment. */ enum wxTextAttrAlignment { @@ -32,6 +31,7 @@ enum wxTextAttrFlags { wxTEXT_ATTR_TEXT_COLOUR = 0x00000001, wxTEXT_ATTR_BACKGROUND_COLOUR = 0x00000002, + wxTEXT_ATTR_FONT_FACE = 0x00000004, wxTEXT_ATTR_FONT_SIZE = 0x00000008, wxTEXT_ATTR_FONT_WEIGHT = 0x00000010, @@ -39,6 +39,10 @@ enum wxTextAttrFlags wxTEXT_ATTR_FONT_UNDERLINE = 0x00000040, wxTEXT_ATTR_FONT_ENCODING = 0x02000000, wxTEXT_ATTR_FONT_FAMILY = 0x04000000, + + /** + Defined as the combination of all @c wxTEXT_ATTR_FONT_* values above. + */ wxTEXT_ATTR_FONT = \ ( wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT | \ wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | wxTEXT_ATTR_FONT_ENCODING | wxTEXT_ATTR_FONT_FAMILY ), @@ -47,41 +51,55 @@ enum wxTextAttrFlags wxTEXT_ATTR_LEFT_INDENT = 0x00000100, wxTEXT_ATTR_RIGHT_INDENT = 0x00000200, wxTEXT_ATTR_TABS = 0x00000400, - wxTEXT_ATTR_PARA_SPACING_AFTER = 0x00000800, wxTEXT_ATTR_PARA_SPACING_BEFORE = 0x00001000, wxTEXT_ATTR_LINE_SPACING = 0x00002000, wxTEXT_ATTR_CHARACTER_STYLE_NAME = 0x00004000, wxTEXT_ATTR_PARAGRAPH_STYLE_NAME = 0x00008000, wxTEXT_ATTR_LIST_STYLE_NAME = 0x00010000, + wxTEXT_ATTR_BULLET_STYLE = 0x00020000, wxTEXT_ATTR_BULLET_NUMBER = 0x00040000, wxTEXT_ATTR_BULLET_TEXT = 0x00080000, wxTEXT_ATTR_BULLET_NAME = 0x00100000, + + /** + Defined as the combination of all @c wxTEXT_ATTR_BULLET_* values above. + */ + wxTEXT_ATTR_BULLET = \ + ( wxTEXT_ATTR_BULLET_STYLE | wxTEXT_ATTR_BULLET_NUMBER | wxTEXT_ATTR_BULLET_TEXT | \ + wxTEXT_ATTR_BULLET_NAME ), + wxTEXT_ATTR_URL = 0x00200000, wxTEXT_ATTR_PAGE_BREAK = 0x00400000, wxTEXT_ATTR_EFFECTS = 0x00800000, wxTEXT_ATTR_OUTLINE_LEVEL = 0x01000000, /** - Character and paragraph combined styles + Combines the styles @c wxTEXT_ATTR_FONT, @c wxTEXT_ATTR_EFFECTS, @c wxTEXT_ATTR_BACKGROUND_COLOUR, + @c wxTEXT_ATTR_TEXT_COLOUR, @c wxTEXT_ATTR_CHARACTER_STYLE_NAME, @c wxTEXT_ATTR_URL. */ wxTEXT_ATTR_CHARACTER = \ (wxTEXT_ATTR_FONT|wxTEXT_ATTR_EFFECTS| \ wxTEXT_ATTR_BACKGROUND_COLOUR|wxTEXT_ATTR_TEXT_COLOUR|wxTEXT_ATTR_CHARACTER_STYLE_NAME|wxTEXT_ATTR_URL), + /** + Combines all the styles regarding text paragraphs. + */ wxTEXT_ATTR_PARAGRAPH = \ (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\ wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\ - wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|\ - wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL), + wxTEXT_ATTR_BULLET|wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL), + /** + Combines all previous values. + */ wxTEXT_ATTR_ALL = (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH) }; /** - Styles for wxTextAttr::SetBulletStyle + Styles for wxTextAttr::SetBulletStyle. They can be combined together as a bitlist. */ enum wxTextAttrBulletStyle { @@ -107,7 +125,7 @@ enum wxTextAttrBulletStyle }; /** - Styles for wxTextAttr::SetTextEffects(). + Styles for wxTextAttr::SetTextEffects(). They can be combined together as a bitlist. Of these, only wxTEXT_ATTR_EFFECT_CAPITALS and wxTEXT_ATTR_EFFECT_STRIKETHROUGH are implemented. */ @@ -127,7 +145,7 @@ enum wxTextAttrEffects }; /** - Line spacing values; see wxTextAttr::SetLineSpacing(). + Convenience line spacing values; see wxTextAttr::SetLineSpacing(). */ enum wxTextAttrLineSpacing { @@ -207,6 +225,27 @@ public: */ wxFont CreateFont() const; + /** + Copies all defined/valid properties from overlay to current object. + */ + void Merge(const wxTextAttr& overlay); + + /** + Creates a new @c wxTextAttr which is a merge of @a base and @a overlay. + + Properties defined in @a overlay take precedence over those in @a base. + Properties undefined/invalid in both are undefined in the result. + */ + static wxTextAttr Merge(const wxTextAttr& base, + const wxTextAttr& overlay); + + + /** + @name GetXXX functions + */ + + //@{ + /** Returns the alignment flags. See ::wxTextAttrAlignment for a list of available styles. @@ -299,7 +338,7 @@ public: /** Returns the font family. */ - int GetFontFamily() const; + wxFontFamily GetFontFamily() const; /** Returns the font size in points. @@ -309,7 +348,7 @@ public: /** Returns the font style. */ - int GetFontStyle() const; + wxFontStyle GetFontStyle() const; /** Returns @true if the font is underlined. @@ -319,7 +358,7 @@ public: /** Returns the font weight. */ - int GetFontWeight() const; + wxFontWeight GetFontWeight() const; /** Returns the left indent in tenths of a millimetre. @@ -400,6 +439,16 @@ public: */ const wxString& GetURL() const; + //@} + + + + /** + @name HasXXX and IsXXX functions + */ + + //@{ + /** Returns @true if the attribute object specifies alignment. */ @@ -568,19 +617,14 @@ public: */ bool IsParagraphStyle() const; - /** - Copies all defined/valid properties from overlay to current object. - */ - void Merge(const wxTextAttr& overlay); + //@} + /** - Creates a new @c wxTextAttr which is a merge of @a base and @a overlay. + @name SetXXX functions + */ - Properties defined in @a overlay take precedence over those in @a base. - Properties undefined/invalid in both are undefined in the result. - */ - static wxTextAttr Merge(const wxTextAttr& base, - const wxTextAttr& overlay); + //@{ /** Sets the paragraph alignment. See ::wxTextAttrAlignment enumeration values. @@ -659,7 +703,7 @@ public: /** Sets the font family. */ - void SetFontFamily(int family); + void SetFontFamily(wxFontFamily family); /** Sets the font size in points. @@ -669,7 +713,7 @@ public: /** Sets the font style (normal, italic or slanted). */ - void SetFontStyle(int fontStyle); + void SetFontStyle(wxFontStyle fontStyle); /** Sets the font underlining. @@ -679,7 +723,7 @@ public: /** Sets the font weight. */ - void SetFontWeight(int fontWeight); + void SetFontWeight(wxFontWeight fontWeight); /** Sets the left indent and left subindent in tenths of a millimetre. @@ -788,6 +832,9 @@ public: */ void SetURL(const wxString& url); + //@} + + /** Assignment from a wxTextAttr object. */ diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 6a806b2d77..6d7fb083c8 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -85,8 +85,8 @@ void wxTextAttr::Init() m_rightIndent = 0; m_fontSize = 12; - m_fontStyle = wxNORMAL; - m_fontWeight = wxNORMAL; + m_fontStyle = wxFONTSTYLE_NORMAL; + m_fontWeight = wxFONTWEIGHT_NORMAL; m_fontUnderlined = false; m_fontEncoding = wxFONTENCODING_DEFAULT; m_fontFamily = wxFONTFAMILY_DEFAULT; diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index e19f6d635c..e9edfdd0b2 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -5686,7 +5686,7 @@ void wxRichTextBuffer::ClearStyleStack() bool wxRichTextBuffer::BeginBold() { wxTextAttr attr; - attr.SetFontWeight(wxBOLD); + attr.SetFontWeight(wxFONTWEIGHT_BOLD); return BeginStyle(attr); } @@ -5695,7 +5695,7 @@ bool wxRichTextBuffer::BeginBold() bool wxRichTextBuffer::BeginItalic() { wxTextAttr attr; - attr.SetFontStyle(wxITALIC); + attr.SetFontStyle(wxFONTSTYLE_ITALIC); return BeginStyle(attr); } diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index c8282f29a1..652150c8a7 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -2997,7 +2997,7 @@ bool wxRichTextCtrl::IsSelectionBold() wxTextAttr attr; wxRichTextRange range = GetSelectionRange(); attr.SetFlags(wxTEXT_ATTR_FONT_WEIGHT); - attr.SetFontWeight(wxBOLD); + attr.SetFontWeight(wxFONTWEIGHT_BOLD); return HasCharacterAttributes(range, attr); } @@ -3013,7 +3013,7 @@ bool wxRichTextCtrl::IsSelectionBold() { if (IsDefaultStyleShowing()) wxRichTextApplyStyle(attr, GetDefaultStyleEx()); - return attr.GetFontWeight() == wxBOLD; + return attr.GetFontWeight() == wxFONTWEIGHT_BOLD; } } return false; @@ -3027,7 +3027,7 @@ bool wxRichTextCtrl::IsSelectionItalics() wxRichTextRange range = GetSelectionRange(); wxTextAttr attr; attr.SetFlags(wxTEXT_ATTR_FONT_ITALIC); - attr.SetFontStyle(wxITALIC); + attr.SetFontStyle(wxFONTSTYLE_ITALIC); return HasCharacterAttributes(range, attr); } @@ -3043,7 +3043,7 @@ bool wxRichTextCtrl::IsSelectionItalics() { if (IsDefaultStyleShowing()) wxRichTextApplyStyle(attr, GetDefaultStyleEx()); - return attr.GetFontStyle() == wxITALIC; + return attr.GetFontStyle() == wxFONTSTYLE_ITALIC; } } return false; @@ -3084,7 +3084,7 @@ bool wxRichTextCtrl::ApplyBoldToSelection() { wxTextAttr attr; attr.SetFlags(wxTEXT_ATTR_FONT_WEIGHT); - attr.SetFontWeight(IsSelectionBold() ? wxNORMAL : wxBOLD); + attr.SetFontWeight(IsSelectionBold() ? wxFONTWEIGHT_NORMAL : wxFONTWEIGHT_BOLD); if (HasSelection()) return SetStyleEx(GetSelectionRange(), attr, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY); @@ -3102,7 +3102,7 @@ bool wxRichTextCtrl::ApplyItalicToSelection() { wxTextAttr attr; attr.SetFlags(wxTEXT_ATTR_FONT_ITALIC); - attr.SetFontStyle(IsSelectionItalics() ? wxNORMAL : wxITALIC); + attr.SetFontStyle(IsSelectionItalics() ? wxFONTSTYLE_NORMAL : wxFONTSTYLE_ITALIC); if (HasSelection()) return SetStyleEx(GetSelectionRange(), attr, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY); diff --git a/src/richtext/richtextfontpage.cpp b/src/richtext/richtextfontpage.cpp index 83215b5068..87a3fb7830 100644 --- a/src/richtext/richtextfontpage.cpp +++ b/src/richtext/richtextfontpage.cpp @@ -314,11 +314,11 @@ bool wxRichTextFontPage::TransferDataFromWindow() if (m_styleCtrl->GetSelection() != wxNOT_FOUND) { - int style; + wxFontStyle style; if (m_styleCtrl->GetStringSelection() == _("Italic")) - style = wxITALIC; + style = wxFONTSTYLE_ITALIC; else - style = wxNORMAL; + style = wxFONTSTYLE_NORMAL; attr->SetFontStyle(style); } @@ -327,11 +327,11 @@ bool wxRichTextFontPage::TransferDataFromWindow() if (m_weightCtrl->GetSelection() != wxNOT_FOUND) { - int weight; + wxFontWeight weight; if (m_weightCtrl->GetStringSelection() == _("Bold")) - weight = wxBOLD; + weight = wxFONTWEIGHT_BOLD; else - weight = wxNORMAL; + weight = wxFONTWEIGHT_NORMAL; attr->SetFontWeight(weight); } diff --git a/src/richtext/richtextxml.cpp b/src/richtext/richtextxml.cpp index 6c9aed9c6f..d967ae5d02 100644 --- a/src/richtext/richtextxml.cpp +++ b/src/richtext/richtextxml.cpp @@ -1131,9 +1131,9 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttr& attr, wxXmlNode* node, bool isPa { wxString fontFacename; int fontSize = 12; - int fontFamily = wxFONTFAMILY_DEFAULT; - int fontWeight = wxNORMAL; - int fontStyle = wxNORMAL; + wxFontFamily fontFamily = wxFONTFAMILY_DEFAULT; + wxFontWeight fontWeight = wxFONTWEIGHT_NORMAL; + wxFontStyle fontStyle = wxFONTSTYLE_NORMAL; bool fontUnderlined = false; // int fontFlags = 0; @@ -1150,14 +1150,14 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttr& attr, wxXmlNode* node, bool isPa value = node->GetAttribute(wxT("fontfamily"), wxEmptyString); if (!value.empty()) { - fontFamily = wxAtoi(value); + fontFamily = (wxFontFamily)wxAtoi(value); attr.SetFontFamily(fontFamily); } value = node->GetAttribute(wxT("fontstyle"), wxEmptyString); if (!value.empty()) { - fontStyle = wxAtoi(value); + fontStyle = (wxFontStyle)wxAtoi(value); attr.SetFontStyle(fontStyle); } @@ -1171,7 +1171,7 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttr& attr, wxXmlNode* node, bool isPa value = node->GetAttribute(wxT("fontweight"), wxEmptyString); if (!value.empty()) { - fontWeight = wxAtoi(value); + fontWeight = (wxFontWeight)wxAtoi(value); attr.SetFontWeight(fontWeight); }