diff --git a/editor/src/messages/tool/tool_messages/artboard_tool.rs b/editor/src/messages/tool/tool_messages/artboard_tool.rs index 810cb4636f..5a7f43d996 100644 --- a/editor/src/messages/tool/tool_messages/artboard_tool.rs +++ b/editor/src/messages/tool/tool_messages/artboard_tool.rs @@ -14,7 +14,7 @@ use graph_craft::document::NodeId; use graphene_std::renderer::Quad; #[derive(Default, ExtractField)] -pub struct ArtboardTool { +pub struct ArtboardToolMessageHandler { fsm_state: ArtboardToolFsmState, data: ArtboardToolData, } @@ -36,7 +36,7 @@ pub enum ArtboardToolMessage { PointerUp, } -impl ToolMetadata for ArtboardTool { +impl ToolMetadata for ArtboardToolMessageHandler { fn icon_name(&self) -> String { "GeneralArtboardTool".into() } @@ -49,7 +49,7 @@ impl ToolMetadata for ArtboardTool { } #[message_handler_data] -impl<'a> MessageHandler> for ArtboardTool { +impl<'a> MessageHandler> for ArtboardToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { self.fsm_state.process_event(message, &mut self.data, context, &(), responses, false); } @@ -71,13 +71,13 @@ impl<'a> MessageHandler> for Artb } } -impl LayoutHolder for ArtboardTool { +impl LayoutHolder for ArtboardToolMessageHandler { fn layout(&self) -> Layout { Layout::WidgetLayout(WidgetLayout::default()) } } -impl ToolTransition for ArtboardTool { +impl ToolTransition for ArtboardToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(ArtboardToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/brush_tool.rs b/editor/src/messages/tool/tool_messages/brush_tool.rs index 202d026e0b..67047cf473 100644 --- a/editor/src/messages/tool/tool_messages/brush_tool.rs +++ b/editor/src/messages/tool/tool_messages/brush_tool.rs @@ -21,7 +21,7 @@ pub enum DrawMode { } #[derive(Default, ExtractField)] -pub struct BrushTool { +pub struct BrushToolMessageHandler { fsm_state: BrushToolFsmState, data: BrushToolData, options: BrushOptions, @@ -89,7 +89,7 @@ enum BrushToolFsmState { Drawing, } -impl ToolMetadata for BrushTool { +impl ToolMetadata for BrushToolMessageHandler { fn icon_name(&self) -> String { "RasterBrushTool".into() } @@ -101,7 +101,7 @@ impl ToolMetadata for BrushTool { } } -impl LayoutHolder for BrushTool { +impl LayoutHolder for BrushToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = vec![ NumberInput::new(Some(self.options.diameter)) @@ -186,7 +186,7 @@ impl LayoutHolder for BrushTool { } #[message_handler_data] -impl<'a> MessageHandler> for BrushTool { +impl<'a> MessageHandler> for BrushToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Brush(BrushToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.data, context, &self.options, responses, true); @@ -243,7 +243,7 @@ impl<'a> MessageHandler> for Brus } } -impl ToolTransition for BrushTool { +impl ToolTransition for BrushToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(BrushToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/eyedropper_tool.rs b/editor/src/messages/tool/tool_messages/eyedropper_tool.rs index d5a082cc21..cc91a9a1be 100644 --- a/editor/src/messages/tool/tool_messages/eyedropper_tool.rs +++ b/editor/src/messages/tool/tool_messages/eyedropper_tool.rs @@ -2,7 +2,7 @@ use super::tool_prelude::*; use crate::messages::tool::utility_types::DocumentToolData; #[derive(Default, ExtractField)] -pub struct EyedropperTool { +pub struct EyedropperToolMessageHandler { fsm_state: EyedropperToolFsmState, data: EyedropperToolData, } @@ -21,7 +21,7 @@ pub enum EyedropperToolMessage { SampleSecondaryColorEnd, } -impl ToolMetadata for EyedropperTool { +impl ToolMetadata for EyedropperToolMessageHandler { fn icon_name(&self) -> String { "GeneralEyedropperTool".into() } @@ -33,14 +33,14 @@ impl ToolMetadata for EyedropperTool { } } -impl LayoutHolder for EyedropperTool { +impl LayoutHolder for EyedropperToolMessageHandler { fn layout(&self) -> Layout { Layout::WidgetLayout(WidgetLayout::default()) } } #[message_handler_data] -impl<'a> MessageHandler> for EyedropperTool { +impl<'a> MessageHandler> for EyedropperToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { self.fsm_state.process_event(message, &mut self.data, context, &(), responses, true); } @@ -55,7 +55,7 @@ impl<'a> MessageHandler> for Eyed ); } -impl ToolTransition for EyedropperTool { +impl ToolTransition for EyedropperToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(EyedropperToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/fill_tool.rs b/editor/src/messages/tool/tool_messages/fill_tool.rs index 6a9429e3e9..009a561552 100644 --- a/editor/src/messages/tool/tool_messages/fill_tool.rs +++ b/editor/src/messages/tool/tool_messages/fill_tool.rs @@ -4,7 +4,7 @@ use crate::messages::tool::common_functionality::graph_modification_utils::NodeG use graphene_std::vector::style::Fill; #[derive(Default, ExtractField)] -pub struct FillTool { +pub struct FillToolMessageHandler { fsm_state: FillToolFsmState, } @@ -23,7 +23,7 @@ pub enum FillToolMessage { FillSecondaryColor, } -impl ToolMetadata for FillTool { +impl ToolMetadata for FillToolMessageHandler { fn icon_name(&self) -> String { "GeneralFillTool".into() } @@ -35,14 +35,14 @@ impl ToolMetadata for FillTool { } } -impl LayoutHolder for FillTool { +impl LayoutHolder for FillToolMessageHandler { fn layout(&self) -> Layout { Layout::WidgetLayout(WidgetLayout::default()) } } #[message_handler_data] -impl<'a> MessageHandler> for FillTool { +impl<'a> MessageHandler> for FillToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { self.fsm_state.process_event(message, &mut (), context, &(), responses, true); } @@ -62,7 +62,7 @@ impl<'a> MessageHandler> for Fill } } -impl ToolTransition for FillTool { +impl ToolTransition for FillToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(FillToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/freehand_tool.rs b/editor/src/messages/tool/tool_messages/freehand_tool.rs index 8b0dbb73f3..f65e88c525 100644 --- a/editor/src/messages/tool/tool_messages/freehand_tool.rs +++ b/editor/src/messages/tool/tool_messages/freehand_tool.rs @@ -14,7 +14,7 @@ use graphene_std::vector::VectorModificationType; use graphene_std::vector::{PointId, SegmentId}; #[derive(Default, ExtractField)] -pub struct FreehandTool { +pub struct FreehandToolMessageHandler { fsm_state: FreehandToolFsmState, data: FreehandToolData, options: FreehandOptions, @@ -68,7 +68,7 @@ enum FreehandToolFsmState { Drawing, } -impl ToolMetadata for FreehandTool { +impl ToolMetadata for FreehandToolMessageHandler { fn icon_name(&self) -> String { "VectorFreehandTool".into() } @@ -90,7 +90,7 @@ fn create_weight_widget(line_weight: f64) -> WidgetHolder { .widget_holder() } -impl LayoutHolder for FreehandTool { +impl LayoutHolder for FreehandToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = self.options.fill.create_widgets( "Fill", @@ -117,7 +117,7 @@ impl LayoutHolder for FreehandTool { } #[message_handler_data] -impl<'a> MessageHandler> for FreehandTool { +impl<'a> MessageHandler> for FreehandToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Freehand(FreehandToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.data, context, &self.options, responses, true); @@ -161,7 +161,7 @@ impl<'a> MessageHandler> for Free } } -impl ToolTransition for FreehandTool { +impl ToolTransition for FreehandToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { overlay_provider: Some(|overlay_context: OverlayContext| FreehandToolMessage::Overlays(overlay_context).into()), diff --git a/editor/src/messages/tool/tool_messages/gradient_tool.rs b/editor/src/messages/tool/tool_messages/gradient_tool.rs index de6d5753d8..011487e6bf 100644 --- a/editor/src/messages/tool/tool_messages/gradient_tool.rs +++ b/editor/src/messages/tool/tool_messages/gradient_tool.rs @@ -8,7 +8,7 @@ use crate::messages::tool::common_functionality::snapping::SnapManager; use graphene_std::vector::style::{Fill, Gradient, GradientType}; #[derive(Default, ExtractField)] -pub struct GradientTool { +pub struct GradientToolMessageHandler { fsm_state: GradientToolFsmState, data: GradientToolData, options: GradientOptions, @@ -41,7 +41,7 @@ pub enum GradientOptionsUpdate { Type(GradientType), } -impl ToolMetadata for GradientTool { +impl ToolMetadata for GradientToolMessageHandler { fn icon_name(&self) -> String { "GeneralGradientTool".into() } @@ -54,7 +54,7 @@ impl ToolMetadata for GradientTool { } #[message_handler_data] -impl<'a> MessageHandler> for GradientTool { +impl<'a> MessageHandler> for GradientToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Gradient(GradientToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.data, context, &self.options, responses, false); @@ -88,7 +88,7 @@ impl<'a> MessageHandler> for Grad ); } -impl LayoutHolder for GradientTool { +impl LayoutHolder for GradientToolMessageHandler { fn layout(&self) -> Layout { let gradient_type = RadioInput::new(vec![ RadioEntryData::new("Linear") @@ -214,14 +214,14 @@ impl SelectedGradient { } } -impl GradientTool { +impl GradientToolMessageHandler { /// Get the gradient type of the selected gradient (if it exists) pub fn selected_gradient(&self) -> Option { self.data.selected_gradient.as_ref().map(|selected| selected.gradient.gradient_type) } } -impl ToolTransition for GradientTool { +impl ToolTransition for GradientToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(GradientToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/navigate_tool.rs b/editor/src/messages/tool/tool_messages/navigate_tool.rs index 7bbec9d20d..221e606ac5 100644 --- a/editor/src/messages/tool/tool_messages/navigate_tool.rs +++ b/editor/src/messages/tool/tool_messages/navigate_tool.rs @@ -1,7 +1,7 @@ use super::tool_prelude::*; #[derive(Default, ExtractField)] -pub struct NavigateTool { +pub struct NavigateToolMessageHandler { fsm_state: NavigateToolFsmState, tool_data: NavigateToolData, } @@ -20,7 +20,7 @@ pub enum NavigateToolMessage { End, } -impl ToolMetadata for NavigateTool { +impl ToolMetadata for NavigateToolMessageHandler { fn icon_name(&self) -> String { "GeneralNavigateTool".into() } @@ -32,14 +32,14 @@ impl ToolMetadata for NavigateTool { } } -impl LayoutHolder for NavigateTool { +impl LayoutHolder for NavigateToolMessageHandler { fn layout(&self) -> Layout { Layout::WidgetLayout(WidgetLayout::default()) } } #[message_handler_data] -impl<'a> MessageHandler> for NavigateTool { +impl<'a> MessageHandler> for NavigateToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { self.fsm_state.process_event(message, &mut self.tool_data, context, &(), responses, true); } @@ -61,7 +61,7 @@ impl<'a> MessageHandler> for Navi } } -impl ToolTransition for NavigateTool { +impl ToolTransition for NavigateToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(NavigateToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/path_tool.rs b/editor/src/messages/tool/tool_messages/path_tool.rs index a8b10afaa9..ac1e4ec8aa 100644 --- a/editor/src/messages/tool/tool_messages/path_tool.rs +++ b/editor/src/messages/tool/tool_messages/path_tool.rs @@ -26,7 +26,7 @@ use graphene_std::vector::{ManipulatorPointId, PointId, VectorModificationType}; use std::vec; #[derive(Default, ExtractField)] -pub struct PathTool { +pub struct PathToolMessageHandler { fsm_state: PathToolFsmState, tool_data: PathToolData, options: PathToolOptions, @@ -152,7 +152,7 @@ pub enum PathOptionsUpdate { TogglePivotPinned, } -impl ToolMetadata for PathTool { +impl ToolMetadata for PathToolMessageHandler { fn icon_name(&self) -> String { "VectorPathTool".into() } @@ -164,7 +164,7 @@ impl ToolMetadata for PathTool { } } -impl LayoutHolder for PathTool { +impl LayoutHolder for PathToolMessageHandler { fn layout(&self) -> Layout { let coordinates = self.tool_data.selection_status.as_one().as_ref().map(|point| point.coordinates); let (x, y) = coordinates.map(|point| (Some(point.x), Some(point.y))).unwrap_or((None, None)); @@ -307,7 +307,7 @@ impl LayoutHolder for PathTool { } #[message_handler_data] -impl<'a> MessageHandler> for PathTool { +impl<'a> MessageHandler> for PathToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let updating_point = message == ToolMessage::Path(PathToolMessage::SelectedPointUpdated); @@ -421,7 +421,7 @@ impl<'a> MessageHandler> for Path } } -impl ToolTransition for PathTool { +impl ToolTransition for PathToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(PathToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/pen_tool.rs b/editor/src/messages/tool/tool_messages/pen_tool.rs index 215c90bdc4..1ad3cdac3e 100644 --- a/editor/src/messages/tool/tool_messages/pen_tool.rs +++ b/editor/src/messages/tool/tool_messages/pen_tool.rs @@ -18,7 +18,7 @@ use graphene_std::vector::{HandleId, ManipulatorPointId, NoHashBuilder, SegmentI use graphene_std::vector::{PointId, VectorModificationType}; #[derive(Default, ExtractField)] -pub struct PenTool { +pub struct PenToolMessageHandler { fsm_state: PenToolFsmState, tool_data: PenToolData, options: PenOptions, @@ -119,7 +119,7 @@ pub enum PenOptionsUpdate { OverlayModeType(PenOverlayMode), } -impl ToolMetadata for PenTool { +impl ToolMetadata for PenToolMessageHandler { fn icon_name(&self) -> String { "VectorPenTool".into() } @@ -141,7 +141,7 @@ fn create_weight_widget(line_weight: f64) -> WidgetHolder { .widget_holder() } -impl LayoutHolder for PenTool { +impl LayoutHolder for PenToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = self.options.fill.create_widgets( "Fill", @@ -187,7 +187,7 @@ impl LayoutHolder for PenTool { } #[message_handler_data] -impl<'a> MessageHandler> for PenTool { +impl<'a> MessageHandler> for PenToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Pen(PenToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.tool_data, context, &self.options, responses, true); @@ -246,7 +246,7 @@ impl<'a> MessageHandler> for PenT } } -impl ToolTransition for PenTool { +impl ToolTransition for PenToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(PenToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/select_tool.rs b/editor/src/messages/tool/tool_messages/select_tool.rs index f792ee2bb4..19434dba6c 100644 --- a/editor/src/messages/tool/tool_messages/select_tool.rs +++ b/editor/src/messages/tool/tool_messages/select_tool.rs @@ -30,7 +30,7 @@ use graphene_std::transform::ReferencePoint; use std::fmt; #[derive(Default, ExtractField)] -pub struct SelectTool { +pub struct SelectToolMessageHandler { fsm_state: SelectToolFsmState, tool_data: SelectToolData, } @@ -109,7 +109,7 @@ pub enum SelectToolMessage { }, } -impl ToolMetadata for SelectTool { +impl ToolMetadata for SelectToolMessageHandler { fn icon_name(&self) -> String { "GeneralSelectTool".into() } @@ -121,7 +121,7 @@ impl ToolMetadata for SelectTool { } } -impl SelectTool { +impl SelectToolMessageHandler { fn deep_selection_widget(&self) -> WidgetHolder { let layer_selection_behavior_entries = [NestedSelectionBehavior::Shallowest, NestedSelectionBehavior::Deepest] .iter() @@ -206,7 +206,7 @@ impl SelectTool { } } -impl LayoutHolder for SelectTool { +impl LayoutHolder for SelectToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = Vec::new(); @@ -273,7 +273,7 @@ impl LayoutHolder for SelectTool { } #[message_handler_data] -impl<'a> MessageHandler> for SelectTool { +impl<'a> MessageHandler> for SelectToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let mut redraw_reference_pivot = false; @@ -312,7 +312,7 @@ impl<'a> MessageHandler> for Sele self.fsm_state.process_event(message, &mut self.tool_data, context, &(), responses, false); if self.tool_data.pivot_gizmo.pivot.should_refresh_pivot_position() || self.tool_data.selected_layers_changed || redraw_reference_pivot { - // Send the layout containing the updated pivot position (a bit ugly to do it here not in the fsm but that doesn't have SelectTool) + // Send the layout containing the updated pivot position (a bit ugly to do it here not in the fsm but that doesn't have SelectToolMessageHandler) self.send_layout(responses, LayoutTarget::ToolOptions); self.tool_data.selected_layers_changed = false; } @@ -336,7 +336,7 @@ impl<'a> MessageHandler> for Sele } } -impl ToolTransition for SelectTool { +impl ToolTransition for SelectToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { tool_abort: Some(SelectToolMessage::Abort.into()), diff --git a/editor/src/messages/tool/tool_messages/shape_tool.rs b/editor/src/messages/tool/tool_messages/shape_tool.rs index 0f43adf286..76ce91afb8 100644 --- a/editor/src/messages/tool/tool_messages/shape_tool.rs +++ b/editor/src/messages/tool/tool_messages/shape_tool.rs @@ -25,8 +25,8 @@ use graphene_std::renderer::Quad; use graphene_std::vector::misc::ArcType; use std::vec; -#[derive(Default)] -pub struct ShapeTool { +#[derive(Default, ExtractField)] +pub struct ShapeToolMessageHandler { fsm_state: ShapeToolFsmState, tool_data: ShapeToolData, options: ShapeToolOptions, @@ -123,7 +123,7 @@ fn create_weight_widget(line_weight: f64) -> WidgetHolder { .widget_holder() } -impl LayoutHolder for ShapeTool { +impl LayoutHolder for ShapeToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = vec![]; @@ -163,7 +163,8 @@ impl LayoutHolder for ShapeTool { } } -impl<'a> MessageHandler> for ShapeTool { +#[message_handler_data] +impl<'a> MessageHandler> for ShapeToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Shape(ShapeToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.tool_data, context, &self.options, responses, true); @@ -242,7 +243,7 @@ impl<'a> MessageHandler> for Shap } } -impl ToolMetadata for ShapeTool { +impl ToolMetadata for ShapeToolMessageHandler { fn icon_name(&self) -> String { "VectorPolygonTool".into() } @@ -254,7 +255,7 @@ impl ToolMetadata for ShapeTool { } } -impl ToolTransition for ShapeTool { +impl ToolTransition for ShapeToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { overlay_provider: Some(|overlay_context| ShapeToolMessage::Overlays(overlay_context).into()), diff --git a/editor/src/messages/tool/tool_messages/spline_tool.rs b/editor/src/messages/tool/tool_messages/spline_tool.rs index 0a96443ee5..5d32c1e11a 100644 --- a/editor/src/messages/tool/tool_messages/spline_tool.rs +++ b/editor/src/messages/tool/tool_messages/spline_tool.rs @@ -15,7 +15,7 @@ use graphene_std::Color; use graphene_std::vector::{PointId, SegmentId, VectorModificationType}; #[derive(Default, ExtractField)] -pub struct SplineTool { +pub struct SplineToolMessageHandler { fsm_state: SplineToolFsmState, tool_data: SplineToolData, options: SplineOptions, @@ -75,7 +75,7 @@ pub enum SplineOptionsUpdate { WorkingColors(Option, Option), } -impl ToolMetadata for SplineTool { +impl ToolMetadata for SplineToolMessageHandler { fn icon_name(&self) -> String { "VectorSplineTool".into() } @@ -97,7 +97,7 @@ fn create_weight_widget(line_weight: f64) -> WidgetHolder { .widget_holder() } -impl LayoutHolder for SplineTool { +impl LayoutHolder for SplineToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = self.options.fill.create_widgets( "Fill", @@ -124,7 +124,7 @@ impl LayoutHolder for SplineTool { } #[message_handler_data] -impl<'a> MessageHandler> for SplineTool { +impl<'a> MessageHandler> for SplineToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Spline(SplineToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.tool_data, context, &self.options, responses, true); @@ -176,7 +176,7 @@ impl<'a> MessageHandler> for Spli } } -impl ToolTransition for SplineTool { +impl ToolTransition for SplineToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { overlay_provider: Some(|overlay_context: OverlayContext| SplineToolMessage::Overlays(overlay_context).into()), diff --git a/editor/src/messages/tool/tool_messages/text_tool.rs b/editor/src/messages/tool/tool_messages/text_tool.rs index d719c78792..53c24c796c 100644 --- a/editor/src/messages/tool/tool_messages/text_tool.rs +++ b/editor/src/messages/tool/tool_messages/text_tool.rs @@ -21,7 +21,7 @@ use graphene_std::text::{Font, FontCache, TypesettingConfig, lines_clipping, loa use graphene_std::vector::style::Fill; #[derive(Default, ExtractField)] -pub struct TextTool { +pub struct TextToolMessageHandler { fsm_state: TextToolFsmState, tool_data: TextToolData, options: TextOptions, @@ -82,7 +82,7 @@ pub enum TextOptionsUpdate { WorkingColors(Option, Option), } -impl ToolMetadata for TextTool { +impl ToolMetadata for TextToolMessageHandler { fn icon_name(&self) -> String { "VectorTextTool".into() } @@ -94,7 +94,7 @@ impl ToolMetadata for TextTool { } } -fn create_text_widgets(tool: &TextTool) -> Vec { +fn create_text_widgets(tool: &TextToolMessageHandler) -> Vec { let font = FontInput::new(&tool.options.font_name, &tool.options.font_style) .is_style_picker(false) .on_update(|font_input: &FontInput| { @@ -152,7 +152,7 @@ fn create_text_widgets(tool: &TextTool) -> Vec { ] } -impl LayoutHolder for TextTool { +impl LayoutHolder for TextToolMessageHandler { fn layout(&self) -> Layout { let mut widgets = create_text_widgets(self); @@ -171,7 +171,7 @@ impl LayoutHolder for TextTool { } #[message_handler_data] -impl<'a> MessageHandler> for TextTool { +impl<'a> MessageHandler> for TextToolMessageHandler { fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, context: &mut ToolActionMessageContext<'a>) { let ToolMessage::Text(TextToolMessage::UpdateOptions(action)) = message else { self.fsm_state.process_event(message, &mut self.tool_data, context, &self.options, responses, true); @@ -228,7 +228,7 @@ impl<'a> MessageHandler> for Text } } -impl ToolTransition for TextTool { +impl ToolTransition for TextToolMessageHandler { fn event_to_message_map(&self) -> EventToMessageMap { EventToMessageMap { canvas_transformed: None, diff --git a/editor/src/messages/tool/utility_types.rs b/editor/src/messages/tool/utility_types.rs index 740b09c972..671f52354d 100644 --- a/editor/src/messages/tool/utility_types.rs +++ b/editor/src/messages/tool/utility_types.rs @@ -391,28 +391,28 @@ fn list_tools_in_groups() -> Vec> { vec![ vec![ // General tool group - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), ], vec![ // Vector tool group - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), ToolAvailability::AvailableAsShape(ShapeType::Line), ToolAvailability::AvailableAsShape(ShapeType::Rectangle), ToolAvailability::AvailableAsShape(ShapeType::Ellipse), - ToolAvailability::Available(Box::::default()), - ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), ], vec![ // Raster tool group - ToolAvailability::Available(Box::::default()), + ToolAvailability::Available(Box::::default()), ToolAvailability::ComingSoon(ToolEntry::new(ToolType::Heal, "RasterHealTool").tooltip("Coming Soon: Heal Tool (J)")), ToolAvailability::ComingSoon(ToolEntry::new(ToolType::Clone, "RasterCloneTool").tooltip("Coming Soon: Clone Tool (C)")), ToolAvailability::ComingSoon(ToolEntry::new(ToolType::Patch, "RasterPatchTool").tooltip("Coming Soon: Patch Tool")), diff --git a/proc-macros/src/message_handler_data_attr.rs b/proc-macros/src/message_handler_data_attr.rs index 6c1c88b886..7482a73b9d 100644 --- a/proc-macros/src/message_handler_data_attr.rs +++ b/proc-macros/src/message_handler_data_attr.rs @@ -64,7 +64,9 @@ pub fn message_handler_data_attr_impl(attr: TokenStream, input_item: TokenStream } }, syn::Type::Reference(type_reference) => { - let message_type = call_site_ident(format!("{input_type}Message")); + const HANDLER_STRING: &str = "Handler"; + let ident_string = format!("{input_type}"); + let message_type = call_site_ident(ident_string[..ident_string.len().wrapping_sub(HANDLER_STRING.len())].to_owned()); let type_ident = match &*type_reference.elem { syn::Type::Path(type_path) => &type_path.path.segments.first().unwrap().ident, _ => return Err(syn::Error::new(type_reference.elem.span(), "Expected type path")),