Add initial tool settings messaging to backend

This commit is contained in:
Henry Sloan
2021-07-20 00:52:27 -04:00
parent 3203f7bcdf
commit 8e56a274fe
6 changed files with 98 additions and 50 deletions
+10 -1
View File
@@ -1,5 +1,5 @@
use crate::shims::Error;
use crate::wrappers::{translate_key, translate_tool, Color};
use crate::wrappers::{translate_key, translate_tool, Color, ToolSettings};
use crate::EDITOR_STATE;
use editor_core::input::input_preprocessor::ModifierKeys;
use editor_core::input::mouse::ScrollDelta;
@@ -23,6 +23,15 @@ pub fn select_tool(tool: String) -> Result<(), JsValue> {
})
}
/// Update the settings for a given tool
#[wasm_bindgen]
pub fn set_tool_settings(tool: String, settings: ToolSettings) -> Result<(), JsValue> {
EDITOR_STATE.with(|editor| match translate_tool(&tool) {
Some(tool) => editor.borrow_mut().handle_message(ToolMessage::SetToolSettings(tool, settings.inner())).map_err(convert_error),
None => Err(Error::new(&format!("Couldn't select {} because it was not recognized as a valid tool", tool)).into()),
})
}
#[wasm_bindgen]
pub fn select_document(document: usize) -> Result<(), JsValue> {
EDITOR_STATE.with(|editor| editor.borrow_mut().handle_message(DocumentMessage::SelectDocument(document)).map_err(convert_error))
+22
View File
@@ -1,5 +1,7 @@
use crate::shims::Error;
use editor_core::input::keyboard::Key;
use editor_core::tool::tool_settings::Shape;
use editor_core::tool::tool_settings::ToolSettings as InnerToolSettings;
use editor_core::tool::{SelectAppendMode, ToolType};
use editor_core::Color as InnerColor;
use wasm_bindgen::prelude::*;
@@ -24,6 +26,26 @@ impl Color {
}
}
#[wasm_bindgen]
pub struct ToolSettings(InnerToolSettings);
#[wasm_bindgen]
impl ToolSettings {
#[wasm_bindgen(constructor)]
pub fn new() -> Result<ToolSettings, JsValue> {
// TODO
Ok(Self(InnerToolSettings::Shape {
shape: Shape::Polygon { vertices: 6 },
}))
}
}
impl ToolSettings {
pub fn inner(&self) -> InnerToolSettings {
self.0
}
}
macro_rules! match_string_to_enum {
(match ($e:expr) {$($var:ident),* $(,)?}) => {
match $e {