ot_tools_io/projects/settings/
mixer.rs1use crate::projects::parse_hashmap_string_value;
9use crate::projects::ProjectParseError;
10use serde::{Deserialize, Serialize};
11use std::collections::HashMap;
12
13#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16pub struct MixerMenu {
17 pub gain_ab: u8,
20
21 pub gain_cd: u8,
24
25 pub dir_ab: u8,
28
29 pub dir_cd: u8,
32
33 pub phones_mix: u8,
36
37 pub main_to_cue: u8,
40
41 pub main_level: u8,
44
45 pub cue_level: u8,
48}
49
50impl TryFrom<&HashMap<String, String>> for MixerMenu {
51 type Error = ProjectParseError;
52 fn try_from(value: &HashMap<String, String>) -> Result<Self, Self::Error> {
53 let gain_ab = parse_hashmap_string_value::<u8>(value, "gain_ab", None)?;
54 let gain_cd = parse_hashmap_string_value::<u8>(value, "gain_cd", None)?;
55 let dir_ab = parse_hashmap_string_value::<u8>(value, "dir_ab", None)?;
56 let dir_cd = parse_hashmap_string_value::<u8>(value, "dir_cd", None)?;
57 let phones_mix = parse_hashmap_string_value::<u8>(value, "phones_mix", None)?;
58 let main_to_cue = parse_hashmap_string_value::<u8>(value, "main_to_cue", None)?;
59 let main_level = parse_hashmap_string_value::<u8>(value, "main_level", None)?;
60 let cue_level = parse_hashmap_string_value::<u8>(value, "cue_level", None)?;
61 Ok(Self {
62 gain_ab,
63 gain_cd,
64 dir_ab,
65 dir_cd,
66 phones_mix,
67 main_to_cue,
68 main_level,
69 cue_level,
70 })
71 }
72}
73
74impl Default for MixerMenu {
75 fn default() -> Self {
77 Self {
78 gain_ab: 64,
79 gain_cd: 64,
80 dir_ab: 0,
81 dir_cd: 0,
82 phones_mix: 64,
83 main_to_cue: 64,
84 main_level: 64,
85 cue_level: 64,
86 }
87 }
88}