Add Example Code

This commit is contained in:
Kirigaya Kazuto 2017-05-14 17:19:30 +08:00
parent 9608effaa0
commit dcaafa1e7d

134
example.cpp Normal file
View File

@ -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;
}