use crate::{CommandId, ReaperStringArg};
use reaper_low::raw;
use reaper_low::raw::gaccel_register_t;
use std::borrow::Cow;
use std::ffi::CStr;
use std::os::raw::c_ushort;
#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct MediumGaccelRegister {
owned_desc: Cow<'static, CStr>,
inner: gaccel_register_t,
}
impl MediumGaccelRegister {
pub fn without_key_binding(
cmd: CommandId,
desc: impl Into<ReaperStringArg<'static>>,
) -> MediumGaccelRegister {
let desc = desc.into().into_inner();
let desc_ptr = desc.as_ptr();
MediumGaccelRegister {
owned_desc: desc,
inner: raw::gaccel_register_t {
accel: raw::ACCEL {
fVirt: 0,
key: 0,
cmd: cmd.get() as c_ushort,
},
desc: desc_ptr,
},
}
}
}
impl AsRef<raw::gaccel_register_t> for MediumGaccelRegister {
fn as_ref(&self) -> &gaccel_register_t {
&self.inner
}
}