Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
reFX: Added option to load/save state on load. Modernize some code.
  • Loading branch information
FigBug committed May 8, 2020
1 parent fd93a76 commit df1d75c
Showing 1 changed file with 19 additions and 31 deletions.
Expand Up @@ -257,10 +257,10 @@ class StandalonePluginHolder : private AudioIODeviceCallback,
maxNumOutputs = jmax (0, (int) defaultConfig.numOuts);
}

if (auto* bus = processor->getBus (true, 0))
if (auto bus = processor->getBus (true, 0))
maxNumInputs = jmax (0, bus->getDefaultLayout().size());

if (auto* bus = processor->getBus (false, 0))
if (auto bus = processor->getBus (false, 0))
maxNumOutputs = jmax (0, bus->getDefaultLayout().size());

o.content.setOwned (new SettingsComponent (*this, deviceManager, maxNumInputs, maxNumOutputs));
Expand Down Expand Up @@ -325,7 +325,7 @@ class StandalonePluginHolder : private AudioIODeviceCallback,
//==============================================================================
void savePluginState()
{
if (settings != nullptr && processor != nullptr)
if (settings != nullptr && settings->getBoolValue ("autoLoadSave", true) && processor != nullptr)
{
MemoryBlock data;
processor->getStateInformation (data);
Expand All @@ -336,7 +336,7 @@ class StandalonePluginHolder : private AudioIODeviceCallback,

void reloadPluginState()
{
if (settings != nullptr)
if (settings != nullptr && settings->getBoolValue ("autoLoadSave", true))
{
MemoryBlock data;

Expand Down Expand Up @@ -599,7 +599,7 @@ class StandaloneFilterWindow : public DocumentWindow,
#else
setContentOwned (new MainContentComponent (*this), true);

if (auto* props = pluginHolder->settings.get())
if (auto props = pluginHolder->settings.get())
{
const int x = props->getIntValue ("windowX", -100);
const int y = props->getIntValue ("windowY", -100);
Expand All @@ -619,7 +619,7 @@ class StandaloneFilterWindow : public DocumentWindow,
~StandaloneFilterWindow() override
{
#if (! JUCE_IOS) && (! JUCE_ANDROID)
if (auto* props = pluginHolder->settings.get())
if (auto props = pluginHolder->settings.get())
{
props->setValue ("windowX", getX());
props->setValue ("windowY", getY());
Expand All @@ -642,7 +642,7 @@ class StandaloneFilterWindow : public DocumentWindow,
clearContentComponent();
pluginHolder->deletePlugin();

if (auto* props = pluginHolder->settings.get())
if (auto props = pluginHolder->settings.get())
props->removeValue ("filterState");

pluginHolder->createPlugin();
Expand All @@ -658,24 +658,6 @@ class StandaloneFilterWindow : public DocumentWindow,
JUCEApplicationBase::quit();
}

void handleMenuResult (int result)
{
switch (result)
{
case 1: pluginHolder->showAudioSettingsDialog(); break;
case 2: pluginHolder->askUserToSaveState(); break;
case 3: pluginHolder->askUserToLoadState(); break;
case 4: resetToDefaultState(); break;
default: break;
}
}

static void menuCallback (int result, StandaloneFilterWindow* button)
{
if (button != nullptr && result != 0)
button->handleMenuResult (result);
}

void resized() override
{
DocumentWindow::resized();
Expand All @@ -690,15 +672,21 @@ class StandaloneFilterWindow : public DocumentWindow,
void buttonClicked (Button*) override
{
PopupMenu m;
m.addItem (1, TRANS("Audio/MIDI Settings..."));
m.addItem (TRANS("Audio/MIDI Settings..."), [this] { pluginHolder->showAudioSettingsDialog(); });
m.addSeparator();
m.addItem (2, TRANS("Save current state..."));
m.addItem (3, TRANS("Load a saved state..."));
m.addItem (TRANS("Save current state..."), [this] { pluginHolder->askUserToSaveState(); });
m.addItem (TRANS("Load a saved state..."), [this] { pluginHolder->askUserToLoadState(); });

if (auto settings = pluginHolder->settings.get())
{
bool autoLoadSave = settings->getBoolValue ("autoLoadSave", true);
m.addItem (TRANS("Automtically load and save state"), true, autoLoadSave, [settings, autoLoadSave] { settings->setValue ("autoLoadSave", ! autoLoadSave); });
}

m.addSeparator();
m.addItem (4, TRANS("Reset to default state"));
m.addItem (TRANS("Reset to default state"), [this] { resetToDefaultState(); });

m.showMenuAsync (PopupMenu::Options(),
ModalCallbackFunction::forComponent (menuCallback, this));
m.showMenuAsync (PopupMenu::Options());
}

//==============================================================================
Expand Down

0 comments on commit df1d75c

Please sign in to comment.