X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ccf39540bb96a0e5d067451ad79c82397579aceb..ebfee17940b5123d0527b63bcf23e5f27002092e:/interface/wx/textctrl.h diff --git a/interface/wx/textctrl.h b/interface/wx/textctrl.h index 7cd22db8f0..e64f8f0092 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,55 +31,75 @@ 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, wxTEXT_ATTR_FONT_ITALIC = 0x00000020, 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_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | 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, /** - 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_FONT_ENCODING|wxTEXT_ATTR_EFFECTS| \ + (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 { @@ -106,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. */ @@ -126,7 +145,7 @@ enum wxTextAttrEffects }; /** - Line spacing values; see wxTextAttr::SetLineSpacing(). + Convenience line spacing values; see wxTextAttr::SetLineSpacing(). */ enum wxTextAttrLineSpacing { @@ -206,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. @@ -295,6 +335,11 @@ public: */ const wxString& GetFontFaceName() const; + /** + Returns the font family. + */ + wxFontFamily GetFontFamily() const; + /** Returns the font size in points. */ @@ -303,7 +348,7 @@ public: /** Returns the font style. */ - int GetFontStyle() const; + wxFontStyle GetFontStyle() const; /** Returns @true if the font is underlined. @@ -313,7 +358,7 @@ public: /** Returns the font weight. */ - int GetFontWeight() const; + wxFontWeight GetFontWeight() const; /** Returns the left indent in tenths of a millimetre. @@ -394,6 +439,16 @@ public: */ const wxString& GetURL() const; + //@} + + + + /** + @name HasXXX and IsXXX functions + */ + + //@{ + /** Returns @true if the attribute object specifies alignment. */ @@ -451,6 +506,11 @@ public: */ 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. */ @@ -557,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. @@ -641,10 +696,15 @@ public: void SetFontEncoding(wxFontEncoding encoding); /** - Sets the paragraph alignment. + Sets the font face name. */ void SetFontFaceName(const wxString& faceName); + /** + Sets the font family. + */ + void SetFontFamily(wxFontFamily family); + /** Sets the font size in points. */ @@ -653,7 +713,7 @@ public: /** Sets the font style (normal, italic or slanted). */ - void SetFontStyle(int fontStyle); + void SetFontStyle(wxFontStyle fontStyle); /** Sets the font underlining. @@ -663,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. @@ -772,6 +832,9 @@ public: */ void SetURL(const wxString& url); + //@} + + /** Assignment from a wxTextAttr object. */ @@ -784,7 +847,10 @@ public: A text control allows text to be displayed and edited. - It may be single line or multi-line. + 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} @@ -797,7 +863,9 @@ public: 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. + 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} @@ -979,7 +1047,7 @@ public: wxID_REDO. The associated UI update events are also processed automatically, when the control has the focus. - @beginEventTable{wxCommandEvent} + @beginEventEmissionTable{wxCommandEvent} @event{EVT_TEXT(id, func)} Respond to a wxEVT_COMMAND_TEXT_UPDATED event, generated when the text changes. Notice that this event will be sent when the text controls @@ -1005,7 +1073,8 @@ public: @see wxTextCtrl::Create, wxValidator */ -class wxTextCtrl : public wxControl +class wxTextCtrl : public wxControl, + public wxTextEntry { public: /** @@ -1056,123 +1125,6 @@ public: */ virtual ~wxTextCtrl(); - /** - Appends the text to the end of the text control. - - @param text - Text to write to the text control. - - @remarks - After the text is appended, the insertion point will be at the - end of the text control. If this behaviour is not desired, the - programmer should use GetInsertionPoint() and SetInsertionPoint(). - - @see WriteText() - */ - virtual void AppendText(const wxString& text); - - /** - Call this function to enable auto-completion of the text typed in a - single-line text control using the given @a choices. - - Notice that currently this function is only implemented in wxGTK2 and - wxMSW ports and does nothing under the other platforms. - - @since 2.9.0 - - @return - @true if the auto-completion was enabled or @false if the operation - failed, typically because auto-completion is not supported by the - current platform. - - @see AutoCompleteFileNames() - */ - virtual bool AutoComplete(const wxArrayString& choices); - - /** - Call this function to enable auto-completion of the text typed in a - single-line text control using all valid file system paths. - - Notice that currently this function is only implemented in wxGTK2 port - and does nothing under the other platforms. - - @since 2.9.0 - - @return - @true if the auto-completion was enabled or @false if the operation - failed, typically because auto-completion is not supported by the - current platform. - - @see AutoComplete() - */ - virtual bool AutoCompleteFileNames(); - - /** - Returns @true if the selection can be copied to the clipboard. - */ - virtual bool CanCopy() const; - - /** - Returns @true if the selection can be cut to the clipboard. - */ - virtual bool CanCut() const; - - /** - Returns @true if the contents of the clipboard can be pasted into the - text control. - - On some platforms (Motif, GTK) this is an approximation and returns - @true if the control is editable, @false otherwise. - */ - virtual bool CanPaste() const; - - /** - Returns @true if there is a redo facility available and the last - operation can be redone. - */ - virtual bool CanRedo() const; - - /** - Returns @true if there is an undo facility available and the last - operation can be undone. - */ - virtual bool CanUndo() const; - - /** - Sets the new text control value. - - It also marks the control as not-modified which means that IsModified() - would return @false immediately after the call to SetValue(). - - The insertion point is set to the start of the control (i.e. position - 0) by this function. - - This functions does not generate the @c wxEVT_COMMAND_TEXT_UPDATED - event but otherwise is identical to SetValue(). - - See @ref overview_eventhandling_prog for more information. - - @since 2.7.1 - - @param value - The new value to set. It may contain newline characters if the text - control is multi-line. - */ - virtual void ChangeValue(const wxString& value); - - /** - Clears the text in the control. - - Note that this function will generate a @c wxEVT_COMMAND_TEXT_UPDATED - event, i.e. its effect is identical to calling @c SetValue(""). - */ - virtual void Clear(); - - /** - Copies the selected text to the clipboard. - */ - virtual void Copy(); - /** Creates the text control for two-step construction. @@ -1199,7 +1151,7 @@ public: virtual void DiscardEdits(); /** - This functions inserts into the control the character which would have + 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 @@ -1218,35 +1170,6 @@ public: */ virtual const wxTextAttr& GetDefaultStyle() const; - /** - Returns the insertion point, or cursor, position. - - This is defined as the zero based index of the character position to - the right of the insertion point. For example, if the insertion point - is at the end of the single-line text control, it is equal to both - GetLastPosition() and @c "GetValue().Length()" (but notice that the latter - equality is not necessarily true for multiline edit controls which may - use multiple new line characters). - - The following code snippet safely returns the character at the insertion - point or the zero character if the point is at the end of the control. - - @code - char GetCurrentChar(wxTextCtrl *tc) { - if (tc->GetInsertionPoint() == tc->GetLastPosition()) - return '\0'; - return tc->GetValue[tc->GetInsertionPoint()]; - } - @endcode - */ - virtual long GetInsertionPoint() const; - - /** - Returns the zero based index of the last position in the text control, - which is equal to the number of characters in the control. - */ - virtual wxTextPos GetLastPosition() const; - /** Gets the length of the specified line, not including any trailing newline character(s). @@ -1290,43 +1213,6 @@ public: */ virtual int GetNumberOfLines() const; - /** - Returns the string containing the text starting in the positions - @a from and up to @a to in the control. - - The positions must have been returned by another wxTextCtrl method. - Please note that the positions in a multiline wxTextCtrl do @b not - correspond to the indices in the string returned by GetValue() because - of the different new line representations (@c CR or @c CR LF) and so - this method should be used to obtain the correct results instead of - extracting parts of the entire value. It may also be more efficient, - especially if the control contains a lot of data. - */ - virtual wxString GetRange(long from, long to) const; - - /** - Gets the current selection span. - - If the returned values are equal, there was no selection. Please note - that the indices returned may be used with the other wxTextCtrl methods - but don't necessarily represent the correct indices into the string - returned by GetValue() for multiline controls under Windows (at least,) - you should use GetStringSelection() to get the selected text. - - @param from - The returned first position. - @param to - The returned last position. - */ - virtual void GetSelection(long* from, long* to) const; - - /** - Gets the text currently selected in the control. - - If there is no selection, the returned string is empty. - */ - virtual wxString GetStringSelection() const; - /** Returns the style at this position in the text control. @@ -1340,15 +1226,6 @@ public: */ virtual bool GetStyle(long position, wxTextAttr& style); - /** - Gets the contents of the control. - - Notice that for a multiline text control, the lines will be separated - by (Unix-style) @c \\n characters, even under Windows where they are - separated by a @c \\r\\n sequence in the native control. - */ - virtual wxString GetValue() const; - /** This function finds the character at the specified position expressed in pixels. @@ -1359,31 +1236,17 @@ public: Please note that this function is currently only implemented in wxUniv, wxMSW and wxGTK2 ports. + @beginWxPerlOnly + In wxPerl this function takes only the @a pt argument and + returns a 3-element list (result, col, row). + @endWxPerlOnly + @see PositionToXY(), XYToPosition() */ wxTextCtrlHitTestResult HitTest(const wxPoint& pt, wxTextCoord col, wxTextCoord row) const; - /** - Returns @true if the controls contents may be edited by user (note that - it always can be changed by the program). - - In other words, this functions returns @true if the control hasn't been - put in read-only mode by a previous call to SetEditable(). - */ - virtual bool IsEditable() const; - - /** - Returns @true if the control is currently empty. - - This is the same as @c GetValue().empty() but can be much more - efficient for the multiline controls containing big amounts of text. - - @since 2.7.1 - */ - virtual bool IsEmpty() const; - /** Returns @true if the text has been modified by user. @@ -1441,11 +1304,6 @@ public: */ void OnDropFiles(wxDropFilesEvent& event); - /** - Pastes text from the clipboard to the text item. - */ - virtual void Paste(); - /** Converts given position to a zero-based column, line number pair. @@ -1460,48 +1318,15 @@ public: @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; - /** - If there is a redo facility and the last operation can be redone, - redoes the last operation. - - Does nothing if there is no redo facility. - */ - virtual void Redo(); - - /** - Removes the text starting at the first given position up to - (but not including) the character at the last position. - - This function puts the current insertion point position at @a to as a - side effect. - - @param from - The first position. - @param to - The last position. - */ - virtual void Remove(long from, long to); - - /** - Replaces the text starting at the first position up to - (but not including) the character at the last position with the given text. - - This function puts the current insertion point position at @a to as a - side effect. - - @param from - The first position. - @param to - The last position. - @param value - The value to replace the existing text with. - */ - virtual void Replace(long from, long to, const wxString& value); - /** Saves the contents of the control in a text file. @@ -1540,53 +1365,6 @@ public: */ virtual bool SetDefaultStyle(const wxTextAttr& style); - /** - Makes the text item editable or read-only, overriding the - @b wxTE_READONLY flag. - - @param editable - If @true, the control is editable. If @false, the control is - read-only. - - @see IsEditable() - */ - virtual void SetEditable(bool editable); - - /** - Sets the insertion point at the given position. - - @param pos - Position to set, in the range from 0 to GetLastPosition() inclusive. - */ - virtual void SetInsertionPoint(long pos); - - /** - Sets the insertion point at the end of the text control. - - This is equivalent to calling wxTextCtrl::SetInsertionPoint() with - wxTextCtrl::GetLastPosition() argument. - */ - virtual void SetInsertionPointEnd(); - - /** - This function sets the maximum number of characters the user can enter - into the control. - - In other words, it allows to limit the text value length to @a len not - counting the terminating @c NUL character. - - If @a len is 0, the previously set max length limit, if any, is discarded - and the user may enter as much text as the underlying native text control widget - supports (typically at least 32Kb). - If the user tries to enter more characters into the text control when it - already is filled up to the maximal length, a @c wxEVT_COMMAND_TEXT_MAXLEN - event is sent to notify the program about it (giving it the possibility - to show an explanatory message, for example) and the extra input is discarded. - - Note that in wxGTK this function may only be used with single line text controls. - */ - virtual void SetMaxLength(unsigned long len); - /** Marks the control as being modified by the user or not. @@ -1594,31 +1372,6 @@ public: */ void SetModified(bool modified); - /** - Selects the text starting at the first position up to (but not - including) the character at the last position. - - If both parameters are equal to -1 all text in the control is selected. - - Notice that the insertion point will be moved to @a from by this - function. - - @param from - The first position. - @param to - The last position. - - @see SelectAll() - */ - virtual void SetSelection(long from, long to); - - /** - Selects all text in the control. - - @see SetSelection() - */ - virtual void SelectAll(); - /** Changes the style of the given range. @@ -1640,25 +1393,6 @@ public: */ virtual bool SetStyle(long start, long end, const wxTextAttr& style); - /** - Sets the new text control value. - - It also marks the control as not-modified which means that IsModified() - would return @false immediately after the call to SetValue(). - - The insertion point is set to the start of the control (i.e. position - 0) by this function. - - Note that, unlike most other functions changing the controls values, - this function generates a @c wxEVT_COMMAND_TEXT_UPDATED event. To avoid - this you can use ChangeValue() instead. - - @param value - The new value to set. It may contain newline characters if the text - control is multi-line. - */ - virtual void SetValue(const wxString& value); - /** Makes the line containing the given position visible. @@ -1667,32 +1401,6 @@ public: */ virtual void ShowPosition(long pos); - /** - If there is an undo facility and the last operation can be undone, - undoes the last operation. - - Does nothing if there is no undo facility. - */ - virtual void Undo(); - - /** - Writes the text into the text control at the current insertion position. - - @param text - Text to write to the text control. - - @remarks - Newlines in the text string are the only control characters - allowed, and they will cause appropriate line breaks. - See operator<<() and AppendText() for more convenient ways of - writing to the window. - After the write operation, the insertion point will be at the end - of the inserted text, so subsequent write operations will be appended. - To append text after the user may have interacted with the control, - call wxTextCtrl::SetInsertionPointEnd() before writing. - */ - virtual void WriteText(const wxString& text); - /** Converts the given zero based column and line number to a position.