Woopsi 1.0
GUI Framework for Nintendo DS Homebrew

scrollingtextbox.h

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