15 MenuItem(std::string name, uint32_t width, uint32_t height) : width(width), height(height), name(std::move(name)) {}
18 static void SetBackgroundColor(uint32_t background_color);
21 [[nodiscard]]
virtual bool IsEnterable()
const {
return !submenu.empty(); }
26 virtual void OnEnter();
29 virtual void Activate();
31 virtual void ActivateCurrentSuite();
33 virtual bool Deactivate();
35 virtual void CursorUp(
bool is_repeat);
36 virtual void CursorDown(
bool is_repeat);
37 virtual void CursorLeft(
bool is_repeat);
38 virtual void CursorRight(
bool is_repeat);
40 void CursorUpAndActivate();
41 void CursorDownAndActivate();
44 void PrepareDraw(uint32_t background_color)
const;
52 static uint32_t menu_background_color_;
54 uint32_t cursor_position{0};
55 std::vector<std::shared_ptr<MenuItem>> submenu{};
56 std::shared_ptr<MenuItem> active_submenu{};
101 explicit MenuItemRoot(
const std::vector<std::shared_ptr<TestSuite>>& suites, std::function<
void()> on_run_all,
102 std::function<
void()> on_exit, uint32_t width, uint32_t height,
bool disable_autorun,
103 bool autorun_immediately);
105 void Draw()
override;
106 void Activate()
override;
107 void ActivateCurrentSuite()
override;
108 bool Deactivate()
override;
109 void CursorUp(
bool is_repeat)
override;
110 void CursorDown(
bool is_repeat)
override;
111 void CursorLeft(
bool is_repeat)
override;
112 void CursorRight(
bool is_repeat)
override;
114 std::function<void()> on_run_all;
115 std::function<void()> on_exit;
116 std::chrono::steady_clock::time_point start_time;
117 bool timer_valid{
false};
118 bool timer_cancelled{
false};
121 bool disable_autorun_;
122 bool autorun_immediately_;
126 MenuItemOptions(
const std::vector<std::shared_ptr<TestSuite>>& suites, std::function<
void()> on_exit, uint32_t width,
129 void Draw()
override;
130 void Activate()
override;
131 void ActivateCurrentSuite()
override;
132 bool Deactivate()
override;
133 void CursorUp(
bool is_repeat)
override;
134 void CursorDown(
bool is_repeat)
override;
135 void CursorLeft(
bool is_repeat)
override;
136 void CursorRight(
bool is_repeat)
override;
138 std::function<void()> on_exit;
139 std::chrono::steady_clock::time_point start_time;
140 bool timer_valid{
false};
141 bool timer_cancelled{
false};