mxl_player_components/
actions.rs1use const_format;
2
3pub enum Accelerators {
4 Quit,
5 FileChooser,
6 TogglePlaylistVisibility,
7 TogglePlayPause,
8 NextFrame,
9 Previous,
10 Next,
11 IncreaseVolume,
12 DecreaseVolume,
13 IncreaseSpeed,
14 DecreaseSpeed,
15 ResetSpeed,
16 FullScreen,
17 DumpPipeline,
18 OpenProcDir,
19 Preferences,
20 VideoOffsets,
21}
22
23#[macro_export]
24#[cfg(target_os = "macos")]
25macro_rules! action_accelerator_with_os_modifier {
26 ($accelerator:expr) => {
27 const_format::formatcp!("<Meta>{}", $accelerator)
28 };
29}
30
31#[macro_export]
32#[cfg(not(target_os = "macos"))]
33macro_rules! action_accelerator_with_os_modifier {
34 ($accelerator:expr) => {
35 const_format::formatcp!("<Primary>{}", $accelerator)
36 };
37}
38
39pub fn accelerators(accel: Accelerators) -> Vec<&'static str> {
48 match accel {
49 Accelerators::Quit => vec![action_accelerator_with_os_modifier!("Q")],
50 Accelerators::FileChooser => vec![action_accelerator_with_os_modifier!("O")],
51 Accelerators::TogglePlaylistVisibility => vec![action_accelerator_with_os_modifier!("B")],
52 Accelerators::TogglePlayPause => vec!["space", "AudioPlay", action_accelerator_with_os_modifier!("space")],
53 Accelerators::NextFrame => vec![action_accelerator_with_os_modifier!("<Alt>Right")],
54 Accelerators::Previous => vec![action_accelerator_with_os_modifier!("Left"), "AudioPrev"],
55 Accelerators::Next => vec![action_accelerator_with_os_modifier!("Right"), "AudioNext"],
56 Accelerators::IncreaseVolume => vec![action_accelerator_with_os_modifier!("Up")],
57 Accelerators::DecreaseVolume => vec![action_accelerator_with_os_modifier!("Down")],
58 Accelerators::IncreaseSpeed => vec![
59 action_accelerator_with_os_modifier!("plus"),
60 action_accelerator_with_os_modifier!("KP_Add"),
61 ],
62 Accelerators::DecreaseSpeed => vec![
63 action_accelerator_with_os_modifier!("minus"),
64 action_accelerator_with_os_modifier!("KP_Subtract"),
65 ],
66 Accelerators::ResetSpeed => vec![
67 action_accelerator_with_os_modifier!("0"),
68 action_accelerator_with_os_modifier!("KP_0"),
69 ],
70 Accelerators::FullScreen => vec![action_accelerator_with_os_modifier!("F")],
71 Accelerators::DumpPipeline => vec![action_accelerator_with_os_modifier!("<Alt>D")],
72 Accelerators::OpenProcDir => vec![action_accelerator_with_os_modifier!("D")],
73 Accelerators::Preferences => vec![action_accelerator_with_os_modifier!("comma")],
74 Accelerators::VideoOffsets => vec![action_accelerator_with_os_modifier!("T")],
75 }
76}