mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
wip: fixing cursor
This commit is contained in:
parent
ed90196a60
commit
26562437bd
3 changed files with 32 additions and 33 deletions
|
|
@ -1,6 +1,6 @@
|
|||
(@up select 0 :scene-prev)
|
||||
(@down select 0 :scene-next)
|
||||
(@right select 1 :scene)
|
||||
(@up select :track :scene-prev)
|
||||
(@down select :track :scene-next)
|
||||
(@right select :track-next :scene)
|
||||
|
||||
(@q scene launch)
|
||||
(@c scene color)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
(@left select :track-prev 0)
|
||||
(@right select :track-next 0)
|
||||
(@down select :track down)
|
||||
(@left select :track-prev :scene)
|
||||
(@right select :track-next :scene)
|
||||
(@down select :track :scene-next)
|
||||
|
||||
(@q track launch)
|
||||
(@c track color)
|
||||
|
|
|
|||
|
|
@ -160,12 +160,12 @@ has_editor!(|self: Tek|{
|
|||
is_editing = self.editing.load(Relaxed);
|
||||
});
|
||||
edn_provide!(# usize: |self: Tek| {
|
||||
":scene" => 0,
|
||||
":scene-next" => 0,
|
||||
":scene-prev" => 0,
|
||||
":track" => 0,
|
||||
":track-next" => 0,
|
||||
":track-prev" => 0,
|
||||
":scene" => self.selected.scene().unwrap_or(0),
|
||||
":scene-next" => self.selected.scene().unwrap_or(0) + 1,
|
||||
":scene-prev" => self.selected.scene().unwrap_or(0).saturating_sub(1),
|
||||
":track" => self.selected.track().unwrap_or(0),
|
||||
":track-next" => self.selected.track().unwrap_or(0) + 1,
|
||||
":track-prev" => self.selected.track().unwrap_or(0).saturating_sub(1),
|
||||
});
|
||||
edn_view!(TuiOut: |self: Tek| self.size.of(EdnView::from_source(self, self.edn.as_ref())); {
|
||||
bool {};
|
||||
|
|
@ -273,11 +273,6 @@ impl Tek {
|
|||
// TODO: enable sync master/follow
|
||||
//let sync_clock = |jack: &Arc<RwLock<JackConnection>>, app|{
|
||||
//if cli.sync_lead {
|
||||
//jack.read().unwrap().client().register_timebase_callback(false, |mut state|{
|
||||
//app.clock().playhead.update_from_sample(state.position.frame() as f64);
|
||||
//state.position.bbt = Some(app.clock().bbt());
|
||||
//state.position
|
||||
//})
|
||||
//} else if cli.sync_follow {
|
||||
//jack.read().unwrap().client().register_timebase_callback(false, |state|{
|
||||
//app.clock().playhead.update_from_sample(state.position.frame() as f64);
|
||||
|
|
@ -295,6 +290,20 @@ impl Tek {
|
|||
..Default::default()
|
||||
})
|
||||
}
|
||||
fn sync_lead (&self, enable: bool) -> Usually<()> {
|
||||
if enable {
|
||||
self.jack.read().unwrap().client().register_timebase_callback(false, |mut state|{
|
||||
let clock = self.clock();
|
||||
clock.playhead.update_from_sample(state.position.frame() as f64);
|
||||
state.position.bbt = Some(clock.bbt());
|
||||
state.position
|
||||
})?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
fn sync_follow (&self) {
|
||||
// TODO
|
||||
}
|
||||
fn compact (&self) -> bool { self.compact }
|
||||
fn is_editing (&self) -> bool { self.editing.load(Relaxed) }
|
||||
fn editor (&self) -> impl Content<TuiOut> + '_ { &self.editor }
|
||||
|
|
@ -412,16 +421,6 @@ impl Tek {
|
|||
clip.write().unwrap().toggle_loop()
|
||||
}
|
||||
}
|
||||
//fn randomize_color (&mut self) {
|
||||
//match self.selected {
|
||||
//Selection::Mix => { self.color = ItemPalette::random() },
|
||||
//Selection::Track(t) => { self.tracks[t].color = ItemPalette::random() },
|
||||
//Selection::Scene(s) => { self.scenes[s].color = ItemPalette::random() },
|
||||
//Selection::Clip(t, s) => if let Some(clip) = &self.scenes[s].clips[t] {
|
||||
//clip.write().unwrap().color = ItemPalette::random();
|
||||
//}
|
||||
//}
|
||||
//}
|
||||
fn track_add (
|
||||
&mut self,
|
||||
name: Option<&str>,
|
||||
|
|
@ -620,9 +619,9 @@ edn_command!(TekCommand: |app: Tek| {
|
|||
("enqueue" [c: Arc<RwLock<MidiClip>>] Self::Enqueue(c))
|
||||
("select" [t: usize, s: usize] match (t.expect("no track"), s.expect("no scene")) {
|
||||
(0, 0) => Self::Select(Selection::Mix),
|
||||
(t, 0) => Self::Select(Selection::Track(t - 1)),
|
||||
(0, s) => Self::Select(Selection::Scene(s - 1)),
|
||||
(t, s) => Self::Select(Selection::Clip(t - 1, s - 1)),
|
||||
(t, 0) => Self::Select(Selection::Track(t)),
|
||||
(0, s) => Self::Select(Selection::Scene(s)),
|
||||
(t, s) => Self::Select(Selection::Clip(t, s)),
|
||||
})
|
||||
|
||||
("clip" [a, ..b] Self::Clip(ClipCommand::from_edn(app, &a.to_ref(), b)
|
||||
|
|
@ -739,7 +738,7 @@ impl HasSelection for Tek {
|
|||
fn selected (&self) -> &Selection { &self.selected }
|
||||
fn selected_mut (&mut self) -> &mut Selection { &mut self.selected }
|
||||
}
|
||||
pub trait HasSelection {
|
||||
trait HasSelection {
|
||||
fn selected (&self) -> &Selection;
|
||||
fn selected_mut (&mut self) -> &mut Selection;
|
||||
}
|
||||
|
|
@ -801,7 +800,7 @@ impl HasTracks for Tek {
|
|||
fn tracks (&self) -> &Vec<Track> { &self.tracks }
|
||||
fn tracks_mut (&mut self) -> &mut Vec<Track> { &mut self.tracks }
|
||||
}
|
||||
pub trait HasTracks: HasSelection + HasClock + HasJack + HasEditor + Send + Sync {
|
||||
trait HasTracks: HasSelection + HasClock + HasJack + HasEditor + Send + Sync {
|
||||
fn midi_ins (&self) -> &Vec<JackPort<MidiIn>>;
|
||||
fn midi_outs (&self) -> &Vec<JackPort<MidiOut>>;
|
||||
fn tracks (&self) -> &Vec<Track>;
|
||||
|
|
@ -990,7 +989,7 @@ impl HasScenes for Tek {
|
|||
fn scenes (&self) -> &Vec<Scene> { &self.scenes }
|
||||
fn scenes_mut (&mut self) -> &mut Vec<Scene> { &mut self.scenes }
|
||||
}
|
||||
pub trait HasScenes: HasSelection + HasEditor + Send + Sync {
|
||||
trait HasScenes: HasSelection + HasEditor + Send + Sync {
|
||||
fn scenes (&self) -> &Vec<Scene>;
|
||||
fn scenes_mut (&mut self) -> &mut Vec<Scene>;
|
||||
fn scene_longest (&self) -> usize {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue