use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Default)]
pub enum NodeGraphConnectionMode {
#[default]
Strict,
Loose,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Default)]
pub enum NodeGraphDragHandleMode {
#[default]
Any,
Header,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Default)]
pub enum NodeGraphModifierKey {
None,
#[default]
CtrlOrMeta,
Shift,
Alt,
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct NodeGraphModifiers {
pub shift: bool,
pub ctrl: bool,
pub alt: bool,
pub alt_gr: bool,
pub meta: bool,
}
impl NodeGraphModifierKey {
pub fn is_pressed(self, modifiers: NodeGraphModifiers) -> bool {
match self {
Self::None => true,
Self::CtrlOrMeta => modifiers.ctrl || modifiers.meta,
Self::Shift => modifiers.shift,
Self::Alt => modifiers.alt || modifiers.alt_gr,
}
}
}