use crate::projects::parse_hashmap_string_value;
use ot_tools_io_derive::{AsMutDerive, AsRefDerive};
use crate::projects::ProjectParseError;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(
Copy,
Clone,
Debug,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
Serialize,
Deserialize,
AsMutDerive,
AsRefDerive,
)]
pub struct MidiTrackTrigModes {
pub trig_mode_midi_track_1: u8,
pub trig_mode_midi_track_2: u8,
pub trig_mode_midi_track_3: u8,
pub trig_mode_midi_track_4: u8,
pub trig_mode_midi_track_5: u8,
pub trig_mode_midi_track_6: u8,
pub trig_mode_midi_track_7: u8,
pub trig_mode_midi_track_8: u8,
}
#[allow(clippy::derivable_impls)] impl Default for MidiTrackTrigModes {
fn default() -> Self {
Self {
trig_mode_midi_track_1: 0,
trig_mode_midi_track_2: 0,
trig_mode_midi_track_3: 0,
trig_mode_midi_track_4: 0,
trig_mode_midi_track_5: 0,
trig_mode_midi_track_6: 0,
trig_mode_midi_track_7: 0,
trig_mode_midi_track_8: 0,
}
}
}
impl TryFrom<&HashMap<String, String>> for MidiTrackTrigModes {
type Error = ProjectParseError;
fn try_from(value: &HashMap<String, String>) -> Result<Self, Self::Error> {
let trig_mode_midi_track_1 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_1", None)?;
let trig_mode_midi_track_2 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_2", None)?;
let trig_mode_midi_track_3 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_3", None)?;
let trig_mode_midi_track_4 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_4", None)?;
let trig_mode_midi_track_5 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_5", None)?;
let trig_mode_midi_track_6 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_6", None)?;
let trig_mode_midi_track_7 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_7", None)?;
let trig_mode_midi_track_8 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_8", None)?;
Ok(Self {
trig_mode_midi_track_1,
trig_mode_midi_track_2,
trig_mode_midi_track_3,
trig_mode_midi_track_4,
trig_mode_midi_track_5,
trig_mode_midi_track_6,
trig_mode_midi_track_7,
trig_mode_midi_track_8,
})
}
}