mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
wip: restabilizing inversion of control shenanigans again
Some checks are pending
/ build (push) Waiting to run
Some checks are pending
/ build (push) Waiting to run
This commit is contained in:
parent
4a2e742e56
commit
287983c140
6 changed files with 99 additions and 111 deletions
|
|
@ -58,17 +58,17 @@ maybe_has!(Track: |self: Arrangement|
|
|||
maybe_has!(Scene: |self: Arrangement|
|
||||
{ Has::<Selection>::get(self).track().map(|index|Has::<Vec<Scene>>::get(self).get(index)).flatten() };
|
||||
{ Has::<Selection>::get(self).track().map(|index|Has::<Vec<Scene>>::get_mut(self).get_mut(index)).flatten() });
|
||||
from_dsl!(MidiInputCommand: |state: Arrangement, iter|state.selected_midi_in().as_ref()
|
||||
take!(MidiInputCommand |state: Arrangement, iter|state.selected_midi_in().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
from_dsl!(MidiOutputCommand: |state: Arrangement, iter|state.selected_midi_out().as_ref()
|
||||
take!(MidiOutputCommand |state: Arrangement, iter|state.selected_midi_out().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
from_dsl!(DeviceCommand:|state: Arrangement, iter|state.selected_device().as_ref()
|
||||
take!(DeviceCommand|state: Arrangement, iter|state.selected_device().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
from_dsl!(TrackCommand: |state: Arrangement, iter|state.selected_track().as_ref()
|
||||
take!(TrackCommand |state: Arrangement, iter|state.selected_track().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
from_dsl!(SceneCommand: |state: Arrangement, iter|state.selected_scene().as_ref()
|
||||
take!(SceneCommand |state: Arrangement, iter|state.selected_scene().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
from_dsl!(ClipCommand: |state: Arrangement, iter|state.selected_clip().as_ref()
|
||||
take!(ClipCommand |state: Arrangement, iter|state.selected_clip().as_ref()
|
||||
.map(|t|Take::take(t, iter)).transpose().map(|x|x.flatten()));
|
||||
#[tengri_proc::expose] impl Arrangement {
|
||||
fn selected_midi_in (&self) -> Option<MidiInput> { todo!() }
|
||||
|
|
|
|||
|
|
@ -75,23 +75,12 @@ pub struct DeviceAudio<'a>(pub &'a mut Device);
|
|||
audio!(|self: DeviceAudio<'a>, client, scope|{
|
||||
use Device::*;
|
||||
match self.0 {
|
||||
#[cfg(feature = "sampler")]
|
||||
Sampler(sampler) => sampler.process(client, scope),
|
||||
|
||||
#[cfg(feature = "lv2")]
|
||||
Lv2(lv2) => lv2.process(client, scope),
|
||||
|
||||
#[cfg(feature = "vst2")]
|
||||
Vst2 => { todo!() }, // TODO
|
||||
|
||||
#[cfg(feature = "vst3")]
|
||||
Vst3 => { todo!() }, // TODO
|
||||
|
||||
#[cfg(feature = "clap")]
|
||||
Clap => { todo!() }, // TODO
|
||||
|
||||
#[cfg(feature = "sf2")]
|
||||
Sf2 => { todo!() }, // TODO
|
||||
#[cfg(feature = "sampler")] Sampler(sampler) => sampler.process(client, scope),
|
||||
#[cfg(feature = "lv2")] Lv2(lv2) => lv2.process(client, scope),
|
||||
#[cfg(feature = "vst2")] Vst2 => { todo!() }, // TODO
|
||||
#[cfg(feature = "vst3")] Vst3 => { todo!() }, // TODO
|
||||
#[cfg(feature = "clap")] Clap => { todo!() }, // TODO
|
||||
#[cfg(feature = "sf2")] Sf2 => { todo!() }, // TODO
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,10 @@ pub struct Pool {
|
|||
/// Embedded file browser
|
||||
pub browser: Option<Browser>,
|
||||
}
|
||||
from_dsl!(BrowserCommand: |state: Pool, iter|Ok(state.browser
|
||||
.as_ref().map(|p|Take::take(p, iter)).transpose()?.flatten()));
|
||||
take!(BrowserCommand |state: Pool, iter|Ok(state.browser.as_ref()
|
||||
.map(|p|Take::take(p, iter))
|
||||
.transpose()?
|
||||
.flatten()));
|
||||
impl Default for Pool {
|
||||
fn default () -> Self {
|
||||
use PoolMode::*;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue