#include "numericmenu.h"
void tri() {
size_t size;
std::cerr << "How big do you want your triangle?\nEnter the number of rows: ";
std::cin >> size;
for(size_t i = 0; i < size; ++i) {
for (size_t j = 0; j < i+1; ++j) {
std::cerr << '*';
}
std::cerr << '\n';
}
}
class Square {
public:
void operator()() {
size_t size;
std::cerr << "How big do you want your square?\nEnter the number of rows: ";
std::cin >> size;
for(size_t i = 0; i < size; ++i) {
for (size_t j = 0; j < size; ++j) {
std::cerr << '*';
}
std::cerr << '\n';
}
}
};
int main() {
nmenu::MenuList menu("Go to the main menu.");
nmenu::MenuList meno("Go to an empty menu.", &menu);
nmenu::MenuList menopause("Go to the Asterisk Geometry menu.");
nmenu::MenuExit paws("","You just exited the program. Have a nice day!\n");
Square squ;
auto ev = [&menu](){menu.disconnect(1);};
nmenu::MenuItem<decltype(&ev)> discon("Remove this option from the menu.",&ev,&menu);
nmenu::MenuExit ter("Please don't choose this. I don't want to be terminated.","You're so mean. *dies*\n");
menu.connect(&menopause);
menu.connect(&discon);
menu.connect(&meno);
menu.connect(&paws);
menu.connect(&ter);
nmenu::MenuItem<void(*)()> twi("Make the program print a triangle of asterisks.",tri,&menopause);
nmenu::MenuItem<Square> rec("Make the program print a square of asterisks.",squ,&menopause);
menopause.connect(&menu);
menopause.connect(&twi);
menopause.connect(&rec);
menu.exec();
return 0;
}