yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
command_palette.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SYSTEM_COMMAND_PALETTE_H_
2#define YAZE_APP_EDITOR_SYSTEM_COMMAND_PALETTE_H_
3
4#include <functional>
5#include <string>
6#include <unordered_map>
7#include <vector>
8
9namespace yaze {
10namespace editor {
11
12class PanelManager;
13class EditorRegistry;
14
19 static constexpr const char* kPanel = "Panels";
20 static constexpr const char* kEditor = "Editor";
21 static constexpr const char* kLayout = "Layout";
22 static constexpr const char* kFile = "File";
23 static constexpr const char* kEdit = "Edit";
24 static constexpr const char* kView = "View";
25 static constexpr const char* kNavigation = "Navigation";
26 static constexpr const char* kTools = "Tools";
27 static constexpr const char* kHelp = "Help";
28};
29
31 std::string name;
32 std::string category;
33 std::string description;
34 std::string shortcut;
35 std::function<void()> callback;
36 int usage_count = 0;
37 int64_t last_used_ms = 0;
38};
39
41 public:
42 void AddCommand(const std::string& name, const std::string& category,
43 const std::string& description, const std::string& shortcut,
44 std::function<void()> callback);
45
46 void RecordUsage(const std::string& name);
47
48 std::vector<CommandEntry> SearchCommands(const std::string& query);
49
50 std::vector<CommandEntry> GetRecentCommands(int limit = 10);
51
52 std::vector<CommandEntry> GetFrequentCommands(int limit = 10);
53
58 std::vector<CommandEntry> GetAllCommands() const;
59
63 size_t GetCommandCount() const { return commands_.size(); }
64
68 void Clear() { commands_.clear(); }
69
70 // ============================================================================
71 // Bulk Registration Methods
72 // ============================================================================
73
79 void RegisterPanelCommands(PanelManager* panel_manager, size_t session_id);
80
86 std::function<void(const std::string&)> switch_callback);
87
93 std::function<void(const std::string&)> apply_callback);
94
103 std::function<void(const std::string&)> open_callback);
104
111 void RegisterDungeonRoomCommands(size_t session_id);
112
117 void SaveHistory(const std::string& filepath);
118
123 void LoadHistory(const std::string& filepath);
124
125 static int FuzzyScore(const std::string& text, const std::string& query);
126
127 private:
128 std::unordered_map<std::string, CommandEntry> commands_;
129};
130
131} // namespace editor
132} // namespace yaze
133
134#endif // YAZE_APP_EDITOR_SYSTEM_COMMAND_PALETTE_H_
std::vector< CommandEntry > SearchCommands(const std::string &query)
void RegisterDungeonRoomCommands(size_t session_id)
Register dungeon room navigation commands.
void RegisterPanelCommands(PanelManager *panel_manager, size_t session_id)
Register all panel toggle commands from PanelManager.
void SaveHistory(const std::string &filepath)
Save command usage history to disk.
void Clear()
Clear all commands.
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)
size_t GetCommandCount() const
Get command count.
void LoadHistory(const std::string &filepath)
Load command usage history from disk.
std::vector< CommandEntry > GetAllCommands() const
Get all registered commands.
void RecordUsage(const std::string &name)
std::unordered_map< std::string, CommandEntry > commands_
void RegisterEditorCommands(std::function< void(const std::string &)> switch_callback)
Register all editor switch commands.
std::vector< CommandEntry > GetRecentCommands(int limit=10)
void RegisterRecentFilesCommands(std::function< void(const std::string &)> open_callback)
Register commands to open recent files.
std::vector< CommandEntry > GetFrequentCommands(int limit=10)
static int FuzzyScore(const std::string &text, const std::string &query)
Central registry for all editor cards with session awareness and dependency injection.
Categories for command palette entries.
static constexpr const char * kTools
static constexpr const char * kLayout
static constexpr const char * kFile
static constexpr const char * kView
static constexpr const char * kEditor
static constexpr const char * kHelp
static constexpr const char * kEdit
static constexpr const char * kPanel
static constexpr const char * kNavigation
std::function< void()> callback