hex_patch/app/settings/
app_settings.rs1use mlua::UserDataRegistry;
2use serde::{Deserialize, Serialize};
3
4use super::{theme_preference::ThemePreference, verbosity::Verbosity, Settings};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(default)]
8pub struct AppSettings {
9 pub history_limit: usize,
10 pub log_limit: usize,
11 pub log_level: Verbosity,
12 pub theme: ThemePreference,
13}
14
15impl AppSettings {
16 pub fn register_userdata(data: &mut UserDataRegistry<Settings>) {
17 mlua::UserDataFields::add_field_method_get(data, "app_history_limit", |_lua, settings| {
18 Ok(settings.app.history_limit)
19 });
20 mlua::UserDataFields::add_field_method_set(
21 data,
22 "app_history_limit",
23 |_lua, settings, value| {
24 settings.app.history_limit = value;
25 Ok(())
26 },
27 );
28 mlua::UserDataFields::add_field_method_get(data, "app_log_limit", |_lua, settings| {
29 Ok(settings.app.log_limit)
30 });
31 mlua::UserDataFields::add_field_method_set(
32 data,
33 "app_log_limit",
34 |_lua, settings, value| {
35 settings.app.log_limit = value;
36 Ok(())
37 },
38 );
39 }
40}
41
42impl Default for AppSettings {
43 fn default() -> Self {
44 Self {
45 history_limit: 1024,
46 log_limit: 1024,
47 log_level: Verbosity::default(),
48 theme: ThemePreference::default(),
49 }
50 }
51}