yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
command_palette_providers.cc
Go to the documentation of this file.
2
3#include <utility>
4
5#include "absl/strings/str_format.h"
8
9namespace yaze {
10namespace editor {
11
13 WorkspaceWindowManager* window_manager, size_t session_id)
14 : window_manager_(window_manager), session_id_(session_id) {}
15
16void PanelCommandsProvider::Provide(CommandPalette* palette) {
17 palette->RegisterPanelCommands(window_manager_, session_id_);
18}
19
20EditorCommandsProvider::EditorCommandsProvider(
21 std::function<void(const std::string&)> switch_callback)
22 : switch_callback_(std::move(switch_callback)) {}
23
24void EditorCommandsProvider::Provide(CommandPalette* palette) {
25 palette->RegisterEditorCommands(switch_callback_);
26}
27
28RecentFilesCommandsProvider::RecentFilesCommandsProvider(
29 std::function<void(const std::string&)> open_callback)
30 : open_callback_(std::move(open_callback)) {}
31
32void RecentFilesCommandsProvider::Provide(CommandPalette* palette) {
33 palette->RegisterRecentFilesCommands(open_callback_);
34}
35
36DungeonRoomCommandsProvider::DungeonRoomCommandsProvider(size_t session_id)
37 : session_id_(session_id) {}
38
39void DungeonRoomCommandsProvider::Provide(CommandPalette* palette) {
40 palette->RegisterDungeonRoomCommands(session_id_);
41}
42
43WorkflowCommandsProvider::WorkflowCommandsProvider(
44 WorkspaceWindowManager* window_manager, size_t session_id)
45 : window_manager_(window_manager), session_id_(session_id) {}
46
47void WorkflowCommandsProvider::Provide(CommandPalette* palette) {
48 palette->RegisterWorkflowCommands(window_manager_, session_id_);
49}
50
51SidebarCommandsProvider::SidebarCommandsProvider(
52 WorkspaceWindowManager* window_manager, UserSettings* user_settings,
53 size_t session_id)
54 : window_manager_(window_manager),
55 user_settings_(user_settings),
56 session_id_(session_id) {}
57
58void SidebarCommandsProvider::Provide(CommandPalette* palette) {
59 if (!palette || !user_settings_ || !window_manager_)
60 return;
61
62 auto categories = window_manager_->GetAllCategories(session_id_);
63
64 // Global helpers first — they're callable any time.
65 palette->AddCommand("Sidebar: Reset Order", CommandCategory::kView,
66 "Clear the custom sidebar order and revert to defaults",
67 /*shortcut=*/"", [this]() {
68 if (!user_settings_)
69 return;
70 user_settings_->prefs().sidebar_order.clear();
71 (void)user_settings_->Save();
72 });
73
74 palette->AddCommand("Sidebar: Show All Categories", CommandCategory::kView,
75 "Un-hide every sidebar category",
76 /*shortcut=*/"", [this]() {
77 if (!user_settings_)
78 return;
79 user_settings_->prefs().sidebar_hidden.clear();
80 (void)user_settings_->Save();
81 });
82
83 // Per-category toggles. Using static "Toggle" labels avoids the need to
84 // refresh the provider every time state flips.
85 for (const auto& cat : categories) {
86 if (cat == WorkspaceWindowManager::kDashboardCategory)
87 continue;
88
89 std::string pin_name = absl::StrFormat("Sidebar: Toggle Pin: %s", cat);
90 std::string pin_desc =
91 absl::StrFormat("Pin or unpin %s at the top of the sidebar", cat);
92 std::string captured_cat_pin = cat;
93 palette->AddCommand(pin_name, CommandCategory::kView, pin_desc,
94 /*shortcut=*/"", [this, captured_cat_pin]() {
95 if (!user_settings_)
96 return;
97 auto& pinned = user_settings_->prefs().sidebar_pinned;
98 if (pinned.count(captured_cat_pin)) {
99 pinned.erase(captured_cat_pin);
100 } else {
101 pinned.insert(captured_cat_pin);
102 }
103 (void)user_settings_->Save();
104 });
105
106 std::string hide_name =
107 absl::StrFormat("Sidebar: Toggle Visibility: %s", cat);
108 std::string hide_desc =
109 absl::StrFormat("Show or hide %s in the sidebar", cat);
110 std::string captured_cat_hide = cat;
111 palette->AddCommand(hide_name, CommandCategory::kView, hide_desc,
112 /*shortcut=*/"", [this, captured_cat_hide]() {
113 if (!user_settings_)
114 return;
115 auto& hidden = user_settings_->prefs().sidebar_hidden;
116 if (hidden.count(captured_cat_hide)) {
117 hidden.erase(captured_cat_hide);
118 } else {
119 hidden.insert(captured_cat_hide);
120 }
121 (void)user_settings_->Save();
122 });
123 }
124}
125
126WelcomeCommandsProvider::WelcomeCommandsProvider(Callbacks callbacks)
127 : callbacks_(std::move(callbacks)) {}
128
129void WelcomeCommandsProvider::Provide(CommandPalette* palette) {
130 palette->RegisterWelcomeCommands(
131 callbacks_.model, callbacks_.template_names, callbacks_.remove,
132 callbacks_.toggle_pin, callbacks_.undo_remove, callbacks_.clear_recents,
133 callbacks_.create_from_template, callbacks_.dismiss_welcome,
134 callbacks_.show_welcome);
135}
136
137} // namespace editor
138} // namespace yaze
PanelCommandsProvider(WorkspaceWindowManager *window_manager, size_t session_id)