29 #ifndef _CEGUIMultiLineEditbox_h_
30 #define _CEGUIMultiLineEditbox_h_
33 #include "../Window.h"
39 # pragma warning(push)
40 # pragma warning(disable : 4251)
51 class CEGUIEXPORT MultiLineEditboxWindowRenderer :
public WindowRenderer
58 MultiLineEditboxWindowRenderer(
const String& name);
68 virtual Rectf getTextRenderArea(
void)
const = 0;
72 void onLookNFeelAssigned();
79 class CEGUIEXPORT MultiLineEditbox :
public Window
82 static const String EventNamespace;
83 static const String WidgetTypeName;
94 static const String EventReadOnlyModeChanged;
100 static const String EventWordWrapModeChanged;
107 static const String EventMaximumTextLengthChanged;
113 static const String EventCaretMoved;
119 static const String EventTextSelectionChanged;
133 static const String EventVertScrollbarModeChanged;
140 static const String EventHorzScrollbarModeChanged;
146 static const String HorzScrollbarName;
162 typedef std::vector<LineInfo
163 CEGUI_VECTOR_ALLOC(LineInfo)> LineList;
176 bool hasInputFocus(
void)
const;
187 bool isReadOnly(
void)
const {
return d_readOnly;}
197 size_t getCaretIndex(
void)
const {
return d_caretPos;}
208 size_t getSelectionStartIndex(
void)
const;
219 size_t getSelectionEndIndex(
void)
const;
229 size_t getSelectionLength(
void)
const;
239 size_t getMaxTextLength(
void)
const {
return d_maxTextLen;}
250 bool isWordWrapped(
void)
const;
264 Scrollbar* getVertScrollbar()
const;
274 bool isVertScrollbarAlwaysShown(
void)
const;
298 Rectf getTextRenderArea(
void)
const;
301 const LineList& getFormattedLines(
void)
const {
return d_lines;}
308 size_t getLineNumberFromIndex(
size_t index)
const;
323 virtual void initialiseComponents(
void);
337 void setReadOnly(
bool setting);
351 void setCaretIndex(
size_t caret_pos);
369 void setSelection(
size_t start_pos,
size_t end_pos);
383 void setSelectionStart(
size_t start_pos);
395 void setSelectionLength(
size_t length);
407 void setMaxTextLength(
size_t max_len);
414 void ensureCaretIsVisible(
void);
428 void setWordWrapping(
bool setting);
441 void setShowVertScrollbar(
bool setting);
444 void setSelectionBrushImage(
const Image* image);
445 const Image* getSelectionBrushImage()
const;
448 virtual bool performCopy(
Clipboard& clipboard);
451 virtual bool performCut(
Clipboard& clipboard);
454 virtual bool performPaste(
Clipboard& clipboard);
464 void formatText(
const bool update_scrollbars);
507 void formatText(
void);
519 size_t getNextTokenLength(
const String& text,
size_t start_idx)
const;
526 void configureScrollbars(
void);
539 size_t getTextIndexFromPosition(
const Vector2f& pt)
const;
546 void clearSelection(
void);
556 void eraseSelectedText(
bool modify_text =
true);
563 void handleBackspace(
void);
570 void handleDelete(
void);
577 void handleCharLeft(uint sysKeys);
584 void handleWordLeft(uint sysKeys);
591 void handleCharRight(uint sysKeys);
598 void handleWordRight(uint sysKeys);
605 void handleDocHome(uint sysKeys);
612 void handleDocEnd(uint sysKeys);
619 void handleLineHome(uint sysKeys);
626 void handleLineEnd(uint sysKeys);
633 void handleLineUp(uint sysKeys);
640 void handleLineDown(uint sysKeys);
647 void handleNewLine(uint sysKeys);
654 void handlePageUp(uint sysKeys);
661 void handlePageDown(uint sysKeys);
667 bool handle_scrollChange(
const EventArgs& args);
670 bool handle_vertScrollbarVisibilityChanged(
const EventArgs&);
673 virtual bool validateWindowRenderer(
const WindowRenderer* renderer)
const;
757 size_t d_selectionStart;
758 size_t d_selectionEnd;
760 size_t d_dragAnchorIdx;
762 static String d_lineBreakChars;
765 float d_widestExtent;
768 bool d_forceVertScroll;
769 bool d_forceHorzScroll;
772 const Image* d_selectionBrush;
779 void addMultiLineEditboxProperties(
void);
784 #if defined(_MSC_VER)
785 # pragma warning(pop)
788 #endif // end of guard _CEGUIMultiLineEditbox_h_