6#include "absl/strings/match.h"
7#include "absl/strings/numbers.h"
8#include "absl/strings/str_format.h"
20 : window_manager_(window_manager), session_id_(session_id) {}
27 std::function<
void(
const std::string&)> switch_callback)
28 : switch_callback_(std::move(switch_callback)) {}
35 std::function<
void(
const std::string&)> open_callback)
36 : open_callback_(std::move(open_callback)) {}
43 : session_id_(session_id) {}
50 const std::string& name) {
60 if (absl::StartsWith(name,
"switch.")) {
62 if (absl::SimpleAtoi(name.substr(7), &type_value) && type_value > 0 &&
72 : session_id_(session_id) {}
80 : shortcut_manager_(shortcut_manager) {}
92 std::map<std::string, Pick> picks;
94 if (!shortcut.callback)
97 if (palette_name.empty())
100 auto it = picks.find(palette_name);
101 if (it == picks.end()) {
102 picks.emplace(palette_name, std::move(pick));
103 }
else if (it->second.hint.empty() && !pick.hint.empty()) {
104 it->second = std::move(pick);
108 for (
const auto& [palette_name, pick] : picks) {
109 palette->
AddCommand(palette_name,
"Shortcuts",
111 [manager, source = pick.source]() {
120 std::function<
void(
int drawer_type)> toggle_callback,
121 std::function<
void()> cycle_next, std::function<
void()> cycle_prev)
122 : toggle_callback_(std::move(toggle_callback)),
123 cycle_next_(std::move(cycle_next)),
124 cycle_prev_(std::move(cycle_prev)) {}
131 std::function<
void(
const std::string&)> apply_callback)
132 : apply_callback_(std::move(apply_callback)) {}
140 : window_manager_(window_manager), session_id_(session_id) {}
149 : window_manager_(window_manager),
150 user_settings_(user_settings),
151 session_id_(session_id) {}
161 "Clear the custom sidebar order and revert to defaults",
170 "Un-hide every sidebar category",
180 for (
const auto& cat : categories) {
184 std::string pin_name = absl::StrFormat(
"Sidebar: Toggle Pin: %s", cat);
185 std::string pin_desc =
186 absl::StrFormat(
"Pin or unpin %s at the top of the sidebar", cat);
187 std::string captured_cat_pin = cat;
189 "", [
this, captured_cat_pin]() {
193 if (pinned.count(captured_cat_pin)) {
194 pinned.erase(captured_cat_pin);
196 pinned.insert(captured_cat_pin);
201 std::string hide_name =
202 absl::StrFormat(
"Sidebar: Toggle Visibility: %s", cat);
203 std::string hide_desc =
204 absl::StrFormat(
"Show or hide %s in the sidebar", cat);
205 std::string captured_cat_hide = cat;
207 "", [
this, captured_cat_hide]() {
211 if (hidden.count(captured_cat_hide)) {
212 hidden.erase(captured_cat_hide);
214 hidden.insert(captured_cat_hide);
222 : callbacks_(std::move(callbacks)) {}
void RegisterDrawerCommands(std::function< void(int drawer_type)> toggle_callback, std::function< void()> cycle_next={}, std::function< void()> cycle_prev={})
Register right-drawer toggle commands from GetDrawerCatalog().
void RegisterDungeonRoomCommands(size_t session_id)
Register dungeon room navigation commands.
void RegisterOverworldMapCommands(size_t session_id)
Register overworld map navigation commands (0x00-0x9F).
void RegisterWelcomeCommands(const RecentProjectsModel *model, const std::vector< std::string > &template_names, std::function< void(const std::string &)> remove_callback, std::function< void(const std::string &)> toggle_pin_callback, std::function< void()> undo_remove_callback, std::function< void()> clear_recents_callback, std::function< void(const std::string &)> create_from_template_callback, std::function< void()> dismiss_welcome_callback, std::function< void()> show_welcome_callback)
Expose welcome-screen actions through the command palette.
void RegisterLayoutCommands(std::function< void(const std::string &)> apply_callback)
Register layout preset commands.
void AddCommand(const std::string &name, const std::string &category, const std::string &description, const std::string &shortcut, std::function< void()> callback)
void RegisterPanelCommands(WorkspaceWindowManager *window_manager, size_t session_id)
Register all window toggle commands from WorkspaceWindowManager.
void RegisterWorkflowCommands(WorkspaceWindowManager *window_manager, size_t session_id)
Register hack workflow commands from workflow-aware panels/actions.
void RegisterEditorCommands(std::function< void(const std::string &)> switch_callback)
Register all editor switch commands.
static bool IsInternalCommandId(std::string_view name)
void RegisterRecentFilesCommands(std::function< void(const std::string &)> open_callback)
Register commands to open recent files.
std::function< void(int)> toggle_callback_
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
DrawerCommandsProvider(std::function< void(int drawer_type)> toggle_callback, std::function< void()> cycle_next={}, std::function< void()> cycle_prev={})
std::function< void()> cycle_prev_
std::function< void()> cycle_next_
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
DungeonRoomCommandsProvider(size_t session_id)
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
EditorCommandsProvider(std::function< void(const std::string &)> switch_callback)
std::function< void(const std::string &) switch_callback_)
static std::string GetEditorName(EditorType type)
LayoutCommandsProvider(std::function< void(const std::string &)> apply_callback)
std::function< void(const std::string &) apply_callback_)
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
OverworldMapCommandsProvider(size_t session_id)
WorkspaceWindowManager * window_manager_
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
PanelCommandsProvider(WorkspaceWindowManager *window_manager, size_t session_id)
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
std::function< void(const std::string &) open_callback_)
RecentFilesCommandsProvider(std::function< void(const std::string &)> open_callback)
ShortcutCommandsProvider(const ShortcutManager *shortcut_manager)
const ShortcutManager * shortcut_manager_
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
const Shortcut * FindShortcut(const std::string &name) const
std::string GetDisplayString(const std::string &name) const
Live, platform-formatted binding for a shortcut name.
const std::unordered_map< std::string, Shortcut > & GetShortcuts() const
Manages user preferences and settings persistence.
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
WelcomeCommandsProvider(Callbacks callbacks)
WorkspaceWindowManager * window_manager_
void Provide(CommandPalette *palette) override
Populate palette with this source's commands.
WorkflowCommandsProvider(WorkspaceWindowManager *window_manager, size_t session_id)
Central registry for all editor cards with session awareness and dependency injection.
static constexpr const char * kDashboardCategory
std::vector< std::string > GetAllCategories(size_t session_id) const
std::string InferShortcutGroup(absl::string_view name)
Menu-IA group for a shortcut/command name (File, View, Drawers, …).
std::string PaletteNameForShortcut(const std::string &name)
std::string LookupShortcutHint(const ShortcutManager *shortcut_manager, const std::string &name)
constexpr size_t kEditorTypeCount
static constexpr const char * kView
std::function< void()> callback
std::unordered_set< std::string > sidebar_hidden
std::function< void()> clear_recents
std::function< void(const std::string &) toggle_pin)
std::vector< std::string > template_names
std::function< void()> undo_remove
std::function< void(const std::string &) remove)
std::function< void()> dismiss_welcome
std::function< void()> show_welcome
std::function< void(const std::string &) create_from_template)
const RecentProjectsModel * model