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{};
97 explicit MenuItemRoot(
const std::vector<std::shared_ptr<TestSuite>>& suites, std::function<
void()> on_run_all,
98 std::function<
void()> on_exit, uint32_t width, uint32_t height,
bool disable_autorun,
99 bool autorun_immediately);
101 void Draw()
override;
102 void Activate()
override;
103 void ActivateCurrentSuite()
override;
104 bool Deactivate()
override;
105 void CursorUp(
bool is_repeat)
override;
106 void CursorDown(
bool is_repeat)
override;
107 void CursorLeft(
bool is_repeat)
override;
108 void CursorRight(
bool is_repeat)
override;
110 std::function<void()> on_run_all;
111 std::function<void()> on_exit;
112 std::chrono::steady_clock::time_point start_time;
113 bool timer_valid{
false};
114 bool timer_cancelled{
false};
117 bool disable_autorun_;
118 bool autorun_immediately_;
122 MenuItemOptions(
const std::vector<std::shared_ptr<TestSuite>>& suites, std::function<
void()> on_exit, uint32_t width,
125 void Draw()
override;
126 void Activate()
override;
127 void ActivateCurrentSuite()
override;
128 bool Deactivate()
override;
129 void CursorUp(
bool is_repeat)
override;
130 void CursorDown(
bool is_repeat)
override;
131 void CursorLeft(
bool is_repeat)
override;
132 void CursorRight(
bool is_repeat)
override;
134 std::function<void()> on_exit;
135 std::chrono::steady_clock::time_point start_time;
136 bool timer_valid{
false};
137 bool timer_cancelled{
false};