59 mMouseLeftPressed(false),
62 mModeMultiline(false),
67 mOverflowToTheLeft(false),
238 while (iterBack != text.
rend())
240 if (((*iterBack) < 265) && (ispunct(*iterBack) || isspace(*iterBack)))
245 while (iterForw != text.
end())
247 if (((*iterForw) < 265) && (ispunct(*iterForw) || isspace(*iterForw)))
715 void EditBox::frameEntered(
float _frame)
745 mouse.
left -= view.left;
746 mouse.top -= view.top;
882 void EditBox::resetSelect()
892 void EditBox::commandPosition(
size_t _undo,
size_t _redo,
size_t _length,
VectorChangeInfo* _info)
894 if (_info !=
nullptr)
895 _info->push_back(TextCommandInfo(_undo, _redo, _length));
898 void EditBox::commandMerge()
907 for (VectorChangeInfo::iterator iter = info.begin(); iter != info.end(); ++iter)
913 bool EditBox::commandUndo()
928 UString text = getRealString();
931 for (VectorChangeInfo::reverse_iterator iter = info.rbegin(); iter != info.rend(); ++iter)
934 text.erase((*iter).start, (*iter).text.size());
936 text.insert((*iter).start, (*iter).text);
958 bool EditBox::commandRedo()
973 UString text = getRealString();
976 for (VectorChangeInfo::iterator iter = info.begin(); iter != info.end(); ++iter)
979 text.insert((*iter).start, (*iter).text);
981 text.erase((*iter).start, (*iter).text.size());
1006 if (_info ==
nullptr)
1009 if ( _info->empty())
1026 size_t end = _start + _count;
1035 bool need_colour =
true;
1053 else if (pos == _start)
1062 else if (pos == end)
1074 void EditBox::_setTextColour(
size_t _start,
size_t _count,
const Colour& _colour,
bool _history)
1082 size_t end = _start + _count;
1091 while (iterator.moveNext())
1094 size_t pos = iterator.getPosition();
1097 iterator.getTagColour(colour);
1104 else if (pos == _start)
1105 iterator.setTagColour(_colour);
1109 iterator.clearTagColour();
1112 else if (pos == end)
1114 iterator.setTagColour(colour);
1122 commandPosition(_start, _start + _count,
mTextLength, history);
1127 saveInHistory(history);
1132 commandResetHistory();
1135 setRealString(iterator.getText());
1138 void EditBox::setTextSelectColour(
const Colour& _colour,
bool _history)
1146 _setTextColour(start, end - start, _colour, _history);
1183 commandResetHistory();
1186 void EditBox::setText(
const UString& _caption,
bool _history)
1223 saveInHistory(history);
1228 commandResetHistory();
1231 setRealString(iterator.getText());
1257 TextIterator iterator(getRealString(), history);
1263 bool need_colour = ( (_text.size() > 6) && (_text[0] == L
'#') && (_text[1] != L
'#') );
1266 while (iterator.moveNext())
1269 size_t pos = iterator.getPosition();
1273 iterator.getTagColour(colour);
1282 iterator.setTagColour(colour);
1304 commandPosition(_start, _start +
mTextLength - old, old, history);
1309 saveInHistory(history);
1314 commandResetHistory();
1317 setRealString(iterator.getText());
1340 TextIterator iterator(getRealString(), history);
1345 size_t end = _start + _count;
1346 bool need_colour =
false;
1349 while (iterator.moveNext())
1352 size_t pos = iterator.getPosition();
1358 iterator.getTagColour(colour);
1363 else if (pos == _start)
1366 if (!colour.empty())
1372 iterator.getTagColour(colour);
1373 iterator.saveStartPoint();
1380 iterator.getTagColour(colour);
1384 else if (pos == end)
1387 if (!colour.empty())
1389 if (iterator.getTagColour(colour))
1390 need_colour =
false;
1398 iterator.eraseFromStart();
1401 iterator.setTagColour(colour);
1404 commandPosition(_start + _count, _start,
mTextLength, history);
1413 saveInHistory(history);
1418 commandResetHistory();
1421 setRealString(iterator.getText());
1429 void EditBox::commandCut()
1446 void EditBox::commandCopy()
1455 void EditBox::commandPast()
1474 const UString& EditBox::getRealString()
1484 void EditBox::setRealString(
const UString& _caption)
1509 void EditBox::updateEditState()
1559 setText(_value,
false);
1564 return getRealString();
1567 void EditBox::updateSelectText()
1639 point.
top = _position;
1645 point.
left = _position;
1658 int offset = point.
top;
1666 else if (offset > (
int)
mVRange)
1669 if (offset != point.
top)
1680 int offset = point.
left;
1688 else if (offset > (
int)
mHRange)
1691 if (offset != point.
left)
1693 point.
left = offset;
1739 updateCursorPosition();
1743 void EditBox::updateCursorPosition()
1764 if (!view.
inside(cursor))
1794 else if (cursor.
top < view.
top)
1796 delta = - (view.
top - cursor.
top);
1802 offset.
top = point.
top + delta;
1807 if (offset != point)
1818 void EditBox::setContentPosition(
const IntPoint& _point)
1824 IntSize EditBox::getViewSize()
1831 IntSize EditBox::getContentSize()
1838 size_t EditBox::getVScrollPage()
1845 size_t EditBox::getHScrollPage()
1852 IntPoint EditBox::getContentPosition()
1859 Align EditBox::getContentAlign()
1868 _setTextColour(_start, _count, _colour,
false);
1893 setTextSelectColour(_colour,
false);
1930 commandResetHistory();
1939 setText(getRealString(),
false);
1947 commandResetHistory();
1966 if (!_value.
empty())
2028 point.
left = _index;
2049 if (_key ==
"CursorPosition")
2051 else if (_key ==
"TextSelect")
2053 else if (_key ==
"ReadOnly")
2055 else if (_key ==
"Password")
2057 else if (_key ==
"MultiLine")
2059 else if (_key ==
"PasswordChar")
2061 else if (_key ==
"MaxTextLength")
2063 else if (_key ==
"OverflowToTheLeft")
2065 else if (_key ==
"Static")
2067 else if (_key ==
"VisibleVScroll")
2069 else if (_key ==
"VisibleHScroll")
2071 else if (_key ==
"WordWrap")
2073 else if (_key ==
"TabPrinting")
2075 else if (_key ==
"InvertSelected")
2180 void EditBox::commandResetRedo()
2185 void EditBox::commandResetHistory()