00001 #ifndef _TEXTBOX_H_ 00002 #define _TEXTBOX_H_ 00003 00004 #include <nds.h> 00005 #include "textwriter.h" 00006 #include "label.h" 00007 #include "woopsistring.h" 00008 00009 namespace WoopsiUI { 00010 00015 class TextBox : public Label { 00016 public: 00017 00027 TextBox(s16 x, s16 y, u16 width, u16 height, const char* text, FontBase* font = NULL); 00028 00038 TextBox(s16 x, s16 y, u16 width, u16 height, const char letter, FontBase* font = NULL); 00039 00045 virtual void draw(Rect clipRect); 00046 00050 virtual void showCursor(); 00051 00055 virtual void hideCursor(); 00056 00061 virtual void setText(const char* text); 00062 00067 virtual void setText(const char text); 00068 00073 virtual void appendText(const char* text); 00074 00079 virtual void appendText(const char text); 00080 00086 virtual void insertText(const char* text, const u32 index); 00087 00093 virtual void insertText(const char text, const u32 index); 00094 00099 virtual void insertTextAtCursor(const char* text); 00100 00105 virtual void insertTextAtCursor(const char text); 00106 00113 virtual void moveCursorToPosition(const u32 position); 00114 00120 virtual inline const u32 getCursorPosition() const { return _cursorPos; }; 00121 00128 virtual void getClientRect(Rect& rect) const; 00129 00136 virtual bool click(s16 x, s16 y); 00137 00143 virtual bool keyPress(KeyCode keyCode); 00144 00145 protected: 00146 u32 _cursorPos; 00147 bool _showCursor; 00153 virtual const u16 getCursorXPos() const; 00154 00158 inline TextBox(const TextBox& textbox) : Label(textbox) { }; 00159 }; 00160 } 00161 00162 #endif