panel_settings.rs

 1use anyhow;
 2use schemars::JsonSchema;
 3use serde_derive::{Deserialize, Serialize};
 4use settings::Setting;
 5
 6#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
 7#[serde(rename_all = "snake_case")]
 8pub enum ChannelsPanelDockPosition {
 9    Left,
10    Right,
11}
12
13#[derive(Deserialize, Debug)]
14pub struct ChannelsPanelSettings {
15    pub dock: ChannelsPanelDockPosition,
16    pub default_width: f32,
17}
18
19#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)]
20pub struct ChannelsPanelSettingsContent {
21    pub dock: Option<ChannelsPanelDockPosition>,
22    pub default_width: Option<f32>,
23}
24
25impl Setting for ChannelsPanelSettings {
26    const KEY: Option<&'static str> = Some("channels_panel");
27
28    type FileContent = ChannelsPanelSettingsContent;
29
30    fn load(
31        default_value: &Self::FileContent,
32        user_values: &[&Self::FileContent],
33        _: &gpui::AppContext,
34    ) -> anyhow::Result<Self> {
35        Self::load_via_json_merge(default_value, user_values)
36    }
37}