Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
MimicControlMenu.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_MIMICS_MIMICCONTROLMENU_HPP_
2#define IV_SRC_MIMICS_MIMICCONTROLMENU_HPP_
3
4#include "core/defines.hpp"
6
7#include <memory>
8#include <optional>
9#include <string>
10
11namespace iv::mimics
12{
13
15{
16public:
17 virtual ~IMenuOptionPanelBuilder() = default;
18
20};
21
23{
24public:
25 virtual ~IMenuOptionRunCommand() = default;
26
27 virtual bool runCommand(std::string *msgError) = 0;
28};
29
31{
32 Command,
33 Panel
34};
35
37{
38 MenuOption(eMenuOptionType type, std::string_view text, iv::types::color color, bool panelHasAccept,
39 const std::shared_ptr<IMenuOptionPanelBuilder> &panelBuilder);
40
41 MenuOption(eMenuOptionType type, std::string_view text, iv::types::color color,
42 const std::optional<std::string_view> &msgConfirmation,
43 const std::shared_ptr<IMenuOptionRunCommand> &runCommand,
44 std::optional<std::function<bool(CDialog *)>> commandEvaluation = std::nullopt);
45
47 std::string _text;
49
51 std::optional<std::shared_ptr<IMenuOptionPanelBuilder>> _panelBuilder;
52
53 std::optional<std::string> _msgConfirmation;
54 std::optional<std::shared_ptr<IMenuOptionRunCommand>> _runCommand;
55
56 std::optional<std::function<bool(CDialog *)>> _commandEvaluation;
57};
58
60{
61public:
62 explicit MimicControlMenu(std::string_view title);
63
64 void addCommand(std::string_view text, iv::types::color color,
65 const std::shared_ptr<IMenuOptionRunCommand> &runCommand,
66 const std::optional<std::string_view> &msgConfirmation = std::nullopt,
67 const std::optional<std::function<bool(CDialog *)>>& commandEvaluation = std::nullopt);
68 void addPanel(std::string_view text, iv::types::color color, bool hasAccept,
69 const std::shared_ptr<IMenuOptionPanelBuilder> &panelBuilder);
70
71 void addMsgColor(iv::types::color colorRgb, std::string_view text);
72
73 [[nodiscard]] std::shared_ptr<CMenuContext> buildMenuContext() const;
74
75 [[nodiscard]] bool hasOptions() const;
76
77private:
78 std::string m_title;
79
80 std::vector<std::shared_ptr<MenuOption>> m_menuOptions;
81 std::vector<CTxtColor> m_msgState;
82};
83
84}// namespace iv::mimics
85
86#endif//IV_SRC_MIMICS_MIMICCONTROLMENU_HPP_
Definition AbstractComponentGUI.hpp:30
Definition CDialog.hpp:21
Definition MimicControlMenu.hpp:15
virtual ~IMenuOptionPanelBuilder()=default
virtual AbstractComponentGUI * buildPanel()=0
Definition MimicControlMenu.hpp:23
virtual ~IMenuOptionRunCommand()=default
virtual bool runCommand(std::string *msgError)=0
Definition MimicControlMenu.hpp:60
std::shared_ptr< CMenuContext > buildMenuContext() const
Definition MimicControlMenu.cpp:128
void addPanel(std::string_view text, iv::types::color color, bool hasAccept, const std::shared_ptr< IMenuOptionPanelBuilder > &panelBuilder)
Definition MimicControlMenu.cpp:116
void addCommand(std::string_view text, iv::types::color color, const std::shared_ptr< IMenuOptionRunCommand > &runCommand, const std::optional< std::string_view > &msgConfirmation=std::nullopt, const std::optional< std::function< bool(CDialog *)> > &commandEvaluation=std::nullopt)
Definition MimicControlMenu.cpp:106
std::vector< CTxtColor > m_msgState
Definition MimicControlMenu.hpp:81
MimicControlMenu(std::string_view title)
Definition MimicControlMenu.cpp:102
std::string m_title
Definition MimicControlMenu.hpp:78
bool hasOptions() const
Definition MimicControlMenu.cpp:149
std::vector< std::shared_ptr< MenuOption > > m_menuOptions
Definition MimicControlMenu.hpp:80
void addMsgColor(iv::types::color colorRgb, std::string_view text)
Definition MimicControlMenu.cpp:123
Definition GeneratorPmsBuilders.cpp:9
eMenuOptionType
Definition MimicControlMenu.hpp:31
uint32_t color
Definition types.hpp:12
Definition MimicControlMenu.hpp:37
std::optional< std::string > _msgConfirmation
Definition MimicControlMenu.hpp:53
iv::types::color _color
Definition MimicControlMenu.hpp:48
std::string _text
Definition MimicControlMenu.hpp:47
bool _panelHasAccept
Definition MimicControlMenu.hpp:50
std::optional< std::function< bool(CDialog *)> > _commandEvaluation
Definition MimicControlMenu.hpp:56
MenuOption(eMenuOptionType type, std::string_view text, iv::types::color color, bool panelHasAccept, const std::shared_ptr< IMenuOptionPanelBuilder > &panelBuilder)
Definition MimicControlMenu.cpp:91
std::optional< std::shared_ptr< IMenuOptionPanelBuilder > > _panelBuilder
Definition MimicControlMenu.hpp:51
std::optional< std::shared_ptr< IMenuOptionRunCommand > > _runCommand
Definition MimicControlMenu.hpp:54
eMenuOptionType _type
Definition MimicControlMenu.hpp:46