mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-02 02:48:11 +08:00
Rename DocumentsMessage to PortfolioMessage
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use crate::message_prelude::*;
|
use crate::message_prelude::*;
|
||||||
|
|
||||||
pub use crate::document::DocumentsMessageHandler;
|
pub use crate::document::PortfolioMessageHandler;
|
||||||
pub use crate::input::{InputMapper, InputPreprocessor};
|
pub use crate::input::{InputMapper, InputPreprocessor};
|
||||||
pub use crate::tool::ToolMessageHandler;
|
pub use crate::tool::ToolMessageHandler;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ pub struct Dispatcher {
|
|||||||
input_mapper: InputMapper,
|
input_mapper: InputMapper,
|
||||||
global_message_handler: GlobalMessageHandler,
|
global_message_handler: GlobalMessageHandler,
|
||||||
tool_message_handler: ToolMessageHandler,
|
tool_message_handler: ToolMessageHandler,
|
||||||
documents_message_handler: DocumentsMessageHandler,
|
portfolio_message_handler: PortfolioMessageHandler,
|
||||||
messages: VecDeque<Message>,
|
messages: VecDeque<Message>,
|
||||||
pub responses: Vec<FrontendMessage>,
|
pub responses: Vec<FrontendMessage>,
|
||||||
}
|
}
|
||||||
@@ -22,8 +22,8 @@ pub struct Dispatcher {
|
|||||||
// The last occurrence of the message in the message queue is sufficient to ensure correctness
|
// The last occurrence of the message in the message queue is sufficient to ensure correctness
|
||||||
// In addition, these messages do not change any state in the backend (aside from caches)
|
// In addition, these messages do not change any state in the backend (aside from caches)
|
||||||
const SIDE_EFFECT_FREE_MESSAGES: &[MessageDiscriminant] = &[
|
const SIDE_EFFECT_FREE_MESSAGES: &[MessageDiscriminant] = &[
|
||||||
MessageDiscriminant::Documents(DocumentsMessageDiscriminant::Document(DocumentMessageDiscriminant::RenderDocument)),
|
MessageDiscriminant::Portfolio(PortfolioMessageDiscriminant::Document(DocumentMessageDiscriminant::RenderDocument)),
|
||||||
MessageDiscriminant::Documents(DocumentsMessageDiscriminant::Document(DocumentMessageDiscriminant::FolderChanged)),
|
MessageDiscriminant::Portfolio(PortfolioMessageDiscriminant::Document(DocumentMessageDiscriminant::FolderChanged)),
|
||||||
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::UpdateLayer),
|
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::UpdateLayer),
|
||||||
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::DisplayFolderTreeStructure),
|
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::DisplayFolderTreeStructure),
|
||||||
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::UpdateOpenDocumentsList),
|
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::UpdateOpenDocumentsList),
|
||||||
@@ -47,11 +47,11 @@ impl Dispatcher {
|
|||||||
self.log_message(&message);
|
self.log_message(&message);
|
||||||
match message {
|
match message {
|
||||||
NoOp => (),
|
NoOp => (),
|
||||||
Documents(message) => self.documents_message_handler.process_action(message, &self.input_preprocessor, &mut self.messages),
|
Portfolio(message) => self.portfolio_message_handler.process_action(message, &self.input_preprocessor, &mut self.messages),
|
||||||
Global(message) => self.global_message_handler.process_action(message, (), &mut self.messages),
|
Global(message) => self.global_message_handler.process_action(message, (), &mut self.messages),
|
||||||
Tool(message) => self
|
Tool(message) => self
|
||||||
.tool_message_handler
|
.tool_message_handler
|
||||||
.process_action(message, (self.documents_message_handler.active_document(), &self.input_preprocessor), &mut self.messages),
|
.process_action(message, (self.portfolio_message_handler.active_document(), &self.input_preprocessor), &mut self.messages),
|
||||||
Frontend(message) => self.responses.push(message),
|
Frontend(message) => self.responses.push(message),
|
||||||
InputPreprocessor(message) => self.input_preprocessor.process_action(message, (), &mut self.messages),
|
InputPreprocessor(message) => self.input_preprocessor.process_action(message, (), &mut self.messages),
|
||||||
InputMapper(message) => {
|
InputMapper(message) => {
|
||||||
@@ -69,7 +69,7 @@ impl Dispatcher {
|
|||||||
list.extend(self.input_mapper.actions());
|
list.extend(self.input_mapper.actions());
|
||||||
list.extend(self.global_message_handler.actions());
|
list.extend(self.global_message_handler.actions());
|
||||||
list.extend(self.tool_message_handler.actions());
|
list.extend(self.tool_message_handler.actions());
|
||||||
list.extend(self.documents_message_handler.actions());
|
list.extend(self.portfolio_message_handler.actions());
|
||||||
list
|
list
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,14 +129,14 @@ mod test {
|
|||||||
init_logger();
|
init_logger();
|
||||||
let mut editor = create_editor_with_three_layers();
|
let mut editor = create_editor_with_three_layers();
|
||||||
|
|
||||||
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_before_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
editor.handle_message(DocumentsMessage::Copy(User));
|
editor.handle_message(PortfolioMessage::Copy(User));
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_after_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
|
|
||||||
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
||||||
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
||||||
@@ -163,18 +163,18 @@ mod test {
|
|||||||
init_logger();
|
init_logger();
|
||||||
let mut editor = create_editor_with_three_layers();
|
let mut editor = create_editor_with_three_layers();
|
||||||
|
|
||||||
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_before_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
let shape_id = document_before_copy.root.as_folder().unwrap().layer_ids[1];
|
let shape_id = document_before_copy.root.as_folder().unwrap().layer_ids[1];
|
||||||
|
|
||||||
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![shape_id]]));
|
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![shape_id]]));
|
||||||
editor.handle_message(DocumentsMessage::Copy(User));
|
editor.handle_message(PortfolioMessage::Copy(User));
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
|
|
||||||
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_after_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
|
|
||||||
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
||||||
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
||||||
@@ -206,7 +206,7 @@ mod test {
|
|||||||
|
|
||||||
editor.handle_message(DocumentMessage::CreateEmptyFolder(vec![]));
|
editor.handle_message(DocumentMessage::CreateEmptyFolder(vec![]));
|
||||||
|
|
||||||
let document_before_added_shapes = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_before_added_shapes = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
let folder_id = document_before_added_shapes.root.as_folder().unwrap().layer_ids[FOLDER_INDEX];
|
let folder_id = document_before_added_shapes.root.as_folder().unwrap().layer_ids[FOLDER_INDEX];
|
||||||
|
|
||||||
// TODO: This adding of a Line and Pen should be rewritten using the corresponding functions in EditorTestUtils.
|
// TODO: This adding of a Line and Pen should be rewritten using the corresponding functions in EditorTestUtils.
|
||||||
@@ -228,22 +228,22 @@ mod test {
|
|||||||
|
|
||||||
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![folder_id]]));
|
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![folder_id]]));
|
||||||
|
|
||||||
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_before_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
|
|
||||||
editor.handle_message(DocumentsMessage::Copy(User));
|
editor.handle_message(PortfolioMessage::Copy(User));
|
||||||
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
|
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
|
|
||||||
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_after_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
|
|
||||||
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
||||||
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
||||||
@@ -294,26 +294,26 @@ mod test {
|
|||||||
const SHAPE_INDEX: usize = 1;
|
const SHAPE_INDEX: usize = 1;
|
||||||
const RECT_INDEX: usize = 0;
|
const RECT_INDEX: usize = 0;
|
||||||
|
|
||||||
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_before_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
let rect_id = document_before_copy.root.as_folder().unwrap().layer_ids[RECT_INDEX];
|
let rect_id = document_before_copy.root.as_folder().unwrap().layer_ids[RECT_INDEX];
|
||||||
let ellipse_id = document_before_copy.root.as_folder().unwrap().layer_ids[ELLIPSE_INDEX];
|
let ellipse_id = document_before_copy.root.as_folder().unwrap().layer_ids[ELLIPSE_INDEX];
|
||||||
|
|
||||||
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![rect_id], vec![ellipse_id]]));
|
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![rect_id], vec![ellipse_id]]));
|
||||||
editor.handle_message(DocumentsMessage::Copy(User));
|
editor.handle_message(PortfolioMessage::Copy(User));
|
||||||
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
|
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
|
||||||
editor.draw_rect(0., 800., 12., 200.);
|
editor.draw_rect(0., 800., 12., 200.);
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
editor.handle_message(DocumentsMessage::PasteIntoFolder {
|
editor.handle_message(PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: User,
|
clipboard: User,
|
||||||
path: vec![],
|
path: vec![],
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
});
|
});
|
||||||
|
|
||||||
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
|
let document_after_copy = editor.dispatcher.portfolio_message_handler.active_document().graphene_document.clone();
|
||||||
|
|
||||||
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
|
||||||
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
|
||||||
@@ -343,7 +343,7 @@ mod test {
|
|||||||
fn map_to_vec(paths: Vec<&[LayerId]>) -> Vec<Vec<LayerId>> {
|
fn map_to_vec(paths: Vec<&[LayerId]>) -> Vec<Vec<LayerId>> {
|
||||||
paths.iter().map(|layer| layer.to_vec()).collect::<Vec<_>>()
|
paths.iter().map(|layer| layer.to_vec()).collect::<Vec<_>>()
|
||||||
}
|
}
|
||||||
let sorted_layers = map_to_vec(editor.dispatcher.documents_message_handler.active_document().all_layers_sorted());
|
let sorted_layers = map_to_vec(editor.dispatcher.portfolio_message_handler.active_document().all_layers_sorted());
|
||||||
println!("Sorted layers: {:?}", sorted_layers);
|
println!("Sorted layers: {:?}", sorted_layers);
|
||||||
|
|
||||||
let verify_order = |handler: &mut DocumentMessageHandler| {
|
let verify_order = |handler: &mut DocumentMessageHandler| {
|
||||||
@@ -357,15 +357,15 @@ mod test {
|
|||||||
editor.handle_message(DocumentMessage::SetSelectedLayers(sorted_layers[..2].to_vec()));
|
editor.handle_message(DocumentMessage::SetSelectedLayers(sorted_layers[..2].to_vec()));
|
||||||
|
|
||||||
editor.handle_message(DocumentMessage::ReorderSelectedLayers(1));
|
editor.handle_message(DocumentMessage::ReorderSelectedLayers(1));
|
||||||
let (all, non_selected, selected) = verify_order(editor.dispatcher.documents_message_handler.active_document_mut());
|
let (all, non_selected, selected) = verify_order(editor.dispatcher.portfolio_message_handler.active_document_mut());
|
||||||
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
|
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
|
||||||
|
|
||||||
editor.handle_message(DocumentMessage::ReorderSelectedLayers(-1));
|
editor.handle_message(DocumentMessage::ReorderSelectedLayers(-1));
|
||||||
let (all, non_selected, selected) = verify_order(editor.dispatcher.documents_message_handler.active_document_mut());
|
let (all, non_selected, selected) = verify_order(editor.dispatcher.portfolio_message_handler.active_document_mut());
|
||||||
assert_eq!(all, selected.into_iter().chain(non_selected.into_iter()).collect::<Vec<_>>());
|
assert_eq!(all, selected.into_iter().chain(non_selected.into_iter()).collect::<Vec<_>>());
|
||||||
|
|
||||||
editor.handle_message(DocumentMessage::ReorderSelectedLayers(i32::MAX));
|
editor.handle_message(DocumentMessage::ReorderSelectedLayers(i32::MAX));
|
||||||
let (all, non_selected, selected) = verify_order(editor.dispatcher.documents_message_handler.active_document_mut());
|
let (all, non_selected, selected) = verify_order(editor.dispatcher.portfolio_message_handler.active_document_mut());
|
||||||
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
|
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ where
|
|||||||
pub enum Message {
|
pub enum Message {
|
||||||
NoOp,
|
NoOp,
|
||||||
#[child]
|
#[child]
|
||||||
Documents(DocumentsMessage),
|
Portfolio(PortfolioMessage),
|
||||||
#[child]
|
#[child]
|
||||||
Global(GlobalMessage),
|
Global(GlobalMessage),
|
||||||
#[child]
|
#[child]
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ impl Default for DocumentMessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[impl_message(Message, DocumentsMessage, Document)]
|
#[impl_message(Message, PortfolioMessage, Document)]
|
||||||
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
|
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
|
||||||
pub enum DocumentMessage {
|
pub enum DocumentMessage {
|
||||||
#[child]
|
#[child]
|
||||||
@@ -436,7 +436,7 @@ impl DocumentMessageHandler {
|
|||||||
self.document_undo_history.push((self.graphene_document.clone(), self.layer_metadata.clone()));
|
self.document_undo_history.push((self.graphene_document.clone(), self.layer_metadata.clone()));
|
||||||
|
|
||||||
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
||||||
responses.push_back(DocumentsMessage::UpdateOpenDocumentsList.into());
|
responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rollback(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
pub fn rollback(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
||||||
@@ -447,7 +447,7 @@ impl DocumentMessageHandler {
|
|||||||
|
|
||||||
pub fn undo(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
pub fn undo(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
||||||
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
||||||
responses.push_back(DocumentsMessage::UpdateOpenDocumentsList.into());
|
responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into());
|
||||||
|
|
||||||
match self.document_undo_history.pop() {
|
match self.document_undo_history.pop() {
|
||||||
Some((document, layer_metadata)) => {
|
Some((document, layer_metadata)) => {
|
||||||
@@ -465,7 +465,7 @@ impl DocumentMessageHandler {
|
|||||||
|
|
||||||
pub fn redo(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
pub fn redo(&mut self, responses: &mut VecDeque<Message>) -> Result<(), EditorError> {
|
||||||
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
// Push the UpdateOpenDocumentsList message to the bus in order to update the save status of the open documents
|
||||||
responses.push_back(DocumentsMessage::UpdateOpenDocumentsList.into());
|
responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into());
|
||||||
|
|
||||||
match self.document_redo_history.pop() {
|
match self.document_redo_history.pop() {
|
||||||
Some((document, layer_metadata)) => {
|
Some((document, layer_metadata)) => {
|
||||||
@@ -611,9 +611,9 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||||||
}
|
}
|
||||||
SaveDocument => {
|
SaveDocument => {
|
||||||
self.set_save_state(true);
|
self.set_save_state(true);
|
||||||
responses.push_back(DocumentsMessage::AutoSaveActiveDocument.into());
|
responses.push_back(PortfolioMessage::AutoSaveActiveDocument.into());
|
||||||
// Update the save status of the just saved document
|
// Update the save status of the just saved document
|
||||||
responses.push_back(DocumentsMessage::UpdateOpenDocumentsList.into());
|
responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into());
|
||||||
|
|
||||||
let name = match self.name.ends_with(FILE_SAVE_SUFFIX) {
|
let name = match self.name.ends_with(FILE_SAVE_SUFFIX) {
|
||||||
true => self.name.clone(),
|
true => self.name.clone(),
|
||||||
@@ -643,12 +643,12 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||||||
|
|
||||||
new_folder_path.push(generate_uuid());
|
new_folder_path.push(generate_uuid());
|
||||||
|
|
||||||
responses.push_back(DocumentsMessage::Copy(Clipboard::System).into());
|
responses.push_back(PortfolioMessage::Copy(Clipboard::System).into());
|
||||||
responses.push_back(DocumentMessage::DeleteSelectedLayers.into());
|
responses.push_back(DocumentMessage::DeleteSelectedLayers.into());
|
||||||
responses.push_back(DocumentOperation::CreateFolder { path: new_folder_path.clone() }.into());
|
responses.push_back(DocumentOperation::CreateFolder { path: new_folder_path.clone() }.into());
|
||||||
responses.push_back(DocumentMessage::ToggleLayerExpansion(new_folder_path.clone()).into());
|
responses.push_back(DocumentMessage::ToggleLayerExpansion(new_folder_path.clone()).into());
|
||||||
responses.push_back(
|
responses.push_back(
|
||||||
DocumentsMessage::PasteIntoFolder {
|
PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: Clipboard::System,
|
clipboard: Clipboard::System,
|
||||||
path: new_folder_path.clone(),
|
path: new_folder_path.clone(),
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
@@ -663,9 +663,9 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||||||
let message_buffer = [
|
let message_buffer = [
|
||||||
// Copy them
|
// Copy them
|
||||||
DocumentMessage::SetSelectedLayers(to_select).into(),
|
DocumentMessage::SetSelectedLayers(to_select).into(),
|
||||||
DocumentsMessage::Copy(Clipboard::System).into(),
|
PortfolioMessage::Copy(Clipboard::System).into(),
|
||||||
// Paste them into the folder above
|
// Paste them into the folder above
|
||||||
DocumentsMessage::PasteIntoFolder {
|
PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: Clipboard::System,
|
clipboard: Clipboard::System,
|
||||||
path: folder_path[..folder_path.len() - 1].to_vec(),
|
path: folder_path[..folder_path.len() - 1].to_vec(),
|
||||||
insert_index: -1,
|
insert_index: -1,
|
||||||
@@ -939,10 +939,10 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let insert_index = self.update_insert_index(&layers, &path, insert_index).unwrap();
|
let insert_index = self.update_insert_index(&layers, &path, insert_index).unwrap();
|
||||||
responses.push_back(DocumentsMessage::Copy(Clipboard::System).into());
|
responses.push_back(PortfolioMessage::Copy(Clipboard::System).into());
|
||||||
responses.push_back(DocumentMessage::DeleteSelectedLayers.into());
|
responses.push_back(DocumentMessage::DeleteSelectedLayers.into());
|
||||||
responses.push_back(
|
responses.push_back(
|
||||||
DocumentsMessage::PasteIntoFolder {
|
PortfolioMessage::PasteIntoFolder {
|
||||||
clipboard: Clipboard::System,
|
clipboard: Clipboard::System,
|
||||||
path,
|
path,
|
||||||
insert_index,
|
insert_index,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ pub use movement_handler::{MovementMessage, MovementMessageDiscriminant};
|
|||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use overlay_message_handler::{OverlayMessage, OverlayMessageDiscriminant};
|
pub use overlay_message_handler::{OverlayMessage, OverlayMessageDiscriminant};
|
||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use portfolio_message_handler::{Clipboard, DocumentsMessage, DocumentsMessageDiscriminant, DocumentsMessageHandler};
|
pub use portfolio_message_handler::{Clipboard, PortfolioMessage, PortfolioMessageDiscriminant, PortfolioMessageHandler};
|
||||||
|
|
||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use artboard_message_handler::{ArtboardMessage, ArtboardMessageDiscriminant};
|
pub use artboard_message_handler::{ArtboardMessage, ArtboardMessageDiscriminant};
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ pub enum Clipboard {
|
|||||||
|
|
||||||
const CLIPBOARD_COUNT: u8 = Clipboard::_ClipboardCount as u8;
|
const CLIPBOARD_COUNT: u8 = Clipboard::_ClipboardCount as u8;
|
||||||
|
|
||||||
#[impl_message(Message, Documents)]
|
#[impl_message(Message, Portfolio)]
|
||||||
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
|
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
|
||||||
pub enum DocumentsMessage {
|
pub enum PortfolioMessage {
|
||||||
Copy(Clipboard),
|
Copy(Clipboard),
|
||||||
Cut(Clipboard),
|
Cut(Clipboard),
|
||||||
PasteIntoFolder {
|
PasteIntoFolder {
|
||||||
@@ -58,7 +58,7 @@ pub enum DocumentsMessage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct DocumentsMessageHandler {
|
pub struct PortfolioMessageHandler {
|
||||||
documents: HashMap<u64, DocumentMessageHandler>,
|
documents: HashMap<u64, DocumentMessageHandler>,
|
||||||
document_ids: Vec<u64>,
|
document_ids: Vec<u64>,
|
||||||
active_document_id: u64,
|
active_document_id: u64,
|
||||||
@@ -71,7 +71,7 @@ pub struct CopyBufferEntry {
|
|||||||
layer_metadata: LayerMetadata,
|
layer_metadata: LayerMetadata,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DocumentsMessageHandler {
|
impl PortfolioMessageHandler {
|
||||||
pub fn active_document(&self) -> &DocumentMessageHandler {
|
pub fn active_document(&self) -> &DocumentMessageHandler {
|
||||||
self.documents.get(&self.active_document_id).unwrap()
|
self.documents.get(&self.active_document_id).unwrap()
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,7 @@ impl DocumentsMessageHandler {
|
|||||||
fn load_document(&mut self, new_document: DocumentMessageHandler, document_id: u64, replace_first_empty: bool, responses: &mut VecDeque<Message>) {
|
fn load_document(&mut self, new_document: DocumentMessageHandler, document_id: u64, replace_first_empty: bool, responses: &mut VecDeque<Message>) {
|
||||||
// Special case when loading a document on an empty page
|
// Special case when loading a document on an empty page
|
||||||
if replace_first_empty && self.active_document().is_unmodified_default() {
|
if replace_first_empty && self.active_document().is_unmodified_default() {
|
||||||
responses.push_back(DocumentsMessage::CloseDocument(self.active_document_id).into());
|
responses.push_back(PortfolioMessage::CloseDocument(self.active_document_id).into());
|
||||||
|
|
||||||
let active_document_index = self
|
let active_document_index = self
|
||||||
.document_ids
|
.document_ids
|
||||||
@@ -145,7 +145,7 @@ impl DocumentsMessageHandler {
|
|||||||
|
|
||||||
responses.push_back(FrontendMessage::UpdateOpenDocumentsList { open_documents }.into());
|
responses.push_back(FrontendMessage::UpdateOpenDocumentsList { open_documents }.into());
|
||||||
|
|
||||||
responses.push_back(DocumentsMessage::SelectDocument(document_id).into());
|
responses.push_back(PortfolioMessage::SelectDocument(document_id).into());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an iterator over the open documents in order
|
// Returns an iterator over the open documents in order
|
||||||
@@ -158,7 +158,7 @@ impl DocumentsMessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for DocumentsMessageHandler {
|
impl Default for PortfolioMessageHandler {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let mut documents_map: HashMap<u64, DocumentMessageHandler> = HashMap::with_capacity(1);
|
let mut documents_map: HashMap<u64, DocumentMessageHandler> = HashMap::with_capacity(1);
|
||||||
let starting_key = generate_uuid();
|
let starting_key = generate_uuid();
|
||||||
@@ -175,10 +175,10 @@ impl Default for DocumentsMessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHandler {
|
impl MessageHandler<PortfolioMessage, &InputPreprocessor> for PortfolioMessageHandler {
|
||||||
fn process_action(&mut self, message: DocumentsMessage, ipp: &InputPreprocessor, responses: &mut VecDeque<Message>) {
|
fn process_action(&mut self, message: PortfolioMessage, ipp: &InputPreprocessor, responses: &mut VecDeque<Message>) {
|
||||||
use DocumentMessage::*;
|
use DocumentMessage::*;
|
||||||
use DocumentsMessage::*;
|
use PortfolioMessage::*;
|
||||||
match message {
|
match message {
|
||||||
RequestAboutGraphiteDialog => {
|
RequestAboutGraphiteDialog => {
|
||||||
responses.push_back(FrontendMessage::DisplayAboutGraphiteDialog.into());
|
responses.push_back(FrontendMessage::DisplayAboutGraphiteDialog.into());
|
||||||
@@ -187,7 +187,7 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
SelectDocument(id) => {
|
SelectDocument(id) => {
|
||||||
let active_document = self.active_document();
|
let active_document = self.active_document();
|
||||||
if !active_document.is_saved() {
|
if !active_document.is_saved() {
|
||||||
responses.push_back(DocumentsMessage::AutoSaveDocument(self.active_document_id).into());
|
responses.push_back(PortfolioMessage::AutoSaveDocument(self.active_document_id).into());
|
||||||
}
|
}
|
||||||
self.active_document_id = id;
|
self.active_document_id = id;
|
||||||
responses.push_back(FrontendMessage::SetActiveDocument { document_id: id }.into());
|
responses.push_back(FrontendMessage::SetActiveDocument { document_id: id }.into());
|
||||||
@@ -199,16 +199,16 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
responses.push_back(ToolMessage::DocumentIsDirty.into());
|
responses.push_back(ToolMessage::DocumentIsDirty.into());
|
||||||
}
|
}
|
||||||
CloseActiveDocumentWithConfirmation => {
|
CloseActiveDocumentWithConfirmation => {
|
||||||
responses.push_back(DocumentsMessage::CloseDocumentWithConfirmation(self.active_document_id).into());
|
responses.push_back(PortfolioMessage::CloseDocumentWithConfirmation(self.active_document_id).into());
|
||||||
}
|
}
|
||||||
CloseDocumentWithConfirmation(id) => {
|
CloseDocumentWithConfirmation(id) => {
|
||||||
let target_document = self.documents.get(&id).unwrap();
|
let target_document = self.documents.get(&id).unwrap();
|
||||||
if target_document.is_saved() {
|
if target_document.is_saved() {
|
||||||
responses.push_back(DocumentsMessage::CloseDocument(id).into());
|
responses.push_back(PortfolioMessage::CloseDocument(id).into());
|
||||||
} else {
|
} else {
|
||||||
responses.push_back(FrontendMessage::DisplayConfirmationToCloseDocument { document_id: id }.into());
|
responses.push_back(FrontendMessage::DisplayConfirmationToCloseDocument { document_id: id }.into());
|
||||||
// Select the document being closed
|
// Select the document being closed
|
||||||
responses.push_back(DocumentsMessage::SelectDocument(id).into());
|
responses.push_back(PortfolioMessage::SelectDocument(id).into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CloseAllDocumentsWithConfirmation => {
|
CloseAllDocumentsWithConfirmation => {
|
||||||
@@ -257,7 +257,7 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
// Update the list of new documents on the front end, active tab, and ensure that document renders
|
|
||||||
responses.push_back(FrontendMessage::UpdateOpenDocumentsList { open_documents }.into());
|
responses.push_back(FrontendMessage::UpdateOpenDocumentsList { open_documents }.into());
|
||||||
responses.push_back(FrontendMessage::SetActiveDocument { document_id: self.active_document_id }.into());
|
responses.push_back(FrontendMessage::SetActiveDocument { document_id: self.active_document_id }.into());
|
||||||
responses.push_back(FrontendMessage::RemoveAutoSaveDocument { document_id: id }.into());
|
responses.push_back(FrontendMessage::RemoveAutoSaveDocument { document_id: id }.into());
|
||||||
@@ -279,7 +279,7 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
}
|
}
|
||||||
OpenDocumentFile(document_name, document) => {
|
OpenDocumentFile(document_name, document) => {
|
||||||
responses.push_back(
|
responses.push_back(
|
||||||
DocumentsMessage::OpenDocumentFileWithId {
|
PortfolioMessage::OpenDocumentFileWithId {
|
||||||
document,
|
document,
|
||||||
document_name,
|
document_name,
|
||||||
document_id: generate_uuid(),
|
document_id: generate_uuid(),
|
||||||
@@ -339,19 +339,19 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
.into(),
|
.into(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
AutoSaveActiveDocument => responses.push_back(DocumentsMessage::AutoSaveDocument(self.active_document_id).into()),
|
AutoSaveActiveDocument => responses.push_back(PortfolioMessage::AutoSaveDocument(self.active_document_id).into()),
|
||||||
NextDocument => {
|
NextDocument => {
|
||||||
let current_index = self.document_index(self.active_document_id);
|
let current_index = self.document_index(self.active_document_id);
|
||||||
let next_index = (current_index + 1) % self.document_ids.len();
|
let next_index = (current_index + 1) % self.document_ids.len();
|
||||||
let next_id = self.document_ids[next_index];
|
let next_id = self.document_ids[next_index];
|
||||||
responses.push_back(DocumentsMessage::SelectDocument(next_id).into());
|
responses.push_back(PortfolioMessage::SelectDocument(next_id).into());
|
||||||
}
|
}
|
||||||
PrevDocument => {
|
PrevDocument => {
|
||||||
let len = self.document_ids.len();
|
let len = self.document_ids.len();
|
||||||
let current_index = self.document_index(self.active_document_id);
|
let current_index = self.document_index(self.active_document_id);
|
||||||
let prev_index = (current_index + len - 1) % len;
|
let prev_index = (current_index + len - 1) % len;
|
||||||
let prev_id = self.document_ids[prev_index];
|
let prev_id = self.document_ids[prev_index];
|
||||||
responses.push_back(DocumentsMessage::SelectDocument(prev_id).into());
|
responses.push_back(PortfolioMessage::SelectDocument(prev_id).into());
|
||||||
}
|
}
|
||||||
Copy(clipboard) => {
|
Copy(clipboard) => {
|
||||||
// We can't use `self.active_document()` because it counts as an immutable borrow of the entirety of `self`
|
// We can't use `self.active_document()` because it counts as an immutable borrow of the entirety of `self`
|
||||||
@@ -427,7 +427,7 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn actions(&self) -> ActionList {
|
fn actions(&self) -> ActionList {
|
||||||
let mut common = actions!(DocumentsMessageDiscriminant;
|
let mut common = actions!(PortfolioMessageDiscriminant;
|
||||||
NewDocument,
|
NewDocument,
|
||||||
CloseActiveDocumentWithConfirmation,
|
CloseActiveDocumentWithConfirmation,
|
||||||
CloseAllDocumentsWithConfirmation,
|
CloseAllDocumentsWithConfirmation,
|
||||||
@@ -439,7 +439,7 @@ impl MessageHandler<DocumentsMessage, &InputPreprocessor> for DocumentsMessageHa
|
|||||||
);
|
);
|
||||||
|
|
||||||
if self.active_document().layer_metadata.values().any(|data| data.selected) {
|
if self.active_document().layer_metadata.values().any(|data| data.selected) {
|
||||||
let select = actions!(DocumentsMessageDiscriminant;
|
let select = actions!(PortfolioMessageDiscriminant;
|
||||||
Copy,
|
Copy,
|
||||||
Cut,
|
Cut,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ impl Default for Mapping {
|
|||||||
// it as an available action in the respective message handler file (such as the bottom of `document_message_handler.rs`)
|
// it as an available action in the respective message handler file (such as the bottom of `document_message_handler.rs`)
|
||||||
let mappings = mapping![
|
let mappings = mapping![
|
||||||
// Higher priority than entries in sections below
|
// Higher priority than entries in sections below
|
||||||
entry! {action=DocumentsMessage::Paste(User), key_down=KeyV, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::Paste(User), key_down=KeyV, modifiers=[KeyControl]},
|
||||||
// Transform layers
|
// Transform layers
|
||||||
entry! {action=TransformLayerMessage::ApplyOperation, key_down=KeyEnter},
|
entry! {action=TransformLayerMessage::ApplyOperation, key_down=KeyEnter},
|
||||||
entry! {action=TransformLayerMessage::ApplyOperation, key_down=Lmb},
|
entry! {action=TransformLayerMessage::ApplyOperation, key_down=Lmb},
|
||||||
@@ -221,7 +221,7 @@ impl Default for Mapping {
|
|||||||
// Editor Actions
|
// Editor Actions
|
||||||
entry! {action=FrontendMessage::OpenDocumentBrowse, key_down=KeyO, modifiers=[KeyControl]},
|
entry! {action=FrontendMessage::OpenDocumentBrowse, key_down=KeyO, modifiers=[KeyControl]},
|
||||||
// Document Actions
|
// Document Actions
|
||||||
entry! {action=DocumentsMessage::Paste(User), key_down=KeyV, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::Paste(User), key_down=KeyV, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentMessage::Redo, key_down=KeyZ, modifiers=[KeyControl, KeyShift]},
|
entry! {action=DocumentMessage::Redo, key_down=KeyZ, modifiers=[KeyControl, KeyShift]},
|
||||||
entry! {action=DocumentMessage::Undo, key_down=KeyZ, modifiers=[KeyControl]},
|
entry! {action=DocumentMessage::Undo, key_down=KeyZ, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentMessage::DeselectAllLayers, key_down=KeyA, modifiers=[KeyControl, KeyAlt]},
|
entry! {action=DocumentMessage::DeselectAllLayers, key_down=KeyA, modifiers=[KeyControl, KeyAlt]},
|
||||||
@@ -260,14 +260,14 @@ impl Default for Mapping {
|
|||||||
entry! {action=MovementMessage::TranslateCanvasByViewportFraction(DVec2::new(0., 1.)), key_down=KeyPageUp},
|
entry! {action=MovementMessage::TranslateCanvasByViewportFraction(DVec2::new(0., 1.)), key_down=KeyPageUp},
|
||||||
entry! {action=MovementMessage::TranslateCanvasByViewportFraction(DVec2::new(0., -1.)), key_down=KeyPageDown},
|
entry! {action=MovementMessage::TranslateCanvasByViewportFraction(DVec2::new(0., -1.)), key_down=KeyPageDown},
|
||||||
// Document actions
|
// Document actions
|
||||||
entry! {action=DocumentsMessage::NewDocument, key_down=KeyN, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::NewDocument, key_down=KeyN, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentsMessage::NextDocument, key_down=KeyTab, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::NextDocument, key_down=KeyTab, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentsMessage::PrevDocument, key_down=KeyTab, modifiers=[KeyControl, KeyShift]},
|
entry! {action=PortfolioMessage::PrevDocument, key_down=KeyTab, modifiers=[KeyControl, KeyShift]},
|
||||||
entry! {action=DocumentsMessage::CloseAllDocumentsWithConfirmation, key_down=KeyW, modifiers=[KeyControl, KeyAlt]},
|
entry! {action=PortfolioMessage::CloseAllDocumentsWithConfirmation, key_down=KeyW, modifiers=[KeyControl, KeyAlt]},
|
||||||
entry! {action=DocumentsMessage::CloseActiveDocumentWithConfirmation, key_down=KeyW, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::CloseActiveDocumentWithConfirmation, key_down=KeyW, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentMessage::DuplicateSelectedLayers, key_down=KeyD, modifiers=[KeyControl]},
|
entry! {action=DocumentMessage::DuplicateSelectedLayers, key_down=KeyD, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentsMessage::Copy(User), key_down=KeyC, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::Copy(User), key_down=KeyC, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentsMessage::Cut(User), key_down=KeyX, modifiers=[KeyControl]},
|
entry! {action=PortfolioMessage::Cut(User), key_down=KeyX, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentMessage::GroupSelectedLayers, key_down=KeyG, modifiers=[KeyControl]},
|
entry! {action=DocumentMessage::GroupSelectedLayers, key_down=KeyG, modifiers=[KeyControl]},
|
||||||
entry! {action=DocumentMessage::UngroupSelectedLayers, key_down=KeyG, modifiers=[KeyControl, KeyShift]},
|
entry! {action=DocumentMessage::UngroupSelectedLayers, key_down=KeyG, modifiers=[KeyControl, KeyShift]},
|
||||||
// Nudging
|
// Nudging
|
||||||
|
|||||||
+1
-1
@@ -60,9 +60,9 @@ pub mod message_prelude {
|
|||||||
pub use crate::document::Clipboard;
|
pub use crate::document::Clipboard;
|
||||||
pub use crate::document::{ArtboardMessage, ArtboardMessageDiscriminant};
|
pub use crate::document::{ArtboardMessage, ArtboardMessageDiscriminant};
|
||||||
pub use crate::document::{DocumentMessage, DocumentMessageDiscriminant};
|
pub use crate::document::{DocumentMessage, DocumentMessageDiscriminant};
|
||||||
pub use crate::document::{DocumentsMessage, DocumentsMessageDiscriminant};
|
|
||||||
pub use crate::document::{MovementMessage, MovementMessageDiscriminant};
|
pub use crate::document::{MovementMessage, MovementMessageDiscriminant};
|
||||||
pub use crate::document::{OverlayMessage, OverlayMessageDiscriminant};
|
pub use crate::document::{OverlayMessage, OverlayMessageDiscriminant};
|
||||||
|
pub use crate::document::{PortfolioMessage, PortfolioMessageDiscriminant};
|
||||||
pub use crate::document::{TransformLayerMessage, TransformLayerMessageDiscriminant};
|
pub use crate::document::{TransformLayerMessage, TransformLayerMessageDiscriminant};
|
||||||
pub use crate::frontend::{FrontendMessage, FrontendMessageDiscriminant};
|
pub use crate::frontend::{FrontendMessage, FrontendMessageDiscriminant};
|
||||||
pub use crate::global::{GlobalMessage, GlobalMessageDiscriminant};
|
pub use crate::global::{GlobalMessage, GlobalMessageDiscriminant};
|
||||||
|
|||||||
+16
-16
@@ -143,32 +143,32 @@ impl JsEditorHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn select_document(&self, document_id: u64) {
|
pub fn select_document(&self, document_id: u64) {
|
||||||
let message = DocumentsMessage::SelectDocument(document_id);
|
let message = PortfolioMessage::SelectDocument(document_id);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_open_documents_list(&self) {
|
pub fn get_open_documents_list(&self) {
|
||||||
let message = DocumentsMessage::UpdateOpenDocumentsList;
|
let message = PortfolioMessage::UpdateOpenDocumentsList;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_document(&self) {
|
pub fn new_document(&self) {
|
||||||
let message = DocumentsMessage::NewDocument;
|
let message = PortfolioMessage::NewDocument;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn open_document(&self) {
|
pub fn open_document(&self) {
|
||||||
let message = DocumentsMessage::OpenDocument;
|
let message = PortfolioMessage::OpenDocument;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn open_document_file(&self, name: String, content: String) {
|
pub fn open_document_file(&self, name: String, content: String) {
|
||||||
let message = DocumentsMessage::OpenDocumentFile(name, content);
|
let message = PortfolioMessage::OpenDocumentFile(name, content);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn open_auto_saved_document(&self, document_id: u64, document_name: String, document_is_saved: bool, document: String) {
|
pub fn open_auto_saved_document(&self, document_id: u64, document_name: String, document_is_saved: bool, document: String) {
|
||||||
let message = DocumentsMessage::OpenDocumentFileWithId {
|
let message = PortfolioMessage::OpenDocumentFileWithId {
|
||||||
document_id,
|
document_id,
|
||||||
document_name,
|
document_name,
|
||||||
document_is_saved,
|
document_is_saved,
|
||||||
@@ -183,38 +183,38 @@ impl JsEditorHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn trigger_auto_save(&self, document_id: u64) {
|
pub fn trigger_auto_save(&self, document_id: u64) {
|
||||||
let message = DocumentsMessage::AutoSaveDocument(document_id);
|
let message = PortfolioMessage::AutoSaveDocument(document_id);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_document(&self, document_id: u64) {
|
pub fn close_document(&self, document_id: u64) {
|
||||||
let message = DocumentsMessage::CloseDocument(document_id);
|
let message = PortfolioMessage::CloseDocument(document_id);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_all_documents(&self) {
|
pub fn close_all_documents(&self) {
|
||||||
let message = DocumentsMessage::CloseAllDocuments;
|
let message = PortfolioMessage::CloseAllDocuments;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_active_document_with_confirmation(&self) {
|
pub fn close_active_document_with_confirmation(&self) {
|
||||||
let message = DocumentsMessage::CloseActiveDocumentWithConfirmation;
|
let message = PortfolioMessage::CloseActiveDocumentWithConfirmation;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_document_with_confirmation(&self, document_id: u64) {
|
pub fn close_document_with_confirmation(&self, document_id: u64) {
|
||||||
let message = DocumentsMessage::CloseDocumentWithConfirmation(document_id);
|
let message = PortfolioMessage::CloseDocumentWithConfirmation(document_id);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_all_documents_with_confirmation(&self) {
|
pub fn close_all_documents_with_confirmation(&self) {
|
||||||
let message = DocumentsMessage::CloseAllDocumentsWithConfirmation;
|
let message = PortfolioMessage::CloseAllDocumentsWithConfirmation;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn request_about_graphite_dialog(&self) {
|
pub fn request_about_graphite_dialog(&self) {
|
||||||
let message = DocumentsMessage::RequestAboutGraphiteDialog;
|
let message = PortfolioMessage::RequestAboutGraphiteDialog;
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,19 +343,19 @@ impl JsEditorHandle {
|
|||||||
|
|
||||||
/// Cut selected layers
|
/// Cut selected layers
|
||||||
pub fn cut(&self) {
|
pub fn cut(&self) {
|
||||||
let message = DocumentsMessage::Cut(Clipboard::User);
|
let message = PortfolioMessage::Cut(Clipboard::User);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Copy selected layers
|
/// Copy selected layers
|
||||||
pub fn copy(&self) {
|
pub fn copy(&self) {
|
||||||
let message = DocumentsMessage::Copy(Clipboard::User);
|
let message = PortfolioMessage::Copy(Clipboard::User);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Paste selected layers
|
/// Paste selected layers
|
||||||
pub fn paste(&self) {
|
pub fn paste(&self) {
|
||||||
let message = DocumentsMessage::Paste(Clipboard::User);
|
let message = PortfolioMessage::Paste(Clipboard::User);
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user