#include "lc_global.h" #include "lc_shortcuts.h" #include "lc_profile.h" #include "lc_file.h" lcKeyboardShortcuts gKeyboardShortcuts; void lcLoadDefaultKeyboardShortcuts() { lcMemFile File; lcGetProfileBuffer(LC_PROFILE_SHORTCUTS, File); if (!File.GetLength() || !lcLoadKeyboardShortcuts(File, gKeyboardShortcuts)) lcResetKeyboardShortcuts(gKeyboardShortcuts); } void lcSaveDefaultKeyboardShortcuts() { lcMemFile File; lcSaveKeyboardShortcuts(File, gKeyboardShortcuts); lcSetProfileBuffer(LC_PROFILE_SHORTCUTS, File); } void lcResetDefaultKeyboardShortcuts() { lcResetKeyboardShortcuts(gKeyboardShortcuts); lcRemoveProfileKey(LC_PROFILE_SHORTCUTS); } void lcResetKeyboardShortcuts(lcKeyboardShortcuts& Shortcuts) { for (int CommandIdx = 0; CommandIdx < LC_NUM_COMMANDS; CommandIdx++) strcpy(Shortcuts.Shortcuts[CommandIdx], gCommands[CommandIdx].DefaultShortcut); } bool lcSaveKeyboardShortcuts(const char* FileName, const lcKeyboardShortcuts& Shortcuts) { lcDiskFile File; if (!File.Open(FileName, "wt")) return false; return lcSaveKeyboardShortcuts(File, Shortcuts); } bool lcSaveKeyboardShortcuts(lcFile& File, const lcKeyboardShortcuts& Shortcuts) { char Line[1024]; for (int CommandIdx = 0; CommandIdx < LC_NUM_COMMANDS; CommandIdx++) { if (!Shortcuts.Shortcuts[CommandIdx][0]) continue; sprintf(Line, "%s=%s\n", gCommands[CommandIdx].ID, Shortcuts.Shortcuts[CommandIdx]); File.WriteLine(Line); } return true; } bool lcLoadKeyboardShortcuts(const char* FileName, lcKeyboardShortcuts& Shortcuts) { lcDiskFile File; if (!File.Open(FileName, "rt")) return false; return lcLoadKeyboardShortcuts(File, Shortcuts); } bool lcLoadKeyboardShortcuts(lcFile& File, lcKeyboardShortcuts& Shortcuts) { for (int CommandIdx = 0; CommandIdx < LC_NUM_COMMANDS; CommandIdx++) Shortcuts.Shortcuts[CommandIdx][0] = 0; char Line[1024]; while (File.ReadLine(Line, sizeof(Line))) { char* Key = strchr(Line, '='); if (!Key) continue; *Key = 0; Key++; int CommandIdx; for (CommandIdx = 0; CommandIdx < LC_NUM_COMMANDS; CommandIdx++) if (!strcmp(gCommands[CommandIdx].ID, Line)) break; if (CommandIdx == LC_NUM_COMMANDS) continue; char* NewLine = strchr(Key, '\n'); if (NewLine) *NewLine = 0; strncpy(Shortcuts.Shortcuts[CommandIdx], Key, LC_SHORTCUT_LENGTH); } return true; }