Implement input hints based on the active tool state (#388)

* Hook up user input hints to display in the frontend status bar

Closes #171

* MVP hint system based on tool FSM

* Fix hints for Fill and Eyedropper tools

* Add icons for keyboard shortcuts

* Fix hints for Pen Tool

* Cleanup
This commit is contained in:
Keavon Chambers
2021-12-24 01:46:03 -08:00
parent 3500160bf7
commit d2b0411295
38 changed files with 1070 additions and 212 deletions

20
editor/src/misc/hints.rs Normal file
View File

@@ -0,0 +1,20 @@
use serde::{Deserialize, Serialize};
use crate::input::keyboard::{Key, MouseMotion};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct HintData(pub Vec<HintGroup>);
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct HintGroup(pub Vec<HintInfo>);
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
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
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KeysGroup(pub Vec<Key>); // Only use `Key`s that exist on a physical keyboard

View File

@@ -2,7 +2,9 @@
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::*;