jellyflow_core/interaction/
mod.rs1use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
12#[serde(rename_all = "snake_case")]
13#[derive(Default)]
14pub enum NodeGraphConnectionMode {
15 #[default]
16 Strict,
17 Loose,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
22#[serde(rename_all = "snake_case")]
23#[derive(Default)]
24pub enum NodeGraphDragHandleMode {
25 #[default]
27 Any,
28 Header,
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
37#[serde(rename_all = "snake_case")]
38#[derive(Default)]
39pub enum NodeGraphModifierKey {
40 None,
42 #[default]
44 CtrlOrMeta,
45 Shift,
47 Alt,
49}
50
51#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
53pub struct NodeGraphModifiers {
54 pub shift: bool,
55 pub ctrl: bool,
56 pub alt: bool,
57 pub alt_gr: bool,
58 pub meta: bool,
59}
60
61impl NodeGraphModifierKey {
62 pub fn is_pressed(self, modifiers: NodeGraphModifiers) -> bool {
63 match self {
64 Self::None => true,
65 Self::CtrlOrMeta => modifiers.ctrl || modifiers.meta,
66 Self::Shift => modifiers.shift,
67 Self::Alt => modifiers.alt || modifiers.alt_gr,
68 }
69 }
70}