commit f0c6cc9645e9cc1ed616c83329a8d28642fb9850 parent ee6812dd34d5a48a0b95a7c673d833fb99598915 Author: dsp56300 <dsp56300@users.noreply.github.com> Date: Thu, 20 Feb 2025 23:22:04 +0100 move filetype class to plugin lib Diffstat:
17 files changed, 93 insertions(+), 98 deletions(-)
diff --git a/source/jucePluginEditorLib/CMakeLists.txt b/source/jucePluginEditorLib/CMakeLists.txt @@ -3,7 +3,6 @@ project(jucePluginEditorLib VERSION ${CMAKE_PROJECT_VERSION}) set(SOURCES dragAndDropObject.cpp dragAndDropObject.h - filetype.cpp filetype.h focusedParameter.cpp focusedParameter.h focusedParameterTooltip.cpp focusedParameterTooltip.h imagePool.cpp imagePool.h diff --git a/source/jucePluginEditorLib/filetype.cpp b/source/jucePluginEditorLib/filetype.cpp @@ -1,19 +0,0 @@ -#include "filetype.h" - -#include "baseLib/filesystem.h" - -namespace jucePluginEditorLib -{ - const FileType FileType::Syx("syx"); - const FileType FileType::Mid("mid"); - - bool FileType::operator==(const FileType& _other) const - { - return baseLib::filesystem::lowercase(m_type) == baseLib::filesystem::lowercase(_other.m_type); - } - - bool FileType::operator!=(const FileType& _other) const - { - return !(*this == _other); - } -} diff --git a/source/jucePluginEditorLib/filetype.h b/source/jucePluginEditorLib/filetype.h @@ -1,23 +0,0 @@ -#pragma once - -#include <string> - -namespace jucePluginEditorLib -{ - class FileType - { - public: - static const FileType Syx; - static const FileType Mid; - - explicit FileType(std::string _type) : m_type(std::move(_type)) - { - } - - bool operator == (const FileType& _other) const; - bool operator != (const FileType& _other) const; - - private: - std::string m_type; - }; -} diff --git a/source/jucePluginEditorLib/patchmanager/datasourcetreeitem.cpp b/source/jucePluginEditorLib/patchmanager/datasourcetreeitem.cpp @@ -9,8 +9,6 @@ #include "baseLib/filesystem.h" -#include "jucePluginEditorLib/filetype.h" - #include "jucePluginLib/patchdb/datasource.h" #include "jucePluginLib/patchdb/search.h" @@ -172,7 +170,7 @@ namespace jucePluginEditorLib::patchManager beginEdit(); }); - menu.addSubMenu("Export...", getPatchManager().getEditor().createExportFileTypeMenu([this](const FileType& _fileType) + menu.addSubMenu("Export...", getPatchManager().getEditor().createExportFileTypeMenu([this](const pluginLib::FileType& _fileType) { const auto s = getPatchManager().getSearch(getSearchHandle()); if(s) diff --git a/source/jucePluginEditorLib/patchmanager/listmodel.cpp b/source/jucePluginEditorLib/patchmanager/listmodel.cpp @@ -9,8 +9,6 @@ #include "../pluginEditor.h" -#include "jucePluginEditorLib/filetype.h" - #include "juceUiLib/uiObjectStyle.h" namespace jucePluginEditorLib::patchManager @@ -77,7 +75,7 @@ namespace jucePluginEditorLib::patchManager getPatchManager().setListStatus(static_cast<uint32_t>(selectedPatches.size()), static_cast<uint32_t>(getPatches().size())); } - bool ListModel::exportPresets(const bool _selectedOnly, const FileType& _fileType) const + bool ListModel::exportPresets(const bool _selectedOnly, const pluginLib::FileType& _fileType) const { Patches patches; @@ -112,8 +110,8 @@ namespace jucePluginEditorLib::patchManager juce::PopupMenu menu; if(hasSelectedPatches) - menu.addSubMenu("Export selected...", editor.createExportFileTypeMenu([this](const FileType& _fileType) { exportPresets(true, _fileType); })); - menu.addSubMenu("Export all...", editor.createExportFileTypeMenu([this](const FileType& _fileType) { exportPresets(false, _fileType); })); + menu.addSubMenu("Export selected...", editor.createExportFileTypeMenu([this](const pluginLib::FileType& _fileType) { exportPresets(true, _fileType); })); + menu.addSubMenu("Export all...", editor.createExportFileTypeMenu([this](const pluginLib::FileType& _fileType) { exportPresets(false, _fileType); })); if(hasSelectedPatches) { diff --git a/source/jucePluginEditorLib/patchmanager/listmodel.h b/source/jucePluginEditorLib/patchmanager/listmodel.h @@ -8,7 +8,7 @@ #include "juce_gui_basics/juce_gui_basics.h" -namespace jucePluginEditorLib +namespace pluginLib { class FileType; } @@ -146,7 +146,7 @@ namespace jucePluginEditorLib::patchManager void filterPatches(); bool match(const Patch& _patch) const; void setContent(const std::shared_ptr<pluginLib::patchDB::Search>& _search); - bool exportPresets(bool _selectedOnly, const FileType& _fileType) const; + bool exportPresets(bool _selectedOnly, const pluginLib::FileType& _fileType) const; bool onClicked(const juce::MouseEvent&); void cancelSearch(); diff --git a/source/jucePluginEditorLib/patchmanager/patchmanager.cpp b/source/jucePluginEditorLib/patchmanager/patchmanager.cpp @@ -17,10 +17,9 @@ #include "baseLib/filesystem.h" -#include "jucePluginLib/types.h" #include "jucePluginLib/clipboard.h" - -#include "jucePluginEditorLib/filetype.h" +#include "jucePluginLib/filetype.h" +#include "jucePluginLib/types.h" #include "dsp56kEmu/logging.h" @@ -608,12 +607,12 @@ namespace jucePluginEditorLib::patchManager g.fillAll(juce::Colour(0,0,0)); } - void PatchManager::exportPresets(const juce::File& _file, const std::vector<pluginLib::patchDB::PatchPtr>& _patches, const FileType& _fileType) const + void PatchManager::exportPresets(const juce::File& _file, const std::vector<pluginLib::patchDB::PatchPtr>& _patches, const pluginLib::FileType& _fileType) const { #if SYNTHLIB_DEMO_MODE getEditor().showDemoRestrictionMessageBox(); #else - FileType type = _fileType; + pluginLib::FileType type = _fileType; const auto name = Editor::createValidFilename(type, _file); std::vector<pluginLib::patchDB::Data> patchData; @@ -630,7 +629,7 @@ namespace jucePluginEditorLib::patchManager #endif } - bool PatchManager::exportPresets(std::vector<pluginLib::patchDB::PatchPtr>&& _patches, const FileType& _fileType) const + bool PatchManager::exportPresets(std::vector<pluginLib::patchDB::PatchPtr>&& _patches, const pluginLib::FileType& _fileType) const { const auto patchCount = _patches.size(); diff --git a/source/jucePluginEditorLib/patchmanager/patchmanager.h b/source/jucePluginEditorLib/patchmanager/patchmanager.h @@ -12,7 +12,6 @@ namespace jucePluginEditorLib { - class FileType; class Editor; } @@ -72,8 +71,8 @@ namespace jucePluginEditorLib::patchManager void paint(juce::Graphics& g) override; - void exportPresets(const juce::File& _file, const std::vector<pluginLib::patchDB::PatchPtr>& _patches, const FileType& _fileType) const; - bool exportPresets(std::vector<pluginLib::patchDB::PatchPtr>&& _patches, const FileType& _fileType) const; + void exportPresets(const juce::File& _file, const std::vector<pluginLib::patchDB::PatchPtr>& _patches, const pluginLib::FileType& _fileType) const; + bool exportPresets(std::vector<pluginLib::patchDB::PatchPtr>&& _patches, const pluginLib::FileType& _fileType) const; void resized() override; @@ -107,7 +106,7 @@ namespace jucePluginEditorLib::patchManager std::vector<pluginLib::patchDB::PatchPtr> getPatchesFromClipboard(); bool activatePatchFromString(const std::string& _text); bool activatePatchFromClipboard(); - std::string toString(const pluginLib::patchDB::PatchPtr& _patch) const; + std::string toString(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _type) const; LayoutType getLayout() const { return m_layout; } void setLayout(LayoutType _layout); diff --git a/source/jucePluginEditorLib/pluginEditor.cpp b/source/jucePluginEditorLib/pluginEditor.cpp @@ -1,12 +1,12 @@ #include "pluginEditor.h" -#include "filetype.h" #include "pluginProcessor.h" #include "skin.h" #include "baseLib/filesystem.h" #include "jucePluginLib/clipboard.h" +#include "jucePluginLib/filetype.h" #include "jucePluginLib/parameterbinding.h" #include "jucePluginLib/tools.h" @@ -116,12 +116,12 @@ namespace jucePluginEditorLib } #if !SYNTHLIB_DEMO_MODE - bool Editor::savePresets(const FileType& _type, const std::string& _pathName, const std::vector<std::vector<uint8_t>>& _presets) + bool Editor::savePresets(const pluginLib::FileType& _type, const std::string& _pathName, const std::vector<std::vector<uint8_t>>& _presets) { if (_presets.empty()) return false; - if (_type == FileType::Mid) + if (_type == pluginLib::FileType::Mid) return synthLib::SysexToMidi::write(_pathName.c_str(), _presets); FILE* hFile = fopen(_pathName.c_str(), "wb"); @@ -144,17 +144,17 @@ namespace jucePluginEditorLib } #endif - std::string Editor::createValidFilename(FileType& _type, const juce::File& _file) + std::string Editor::createValidFilename(pluginLib::FileType& _type, const juce::File& _file) { const auto ext = _file.getFileExtension(); auto file = _file.getFullPathName().toStdString(); if (ext.endsWithIgnoreCase("mid")) - _type = FileType::Mid; + _type = pluginLib::FileType::Mid; else if (ext.endsWithIgnoreCase("syx")) - _type = FileType::Syx; + _type = pluginLib::FileType::Syx; else - file += _type == FileType::Mid ? ".mid" : ".syx"; + file += _type == pluginLib::FileType::Mid ? ".mid" : ".syx"; return file; } @@ -566,17 +566,17 @@ namespace jucePluginEditorLib m_overlays.refreshAll(); } - juce::PopupMenu Editor::createExportFileTypeMenu(const std::function<void(FileType)>& _func) const + juce::PopupMenu Editor::createExportFileTypeMenu(const std::function<void(pluginLib::FileType)>& _func) const { juce::PopupMenu menu; createExportFileTypeMenu(menu, _func); return menu; } - void Editor::createExportFileTypeMenu(juce::PopupMenu& _menu, const std::function<void(FileType)>& _func) const + void Editor::createExportFileTypeMenu(juce::PopupMenu& _menu, const std::function<void(pluginLib::FileType)>& _func) const { - _menu.addItem(".syx", [this, _func]{_func(FileType::Syx);}); - _menu.addItem(".mid", [this, _func]{_func(FileType::Mid);}); + _menu.addItem(".syx", [this, _func]{_func(pluginLib::FileType::Syx);}); + _menu.addItem(".mid", [this, _func]{_func(pluginLib::FileType::Mid);}); } bool Editor::keyPressed(const juce::KeyPress& _key) diff --git a/source/jucePluginEditorLib/pluginEditor.h b/source/jucePluginEditorLib/pluginEditor.h @@ -21,13 +21,12 @@ namespace baseLib namespace pluginLib { + class FileType; class ParameterBinding; } namespace jucePluginEditorLib { - class FileType; - namespace patchManager { class PatchManager; @@ -55,9 +54,9 @@ namespace jucePluginEditorLib void loadPreset(const std::function<void(const juce::File&)>& _callback); void savePreset(const std::function<void(const juce::File&)>& _callback); #if !SYNTHLIB_DEMO_MODE - static bool savePresets(const FileType& _type, const std::string& _pathName, const std::vector<std::vector<uint8_t>>& _presets); + static bool savePresets(const pluginLib::FileType& _type, const std::string& _pathName, const std::vector<std::vector<uint8_t>>& _presets); #endif - static std::string createValidFilename(FileType& _type, const juce::File& _file); + static std::string createValidFilename(pluginLib::FileType& _type, const juce::File& _file); virtual std::pair<std::string, std::string> getDemoRestrictionText() const = 0; @@ -98,8 +97,8 @@ namespace jucePluginEditorLib void parentHierarchyChanged() override; - juce::PopupMenu createExportFileTypeMenu(const std::function<void(FileType)>& _func) const; - virtual void createExportFileTypeMenu(juce::PopupMenu& _menu, const std::function<void(FileType)>& _func) const; + juce::PopupMenu createExportFileTypeMenu(const std::function<void(pluginLib::FileType)>& _func) const; + virtual void createExportFileTypeMenu(juce::PopupMenu& _menu, const std::function<void(pluginLib::FileType)>& _func) const; protected: bool keyPressed(const juce::KeyPress& _key) override; diff --git a/source/jucePluginLib/CMakeLists.txt b/source/jucePluginLib/CMakeLists.txt @@ -13,6 +13,7 @@ set(SOURCES controller.cpp controller.h controllermap.cpp controllermap.h dummydevice.cpp dummydevice.h + filetype.cpp filetype.h midipacket.cpp midipacket.h midiports.cpp midiports.h parameter.cpp parameter.h diff --git a/source/jucePluginLib/filetype.cpp b/source/jucePluginLib/filetype.cpp @@ -0,0 +1,20 @@ +#include "filetype.h" + +#include "baseLib/filesystem.h" + +namespace pluginLib +{ + const FileType FileType::Syx("syx"); + const FileType FileType::Mid("mid"); + const FileType FileType::Empty({}); + + bool FileType::operator==(const FileType& _other) const + { + return baseLib::filesystem::lowercase(m_type) == baseLib::filesystem::lowercase(_other.m_type); + } + + bool FileType::operator!=(const FileType& _other) const + { + return !(*this == _other); + } +} diff --git a/source/jucePluginLib/filetype.h b/source/jucePluginLib/filetype.h @@ -0,0 +1,24 @@ +#pragma once + +#include <string> + +namespace pluginLib +{ + class FileType + { + public: + static const FileType Syx; + static const FileType Mid; + static const FileType Empty; + + explicit FileType(std::string _type) : m_type(std::move(_type)) + { + } + + bool operator == (const FileType& _other) const; + bool operator != (const FileType& _other) const; + + private: + std::string m_type; + }; +} diff --git a/source/mqJucePlugin/mqEditor.cpp b/source/mqJucePlugin/mqEditor.cpp @@ -147,7 +147,7 @@ namespace mqJucePlugin m_focusedParameter->onMouseEnter(_event); } - void Editor::savePreset(const jucePluginEditorLib::FileType& _type) + void Editor::savePreset(const pluginLib::FileType& _type) { jucePluginEditorLib::Editor::savePreset([&](const juce::File& _file) { @@ -173,17 +173,17 @@ namespace mqJucePlugin if(countAdded) menu.addSeparator(); - auto addEntry = [&](juce::PopupMenu& _menu, const std::string& _name, const std::function<void(jucePluginEditorLib::FileType)>& _callback) + auto addEntry = [&](juce::PopupMenu& _menu, const std::string& _name, const std::function<void(pluginLib::FileType)>& _callback) { juce::PopupMenu subMenu; - subMenu.addItem(".syx", [_callback]() {_callback(jucePluginEditorLib::FileType::Syx); }); - subMenu.addItem(".mid", [_callback]() {_callback(jucePluginEditorLib::FileType::Mid); }); + subMenu.addItem(".syx", [_callback]() {_callback(pluginLib::FileType::Syx); }); + subMenu.addItem(".mid", [_callback]() {_callback(pluginLib::FileType::Mid); }); _menu.addSubMenu(_name, subMenu); }; - addEntry(menu, "Current Single (Edit Buffer)", [this](jucePluginEditorLib::FileType _type) + addEntry(menu, "Current Single (Edit Buffer)", [this](pluginLib::FileType _type) { savePreset(_type); }); diff --git a/source/mqJucePlugin/mqEditor.h b/source/mqJucePlugin/mqEditor.h @@ -45,7 +45,7 @@ namespace mqJucePlugin private: void mouseEnter(const juce::MouseEvent& _event) override; - void savePreset(const jucePluginEditorLib::FileType& _type); + void savePreset(const pluginLib::FileType& _type); void onBtSave(); void onBtPresetPrev(); diff --git a/source/virusJucePlugin/VirusEditor.cpp b/source/virusJucePlugin/VirusEditor.cpp @@ -7,10 +7,10 @@ #include "VirusProcessor.h" #include "VirusController.h" +#include "jucePluginLib/filetype.h" #include "jucePluginLib/parameterbinding.h" #include "jucePluginLib/pluginVersion.h" -#include "jucePluginEditorLib/filetype.h" #include "jucePluginEditorLib/patchmanager/savepatchdesc.h" #include "juceUiLib/messageBox.h" @@ -306,24 +306,24 @@ namespace genericVirusUI if(countAdded) menu.addSeparator(); - auto addEntry = [&](juce::PopupMenu& _menu, const std::string& _name, const std::function<void(jucePluginEditorLib::FileType)>& _callback) + auto addEntry = [&](juce::PopupMenu& _menu, const std::string& _name, const std::function<void(pluginLib::FileType)>& _callback) { juce::PopupMenu subMenu; - subMenu.addItem(".syx", [_callback](){_callback(jucePluginEditorLib::FileType::Syx); }); - subMenu.addItem(".mid", [_callback](){_callback(jucePluginEditorLib::FileType::Mid); }); + subMenu.addItem(".syx", [_callback](){_callback(pluginLib::FileType::Syx); }); + subMenu.addItem(".mid", [_callback](){_callback(pluginLib::FileType::Mid); }); _menu.addSubMenu(_name, subMenu); }; - addEntry(menu, "Export Current Single (Edit Buffer)", [this](const jucePluginEditorLib::FileType& _type) + addEntry(menu, "Export Current Single (Edit Buffer)", [this](const pluginLib::FileType& _type) { savePresets(SaveType::CurrentSingle, _type); }); if(getController().isMultiMode()) { - addEntry(menu, "Export Arrangement (Multi + 16 Singles)", [this](const jucePluginEditorLib::FileType& _type) + addEntry(menu, "Export Arrangement (Multi + 16 Singles)", [this](const pluginLib::FileType& _type) { savePresets(SaveType::Arrangement, _type); }); @@ -332,7 +332,7 @@ namespace genericVirusUI juce::PopupMenu banksMenu; for(uint8_t b=0; b<static_cast<uint8_t>(getController().getBankCount()); ++b) { - addEntry(banksMenu, getController().getBankName(b), [this, b](const jucePluginEditorLib::FileType& _type) + addEntry(banksMenu, getController().getBankName(b), [this, b](const pluginLib::FileType& _type) { savePresets(SaveType::Bank, _type, b); }); @@ -451,17 +451,17 @@ namespace genericVirusUI getController().requestArrangement(); } - void VirusEditor::savePresets(SaveType _saveType, const jucePluginEditorLib::FileType& _fileType, uint8_t _bankNumber/* = 0*/) + void VirusEditor::savePresets(SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber/* = 0*/) { Editor::savePreset([this, _saveType, _bankNumber, _fileType](const juce::File& _result) { - jucePluginEditorLib::FileType fileType = _fileType; + pluginLib::FileType fileType = _fileType; const auto file = createValidFilename(fileType, _result); savePresets(file, _saveType, fileType, _bankNumber); }); } - bool VirusEditor::savePresets(const std::string& _pathName, SaveType _saveType, const jucePluginEditorLib::FileType& _fileType, uint8_t _bankNumber/* = 0*/) const + bool VirusEditor::savePresets(const std::string& _pathName, SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber/* = 0*/) const { #if SYNTHLIB_DEMO_MODE return false; diff --git a/source/virusJucePlugin/VirusEditor.h b/source/virusJucePlugin/VirusEditor.h @@ -81,8 +81,8 @@ namespace genericVirusUI void setPlayMode(uint8_t _playMode); - void savePresets(SaveType _saveType, const jucePluginEditorLib::FileType& _fileType, uint8_t _bankNumber = 0); - bool savePresets(const std::string& _pathName, SaveType _saveType, const jucePluginEditorLib::FileType& _fileType, uint8_t _bankNumber = 0) const; + void savePresets(SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber = 0); + bool savePresets(const std::string& _pathName, SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber = 0) const; virus::VirusProcessor& m_processor; pluginLib::ParameterBinding& m_parameterBinding;