Skip to content

Commit f122517

Browse files
committed
Add DocumentMode groundwork with MaskMode and Q toggle
1 parent 211b911 commit f122517

File tree

4 files changed

+32
-9
lines changed

4 files changed

+32
-9
lines changed

editor/src/messages/input_mapper/input_mappings.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ pub fn input_mappings(zoom_with_scroll: bool) -> Mapping {
339339
//
340340
// DocumentMessage
341341
entry!(KeyDown(Space); modifiers=[Control], action_dispatch=DocumentMessage::GraphViewOverlayToggle),
342+
entry!(KeyDown(KeyQ); action_dispatch=DocumentMessage::ToggleDocumentMode),
342343
entry!(KeyDownNoRepeat(Escape); action_dispatch=DocumentMessage::Escape),
343344
entry!(KeyDown(Delete); action_dispatch=DocumentMessage::DeleteSelectedLayers),
344345
entry!(KeyDown(Backspace); action_dispatch=DocumentMessage::DeleteSelectedLayers),

editor/src/messages/portfolio/document/document_message.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::messages::input_mapper::utility_types::input_keyboard::Key;
66
use crate::messages::portfolio::document::data_panel::DataPanelMessage;
77
use crate::messages::portfolio::document::overlays::utility_types::{OverlayContext, OverlaysType};
88
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
9-
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, FlipAxis, GridSnapping};
9+
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, DocumentMode, FlipAxis, GridSnapping};
1010
use crate::messages::portfolio::utility_types::PanelType;
1111
use crate::messages::prelude::*;
1212
use glam::{DAffine2, IVec2};
@@ -187,6 +187,10 @@ pub enum DocumentMessage {
187187
SetRenderMode {
188188
render_mode: RenderMode,
189189
},
190+
ToggleDocumentMode,
191+
SetDocumentMode {
192+
document_mode: DocumentMode,
193+
},
190194
AddTransaction,
191195
StartTransaction,
192196
EndTransaction,

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::messages::portfolio::document::overlays::grid_overlays::{grid_overlay
1818
use crate::messages::portfolio::document::overlays::utility_types::{OverlaysType, OverlaysVisibilitySettings, Pivot};
1919
use crate::messages::portfolio::document::properties_panel::properties_panel_message_handler::PropertiesPanelMessageContext;
2020
use crate::messages::portfolio::document::utility_types::document_metadata::{DocumentMetadata, LayerNodeIdentifier};
21-
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, FlipAxis, PTZ};
21+
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, DocumentMode, FlipAxis, PTZ};
2222
use crate::messages::portfolio::document::utility_types::network_interface::{FlowType, InputConnector, NodeTemplate};
2323
use crate::messages::portfolio::utility_types::{PanelType, PersistentData};
2424
use crate::messages::prelude::*;
@@ -115,6 +115,9 @@ pub struct DocumentMessageHandler {
115115
/// The name of the document, which is displayed in the tab and title bar of the editor.
116116
#[serde(skip)]
117117
pub name: String,
118+
/// The current editor-only mode for the active document.
119+
#[serde(skip)]
120+
pub document_mode: DocumentMode,
118121
/// The path of the to the document file.
119122
#[serde(skip)]
120123
pub(crate) path: Option<PathBuf>,
@@ -173,6 +176,7 @@ impl Default for DocumentMessageHandler {
173176
// Fields omitted from the saved document format
174177
// =============================================
175178
name: DEFAULT_DOCUMENT_NAME.to_string(),
179+
document_mode: DocumentMode::default(),
176180
path: None,
177181
breadcrumb_network_path: Vec::new(),
178182
selection_network_path: Vec::new(),
@@ -1108,6 +1112,15 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
11081112
self.render_mode = render_mode;
11091113
responses.add_front(NodeGraphMessage::RunDocumentGraph);
11101114
}
1115+
DocumentMessage::ToggleDocumentMode => {
1116+
self.document_mode = match self.document_mode {
1117+
DocumentMode::MaskMode => DocumentMode::DesignMode,
1118+
_ => DocumentMode::MaskMode,
1119+
};
1120+
}
1121+
DocumentMessage::SetDocumentMode { document_mode } => {
1122+
self.document_mode = document_mode;
1123+
}
11111124
DocumentMessage::AddTransaction => {
11121125
// Reverse order since they are added to the front
11131126
responses.add_front(DocumentMessage::CommitTransaction);
@@ -1463,6 +1476,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
14631476
SaveDocument,
14641477
SelectAllLayers,
14651478
SetSnapping,
1479+
ToggleDocumentMode,
1480+
SetDocumentMode,
14661481
ToggleGridVisibility,
14671482
ToggleOverlaysVisibility,
14681483
ToggleSnapping,

editor/src/messages/portfolio/document/utility_types/misc.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,23 @@ pub enum AlignAggregate {
2828
Center,
2929
}
3030

31-
// #[derive(Default, PartialEq, Eq, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
32-
// pub enum DocumentMode {
33-
// #[default]
34-
// DesignMode,
35-
// SelectMode,
36-
// GuideMode,
37-
// }
31+
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
32+
#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
33+
pub enum DocumentMode {
34+
#[default]
35+
DesignMode,
36+
SelectMode,
37+
GuideMode,
38+
MaskMode,
39+
}
3840

3941
// impl fmt::Display for DocumentMode {
4042
// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4143
// match self {
4244
// DocumentMode::DesignMode => write!(f, "Design Mode"),
4345
// DocumentMode::SelectMode => write!(f, "Select Mode"),
4446
// DocumentMode::GuideMode => write!(f, "Guide Mode"),
47+
// DocumentMode::MaskMode => write!(f, "Mask Mode"),
4548
// }
4649
// }
4750
// }

0 commit comments

Comments
 (0)