|
use super::utility_types::misc::{GroupFolderType, SnappingState}; |
|
use crate::messages::input_mapper::utility_types::input_keyboard::Key; |
|
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext; |
|
use crate::messages::portfolio::document::overlays::utility_types::OverlaysType; |
|
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier; |
|
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, FlipAxis, GridSnapping}; |
|
use crate::messages::portfolio::utility_types::PanelType; |
|
use crate::messages::prelude::*; |
|
use glam::DAffine2; |
|
use graph_craft::document::NodeId; |
|
use graphene_std::Color; |
|
use graphene_std::raster::BlendMode; |
|
use graphene_std::raster::Image; |
|
use graphene_std::transform::Footprint; |
|
use graphene_std::vector::click_target::ClickTarget; |
|
use graphene_std::vector::style::ViewMode; |
|
|
|
#[impl_message(Message, PortfolioMessage, Document)] |
|
#[derive(derivative::Derivative, Clone, serde::Serialize, serde::Deserialize)] |
|
#[derivative(Debug, PartialEq)] |
|
pub enum DocumentMessage { |
|
Noop, |
|
|
|
#[child] |
|
GraphOperation(GraphOperationMessage), |
|
#[child] |
|
Navigation(NavigationMessage), |
|
#[child] |
|
NodeGraph(NodeGraphMessage), |
|
#[child] |
|
Overlays(OverlaysMessage), |
|
#[child] |
|
PropertiesPanel(PropertiesPanelMessage), |
|
|
|
|
|
AlignSelectedLayers { |
|
axis: AlignAxis, |
|
aggregate: AlignAggregate, |
|
}, |
|
RemoveArtboards, |
|
ClearLayersPanel, |
|
CreateEmptyFolder, |
|
DeleteNode { |
|
node_id: NodeId, |
|
}, |
|
DeleteSelectedLayers, |
|
DeselectAllLayers, |
|
DocumentHistoryBackward, |
|
DocumentHistoryForward, |
|
DocumentStructureChanged, |
|
DrawArtboardOverlays(OverlayContext), |
|
DuplicateSelectedLayers, |
|
EnterNestedNetwork { |
|
node_id: NodeId, |
|
}, |
|
Escape, |
|
ExitNestedNetwork { |
|
steps_back: usize, |
|
}, |
|
FlipSelectedLayers { |
|
flip_axis: FlipAxis, |
|
}, |
|
RotateSelectedLayers { |
|
degrees: f64, |
|
}, |
|
GraphViewOverlay { |
|
open: bool, |
|
}, |
|
GraphViewOverlayToggle, |
|
GridOptions(GridSnapping), |
|
GridOverlays(OverlayContext), |
|
GridVisibility(bool), |
|
GroupSelectedLayers { |
|
group_folder_type: GroupFolderType, |
|
}, |
|
MoveSelectedLayersTo { |
|
parent: LayerNodeIdentifier, |
|
insert_index: usize, |
|
}, |
|
MoveSelectedLayersToGroup { |
|
parent: LayerNodeIdentifier, |
|
}, |
|
NudgeSelectedLayers { |
|
delta_x: f64, |
|
delta_y: f64, |
|
resize: Key, |
|
resize_opposite_corner: Key, |
|
}, |
|
PasteImage { |
|
name: Option<String>, |
|
image: Image<Color>, |
|
mouse: Option<(f64, f64)>, |
|
parent_and_insert_index: Option<(LayerNodeIdentifier, usize)>, |
|
}, |
|
PasteSvg { |
|
name: Option<String>, |
|
svg: String, |
|
mouse: Option<(f64, f64)>, |
|
parent_and_insert_index: Option<(LayerNodeIdentifier, usize)>, |
|
}, |
|
Redo, |
|
RenameDocument { |
|
new_name: String, |
|
}, |
|
RenderRulers, |
|
RenderScrollbars, |
|
SaveDocument, |
|
SelectParentLayer, |
|
SelectAllLayers, |
|
SelectedLayersLower, |
|
SelectedLayersLowerToBack, |
|
SelectedLayersRaise, |
|
SelectedLayersRaiseToFront, |
|
SelectedLayersReverse, |
|
SelectedLayersReorder { |
|
relative_index_offset: isize, |
|
}, |
|
ClipLayer { |
|
id: NodeId, |
|
}, |
|
SelectLayer { |
|
id: NodeId, |
|
ctrl: bool, |
|
shift: bool, |
|
}, |
|
SetActivePanel { |
|
active_panel: PanelType, |
|
}, |
|
SetBlendModeForSelectedLayers { |
|
blend_mode: BlendMode, |
|
}, |
|
SetGraphFadeArtwork { |
|
percentage: f64, |
|
}, |
|
SetNodePinned { |
|
node_id: NodeId, |
|
pinned: bool, |
|
}, |
|
SetOpacityForSelectedLayers { |
|
opacity: f64, |
|
}, |
|
SetFillForSelectedLayers { |
|
fill: f64, |
|
}, |
|
SetOverlaysVisibility { |
|
visible: bool, |
|
overlays_type: Option<OverlaysType>, |
|
}, |
|
SetRangeSelectionLayer { |
|
new_layer: Option<LayerNodeIdentifier>, |
|
}, |
|
SetSnapping { |
|
#[serde(skip)] |
|
#[derivative(Debug = "ignore", PartialEq = "ignore")] |
|
closure: Option<for<'a> fn(&'a mut SnappingState) -> &'a mut bool>, |
|
snapping_state: bool, |
|
}, |
|
SetToNodeOrLayer { |
|
node_id: NodeId, |
|
is_layer: bool, |
|
}, |
|
SetViewMode { |
|
view_mode: ViewMode, |
|
}, |
|
AddTransaction, |
|
StartTransaction, |
|
EndTransaction, |
|
CommitTransaction, |
|
AbortTransaction, |
|
RepeatedAbortTransaction { |
|
undo_count: usize, |
|
}, |
|
ToggleLayerExpansion { |
|
id: NodeId, |
|
recursive: bool, |
|
}, |
|
ToggleSelectedVisibility, |
|
ToggleSelectedLocked, |
|
ToggleGridVisibility, |
|
ToggleOverlaysVisibility, |
|
ToggleSnapping, |
|
UpdateUpstreamTransforms { |
|
upstream_footprints: HashMap<NodeId, Footprint>, |
|
local_transforms: HashMap<NodeId, DAffine2>, |
|
}, |
|
UpdateClickTargets { |
|
click_targets: HashMap<NodeId, Vec<ClickTarget>>, |
|
}, |
|
UpdateClipTargets { |
|
clip_targets: HashSet<NodeId>, |
|
}, |
|
Undo, |
|
UngroupSelectedLayers, |
|
UngroupLayer { |
|
layer: LayerNodeIdentifier, |
|
}, |
|
PTZUpdate, |
|
SelectionStepBack, |
|
SelectionStepForward, |
|
WrapContentInArtboard { |
|
place_artboard_at_origin: bool, |
|
}, |
|
ZoomCanvasTo100Percent, |
|
ZoomCanvasTo200Percent, |
|
ZoomCanvasToFitAll, |
|
} |
|
|