diff --git a/example.cpp b/example.cpp new file mode 100644 index 0000000..a737665 --- /dev/null +++ b/example.cpp @@ -0,0 +1,134 @@ +#include "ConsoleUI/ColorUI.h" +using namespace std; + +class ReturnButton : public ColorSelection +{ +public: + ReturnButton() + { + text="Return"; + info="Return to previous page."; + } + virtual int onClick() override + { + return 1; + } +}; + +class ExitButton : public ColorSelection +{ +public: + ExitButton() + { + text="Exit"; + info="Exit This Program"; + } + virtual int onClick() override + { + return 2; + } +}; + +class EmptyButton : public ColorSelection +{ +public: + EmptyButton() + { + text="EmptyButton"; + info="This is an empty button. (without action)"; + } +}; + +class NewPage : public ColorPage +{ +public: + NewPage() + { + title="This is a new page"; + text="As you can see this page is different from the previous page. Now that page has gone to background and has been stored in a stack. "; + add(new ReturnButton); + } +}; + +class LinkToPageButton : public ColorSelection +{ +public: + LinkToPageButton() + { + text="Link To New Page"; + info="Select this, and a new page will be opened."; + } + virtual int onClick() override + { + getFrame()->jumpTo(new NewPage); + return 0; + } +}; + +class PlainPage : public ColorPage +{ +public: + PlainPage() + { + title="New Page"; + text="You may never see this page"; + } + virtual void draw() override + { + printf("This is a plain page. As you can see there's no title or selection here. \n" + "You can override ColorPage::draw() in your derived page class. \n" + "Then you can do something instead of printing in this method. \n" + "For Example, now you can read a integer from keyboard (use scanf). \n" + "However, You MUST call enterInputMode() before that and exitInputMode() after that. \n" + " (A ColorInputModeGuard works too) \n" + "\n" + "Now Input A Integer. (If you input a invalid value, you have to try again.)\n"); + ColorInputModeGuard guard(getFrame()); + int input; + while(scanf("%d%*c",&input)!=1) + { + printf("Invalid Input.\n"); + } + printf("Well Done! You inputed: %d\n",input); + printf("You may have understand it. Now Press ENTER To Continue.\n"); + char buff[1024]; + gets(buff); + } +}; + +class LinkToPlainPageButton : public ColorSelection +{ +public: + LinkToPlainPageButton() + { + text="Link to Plain Page"; + info="This button will guide you to a plain page"; + } + virtual int onClick() override + { + getFrame()->jumpTo(new PlainPage); + return 0; + } +}; + +class MainPage : public ColorPage +{ +public: + MainPage() + { + title="Hello, World!"; + text="This page is an example page used ColorUI Framework. As you can see there are four selections below. Try select them."; + add(new EmptyButton); + add(new LinkToPageButton); + add(new LinkToPlainPageButton); + add(new ExitButton); + } +}; + +int main() +{ + ColorFrame f; + f.setHomePage(new MainPage); + f.run(); + return 0; +}