mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-17 07:18:04 +08:00
Add responses in document for layer system (#91)
This commit is contained in:
committed by
Keavon Chambers
parent
b27eaf3fae
commit
f05cb30acb
@@ -328,10 +328,10 @@ export default defineComponent({
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
registerResponseHandler(ResponseType.UpdateCanvas, (responseData) => {
|
||||
registerResponseHandler(ResponseType["Document::UpdateCanvas"], (responseData) => {
|
||||
this.viewportSvg = responseData;
|
||||
});
|
||||
registerResponseHandler(ResponseType.SetActiveTool, (responseData) => {
|
||||
registerResponseHandler(ResponseType["Tool::SetActiveTool"], (responseData) => {
|
||||
this.activeTool = responseData;
|
||||
});
|
||||
|
||||
|
||||
@@ -6,9 +6,22 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "vue";
|
||||
import { ResponseType, registerResponseHandler } from "../../response-handler";
|
||||
|
||||
export default defineComponent({
|
||||
components: {},
|
||||
props: {},
|
||||
methods: {},
|
||||
mounted() {
|
||||
registerResponseHandler(ResponseType["Document::ExpandFolder"], (responseData) => {
|
||||
console.log("ExpandFolder: ", responseData);
|
||||
});
|
||||
registerResponseHandler(ResponseType["Document::CollapseFolder"], (responseData) => {
|
||||
console.log("CollapseFolder: ", responseData);
|
||||
});
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -9,8 +9,10 @@ declare global {
|
||||
}
|
||||
|
||||
export enum ResponseType {
|
||||
UpdateCanvas = "UpdateCanvas",
|
||||
SetActiveTool = "SetActiveTool",
|
||||
"Document::UpdateCanvas" = "Document::UpdateCanvas",
|
||||
"Document::ExpandFolder" = "Document::ExpandFolder",
|
||||
"Document::CollapseFolder" = "Document::CollapseFolder",
|
||||
"Tool::SetActiveTool" = "Tool::SetActiveTool",
|
||||
}
|
||||
|
||||
export function attachResponseHandlerToPage() {
|
||||
|
||||
@@ -4,7 +4,10 @@ pub mod utils;
|
||||
pub mod window;
|
||||
pub mod wrappers;
|
||||
|
||||
use editor_core::{events::Response, Editor};
|
||||
use editor_core::{
|
||||
events::{DocumentResponse, Response, ToolResponse},
|
||||
Editor, LayerId,
|
||||
};
|
||||
use std::cell::RefCell;
|
||||
use utils::WasmLog;
|
||||
use wasm_bindgen::prelude::*;
|
||||
@@ -20,17 +23,36 @@ pub fn init() {
|
||||
log::set_max_level(log::LevelFilter::Debug);
|
||||
}
|
||||
|
||||
fn path_to_string(path: Vec<LayerId>) -> String {
|
||||
path.iter().map(|x| x.to_string()).collect::<Vec<String>>().join(",")
|
||||
}
|
||||
|
||||
fn handle_response(response: Response) {
|
||||
let response_type = response.to_string();
|
||||
match response {
|
||||
Response::UpdateCanvas { document } => handleResponse(response_type, document),
|
||||
Response::SetActiveTool { tool_name } => handleResponse(response_type, tool_name),
|
||||
Response::Document(doc) => match doc {
|
||||
DocumentResponse::UpdateCanvas { document } => send_response(response_type, &[document]),
|
||||
DocumentResponse::ExpandFolder { path, children } => {
|
||||
let children = children
|
||||
.iter()
|
||||
.map(|c| format!("name:{},visible:{},type:{}", c.name, c.visible, c.layer_type))
|
||||
.collect::<Vec<String>>()
|
||||
.join(";");
|
||||
send_response(response_type, &[path_to_string(path), children])
|
||||
}
|
||||
DocumentResponse::CollapseFolder { path } => send_response(response_type, &[path_to_string(path)]),
|
||||
},
|
||||
Response::Tool(ToolResponse::SetActiveTool { tool_name }) => send_response(response_type, &[tool_name]),
|
||||
}
|
||||
}
|
||||
fn send_response(response_type: String, response_data: &[String]) {
|
||||
let data = response_data.iter().map(JsValue::from).collect();
|
||||
handleResponse(response_type, data);
|
||||
}
|
||||
|
||||
#[wasm_bindgen(module = "/../src/response-handler.ts")]
|
||||
extern "C" {
|
||||
fn handleResponse(responseType: String, responseData: String);
|
||||
fn handleResponse(responseType: String, responseData: Vec<JsValue>);
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
|
||||
Reference in New Issue
Block a user