1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
}
}