Add option to toggle ruler visibility (#1479)

* Sending Toggle Ruler message and setting visibility. Text and markers not working

* Added resize on mount for Ruler Input

* Set default for rulers_visible to pass test

* Ruler Visibility portfolio wide instead of document

* Sending Toggle Ruler message and setting visibility. Text and markers not working

* Ruler Visibility portfolio wide instead of document

* Cleanup

* Reorganize the View menu bar; add toggle rulers hotkey

* Remove non-working redundant bools, and make rulers set per-document

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
Bijay Shrestha
2023-11-28 03:34:23 -08:00
committed by GitHub
co-authored by Keavon Chambers
parent 4fdf8410cf
commit 4fead6e7ec
9 changed files with 68 additions and 17 deletions
@@ -6,14 +6,15 @@ use crate::messages::prelude::*;
#[derive(Debug, Clone, Default)]
pub struct MenuBarMessageHandler {
no_active_document: bool,
rulers_hidden: bool,
}
impl MessageHandler<MenuBarMessage, bool> for MenuBarMessageHandler {
impl MessageHandler<MenuBarMessage, (bool, bool)> for MenuBarMessageHandler {
#[remain::check]
fn process_message(&mut self, message: MenuBarMessage, responses: &mut VecDeque<Message>, has_active_document: bool) {
fn process_message(&mut self, message: MenuBarMessage, responses: &mut VecDeque<Message>, (has_active_document, rulers_hidden): (bool, bool)) {
use MenuBarMessage::*;
self.no_active_document = !has_active_document;
self.rulers_hidden = rulers_hidden;
#[remain::sorted]
match message {
SendLayout => self.send_layout(responses, LayoutTarget::MenuBar),
@@ -289,8 +290,17 @@ impl LayoutHolder for MenuBarMessageHandler {
disabled: no_active_document,
..MenuBarEntry::default()
},
],
vec![
MenuBarEntry {
label: "Zoom to Fit".into(),
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 All".into(),
shortcut: action_keys!(DocumentMessageDiscriminant::ZoomCanvasToFitAll),
action: MenuBarEntry::create_action(|_| DocumentMessage::ZoomCanvasToFitAll.into()),
disabled: no_active_document,
@@ -312,9 +322,10 @@ impl LayoutHolder for MenuBarMessageHandler {
},
],
vec![MenuBarEntry {
label: "Frame Selected".into(),
shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection),
action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()),
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()
}],