#[macro_use]
extern crate snafu;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate log;
#[cfg(test)]
#[macro_use]
extern crate serde_json;
#[cfg(feature = "reqwest")]
extern crate reqwest;
#[cfg(feature = "filesystem")]
pub mod filesystem;
pub mod annalisa;
pub mod arnalisa;
pub mod arnalisamplic;
pub mod error;
pub mod ommui;
pub mod samplic;
pub mod xio;
pub mod xio_job_to_blockdiag;
pub mod xiolisa;
mod loadable_device;
mod storable_device;
mod xtr;
pub use error::Error;
pub use loadable_device::LoadableDevice;
pub use storable_device::StorableDevice;
pub use xtr::XTr;
pub type Result<T, E = Error> = std::result::Result<T, E>;
use indexmap::IndexMap;
use snafu::ResultExt;
use std::path::Path;
use uuid::Uuid;
pub trait LoadPathPattern: Sized {
fn load_path_pattern(pattern: &str) -> Result<Self>;
fn load_path_pattern_from_dir<P: AsRef<Path>>(
dir: P,
pattern: &str,
) -> Result<Self>;
}
fn file_load_json<T, P: AsRef<Path>>(path: P) -> Result<T>
where
T: serde::de::DeserializeOwned,
{
debug!("Loading JSON from {:?}", path.as_ref().to_path_buf());
ommui_file_loading::load_json(path).context(error::OmmuiFileLoading)
}
fn file_load_string<P: AsRef<Path>>(path: P) -> Result<String> {
debug!("Loading String from {:?}", path.as_ref().to_path_buf());
ommui_file_loading::load_string(path).context(error::OmmuiFileLoading)
}
#[derive(Clone, Debug)]
pub struct CalibrationDescription {
pub arnalisa: arnalisa::Calibration,
pub ommui: ommui::CalibrationDescription,
pub xiolisa: xiolisa::Calibration,
}
#[derive(Clone, Debug)]
pub struct DeviceDescription {
pub samplic: samplic::DeviceDescription,
}
#[derive(Clone, Debug)]
pub struct Device {
pub description: DeviceDescription,
pub calibrations: IndexMap<String, CalibrationDescription>,
pub system_profiles: IndexMap<Uuid, samplic::ProfileDescription>,
pub user_profiles: IndexMap<Uuid, samplic::ProfileDescription>,
pub settings: Option<ommui::DeviceSettings>,
pub samplings: IndexMap<String, Sampling>,
pub icons: IndexMap<String, String>,
pub units: IndexMap<String, samplic::UnitDescription>,
pub translations: IndexMap<String, IndexMap<String, String>>,
}
#[derive(Clone, Debug)]
pub struct Sampling {
pub arnalisa: arnalisa::Sampling,
pub arnalisamplic: arnalisamplic::Sampling,
pub ommui: ommui::Sampling,
pub samplic: samplic::Sampling,
pub xio: xio::Sampling,
}