-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Class based component pattern to build the app.
Proposed Design Architectural Style
class RootComponent : public IApplicationController {
public:
// construct window application from here . . .
RootComponent() :
IApplicationController("My First App", Dimension(500, 500), eng::Color.AQUA_BLACK),
v_menu_(nullptr), frame_(nullptr) {
v_menu_ = new VerticalMenu();
frame_ = new Frame();
}
// setup gui object values . . .
void setup() override {
// for menu
items_ = {
{" New ", HIGHLIGHT},
{" File ", DEFAULT},
{" Edit ", DEFAULT},
{" View ", DEFAULT},
};
v_menu_->addItems(items_);
v_menu_->setTheme({DEFAULT, HIGHLIGHT});
v_menu_->setPosition({0, 0});
// for window frame
frame_->setDimension({10, 25});
frame_->setPosition({1, 3});
frame_->enableShadow(true);
frame_->setBorderType(AbstractWindow::Border::PIPE);
}
// update callback method . . .
void controller() override {
while (!v_menu_->isItemSelected()) {
v_menu_->render();
}
v_menu_->restart();
switch (v_menu_->getItemPosition()) {
case 1:
frame_->render();
break;
}
}
~RootComponent() {
delete v_menu_;
delete frame_;
}
private:
std::vector<MenuItem> items_;
Window* frame_;
MenuBar* v_menu_;
};
int main() {
RootComponent root;
root.init(std::bind(&RootComponent::controller, &root));
return 0;
}
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request