Skip to content

Commit 72a4f3f

Browse files
committed
Rename guide to guide line per review: GuideLinesMessageHandler, GuideLine, GuideLinesMessage, remove default_guides_visible
1 parent e5a8e7c commit 72a4f3f

File tree

17 files changed

+218
-209
lines changed

17 files changed

+218
-209
lines changed

editor/src/dispatcher.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ impl Dispatcher {
253253
menu_bar_message_handler.canvas_tilted = document.document_ptz.tilt() != 0.;
254254
menu_bar_message_handler.canvas_flipped = document.document_ptz.flip;
255255
menu_bar_message_handler.rulers_visible = document.rulers_visible;
256-
menu_bar_message_handler.guides_visible = document.guide_handler.guides_visible;
256+
menu_bar_message_handler.guide_lines_visible = document.guide_lines_message_handler.guide_lines_visible;
257257
menu_bar_message_handler.node_graph_open = document.is_graph_overlay_open();
258258
menu_bar_message_handler.has_selected_nodes = selected_nodes.selected_nodes().next().is_some();
259259
menu_bar_message_handler.has_selected_layers = selected_nodes.selected_visible_layers(&document.network_interface).next().is_some();
@@ -264,7 +264,7 @@ impl Dispatcher {
264264
menu_bar_message_handler.canvas_tilted = false;
265265
menu_bar_message_handler.canvas_flipped = false;
266266
menu_bar_message_handler.rulers_visible = false;
267-
menu_bar_message_handler.guides_visible = false;
267+
menu_bar_message_handler.guide_lines_visible = false;
268268
menu_bar_message_handler.node_graph_open = false;
269269
menu_bar_message_handler.has_selected_nodes = false;
270270
menu_bar_message_handler.has_selected_layers = false;

editor/src/messages/menu_bar/menu_bar_message_handler.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::messages::debug::utility_types::MessageLoggingVerbosity;
22
use crate::messages::input_mapper::utility_types::macros::action_shortcut;
33
use crate::messages::layout::utility_types::widget_prelude::*;
4-
use crate::messages::portfolio::document::guide_message::GuideMessage;
4+
use crate::messages::portfolio::document::guide_lines_message::GuideLinesMessage;
55
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, FlipAxis, GroupFolderType};
66
use crate::messages::prelude::*;
77
use graphene_std::path_bool::BooleanOperation;
@@ -12,7 +12,7 @@ pub struct MenuBarMessageHandler {
1212
pub canvas_tilted: bool,
1313
pub canvas_flipped: bool,
1414
pub rulers_visible: bool,
15-
pub guides_visible: bool,
15+
pub guide_lines_visible: bool,
1616
pub node_graph_open: bool,
1717
pub has_selected_nodes: bool,
1818
pub has_selected_layers: bool,
@@ -620,8 +620,8 @@ impl LayoutHolder for MenuBarMessageHandler {
620620
.disabled(no_active_document),
621621
MenuListEntry::new("Guides")
622622
.label("Guides")
623-
.icon(if self.guides_visible { "CheckboxChecked" } else { "CheckboxUnchecked" })
624-
.on_commit(|_| GuideMessage::ToggleGuidesVisibility.into())
623+
.icon(if self.guide_lines_visible { "CheckboxChecked" } else { "CheckboxUnchecked" })
624+
.on_commit(|_| GuideLinesMessage::ToggleGuideLinesVisibility.into())
625625
.disabled(no_active_document),
626626
],
627627
])

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::sync::Arc;
44
use super::utility_types::misc::{GroupFolderType, SnappingState};
55
use crate::messages::input_mapper::utility_types::input_keyboard::Key;
66
use crate::messages::portfolio::document::data_panel::DataPanelMessage;
7-
use crate::messages::portfolio::document::guide_message::GuideMessage;
7+
use crate::messages::portfolio::document::guide_lines_message::GuideLinesMessage;
88
use crate::messages::portfolio::document::overlays::utility_types::{OverlayContext, OverlaysType};
99
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
1010
use crate::messages::portfolio::document::utility_types::misc::{AlignAggregate, AlignAxis, FlipAxis, GridSnapping};
@@ -39,7 +39,7 @@ pub enum DocumentMessage {
3939
#[child]
4040
DataPanel(DataPanelMessage),
4141
#[child]
42-
Guide(GuideMessage),
42+
GuideLines(GuideLinesMessage),
4343

4444
// Messages
4545
AlignSelectedLayers {

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::messages::input_mapper::utility_types::macros::action_shortcut;
1010
use crate::messages::layout::utility_types::widget_prelude::*;
1111
use crate::messages::portfolio::document::data_panel::{DataPanelMessageContext, DataPanelMessageHandler};
1212
use crate::messages::portfolio::document::graph_operation::utility_types::TransformIn;
13-
use crate::messages::portfolio::document::guide_message_handler::{GuideMessageContext, GuideMessageHandler};
13+
use crate::messages::portfolio::document::guide_lines_message_handler::{GuideLinesMessageContext, GuideLinesMessageHandler};
1414
use crate::messages::portfolio::document::node_graph::NodeGraphMessageContext;
1515
use crate::messages::portfolio::document::node_graph::document_node_definitions::DefinitionIdentifier;
1616
use crate::messages::portfolio::document::node_graph::utility_types::FrontendGraphDataType;
@@ -78,7 +78,7 @@ pub struct DocumentMessageHandler {
7878
#[serde(skip)]
7979
pub data_panel_message_handler: DataPanelMessageHandler,
8080
#[serde(flatten)]
81-
pub guide_handler: GuideMessageHandler,
81+
pub guide_lines_message_handler: GuideLinesMessageHandler,
8282

8383
// ============================================
8484
// Fields that are saved in the document format
@@ -157,7 +157,7 @@ impl Default for DocumentMessageHandler {
157157
overlays_message_handler: OverlaysMessageHandler::default(),
158158
properties_panel_message_handler: PropertiesPanelMessageHandler::default(),
159159
data_panel_message_handler: DataPanelMessageHandler::default(),
160-
guide_handler: GuideMessageHandler::default(),
160+
guide_lines_message_handler: GuideLinesMessageHandler::default(),
161161
// ============================================
162162
// Fields that are saved in the document format
163163
// ============================================
@@ -220,13 +220,13 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
220220

221221
self.navigation_handler.process_message(message, responses, context);
222222
}
223-
DocumentMessage::Guide(message) => {
224-
let context = GuideMessageContext {
223+
DocumentMessage::GuideLines(message) => {
224+
let context = GuideLinesMessageContext {
225225
navigation_handler: &self.navigation_handler,
226226
document_ptz: &self.document_ptz,
227227
viewport,
228228
};
229-
self.guide_handler.process_message(message, responses, context);
229+
self.guide_lines_message_handler.process_message(message, responses, context);
230230
}
231231
DocumentMessage::Overlays(message) => {
232232
let visibility_settings = self.overlays_visibility_settings;
@@ -1447,7 +1447,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
14471447
ZoomCanvasTo200Percent,
14481448
ZoomCanvasToFitAll,
14491449
);
1450-
common.extend(self.guide_handler.actions());
1450+
common.extend(self.guide_lines_message_handler.actions());
14511451

14521452
// Additional actions available on desktop
14531453
#[cfg(not(target_family = "wasm"))]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
2+
use crate::messages::portfolio::document::utility_types::guide_line::{GuideLineDirection, GuideLineId};
3+
use crate::messages::prelude::*;
4+
5+
#[impl_message(Message, DocumentMessage, GuideLines)]
6+
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
7+
pub enum GuideLinesMessage {
8+
CreateGuideLine {
9+
id: GuideLineId,
10+
direction: GuideLineDirection,
11+
mouse_x: f64,
12+
mouse_y: f64,
13+
},
14+
MoveGuideLine {
15+
id: GuideLineId,
16+
mouse_x: f64,
17+
mouse_y: f64,
18+
},
19+
DeleteGuideLine {
20+
id: GuideLineId,
21+
},
22+
GuideLineOverlays {
23+
context: OverlayContext,
24+
},
25+
ToggleGuideLinesVisibility,
26+
SetHoveredGuideLine {
27+
id: Option<GuideLineId>,
28+
},
29+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
use super::utility_types::guide_line::{GuideLine, GuideLineDirection, GuideLineId};
2+
use crate::messages::portfolio::document::guide_lines_message::{GuideLinesMessage, GuideLinesMessageDiscriminant};
3+
use crate::messages::portfolio::document::overlays::guide_line_overlays::guide_line_overlay;
4+
use crate::messages::portfolio::document::utility_types::misc::PTZ;
5+
use crate::messages::prelude::*;
6+
use glam::DVec2;
7+
8+
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, ExtractField)]
9+
#[serde(default)]
10+
pub struct GuideLinesMessageHandler {
11+
pub guide_lines: Vec<GuideLine>,
12+
pub guide_lines_visible: bool,
13+
#[serde(skip)]
14+
pub hovered_guide_line_id: Option<GuideLineId>,
15+
}
16+
17+
impl Default for GuideLinesMessageHandler {
18+
fn default() -> Self {
19+
Self {
20+
guide_lines: Vec::new(),
21+
guide_lines_visible: true,
22+
hovered_guide_line_id: None,
23+
}
24+
}
25+
}
26+
27+
#[derive(ExtractField)]
28+
pub struct GuideLinesMessageContext<'a> {
29+
pub navigation_handler: &'a NavigationMessageHandler,
30+
pub document_ptz: &'a PTZ,
31+
pub viewport: &'a ViewportMessageHandler,
32+
}
33+
34+
#[message_handler_data]
35+
impl MessageHandler<GuideLinesMessage, GuideLinesMessageContext<'_>> for GuideLinesMessageHandler {
36+
fn actions(&self) -> ActionList {
37+
actions!(GuideLinesMessageDiscriminant; ToggleGuideLinesVisibility)
38+
}
39+
40+
fn process_message(&mut self, message: GuideLinesMessage, responses: &mut VecDeque<Message>, context: GuideLinesMessageContext) {
41+
let GuideLinesMessageContext {
42+
navigation_handler,
43+
document_ptz,
44+
viewport,
45+
} = context;
46+
47+
let viewport_to_document_point = |mouse_x: f64, mouse_y: f64| -> DVec2 {
48+
let document_to_viewport = navigation_handler.calculate_offset_transform(viewport.center_in_viewport_space().into(), document_ptz);
49+
document_to_viewport.inverse().transform_point2(DVec2::new(mouse_x, mouse_y))
50+
};
51+
52+
match message {
53+
GuideLinesMessage::CreateGuideLine { id, direction, mouse_x, mouse_y } => {
54+
let document_point = viewport_to_document_point(mouse_x, mouse_y);
55+
56+
let document_position = match direction {
57+
GuideLineDirection::Horizontal => document_point.y,
58+
GuideLineDirection::Vertical => document_point.x,
59+
};
60+
61+
let guide = GuideLine::with_id(id, direction, document_position);
62+
self.guide_lines.push(guide);
63+
responses.add(OverlaysMessage::Draw);
64+
responses.add(PortfolioMessage::UpdateDocumentWidgets);
65+
}
66+
GuideLinesMessage::MoveGuideLine { id, mouse_x, mouse_y } => {
67+
let document_point = viewport_to_document_point(mouse_x, mouse_y);
68+
69+
if let Some(guide) = self.guide_lines.iter_mut().find(|guide| guide.id == id) {
70+
guide.position = match guide.direction {
71+
GuideLineDirection::Horizontal => document_point.y,
72+
GuideLineDirection::Vertical => document_point.x,
73+
};
74+
}
75+
responses.add(OverlaysMessage::Draw);
76+
}
77+
GuideLinesMessage::DeleteGuideLine { id } => {
78+
self.guide_lines.retain(|g| g.id != id);
79+
responses.add(OverlaysMessage::Draw);
80+
responses.add(PortfolioMessage::UpdateDocumentWidgets);
81+
}
82+
GuideLinesMessage::GuideLineOverlays { context: mut overlay_context } => {
83+
if self.guide_lines_visible {
84+
let document_to_viewport = navigation_handler.calculate_offset_transform(overlay_context.viewport.center_in_viewport_space().into(), document_ptz);
85+
guide_line_overlay(self, &mut overlay_context, document_to_viewport);
86+
}
87+
}
88+
GuideLinesMessage::ToggleGuideLinesVisibility => {
89+
self.guide_lines_visible = !self.guide_lines_visible;
90+
responses.add(OverlaysMessage::Draw);
91+
responses.add(PortfolioMessage::UpdateDocumentWidgets);
92+
responses.add(MenuBarMessage::SendLayout);
93+
}
94+
GuideLinesMessage::SetHoveredGuideLine { id } => {
95+
if self.hovered_guide_line_id != id {
96+
self.hovered_guide_line_id = id;
97+
responses.add(OverlaysMessage::Draw);
98+
}
99+
}
100+
}
101+
}
102+
}

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

Lines changed: 0 additions & 14 deletions
This file was deleted.

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

Lines changed: 0 additions & 108 deletions
This file was deleted.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ mod document_message_handler;
33

44
pub mod data_panel;
55
pub mod graph_operation;
6-
pub mod guide_message;
7-
pub mod guide_message_handler;
6+
pub mod guide_lines_message;
7+
pub mod guide_lines_message_handler;
88
pub mod navigation;
99
pub mod node_graph;
1010
pub mod overlays;

0 commit comments

Comments
 (0)