use crate::types::{DividerStyle, PaneTitlePosition};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaneConfig {
#[serde(default = "crate::defaults::pane_divider_width")]
pub pane_divider_width: Option<f32>,
#[serde(default = "crate::defaults::pane_divider_hit_width")]
pub pane_divider_hit_width: f32,
#[serde(default = "crate::defaults::pane_padding")]
pub pane_padding: f32,
#[serde(default = "crate::defaults::pane_min_size")]
pub pane_min_size: usize,
#[serde(default = "crate::defaults::pane_background_opacity")]
pub pane_background_opacity: f32,
#[serde(default = "crate::defaults::pane_divider_color")]
pub pane_divider_color: [u8; 3],
#[serde(default = "crate::defaults::pane_divider_hover_color")]
pub pane_divider_hover_color: [u8; 3],
#[serde(default = "crate::defaults::bool_false")]
pub dim_inactive_panes: bool,
#[serde(default = "crate::defaults::inactive_pane_opacity")]
pub inactive_pane_opacity: f32,
#[serde(default = "crate::defaults::bool_false")]
pub show_pane_titles: bool,
#[serde(default = "crate::defaults::pane_title_height")]
pub pane_title_height: f32,
#[serde(default)]
pub pane_title_position: PaneTitlePosition,
#[serde(default = "crate::defaults::pane_title_color")]
pub pane_title_color: [u8; 3],
#[serde(default = "crate::defaults::pane_title_bg_color")]
pub pane_title_bg_color: [u8; 3],
#[serde(default)]
pub pane_title_font: String,
#[serde(default)]
pub pane_divider_style: DividerStyle,
#[serde(default = "crate::defaults::max_panes")]
pub max_panes: usize,
#[serde(default = "crate::defaults::bool_true")]
pub pane_focus_indicator: bool,
#[serde(default = "crate::defaults::pane_focus_color")]
pub pane_focus_color: [u8; 3],
#[serde(default = "crate::defaults::pane_focus_width")]
pub pane_focus_width: f32,
}
impl Default for PaneConfig {
fn default() -> Self {
Self {
pane_divider_width: crate::defaults::pane_divider_width(),
pane_divider_hit_width: crate::defaults::pane_divider_hit_width(),
pane_padding: crate::defaults::pane_padding(),
pane_min_size: crate::defaults::pane_min_size(),
pane_background_opacity: crate::defaults::pane_background_opacity(),
pane_divider_color: crate::defaults::pane_divider_color(),
pane_divider_hover_color: crate::defaults::pane_divider_hover_color(),
dim_inactive_panes: crate::defaults::bool_false(),
inactive_pane_opacity: crate::defaults::inactive_pane_opacity(),
show_pane_titles: crate::defaults::bool_false(),
pane_title_height: crate::defaults::pane_title_height(),
pane_title_position: PaneTitlePosition::default(),
pane_title_color: crate::defaults::pane_title_color(),
pane_title_bg_color: crate::defaults::pane_title_bg_color(),
pane_title_font: String::new(),
pane_divider_style: DividerStyle::default(),
max_panes: crate::defaults::max_panes(),
pane_focus_indicator: crate::defaults::bool_true(),
pane_focus_color: crate::defaults::pane_focus_color(),
pane_focus_width: crate::defaults::pane_focus_width(),
}
}
}