use crate::app::client_timing::ClientTiming;
use crate::fixture_definition_editor::FixtureDefinitionsWindow;
use crate::fixture_editor::FixtureWindow;
use crate::settings::ClientSettings;
use egui::Context;
use gled_model::{asset::project::Project, collection::Collections};
use gled_protocol::state::{OutputConfig, SoundSnapshot};
pub(crate) mod about;
pub(crate) mod animation;
pub(crate) mod channel_overwrites;
pub(crate) mod curves;
pub(crate) mod errors;
pub(crate) mod external_devices;
pub(crate) mod git_config;
pub(crate) mod midi_controllers;
pub(crate) mod output_devices;
pub(crate) mod output_routings;
pub(crate) mod palettes;
pub(crate) mod projects;
pub(crate) mod scenes;
pub(crate) mod shortcuts;
#[derive(Debug, Default)]
pub(crate) struct Windows {
pub(crate) about: about::AboutWindow,
pub(crate) animations: animation::AnimationWindow,
pub(crate) external_device_settings: external_devices::ExternalDeviceSettings,
pub(crate) channel_overwrites: channel_overwrites::ChannelOverwritesWindow,
pub(crate) curves: curves::CurvesWindow,
pub(crate) errors: errors::ErrorsWindow,
pub(crate) fixture_definitions: FixtureDefinitionsWindow,
pub(crate) fixture_window: FixtureWindow,
pub(crate) git_config: git_config::GitConfigWindow,
pub(crate) midi_controllers: midi_controllers::MidiControllersWindow,
pub(crate) output_devices: output_devices::OutputDevicesWindow,
pub(crate) output_routings: output_routings::OutputRoutingsWindow,
pub(crate) palettes: palettes::PalettesWindow,
pub(crate) projects: projects::ProjectsWindow,
pub(crate) scenes: scenes::ScenesWindow,
pub(crate) shortcuts: shortcuts::ShortcutsWindow,
}
impl Windows {
#[cfg_attr(feature = "profiling", profiling::function)]
pub(crate) fn update(
&mut self,
ctx: &Context,
timing: &ClientTiming,
project: &mut Option<Project>,
collections: &mut Collections,
settings: &mut ClientSettings,
output_config: &mut OutputConfig,
sound_data: &SoundSnapshot,
midi_monitor_receiver: &kanal::Receiver<gled_protocol::midi::MidiMonitorEvent>,
test_command_sender: &kanal::Sender<gled_protocol::midi::TestCommand>,
midi_learn_state: &mut crate::midi_learn::LearnState,
status: &gled_protocol::state::ServerStatus,
) {
self.about.update(ctx);
self.animations
.update(ctx, timing, collections, settings, sound_data);
self.channel_overwrites.update(ctx, project, collections);
self.curves.update(ctx, collections);
self.errors.update(ctx);
self.git_config.update(ctx, status);
self.midi_controllers.update(
ctx,
project,
collections,
midi_monitor_receiver,
test_command_sender,
midi_learn_state,
);
let midi_diagnostics = self.midi_controllers.diagnostics();
self.external_device_settings
.update(ctx, project, collections, &midi_diagnostics, status);
self.fixture_window.update(ctx, project, collections);
if let Some(definition) = self.fixture_window.take_definitions_request() {
self.fixture_definitions.open_with(definition);
}
self.fixture_definitions.update(ctx, collections);
self.output_devices.update(ctx, collections);
self.output_routings.update(ctx, collections, output_config);
self.palettes.update(ctx, collections);
self.projects.update(ctx, collections);
self.scenes
.update(ctx, timing, collections, settings, sound_data);
self.shortcuts.update(ctx, project);
}
}