Add keybinding save and load functionality to CommandManager
This commit is contained in:
@@ -92,7 +92,6 @@ class EditorManager : public SharedRom, public core::ExperimentFlags {
|
||||
|
||||
absl::Status status_;
|
||||
|
||||
ImVector<int> active_tabs_;
|
||||
std::vector<Editor *> active_editors_;
|
||||
|
||||
emu::Emulator emulator_;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "command_manager.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include "imgui/imgui.h"
|
||||
|
||||
namespace yaze {
|
||||
@@ -79,6 +81,30 @@ void CommandManager::InitializeDefaults() {
|
||||
{"H", {[]() { /* Help logic */ }, 'H', "Help", "Show help information"}}};
|
||||
}
|
||||
|
||||
void CommandManager::SaveKeybindings(const std::string& filepath) {
|
||||
std::ofstream out(filepath);
|
||||
if (out.is_open()) {
|
||||
for (const auto& [shortcut, info] : commands_) {
|
||||
out << shortcut << " " << info.mnemonic << " " << info.name << " "
|
||||
<< info.desc << "\n";
|
||||
}
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
|
||||
void CommandManager::LoadKeybindings(const std::string& filepath) {
|
||||
std::ifstream in(filepath);
|
||||
if (in.is_open()) {
|
||||
commands_.clear();
|
||||
std::string shortcut, name, desc;
|
||||
char mnemonic;
|
||||
while (in >> shortcut >> mnemonic >> name >> desc) {
|
||||
commands_[shortcut] = {nullptr, mnemonic, name, desc};
|
||||
}
|
||||
in.close();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace editor
|
||||
} // namespace app
|
||||
} // namespace yaze
|
||||
|
||||
@@ -43,6 +43,9 @@ class CommandManager {
|
||||
|
||||
void InitializeDefaults();
|
||||
|
||||
void SaveKeybindings(const std::string& filepath);
|
||||
void LoadKeybindings(const std::string& filepath);
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, CommandInfo> commands_;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user