yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
panel_host.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SYSTEM_PANEL_HOST_H_
2#define YAZE_APP_EDITOR_SYSTEM_PANEL_HOST_H_
3
4#include <functional>
5#include <string>
6#include <vector>
7
9
10namespace yaze {
11namespace editor {
12
13class PanelManager;
14struct PanelDescriptor;
15
23 std::string id;
24 std::string display_name;
25 std::string icon;
26 std::string category;
27 std::string window_title;
28 std::string shortcut_hint;
29 int priority = 50;
30 bool visible_by_default = false;
31 bool* visibility_flag = nullptr;
35 std::vector<std::string> legacy_ids;
36 std::function<void()> on_show;
37 std::function<void()> on_hide;
38};
39
43class PanelHost {
44 public:
47
52
53 bool RegisterPanel(size_t session_id, const PanelDefinition& definition);
54 bool RegisterPanel(const PanelDefinition& definition);
55 bool RegisterPanels(size_t session_id,
56 const std::vector<PanelDefinition>& definitions);
57 bool RegisterPanels(const std::vector<PanelDefinition>& definitions);
58
59 void RegisterPanelAlias(const std::string& legacy_id,
60 const std::string& canonical_id);
61
62 bool ShowPanel(size_t session_id, const std::string& panel_id);
63 bool HidePanel(size_t session_id, const std::string& panel_id);
64 bool TogglePanel(size_t session_id, const std::string& panel_id);
65 bool IsPanelVisible(size_t session_id, const std::string& panel_id) const;
66
67 bool OpenAndFocus(size_t session_id, const std::string& panel_id) const;
68
69 std::string ResolvePanelId(const std::string& panel_id) const;
70 std::string GetPanelWindowName(size_t session_id,
71 const std::string& panel_id) const;
72
73 private:
74 static PanelDescriptor ToDescriptor(const PanelDefinition& definition);
75
77};
78
79} // namespace editor
80} // namespace yaze
81
82#endif // YAZE_APP_EDITOR_SYSTEM_PANEL_HOST_H_
Thin host API over PanelManager for declarative panel workflows.
Definition panel_host.h:43
bool ShowPanel(size_t session_id, const std::string &panel_id)
Definition panel_host.cc:81
static PanelDescriptor ToDescriptor(const PanelDefinition &definition)
Definition panel_host.cc:9
bool IsPanelVisible(size_t session_id, const std::string &panel_id) const
Definition panel_host.cc:93
bool OpenAndFocus(size_t session_id, const std::string &panel_id) const
Definition panel_host.cc:98
std::string ResolvePanelId(const std::string &panel_id) const
std::string GetPanelWindowName(size_t session_id, const std::string &panel_id) const
PanelManager * panel_manager_
Definition panel_host.h:76
PanelHost(PanelManager *panel_manager=nullptr)
Definition panel_host.h:45
void SetPanelManager(PanelManager *panel_manager)
Definition panel_host.h:48
bool RegisterPanel(size_t session_id, const PanelDefinition &definition)
Definition panel_host.cc:27
PanelManager * panel_manager() const
Definition panel_host.h:51
bool RegisterPanels(size_t session_id, const std::vector< PanelDefinition > &definitions)
Definition panel_host.cc:52
bool TogglePanel(size_t session_id, const std::string &panel_id)
Definition panel_host.cc:89
void RegisterPanelAlias(const std::string &legacy_id, const std::string &canonical_id)
Definition panel_host.cc:73
bool HidePanel(size_t session_id, const std::string &panel_id)
Definition panel_host.cc:85
Central registry for all editor cards with session awareness and dependency injection.
PanelCategory
Defines lifecycle behavior for editor panels.
@ EditorBound
Hidden when switching editors (default)
PanelScope
Defines whether a panel is session-scoped or global.
PanelContextScope
Optional context binding for a panel's behavior within an editor.
Declarative registration contract for editor panels.
Definition panel_host.h:22
std::vector< std::string > legacy_ids
Definition panel_host.h:35
PanelContextScope context_scope
Definition panel_host.h:34
std::function< void()> on_hide
Definition panel_host.h:37
std::function< void()> on_show
Definition panel_host.h:36
Metadata for an editor panel (formerly PanelInfo)