diff --git a/src/device/arrange/scene.rs b/src/device/arrange/scene.rs index e6d5775a..0dd63800 100644 --- a/src/device/arrange/scene.rs +++ b/src/device/arrange/scene.rs @@ -89,12 +89,14 @@ pub trait SceneController: HasScene { todo!() } + #[command(SetZoom = "zoom")] fn scene_set_zoom (&mut self, _size: usize) -> Perhaps where Self: Namespace { todo!() } + #[command(SetName = "name")] fn scene_set_name (&mut self, name: Arc) -> Perhaps where Self: Namespace> @@ -105,6 +107,7 @@ pub trait SceneController: HasScene |name|SceneCommand::SetName { name } )).transpose()?.flatten()) } + #[command(SetColor = "color")] fn scene_set_color (&mut self, color: ItemTheme) -> Perhaps where Self: Namespace @@ -173,6 +176,7 @@ pub trait HasScenes: AsRef> + AsMut> { impl + Namespace + Namespace> @@ -183,6 +187,7 @@ impl + Namespace + Namespace> @@ -196,6 +201,29 @@ pub trait ScenesController: HasScenes Ok(None) } // TODO + + #[command(Select = "select")] + fn scene_select (&mut self) -> Perhaps { + let scenes = self.scenes().len(); + let select = self.selection_mut().select_scene(scenes); + *self.selection_mut() = select; + Ok(None) + } + + #[command(Next = "next")] + fn scene_select_next (&mut self) -> Perhaps { + let scenes = self.scenes().len(); + let select = self.selection().select_scene_next(scenes); + *self.selection_mut() = select; + Ok(None) + } + + #[command(Prev = "prev")] + fn scene_select_prev (&mut self) -> Perhaps { + let select = self.selection_mut().select_scene_prev(); + *self.selection_mut() = select; + Ok(None) + } } pub trait ScenesView: HasEditor + HasSelection + HasSceneScroll + HasClipsSize + Send + Sync { diff --git a/src/device/arrange/track.rs b/src/device/arrange/track.rs index d9dc1ebf..c3e07c17 100644 --- a/src/device/arrange/track.rs +++ b/src/device/arrange/track.rs @@ -261,6 +261,7 @@ pub trait HasTracks: AsRef> + AsMut> + HasClock + HasTrack impl + Namespace + Namespace> @@ -274,6 +275,7 @@ impl + Namespace + Namespace> @@ -316,6 +318,29 @@ pub trait TracksController: HasTracks let (_index, _) = self.tracks_add_one(None, None, [].into(), [].into())?; Ok(None) } + + #[command(Select = "select")] + fn track_select (&mut self) -> Perhaps { + let tracks = self.tracks().len(); + let select = self.selection_mut().select_track(tracks); + *self.selection_mut() = select; + Ok(None) + } + + #[command(Next = "next")] + fn track_select_next (&mut self) -> Perhaps { + let tracks = self.tracks().len(); + let select = self.selection().select_track_next(tracks); + *self.selection_mut() = select; + Ok(None) + } + + #[command(Prev = "prev")] + fn track_select_prev (&mut self) -> Perhaps { + let select = self.selection_mut().select_track_prev(); + *self.selection_mut() = select; + Ok(None) + } } impl< diff --git a/src/tek.edn b/src/tek.edn index 02148715..845c58b8 100644 --- a/src/tek.edn +++ b/src/tek.edn @@ -45,26 +45,34 @@ (bar/e 12 (bg (g 50) :scenes/names) (align/c :scenes/clips)))))))))))))) -(keys :clock (@space clock/toggle 0) - (@shift/space clock/toggle 0)) - -(keys :color (@c color)) - -(keys :launch (@q launch)) - -(keys :scenes (@shift/S (scenes add)) - (@s (select scene)) - (@up (select scene-dec)) - (@down (select scene-inc))) - -(keys :tracks (@shift/T (tracks add)) - (@t (select track)) - (@left (select track-dec)) - (@right (select track-inc))) - (keys :global (see :history :saveload) - (@f8 dialog :options) - (@f10 dialog :quit)) + (@f8 dialog :options) + (@f10 dialog :quit)) + +(keys :clock + (@space clock/toggle 0) + (@shift/space clock/toggle 0)) + +(keys :color + (@c color)) + +(keys :launch + (@q launch)) + +(keys :scenes + (@shift/S (scenes add)) + (@s (scenes select)) + (@up (scenes prev)) + (@down (scenes next))) + +(keys :tracks + (@shift/T (tracks add)) + (@t (tracks select)) + (@left (tracks prev)) + (@right (tracks next))) + +(keys :clip (see :color :launch :axis/z :axis/z2 :delete) + (@l (toggle :loop))) (view :ports/out (bsp/s (align/w (text L-AUDIO-OUT)) @@ -132,6 +140,7 @@ (keys :axis/w2 (@openbrace dec :w2) (@closebrace inc :w2)) (keys :focus) + (keys :editor (see :axis/i :axis/i2 :axis/y :page :editor/view :editor/add :editor/del)) (keys :editor/view (see :axis/x :axis/x2 :axis/z :axis/z2) @@ -169,8 +178,6 @@ (@r redo 1)) (keys :saveload (@f6 dialog :save) (@f9 dialog :load)) -(keys :clip (see :color :launch :axis/z :axis/z2 :delete) - (@l toggle :loop)) (keys :sequencer (see :color :launch) (@shift/I input/add) (@shift/O output/add))