59 mMouseLeftPressed(false),
62 mModeMultiline(false),
67 mOverflowToTheLeft(false),
75 Base::_initialise(_style, _coord, _align, _info, _parent, _croppedParent, _creator, _name);
77 initialiseWidgetSkin(_info);
89 initialiseWidgetSkin(_info);
101 if (*(*iter)->_getInternalData<std::string>() ==
"Client")
114 else if (*(*iter)->_getInternalData<std::string>() ==
"VScroll")
120 else if (*(*iter)->_getInternalData<std::string>() ==
"HScroll")
133 if (text)
mText = text;
140 if (!properties.empty())
142 MapString::const_iterator iter = properties.end();
143 if ((iter = properties.find(
"WordWrap")) != properties.end())
setEditWordWrap(utility::parseValue<bool>(iter->second));
144 else if ((iter = properties.find(
"InvertSelected")) != properties.end())
setInvertSelected(utility::parseValue<bool>(iter->second));
150 if (
mText !=
nullptr)
155 void Edit::shutdownWidgetSkin()
178 if (
mText ==
nullptr)
203 if (
mText ==
nullptr)
235 if (
mText ==
nullptr)
252 while (iterBack != text.
rend())
254 if (((*iterBack)<265) && (ispunct(*iterBack) || isspace(*iterBack)))
break;
258 while (iterForw != text.
end())
260 if (((*iterForw)<265) && (ispunct(*iterForw) || isspace(*iterForw)))
break;
285 if (
mText !=
nullptr)
306 if (
mText !=
nullptr)
693 void Edit::frameEntered(
float _frame)
695 if (
mText ==
nullptr)
723 mouse.
left -= view.left;
724 mouse.top -= view.top;
804 if (
mText !=
nullptr)
817 if (
mText !=
nullptr)
828 if (
mText !=
nullptr)
845 void Edit::resetSelect()
850 if (
mText !=
nullptr)
855 void Edit::commandPosition(
size_t _undo,
size_t _redo,
size_t _length,
VectorChangeInfo * _info)
857 if (_info !=
nullptr) _info->push_back(TextCommandInfo(_undo, _redo, _length));
860 void Edit::commandMerge()
868 for (VectorChangeInfo::iterator iter=info.begin(); iter!=info.end(); ++iter)
874 bool Edit::commandUndo()
888 UString text = getRealString();
891 for (VectorChangeInfo::reverse_iterator iter=info.rbegin(); iter!=info.rend(); iter++)
907 if (
mText !=
nullptr)
917 bool Edit::commandRedo()
931 UString text = getRealString();
934 for (VectorChangeInfo::iterator iter=info.begin(); iter!=info.end(); ++iter)
951 if (
mText !=
nullptr)
963 if (_info ==
nullptr)
return;
965 if ( _info->empty() )
return;
980 size_t end = _start + _count;
989 bool need_colour =
true;
1007 else if (pos == _start)
1016 else if (pos == end)
break;
1021 if (need_colour)
return colour + iterator.
getFromStart();
1026 void Edit::_setTextColour(
size_t _start,
size_t _count,
const Colour& _colour,
bool _history)
1036 size_t end = _start + _count;
1045 while (iterator.moveNext())
1049 size_t pos = iterator.getPosition();
1052 iterator.getTagColour(colour);
1055 if (pos < _start)
continue;
1058 else if (pos == _start)
1059 iterator.setTagColour(_colour);
1063 iterator.clearTagColour();
1066 else if (pos == end)
1068 iterator.setTagColour(colour);
1076 commandPosition(_start, _start+_count,
mTextLength, history);
1081 saveInHistory(history);
1085 else commandResetHistory();
1088 setRealString(iterator.getText());
1099 _setTextColour(start, end-start, _colour, _history);
1116 if (
mText !=
nullptr)
1124 if (
mText !=
nullptr)
1133 commandResetHistory();
1136 void Edit::setText(
const UString& _caption,
bool _history)
1172 saveInHistory(history);
1176 else commandResetHistory();
1179 setRealString(iterator.getText());
1182 if (
mText !=
nullptr)
1193 if (_text.empty())
return;
1202 TextIterator iterator(getRealString(), history);
1208 bool need_colour = ( (_text.size() > 6) && (_text[0] == L
'#') && (_text[1] != L
'#') );
1211 while (iterator.moveNext())
1215 size_t pos = iterator.getPosition();
1218 if (need_colour) iterator.getTagColour(colour);
1221 if (pos == _start)
break;
1226 if (need_colour) iterator.setTagColour(colour);
1248 commandPosition(_start, _start +
mTextLength - old, old, history);
1253 saveInHistory(history);
1257 else commandResetHistory();
1260 setRealString(iterator.getText());
1263 if (
mText !=
nullptr)
1271 if (_count == 0)
return;
1281 TextIterator iterator(getRealString(), history);
1286 size_t end = _start + _count;
1287 bool need_colour =
false;
1290 while (iterator.moveNext())
1294 size_t pos = iterator.getPosition();
1300 iterator.getTagColour(colour);
1305 else if (pos == _start)
1308 if ( ! colour.empty())
1314 iterator.getTagColour(colour);
1315 iterator.saveStartPoint();
1322 iterator.getTagColour(colour);
1326 else if (pos == end)
1329 if ( ! colour.empty()) need_colour =
true;
1330 if ( iterator.getTagColour(colour)) need_colour =
false;
1338 iterator.eraseFromStart();
1340 if (need_colour) iterator.setTagColour(colour);
1343 commandPosition(_start + _count, _start,
mTextLength, history);
1352 saveInHistory(history);
1356 else commandResetHistory();
1359 setRealString(iterator.getText());
1362 if (
mText !=
nullptr)
1367 void Edit::commandCut()
1383 void Edit::commandCopy()
1390 void Edit::commandPast()
1408 const UString& Edit::getRealString()
1416 void Edit::setRealString(
const UString& _caption)
1421 if (
mText !=
nullptr)
1426 if (
mText !=
nullptr)
1436 if (
mText !=
nullptr)
1441 void Edit::updateEditState()
1463 if (
mText !=
nullptr)
1486 setText(_value,
false);
1491 return getRealString();
1494 void Edit::updateSelectText()
1504 if (
mText !=
nullptr)
1515 if (
mText !=
nullptr)
1534 if (
mText ==
nullptr)
1540 point.
top = _position;
1546 point.
left = _position;
1553 if (
mText ==
nullptr)
1559 int offset = point.
top;
1563 if (offset < 0) offset = 0;
1566 if (offset != point.
top)
1577 int offset = point.
left;
1581 if (offset < 0) offset = 0;
1584 if (offset != point.
left)
1586 point.
left = offset;
1597 if (
mText !=
nullptr)
1626 updateCursorPosition();
1630 void Edit::updateCursorPosition()
1651 if (!view.
inside(cursor))
1675 if (cursor.
top < view.
top)
1687 if (offset != point)
1698 void Edit::setContentPosition(
const IntPoint& _point)
1700 if (
mText !=
nullptr)
1704 IntSize Edit::getViewSize()
const
1709 IntSize Edit::getContentSize()
1714 size_t Edit::getVScrollPage()
1719 size_t Edit::getHScrollPage()
1724 IntPoint Edit::getContentPosition()
1729 Align Edit::getContentAlign()
1736 _setTextColour(_start, _count, _colour,
false);
1798 commandResetHistory();
1807 setText(getRealString(),
false);
1812 commandResetHistory();
1846 if (_key ==
"Edit_CursorPosition")
setTextCursor(utility::parseValue<size_t>(_value));
1848 else if (_key ==
"Edit_ReadOnly")
setEditReadOnly(utility::parseValue<bool>(_value));
1849 else if (_key ==
"Edit_Password")
setEditPassword(utility::parseValue<bool>(_value));
1850 else if (_key ==
"Edit_MultiLine")
setEditMultiLine(utility::parseValue<bool>(_value));
1852 else if (_key ==
"Edit_MaxTextLength")
setMaxTextLength(utility::parseValue<size_t>(_value));
1853 else if (_key ==
"Edit_OverflowToTheLeft")
setOverflowToTheLeft(utility::parseValue<bool>(_value));
1854 else if (_key ==
"Edit_Static")
setEditStatic(utility::parseValue<bool>(_value));
1855 else if (_key ==
"Edit_VisibleVScroll")
setVisibleVScroll(utility::parseValue<bool>(_value));
1856 else if (_key ==
"Edit_VisibleHScroll")
setVisibleHScroll(utility::parseValue<bool>(_value));
1857 else if (_key ==
"Edit_WordWrap")
setEditWordWrap(utility::parseValue<bool>(_value));
1858 else if (_key ==
"Edit_TabPrinting")
setTabPrinting(utility::parseValue<bool>(_value));
1859 else if (_key ==
"Edit_InvertSelected")
setInvertSelected(utility::parseValue<bool>(_value));
1861 #ifndef MYGUI_DONT_USE_OBSOLETE
1862 else if (_key ==
"Edit_ShowVScroll")
1864 MYGUI_LOG(Warning,
"Edit_ShowVScroll is obsolete, use Edit_VisibleVScroll");
1867 else if (_key ==
"Edit_ShowHScroll")
1869 MYGUI_LOG(Warning,
"Edit_ShowHScroll is obsolete, use Edit_VisibleHScroll");
1872 #endif // MYGUI_DONT_USE_OBSOLETE
1894 if (
mText ==
nullptr)
1921 if (
mText ==
nullptr)
1928 point.
left = _index;
1943 if (
mText !=
nullptr)