diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index 2868ca2..f83b7e0 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -175,11 +175,28 @@ WebViewPluginAudioProcessorEditor::WebViewPluginAudioProcessorEditor(WebViewPlug addAndMakeVisible(*webComponent); webComponent->goToURL(localDevServerAddress); + //webComponent.goToURL (WebBrowserComponent::getResourceProviderRoot()); - setSize(800, 390); + startTimerHz(60); + /*for (int i = 0; i < processorRef.parameters.sliderIds.size(); ++i) { + slider_attatchments.push_back(new + WebSliderParameterAttachment( + *processorRef.state.getParameter(processorRef.parameters.sliderIds[i]), + *slider_relays.back(), + processorRef.state.undoManager)); + } + + for (int i = 0; i < processorRef.parameters.toggleIds.size(); ++i) { + toggle_attatchments.push_back(new + WebToggleButtonParameterAttachment( + *processorRef.state.getParameter(processorRef.parameters.toggleIds[i]), + *toggle_relays.back(), + processorRef.state.undoManager)); + }*/ + } void WebViewPluginAudioProcessorEditor::paint(Graphics& g) diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h index 1be7f08..15027ee 100644 --- a/Source/PluginEditor.h +++ b/Source/PluginEditor.h @@ -23,6 +23,10 @@ public: // Prevent page loads from navigating away from our single page web app bool pageAboutToLoad(const String& newURL) override; + bool pageisLoaded = false; + void pageFinishedLoading(const String& newURL) override { + pageisLoaded = true; + } }; //============================================================================== @@ -60,6 +64,31 @@ public: void timerCallback() override { + + if(webComponent->pageisLoaded){ + webComponent->pageisLoaded = false; + reload_count = 60; + } + if (reload_count) { + if (--reload_count == 0) { + /*for (int i = 0; i < processorRef.parameters.sliderIds.size(); ++i) { + slider_attatchments.push_back(new + WebSliderParameterAttachment( + *processorRef.state.getParameter(processorRef.parameters.sliderIds[i]), + *slider_relays.back(), + processorRef.state.undoManager)); + } + + for (int i = 0; i < processorRef.parameters.toggleIds.size(); ++i) { + toggle_attatchments.push_back(new + WebToggleButtonParameterAttachment( + *processorRef.state.getParameter(processorRef.parameters.toggleIds[i]), + *toggle_relays.back(), + processorRef.state.undoManager)); + }*/ + } + } + static constexpr size_t numFramesBuffered = 5; SpinLock::ScopedLockType lock{ processorRef.midiLock }; @@ -108,6 +137,7 @@ private: SinglePageBrowser* webComponent = nullptr; std::deque> spectrumDataFrames; + int reload_count = 0; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(WebViewPluginAudioProcessorEditor) }; \ No newline at end of file diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 9bc24d3..ee65e5a 100644 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -95,10 +95,15 @@ void WebViewPluginAudioProcessor::processBlock(juce::AudioBuffer& buffer, //============================================================================== void WebViewPluginAudioProcessor::getStateInformation(juce::MemoryBlock& destData) { - juce::ignoreUnused(destData); + auto out_state = state.copyState(); + std::unique_ptr xml(out_state.createXml()); + copyXmlToBinary(*xml, destData); } void WebViewPluginAudioProcessor::setStateInformation(const void* data, int sizeInBytes) { - juce::ignoreUnused(data, sizeInBytes); + std::unique_ptr xmlState(getXmlFromBinary(data, sizeInBytes)); + + if (xmlState.get() != nullptr && xmlState->hasTagName(state.state.getType())) + state.replaceState(juce::ValueTree::fromXml(*xmlState)); }