From ab1e170f740bbb2e68096d31dfbea52c726c6c99 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 12 Mar 2022 23:28:18 +0100 Subject: [PATCH] Replace Diopser egui GUI with empty iced GUI --- Cargo.lock | 2 +- plugins/diopser/Cargo.toml | 2 +- plugins/diopser/src/editor.rs | 45 +++++++++++++++++++++++++++-------- plugins/diopser/src/lib.rs | 4 ++-- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 80d6938d..2a871189 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -746,7 +746,7 @@ version = "0.1.0" dependencies = [ "fftw", "nih_plug", - "nih_plug_egui", + "nih_plug_iced", "triple_buffer", ] diff --git a/plugins/diopser/Cargo.toml b/plugins/diopser/Cargo.toml index 9f0f3668..76d64bf6 100644 --- a/plugins/diopser/Cargo.toml +++ b/plugins/diopser/Cargo.toml @@ -16,7 +16,7 @@ simd = ["nih_plug/simd"] [dependencies] nih_plug = { path = "../../", features = ["assert_process_allocs"] } -nih_plug_egui = { path = "../../nih_plug_egui" } +nih_plug_iced = { path = "../../nih_plug_iced" } # For the GUI fftw = "0.7" diff --git a/plugins/diopser/src/editor.rs b/plugins/diopser/src/editor.rs index e51500a6..1954c53c 100644 --- a/plugins/diopser/src/editor.rs +++ b/plugins/diopser/src/editor.rs @@ -15,25 +15,50 @@ // along with this program. If not, see . use nih_plug::prelude::Editor; -use nih_plug_egui::widgets::generic_ui; -use nih_plug_egui::{create_egui_editor, egui, EguiState}; +use nih_plug_iced::{create_iced_editor, Application, Command, Element, IcedState}; use std::pin::Pin; use std::sync::Arc; use crate::DiopserParams; // Makes sense to also define this here, makes it a bit easier to keep track of -pub fn default_state() -> Arc { - EguiState::from_size(220, 330) +pub fn default_state() -> Arc { + IcedState::from_size(600, 400) } pub fn create( params: Pin>, - editor_state: Arc, + editor_state: Arc, ) -> Option> { - create_egui_editor(editor_state, (), move |egui_ctx, setter, _state| { - egui::CentralPanel::default().show(egui_ctx, |ui| { - generic_ui::create(ui, params.as_ref(), setter, generic_ui::GenericSlider); - }); - }) + create_iced_editor::(editor_state, params) +} + +struct DiopserEditor { + params: Pin>, +} + +impl Application for DiopserEditor { + type Executor = nih_plug_iced::executor::Default; + // TODO: + type Message = (); + type Flags = Pin>; + + fn new(flags: Self::Flags) -> (Self, Command) { + let editor = DiopserEditor { params: flags }; + + (editor, Command::none()) + } + + fn update( + &mut self, + window: &mut nih_plug_iced::WindowQueue, + message: Self::Message, + ) -> Command { + // TODO: + Command::none() + } + + fn view(&mut self) -> Element<'_, Self::Message> { + nih_plug_iced::Text::new("Hello, world!").into() + } } diff --git a/plugins/diopser/src/lib.rs b/plugins/diopser/src/lib.rs index 31000300..5432143e 100644 --- a/plugins/diopser/src/lib.rs +++ b/plugins/diopser/src/lib.rs @@ -23,7 +23,7 @@ compile_error!("Compiling without SIMD support is currently not supported"); extern crate nih_plug; use nih_plug::prelude::*; -use nih_plug_egui::EguiState; +use nih_plug_iced::IcedState; use std::pin::Pin; use std::simd::f32x2; use std::sync::atomic::{AtomicBool, Ordering}; @@ -50,7 +50,7 @@ const MAX_AUTOMATION_STEP_SIZE: u32 = 512; // - A proper GUI struct Diopser { params: Pin>, - editor_state: Arc, + editor_state: Arc, /// Needed for computing the filter coefficients. sample_rate: f32,