@@ -243,7 +243,7 @@ impl ControlView {
243243 state. hide_control = true ;
244244 window_resized_evts. send ( WindowResizedEvent ( ) ) ;
245245 }
246- ui. checkbox ( & mut settings . allow_panning , "Allow Panning" ) ;
246+ ui. separator ( ) ;
247247 let play_title = if midi_state. play_control . play_state . is_playing ( ) {
248248 "Pause"
249249 } else {
@@ -269,11 +269,6 @@ impl ControlView {
269269 & mut play_control_evts,
270270 )
271271 }
272- let hide_bar_number = settings. hide_bar_number ;
273- ui. checkbox ( & mut settings. hide_bar_number , "Hide Bar Number" ) ;
274- if hide_bar_number != settings. hide_bar_number {
275- Self :: reload_tab ( & mut commands, & mut state, & viewer_query) ;
276- }
277272 if ui. button ( format ! ( "Begin: {}" , midi_state. play_control. begin_bar_ordinal) ) . clicked ( ) {
278273 Self :: set_begin_bar_ordinal ( & mut midi_state, & mut play_control_evts) ;
279274 }
@@ -288,11 +283,46 @@ impl ControlView {
288283 & mut play_control_evts,
289284 )
290285 }
286+ ui. separator ( ) ;
287+ let mut override_beat_size = settings. override_beat_size . is_some ( ) ;
288+ ui. checkbox ( & mut override_beat_size, "Override Beat Size" ) ;
289+ if override_beat_size {
290+ let mut beat_size = settings. override_beat_size . unwrap_or ( 80.0 ) ;
291+ let last_beat_size = beat_size;
292+ ui. add ( Slider :: new ( & mut beat_size, 16.0 ..=512.0 ) . text ( "Beat Size" ) ) ;
293+ if settings. override_beat_size . is_none ( ) || float_ne ! ( beat_size, last_beat_size, abs <= 1.0 ) {
294+ settings. override_beat_size = Some ( beat_size) ;
295+ window_resized_evts. send ( WindowResizedEvent ( ) ) ;
296+ }
297+ } else if settings. override_beat_size . is_some ( ) {
298+ settings. override_beat_size = None ;
299+ window_resized_evts. send ( WindowResizedEvent ( ) ) ;
300+ }
301+ let mut override_chord_size = settings. override_chord_size . is_some ( ) ;
302+ ui. checkbox ( & mut override_chord_size, "Override Chord Size" ) ;
303+ if override_chord_size {
304+ let mut chord_size = settings. override_chord_size . unwrap_or ( 128.0 ) ;
305+ let last_chord_size = chord_size;
306+ ui. add ( Slider :: new ( & mut chord_size, 48.0 ..=256.0 ) . text ( "Chord Size" ) ) ;
307+ if settings. override_chord_size . is_none ( ) || float_ne ! ( chord_size, last_chord_size, abs <= 1.0 ) {
308+ settings. override_chord_size = Some ( chord_size) ;
309+ window_resized_evts. send ( WindowResizedEvent ( ) ) ;
310+ }
311+ } else if settings. override_chord_size . is_some ( ) {
312+ settings. override_chord_size = None ;
313+ window_resized_evts. send ( WindowResizedEvent ( ) ) ;
314+ }
315+ let hide_bar_number = settings. hide_bar_number ;
316+ ui. checkbox ( & mut settings. hide_bar_number , "Hide Bar Number" ) ;
317+ if hide_bar_number != settings. hide_bar_number {
318+ Self :: reload_tab ( & mut commands, & mut state, & viewer_query) ;
319+ }
291320 let always_show_fret = settings. always_show_fret ;
292321 ui. checkbox ( & mut settings. always_show_fret , "Always Show Fret" ) ;
293322 if always_show_fret != settings. always_show_fret {
294323 Self :: reload_tab ( & mut commands, & mut state, & viewer_query) ;
295324 }
325+ ui. separator ( ) ;
296326 let mode_text = if settings. layout . mode == LayoutMode :: Grid {
297327 "Line Mode"
298328 } else {
@@ -301,6 +331,10 @@ impl ControlView {
301331 if ui. button ( mode_text) . clicked ( ) {
302332 Self :: toggle_layout_mode ( & mut commands, & mut state, & mut settings, & viewer_query) ;
303333 }
334+ if settings. layout . mode == LayoutMode :: Grid {
335+ ui. checkbox ( & mut settings. layout . try_show_last_row_in_grid_mode , "Try Show Last Row" ) ;
336+ }
337+ ui. separator ( ) ;
304338 if ui. button ( "Reload Tab" ) . clicked ( ) {
305339 Self :: reload_tab ( & mut commands, & mut state, & viewer_query) ;
306340 }
0 commit comments