Skip to content

Commit 6017512

Browse files
committed
fixes #102, add control ui for overriding theme values
1 parent a26c22d commit 6017512

File tree

1 file changed

+95
-14
lines changed

1 file changed

+95
-14
lines changed

crates/notation_bevy/src/viewer/control.rs

Lines changed: 95 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -364,16 +364,6 @@ impl ControlView {
364364
CollapsingHeader::new("Display Options")
365365
.default_open(true)
366366
.show(ui, |ui| {
367-
let hide_bar_number = settings.hide_bar_number;
368-
ui.checkbox(&mut settings.hide_bar_number, "Hide Bar Number");
369-
if hide_bar_number != settings.hide_bar_number {
370-
Self::reload_tab(state, theme);
371-
}
372-
let always_show_fret = settings.always_show_fret;
373-
ui.checkbox(&mut settings.always_show_fret, "Always Show Fret");
374-
if always_show_fret != settings.always_show_fret {
375-
Self::reload_tab(state, theme);
376-
}
377367
let show_melody_syllable = settings.show_melody_syllable;
378368
ui.checkbox(&mut settings.show_melody_syllable, "Show Melody Syllable");
379369
if show_melody_syllable != settings.show_melody_syllable {
@@ -387,6 +377,16 @@ impl ControlView {
387377
}
388378
Self::reload_tab(state, theme);
389379
}
380+
let hide_bar_number = settings.hide_bar_number;
381+
ui.checkbox(&mut settings.hide_bar_number, "Hide Bar Number");
382+
if hide_bar_number != settings.hide_bar_number {
383+
Self::reload_tab(state, theme);
384+
}
385+
let always_show_fret = settings.always_show_fret;
386+
ui.checkbox(&mut settings.always_show_fret, "Always Show Fret");
387+
if always_show_fret != settings.always_show_fret {
388+
Self::reload_tab(state, theme);
389+
}
390390
});
391391
}
392392
pub fn layout_ui(
@@ -435,11 +435,12 @@ impl ControlView {
435435
});
436436
}
437437
if ui.button("Reset Tab").clicked() {
438-
Self::reload_tab( state, theme);
438+
Self::reload_tab(state, theme);
439439
}
440440
}
441441
pub fn guitar_tab_display_ui(
442442
ui: &mut Ui,
443+
state: &mut NotationAppState,
443444
theme: &mut NotationTheme,
444445
window_resized_evts: &mut EventWriter<WindowResizedEvent>,
445446
) {
@@ -456,10 +457,30 @@ impl ControlView {
456457
if float_ne!(theme.sizes.strings.note_height, last_note_height, abs <= 0.5) {
457458
window_resized_evts.send(WindowResizedEvent());
458459
}
460+
let mut changed = false;
461+
let last_word_font_size = theme.texts.strings.fret_font_size;
462+
ui.add(Slider::new(&mut theme.texts.strings.fret_font_size, 6.0..=64.0).text("Fret Font Size"));
463+
if float_ne!(theme.texts.strings.fret_font_size, last_word_font_size, abs <= 0.5) {
464+
changed = true;
465+
}
466+
let last_word_text_x = theme.texts.strings.text_x;
467+
ui.add(Slider::new(&mut theme.texts.strings.text_x, -24.0..=24.0).text("Fret Offset X"));
468+
if float_ne!(theme.texts.strings.text_x, last_word_text_x, abs <= 0.5) {
469+
changed = true;
470+
}
471+
let last_word_text_y = theme.texts.strings.text_y;
472+
ui.add(Slider::new(&mut theme.texts.strings.text_y, -24.0..=24.0).text("Fret Offset Y"));
473+
if float_ne!(theme.texts.strings.text_y, last_word_text_y, abs <= 0.5) {
474+
changed = true;
475+
}
476+
if changed {
477+
Self::reload_tab( state, theme);
478+
}
459479
});
460480
}
461481
pub fn lyrics_display_ui(
462482
ui: &mut Ui,
483+
state: &mut NotationAppState,
463484
theme: &mut NotationTheme,
464485
window_resized_evts: &mut EventWriter<WindowResizedEvent>,
465486
) {
@@ -486,11 +507,65 @@ impl ControlView {
486507
if float_ne!(theme.sizes.lyrics.word_gap, last_word_gap, abs <= 0.5) {
487508
window_resized_evts.send(WindowResizedEvent());
488509
}
510+
let mut changed = false;
489511
let last_word_font_size = theme.texts.lyrics.word_font_size;
490512
ui.add(Slider::new(&mut theme.texts.lyrics.word_font_size, 6.0..=64.0).text("Word Font Size"));
491513
if float_ne!(theme.texts.lyrics.word_font_size, last_word_font_size, abs <= 0.5) {
514+
changed = true;
515+
}
516+
let last_word_text_x = theme.texts.lyrics.text_x;
517+
ui.add(Slider::new(&mut theme.texts.lyrics.text_x, -24.0..=24.0).text("Word Offset X"));
518+
if float_ne!(theme.texts.lyrics.text_x, last_word_text_x, abs <= 0.5) {
519+
changed = true;
520+
}
521+
let last_word_text_y = theme.texts.lyrics.text_y;
522+
ui.add(Slider::new(&mut theme.texts.lyrics.text_y, -24.0..=24.0).text("Word Offset Y"));
523+
if float_ne!(theme.texts.lyrics.text_y, last_word_text_y, abs <= 0.5) {
524+
changed = true;
525+
}
526+
if changed {
527+
Self::reload_tab( state, theme);
528+
}
529+
});
530+
}
531+
pub fn melody_display_ui(
532+
ui: &mut Ui,
533+
state: &mut NotationAppState,
534+
theme: &mut NotationTheme,
535+
window_resized_evts: &mut EventWriter<WindowResizedEvent>,
536+
) {
537+
CollapsingHeader::new("Melody")
538+
.default_open(true)
539+
.show(ui, |ui| {
540+
let last_note_height = theme.sizes.melody.note_height;
541+
ui.add(Slider::new(&mut theme.sizes.melody.note_height, 1.0..=32.0).text("Note Height"));
542+
if float_ne!(theme.sizes.melody.note_height, last_note_height, abs <= 0.5) {
543+
window_resized_evts.send(WindowResizedEvent());
544+
}
545+
let last_semitones = theme.sizes.melody.semitones;
546+
ui.add(Slider::new(&mut theme.sizes.melody.semitones, 12..=60).text("Semitones"));
547+
if theme.sizes.melody.semitones != last_semitones {
492548
window_resized_evts.send(WindowResizedEvent());
493549
}
550+
let mut changed = false;
551+
let last_syllable_font_size = theme.texts.melody.syllable_font_size;
552+
ui.add(Slider::new(&mut theme.texts.melody.syllable_font_size, 6.0..=64.0).text("Syllable Font Size"));
553+
if float_ne!(theme.texts.melody.syllable_font_size, last_syllable_font_size, abs <= 0.5) {
554+
changed = true;
555+
}
556+
let last_syllable_text_x = theme.texts.melody.text_x;
557+
ui.add(Slider::new(&mut theme.texts.melody.text_x, -24.0..=24.0).text("Syllable Offset X"));
558+
if float_ne!(theme.texts.melody.text_x, last_syllable_text_x, abs <= 0.5) {
559+
changed = true;
560+
}
561+
let last_syllable_text_y = theme.texts.melody.text_y;
562+
ui.add(Slider::new(&mut theme.texts.melody.text_y, -24.0..=24.0).text("Syllable Offset Y"));
563+
if float_ne!(theme.texts.melody.text_y, last_syllable_text_y, abs <= 0.5) {
564+
changed = true;
565+
}
566+
if changed {
567+
Self::reload_tab( state, theme);
568+
}
494569
});
495570
}
496571
pub fn control_ui(
@@ -534,9 +609,15 @@ impl ControlView {
534609
Self::layout_ui(ui, &mut state, &mut settings, &mut theme);
535610
Self::overrides_ui(ui, &mut settings, &mut window_resized_evts, &mut guitar_view_query);
536611
ui.separator();
537-
ui.label("Override Theme, May Need to Reset Tab");
538-
Self::guitar_tab_display_ui(ui, &mut theme, &mut window_resized_evts);
539-
Self::lyrics_display_ui(ui, &mut theme, &mut window_resized_evts);
612+
ui.label("Override Theme");
613+
Self::guitar_tab_display_ui(ui, &mut state, &mut theme, &mut window_resized_evts);
614+
Self::lyrics_display_ui(ui, &mut state, &mut theme, &mut window_resized_evts);
615+
Self::melody_display_ui(ui, &mut state, &mut theme, &mut window_resized_evts);
616+
ui.separator();
617+
if ui.button("Reset Theme").clicked() {
618+
*theme = NotationTheme::default();
619+
Self::reload_tab(&mut state, &mut theme);
620+
}
540621
});
541622
});
542623
});

0 commit comments

Comments
 (0)