| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: textctrl.h
- // Purpose: interface of wxTextAttr
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- wxTextCtrl style flags
- */
- #define wxTE_NO_VSCROLL 0x0002
- #define wxTE_READONLY 0x0010
- #define wxTE_MULTILINE 0x0020
- #define wxTE_PROCESS_TAB 0x0040
- // alignment flags
- #define wxTE_LEFT 0x0000 // 0x0000
- #define wxTE_CENTER wxALIGN_CENTER_HORIZONTAL // 0x0100
- #define wxTE_RIGHT wxALIGN_RIGHT // 0x0200
- #define wxTE_CENTRE wxTE_CENTER
- // this style means to use RICHEDIT control and does something only under wxMSW
- // and Win32 and is silently ignored under all other platforms
- #define wxTE_RICH 0x0080
- #define wxTE_PROCESS_ENTER 0x0400
- #define wxTE_PASSWORD 0x0800
- // automatically detect the URLs and generate the events when mouse is
- // moved/clicked over an URL
- //
- // this is for Win32 richedit and wxGTK2 multiline controls only so far
- #define wxTE_AUTO_URL 0x1000
- // by default, the Windows text control doesn't show the selection when it
- // doesn't have focus - use this style to force it to always show it
- #define wxTE_NOHIDESEL 0x2000
- // use wxHSCROLL to not wrap text at all, wxTE_CHARWRAP to wrap it at any
- // position and wxTE_WORDWRAP to wrap at words boundary
- //
- // if no wrapping style is given at all, the control wraps at word boundary
- #define wxTE_DONTWRAP wxHSCROLL
- #define wxTE_CHARWRAP 0x4000 // wrap at any position
- #define wxTE_WORDWRAP 0x0001 // wrap only at words boundaries
- #define wxTE_BESTWRAP 0x0000 // this is the default
- // force using RichEdit version 2.0 or 3.0 instead of 1.0 (default) for
- // wxTE_RICH controls - can be used together with or instead of wxTE_RICH
- #define wxTE_RICH2 0x8000
- #define wxTEXT_TYPE_ANY 0
- /**
- wxTextCoord is a line or row number
- */
- typedef long wxTextCoord;
- /**
- One of the following values can be passed to wxTextAttr::SetAlignment to determine paragraph alignment.
- */
- enum wxTextAttrAlignment
- {
- wxTEXT_ALIGNMENT_DEFAULT,
- wxTEXT_ALIGNMENT_LEFT,
- wxTEXT_ALIGNMENT_CENTRE,
- wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
- wxTEXT_ALIGNMENT_RIGHT,
- /** wxTEXT_ALIGNMENT_JUSTIFIED is unimplemented.
- In future justification may be supported when printing or previewing, only. */
- wxTEXT_ALIGNMENT_JUSTIFIED
- };
- /**
- The following values are passed in a bitlist to wxTextAttr::SetFlags() to
- determine what attributes will be considered when setting the attributes for a text control.
- */
- enum wxTextAttrFlags
- {
- wxTEXT_ATTR_TEXT_COLOUR = 0x00000001,
- wxTEXT_ATTR_BACKGROUND_COLOUR = 0x00000002,
- wxTEXT_ATTR_FONT_FACE = 0x00000004,
- wxTEXT_ATTR_FONT_POINT_SIZE = 0x00000008,
- wxTEXT_ATTR_FONT_PIXEL_SIZE = 0x10000000,
- wxTEXT_ATTR_FONT_WEIGHT = 0x00000010,
- wxTEXT_ATTR_FONT_ITALIC = 0x00000020,
- wxTEXT_ATTR_FONT_UNDERLINE = 0x00000040,
- wxTEXT_ATTR_FONT_STRIKETHROUGH = 0x08000000,
- wxTEXT_ATTR_FONT_ENCODING = 0x02000000,
- wxTEXT_ATTR_FONT_FAMILY = 0x04000000,
- wxTEXT_ATTR_FONT_SIZE = \
- ( wxTEXT_ATTR_FONT_POINT_SIZE | wxTEXT_ATTR_FONT_PIXEL_SIZE ),
- /**
- 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_STRIKETHROUGH | wxTEXT_ATTR_FONT_ENCODING | wxTEXT_ATTR_FONT_FAMILY ),
- wxTEXT_ATTR_ALIGNMENT = 0x00000080,
- 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,
- /**
- 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|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. They can be combined together as a bitlist.
- */
- enum wxTextAttrBulletStyle
- {
- wxTEXT_ATTR_BULLET_STYLE_NONE = 0x00000000,
- wxTEXT_ATTR_BULLET_STYLE_ARABIC = 0x00000001,
- wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER = 0x00000002,
- wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER = 0x00000004,
- wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER = 0x00000008,
- wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER = 0x00000010,
- wxTEXT_ATTR_BULLET_STYLE_SYMBOL = 0x00000020,
- /** wxTEXT_ATTR_BULLET_STYLE_BITMAP is unimplemented. */
- wxTEXT_ATTR_BULLET_STYLE_BITMAP = 0x00000040,
- wxTEXT_ATTR_BULLET_STYLE_PARENTHESES = 0x00000080,
- wxTEXT_ATTR_BULLET_STYLE_PERIOD = 0x00000100,
- wxTEXT_ATTR_BULLET_STYLE_STANDARD = 0x00000200,
- wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS = 0x00000400,
- wxTEXT_ATTR_BULLET_STYLE_OUTLINE = 0x00000800,
- wxTEXT_ATTR_BULLET_STYLE_ALIGN_LEFT = 0x00000000,
- wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT = 0x00001000,
- wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE = 0x00002000,
- wxTEXT_ATTR_BULLET_STYLE_CONTINUATION = 0x00004000
- };
- /**
- Styles for wxTextAttr::SetTextEffects(). They can be combined together as a bitlist.
- Of these, only wxTEXT_ATTR_EFFECT_CAPITALS, wxTEXT_ATTR_EFFECT_STRIKETHROUGH,
- wxTEXT_ATTR_EFFECT_SUPERSCRIPT and wxTEXT_ATTR_EFFECT_SUBSCRIPT are implemented.
- */
- enum wxTextAttrEffects
- {
- wxTEXT_ATTR_EFFECT_NONE = 0x00000000,
- wxTEXT_ATTR_EFFECT_CAPITALS = 0x00000001,
- wxTEXT_ATTR_EFFECT_SMALL_CAPITALS = 0x00000002,
- wxTEXT_ATTR_EFFECT_STRIKETHROUGH = 0x00000004,
- wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH = 0x00000008,
- wxTEXT_ATTR_EFFECT_SHADOW = 0x00000010,
- wxTEXT_ATTR_EFFECT_EMBOSS = 0x00000020,
- wxTEXT_ATTR_EFFECT_OUTLINE = 0x00000040,
- wxTEXT_ATTR_EFFECT_ENGRAVE = 0x00000080,
- wxTEXT_ATTR_EFFECT_SUPERSCRIPT = 0x00000100,
- wxTEXT_ATTR_EFFECT_SUBSCRIPT = 0x00000200
- };
- /**
- Convenience line spacing values; see wxTextAttr::SetLineSpacing().
- */
- enum wxTextAttrLineSpacing
- {
- wxTEXT_ATTR_LINE_SPACING_NORMAL = 10,
- wxTEXT_ATTR_LINE_SPACING_HALF = 15,
- wxTEXT_ATTR_LINE_SPACING_TWICE = 20
- };
- /**
- Describes the possible return values of wxTextCtrl::HitTest().
- The element names correspond to the relationship between the point asked
- for and the character returned, e.g. @c wxTE_HT_BEFORE means that the point
- is before (leftward or upward) it and so on.
- */
- enum wxTextCtrlHitTestResult
- {
- /// Indicates that wxTextCtrl::HitTest() is not implemented on this
- /// platform.
- wxTE_HT_UNKNOWN = -2,
- /// The point is before the character returned.
- wxTE_HT_BEFORE,
- /// The point is directly on the character returned.
- wxTE_HT_ON_TEXT,
- /// The point is below the last line of the control.
- wxTE_HT_BELOW,
- /// The point is beyond the end of line containing the character returned.
- wxTE_HT_BEYOND
- };
- /**
- @class wxTextAttr
- wxTextAttr represents the character and paragraph attributes, or style,
- for a range of text in a wxTextCtrl or wxRichTextCtrl.
- When setting up a wxTextAttr object, pass a bitlist mask to
- wxTextAttr::SetFlags() to indicate which style elements should be changed.
- As a convenience, when you call a setter such as SetFont, the relevant bit
- will be set.
- @library{wxcore}
- @category{richtext}
- @see wxTextCtrl, wxRichTextCtrl
- */
- class wxTextAttr
- {
- public:
- //@{
- /**
- Constructors.
- */
- wxTextAttr();
- wxTextAttr(const wxColour& colText,
- const wxColour& colBack = wxNullColour,
- const wxFont& font = wxNullFont,
- wxTextAttrAlignment alignment = wxTEXT_ALIGNMENT_DEFAULT);
- wxTextAttr(const wxTextAttr& attr);
- //@}
- /**
- Applies the attributes in @a style to the original object, but not those
- attributes from @a style that are the same as those in @a compareWith (if passed).
- */
- bool Apply(const wxTextAttr& style,
- const wxTextAttr* compareWith = NULL);
- /**
- 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);
- /**
- Partial equality test. If @a weakTest is @true, attributes of this object do not
- have to be present if those attributes of @a attr are present. If @a weakTest is
- @false, the function will fail if an attribute is present in @a attr but not
- in this object.
- */
- bool EqPartial(const wxTextAttr& attr, bool weakTest = true) const;
- /**
- @name GetXXX functions
- */
- //@{
- /**
- Returns the alignment flags.
- See ::wxTextAttrAlignment for a list of available styles.
- */
- wxTextAttrAlignment GetAlignment() const;
- /**
- Returns the background colour.
- */
- const wxColour& GetBackgroundColour() const;
- /**
- Returns a string containing the name of the font associated with the bullet symbol.
- Only valid for attributes with wxTEXT_ATTR_BULLET_SYMBOL.
- */
- const wxString& GetBulletFont() const;
- /**
- Returns the standard bullet name, applicable if the bullet style is
- wxTEXT_ATTR_BULLET_STYLE_STANDARD.
- Currently the following standard bullet names are supported:
- - @c standard/circle
- - @c standard/square
- - @c standard/diamond
- - @c standard/triangle
- @note
- For wxRichTextCtrl users only: if you wish your rich text controls to support
- further bullet graphics, you can derive a class from wxRichTextRenderer or
- wxRichTextStdRenderer, override @c DrawStandardBullet and @c EnumerateStandardBulletNames,
- and set an instance of the class using wxRichTextBuffer::SetRenderer.
- */
- const wxString& GetBulletName() const;
- /**
- Returns the bullet number.
- */
- int GetBulletNumber() const;
- /**
- Returns the bullet style.
- See ::wxTextAttrBulletStyle for a list of available styles.
- */
- int GetBulletStyle() const;
- /**
- Returns the bullet text, which could be a symbol, or (for example) cached
- outline text.
- */
- const wxString& GetBulletText() const;
- /**
- Returns the name of the character style.
- */
- const wxString& GetCharacterStyleName() const;
- /**
- Returns flags indicating which attributes are applicable.
- See SetFlags() for a list of available flags.
- */
- long GetFlags() const;
- /**
- Creates and returns a font specified by the font attributes in the wxTextAttr
- object. Note that wxTextAttr does not store a wxFont object, so this is only
- a temporary font.
- For greater efficiency, access the font attributes directly.
- */
- wxFont GetFont() const;
- /**
- Gets the font attributes from the given font, using only the attributes
- specified by @a flags.
- */
- bool GetFontAttributes(const wxFont& font,
- int flags = wxTEXT_ATTR_FONT);
- /**
- Returns the font encoding.
- */
- wxFontEncoding GetFontEncoding() const;
- /**
- Returns the font face name.
- */
- const wxString& GetFontFaceName() const;
- /**
- Returns the font family.
- */
- wxFontFamily GetFontFamily() const;
- /**
- Returns the font size in points.
- */
- int GetFontSize() const;
- /**
- Returns the font style.
- */
- wxFontStyle GetFontStyle() const;
- /**
- Returns @true if the font is underlined.
- */
- bool GetFontUnderlined() const;
- /**
- Returns the font weight.
- */
- wxFontWeight GetFontWeight() const;
- /**
- Returns the left indent in tenths of a millimetre.
- */
- long GetLeftIndent() const;
- /**
- Returns the left sub-indent in tenths of a millimetre.
- */
- long GetLeftSubIndent() const;
- /**
- Returns the line spacing value, one of ::wxTextAttrLineSpacing values.
- */
- int GetLineSpacing() const;
- /**
- Returns the name of the list style.
- */
- const wxString& GetListStyleName() const;
- /**
- Returns the outline level.
- */
- int GetOutlineLevel() const;
- /**
- Returns the space in tenths of a millimeter after the paragraph.
- */
- int GetParagraphSpacingAfter() const;
- /**
- Returns the space in tenths of a millimeter before the paragraph.
- */
- int GetParagraphSpacingBefore() const;
- /**
- Returns the name of the paragraph style.
- */
- const wxString& GetParagraphStyleName() const;
- /**
- Returns the right indent in tenths of a millimeter.
- */
- long GetRightIndent() const;
- /**
- Returns an array of tab stops, each expressed in tenths of a millimeter.
- Each stop is measured from the left margin and therefore each value must
- be larger than the last.
- */
- const wxArrayInt& GetTabs() const;
- /**
- Returns the text foreground colour.
- */
- const wxColour& GetTextColour() const;
- /**
- Returns the text effect bits of interest.
- See SetFlags() for further information.
- */
- int GetTextEffectFlags() const;
- /**
- Returns the text effects, a bit list of styles.
- See SetTextEffects() for details.
- */
- int GetTextEffects() const;
- /**
- Returns the URL for the content.
- Content with @a wxTEXT_ATTR_URL style causes wxRichTextCtrl to show a
- hand cursor over it, and wxRichTextCtrl generates a wxTextUrlEvent
- when the content is clicked.
- */
- const wxString& GetURL() const;
- //@}
- /**
- @name HasXXX and IsXXX functions
- */
- //@{
- /**
- Returns @true if the attribute object specifies alignment.
- */
- bool HasAlignment() const;
- /**
- Returns @true if the attribute object specifies a background colour.
- */
- bool HasBackgroundColour() const;
- /**
- Returns @true if the attribute object specifies a standard bullet name.
- */
- bool HasBulletName() const;
- /**
- Returns @true if the attribute object specifies a bullet number.
- */
- bool HasBulletNumber() const;
- /**
- Returns @true if the attribute object specifies a bullet style.
- */
- bool HasBulletStyle() const;
- /**
- Returns @true if the attribute object specifies bullet text (usually
- specifying a symbol).
- */
- bool HasBulletText() const;
- /**
- Returns @true if the attribute object specifies a character style name.
- */
- bool HasCharacterStyleName() const;
- /**
- Returns @true if the @a flag is present in the attribute object's flag
- bitlist.
- */
- bool HasFlag(long flag) const;
- /**
- Returns @true if the attribute object specifies any font attributes.
- */
- bool HasFont() const;
- /**
- Returns @true if the attribute object specifies an encoding.
- */
- bool HasFontEncoding() const;
- /**
- Returns @true if the attribute object specifies a font face name.
- */
- bool HasFontFaceName() const;
- /**
- Returns @true if the attribute object specifies a font family.
- */
- bool HasFontFamily() const;
- /**
- Returns @true if the attribute object specifies italic style.
- */
- bool HasFontItalic() const;
- /**
- Returns @true if the attribute object specifies a font point or pixel size.
- */
- bool HasFontSize() const;
- /**
- Returns @true if the attribute object specifies a font point size.
- */
- bool HasFontPointSize() const;
- /**
- Returns @true if the attribute object specifies a font pixel size.
- */
- bool HasFontPixelSize() const;
- /**
- Returns @true if the attribute object specifies either underlining or no
- underlining.
- */
- bool HasFontUnderlined() const;
- /**
- Returns @true if the attribute object specifies font weight (bold, light or
- normal).
- */
- bool HasFontWeight() const;
- /**
- Returns @true if the attribute object specifies a left indent.
- */
- bool HasLeftIndent() const;
- /**
- Returns @true if the attribute object specifies line spacing.
- */
- bool HasLineSpacing() const;
- /**
- Returns @true if the attribute object specifies a list style name.
- */
- bool HasListStyleName() const;
- /**
- Returns @true if the attribute object specifies an outline level.
- */
- bool HasOutlineLevel() const;
- /**
- Returns @true if the attribute object specifies a page break before this
- paragraph.
- */
- bool HasPageBreak() const;
- /**
- Returns @true if the attribute object specifies spacing after a paragraph.
- */
- bool HasParagraphSpacingAfter() const;
- /**
- Returns @true if the attribute object specifies spacing before a paragraph.
- */
- bool HasParagraphSpacingBefore() const;
- /**
- Returns @true if the attribute object specifies a paragraph style name.
- */
- bool HasParagraphStyleName() const;
- /**
- Returns @true if the attribute object specifies a right indent.
- */
- bool HasRightIndent() const;
- /**
- Returns @true if the attribute object specifies tab stops.
- */
- bool HasTabs() const;
- /**
- Returns @true if the attribute object specifies a text foreground colour.
- */
- bool HasTextColour() const;
- /**
- Returns @true if the attribute object specifies text effects.
- */
- bool HasTextEffects() const;
- /**
- Returns @true if the attribute object specifies a URL.
- */
- bool HasURL() const;
- /**
- Returns @true if the object represents a character style, that is,
- the flags specify a font or a text background or foreground colour.
- */
- bool IsCharacterStyle() const;
- /**
- Returns @false if we have any attributes set, @true otherwise.
- */
- bool IsDefault() const;
- /**
- Returns @true if the object represents a paragraph style, that is,
- the flags specify alignment, indentation, tabs, paragraph spacing, or
- bullet style.
- */
- bool IsParagraphStyle() const;
- //@}
- /**
- @name SetXXX functions
- */
- //@{
- /**
- Sets the paragraph alignment. See ::wxTextAttrAlignment enumeration values.
- Of these, wxTEXT_ALIGNMENT_JUSTIFIED is unimplemented.
- In future justification may be supported when printing or previewing, only.
- */
- void SetAlignment(wxTextAttrAlignment alignment);
- /**
- Sets the background colour.
- */
- void SetBackgroundColour(const wxColour& colBack);
- /**
- Sets the name of the font associated with the bullet symbol.
- Only valid for attributes with wxTEXT_ATTR_BULLET_SYMBOL.
- */
- void SetBulletFont(const wxString& font);
- /**
- Sets the standard bullet name, applicable if the bullet style is
- wxTEXT_ATTR_BULLET_STYLE_STANDARD.
- See GetBulletName() for a list of supported names, and how
- to expand the range of supported types.
- */
- void SetBulletName(const wxString& name);
- /**
- Sets the bullet number.
- */
- void SetBulletNumber(int n);
- /**
- Sets the bullet style.
- The ::wxTextAttrBulletStyle enumeration values are all supported,
- except for wxTEXT_ATTR_BULLET_STYLE_BITMAP.
- */
- void SetBulletStyle(int style);
- /**
- Sets the bullet text, which could be a symbol, or (for example) cached
- outline text.
- */
- void SetBulletText(const wxString& text);
- /**
- Sets the character style name.
- */
- void SetCharacterStyleName(const wxString& name);
- /**
- Sets the flags determining which styles are being specified.
- The ::wxTextAttrFlags values can be passed in a bitlist.
- */
- void SetFlags(long flags);
- /**
- Sets the attributes for the given font.
- Note that wxTextAttr does not store an actual wxFont object.
- */
- void SetFont(const wxFont& font, int flags = wxTEXT_ATTR_FONT & ~wxTEXT_ATTR_FONT_PIXEL_SIZE);
- /**
- Sets the font encoding.
- */
- void SetFontEncoding(wxFontEncoding encoding);
- /**
- Sets the font face name.
- */
- void SetFontFaceName(const wxString& faceName);
- /**
- Sets the font family.
- */
- void SetFontFamily(wxFontFamily family);
- /**
- Sets the font size in points.
- */
- void SetFontSize(int pointSize);
- /**
- Sets the font size in points.
- */
- void SetFontPointSize(int pointSize);
- /**
- Sets the font size in pixels.
- */
- void SetFontPixelSize(int pixelSize);
- /**
- Sets the font style (normal, italic or slanted).
- */
- void SetFontStyle(wxFontStyle fontStyle);
- /**
- Sets the font underlining.
- */
- void SetFontUnderlined(bool underlined);
- /**
- Sets the font weight.
- */
- void SetFontWeight(wxFontWeight fontWeight);
- /**
- Sets the left indent and left subindent in tenths of a millimetre.
- The sub-indent is an offset from the left of the paragraph, and is used for all
- but the first line in a paragraph.
- A positive value will cause the first line to appear to the left
- of the subsequent lines, and a negative value will cause the first line to be
- indented relative to the subsequent lines.
- wxRichTextBuffer uses indentation to render a bulleted item.
- The left indent is the distance between the margin and the bullet.
- The content of the paragraph, including the first line, starts
- at leftMargin + leftSubIndent.
- So the distance between the left edge of the bullet and the
- left of the actual paragraph is leftSubIndent.
- */
- void SetLeftIndent(int indent, int subIndent = 0);
- /**
- Sets the line spacing. @a spacing is a multiple, where 10 means single-spacing,
- 15 means 1.5 spacing, and 20 means double spacing.
- The ::wxTextAttrLineSpacing values are defined for convenience.
- */
- void SetLineSpacing(int spacing);
- /**
- Sets the list style name.
- */
- void SetListStyleName(const wxString& name);
- /**
- Specifies the outline level. Zero represents normal text.
- At present, the outline level is not used, but may be used in future for
- determining list levels and for applications that need to store document
- structure information.
- */
- void SetOutlineLevel(int level);
- /**
- Specifies a page break before this paragraph.
- */
- void SetPageBreak(bool pageBreak = true);
- /**
- Sets the spacing after a paragraph, in tenths of a millimetre.
- */
- void SetParagraphSpacingAfter(int spacing);
- /**
- Sets the spacing before a paragraph, in tenths of a millimetre.
- */
- void SetParagraphSpacingBefore(int spacing);
- /**
- Sets the name of the paragraph style.
- */
- void SetParagraphStyleName(const wxString& name);
- /**
- Sets the right indent in tenths of a millimetre.
- */
- void SetRightIndent(int indent);
- /**
- Sets the tab stops, expressed in tenths of a millimetre.
- Each stop is measured from the left margin and therefore each value must be
- larger than the last.
- */
- void SetTabs(const wxArrayInt& tabs);
- /**
- Sets the text foreground colour.
- */
- void SetTextColour(const wxColour& colText);
- /**
- Sets the text effect bits of interest.
- You should also pass wxTEXT_ATTR_EFFECTS to SetFlags().
- See SetFlags() for further information.
- */
- void SetTextEffectFlags(int flags);
- /**
- Sets the text effects, a bit list of styles.
- The ::wxTextAttrEffects enumeration values can be used.
- Of these, only wxTEXT_ATTR_EFFECT_CAPITALS, wxTEXT_ATTR_EFFECT_STRIKETHROUGH,
- wxTEXT_ATTR_EFFECT_SUPERSCRIPT and wxTEXT_ATTR_EFFECT_SUBSCRIPT are implemented.
- wxTEXT_ATTR_EFFECT_CAPITALS capitalises text when displayed (leaving the case
- of the actual buffer text unchanged), and wxTEXT_ATTR_EFFECT_STRIKETHROUGH draws
- a line through text.
- To set effects, you should also pass wxTEXT_ATTR_EFFECTS to SetFlags(), and call
- SetTextEffectFlags() with the styles (taken from the above set) that you
- are interested in setting.
- */
- void SetTextEffects(int effects);
- /**
- Sets the URL for the content. Sets the wxTEXT_ATTR_URL style; content with this
- style causes wxRichTextCtrl to show a hand cursor over it, and wxRichTextCtrl
- generates a wxTextUrlEvent when the content is clicked.
- */
- void SetURL(const wxString& url);
- //@}
- /**
- Assignment from a wxTextAttr object.
- */
- void operator=(const wxTextAttr& attr);
- };
- /**
- @class wxTextCtrl
- A text control allows text to be displayed and edited.
- It may be single line or multi-line. Notice that a lot of methods of the
- text controls are found in the base wxTextEntry class which is a common
- base class for wxTextCtrl and other controls using a single line text entry
- field (e.g. wxComboBox).
- @beginStyleTable
- @style{wxTE_PROCESS_ENTER}
- The control will generate the event @c wxEVT_TEXT_ENTER
- (otherwise pressing Enter key is either processed internally by the
- control or used for navigation between dialog controls).
- @style{wxTE_PROCESS_TAB}
- The control will receive @c wxEVT_CHAR events for TAB pressed -
- normally, TAB is used for passing to the next control in a dialog
- instead. For the control created with this style, you can still use
- Ctrl-Enter to pass to the next control from the keyboard.
- @style{wxTE_MULTILINE}
- The text control allows multiple lines. If this style is not
- specified, line break characters should not be used in the controls
- value.
- @style{wxTE_PASSWORD}
- The text will be echoed as asterisks.
- @style{wxTE_READONLY}
- The text will not be user-editable.
- @style{wxTE_RICH}
- Use rich text control under Win32, this allows to have more than
- 64KB of text in the control even under Win9x. This style is ignored
- under other platforms.
- @style{wxTE_RICH2}
- Use rich text control version 2.0 or 3.0 under Win32, this style is
- ignored under other platforms
- @style{wxTE_AUTO_URL}
- Highlight the URLs and generate the wxTextUrlEvents when mouse
- events occur over them. This style is only supported for wxTE_RICH
- Win32 and multi-line wxGTK2 text controls.
- @style{wxTE_NOHIDESEL}
- By default, the Windows text control doesn't show the selection
- when it doesn't have focus - use this style to force it to always
- show it. It doesn't do anything under other platforms.
- @style{wxHSCROLL}
- A horizontal scrollbar will be created and used, so that text won't
- be wrapped. No effect under wxGTK1.
- @style{wxTE_NO_VSCROLL}
- For multiline controls only: vertical scrollbar will never be
- created. This limits the amount of text which can be entered into
- the control to what can be displayed in it under MSW but not under
- GTK2. Currently not implemented for the other platforms.
- @style{wxTE_LEFT}
- The text in the control will be left-justified (default).
- @style{wxTE_CENTRE}
- The text in the control will be centered (currently wxMSW and
- wxGTK2 only).
- @style{wxTE_RIGHT}
- The text in the control will be right-justified (currently wxMSW
- and wxGTK2 only).
- @style{wxTE_DONTWRAP}
- Same as wxHSCROLL style: don't wrap at all, show horizontal
- scrollbar instead.
- @style{wxTE_CHARWRAP}
- Wrap the lines too long to be shown entirely at any position
- (wxUniv and wxGTK2 only).
- @style{wxTE_WORDWRAP}
- Wrap the lines too long to be shown entirely at word boundaries
- (wxUniv and wxGTK2 only).
- @style{wxTE_BESTWRAP}
- Wrap the lines at word boundaries or at any other character if
- there are words longer than the window width (this is the default).
- @style{wxTE_CAPITALIZE}
- On PocketPC and Smartphone, causes the first letter to be
- capitalized.
- @endStyleTable
- Note that alignment styles (wxTE_LEFT, wxTE_CENTRE and wxTE_RIGHT) can be
- changed dynamically after control creation on wxMSW and wxGTK. wxTE_READONLY,
- wxTE_PASSWORD and wrapping styles can be dynamically changed under wxGTK but
- not wxMSW. The other styles can be only set during control creation.
- @section textctrl_text_format wxTextCtrl Text Format
- The multiline text controls always store the text as a sequence of lines
- separated by @c '\\n' characters, i.e. in the Unix text format even on
- non-Unix platforms. This allows the user code to ignore the differences
- between the platforms but at a price: the indices in the control such as
- those returned by GetInsertionPoint() or GetSelection() can @b not be used
- as indices into the string returned by GetValue() as they're going to be
- slightly off for platforms using @c "\\r\\n" as separator (as Windows
- does).
- Instead, if you need to obtain a substring between the 2 indices obtained
- from the control with the help of the functions mentioned above, you should
- use GetRange(). And the indices themselves can only be passed to other
- methods, for example SetInsertionPoint() or SetSelection().
- To summarize: never use the indices returned by (multiline) wxTextCtrl as
- indices into the string it contains, but only as arguments to be passed
- back to the other wxTextCtrl methods. This problem doesn't arise for
- single-line platforms however where the indices in the control do
- correspond to the positions in the value string.
- @section textctrl_styles wxTextCtrl Styles.
- Multi-line text controls support styling, i.e. provide a possibility to set
- colours and font for individual characters in it (note that under Windows
- @c wxTE_RICH style is required for style support). To use the styles you
- can either call SetDefaultStyle() before inserting the text or call
- SetStyle() later to change the style of the text already in the control
- (the first solution is much more efficient).
- In either case, if the style doesn't specify some of the attributes (for
- example you only want to set the text colour but without changing the font
- nor the text background), the values of the default style will be used for
- them. If there is no default style, the attributes of the text control
- itself are used.
- So the following code correctly describes what it does: the second call to
- SetDefaultStyle() doesn't change the text foreground colour (which stays
- red) while the last one doesn't change the background colour (which stays
- grey):
- @code
- text->SetDefaultStyle(wxTextAttr(*wxRED));
- text->AppendText("Red text\n");
- text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY));
- text->AppendText("Red on grey text\n");
- text->SetDefaultStyle(wxTextAttr(*wxBLUE);
- text->AppendText("Blue on grey text\n");
- @endcode
- @section textctrl_cpp_streams wxTextCtrl and C++ Streams
- This class multiply-inherits from @c std::streambuf (except for some really
- old compilers using non-standard iostream library), allowing code such as
- the following:
- @code
- wxTextCtrl *control = new wxTextCtrl(...);
- ostream stream(control)
- stream << 123.456 << " some text\n";
- stream.flush();
- @endcode
- Note that even if your compiler doesn't support this (the symbol
- @c wxHAS_TEXT_WINDOW_STREAM has value of 0 then) you can still use
- wxTextCtrl itself in a stream-like manner:
- @code
- wxTextCtrl *control = new wxTextCtrl(...);
- *control << 123.456 << " some text\n";
- @endcode
- However the possibility to create an ostream associated with wxTextCtrl may
- be useful if you need to redirect the output of a function taking an
- ostream as parameter to a text control.
- Another commonly requested need is to redirect @c std::cout to the text
- control. This may be done in the following way:
- @code
- #include <iostream>
- wxTextCtrl *control = new wxTextCtrl(...);
- std::streambuf *sbOld = std::cout.rdbuf();
- std::cout.rdbuf(control);
- // use cout as usual, the output appears in the text control
- ...
- std::cout.rdbuf(sbOld);
- @endcode
- But wxWidgets provides a convenient class to make it even simpler so
- instead you may just do
- @code
- #include <iostream>
- wxTextCtrl *control = new wxTextCtrl(...);
- wxStreamToTextRedirector redirect(control);
- // all output to cout goes into the text control until the exit from
- // current scope
- @endcode
- See wxStreamToTextRedirector for more details.
- @section textctrl_event_handling Event Handling.
- The following commands are processed by default event handlers in
- wxTextCtrl: @c wxID_CUT, @c wxID_COPY, @c wxID_PASTE, @c wxID_UNDO, @c
- wxID_REDO. The associated UI update events are also processed
- automatically, when the control has the focus.
- @beginEventEmissionTable{wxCommandEvent}
- @event{EVT_TEXT(id, func)}
- Respond to a @c wxEVT_TEXT event, generated when the text
- changes. Notice that this event will be sent when the text controls
- contents changes -- whether this is due to user input or comes from the
- program itself (for example, if wxTextCtrl::SetValue() is called); see
- wxTextCtrl::ChangeValue() for a function which does not send this event.
- This event is however not sent during the control creation.
- @event{EVT_TEXT_ENTER(id, func)}
- Respond to a @c wxEVT_TEXT_ENTER event, generated when enter is
- pressed in a text control which must have wxTE_PROCESS_ENTER style for
- this event to be generated.
- @event{EVT_TEXT_URL(id, func)}
- A mouse event occurred over an URL in the text control (wxMSW and
- wxGTK2 only currently).
- @event{EVT_TEXT_MAXLEN(id, func)}
- This event is generated when the user tries to enter more text into the
- control than the limit set by wxTextCtrl::SetMaxLength(), see its description.
- @endEventTable
- @library{wxcore}
- @category{ctrl}
- @appearance{textctrl}
- @see wxTextCtrl::Create, wxValidator
- */
- class wxTextCtrl : public wxControl,
- public wxTextEntry
- {
- public:
- /**
- Default ctor.
- */
- wxTextCtrl();
- /**
- Constructor, creating and showing a text control.
- @param parent
- Parent window. Should not be @NULL.
- @param id
- Control identifier. A value of -1 denotes a default value.
- @param value
- Default text value.
- @param pos
- Text control position.
- @param size
- Text control size.
- @param style
- Window style. See wxTextCtrl.
- @param validator
- Window validator.
- @param name
- Window name.
- @remarks
- The horizontal scrollbar (wxHSCROLL style flag) will only be
- created for multi-line text controls. Without a horizontal
- scrollbar, text lines that don't fit in the control's size will be
- wrapped (but no newline character is inserted).
- Single line controls don't have a horizontal scrollbar, the text is
- automatically scrolled so that the insertion point is always visible.
- @see Create(), wxValidator
- */
- wxTextCtrl(wxWindow* parent, wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTextCtrlNameStr);
- /**
- Destructor, destroying the text control.
- */
- virtual ~wxTextCtrl();
- /**
- Creates the text control for two-step construction.
- This method should be called if the default constructor was used for
- the control creation. Its parameters have the same meaning as for the
- non-default constructor.
- */
- bool Create(wxWindow* parent, wxWindowID id,
- const wxString& value = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxTextCtrlNameStr);
- /**
- Resets the internal modified flag as if the current changes had been
- saved.
- */
- virtual void DiscardEdits();
- /**
- This function inserts into the control the character which would have
- been inserted if the given key event had occurred in the text control.
- The @a event object should be the same as the one passed to @c EVT_KEY_DOWN
- handler previously by wxWidgets. Please note that this function doesn't
- currently work correctly for all keys under any platform but MSW.
- @return
- @true if the event resulted in a change to the control, @false otherwise.
- */
- virtual bool EmulateKeyPress(const wxKeyEvent& event);
- /**
- Returns the style currently used for the new text.
- @see SetDefaultStyle()
- */
- virtual const wxTextAttr& GetDefaultStyle() const;
- /**
- Gets the length of the specified line, not including any trailing
- newline character(s).
- @param lineNo
- Line number (starting from zero).
- @return
- The length of the line, or -1 if @a lineNo was invalid.
- */
- virtual int GetLineLength(long lineNo) const;
- /**
- Returns the contents of a given line in the text control, not including
- any trailing newline character(s).
- @param lineNo
- The line number, starting from zero.
- @return
- The contents of the line.
- */
- virtual wxString GetLineText(long lineNo) const;
- /**
- Returns the number of lines in the text control buffer.
- The returned number is the number of logical lines, i.e. just the count
- of the number of newline characters in the control + 1, for wxGTK and
- wxOSX/Cocoa ports while it is the number of physical lines, i.e. the
- count of lines actually shown in the control, in wxMSW and wxOSX/Carbon.
- Because of this discrepancy, it is not recommended to use this function.
- @remarks
- Note that even empty text controls have one line (where the
- insertion point is), so GetNumberOfLines() never returns 0.
- */
- virtual int GetNumberOfLines() const;
- /**
- Returns the style at this position in the text control.
- Not all platforms support this function.
- @return
- @true on success, @false if an error occurred (this may also mean
- that the styles are not supported under this platform).
- @see SetStyle(), wxTextAttr
- */
- virtual bool GetStyle(long position, wxTextAttr& style);
- /**
- Finds the position of the character at the specified point.
- If the return code is not @c wxTE_HT_UNKNOWN the row and column of the
- character closest to this position are returned, otherwise the output
- parameters are not modified.
- Please note that this function is currently only implemented in wxUniv,
- wxMSW and wxGTK2 ports and always returns @c wxTE_HT_UNKNOWN in the
- other ports.
- @beginWxPerlOnly
- In wxPerl this function takes only the @a pt argument and
- returns a 3-element list (result, col, row).
- @endWxPerlOnly
- @param pt
- The position of the point to check, in window device coordinates.
- @param pos
- Receives the position of the character at the given position. May
- be @NULL.
- @see PositionToXY(), XYToPosition()
- */
- wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const;
- /**
- Finds the row and column of the character at the specified point.
- If the return code is not @c wxTE_HT_UNKNOWN the row and column of the
- character closest to this position are returned, otherwise the output
- parameters are not modified.
- Please note that this function is currently only implemented in wxUniv,
- wxMSW and wxGTK2 ports and always returns @c wxTE_HT_UNKNOWN in the
- other ports.
- @beginWxPerlOnly
- In wxPerl this function takes only the @a pt argument and
- returns a 3-element list (result, col, row).
- @endWxPerlOnly
- @param pt
- The position of the point to check, in window device coordinates.
- @param col
- Receives the column of the character at the given position. May be
- @NULL.
- @param row
- Receives the row of the character at the given position. May be
- @NULL.
- @see PositionToXY(), XYToPosition()
- */
- wxTextCtrlHitTestResult HitTest(const wxPoint& pt,
- wxTextCoord *col,
- wxTextCoord *row) const;
- /**
- Returns @true if the text has been modified by user.
- Note that calling SetValue() doesn't make the control modified.
- @see MarkDirty()
- */
- virtual bool IsModified() const;
- /**
- Returns @true if this is a multi line edit control and @false otherwise.
- @see IsSingleLine()
- */
- bool IsMultiLine() const;
- /**
- Returns @true if this is a single line edit control and @false otherwise.
- @see IsSingleLine(), IsMultiLine()
- */
- bool IsSingleLine() const;
- /**
- Loads and displays the named file, if it exists.
- @param filename
- The filename of the file to load.
- @param fileType
- The type of file to load. This is currently ignored in wxTextCtrl.
- @return
- @true if successful, @false otherwise.
- */
- bool LoadFile(const wxString& filename,
- int fileType = wxTEXT_TYPE_ANY);
- /**
- Mark text as modified (dirty).
- @see IsModified()
- */
- virtual void MarkDirty();
- /**
- This event handler function implements default drag and drop behaviour,
- which is to load the first dropped file into the control.
- @param event
- The drop files event.
- @remarks This is not implemented on non-Windows platforms.
- @see wxDropFilesEvent
- */
- void OnDropFiles(wxDropFilesEvent& event);
- /**
- Converts given position to a zero-based column, line number pair.
- @param pos
- Position.
- @param x
- Receives zero based column number.
- @param y
- Receives zero based line number.
- @return
- @true on success, @false on failure (most likely due to a too large
- position parameter).
- @beginWxPerlOnly
- In wxPerl this function takes only the @a pos argument and
- returns a 2-element list (x, y).
- @endWxPerlOnly
- @see XYToPosition()
- */
- virtual bool PositionToXY(long pos, long* x, long* y) const;
- /**
- Converts given text position to client coordinates in pixels.
- This function allows to find where is the character at the given
- position displayed in the text control.
- @onlyfor{wxmsw,wxgtk}. Additionally, wxGTK only implements this method
- for multiline controls and ::wxDefaultPosition is always returned for
- the single line ones.
- @param pos
- Text position in 0 to GetLastPosition() range (inclusive).
- @return
- On success returns a wxPoint which contains client coordinates for
- the given position in pixels, otherwise returns ::wxDefaultPosition.
- @since 2.9.3
- @see XYToPosition(), PositionToXY()
- */
- wxPoint PositionToCoords(long pos) const;
- /**
- Saves the contents of the control in a text file.
- @param filename
- The name of the file in which to save the text.
- @param fileType
- The type of file to save. This is currently ignored in wxTextCtrl.
- @return
- @true if the operation was successful, @false otherwise.
- */
- bool SaveFile(const wxString& filename = wxEmptyString,
- int fileType = wxTEXT_TYPE_ANY);
- /**
- Changes the default style to use for the new text which is going to be
- added to the control using WriteText() or AppendText().
- If either of the font, foreground, or background colour is not set in
- @a style, the values of the previous default style are used for them.
- If the previous default style didn't set them neither, the global font
- or colours of the text control itself are used as fall back.
- However if the @a style parameter is the default wxTextAttr, then the default
- style is just reset (instead of being combined with the new style which
- wouldn't change it at all).
- @param style
- The style for the new text.
- @return
- @true on success, @false if an error occurred (this may also mean
- that the styles are not supported under this platform).
- @see GetDefaultStyle()
- */
- virtual bool SetDefaultStyle(const wxTextAttr& style);
- /**
- Marks the control as being modified by the user or not.
- @see MarkDirty(), DiscardEdits()
- */
- void SetModified(bool modified);
- /**
- Changes the style of the given range.
- If any attribute within @a style is not set, the corresponding
- attribute from GetDefaultStyle() is used.
- @param start
- The start of the range to change.
- @param end
- The end of the range to change.
- @param style
- The new style for the range.
- @return
- @true on success, @false if an error occurred (this may also mean
- that the styles are not supported under this platform).
- @see GetStyle(), wxTextAttr
- */
- virtual bool SetStyle(long start, long end, const wxTextAttr& style);
- /**
- Makes the line containing the given position visible.
- @param pos
- The position that should be visible.
- */
- virtual void ShowPosition(long pos);
- /**
- Converts the given zero based column and line number to a position.
- @param x
- The column number.
- @param y
- The line number.
- @return
- The position value, or -1 if x or y was invalid.
- */
- virtual long XYToPosition(long x, long y) const;
- //@{
- /**
- Operator definitions for appending to a text control.
- These operators can be used as with the standard C++ streams, for
- example:
- @code
- wxTextCtrl *wnd = new wxTextCtrl(my_frame);
- (*wnd) << "Welcome to text control number " << 1 << ".\n";
- @endcode
- */
- wxTextCtrl& operator<<(const wxString& s);
- wxTextCtrl& operator<<(int i);
- wxTextCtrl& operator<<(long i);
- wxTextCtrl& operator<<(float f);
- wxTextCtrl& operator<<(double d);
- wxTextCtrl& operator<<(char c);
- wxTextCtrl& operator<<(wchar_t c);
- //@}
- };
- wxEventType wxEVT_TEXT;
- wxEventType wxEVT_TEXT_ENTER;
- wxEventType wxEVT_TEXT_URL;
- wxEventType wxEVT_TEXT_MAXLEN;
- class wxTextUrlEvent : public wxCommandEvent
- {
- public:
- wxTextUrlEvent(int winid, const wxMouseEvent& evtMouse,
- long start, long end);
- wxTextUrlEvent(const wxTextUrlEvent& event);
- // get the mouse event which happened over the URL
- const wxMouseEvent& GetMouseEvent() const;
- // get the start of the URL
- long GetURLStart() const;
- // get the end of the URL
- long GetURLEnd() const;
- virtual wxEvent *Clone() const;
- };
- /**
- @class wxStreamToTextRedirector
- This class can be used to (temporarily) redirect all output sent to a C++
- ostream object to a wxTextCtrl instead.
- @note
- Some compilers and/or build configurations don't support multiply
- inheriting wxTextCtrl from @c std::streambuf in which case this class is
- not compiled in.
- You also must have @c wxUSE_STD_IOSTREAM option on (i.e. set to 1) in your
- @c setup.h to be able to use it. Under Unix, specify @c --enable-std_iostreams
- switch when running configure for this.
- Example of usage:
- @code
- using namespace std;
- wxTextCtrl* text = new wxTextCtrl(...);
- {
- wxStreamToTextRedirector redirect(text);
- // this goes to the text control
- cout << "Hello, text!" << endl;
- }
- // this goes somewhere else, presumably to stdout
- cout << "Hello, console!" << endl;
- @endcode
- @library{wxcore}
- @category{logging}
- @see wxTextCtrl
- */
- class wxStreamToTextRedirector
- {
- public:
- /**
- The constructor starts redirecting output sent to @a ostr or @a cout for
- the default parameter value to the text control @a text.
- @param text
- The text control to append output too, must be non-@NULL
- @param ostr
- The C++ stream to redirect, cout is used if it is @NULL
- */
- wxStreamToTextRedirector(wxTextCtrl *text, ostream* ostr);
- /**
- When a wxStreamToTextRedirector object is destroyed, the redirection is ended
- and any output sent to the C++ ostream which had been specified at the time of
- the object construction will go to its original destination.
- */
- ~wxStreamToTextRedirector();
- };
|