ot_tools_io/projects/settings/
tempo.rs1use crate::projects::{parse_hashmap_string_value, parse_hashmap_string_value_bool};
10use crate::projects::ProjectParseError;
12use serde::{Deserialize, Serialize};
13use std::collections::HashMap;
14
15#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
17pub struct TempoMenu {
18 pub tempo: u32,
22
23 pub pattern_tempo_enabled: bool,
27}
28
29impl TryFrom<&HashMap<String, String>> for TempoMenu {
30 type Error = ProjectParseError;
31 fn try_from(value: &HashMap<String, String>) -> Result<Self, Self::Error> {
32 let tempo = parse_hashmap_string_value::<u32>(value, "tempox24", None)? / 24;
33 let pattern_tempo_enabled =
34 parse_hashmap_string_value_bool(value, "pattern_tempo_enabled", None)?;
35
36 Ok(Self {
37 tempo,
38 pattern_tempo_enabled,
39 })
40 }
41}