use crate::fyrox::core::{reflect::prelude::*, type_traits::prelude::*, uuid_provider};
use serde::{Deserialize, Serialize};
use strum_macros::{AsRefStr, EnumString, VariantNames};
#[derive(
Copy,
Clone,
Hash,
PartialOrd,
PartialEq,
Eq,
Ord,
Debug,
Serialize,
Deserialize,
Reflect,
AsRefStr,
EnumString,
VariantNames,
TypeUuidProvider,
)]
#[type_uuid(id = "35e8d30d-1213-4d87-905e-19d48550e6d5")]
pub enum EditorStyle {
Dark,
Light,
}
#[derive(Deserialize, Serialize, PartialEq, Clone, Debug, Reflect)]
pub struct GeneralSettings {
pub show_node_removal_dialog: bool,
#[serde(default = "default_suspension_state")]
pub suspend_unfocused_editor: bool,
pub keep_editor_active: bool,
#[serde(default = "default_script_editor")]
pub script_editor: ScriptEditor,
#[serde(default = "default_max_history_entries")]
pub max_history_entries: usize,
#[serde(default = "default_generate_previews")]
pub generate_previews: bool,
#[serde(default = "default_max_log_entries")]
pub max_log_entries: usize,
#[serde(default = "default_style")]
pub style: EditorStyle,
}
fn default_style() -> EditorStyle {
EditorStyle::Dark
}
fn default_max_log_entries() -> usize {
256
}
fn default_suspension_state() -> bool {
true
}
fn default_script_editor() -> ScriptEditor {
ScriptEditor::SystemDefault
}
fn default_max_history_entries() -> usize {
512
}
fn default_generate_previews() -> bool {
true
}
#[derive(
Copy,
Clone,
Hash,
PartialOrd,
PartialEq,
Eq,
Ord,
Debug,
Serialize,
Deserialize,
Reflect,
AsRefStr,
EnumString,
VariantNames,
)]
pub enum ScriptEditor {
SystemDefault,
VSCode,
Emacs,
XCode,
Zed,
}
uuid_provider!(ScriptEditor = "d0c942e8-24e4-40f2-ad2e-1b9f189d3ca2");
impl Default for GeneralSettings {
fn default() -> Self {
Self {
show_node_removal_dialog: true,
suspend_unfocused_editor: default_suspension_state(),
keep_editor_active: false,
script_editor: default_script_editor(),
max_history_entries: default_max_history_entries(),
generate_previews: default_generate_previews(),
max_log_entries: default_max_log_entries(),
style: EditorStyle::Dark,
}
}
}