//============================================================================== void StandaloneFilterWindow::saveState() { PropertySet* const globalSettings = getGlobalSettings(); FileChooser fc (TRANS("Save current state"), globalSettings != 0 ? File (globalSettings->getValue (T("lastStateFile"))) : File::nonexistent); if (fc.browseForFileToSave (true)) { JUCE_NAMESPACE::MemoryBlock data; filter->getStateInformation (data); if (! fc.getResult().replaceWithData (data.getData(), data.getSize())) { AlertWindow::showMessageBox (AlertWindow::WarningIcon, TRANS("Error whilst saving"), TRANS("Couldn't write to the specified file!")); } } }
void StandaloneFilterWindow::loadState() { PropertySet* const globalSettings = getGlobalSettings(); FileChooser fc (TRANS("Load a saved state"), globalSettings != 0 ? File (globalSettings->getValue (T("lastStateFile"))) : File::nonexistent); if (fc.browseForFileToOpen()) { JUCE_NAMESPACE::MemoryBlock data; if (fc.getResult().loadFileAsData (data)) { filter->setStateInformation (data.getData(), data.getSize()); } else { AlertWindow::showMessageBox (AlertWindow::WarningIcon, TRANS("Error whilst loading"), TRANS("Couldn't read from the specified file!")); } } }
//============================================================================== StandaloneFilterWindow::StandaloneFilterWindow (const String& title, const Colour& backgroundColour) : DocumentWindow (title, backgroundColour, DocumentWindow::minimiseButton | DocumentWindow::closeButton), filter (0), deviceManager (0), optionsButton (0) { setTitleBarButtonsRequired (DocumentWindow::minimiseButton | DocumentWindow::closeButton, false); PropertySet* const globalSettings = getGlobalSettings(); optionsButton = new TextButton (T("options")); Component::addAndMakeVisible (optionsButton); optionsButton->addButtonListener (this); optionsButton->setTriggeredOnMouseDown (true); JUCE_TRY { filter = createPluginFilter(); if (filter != 0) { deviceManager = new AudioFilterStreamingDeviceManager(); deviceManager->setFilter (filter); XmlElement* savedState = 0; if (globalSettings != 0) savedState = globalSettings->getXmlValue (T("audioSetup")); deviceManager->initialise (filter->getNumInputChannels(), filter->getNumOutputChannels(), savedState, true); delete savedState; if (globalSettings != 0) { JUCE_NAMESPACE::MemoryBlock data; if (data.fromBase64Encoding (globalSettings->getValue (T("filterState"))) && data.getSize() > 0) { filter->setStateInformation (data.getData(), data.getSize()); } } setContentComponent (filter->createEditorIfNeeded(), true, true); const int x = globalSettings->getIntValue (T("windowX"), -100); const int y = globalSettings->getIntValue (T("windowY"), -100); if (x != -100 && y != -100) setBoundsConstrained (x, y, getWidth(), getHeight()); else centreWithSize (getWidth(), getHeight()); } } JUCE_CATCH_ALL if (deviceManager == 0) { jassertfalse // Your filter didn't create correctly! In a standalone app that's not too great. JUCEApplication::quit(); } }