5#include "absl/strings/str_format.h"
13 WorkspaceWindowManager* window_manager,
size_t session_id)
14 : window_manager_(window_manager), session_id_(session_id) {}
16void PanelCommandsProvider::Provide(CommandPalette* palette) {
17 palette->RegisterPanelCommands(window_manager_, session_id_);
20EditorCommandsProvider::EditorCommandsProvider(
21 std::function<
void(
const std::string&)> switch_callback)
22 : switch_callback_(std::move(switch_callback)) {}
24void EditorCommandsProvider::Provide(CommandPalette* palette) {
25 palette->RegisterEditorCommands(switch_callback_);
28RecentFilesCommandsProvider::RecentFilesCommandsProvider(
29 std::function<
void(
const std::string&)> open_callback)
30 : open_callback_(std::move(open_callback)) {}
32void RecentFilesCommandsProvider::Provide(CommandPalette* palette) {
33 palette->RegisterRecentFilesCommands(open_callback_);
36DungeonRoomCommandsProvider::DungeonRoomCommandsProvider(
size_t session_id)
37 : session_id_(session_id) {}
39void DungeonRoomCommandsProvider::Provide(CommandPalette* palette) {
40 palette->RegisterDungeonRoomCommands(session_id_);
43WorkflowCommandsProvider::WorkflowCommandsProvider(
44 WorkspaceWindowManager* window_manager,
size_t session_id)
45 : window_manager_(window_manager), session_id_(session_id) {}
47void WorkflowCommandsProvider::Provide(CommandPalette* palette) {
48 palette->RegisterWorkflowCommands(window_manager_, session_id_);
51SidebarCommandsProvider::SidebarCommandsProvider(
52 WorkspaceWindowManager* window_manager, UserSettings* user_settings,
54 : window_manager_(window_manager),
55 user_settings_(user_settings),
56 session_id_(session_id) {}
58void SidebarCommandsProvider::Provide(CommandPalette* palette) {
59 if (!palette || !user_settings_ || !window_manager_)
62 auto categories = window_manager_->GetAllCategories(session_id_);
65 palette->AddCommand(
"Sidebar: Reset Order", CommandCategory::kView,
66 "Clear the custom sidebar order and revert to defaults",
70 user_settings_->prefs().sidebar_order.clear();
71 (void)user_settings_->Save();
74 palette->AddCommand(
"Sidebar: Show All Categories", CommandCategory::kView,
75 "Un-hide every sidebar category",
79 user_settings_->prefs().sidebar_hidden.clear();
80 (void)user_settings_->Save();
85 for (
const auto& cat : categories) {
86 if (cat == WorkspaceWindowManager::kDashboardCategory)
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 "", [
this, captured_cat_pin]() {
97 auto& pinned = user_settings_->prefs().sidebar_pinned;
98 if (pinned.count(captured_cat_pin)) {
99 pinned.erase(captured_cat_pin);
101 pinned.insert(captured_cat_pin);
103 (
void)user_settings_->Save();
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 "", [
this, captured_cat_hide]() {
115 auto& hidden = user_settings_->prefs().sidebar_hidden;
116 if (hidden.count(captured_cat_hide)) {
117 hidden.erase(captured_cat_hide);
119 hidden.insert(captured_cat_hide);
121 (
void)user_settings_->Save();
126WelcomeCommandsProvider::WelcomeCommandsProvider(Callbacks callbacks)
127 : callbacks_(std::move(callbacks)) {}
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);
PanelCommandsProvider(WorkspaceWindowManager *window_manager, size_t session_id)