wip: restabilizing inversion of control shenanigans again
Some checks are pending
/ build (push) Waiting to run

This commit is contained in:
🪞👃🪞 2025-05-25 11:44:15 +03:00
parent 4a2e742e56
commit 287983c140
6 changed files with 99 additions and 111 deletions

View file

@ -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!() }

View file

@ -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
}
});

View file

@ -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::*;