Fix sorting of message enum variants

This commit is contained in:
Keavon Chambers
2022-01-16 13:59:55 -08:00
parent 1a4ab0733b
commit 841f34e797
25 changed files with 254 additions and 111 deletions
+38 -23
View File
@@ -10,32 +10,49 @@ use serde::{Deserialize, Serialize};
#[impl_message(Message, Tool)]
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
pub enum ToolMessage {
// Sub-messages
#[remain::unsorted]
#[child]
Crop(CropMessage),
#[remain::unsorted]
#[child]
Ellipse(EllipseMessage),
#[remain::unsorted]
#[child]
Eyedropper(EyedropperMessage),
#[remain::unsorted]
#[child]
Fill(FillMessage),
#[remain::unsorted]
#[child]
Line(LineMessage),
#[remain::unsorted]
#[child]
Navigate(NavigateMessage),
#[remain::unsorted]
#[child]
Path(PathMessage),
#[remain::unsorted]
#[child]
Pen(PenMessage),
#[remain::unsorted]
#[child]
Rectangle(RectangleMessage),
#[remain::unsorted]
#[child]
Select(SelectMessage),
#[remain::unsorted]
#[child]
Shape(ShapeMessage),
// Messages
#[remain::unsorted]
NoOp,
ActivateTool {
tool_type: ToolType,
},
#[child]
Crop(CropMessage),
DocumentIsDirty,
#[child]
Ellipse(EllipseMessage),
#[child]
Eyedropper(EyedropperMessage),
#[child]
Fill(FillMessage),
#[child]
Line(LineMessage),
#[child]
Navigate(NavigateMessage),
NoOp,
#[child]
Path(PathMessage),
#[child]
Pen(PenMessage),
#[child]
Rectangle(RectangleMessage),
ResetColors,
#[child]
Select(SelectMessage),
SelectPrimaryColor {
color: Color,
},
@@ -46,8 +63,6 @@ pub enum ToolMessage {
tool_type: ToolType,
tool_options: ToolOptions,
},
#[child]
Shape(ShapeMessage),
SwapColors,
UpdateCursor,
UpdateHints,
@@ -20,6 +20,7 @@ impl MessageHandler<ToolMessage, (&DocumentMessageHandler, &InputPreprocessorMes
let (document, input) = data;
#[remain::sorted]
match message {
// Messages
ActivateTool { tool_type } => {
let tool_data = &mut self.tool_state.tool_data;
let document_data = &self.tool_state.document_tool_data;
@@ -101,6 +102,9 @@ impl MessageHandler<ToolMessage, (&DocumentMessageHandler, &InputPreprocessorMes
update_working_colors(document_data, responses);
}
// Sub-messages
#[remain::unsorted]
tool_message => {
let tool_type = match &tool_message {
UpdateCursor | UpdateHints => self.tool_state.tool_data.active_tool_type,
+5
View File
@@ -10,6 +10,11 @@ pub struct Crop;
#[impl_message(Message, ToolMessage, Crop)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum CropMessage {
// Standard messages
// #[remain::unsorted]
// Abort,
// Tool-specific messages
MouseMove,
}
+8 -1
View File
@@ -23,10 +23,17 @@ pub struct Ellipse {
#[impl_message(Message, ToolMessage, Ellipse)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum EllipseMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
DragStart,
DragStop,
Resize { center: Key, lock_ratio: Key },
Resize {
center: Key,
lock_ratio: Key,
},
}
impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Ellipse {
@@ -23,7 +23,11 @@ pub struct Eyedropper {
#[impl_message(Message, ToolMessage, Eyedropper)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum EyedropperMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
LeftMouseDown,
RightMouseDown,
}
+4
View File
@@ -23,7 +23,11 @@ pub struct Fill {
#[impl_message(Message, ToolMessage, Fill)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum FillMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
LeftMouseDown,
RightMouseDown,
}
+9 -1
View File
@@ -26,10 +26,18 @@ pub struct Line {
#[impl_message(Message, ToolMessage, Line)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum LineMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
DragStart,
DragStop,
Redraw { center: Key, lock_angle: Key, snap_angle: Key },
Redraw {
center: Key,
lock_angle: Key,
snap_angle: Key,
},
}
impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Line {
+11 -2
View File
@@ -19,9 +19,18 @@ pub struct Navigate {
#[impl_message(Message, ToolMessage, Navigate)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum NavigateMessage {
// Standard messages
#[remain::unsorted]
Abort,
ClickZoom { zoom_in: bool },
MouseMove { snap_angle: Key, snap_zoom: Key },
// Tool-specific messages
ClickZoom {
zoom_in: bool,
},
MouseMove {
snap_angle: Key,
snap_zoom: Key,
},
RotateCanvasBegin,
TransformCanvasEnd,
TranslateCanvasBegin,
+3
View File
@@ -27,9 +27,12 @@ pub struct Path {
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum PathMessage {
// Standard messages
#[remain::unsorted]
Abort,
#[remain::unsorted]
DocumentIsDirty,
// Tool-specific messages
DragStart,
DragStop,
PointerMove,
+4
View File
@@ -24,7 +24,11 @@ pub struct Pen {
#[impl_message(Message, ToolMessage, Pen)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum PenMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
Confirm,
DragStart,
DragStop,
+8 -1
View File
@@ -23,10 +23,17 @@ pub struct Rectangle {
#[impl_message(Message, ToolMessage, Rectangle)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum RectangleMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
DragStart,
DragStop,
Resize { center: Key, lock_ratio: Key },
Resize {
center: Key,
lock_ratio: Key,
},
}
impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Rectangle {
+14 -5
View File
@@ -24,21 +24,30 @@ pub struct Select {
data: SelectToolData,
}
// #[remain::sorted] // https://github.com/dtolnay/remain/issues/16
#[remain::sorted]
#[impl_message(Message, ToolMessage, Select)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum SelectMessage {
// Standard messages
#[remain::unsorted]
Abort,
#[remain::unsorted]
DocumentIsDirty,
DragStart { add_to_selection: Key },
// Tool-specific messages
Align {
axis: AlignAxis,
aggregate: AlignAggregate,
},
DragStart {
add_to_selection: Key,
},
DragStop,
MouseMove { snap_angle: Key },
Align { axis: AlignAxis, aggregate: AlignAggregate },
FlipHorizontal,
FlipVertical,
MouseMove {
snap_angle: Key,
},
}
impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Select {
+8 -1
View File
@@ -24,10 +24,17 @@ pub struct Shape {
#[impl_message(Message, ToolMessage, Shape)]
#[derive(PartialEq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum ShapeMessage {
// Standard messages
#[remain::unsorted]
Abort,
// Tool-specific messages
DragStart,
DragStop,
Resize { center: Key, lock_ratio: Key },
Resize {
center: Key,
lock_ratio: Key,
},
}
impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Shape {