Go to the documentation of this file.
44 mMouseLeftPressed(false),
47 mModeMultiline(false),
52 mOverflowToTheLeft(false),
224 while (iterBack != text.
rend())
226 if (((*iterBack) < 265) && (ispunct(*iterBack) || isspace(*iterBack)))
231 while (iterForw != text.
end())
233 if (((*iterForw) < 265) && (ispunct(*iterForw) || isspace(*iterForw)))
293 return c ==
' ' || c ==
'\t';
425 const UString& text = getRealString();
462 const UString& text = getRealString();
749 void EditBox::frameEntered(
float _frame)
779 mouse.
left -= view.left;
780 mouse.top -= view.top;
916 void EditBox::resetSelect()
926 void EditBox::commandPosition(
size_t _undo,
size_t _redo,
size_t _length,
VectorChangeInfo* _info)
928 if (_info !=
nullptr)
929 _info->push_back(TextCommandInfo(_undo, _redo, _length));
932 void EditBox::commandMerge()
941 for (VectorChangeInfo::iterator iter = info.begin(); iter != info.end(); ++iter)
947 bool EditBox::commandUndo()
962 UString text = getRealString();
965 for (VectorChangeInfo::reverse_iterator iter = info.rbegin(); iter != info.rend(); ++iter)
968 text.erase((*iter).start, (*iter).text.size());
970 text.insert((*iter).start, (*iter).text);
992 bool EditBox::commandRedo()
1007 UString text = getRealString();
1010 for (VectorChangeInfo::iterator iter = info.begin(); iter != info.end(); ++iter)
1013 text.insert((*iter).start, (*iter).text);
1015 text.erase((*iter).start, (*iter).text.size());
1025 setRealString(text);
1040 if (_info ==
nullptr)
1043 if ( _info->empty())
1060 size_t end = _start + _count;
1069 bool need_colour =
true;
1087 else if (pos == _start)
1096 else if (pos == end)
1108 void EditBox::_setTextColour(
size_t _start,
size_t _count,
const Colour& _colour,
bool _history)
1116 size_t end = _start + _count;
1125 while (iterator.moveNext())
1128 size_t pos = iterator.getPosition();
1131 iterator.getTagColour(colour);
1138 else if (pos == _start)
1139 iterator.setTagColour(_colour);
1143 iterator.clearTagColour();
1146 else if (pos == end)
1148 iterator.setTagColour(colour);
1156 commandPosition(_start, _start + _count,
mTextLength, history);
1161 saveInHistory(history);
1166 commandResetHistory();
1169 setRealString(iterator.getText());
1172 void EditBox::setTextSelectColour(
const Colour& _colour,
bool _history)
1180 _setTextColour(start, end - start, _colour, _history);
1217 commandResetHistory();
1220 void EditBox::setText(
const UString& _caption,
bool _history)
1257 saveInHistory(history);
1262 commandResetHistory();
1265 setRealString(iterator.getText());
1291 TextIterator iterator(getRealString(), history);
1297 bool need_colour = ( (_text.size() > 6) && (_text[0] == L
'#') && (_text[1] != L
'#') );
1300 while (iterator.moveNext())
1303 size_t pos = iterator.getPosition();
1307 iterator.getTagColour(colour);
1316 iterator.setTagColour(colour);
1338 commandPosition(_start, _start +
mTextLength - old, old, history);
1343 saveInHistory(history);
1348 commandResetHistory();
1351 setRealString(iterator.getText());
1374 TextIterator iterator(getRealString(), history);
1379 size_t end = _start + _count;
1380 bool need_colour =
false;
1383 while (iterator.moveNext())
1386 size_t pos = iterator.getPosition();
1392 iterator.getTagColour(colour);
1397 else if (pos == _start)
1400 if (!colour.empty())
1406 iterator.getTagColour(colour);
1407 iterator.saveStartPoint();
1414 iterator.getTagColour(colour);
1418 else if (pos == end)
1421 if (!colour.empty())
1423 if (iterator.getTagColour(colour))
1424 need_colour =
false;
1432 iterator.eraseFromStart();
1435 iterator.setTagColour(colour);
1438 commandPosition(_start + _count, _start,
mTextLength, history);
1447 saveInHistory(history);
1452 commandResetHistory();
1455 setRealString(iterator.getText());
1463 void EditBox::commandCut()
1480 void EditBox::commandCopy()
1489 void EditBox::commandPast()
1508 const UString& EditBox::getRealString()
1518 void EditBox::setRealString(
const UString& _caption)
1543 void EditBox::updateEditState()
1599 setText(_value,
false);
1604 return getRealString();
1607 void EditBox::updateSelectText()
1679 point.
top = _position;
1685 point.
left = _position;
1698 int offset = point.
top;
1706 else if (offset > (
int)
mVRange)
1709 if (offset != point.
top)
1720 int offset = point.
left;
1728 else if (offset > (
int)
mHRange)
1731 if (offset != point.
left)
1733 point.
left = offset;
1779 updateCursorPosition();
1783 void EditBox::updateCursorPosition()
1804 if (!view.
inside(cursor))
1834 else if (cursor.
top < view.
top)
1836 delta = - (view.
top - cursor.
top);
1842 offset.
top = point.
top + delta;
1847 if (offset != point)
1858 void EditBox::setContentPosition(
const IntPoint& _point)
1864 IntSize EditBox::getViewSize()
1871 IntSize EditBox::getContentSize()
1878 size_t EditBox::getVScrollPage()
1885 size_t EditBox::getHScrollPage()
1892 IntPoint EditBox::getContentPosition()
1899 Align EditBox::getContentAlign()
1908 _setTextColour(_start, _count, _colour,
false);
1933 setTextSelectColour(_colour,
false);
1970 commandResetHistory();
1979 setText(getRealString(),
false);
1987 commandResetHistory();
2006 if (!_value.
empty())
2068 point.
left = _index;
2090 if (_key ==
"CursorPosition")
2094 else if (_key ==
"TextSelect")
2098 else if (_key ==
"ReadOnly")
2102 else if (_key ==
"Password")
2106 else if (_key ==
"MultiLine")
2110 else if (_key ==
"PasswordChar")
2114 else if (_key ==
"MaxTextLength")
2118 else if (_key ==
"OverflowToTheLeft")
2122 else if (_key ==
"Static")
2126 else if (_key ==
"VisibleVScroll")
2130 else if (_key ==
"VisibleHScroll")
2134 else if (_key ==
"WordWrap")
2138 else if (_key ==
"TabPrinting")
2142 else if (_key ==
"InvertSelected")
2234 void EditBox::commandResetRedo()
2239 void EditBox::commandResetHistory()
static InputManager & getInstance()
const int EDIT_CURSOR_MIN_POSITION
void updateViewWithCursor()
virtual void setVisibleCursor(bool _value)
EventHandle_FrameEventDelegate eventFrameStart
void initialiseOverride() override
EventPair< EventHandle_WidgetVoid, EventHandle_EditPtr > eventEditTextChange
void setInvertSelected(bool _value)
void insertText(const UString &_text, size_t _index=ITEM_NONE)
size_t getHScrollRange() const
const UString & getCaption() override
reverse_iterator rend()
returns a reverse iterator just past the beginning of the string
size_t getTextCursor() const
bool isWhitespace(const UString::code_point &c)
bool getEditReadOnly() const
void setTextColour(const Colour &_value) override
virtual void setFontHeight(int _value)
bool getTabPrinting() const
void setEditStatic(bool _value)
size_t getTextSelectionLength() const
IntPoint getCursorPoint(size_t _position)
const float EDIT_ACTION_MOUSE_TIMER
void onKeyButtonPressed(KeyCode _key, Char _char) override
virtual bool isVisibleCursor() const
void shutdownOverride() override
bool getEditPassword() const
void setOnlyText(const UString &_value)
void onKeySetFocus(Widget *_old) override
DequeUndoRedoInfo mVectorRedoChangeInfo
size_t getVScrollRange() const
bool isVisibleVScroll() const
bool isVisibleHScroll() const
void setTextIntervalColour(size_t _start, size_t _count, const Colour &_colour)
virtual void setShadow(bool _value)
void notifyMouseLostFocus(Widget *_sender, Widget *_new)
Char getPasswordChar() const
forward iterator for UString
void clearClipboardData(const std::string &_type)
std::vector< TextCommandInfo > VectorChangeInfo
void setHScrollPosition(size_t _index)
virtual void setFontName(const std::string &_value)
virtual IntPoint getViewOffset() const
static UString getTextCharInfo(Char _char)
virtual void setTextSelection(size_t _start, size_t _end)
IntCoord getTextRegion() override
bool getTagColour(UString &_colour) const
bool getEditMultiLine() const
void setTextShadow(bool _value) override
uint16 code_point
a single UTF-16 code point
iterator begin()
returns an iterator to the first element of the string
size_t getHScrollPosition()
void onMouseDrag(int _left, int _top, MouseButton _id) override
ISubWidgetText * mClientText
void setVisibleHScroll(bool _value)
virtual const UString & getCaption() const
const size_t EDIT_MAX_UNDO
static UString getTextNewLine()
void notifyMouseReleased(Widget *_sender, int _left, int _top, MouseButton _id)
void setMaxTextLength(size_t _value)
Sets the max amount of text allowed in the edit field.
size_t getMaxTextLength() const
Gets the max amount of text allowed in the edit field.
void setTextSelection(size_t _start, size_t _end)
ISubWidgetText * getSubWidgetText()
virtual Align getTextAlign() const
virtual IntSize getTextSize()
const std::string EDIT_CLIPBOARD_TYPE_TEXT
T parseValue(const std::string &_value)
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
delegates::DelegateFunction< Args... > * newDelegate(void(*_func)(Args... args))
void notifyMouseButtonDoubleClick(Widget *_sender)
virtual void setTextColour(const Colour &_value)
const int EDIT_CURSOR_MAX_POSITION
void setPosition(const IntPoint &_value) override
const int EDIT_MOUSE_WHEEL
void setOverflowToTheLeft(bool _value)
Sets if surplus characters should push characters off the left side rather than ignored.
void setFontName(const std::string &_value) override
void setVScrollPosition(size_t _index)
const int EDIT_ACTION_MOUSE_ZONE
UString getTextInterval(size_t _start, size_t _count)
size_t getTextSelectionStart() const
forward iterator for UString
void setTextSelectionColour(const Colour &_value)
virtual size_t getCursorPosition() const
void setEditPassword(bool _value)
EventPair< EventHandle_WidgetVoid, EventHandle_EditPtr > eventEditSelectAccept
void setTextAlign(Align _value) override
const size_t EDIT_DEFAULT_MAX_TEXT_LENGTH
virtual void setShadowColour(const Colour &_value)
virtual void setSelectBackground(bool _normal)
void setClipboardData(const std::string &_type, const std::string &_data)
void clear()
deletes all of the elements in the string
const IntCoord & getCoord() const
IntRect getCursorRect(size_t _position)
void setPasswordChar(Char _value)
bool isTextSelection() const
virtual const Colour & getTextColour() const
static UString getOnlyText(const UString &_text)
void setTabPrinting(bool _value)
void notifyScrollChangePosition(ScrollBar *_sender, size_t _position)
IntSize getTextSize() override
size_t getPosition() const
size_t getTextSelectionEnd() const
void notifyMouseWheel(Widget *_sender, int _rel)
void deleteTextSelection()
bool getEditWordWrap() const
void setPropertyOverride(const std::string &_key, const std::string &_value) override
DequeUndoRedoInfo mVectorUndoChangeInfo
virtual void setCaption(const UString &_value)
virtual void setTextAlign(Align _value)
virtual void setViewOffset(const IntPoint &_point)
void setTextShadowColour(const Colour &_value) override
void notifyMousePressed(Widget *_sender, int _left, int _top, MouseButton _id)
std::string getClipboardData(const std::string &_type)
void setEditMultiLine(bool _value)
void setEditWordWrap(bool _value)
const float EDIT_CURSOR_TIMER
void setVisibleVScroll(bool _value)
virtual void setInvertSelected(bool _value)
const float EDIT_OFFSET_HORZ_CURSOR
types::TSize< int > IntSize
virtual void setCursorPosition(size_t _index)
void addText(const UString &_text)
void setCoord(const IntCoord &_value) override
virtual bool getInvertSelected() const
void setFontHeight(int _value) override
types::TPoint< int > IntPoint
virtual void setWordWrap(bool _value)
bool getOverflowToTheLeft() const
Returns true if surplus characters will be pushed off the left rather than ignored.
void setEditReadOnly(bool _value)
void eraseText(size_t _start, size_t _count=1)
bool getEditStatic() const
void setSize(const IntSize &_value) override
IntRect getAbsoluteRect() const
virtual int getFontHeight() const
types::TRect< int > IntRect
size_t getVScrollPosition()
bool empty() const
returns true if the string has no elements, false otherwise
void onKeyLostFocus(Widget *_new) override
iterator end()
returns an iterator just past the end of the string
std::string mOriginalPointer
void setTextCursor(size_t _index)
static UString toTagsString(const UString &_text)
size_t getTextLength() const
virtual void setCaption(const UString &_value)
UString getTextSelection()
static UString convertTagColour(const Colour &_colour)
void notifyMouseSetFocus(Widget *_sender, Widget *_old)
void notifyMouseDrag(Widget *_sender, int _left, int _top, MouseButton _id)
bool inside(const TRect< T > &_value) const