From c9881a9db7fe24fa67ad97bfed1b1048a7b87d21 Mon Sep 17 00:00:00 2001 From: Bijay Shrestha Date: Sun, 26 Nov 2023 20:02:34 +0545 Subject: [PATCH 1/9] Sending Toggle Ruler message and setting visibility. Text and markers not working --- .../src/messages/frontend/frontend_message.rs | 1 + .../portfolio/document/document_message.rs | 1 + .../document/document_message_handler.rs | 22 +++++++++++++++++ .../menu_bar/menu_bar_message_handler.rs | 23 ++++++++++++------ .../src/components/panels/Document.svelte | 24 ++++++++++++------- frontend/src/wasm-communication/messages.ts | 2 ++ package-lock.json | 6 +++++ 7 files changed, 63 insertions(+), 16 deletions(-) create mode 100644 package-lock.json diff --git a/editor/src/messages/frontend/frontend_message.rs b/editor/src/messages/frontend/frontend_message.rs index ea04e0ae20..30cff95c35 100644 --- a/editor/src/messages/frontend/frontend_message.rs +++ b/editor/src/messages/frontend/frontend_message.rs @@ -173,6 +173,7 @@ pub enum FrontendMessage { origin: (f64, f64), spacing: f64, interval: f64, + visible: bool, }, UpdateDocumentScrollbars { position: (f64, f64), diff --git a/editor/src/messages/portfolio/document/document_message.rs b/editor/src/messages/portfolio/document/document_message.rs index a23657ce5a..37cbdb5a63 100644 --- a/editor/src/messages/portfolio/document/document_message.rs +++ b/editor/src/messages/portfolio/document/document_message.rs @@ -187,6 +187,7 @@ pub enum DocumentMessage { ToggleLayerExpansion { layer: NodeId, }, + ToggleRulers, Undo, UndoFinished, UngroupSelectedLayers, diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index c27f63bac9..5276695188 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -40,6 +40,7 @@ pub struct DocumentMessageHandler { pub document_mode: DocumentMode, pub view_mode: ViewMode, + pub rulers_visible: bool, #[serde(skip)] pub snapping_state: SnappingState, pub overlays_visible: bool, @@ -79,6 +80,7 @@ impl Default for DocumentMessageHandler { document_mode: DocumentMode::DesignMode, view_mode: ViewMode::default(), + rulers_visible: true, snapping_state: SnappingState::default(), overlays_visible: true, @@ -614,6 +616,7 @@ impl MessageHandler> for DocumentMessageHand origin: ruler_origin.into(), spacing: ruler_spacing, interval: ruler_interval, + visible: self.rulers_visible, }); } RenderScrollbars => { @@ -825,6 +828,25 @@ impl MessageHandler> for DocumentMessageHand } responses.add(NodeGraphMessage::RunDocumentGraph); } + ToggleRulers => { + self.rulers_visible = !self.rulers_visible; + responses.add(DocumentMessage::RenderRulers); + responses.add(DocumentMessage::RenderScrollbars); + // let document_transform_scale = self.navigation_handler.snapped_scale(); + // + // let ruler_origin = self.metadata().document_to_viewport.transform_point2(DVec2::ZERO); + // let log = document_transform_scale.log2(); + // let ruler_interval = if log < 0. { 100. * 2_f64.powf(-log.ceil()) } else { 100. / 2_f64.powf(log.ceil()) }; + // let ruler_spacing = ruler_interval * document_transform_scale; + // + // responses.add(FrontendMessage::UpdateDocumentRulers { + // origin: ruler_origin.into(), + // spacing: ruler_spacing, + // interval: ruler_interval, + // visible: self.rulers_visible, + // }); + // info!(responses); + } Undo => { self.undo_in_progress = true; responses.add(BroadcastEvent::ToolAbort); diff --git a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs index aed125a53e..9768b6f57c 100644 --- a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs +++ b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs @@ -311,13 +311,22 @@ impl LayoutHolder for MenuBarMessageHandler { ..MenuBarEntry::default() }, ], - vec![MenuBarEntry { - label: "Frame Selected".into(), - shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection), - action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()), - disabled: no_active_document, - ..MenuBarEntry::default() - }], + vec![ + MenuBarEntry { + label: "Frame Selected".into(), + shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection), + action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()), + disabled: no_active_document, + ..MenuBarEntry::default() + }, + MenuBarEntry { + label: "Ruler".into(), + shortcut: action_keys!(DocumentMessageDiscriminant::ToggleRulers), + action: MenuBarEntry::create_action(|_| DocumentMessage::ToggleRulers.into()), + disabled: no_active_document, + ..MenuBarEntry::default() + }, + ], ]), ), MenuBarEntry::new_root( diff --git a/frontend/src/components/panels/Document.svelte b/frontend/src/components/panels/Document.svelte index cc6089739d..254dbfeb02 100644 --- a/frontend/src/components/panels/Document.svelte +++ b/frontend/src/components/panels/Document.svelte @@ -57,6 +57,7 @@ let rulerOrigin: XY = { x: 0, y: 0 }; let rulerSpacing = 100; let rulerInterval = 100; + let rulersVisible = true; // Rendered SVG viewport data let artworkSvg = ""; @@ -213,10 +214,11 @@ scrollbarMultiplier = multiplier; } - export function updateDocumentRulers(origin: XY, spacing: number, interval: number) { + export function updateDocumentRulers(origin: XY, spacing: number, interval: number, visible: boolean) { rulerOrigin = origin; rulerSpacing = spacing; rulerInterval = interval; + rulersVisible = visible; } // Update mouse cursor icon @@ -371,8 +373,8 @@ editor.subscriptions.subscribeJsMessage(UpdateDocumentRulers, async (data) => { await tick(); - const { origin, spacing, interval } = data; - updateDocumentRulers(origin, spacing, interval); + const { origin, spacing, interval, visible } = data; + updateDocumentRulers(origin, spacing, interval, visible); }); // Update mouse cursor icon @@ -440,13 +442,17 @@ - - - + {#if rulersVisible} + + + + {/if} - - - + {#if rulersVisible} + + + + {/if} {#if cursorEyedropper} Date: Mon, 27 Nov 2023 09:11:13 +0545 Subject: [PATCH 2/9] Added resize on mount for Ruler Input --- frontend/src/components/widgets/inputs/RulerInput.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/components/widgets/inputs/RulerInput.svelte b/frontend/src/components/widgets/inputs/RulerInput.svelte index 438a55ae7c..f2115ac6ca 100644 --- a/frontend/src/components/widgets/inputs/RulerInput.svelte +++ b/frontend/src/components/widgets/inputs/RulerInput.svelte @@ -3,6 +3,9 @@
diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 03a040c65f..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "Graphite", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} From f40230505c5119c7c89ef92c1b071e443328d3a8 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Tue, 28 Nov 2023 03:26:40 -0800 Subject: [PATCH 8/9] Reorganize the View menu bar; add toggle rulers hotkey --- .../messages/input_mapper/default_mapping.rs | 1 + .../menu_bar/menu_bar_message_handler.rs | 36 +++++++++---------- .../portfolio/portfolio_message_handler.rs | 1 + 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/editor/src/messages/input_mapper/default_mapping.rs b/editor/src/messages/input_mapper/default_mapping.rs index 2f197319e9..1244447cab 100644 --- a/editor/src/messages/input_mapper/default_mapping.rs +++ b/editor/src/messages/input_mapper/default_mapping.rs @@ -343,6 +343,7 @@ pub fn default_mapping() -> Mapping { entry!(KeyDown(KeyI); modifiers=[Accel], action_dispatch=PortfolioMessage::Import), entry!(KeyDown(KeyX); modifiers=[Accel], action_dispatch=PortfolioMessage::Cut { clipboard: Clipboard::Device }), entry!(KeyDown(KeyC); modifiers=[Accel], action_dispatch=PortfolioMessage::Copy { clipboard: Clipboard::Device }), + entry!(KeyDown(KeyR); modifiers=[Alt], action_dispatch=PortfolioMessage::ToggleRulers), // // FrontendMessage entry!(KeyDown(KeyV); modifiers=[Accel], action_dispatch=FrontendMessage::TriggerPaste), diff --git a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs index af4c08ac9b..083f35a1cc 100644 --- a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs +++ b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs @@ -290,8 +290,17 @@ impl LayoutHolder for MenuBarMessageHandler { disabled: no_active_document, ..MenuBarEntry::default() }, + ], + vec![ + MenuBarEntry { + label: "Zoom to Fit Selection".into(), + shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection), + action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()), + disabled: no_active_document, + ..MenuBarEntry::default() + }, MenuBarEntry { - label: "Zoom to Fit".into(), + label: "Zoom to Fit All".into(), shortcut: action_keys!(DocumentMessageDiscriminant::ZoomCanvasToFitAll), action: MenuBarEntry::create_action(|_| DocumentMessage::ZoomCanvasToFitAll.into()), disabled: no_active_document, @@ -312,23 +321,14 @@ impl LayoutHolder for MenuBarMessageHandler { ..MenuBarEntry::default() }, ], - vec![ - MenuBarEntry { - label: "Frame Selected".into(), - shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection), - action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()), - disabled: no_active_document, - ..MenuBarEntry::default() - }, - MenuBarEntry { - label: "Ruler".into(), - icon: Some(if self.rulers_hidden { "CheckboxUnchecked" } else { "CheckboxChecked" }.into()), - shortcut: action_keys!(PortfolioMessageDiscriminant::ToggleRulers), - action: MenuBarEntry::create_action(|_| PortfolioMessage::ToggleRulers.into()), - disabled: no_active_document, - ..MenuBarEntry::default() - }, - ], + vec![MenuBarEntry { + label: "Rulers".into(), + icon: Some(if self.rulers_hidden { "CheckboxUnchecked" } else { "CheckboxChecked" }.into()), + shortcut: action_keys!(PortfolioMessageDiscriminant::ToggleRulers), + action: MenuBarEntry::create_action(|_| PortfolioMessage::ToggleRulers.into()), + disabled: no_active_document, + ..MenuBarEntry::default() + }], ]), ), MenuBarEntry::new_root( diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index 8c836d711d..7ce5856540 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -560,6 +560,7 @@ impl MessageHandler Date: Tue, 28 Nov 2023 03:27:57 -0800 Subject: [PATCH 9/9] Remove non-working redundant bools, and make rulers set per-document --- .../document/document_message_handler.rs | 4 +--- .../portfolio/portfolio_message_handler.rs | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index ac08096b94..d01be3937f 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -112,7 +112,6 @@ pub struct DocumentInputs<'a> { pub persistent_data: &'a PersistentData, pub executor: &'a mut NodeGraphExecutor, pub graph_view_overlay_open: bool, - pub rulers_visible: bool, } impl MessageHandler> for DocumentMessageHandler { @@ -124,10 +123,9 @@ impl MessageHandler> for DocumentMessageHand persistent_data, executor, graph_view_overlay_open, - rulers_visible, } = document_inputs; use DocumentMessage::*; - self.rulers_visible = rulers_visible; + let render_data = RenderData::new(&persistent_data.font_cache, self.view_mode, Some(ipp.document_bounds())); #[remain::sorted] diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index 7ce5856540..e3df517d73 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -23,7 +23,6 @@ pub struct PortfolioMessageHandler { documents: HashMap, document_ids: Vec, active_document_id: Option, - rulers_hidden: bool, graph_view_overlay_open: bool, copy_buffer: [Vec; INTERNAL_CLIPBOARD_COUNT as usize], pub persistent_data: PersistentData, @@ -39,7 +38,13 @@ impl MessageHandler self.menu_bar_message_handler.process_message(message, responses, (has_active_document, self.rulers_hidden)), + PortfolioMessage::MenuBar(message) => { + if let Some(document_id) = self.active_document_id { + if let Some(document) = self.documents.get_mut(&document_id) { + self.menu_bar_message_handler.process_message(message, responses, (has_active_document, document.rulers_visible)); + } + } + } #[remain::unsorted] PortfolioMessage::Document(message) => { if let Some(document_id) = self.active_document_id { @@ -50,7 +55,6 @@ impl MessageHandler { - self.rulers_hidden = !self.rulers_hidden; - responses.add(DocumentMessage::RenderRulers); - responses.add(MenuBarMessage::SendLayout); + if let Some(document) = self.active_document_mut() { + document.rulers_visible = !document.rulers_visible; + + responses.add(DocumentMessage::RenderRulers); + responses.add(MenuBarMessage::SendLayout); + } } PortfolioMessage::UpdateDocumentWidgets => { if let Some(document) = self.active_document() {