MyGUI  3.2.1
MyGUI_EditBox.h
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #ifndef __MYGUI_EDIT_BOX_H__
8 #define __MYGUI_EDIT_BOX_H__
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_TextBox.h"
13 #include "MyGUI_TextIterator.h"
14 #include "MyGUI_EventPair.h"
15 #include "MyGUI_ScrollViewBase.h"
16 
17 namespace MyGUI
18 {
19 
21 
26  public TextBox,
27  public ScrollViewBase,
28  public MemberObsolete<EditBox>
29  {
31 
32  public:
33  EditBox();
34 
36  void setTextIntervalColour(size_t _start, size_t _count, const Colour& _colour);
37 
39  size_t getTextSelectionStart() const;
40 
42  size_t getTextSelectionEnd() const;
43 
45  size_t getTextSelectionLength() const;
46 
47  // возвращает текст с тегами
49  UString getTextInterval(size_t _start, size_t _count);
50 
55  void setTextSelection(size_t _start, size_t _end);
56 
58  void deleteTextSelection();
59 
61  UString getTextSelection();
62 
64  bool isTextSelection() const;
65 
67  void setTextSelectionColour(const Colour& _value);
68 
70  void setTextCursor(size_t _index);
72  size_t getTextCursor() const;
73 
74 
76  virtual void setCaption(const UString& _value);
78  virtual const UString& getCaption();
79 
81  void setOnlyText(const UString& _value);
83  UString getOnlyText();
84 
89  size_t getTextLength() const;
90 
92  void setOverflowToTheLeft(bool _value);
94  bool getOverflowToTheLeft() const;
95 
97  void setMaxTextLength(size_t _value);
99  size_t getMaxTextLength() const;
100 
102  void insertText(const UString& _text, size_t _index = ITEM_NONE);
104  void addText(const UString& _text);
106  void eraseText(size_t _start, size_t _count = 1);
107 
112  void setEditReadOnly(bool _value);
114  bool getEditReadOnly() const;
115 
120  void setEditPassword(bool _value);
122  bool getEditPassword() const;
123 
129  void setEditMultiLine(bool _value);
131  bool getEditMultiLine() const;
132 
137  void setEditStatic(bool _value);
139  bool getEditStatic() const;
140 
142  void setPasswordChar(Char _value);
144  void setPasswordChar(const UString& _char);
146  Char getPasswordChar() const;
147 
153  void setEditWordWrap(bool _value);
155  bool getEditWordWrap() const;
156 
162  void setTabPrinting(bool _value);
164  bool getTabPrinting() const;
165 
167  bool getInvertSelected();
171  void setInvertSelected(bool _value);
172 
174  virtual void setPosition(const IntPoint& _value);
176  virtual void setSize(const IntSize& _value);
178  virtual void setCoord(const IntCoord& _value);
179 
181  void setPosition(int _left, int _top);
183  void setSize(int _width, int _height);
185  void setCoord(int _left, int _top, int _width, int _height);
186 
188  void setVisibleVScroll(bool _value);
190  bool isVisibleVScroll() const;
197  size_t getVScrollRange() const;
199  size_t getVScrollPosition();
201  void setVScrollPosition(size_t _index);
202 
204  void setVisibleHScroll(bool _value);
206  bool isVisibleHScroll() const;
212  size_t getHScrollRange() const;
214  size_t getHScrollPosition();
216  void setHScrollPosition(size_t _index);
217 
218 
220  virtual void setFontName(const std::string& _value);
222  virtual void setFontHeight(int _value);
223 
225  virtual void setTextAlign(Align _value);
227  virtual void setTextColour(const Colour& _value);
228 
230  virtual IntCoord getTextRegion();
231 
233  virtual IntSize getTextSize();
234 
236  virtual void setTextShadowColour(const Colour& _value);
237 
239  virtual void setTextShadow(bool _value);
240 
241  /*events:*/
247 
252  EventPair<EventHandle_WidgetVoid, EventHandle_EditPtr> eventEditTextChange;
253 
254  protected:
255  virtual void initialiseOverride();
256  virtual void shutdownOverride();
257 
258  virtual void onMouseDrag(int _left, int _top, MouseButton _id);
259  virtual void onKeyLostFocus(Widget* _new);
260  virtual void onKeySetFocus(Widget* _old);
261  virtual void onKeyButtonPressed(KeyCode _key, Char _char);
262 
263  // потом убрать все нотифи в сраку
264  void notifyMouseSetFocus(Widget* _sender, Widget* _old);
265  void notifyMouseLostFocus(Widget* _sender, Widget* _new);
266  void notifyMousePressed(Widget* _sender, int _left, int _top, MouseButton _id);
267  void notifyMouseReleased(Widget* _sender, int _left, int _top, MouseButton _id);
268  void notifyMouseDrag(Widget* _sender, int _left, int _top, MouseButton _id);
269  void notifyMouseButtonDoubleClick(Widget* _sender);
270 
271  void notifyScrollChangePosition(ScrollBar* _sender, size_t _position);
272  void notifyMouseWheel(Widget* _sender, int _rel);
273 
274  // обновление представления
275  void updateView();
276  void updateViewWithCursor();
277 
278  void eraseView();
279 
280  virtual void setPropertyOverride(const std::string& _key, const std::string& _value);
281 
282  private:
283  // устанавливает текст
284  void setText(const UString& _text, bool _history);
285  // удаляет все что выделенно
286  bool deleteTextSelect(bool _history);
287  // вставляет текст в указанную позицию
288  void insertText(const UString& _text, size_t _index, bool _history);
289  // удаляет текст
290  void eraseText(size_t _start, size_t _count, bool _history);
291  // выделяет цветом выделение
292  void setTextSelectColour(const Colour& _colour, bool _history);
293  // выделяет цветом диапазон
294  void _setTextColour(size_t _start, size_t _count, const Colour& _colour, bool _history);
295 
296  void frameEntered(float _frame);
297 
298  void updateEditState();
299 
300  // обновляет курсор по координате
301  void updateSelectText();
302 
303  void resetSelect();
304 
305  // запись в историю данных о позиции
306  void commandPosition(size_t _undo, size_t _redo, size_t _length, VectorChangeInfo* _info = nullptr);
307 
308  // команнды отмена и повтор
309  bool commandRedo();
310  bool commandUndo();
311  // объединяет последние две комманды
312  void commandMerge();
313  // очистка
314  void commandResetRedo();
315  void commandResetHistory();
316  void saveInHistory(VectorChangeInfo* _info = nullptr);
317 
318  // работа с буфером обмена
319  void commandCut();
320  void commandCopy();
321  void commandPast();
322 
323  const UString& getRealString();
324 
325  void setRealString(const UString& _caption);
326 
327  void updateCursorPosition();
328 
329  // размер данных
330  virtual IntSize getContentSize();
331  // смещение данных
332  virtual IntPoint getContentPosition();
333  virtual void setContentPosition(const IntPoint& _point);
334  // размер окна, через которые видно данные
335  virtual IntSize getViewSize();
336  // размер на который прокручиваются данные при щелчке по скролу
337  virtual size_t getVScrollPage();
338  virtual size_t getHScrollPage();
339 
340  virtual Align getContentAlign();
341 
342  protected:
343  // нажата ли кнопка
344  bool mIsPressed;
345  // в фокусе ли кнопка
346  bool mIsFocus;
347 
348  bool mCursorActive;
349  float mCursorTimer;
350  float mActionMouseTimer;
351 
352  // позиция курсора
353  size_t mCursorPosition;
354  // максимальное колличество
355  size_t mTextLength;
356 
357  // выделение
358  size_t mStartSelect;
359  size_t mEndSelect;
360 
361  // списоки изменений для отмены и повтора
362  DequeUndoRedoInfo mVectorUndoChangeInfo;
363  DequeUndoRedoInfo mVectorRedoChangeInfo;
364 
365  bool mMouseLeftPressed;
366 
367  bool mModeReadOnly;
368  bool mModePassword;
369  bool mModeMultiline;
370  bool mModeStatic;
371  bool mModeWordWrap;
372 
373  bool mTabPrinting;
374 
375  // настоящий текст, закрытый за звездочками
376  UString mPasswordText;
377 
378  // для поддержки режима статик, где курсор не нужен
379  std::string mOriginalPointer;
380 
381  Char mCharPassword;
382 
383  bool mOverflowToTheLeft;
384  size_t mMaxTextLength;
385 
386  ISubWidgetText* mClientText;
387  };
388 
389 } // namespace MyGUI
390 
391 #endif // __MYGUI_EDIT_BOX_H__