Massively reorganize and clean up the whole Rust codebase (#478)

* Massively reorganize and clean up the whole Rust codebase

* Additional changes during code review
This commit is contained in:
Keavon Chambers
2022-01-14 14:58:08 -08:00
parent 011c2be26d
commit f48d4e1884
85 changed files with 2515 additions and 2189 deletions

View File

@@ -1,5 +1,6 @@
use crate::Color;
use graphene::color::Color;
use graphene::DocumentError;
use thiserror::Error;
/// The error type used by the Graphite editor.

View File

@@ -1,7 +1,7 @@
use serde::{Deserialize, Serialize};
use crate::input::keyboard::{Key, MouseMotion};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct HintData(pub Vec<HintGroup>);
@@ -13,8 +13,10 @@ pub struct HintInfo {
pub key_groups: Vec<KeysGroup>,
pub mouse: Option<MouseMotion>,
pub label: String,
pub plus: bool, // Prepend the "+" symbol indicating that this is a refinement upon a previous entry in the group
/// Prepend the "+" symbol indicating that this is a refinement upon a previous entry in the group.
pub plus: bool,
}
/// Only `Key`s that exist on a physical keyboard should be used.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KeysGroup(pub Vec<Key>); // Only use `Key`s that exist on a physical keyboard
pub struct KeysGroup(pub Vec<Key>);

View File

@@ -24,25 +24,25 @@ macro_rules! count_args {
///
/// ```ignore
/// let tools = gen_tools_hash_map! {
/// Select => select::Select,
/// Crop => crop::Crop,
/// Select => select::Select,
/// Crop => crop::Crop,
/// };
/// ```
/// expands to
/// ```ignore
/// let tools = {
/// let mut hash_map: std::collections::HashMap<crate::tool::ToolType, Box<dyn crate::tool::Tool>> = std::collections::HashMap::with_capacity(count_args!(/* Macro args */));
/// let mut hash_map: std::collections::HashMap<crate::tool::ToolType, Box<dyn crate::tool::Tool>> = std::collections::HashMap::with_capacity(count_args!(/* Macro args */));
///
/// hash_map.insert(crate::tool::ToolType::Select, Box::new(select::Select::default()));
/// hash_map.insert(crate::tool::ToolType::Crop, Box::new(crop::Crop::default()));
/// hash_map.insert(crate::tool::ToolType::Select, Box::new(select::Select::default()));
/// hash_map.insert(crate::tool::ToolType::Crop, Box::new(crop::Crop::default()));
///
/// hash_map
/// hash_map
/// };
/// ```
macro_rules! gen_tools_hash_map {
($($enum_variant:ident => $struct_path:ty),* $(,)?) => {{
let mut hash_map: ::std::collections::HashMap<$crate::tool::ToolType, ::std::boxed::Box<dyn for<'a> $crate::message_prelude::MessageHandler<$crate::tool::tool_messages::ToolMessage,$crate::tool::ToolActionHandlerData<'a>>>> = ::std::collections::HashMap::with_capacity(count_args!($(($enum_variant)),*));
$(hash_map.insert($crate::tool::ToolType::$enum_variant, ::std::boxed::Box::new(<$struct_path>::default()));)*
let mut hash_map: ::std::collections::HashMap<$crate::viewport_tools::tool::ToolType, ::std::boxed::Box<dyn for<'a> $crate::message_prelude::MessageHandler<$crate::viewport_tools::tool_message::ToolMessage,$crate::viewport_tools::tool::ToolActionHandlerData<'a>>>> = ::std::collections::HashMap::with_capacity(count_args!($(($enum_variant)),*));
$(hash_map.insert($crate::viewport_tools::tool::ToolType::$enum_variant, ::std::boxed::Box::new(<$struct_path>::default()));)*
hash_map
}};
@@ -54,8 +54,8 @@ macro_rules! gen_tools_hash_map {
///
/// ```ignore
/// enum E {
/// A(u8),
/// B
/// A(u8),
/// B
/// }
///
/// // this line is important
@@ -71,8 +71,8 @@ macro_rules! gen_tools_hash_map {
/// // ...
///
/// let s = match a {
/// A { .. } => "A",
/// B { .. } => "B"
/// A { .. } => "A",
/// B { .. } => "B"
/// };
/// ```
macro_rules! match_variant_name {
@@ -110,10 +110,11 @@ macro_rules! match_variant_name {
///
macro_rules! actions {
($($v:expr),* $(,)?) => {{
vec![$(vec![$v.into()]),*]
vec![$(vec![$v.into()]),*]
}};
($name:ident; $($v:ident),* $(,)?) => {{
vec![vec![$(($name::$v).into()),*]]
vec![vec![$(($name::$v).into()),*]]
}};
}
@@ -121,18 +122,19 @@ macro_rules! actions {
///
/// ```ignore
/// fn actions(&self) -> ActionList {
/// actions!(…)
/// actions!(…)
/// }
/// ```
macro_rules! advertise_actions {
($($v:expr),* $(,)?) => {
fn actions(&self) -> $crate::communication::ActionList {
actions!($($v),*)
fn actions(&self) -> $crate::communication::message_handler::ActionList {
actions!($($v),*)
}
};
($name:ident; $($v:ident),* $(,)?) => {
fn actions(&self) -> $crate::communication::ActionList {
actions!($name; $($v),*)
fn actions(&self) -> $crate::communication::message_handler::ActionList {
actions!($name; $($v),*)
}
}
}

View File

@@ -1,10 +1,11 @@
#[macro_use]
pub mod macros;
pub mod derivable_custom_traits;
mod error;
pub mod hints;
pub mod test_utils;
pub use error::EditorError;
pub use hints::*;
pub use macros::*;
mod error;

View File

@@ -1,12 +1,9 @@
use crate::{
input::{
mouse::{EditorMouseState, MouseKeys, ScrollDelta, ViewportPosition},
InputPreprocessorMessage, ModifierKeys,
},
message_prelude::{Message, ToolMessage},
tool::ToolType,
Editor,
};
use crate::input::input_preprocessor::ModifierKeys;
use crate::input::mouse::{EditorMouseState, MouseKeys, ScrollDelta, ViewportPosition};
use crate::message_prelude::*;
use crate::viewport_tools::tool::ToolType;
use crate::Editor;
use graphene::color::Color;
/// A set of utility functions to make the writing of editor test more declarative