Woopsi 1.0
GUI Framework for Nintendo DS Homebrew
|
00001 #ifndef _SCROLLING_TEXTBOX_H_ 00002 #define _SCROLLING_TEXTBOX_H_ 00003 00004 #include <nds.h> 00005 #include "multilinetextbox.h" 00006 #include "gadgeteventhandler.h" 00007 #include "gadgetstyle.h" 00008 #include "woopsistring.h" 00009 #include "scrollablebase.h" 00010 00011 namespace WoopsiUI { 00012 00013 class ScrollbarVertical; 00014 00020 class ScrollingTextBox : public TextBoxBase, public Gadget, public ScrollableBase, public GadgetEventHandler { 00021 public: 00022 00041 ScrollingTextBox(s16 x, s16 y, u16 width, u16 height, const WoopsiString& text, u32 flags, s16 maxRows = 0, GadgetStyle* style = NULL); 00042 00047 virtual void setTextAlignmentHoriz(MultiLineTextBox::TextAlignmentHoriz alignment); 00048 00053 virtual void setTextAlignmentVert(MultiLineTextBox::TextAlignmentVert alignment); 00054 00061 virtual const u16 getPageCount() const; 00062 00068 virtual const u16 getCurrentPage() const; 00069 00077 virtual const Document* getDocument() const; 00078 00083 virtual void setText(const WoopsiString& text); 00084 00090 virtual void appendText(const WoopsiString& text); 00091 00096 virtual void removeText(const u32 startIndex); 00097 00104 virtual void removeText(const u32 startIndex, const u32 count); 00105 00110 virtual void setFont(FontBase* font); 00111 00116 virtual const u32 getTextLength() const; 00117 00121 virtual void showCursor(); 00122 00126 virtual void hideCursor(); 00127 00134 virtual void moveCursorToPosition(const s32 position); 00135 00141 virtual const s32 getCursorPosition() const; 00142 00148 virtual void insertText(const WoopsiString& text, const u32 index); 00149 00154 virtual void insertTextAtCursor(const WoopsiString& text); 00155 00160 virtual void handleValueChangeEvent(const GadgetEventArgs& e); 00161 00166 virtual void handleScrollEvent(const GadgetEventArgs& e); 00167 00172 bool opensKeyboard() const { return _textbox->opensKeyboard(); }; 00173 00177 void disableKeyboardPopup() { _textbox->disableKeyboardPopup(); }; 00178 00182 void enableKeyboardPopup() { _textbox->enableKeyboardPopup(); }; 00183 00188 virtual const s32 getCanvasX() const; 00189 00194 virtual const s32 getCanvasY() const; 00195 00200 virtual const s32 getCanvasWidth() const; 00201 00206 virtual const s32 getCanvasHeight() const; 00207 00213 virtual void scroll(s32 dx, s32 dy); 00214 00220 virtual void jump(s32 x, s32 y); 00221 00226 virtual void setAllowsVerticalScroll(bool allow); 00227 00232 virtual void setAllowsHorizontalScroll(bool allow); 00233 00238 virtual void setCanvasWidth(const s32 width); 00239 00244 virtual void setCanvasHeight(const s32 height); 00245 00250 virtual bool allowsVerticalScroll() const; 00251 00256 virtual bool allowsHorizontalScroll() const; 00257 00258 protected: 00259 MultiLineTextBox* _textbox; 00260 ScrollbarVertical* _scrollbar; 00261 u8 _scrollbarWidth; 00266 void updateScrollbar(); 00267 00274 virtual void drawContents(GraphicsPort* port); 00275 00281 virtual void onResize(u16 width, u16 height); 00282 00286 virtual inline ~ScrollingTextBox() { }; 00287 00291 inline ScrollingTextBox(const ScrollingTextBox& scrollingTextBox) : Gadget(scrollingTextBox) { }; 00292 }; 00293 } 00294 00295 #endif