Skip to content

Commit 00236c8

Browse files
MohdMohsin97Keavon
andauthored
Generate a visualization of the editor's hierarchical message system tree (#2499)
* Feat: implement the hierarchical tree for visualization * rename HierarchicalTree trait function * feat: change the HierarchicalTree from String to DebugMessageTree struct * Nits * feat: impliment proc macro to extract field from messagedata structs * update the hierarchical-tree for hanlder data * feat: added message handler struct to hierarchical tree * feat: add the line number to message handler struct * feat: added handler path to tree and NITS * clean the white spaces in type string * fixes some white spaces * feat: added path to message enum in hierarchical tree * feat: add file creation of hierarchical message system tree * cleanup * Code review * Add todo comment for deferred change --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
1 parent d0e1d89 commit 00236c8

File tree

50 files changed

+640
-42
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+640
-42
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ profile.json
66
flamegraph.svg
77
.idea/
88
.direnv
9+
hierarchical_message_system_tree.txt

editor/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ pub mod node_graph_executor;
1515
#[cfg(test)]
1616
pub mod test_utils;
1717
pub mod utility_traits;
18+
pub mod utility_types;

editor/src/messages/animation/animation_message_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ enum AnimationState {
2424
},
2525
}
2626

27-
#[derive(Default, Debug, Clone, PartialEq)]
27+
#[derive(Default, Debug, Clone, PartialEq, ExtractField)]
2828
pub struct AnimationMessageHandler {
2929
/// Used to re-send the UI on the next frame after playback starts
3030
live_preview_recently_zero: bool,
@@ -57,6 +57,7 @@ impl AnimationMessageHandler {
5757
}
5858
}
5959

60+
#[message_handler_data]
6061
impl MessageHandler<AnimationMessage, ()> for AnimationMessageHandler {
6162
fn process_message(&mut self, message: AnimationMessage, responses: &mut VecDeque<Message>, _data: ()) {
6263
match message {

editor/src/messages/broadcast/broadcast_message_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use crate::messages::prelude::*;
22

3-
#[derive(Debug, Clone, Default)]
3+
#[derive(Debug, Clone, Default, ExtractField)]
44
pub struct BroadcastMessageHandler {
55
listeners: HashMap<BroadcastEvent, Vec<Message>>,
66
}
77

8+
#[message_handler_data]
89
impl MessageHandler<BroadcastMessage, ()> for BroadcastMessageHandler {
910
fn process_message(&mut self, message: BroadcastMessage, responses: &mut VecDeque<Message>, _data: ()) {
1011
match message {

editor/src/messages/debug/debug_message_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use super::utility_types::MessageLoggingVerbosity;
22
use crate::messages::prelude::*;
33

4-
#[derive(Debug, Default)]
4+
#[derive(Debug, Default, ExtractField)]
55
pub struct DebugMessageHandler {
66
pub message_logging_verbosity: MessageLoggingVerbosity,
77
}
88

9+
#[message_handler_data]
910
impl MessageHandler<DebugMessage, ()> for DebugMessageHandler {
1011
fn process_message(&mut self, message: DebugMessage, responses: &mut VecDeque<Message>, _data: ()) {
1112
match message {

editor/src/messages/dialog/dialog_message_handler.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ use super::simple_dialogs::{self, AboutGraphiteDialog, ComingSoonDialog, DemoArt
22
use crate::messages::layout::utility_types::widget_prelude::*;
33
use crate::messages::prelude::*;
44

5+
#[derive(ExtractField)]
56
pub struct DialogMessageData<'a> {
67
pub portfolio: &'a PortfolioMessageHandler,
78
pub preferences: &'a PreferencesMessageHandler,
89
}
910

1011
/// Stores the dialogs which require state. These are the ones that have their own message handlers, and are not the ones defined in `simple_dialogs`.
11-
#[derive(Debug, Default, Clone)]
12+
#[derive(Debug, Default, Clone, ExtractField)]
1213
pub struct DialogMessageHandler {
1314
export_dialog: ExportDialogMessageHandler,
1415
new_document_dialog: NewDocumentDialogMessageHandler,
1516
preferences_dialog: PreferencesDialogMessageHandler,
1617
}
1718

19+
#[message_handler_data]
1820
impl MessageHandler<DialogMessage, DialogMessageData<'_>> for DialogMessageHandler {
1921
fn process_message(&mut self, message: DialogMessage, responses: &mut VecDeque<Message>, data: DialogMessageData) {
2022
let DialogMessageData { portfolio, preferences } = data;

editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ use crate::messages::layout::utility_types::widget_prelude::*;
33
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
44
use crate::messages::prelude::*;
55

6+
#[derive(ExtractField)]
67
pub struct ExportDialogMessageData<'a> {
78
pub portfolio: &'a PortfolioMessageHandler,
89
}
910

1011
/// A dialog to allow users to customize their file export.
11-
#[derive(Debug, Clone)]
12+
#[derive(Debug, Clone, ExtractField)]
1213
pub struct ExportDialogMessageHandler {
1314
pub file_type: FileType,
1415
pub scale_factor: f64,
@@ -31,6 +32,7 @@ impl Default for ExportDialogMessageHandler {
3132
}
3233
}
3334

35+
#[message_handler_data]
3436
impl MessageHandler<ExportDialogMessage, ExportDialogMessageData<'_>> for ExportDialogMessageHandler {
3537
fn process_message(&mut self, message: ExportDialogMessage, responses: &mut VecDeque<Message>, data: ExportDialogMessageData) {
3638
let ExportDialogMessageData { portfolio } = data;

editor/src/messages/dialog/new_document_dialog/new_document_dialog_message_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ use glam::{IVec2, UVec2};
44
use graph_craft::document::NodeId;
55

66
/// A dialog to allow users to set some initial options about a new document.
7-
#[derive(Debug, Clone, Default)]
7+
#[derive(Debug, Clone, Default, ExtractField)]
88
pub struct NewDocumentDialogMessageHandler {
99
pub name: String,
1010
pub infinite: bool,
1111
pub dimensions: UVec2,
1212
}
1313

14+
#[message_handler_data]
1415
impl MessageHandler<NewDocumentDialogMessage, ()> for NewDocumentDialogMessageHandler {
1516
fn process_message(&mut self, message: NewDocumentDialogMessage, responses: &mut VecDeque<Message>, _data: ()) {
1617
match message {

editor/src/messages/dialog/preferences_dialog/preferences_dialog_message_handler.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ use crate::messages::portfolio::document::utility_types::wires::GraphWireStyle;
44
use crate::messages::preferences::SelectionMode;
55
use crate::messages::prelude::*;
66

7+
#[derive(ExtractField)]
78
pub struct PreferencesDialogMessageData<'a> {
89
pub preferences: &'a PreferencesMessageHandler,
910
}
1011

1112
/// A dialog to allow users to customize Graphite editor options
12-
#[derive(Debug, Clone, Default)]
13+
#[derive(Debug, Clone, Default, ExtractField)]
1314
pub struct PreferencesDialogMessageHandler {}
1415

16+
#[message_handler_data]
1517
impl MessageHandler<PreferencesDialogMessage, PreferencesDialogMessageData<'_>> for PreferencesDialogMessageHandler {
1618
fn process_message(&mut self, message: PreferencesDialogMessage, responses: &mut VecDeque<Message>, data: PreferencesDialogMessageData) {
1719
let PreferencesDialogMessageData { preferences } = data;

editor/src/messages/globals/globals_message_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use crate::messages::prelude::*;
22

3-
#[derive(Debug, Default)]
3+
#[derive(Debug, Default, ExtractField)]
44
pub struct GlobalsMessageHandler {}
55

6+
#[message_handler_data]
67
impl MessageHandler<GlobalsMessage, ()> for GlobalsMessageHandler {
78
fn process_message(&mut self, message: GlobalsMessage, _responses: &mut VecDeque<Message>, _data: ()) {
89
match message {

0 commit comments

Comments
 (0)