Skip to content

Commit 16b6fc8

Browse files
committed
Sending Toggle Ruler message and setting visibility. Text and markers not working
1 parent 94fcd29 commit 16b6fc8

7 files changed

Lines changed: 63 additions & 16 deletions

File tree

editor/src/messages/frontend/frontend_message.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ pub enum FrontendMessage {
173173
origin: (f64, f64),
174174
spacing: f64,
175175
interval: f64,
176+
visible: bool,
176177
},
177178
UpdateDocumentScrollbars {
178179
position: (f64, f64),

editor/src/messages/portfolio/document/document_message.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ pub enum DocumentMessage {
190190
ToggleLayerVisibility {
191191
layer_path: Vec<LayerId>,
192192
},
193+
ToggleRulers,
193194
Undo,
194195
UndoFinished,
195196
UngroupSelectedLayers,

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pub struct DocumentMessageHandler {
4040

4141
pub document_mode: DocumentMode,
4242
pub view_mode: ViewMode,
43+
pub rulers_visible: bool,
4344
#[serde(skip)]
4445
pub snapping_state: SnappingState,
4546
pub overlays_visible: bool,
@@ -79,6 +80,7 @@ impl Default for DocumentMessageHandler {
7980

8081
document_mode: DocumentMode::DesignMode,
8182
view_mode: ViewMode::default(),
83+
rulers_visible: true,
8284
snapping_state: SnappingState::default(),
8385
overlays_visible: true,
8486

@@ -614,6 +616,7 @@ impl MessageHandler<DocumentMessage, DocumentInputs<'_>> for DocumentMessageHand
614616
origin: ruler_origin.into(),
615617
spacing: ruler_spacing,
616618
interval: ruler_interval,
619+
visible: self.rulers_visible,
617620
});
618621
}
619622
RenderScrollbars => {
@@ -828,6 +831,25 @@ impl MessageHandler<DocumentMessage, DocumentInputs<'_>> for DocumentMessageHand
828831
responses.add(BroadcastEvent::DocumentIsDirty);
829832
}
830833
}
834+
ToggleRulers => {
835+
self.rulers_visible = !self.rulers_visible;
836+
responses.add(DocumentMessage::RenderRulers);
837+
responses.add(DocumentMessage::RenderScrollbars);
838+
// let document_transform_scale = self.navigation_handler.snapped_scale();
839+
//
840+
// let ruler_origin = self.metadata().document_to_viewport.transform_point2(DVec2::ZERO);
841+
// let log = document_transform_scale.log2();
842+
// let ruler_interval = if log < 0. { 100. * 2_f64.powf(-log.ceil()) } else { 100. / 2_f64.powf(log.ceil()) };
843+
// let ruler_spacing = ruler_interval * document_transform_scale;
844+
//
845+
// responses.add(FrontendMessage::UpdateDocumentRulers {
846+
// origin: ruler_origin.into(),
847+
// spacing: ruler_spacing,
848+
// interval: ruler_interval,
849+
// visible: self.rulers_visible,
850+
// });
851+
// info!(responses);
852+
}
831853
Undo => {
832854
self.undo_in_progress = true;
833855
responses.add(BroadcastEvent::ToolAbort);

editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -311,13 +311,22 @@ impl LayoutHolder for MenuBarMessageHandler {
311311
..MenuBarEntry::default()
312312
},
313313
],
314-
vec![MenuBarEntry {
315-
label: "Frame Selected".into(),
316-
shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection),
317-
action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()),
318-
disabled: no_active_document,
319-
..MenuBarEntry::default()
320-
}],
314+
vec![
315+
MenuBarEntry {
316+
label: "Frame Selected".into(),
317+
shortcut: action_keys!(NavigationMessageDiscriminant::FitViewportToSelection),
318+
action: MenuBarEntry::create_action(|_| NavigationMessage::FitViewportToSelection.into()),
319+
disabled: no_active_document,
320+
..MenuBarEntry::default()
321+
},
322+
MenuBarEntry {
323+
label: "Ruler".into(),
324+
shortcut: action_keys!(DocumentMessageDiscriminant::ToggleRulers),
325+
action: MenuBarEntry::create_action(|_| DocumentMessage::ToggleRulers.into()),
326+
disabled: no_active_document,
327+
..MenuBarEntry::default()
328+
},
329+
],
321330
]),
322331
),
323332
MenuBarEntry::new_root(

frontend/src/components/panels/Document.svelte

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
let rulerOrigin: XY = { x: 0, y: 0 };
5858
let rulerSpacing = 100;
5959
let rulerInterval = 100;
60+
let rulersVisible = true;
6061
6162
// Rendered SVG viewport data
6263
let artworkSvg = "";
@@ -213,10 +214,11 @@
213214
scrollbarMultiplier = multiplier;
214215
}
215216
216-
export function updateDocumentRulers(origin: XY, spacing: number, interval: number) {
217+
export function updateDocumentRulers(origin: XY, spacing: number, interval: number, visible: boolean) {
217218
rulerOrigin = origin;
218219
rulerSpacing = spacing;
219220
rulerInterval = interval;
221+
rulersVisible = visible;
220222
}
221223
222224
// Update mouse cursor icon
@@ -371,8 +373,8 @@
371373
editor.subscriptions.subscribeJsMessage(UpdateDocumentRulers, async (data) => {
372374
await tick();
373375
374-
const { origin, spacing, interval } = data;
375-
updateDocumentRulers(origin, spacing, interval);
376+
const { origin, spacing, interval, visible } = data;
377+
updateDocumentRulers(origin, spacing, interval, visible);
376378
});
377379
378380
// Update mouse cursor icon
@@ -440,13 +442,17 @@
440442
</LayoutCol>
441443
</LayoutCol>
442444
<LayoutCol class="table">
443-
<LayoutRow class="ruler-or-scrollbar top-ruler">
444-
<RulerInput origin={rulerOrigin.x} majorMarkSpacing={rulerSpacing} numberInterval={rulerInterval} direction="Horizontal" bind:this={rulerHorizontal} />
445-
</LayoutRow>
445+
{#if rulersVisible}
446+
<LayoutRow class="ruler-or-scrollbar top-ruler">
447+
<RulerInput origin={rulerOrigin.x} majorMarkSpacing={rulerSpacing} numberInterval={rulerInterval} direction="Horizontal" bind:this={rulerHorizontal} />
448+
</LayoutRow>
449+
{/if}
446450
<LayoutRow class="viewport-container">
447-
<LayoutCol class="ruler-or-scrollbar">
448-
<RulerInput origin={rulerOrigin.y} majorMarkSpacing={rulerSpacing} numberInterval={rulerInterval} direction="Vertical" bind:this={rulerVertical} />
449-
</LayoutCol>
451+
{#if rulersVisible}
452+
<LayoutCol class="ruler-or-scrollbar">
453+
<RulerInput origin={rulerOrigin.y} majorMarkSpacing={rulerSpacing} numberInterval={rulerInterval} direction="Vertical" bind:this={rulerVertical} />
454+
</LayoutCol>
455+
{/if}
450456
<LayoutCol class="viewport-container" styles={{ cursor: canvasCursor }}>
451457
{#if cursorEyedropper}
452458
<EyedropperPreview

frontend/src/wasm-communication/messages.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,8 @@ export class UpdateDocumentRulers extends JsMessage {
473473
readonly spacing!: number;
474474

475475
readonly interval!: number;
476+
477+
readonly visible!: boolean;
476478
}
477479

478480
export class UpdateEyedropperSamplingState extends JsMessage {

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)