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