commit 501d7bf36b2ba725957b16d76cc35239ffb666d6
parent f962aa02d86de81f2ad84a772b24727c2148d64c
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Wed, 30 Oct 2024 23:10:00 +0100
forward Skin class to plugin editor instead of using json filename and folder separately
Diffstat:
15 files changed, 37 insertions(+), 30 deletions(-)
diff --git a/source/jucePluginEditorLib/pluginEditor.cpp b/source/jucePluginEditorLib/pluginEditor.cpp
@@ -1,6 +1,7 @@
#include "pluginEditor.h"
#include "pluginProcessor.h"
+#include "skin.h"
#include "jucePluginLib/clipboard.h"
#include "jucePluginLib/parameterbinding.h"
@@ -14,11 +15,11 @@
namespace jucePluginEditorLib
{
- Editor::Editor(Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder)
+ Editor::Editor(Processor& _processor, pluginLib::ParameterBinding& _binding, Skin _skin)
: genericUI::Editor(static_cast<EditorInterface&>(*this))
, m_processor(_processor)
, m_binding(_binding)
- , m_skinFolder(std::move(_skinFolder))
+ , m_skin(std::move(_skin))
, m_overlays(*this, _binding)
{
showDisclaimer();
@@ -30,6 +31,11 @@ namespace jucePluginEditorLib
file.deleteFile();
}
+ void Editor::create()
+ {
+ genericUI::Editor::create(m_skin.jsonFilename);
+ }
+
const char* Editor::findResourceByFilename(const std::string& _filename, uint32_t& _size) const
{
const auto res = m_processor.findResource(_filename);
@@ -544,7 +550,7 @@ namespace jucePluginEditorLib
const char* Editor::getResourceByFilename(const std::string& _name, uint32_t& _dataSize)
{
- if(!m_skinFolder.empty())
+ if(!m_skin.folder.empty())
{
auto readFromCache = [this, &_name, &_dataSize]()
{
@@ -565,7 +571,7 @@ namespace jucePluginEditorLib
const auto modulePath = synthLib::getModulePath();
const auto publicDataPath = pluginLib::Tools::getPublicDataFolder(m_processor.getProperties().vendor, m_processor.getProperties().name);
- const auto folder = synthLib::validatePath(m_skinFolder.find(modulePath) == 0 || m_skinFolder.find(publicDataPath) == 0 ? m_skinFolder : modulePath + m_skinFolder);
+ const auto folder = synthLib::validatePath(m_skin.folder.find(modulePath) == 0 || m_skin.folder.find(publicDataPath) == 0 ? m_skin.folder : modulePath + m_skin.folder);
// try to load from disk first
FILE* hFile = fopen((folder + _name).c_str(), "rb");
diff --git a/source/jucePluginEditorLib/pluginEditor.h b/source/jucePluginEditorLib/pluginEditor.h
@@ -2,6 +2,7 @@
#include "imagePool.h"
#include "parameterOverlays.h"
+#include "skin.h"
#include "types.h"
#include "juceUiLib/editor.h"
@@ -37,13 +38,15 @@ namespace jucePluginEditorLib
public:
pluginLib::Event<Editor*, juce::MouseEvent*> onOpenMenu;
- Editor(Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder);
+ Editor(Processor& _processor, pluginLib::ParameterBinding& _binding, Skin _skin);
~Editor() override;
Editor(const Editor&) = delete;
Editor(Editor&&) = delete;
Editor& operator = (const Editor&) = delete;
Editor& operator = (Editor&&) = delete;
+
+ void create();
const char* findResourceByFilename(const std::string& _filename, uint32_t& _size) const;
@@ -107,7 +110,7 @@ namespace jucePluginEditorLib
Processor& m_processor;
pluginLib::ParameterBinding& m_binding;
- const std::string m_skinFolder;
+ const Skin m_skin;
std::map<std::string, std::vector<char>> m_fileCache;
diff --git a/source/jucePluginEditorLib/skin.h b/source/jucePluginEditorLib/skin.h
@@ -6,9 +6,9 @@ namespace jucePluginEditorLib
{
struct Skin
{
- std::string displayName;
+ std::string displayName; // == folder name on disk if not embedded into binary
std::string jsonFilename;
- std::string folder;
+ std::string folder; // empty if skin is embedded into binary
bool operator == (const Skin& _other) const
{
diff --git a/source/mqJucePlugin/PluginEditorState.cpp b/source/mqJucePlugin/PluginEditorState.cpp
@@ -68,6 +68,6 @@ namespace mqJucePlugin
jucePluginEditorLib::Editor* PluginEditorState::createEditor(const jucePluginEditorLib::Skin& _skin)
{
- return new mqJucePlugin::Editor(m_processor, m_parameterBinding, _skin.folder, _skin.jsonFilename);
+ return new mqJucePlugin::Editor(m_processor, m_parameterBinding, _skin);
}
}
\ No newline at end of file
diff --git a/source/mqJucePlugin/mqEditor.cpp b/source/mqJucePlugin/mqEditor.cpp
@@ -1,6 +1,5 @@
#include "mqEditor.h"
-#include "BinaryData.h"
#include "PluginProcessor.h"
#include "mqController.h"
@@ -17,11 +16,11 @@ namespace mqJucePlugin
{
static constexpr uint32_t PlayModeListenerId = 1;
- Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename)
- : jucePluginEditorLib::Editor(_processor, _binding, std::move(_skinFolder))
+ Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin)
+ : jucePluginEditorLib::Editor(_processor, _binding, _skin)
, m_controller(dynamic_cast<Controller&>(_processor.getController()))
{
- create(_jsonFilename);
+ create();
m_frontPanel.reset(new FrontPanel(*this, m_controller));
diff --git a/source/mqJucePlugin/mqEditor.h b/source/mqJucePlugin/mqEditor.h
@@ -23,7 +23,7 @@ namespace mqJucePlugin
class Editor final : public jucePluginEditorLib::Editor
{
public:
- Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename);
+ Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin);
~Editor() override;
Editor(Editor&&) = delete;
diff --git a/source/nord/n2x/n2xJucePlugin/n2xEditor.cpp b/source/nord/n2x/n2xJucePlugin/n2xEditor.cpp
@@ -24,12 +24,12 @@
namespace n2xJucePlugin
{
- Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename)
- : jucePluginEditorLib::Editor(_processor, _binding, std::move(_skinFolder))
+ Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin)
+ : jucePluginEditorLib::Editor(_processor, _binding, _skin)
, m_controller(dynamic_cast<Controller&>(_processor.getController()))
, m_parameterBinding(_binding)
{
- create(_jsonFilename);
+ create();
addMouseListener(this, true);
{
diff --git a/source/nord/n2x/n2xJucePlugin/n2xEditor.h b/source/nord/n2x/n2xJucePlugin/n2xEditor.h
@@ -33,7 +33,7 @@ namespace n2xJucePlugin
class Editor final : public jucePluginEditorLib::Editor
{
public:
- Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename);
+ Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin);
~Editor() override;
Editor(Editor&&) = delete;
diff --git a/source/nord/n2x/n2xJucePlugin/n2xPluginEditorState.cpp b/source/nord/n2x/n2xJucePlugin/n2xPluginEditorState.cpp
@@ -42,6 +42,6 @@ namespace n2xJucePlugin
jucePluginEditorLib::Editor* PluginEditorState::createEditor(const jucePluginEditorLib::Skin& _skin)
{
- return new n2xJucePlugin::Editor(m_processor, m_parameterBinding, _skin.folder, _skin.jsonFilename);
+ return new n2xJucePlugin::Editor(m_processor, m_parameterBinding, _skin);
}
}
diff --git a/source/virusJucePlugin/VirusEditor.cpp b/source/virusJucePlugin/VirusEditor.cpp
@@ -16,13 +16,13 @@
namespace genericVirusUI
{
- VirusEditor::VirusEditor(pluginLib::ParameterBinding& _binding, virus::VirusProcessor& _processorRef, const std::string& _jsonFilename, std::string _skinFolder) :
- Editor(_processorRef, _binding, std::move(_skinFolder)),
+ VirusEditor::VirusEditor(pluginLib::ParameterBinding& _binding, virus::VirusProcessor& _processorRef, const jucePluginEditorLib::Skin& _skin) :
+ Editor(_processorRef, _binding, _skin),
m_processor(_processorRef),
m_parameterBinding(_binding),
m_romChangedListener(_processorRef.evRomChanged)
{
- create(_jsonFilename);
+ create();
m_parts.reset(new Parts(*this));
m_leds.reset(new Leds(*this, _processorRef));
diff --git a/source/virusJucePlugin/VirusEditor.h b/source/virusJucePlugin/VirusEditor.h
@@ -48,7 +48,7 @@ namespace genericVirusUI
Arrangement
};
- VirusEditor(pluginLib::ParameterBinding& _binding, virus::VirusProcessor& _processorRef, const std::string& _jsonFilename, std::string _skinFolder);
+ VirusEditor(pluginLib::ParameterBinding& _binding, virus::VirusProcessor& _processorRef, const jucePluginEditorLib::Skin& _skin);
~VirusEditor() override;
void setPart(size_t _part);
diff --git a/source/virusJucePlugin/VirusEditorState.cpp b/source/virusJucePlugin/VirusEditorState.cpp
@@ -16,7 +16,7 @@ namespace virus
jucePluginEditorLib::Editor* VirusEditorState::createEditor(const jucePluginEditorLib::Skin& _skin)
{
- return new genericVirusUI::VirusEditor(m_parameterBinding, static_cast<VirusProcessor&>(m_processor), _skin.jsonFilename, _skin.folder);
+ return new genericVirusUI::VirusEditor(m_parameterBinding, static_cast<VirusProcessor&>(m_processor), _skin);
}
void VirusEditorState::initContextMenu(juce::PopupMenu& _menu)
diff --git a/source/xtJucePlugin/PluginEditorState.cpp b/source/xtJucePlugin/PluginEditorState.cpp
@@ -65,6 +65,6 @@ namespace xtJucePlugin
jucePluginEditorLib::Editor* PluginEditorState::createEditor(const jucePluginEditorLib::Skin& _skin)
{
- return new xtJucePlugin::Editor(m_processor, m_parameterBinding, _skin.folder, _skin.jsonFilename);
+ return new xtJucePlugin::Editor(m_processor, m_parameterBinding, _skin);
}
}
\ No newline at end of file
diff --git a/source/xtJucePlugin/xtEditor.cpp b/source/xtJucePlugin/xtEditor.cpp
@@ -1,6 +1,5 @@
#include "xtEditor.h"
-#include "BinaryData.h"
#include "PluginProcessor.h"
#include "xtArp.h"
@@ -17,13 +16,13 @@
namespace xtJucePlugin
{
- Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename)
- : jucePluginEditorLib::Editor(_processor, _binding, std::move(_skinFolder))
+ Editor::Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin)
+ : jucePluginEditorLib::Editor(_processor, _binding, _skin)
, m_controller(dynamic_cast<Controller&>(_processor.getController()))
, m_parameterBinding(_binding)
, m_playModeChangeListener(m_controller.onPlayModeChanged)
{
- create(_jsonFilename);
+ create();
m_focusedParameter.reset(new FocusedParameter(m_controller, _binding, *this));
diff --git a/source/xtJucePlugin/xtEditor.h b/source/xtJucePlugin/xtEditor.h
@@ -31,7 +31,7 @@ namespace xtJucePlugin
class Editor final : public jucePluginEditorLib::Editor
{
public:
- Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, std::string _skinFolder, const std::string& _jsonFilename);
+ Editor(jucePluginEditorLib::Processor& _processor, pluginLib::ParameterBinding& _binding, const jucePluginEditorLib::Skin& _skin);
~Editor() override;
Editor(Editor&&) = delete;