11#include <unordered_map>
28 return event.key ==
key &&
event.modifiers ==
modifiers &&
event.is_down;
73 const std::vector<Command>&
commands()
const {
return commands_; }
88 std::vector<Command> commands_;
128 void add_menu(std::string title, std::vector<MenuItem> items);
134 const std::vector<Menu>&
menus()
const {
return menus_; }
137 std::vector<Menu> menus_;
161 const std::vector<Item>&
items()
const {
return items_; }
164 std::vector<Item> items_;
180 std::optional<std::string>
get_string(
const std::string& key)
const;
182 std::optional<int>
get_int(
const std::string& key)
const;
184 std::optional<float>
get_float(
const std::string& key)
const;
186 std::optional<bool>
get_bool(
const std::string& key)
const;
208 std::filesystem::path settings_path_;
209 std::unordered_map<std::string, std::string> values_;
bool save()
Persist to disk.
void set_string(const std::string &key, const std::string &value)
Set values (not persisted until save() is called).
std::filesystem::path settings_path() const
Settings file path.
Definition app_framework.hpp:205
void set_float(const std::string &key, float value)
void save_window_state(int x, int y, int width, int height)
Convenience: save/restore window geometry.
std::optional< int > get_int(const std::string &key) const
Get an int setting.
std::optional< float > get_float(const std::string &key) const
Get a float setting.
bool load()
Load from disk.
void set_int(const std::string &key, int value)
std::optional< bool > get_bool(const std::string &key) const
Get a bool setting.
std::optional< std::string > get_string(const std::string &key) const
Get a string setting.
std::optional< WindowState > load_window_state() const
AppSettings(const std::string &app_name)
void set_bool(const std::string &key, bool value)
Manages keyboard shortcuts with configurable bindings.
Definition app_framework.hpp:63
void rebind(CommandID id, KeyShortcut shortcut)
Rebind a command's shortcut.
bool load_bindings(const std::filesystem::path &path)
Load keybindings from a JSON file (overrides defaults).
const std::vector< Command > & commands() const
Get all registered commands.
Definition app_framework.hpp:73
void remove_command(CommandID id)
bool save_bindings(const std::filesystem::path &path) const
Save keybindings to a JSON file.
void add_command(Command cmd)
std::vector< const Command * > commands_in_category(const std::string &category) const
Get commands in a specific category.
bool handle_key(const KeyEvent &event)
Try to handle a key event by matching against registered shortcuts.
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
@ path
Definition anchor_strategy.hpp:42
uint32_t CommandID
A unique command identifier.
Definition app_framework.hpp:20
@ value
the widget's primary value (Knob, Fader, RangeSlider, Toggle, ProgressBar)
Definition binding_diagnostics.hpp:19
KeyCode
Definition input_events.hpp:35
@ s
Definition input_events.hpp:41
@ y
Definition input_events.hpp:42
@ x
Definition input_events.hpp:41
@ unknown
Definition input_events.hpp:36
@ height
Definition css_animation.hpp:128
@ width
Definition css_animation.hpp:127
Definition app_framework.hpp:201
int height
Definition app_framework.hpp:201
int x
Definition app_framework.hpp:201
int width
Definition app_framework.hpp:201
int y
Definition app_framework.hpp:201
A named command with optional shortcut and callback.
Definition app_framework.hpp:39
bool is_separator
True for menu separator items.
Definition app_framework.hpp:46
std::function< bool()> is_enabled
Returns false to grey out.
Definition app_framework.hpp:45
std::string category
Menu category ("File", "Edit", etc.).
Definition app_framework.hpp:42
std::string name
Definition app_framework.hpp:41
std::function< void()> action
Definition app_framework.hpp:44
KeyShortcut shortcut
Definition app_framework.hpp:43
Rich key event with key code, modifiers, and repeat state.
Definition input_events.hpp:193
A keyboard shortcut (key + modifiers).
Definition app_framework.hpp:23
bool matches(const KeyEvent &event) const
Definition app_framework.hpp:27
KeyCode key
Definition app_framework.hpp:24
static KeyShortcut from_string(const std::string &s)
Create from string like "Cmd+S", "Ctrl+Shift+Z", "F5".
uint16_t modifiers
Definition app_framework.hpp:25
std::string to_string() const
Convert to display string.