1
0
Fork 0

Add a visualizer toggle button to SC

This commit is contained in:
Robbert van der Helm 2023-03-18 15:19:19 +01:00
parent 0d5247ee2f
commit 4e304fc65a

View file

@ -55,6 +55,8 @@ pub enum EditorMode {
#[derive(Lens)] #[derive(Lens)]
struct Data { struct Data {
params: Arc<SpectralCompressorParams>, params: Arc<SpectralCompressorParams>,
editor_mode: Arc<AtomicCell<EditorMode>>,
} }
impl Model for Data {} impl Model for Data {}
@ -77,6 +79,8 @@ pub(crate) fn create(
Data { Data {
params: params.clone(), params: params.clone(),
editor_mode: params.editor_mode.clone(),
} }
.build(cx); .build(cx);
@ -91,29 +95,39 @@ pub(crate) fn create(
fn main_column(cx: &mut Context) { fn main_column(cx: &mut Context) {
VStack::new(cx, |cx| { VStack::new(cx, |cx| {
HStack::new(cx, |cx| { HStack::new(cx, |cx| {
Label::new(cx, "Spectral Compressor") EditorModeButton::new(cx, Data::editor_mode, "Show visualizer")
.font_family(vec![FamilyOwned::Name(String::from( // Makes this align a bit nicer with the plugin name
assets::NOTO_SANS_THIN, .top(Pixels(2.0))
))])
.font_size(30.0)
.on_mouse_down(|_, _| {
// Try to open the plugin's page when clicking on the title. If this fails
// then that's not a problem
let result = open::that(SpectralCompressor::URL);
if cfg!(debug) && result.is_err() {
nih_debug_assert_failure!("Failed to open web browser: {:?}", result);
}
});
Label::new(cx, SpectralCompressor::VERSION)
.color(DARKER_GRAY)
.top(Stretch(1.0))
.bottom(Pixels(4.0))
.left(Pixels(2.0)); .left(Pixels(2.0));
HStack::new(cx, |cx| {
Label::new(cx, "Spectral Compressor")
.font_family(vec![FamilyOwned::Name(String::from(
assets::NOTO_SANS_THIN,
))])
.font_size(30.0)
.on_mouse_down(|_, _| {
// Try to open the plugin's page when clicking on the title. If this fails
// then that's not a problem
let result = open::that(SpectralCompressor::URL);
if cfg!(debug) && result.is_err() {
nih_debug_assert_failure!("Failed to open web browser: {:?}", result);
}
});
Label::new(cx, SpectralCompressor::VERSION)
.color(DARKER_GRAY)
.top(Stretch(1.0))
.bottom(Pixels(4.0))
.left(Pixels(2.0));
});
}) })
.height(Pixels(30.0)) .height(Pixels(30.0))
.right(Pixels(-22.0)) .right(Pixels(17.0))
.bottom(Pixels(-5.0)) .bottom(Pixels(-5.0))
.top(Pixels(10.0)); .left(Pixels(10.0))
.top(Pixels(10.0))
// This contains the editor mode buttom all the way on the left, and the plugin's name all the way on the right
.col_between(Stretch(1.0));
HStack::new(cx, |cx| { HStack::new(cx, |cx| {
make_column(cx, "Globals", |cx| { make_column(cx, "Globals", |cx| {