From eb0547dc37fc17fe95dd2c28f22779a15cc5be95 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 17 May 2025 20:21:25 +0300 Subject: [PATCH] labels and icons --- config/config_arranger.edn | 6 +++--- crates/app/src/model.rs | 3 +++ crates/app/src/view.rs | 13 +++++-------- crates/device/src/arranger/arranger_api.rs | 3 ++- crates/device/src/arranger/arranger_view.rs | 4 ++-- crates/device/src/editor/editor_view_h.rs | 8 ++++---- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/config/config_arranger.edn b/config/config_arranger.edn index dac9ddc4..a83b8521 100644 --- a/config/config_arranger.edn +++ b/config/config_arranger.edn @@ -26,6 +26,6 @@ (bsp/s (fill/x (align/w :view-tracks-devices)) (bsp/s (fill/x (align/w :view-tracks-outputs)) (bsp/s (fill/x (align/w :view-tracks-names)) - (fill/xy (either :is-editing - (bsp/e (fixed/x 20 :view-scenes-names) :view-editor) - :view-scenes))))))))))) + (fill/xy (either :is-editing + (bsp/e (fixed/x 20 :view-scenes-names) :view-editor) + :view-scenes))))))))))) diff --git a/crates/app/src/model.rs b/crates/app/src/model.rs index 632633f6..c6dabdf7 100644 --- a/crates/app/src/model.rs +++ b/crates/app/src/model.rs @@ -66,6 +66,9 @@ impl HasClipsSize for App { //}); impl App { + pub fn update_clock (&self) { + ViewCache::update_clock(&self.view_cache, self.clock(), self.size.w() > 80) + } pub fn toggle_dialog (&mut self, mut dialog: Option) -> Option { std::mem::swap(&mut self.dialog, &mut dialog); dialog diff --git a/crates/app/src/view.rs b/crates/app/src/view.rs index 184e6716..55afff65 100644 --- a/crates/app/src/view.rs +++ b/crates/app/src/view.rs @@ -2,13 +2,6 @@ use crate::*; pub(crate) use std::fmt::Write; pub(crate) use ::tengri::tui::ratatui::prelude::Position; -impl App { - - pub fn update_clock (&self) { - ViewCache::update_clock(&self.view_cache, self.clock(), self.size.w() > 80) - } -} - #[tengri_proc::view(TuiOut)] impl App { pub fn view_nil (&self) -> impl Content + use<'_> { @@ -95,7 +88,11 @@ impl App { cache.bpm.view.clone(), cache.beat.view.clone(), cache.time.view.clone()) } pub fn view_editor (&self) -> impl Content + use<'_> { - self.editor() + let bg = self.editor() + .and_then(|editor|editor.clip().clone()) + .map(|clip|clip.read().unwrap().color.darker) + .unwrap_or(self.color.darker); + Fill::xy(Tui::bg(bg.rgb, self.editor())) } pub fn view_editor_status (&self) -> impl Content + use<'_> { self.editor().map(|e|Fixed::x(20, Outer(true, Style::default().fg(Tui::g(96))).enclose( diff --git a/crates/device/src/arranger/arranger_api.rs b/crates/device/src/arranger/arranger_api.rs index 104af36e..46043485 100644 --- a/crates/device/src/arranger/arranger_api.rs +++ b/crates/device/src/arranger/arranger_api.rs @@ -28,7 +28,8 @@ impl ArrangementCommand { if clip.is_none() { //app.clip_auto_create(); *clip = Some(Arc::new(RwLock::new(MidiClip::new( - "", false, 384, None, Some(ItemTheme::random()) + &format!("t{track:02}s{scene:02}"), + false, 384, None, Some(ItemTheme::random()) )))); } clip.as_ref().map(|c|c.into()) diff --git a/crates/device/src/arranger/arranger_view.rs b/crates/device/src/arranger/arranger_view.rs index 00776252..3a4c4df0 100644 --- a/crates/device/src/arranger/arranger_view.rs +++ b/crates/device/src/arranger/arranger_view.rs @@ -329,9 +329,9 @@ pub trait ClipsView: for (scene_index, scene, ..) in self.scenes_with_sizes() { let (name, theme): (Arc, ItemTheme) = if let Some(Some(clip)) = &scene.clips.get(track_index) { let clip = clip.read().unwrap(); - (clip.name.clone(), clip.color) + (format!(" ⏹ {}", &clip.name).into(), clip.color) } else { - (" ---- ".into(), ItemTheme::G[32]) + (" ⏹ -- ".into(), ItemTheme::G[32]) }; let fg = theme.lightest.rgb; let mut outline = theme.base.rgb; diff --git a/crates/device/src/editor/editor_view_h.rs b/crates/device/src/editor/editor_view_h.rs index 1223d57e..bf04f16f 100644 --- a/crates/device/src/editor/editor_view_h.rs +++ b/crates/device/src/editor/editor_view_h.rs @@ -46,19 +46,19 @@ pub(crate) fn note_y_iter (note_lo: usize, note_hi: usize, y0: u16) (note_lo..=note_hi).rev().enumerate().map(move|(y, n)|(y, y0 + y as u16, n)) } -content!(TuiOut:|self: PianoHorizontal| Tui::bg(Tui::g(40), Bsp::s( +content!(TuiOut:|self: PianoHorizontal| Bsp::s( Bsp::e( Fixed::x(5, format!("{}x{}", self.size.w(), self.size.h())), self.timeline() ), Bsp::e( self.keys(), - self.size.of(Tui::bg(Tui::g(32), Bsp::b( + self.size.of(Bsp::b( Fill::xy(self.notes()), Fill::xy(self.cursor()), - ))) + )) ), -))); +)); impl PianoHorizontal { /// Draw the piano roll background.