Update custom patches
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
5c88ac16e6
commit
0ddffa6c77
12 changed files with 260 additions and 180 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/engine/Engine.cpp 2023-05-20 17:03:33.006081772 +0200
|
--- ../Rack/src/engine/Engine.cpp 2023-06-11 21:02:02.644002965 +0200
|
||||||
+++ Engine.cpp 2023-05-20 19:35:00.711346791 +0200
|
+++ Engine.cpp 2023-06-11 20:56:09.472002797 +0200
|
||||||
@@ -1,3 +1,30 @@
|
@@ -1,3 +1,30 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/app/MenuBar.cpp 2023-05-20 17:03:33.005081737 +0200
|
--- ../Rack/src/app/MenuBar.cpp 2023-06-11 21:02:02.640002965 +0200
|
||||||
+++ MenuBar.cpp 2023-05-20 19:32:57.019576570 +0200
|
+++ MenuBar.cpp 2023-07-11 19:18:16.204016531 +0200
|
||||||
@@ -1,8 +1,33 @@
|
@@ -1,8 +1,33 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
#include <window/Window.hpp>
|
#include <window/Window.hpp>
|
||||||
#include <asset.hpp>
|
#include <asset.hpp>
|
||||||
#include <context.hpp>
|
#include <context.hpp>
|
||||||
@@ -25,8 +51,26 @@
|
@@ -25,8 +51,28 @@
|
||||||
#include <patch.hpp>
|
#include <patch.hpp>
|
||||||
#include <library.hpp>
|
#include <library.hpp>
|
||||||
|
|
||||||
|
|
@ -53,6 +53,11 @@
|
||||||
+#include "DistrhoPlugin.hpp"
|
+#include "DistrhoPlugin.hpp"
|
||||||
+#include "DistrhoStandaloneUtils.hpp"
|
+#include "DistrhoStandaloneUtils.hpp"
|
||||||
+
|
+
|
||||||
|
+#ifdef DISTRHO_OS_WASM
|
||||||
|
+# include <emscripten/emscripten.h>
|
||||||
|
+# undef HAVE_LIBLO
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+#ifdef HAVE_LIBLO
|
+#ifdef HAVE_LIBLO
|
||||||
+# include <lo/lo.h>
|
+# include <lo/lo.h>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
@ -64,14 +69,11 @@
|
||||||
+namespace engine {
|
+namespace engine {
|
||||||
+void Engine_setRemoteDetails(Engine*, remoteUtils::RemoteDetails*);
|
+void Engine_setRemoteDetails(Engine*, remoteUtils::RemoteDetails*);
|
||||||
+}
|
+}
|
||||||
+namespace plugin {
|
|
||||||
+void updateStaticPluginsDarkMode();
|
|
||||||
+}
|
|
||||||
+
|
+
|
||||||
namespace app {
|
namespace app {
|
||||||
namespace menuBar {
|
namespace menuBar {
|
||||||
|
|
||||||
@@ -48,79 +92,180 @@
|
@@ -48,79 +94,238 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -97,6 +99,32 @@
|
||||||
+ const bool isStandalone;
|
+ const bool isStandalone;
|
||||||
+ std::vector<std::string> demoPatches;
|
+ std::vector<std::string> demoPatches;
|
||||||
+
|
+
|
||||||
|
+#ifdef DISTRHO_OS_WASM
|
||||||
|
+ static void WebBrowserDataSaved(const int err)
|
||||||
|
+ {
|
||||||
|
+ err ? async_dialog_message("Error, could not save web browser data!")
|
||||||
|
+ : async_dialog_message("Web browser data saved!");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ static void wasmSaveAs()
|
||||||
|
+ {
|
||||||
|
+ async_dialog_text_input("Filename", nullptr, [](char* const filename) {
|
||||||
|
+ if (filename == nullptr)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ APP->patch->path = asset::user("patches");
|
||||||
|
+ system::createDirectories(APP->patch->path);
|
||||||
|
+
|
||||||
|
+ APP->patch->path += filename;
|
||||||
|
+ if (rack::system::getExtension(filename) != ".vcv")
|
||||||
|
+ APP->patch->path += ".vcv";
|
||||||
|
+
|
||||||
|
+ patchUtils::saveDialog(APP->patch->path);
|
||||||
|
+ std::free(filename);
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+ FileButton(const bool standalone)
|
+ FileButton(const bool standalone)
|
||||||
+ : MenuButton(), isStandalone(standalone)
|
+ : MenuButton(), isStandalone(standalone)
|
||||||
+ {
|
+ {
|
||||||
|
|
@ -122,6 +150,11 @@
|
||||||
|
|
||||||
- menu->addChild(createMenuItem("New", RACK_MOD_CTRL_NAME "+N", []() {
|
- menu->addChild(createMenuItem("New", RACK_MOD_CTRL_NAME "+N", []() {
|
||||||
- APP->patch->loadTemplateDialog();
|
- APP->patch->loadTemplateDialog();
|
||||||
|
- }));
|
||||||
|
-
|
||||||
|
- menu->addChild(createMenuItem("Open", RACK_MOD_CTRL_NAME "+O", []() {
|
||||||
|
- APP->patch->loadDialog();
|
||||||
|
- }));
|
||||||
+#ifndef DISTRHO_OS_WASM
|
+#ifndef DISTRHO_OS_WASM
|
||||||
+ constexpr const char* const NewShortcut = RACK_MOD_CTRL_NAME "+N";
|
+ constexpr const char* const NewShortcut = RACK_MOD_CTRL_NAME "+N";
|
||||||
+#else
|
+#else
|
||||||
|
|
@ -132,16 +165,29 @@
|
||||||
+ }));
|
+ }));
|
||||||
+
|
+
|
||||||
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
+#ifndef DISTRHO_OS_WASM
|
|
||||||
+ menu->addChild(createMenuItem("New (factory template)", "", []() {
|
+ menu->addChild(createMenuItem("New (factory template)", "", []() {
|
||||||
+ patchUtils::loadTemplateDialog(true);
|
+ patchUtils::loadTemplateDialog(true);
|
||||||
}));
|
+ }));
|
||||||
|
+
|
||||||
- menu->addChild(createMenuItem("Open", RACK_MOD_CTRL_NAME "+O", []() {
|
+#ifndef DISTRHO_OS_WASM
|
||||||
- APP->patch->loadDialog();
|
+ constexpr const char* const OpenName = "Open...";
|
||||||
+ menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() {
|
+#else
|
||||||
|
+ constexpr const char* const OpenName = "Import patch...";
|
||||||
|
+#endif
|
||||||
|
+ menu->addChild(createMenuItem(OpenName, RACK_MOD_CTRL_NAME "+O", []() {
|
||||||
+ patchUtils::loadDialog();
|
+ patchUtils::loadDialog();
|
||||||
}));
|
+ }));
|
||||||
|
+
|
||||||
|
+ const std::string patchesDir = asset::user("patches");
|
||||||
|
+ const std::vector<std::string> patches = system::isDirectory(patchesDir) ? system::getEntries(patchesDir) : std::vector<std::string>();
|
||||||
|
+ menu->addChild(createSubmenuItem("Open local patch", "", [patches](ui::Menu* menu) {
|
||||||
|
+ for (const std::string& path : patches) {
|
||||||
|
+ std::string name = system::getStem(path);
|
||||||
|
+ menu->addChild(createMenuItem(name, "", [=]() {
|
||||||
|
+ patchUtils::loadPathDialog(path, false);
|
||||||
|
+ }));
|
||||||
|
+ }
|
||||||
|
+ }, patches.empty()));
|
||||||
|
|
||||||
menu->addChild(createSubmenuItem("Open recent", "", [](ui::Menu* menu) {
|
menu->addChild(createSubmenuItem("Open recent", "", [](ui::Menu* menu) {
|
||||||
for (const std::string& path : settings::recentPatchPaths) {
|
for (const std::string& path : settings::recentPatchPaths) {
|
||||||
|
|
@ -152,105 +198,11 @@
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, settings::recentPatchPaths.empty()));
|
}, settings::recentPatchPaths.empty()));
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Save", RACK_MOD_CTRL_NAME "+S", []() {
|
|
||||||
- APP->patch->saveDialog();
|
|
||||||
+ // NOTE: will do nothing if path is empty, intentionally
|
|
||||||
+ patchUtils::saveDialog(APP->patch->path);
|
|
||||||
+ }, APP->patch->path.empty()));
|
|
||||||
+
|
|
||||||
+ menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
|
||||||
+ patchUtils::saveAsDialog();
|
|
||||||
+ }));
|
|
||||||
+#else
|
|
||||||
+ menu->addChild(createMenuItem("Import patch...", RACK_MOD_CTRL_NAME "+O", []() {
|
|
||||||
+ patchUtils::loadDialog();
|
|
||||||
}));
|
|
||||||
|
|
||||||
- menu->addChild(createMenuItem("Save as", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
|
||||||
- APP->patch->saveAsDialog();
|
|
||||||
+ menu->addChild(createMenuItem("Import selection...", "", [=]() {
|
|
||||||
+ patchUtils::loadSelectionDialog();
|
|
||||||
+ }, false, true));
|
|
||||||
+
|
|
||||||
+ menu->addChild(createMenuItem("Save and download compressed", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
|
||||||
+ patchUtils::saveAsDialog();
|
|
||||||
}));
|
|
||||||
|
|
||||||
- menu->addChild(createMenuItem("Save a copy", "", []() {
|
|
||||||
- APP->patch->saveAsDialog(false);
|
|
||||||
+ menu->addChild(createMenuItem("Save and download uncompressed", "", []() {
|
|
||||||
+ patchUtils::saveAsDialogUncompressed();
|
|
||||||
}));
|
|
||||||
+#endif
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() {
|
|
||||||
- APP->patch->revertDialog();
|
|
||||||
- }, APP->patch->path == ""));
|
|
||||||
+ patchUtils::revertDialog();
|
|
||||||
+ }, APP->patch->path.empty()));
|
|
||||||
|
|
||||||
menu->addChild(createMenuItem("Overwrite template", "", []() {
|
|
||||||
- APP->patch->saveTemplateDialog();
|
|
||||||
+ patchUtils::saveTemplateDialog();
|
|
||||||
}));
|
|
||||||
|
|
||||||
+#if defined(HAVE_LIBLO) || ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
|
||||||
+#ifdef __MOD_DEVICES__
|
|
||||||
+#define REMOTE_NAME "MOD"
|
|
||||||
+#else
|
|
||||||
+#define REMOTE_NAME "Remote"
|
|
||||||
+#endif
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
|
||||||
|
|
||||||
- // Load selection
|
|
||||||
- menu->addChild(createMenuItem("Import selection", "", [=]() {
|
|
||||||
- APP->scene->rack->loadSelectionDialog();
|
|
||||||
- }, false, true));
|
|
||||||
+ remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote();
|
|
||||||
+
|
|
||||||
+ if (remoteDetails != nullptr && remoteDetails->connected) {
|
|
||||||
+ menu->addChild(createMenuItem("Deploy to " REMOTE_NAME, "F7", [remoteDetails]() {
|
|
||||||
+ remoteUtils::sendFullPatchToRemote(remoteDetails);
|
|
||||||
+ }));
|
|
||||||
|
|
||||||
+ menu->addChild(createCheckMenuItem("Auto deploy to " REMOTE_NAME, "",
|
|
||||||
+ [remoteDetails]() {return remoteDetails->autoDeploy;},
|
|
||||||
+ [remoteDetails]() {
|
|
||||||
+ remoteDetails->autoDeploy = !remoteDetails->autoDeploy;
|
|
||||||
+ Engine_setRemoteDetails(APP->engine, remoteDetails->autoDeploy ? remoteDetails : nullptr);
|
|
||||||
+ }
|
|
||||||
+ ));
|
|
||||||
+ } else {
|
|
||||||
+ menu->addChild(createMenuItem("Connect to " REMOTE_NAME, "", []() {
|
|
||||||
+ DISTRHO_SAFE_ASSERT(remoteUtils::connectToRemote());
|
|
||||||
+ }));
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
|
||||||
+#ifndef DISTRHO_OS_WASM
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
|
||||||
|
|
||||||
- menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() {
|
|
||||||
- APP->window->close();
|
|
||||||
+ // Load selection
|
|
||||||
+ menu->addChild(createMenuItem("Import selection...", "", [=]() {
|
|
||||||
+ patchUtils::loadSelectionDialog();
|
|
||||||
+ }, false, true));
|
|
||||||
+
|
|
||||||
+ menu->addChild(createMenuItem("Export uncompressed json...", "", []() {
|
|
||||||
+ patchUtils::saveAsDialogUncompressed();
|
|
||||||
}));
|
|
||||||
+#endif
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+ if (!demoPatches.empty())
|
+ if (!demoPatches.empty())
|
||||||
+ {
|
+ {
|
||||||
+ menu->addChild(new ui::MenuSeparator);
|
+ menu->addChild(createSubmenuItem("Open demo / example project", "", [=](ui::Menu* const menu) {
|
||||||
+
|
|
||||||
+ menu->addChild(createSubmenuItem("Open Demo / Example project", "", [=](ui::Menu* const menu) {
|
|
||||||
+ for (std::string path : demoPatches) {
|
+ for (std::string path : demoPatches) {
|
||||||
+ std::string label = system::getStem(path);
|
+ std::string label = system::getStem(path);
|
||||||
+
|
+
|
||||||
|
|
@ -265,13 +217,126 @@
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ menu->addChild(new ui::MenuSeparator);
|
+ menu->addChild(new ui::MenuSeparator);
|
||||||
+
|
|
||||||
+ menu->addChild(createMenuItem("Open PatchStorage.com for more patches", "", []() {
|
+ menu->addChild(createMenuItem("Open patchstorage.com for more patches", "", []() {
|
||||||
+ patchUtils::openBrowser("https://patchstorage.com/platform/cardinal/");
|
+ patchUtils::openBrowser("https://patchstorage.com/platform/cardinal/");
|
||||||
+ }));
|
+ }));
|
||||||
+ }));
|
+ }));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
|
+ menu->addChild(createMenuItem("Import selection...", "", [=]() {
|
||||||
|
+ patchUtils::loadSelectionDialog();
|
||||||
|
+ }, false, true));
|
||||||
|
+
|
||||||
|
+ menu->addChild(new ui::MenuSeparator);
|
||||||
|
+
|
||||||
|
+#ifndef DISTRHO_OS_WASM
|
||||||
|
menu->addChild(createMenuItem("Save", RACK_MOD_CTRL_NAME "+S", []() {
|
||||||
|
- APP->patch->saveDialog();
|
||||||
|
+ // NOTE: for plugin versions it will do nothing if path is empty, intentionally
|
||||||
|
+ patchUtils::saveDialog(APP->patch->path);
|
||||||
|
+ }, APP->patch->path.empty() && !isStandalone));
|
||||||
|
+
|
||||||
|
+ menu->addChild(createMenuItem("Save as / Export...", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
||||||
|
+ patchUtils::saveAsDialog();
|
||||||
|
+ }));
|
||||||
|
+#else
|
||||||
|
+ menu->addChild(createMenuItem("Save", "", []() {
|
||||||
|
+ if (APP->patch->path.empty())
|
||||||
|
+ wasmSaveAs();
|
||||||
|
+ else
|
||||||
|
+ patchUtils::saveDialog(APP->patch->path);
|
||||||
|
}));
|
||||||
|
|
||||||
|
- menu->addChild(createMenuItem("Save as", RACK_MOD_CTRL_NAME "+Shift+S", []() {
|
||||||
|
- APP->patch->saveAsDialog();
|
||||||
|
+ menu->addChild(createMenuItem("Save as...", "", []() {
|
||||||
|
+ wasmSaveAs();
|
||||||
|
}));
|
||||||
|
|
||||||
|
- menu->addChild(createMenuItem("Save a copy", "", []() {
|
||||||
|
- APP->patch->saveAsDialog(false);
|
||||||
|
+ menu->addChild(createMenuItem("Save and download compressed", "", []() {
|
||||||
|
+ patchUtils::saveAsDialog();
|
||||||
|
}));
|
||||||
|
|
||||||
|
+ menu->addChild(createMenuItem("Save and download uncompressed", "", []() {
|
||||||
|
+ patchUtils::saveAsDialogUncompressed();
|
||||||
|
+ }));
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
menu->addChild(createMenuItem("Revert", RACK_MOD_CTRL_NAME "+" RACK_MOD_SHIFT_NAME "+O", []() {
|
||||||
|
- APP->patch->revertDialog();
|
||||||
|
- }, APP->patch->path == ""));
|
||||||
|
+ patchUtils::revertDialog();
|
||||||
|
+ }, APP->patch->path.empty()));
|
||||||
|
|
||||||
|
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
|
menu->addChild(createMenuItem("Overwrite template", "", []() {
|
||||||
|
- APP->patch->saveTemplateDialog();
|
||||||
|
+ patchUtils::saveTemplateDialog();
|
||||||
|
}));
|
||||||
|
|
||||||
|
+#ifdef DISTRHO_OS_WASM
|
||||||
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
||||||
|
- // Load selection
|
||||||
|
- menu->addChild(createMenuItem("Import selection", "", [=]() {
|
||||||
|
- APP->scene->rack->loadSelectionDialog();
|
||||||
|
- }, false, true));
|
||||||
|
-
|
||||||
|
+ menu->addChild(createMenuItem("Save persistent browser data", "", []() {
|
||||||
|
+ settings::save();
|
||||||
|
+ EM_ASM({
|
||||||
|
+ Module.FS.syncfs(false, function(err){ dynCall('vi', $0, [!!err]) });
|
||||||
|
+ }, WebBrowserDataSaved);
|
||||||
|
+ }));
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if defined(HAVE_LIBLO) || ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
|
+#ifdef __MOD_DEVICES__
|
||||||
|
+#define REMOTE_NAME "MOD"
|
||||||
|
+#else
|
||||||
|
+#define REMOTE_NAME "Remote"
|
||||||
|
+#endif
|
||||||
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
||||||
|
- menu->addChild(createMenuItem("Quit", RACK_MOD_CTRL_NAME "+Q", []() {
|
||||||
|
- APP->window->close();
|
||||||
|
- }));
|
||||||
|
+ remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote();
|
||||||
|
+
|
||||||
|
+ if (remoteDetails != nullptr && remoteDetails->connected) {
|
||||||
|
+ menu->addChild(createMenuItem("Deploy to " REMOTE_NAME, "F7", [remoteDetails]() {
|
||||||
|
+ remoteUtils::sendFullPatchToRemote(remoteDetails);
|
||||||
|
+ }));
|
||||||
|
+
|
||||||
|
+ menu->addChild(createCheckMenuItem("Auto deploy to " REMOTE_NAME, "",
|
||||||
|
+ [remoteDetails]() {return remoteDetails->autoDeploy;},
|
||||||
|
+ [remoteDetails]() {
|
||||||
|
+ remoteDetails->autoDeploy = !remoteDetails->autoDeploy;
|
||||||
|
+ Engine_setRemoteDetails(APP->engine, remoteDetails->autoDeploy ? remoteDetails : nullptr);
|
||||||
|
+ }
|
||||||
|
+ ));
|
||||||
|
+#ifndef __MOD_DEVICES__
|
||||||
|
+ } else {
|
||||||
|
+ menu->addChild(createMenuItem("Connect to " REMOTE_NAME "...", "", [remoteDetails]() {
|
||||||
|
+ const std::string url = remoteDetails != nullptr ? remoteDetails->url : CARDINAL_DEFAULT_REMOTE_URL;
|
||||||
|
+ async_dialog_text_input("Remote:", url.c_str(), [](char* const url) {
|
||||||
|
+ if (url == nullptr)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ DISTRHO_SAFE_ASSERT(remoteUtils::connectToRemote(url));
|
||||||
|
+ std::free(url);
|
||||||
|
+ });
|
||||||
|
+ }));
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+#ifndef DISTRHO_OS_WASM
|
+#ifndef DISTRHO_OS_WASM
|
||||||
+ if (isStandalone) {
|
+ if (isStandalone) {
|
||||||
+ menu->addChild(new ui::MenuSeparator);
|
+ menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
@ -284,7 +349,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -166,7 +311,7 @@
|
@@ -166,7 +371,7 @@
|
||||||
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
||||||
|
|
@ -293,7 +358,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -256,7 +401,7 @@
|
@@ -256,7 +461,7 @@
|
||||||
return settings::cableTension;
|
return settings::cableTension;
|
||||||
}
|
}
|
||||||
float getDefaultValue() override {
|
float getDefaultValue() override {
|
||||||
|
|
@ -302,10 +367,11 @@
|
||||||
}
|
}
|
||||||
float getDisplayValue() override {
|
float getDisplayValue() override {
|
||||||
return getValue() * 100;
|
return getValue() * 100;
|
||||||
@@ -393,49 +538,36 @@
|
@@ -393,49 +598,39 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
+static void setAllFramebufferWidgetsDirty(widget::Widget* const widget)
|
+static void setAllFramebufferWidgetsDirty(widget::Widget* const widget)
|
||||||
+{
|
+{
|
||||||
+ for (widget::Widget* child : widget->children)
|
+ for (widget::Widget* child : widget->children)
|
||||||
|
|
@ -318,6 +384,7 @@
|
||||||
+ setAllFramebufferWidgetsDirty(child);
|
+ setAllFramebufferWidgetsDirty(child);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
+#endif
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
struct ViewButton : MenuButton {
|
struct ViewButton : MenuButton {
|
||||||
|
|
@ -363,18 +430,19 @@
|
||||||
- ui::refreshTheme();
|
- ui::refreshTheme();
|
||||||
- }
|
- }
|
||||||
- ));
|
- ));
|
||||||
|
+#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
+ std::string darkModeText;
|
+ std::string darkModeText;
|
||||||
+ if (settings::darkMode)
|
+ if (settings::darkMode)
|
||||||
+ darkModeText = CHECKMARK_STRING;
|
+ darkModeText = CHECKMARK_STRING;
|
||||||
+ menu->addChild(createMenuItem("Dark Mode", darkModeText, []() {
|
+ menu->addChild(createMenuItem("Dark Mode", darkModeText, []() {
|
||||||
+ switchDarkMode(!settings::darkMode);
|
+ switchDarkMode(!settings::darkMode);
|
||||||
+ plugin::updateStaticPluginsDarkMode();
|
|
||||||
+ setAllFramebufferWidgetsDirty(APP->scene);
|
+ setAllFramebufferWidgetsDirty(APP->scene);
|
||||||
+ }));
|
+ }));
|
||||||
|
+#endif
|
||||||
|
|
||||||
menu->addChild(createBoolPtrMenuItem("Show tooltips", "", &settings::tooltips));
|
menu->addChild(createBoolPtrMenuItem("Show tooltips", "", &settings::tooltips));
|
||||||
|
|
||||||
@@ -460,9 +592,18 @@
|
@@ -460,9 +655,18 @@
|
||||||
menu->addChild(haloBrightnessSlider);
|
menu->addChild(haloBrightnessSlider);
|
||||||
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
@ -393,7 +461,7 @@
|
||||||
|
|
||||||
static const std::vector<std::string> knobModeLabels = {
|
static const std::vector<std::string> knobModeLabels = {
|
||||||
"Linear",
|
"Linear",
|
||||||
@@ -487,11 +628,34 @@
|
@@ -487,11 +691,34 @@
|
||||||
menu->addChild(knobScrollSensitivitySlider);
|
menu->addChild(knobScrollSensitivitySlider);
|
||||||
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
|
|
@ -410,10 +478,10 @@
|
||||||
+ APP->window->setFullScreen(!fullscreen);
|
+ APP->window->setFullScreen(!fullscreen);
|
||||||
+ }));
|
+ }));
|
||||||
+#endif
|
+#endif
|
||||||
+
|
|
||||||
+ menu->addChild(createBoolPtrMenuItem("Invert zoom", "", &settings::invertZoom));
|
|
||||||
|
|
||||||
- menu->addChild(createBoolPtrMenuItem("Auto-squeeze algorithm (experimental)", "", &settings::squeezeModules));
|
- menu->addChild(createBoolPtrMenuItem("Auto-squeeze algorithm (experimental)", "", &settings::squeezeModules));
|
||||||
|
+ menu->addChild(createBoolPtrMenuItem("Invert zoom", "", &settings::invertZoom));
|
||||||
|
+
|
||||||
+ static const std::vector<std::string> rateLimitLabels = {
|
+ static const std::vector<std::string> rateLimitLabels = {
|
||||||
+ "None",
|
+ "None",
|
||||||
+ "2x",
|
+ "2x",
|
||||||
|
|
@ -431,7 +499,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -501,47 +665,6 @@
|
@@ -501,47 +728,6 @@
|
||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -479,7 +547,7 @@
|
||||||
struct EngineButton : MenuButton {
|
struct EngineButton : MenuButton {
|
||||||
void onAction(const ActionEvent& e) override {
|
void onAction(const ActionEvent& e) override {
|
||||||
ui::Menu* menu = createMenu();
|
ui::Menu* menu = createMenu();
|
||||||
@@ -555,268 +678,46 @@
|
@@ -555,268 +741,46 @@
|
||||||
settings::cpuMeter ^= true;
|
settings::cpuMeter ^= true;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
@ -638,7 +706,7 @@
|
||||||
-
|
-
|
||||||
- MenuItem::step();
|
- MenuItem::step();
|
||||||
- }
|
- }
|
||||||
|
-
|
||||||
- void onAction(const ActionEvent& e) override {
|
- void onAction(const ActionEvent& e) override {
|
||||||
- std::thread t([=] {
|
- std::thread t([=] {
|
||||||
- library::syncUpdate(slug);
|
- library::syncUpdate(slug);
|
||||||
|
|
@ -701,7 +769,7 @@
|
||||||
- addChild(createMenuItem("Browse VCV Library", "", [=]() {
|
- addChild(createMenuItem("Browse VCV Library", "", [=]() {
|
||||||
- system::openBrowser("https://library.vcvrack.com/");
|
- system::openBrowser("https://library.vcvrack.com/");
|
||||||
- }));
|
- }));
|
||||||
-
|
|
||||||
- SyncUpdatesItem* syncItem = new SyncUpdatesItem;
|
- SyncUpdatesItem* syncItem = new SyncUpdatesItem;
|
||||||
- syncItem->text = "Update all";
|
- syncItem->text = "Update all";
|
||||||
- addChild(syncItem);
|
- addChild(syncItem);
|
||||||
|
|
@ -730,7 +798,7 @@
|
||||||
-
|
-
|
||||||
-struct LibraryButton : MenuButton {
|
-struct LibraryButton : MenuButton {
|
||||||
- NotificationIcon* notification;
|
- NotificationIcon* notification;
|
||||||
-
|
|
||||||
- LibraryButton() {
|
- LibraryButton() {
|
||||||
- notification = new NotificationIcon;
|
- notification = new NotificationIcon;
|
||||||
- addChild(notification);
|
- addChild(notification);
|
||||||
|
|
@ -747,7 +815,7 @@
|
||||||
- });
|
- });
|
||||||
- t.detach();
|
- t.detach();
|
||||||
- }
|
- }
|
||||||
|
-
|
||||||
- void step() override {
|
- void step() override {
|
||||||
- notification->box.pos = math::Vec(0, 0);
|
- notification->box.pos = math::Vec(0, 0);
|
||||||
- notification->visible = library::hasUpdates();
|
- notification->visible = library::hasUpdates();
|
||||||
|
|
@ -781,7 +849,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -827,32 +728,17 @@
|
@@ -827,63 +791,30 @@
|
||||||
|
|
||||||
|
|
||||||
struct HelpButton : MenuButton {
|
struct HelpButton : MenuButton {
|
||||||
|
|
@ -818,7 +886,9 @@
|
||||||
}));
|
}));
|
||||||
|
|
||||||
menu->addChild(new ui::MenuSeparator);
|
menu->addChild(new ui::MenuSeparator);
|
||||||
@@ -861,29 +747,9 @@
|
|
||||||
|
+#ifndef DISTRHO_OS_WASM
|
||||||
|
menu->addChild(createMenuItem("Open user folder", "", [=]() {
|
||||||
system::openDirectory(asset::user(""));
|
system::openDirectory(asset::user(""));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
@ -841,6 +911,7 @@
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
+ menu->addChild(new ui::MenuSeparator);
|
+ menu->addChild(new ui::MenuSeparator);
|
||||||
|
+#endif
|
||||||
|
|
||||||
- void step() override {
|
- void step() override {
|
||||||
- notification->box.pos = math::Vec(0, 0);
|
- notification->box.pos = math::Vec(0, 0);
|
||||||
|
|
@ -850,7 +921,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -926,15 +792,19 @@
|
@@ -926,15 +857,19 @@
|
||||||
|
|
||||||
text = "";
|
text = "";
|
||||||
|
|
||||||
|
|
@ -873,7 +944,7 @@
|
||||||
|
|
||||||
Label::step();
|
Label::step();
|
||||||
}
|
}
|
||||||
@@ -944,7 +814,9 @@
|
@@ -944,7 +879,9 @@
|
||||||
struct MenuBar : widget::OpaqueWidget {
|
struct MenuBar : widget::OpaqueWidget {
|
||||||
InfoLabel* infoLabel;
|
InfoLabel* infoLabel;
|
||||||
|
|
||||||
|
|
@ -884,7 +955,7 @@
|
||||||
const float margin = 5;
|
const float margin = 5;
|
||||||
box.size.y = BND_WIDGET_HEIGHT + 2 * margin;
|
box.size.y = BND_WIDGET_HEIGHT + 2 * margin;
|
||||||
|
|
||||||
@@ -953,7 +825,7 @@
|
@@ -953,7 +890,7 @@
|
||||||
layout->spacing = math::Vec(0, 0);
|
layout->spacing = math::Vec(0, 0);
|
||||||
addChild(layout);
|
addChild(layout);
|
||||||
|
|
||||||
|
|
@ -893,7 +964,7 @@
|
||||||
fileButton->text = "File";
|
fileButton->text = "File";
|
||||||
layout->addChild(fileButton);
|
layout->addChild(fileButton);
|
||||||
|
|
||||||
@@ -965,13 +837,11 @@
|
@@ -965,13 +902,11 @@
|
||||||
viewButton->text = "View";
|
viewButton->text = "View";
|
||||||
layout->addChild(viewButton);
|
layout->addChild(viewButton);
|
||||||
|
|
||||||
|
|
@ -909,7 +980,7 @@
|
||||||
|
|
||||||
HelpButton* helpButton = new HelpButton;
|
HelpButton* helpButton = new HelpButton;
|
||||||
helpButton->text = "Help";
|
helpButton->text = "Help";
|
||||||
@@ -1003,7 +873,7 @@
|
@@ -1003,7 +938,7 @@
|
||||||
|
|
||||||
|
|
||||||
widget::Widget* createMenuBar() {
|
widget::Widget* createMenuBar() {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/plugin/Model.cpp 2023-05-20 17:03:33.007081806 +0200
|
--- ../Rack/src/plugin/Model.cpp 2023-06-11 21:02:02.644002965 +0200
|
||||||
+++ Model.cpp 2023-05-20 18:29:51.484669742 +0200
|
+++ Model.cpp 2023-06-11 20:56:09.472002797 +0200
|
||||||
@@ -1,3 +1,30 @@
|
@@ -1,3 +1,30 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/app/ModuleWidget.cpp 2023-05-20 17:03:33.005081737 +0200
|
--- ../Rack/src/app/ModuleWidget.cpp 2023-06-11 21:02:02.640002965 +0200
|
||||||
+++ ModuleWidget.cpp 2023-05-20 18:40:08.948302802 +0200
|
+++ ModuleWidget.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,8 +1,35 @@
|
@@ -1,8 +1,35 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/widget/OpenGlWidget.cpp 2022-09-21 20:49:12.201540766 +0200
|
--- ../Rack/src/widget/OpenGlWidget.cpp 2023-06-11 21:02:02.644002965 +0200
|
||||||
+++ OpenGlWidget.cpp 2023-05-20 18:41:22.249200486 +0200
|
+++ OpenGlWidget.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,3 +1,30 @@
|
@@ -1,3 +1,30 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/app/Scene.cpp 2022-09-21 20:49:12.199540706 +0200
|
--- ../Rack/src/app/Scene.cpp 2023-06-11 21:02:02.640002965 +0200
|
||||||
+++ Scene.cpp 2023-05-20 18:44:57.551491858 +0200
|
+++ Scene.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,12 +1,36 @@
|
@@ -1,12 +1,36 @@
|
||||||
-#include <thread>
|
-#include <thread>
|
||||||
-
|
-
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
if (e.keyName == "q" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "q" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
@@ -180,19 +269,22 @@
|
@@ -180,19 +269,25 @@
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
if (e.keyName == "o" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "o" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
|
|
@ -237,21 +237,24 @@
|
||||||
+ patchUtils::revertDialog();
|
+ patchUtils::revertDialog();
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
+#ifndef DISTRHO_OS_WASM
|
|
||||||
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
- APP->patch->saveDialog();
|
- APP->patch->saveDialog();
|
||||||
+ // NOTE: will do nothing if path is empty, intentionally
|
+ // NOTE: for plugin versions it will do nothing if path is empty, intentionally
|
||||||
|
+ if (APP->patch->path.empty()) {
|
||||||
|
+ if (isStandalone())
|
||||||
|
+ patchUtils::saveAsDialog();
|
||||||
|
+ } else {
|
||||||
+ patchUtils::saveDialog(APP->patch->path);
|
+ patchUtils::saveDialog(APP->patch->path);
|
||||||
|
+ }
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
+#endif
|
|
||||||
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) {
|
if (e.keyName == "s" && (e.mods & RACK_MOD_MASK) == (RACK_MOD_CTRL | GLFW_MOD_SHIFT)) {
|
||||||
- APP->patch->saveAsDialog();
|
- APP->patch->saveAsDialog();
|
||||||
+ patchUtils::saveAsDialog();
|
+ patchUtils::saveAsDialog();
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
if (e.keyName == "z" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "z" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
@@ -220,24 +312,42 @@
|
@@ -220,24 +315,42 @@
|
||||||
APP->scene->rackScroll->setZoom(std::pow(2.f, zoom));
|
APP->scene->rackScroll->setZoom(std::pow(2.f, zoom));
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
}
|
}
|
||||||
|
|
@ -296,7 +299,7 @@
|
||||||
|
|
||||||
// Module selections
|
// Module selections
|
||||||
if (e.keyName == "a" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "a" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
@@ -326,13 +436,6 @@
|
@@ -326,13 +439,6 @@
|
||||||
|
|
||||||
// Key commands that can be overridden by children
|
// Key commands that can be overridden by children
|
||||||
if (e.action == GLFW_PRESS || e.action == GLFW_REPEAT) {
|
if (e.action == GLFW_PRESS || e.action == GLFW_REPEAT) {
|
||||||
|
|
@ -310,7 +313,7 @@
|
||||||
if (e.keyName == "v" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
if (e.keyName == "v" && (e.mods & RACK_MOD_MASK) == RACK_MOD_CTRL) {
|
||||||
rack->pasteClipboardAction();
|
rack->pasteClipboardAction();
|
||||||
e.consume(this);
|
e.consume(this);
|
||||||
@@ -351,7 +454,7 @@
|
@@ -351,7 +457,7 @@
|
||||||
std::string extension = system::getExtension(path);
|
std::string extension = system::getExtension(path);
|
||||||
|
|
||||||
if (extension == ".vcv") {
|
if (extension == ".vcv") {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/window/Window.cpp 2023-05-20 17:03:33.007081806 +0200
|
--- ../Rack/src/window/Window.cpp 2023-06-11 21:02:02.648002965 +0200
|
||||||
+++ Window.cpp 2023-05-20 19:01:25.266135825 +0200
|
+++ Window.cpp 2023-07-13 17:01:53.848000425 +0200
|
||||||
@@ -1,33 +1,94 @@
|
@@ -1,33 +1,94 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
@ -978,7 +978,7 @@
|
||||||
// t5 = system::getTime();
|
// t5 = system::getTime();
|
||||||
// DEBUG("pre-step %6.1f step %6.1f draw %6.1f nvgEndFrame %6.1f glfwSwapBuffers %6.1f total %6.1f",
|
// DEBUG("pre-step %6.1f step %6.1f draw %6.1f nvgEndFrame %6.1f glfwSwapBuffers %6.1f total %6.1f",
|
||||||
// (t1 - frameTime) * 1e3f,
|
// (t1 - frameTime) * 1e3f,
|
||||||
@@ -526,163 +705,124 @@
|
@@ -526,163 +705,130 @@
|
||||||
// (t5 - t4) * 1e3f,
|
// (t5 - t4) * 1e3f,
|
||||||
// (t5 - frameTime) * 1e3f
|
// (t5 - frameTime) * 1e3f
|
||||||
// );
|
// );
|
||||||
|
|
@ -1181,19 +1181,23 @@
|
||||||
void Window::setFullScreen(bool fullScreen) {
|
void Window::setFullScreen(bool fullScreen) {
|
||||||
- if (!fullScreen) {
|
- if (!fullScreen) {
|
||||||
- glfwSetWindowMonitor(win, NULL, internal->lastWindowX, internal->lastWindowY, internal->lastWindowWidth, internal->lastWindowHeight, GLFW_DONT_CARE);
|
- glfwSetWindowMonitor(win, NULL, internal->lastWindowX, internal->lastWindowY, internal->lastWindowWidth, internal->lastWindowHeight, GLFW_DONT_CARE);
|
||||||
- }
|
+#ifdef DISTRHO_OS_WASM
|
||||||
|
+ if (fullScreen)
|
||||||
|
+ {
|
||||||
|
+ try {
|
||||||
|
+ emscripten_request_fullscreen(internal->tlw->getWindow().getApp().getClassName(), false);
|
||||||
|
+ } DISTRHO_SAFE_EXCEPTION("fullscreen");
|
||||||
|
}
|
||||||
- else {
|
- else {
|
||||||
- glfwGetWindowPos(win, &internal->lastWindowX, &internal->lastWindowY);
|
- glfwGetWindowPos(win, &internal->lastWindowX, &internal->lastWindowY);
|
||||||
- glfwGetWindowSize(win, &internal->lastWindowWidth, &internal->lastWindowHeight);
|
- glfwGetWindowSize(win, &internal->lastWindowWidth, &internal->lastWindowHeight);
|
||||||
- GLFWmonitor* monitor = glfwGetPrimaryMonitor();
|
- GLFWmonitor* monitor = glfwGetPrimaryMonitor();
|
||||||
- const GLFWvidmode* mode = glfwGetVideoMode(monitor);
|
- const GLFWvidmode* mode = glfwGetVideoMode(monitor);
|
||||||
- glfwSetWindowMonitor(win, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
|
- glfwSetWindowMonitor(win, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
|
||||||
- }
|
|
||||||
+#ifdef DISTRHO_OS_WASM
|
|
||||||
+ if (fullScreen)
|
|
||||||
+ emscripten_request_fullscreen(internal->tlw->getWindow().getApp().getClassName(), false);
|
|
||||||
+ else
|
+ else
|
||||||
|
+ {
|
||||||
+ emscripten_exit_fullscreen();
|
+ emscripten_exit_fullscreen();
|
||||||
|
}
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1214,7 +1218,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -702,7 +842,7 @@
|
@@ -702,7 +848,7 @@
|
||||||
|
|
||||||
|
|
||||||
double Window::getFrameDurationRemaining() {
|
double Window::getFrameDurationRemaining() {
|
||||||
|
|
@ -1223,7 +1227,7 @@
|
||||||
return frameDuration - (system::getTime() - internal->frameTime);
|
return frameDuration - (system::getTime() - internal->frameTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,14 +853,15 @@
|
@@ -713,14 +859,15 @@
|
||||||
return pair->second;
|
return pair->second;
|
||||||
|
|
||||||
// Load font
|
// Load font
|
||||||
|
|
@ -1242,7 +1246,7 @@
|
||||||
}
|
}
|
||||||
internal->fontCache[filename] = font;
|
internal->fontCache[filename] = font;
|
||||||
return font;
|
return font;
|
||||||
@@ -733,14 +874,15 @@
|
@@ -733,14 +880,15 @@
|
||||||
return pair->second;
|
return pair->second;
|
||||||
|
|
||||||
// Load image
|
// Load image
|
||||||
|
|
@ -1261,7 +1265,7 @@
|
||||||
}
|
}
|
||||||
internal->imageCache[filename] = image;
|
internal->imageCache[filename] = image;
|
||||||
return image;
|
return image;
|
||||||
@@ -757,28 +899,156 @@
|
@@ -757,28 +905,156 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/dep/oui-blendish/blendish.c 2022-09-21 20:49:29.973066921 +0200
|
--- ../Rack/dep/oui-blendish/blendish.c 2023-06-11 21:02:28.136002978 +0200
|
||||||
+++ blendish.c 2022-09-21 20:41:45.883648777 +0200
|
+++ blendish.c 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -61,7 +61,7 @@
|
@@ -61,7 +61,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/common.cpp 2023-05-20 17:03:33.006081772 +0200
|
--- ../Rack/src/common.cpp 2023-06-11 21:02:02.640002965 +0200
|
||||||
+++ common.cpp 2023-05-20 17:51:04.675045244 +0200
|
+++ common.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,12 +1,57 @@
|
@@ -1,12 +1,57 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -14,12 +59,11 @@
|
@@ -14,30 +59,21 @@
|
||||||
|
|
||||||
namespace rack {
|
namespace rack {
|
||||||
|
|
||||||
|
|
@ -76,21 +76,23 @@
|
||||||
+const std::string APP_VERSION = "2.3.0";
|
+const std::string APP_VERSION = "2.3.0";
|
||||||
#if defined ARCH_WIN
|
#if defined ARCH_WIN
|
||||||
const std::string APP_OS = "win";
|
const std::string APP_OS = "win";
|
||||||
const std::string APP_OS_NAME = "Windows";
|
- const std::string APP_OS_NAME = "Windows";
|
||||||
@@ -29,15 +73,10 @@
|
#elif defined ARCH_MAC
|
||||||
|
const std::string APP_OS = "mac";
|
||||||
|
- const std::string APP_OS_NAME = "macOS";
|
||||||
#elif defined ARCH_LIN
|
#elif defined ARCH_LIN
|
||||||
const std::string APP_OS = "lin";
|
const std::string APP_OS = "lin";
|
||||||
const std::string APP_OS_NAME = "Linux";
|
- const std::string APP_OS_NAME = "Linux";
|
||||||
+#else
|
-#endif
|
||||||
+ #error ARCH_LIN undefined
|
|
||||||
#endif
|
|
||||||
-#if defined ARCH_X64
|
-#if defined ARCH_X64
|
||||||
- const std::string APP_CPU = "x64";
|
- const std::string APP_CPU = "x64";
|
||||||
- const std::string APP_CPU_NAME = "x64";
|
- const std::string APP_CPU_NAME = "x64";
|
||||||
-#elif defined ARCH_ARM64
|
-#elif defined ARCH_ARM64
|
||||||
- const std::string APP_CPU = "arm64";
|
- const std::string APP_CPU = "arm64";
|
||||||
- const std::string APP_CPU_NAME = "ARM64";
|
- const std::string APP_CPU_NAME = "ARM64";
|
||||||
-#endif
|
+#else
|
||||||
|
+ #error ARCH_LIN undefined
|
||||||
|
#endif
|
||||||
-const std::string API_URL = "https://api.vcvrack.com";
|
-const std::string API_URL = "https://api.vcvrack.com";
|
||||||
+const std::string API_URL = "";
|
+const std::string API_URL = "";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/context.cpp 2023-05-20 17:03:33.006081772 +0200
|
--- ../Rack/src/context.cpp 2023-06-11 21:02:02.640002965 +0200
|
||||||
+++ context.cpp 2023-05-20 18:08:56.497736615 +0200
|
+++ context.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,14 +1,44 @@
|
@@ -1,14 +1,44 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/dsp/minblep.cpp 2022-09-21 20:49:12.200540736 +0200
|
--- ../Rack/src/dsp/minblep.cpp 2023-06-11 21:02:02.644002965 +0200
|
||||||
+++ minblep.cpp 2023-05-20 18:21:44.019059009 +0200
|
+++ minblep.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,3 +1,30 @@
|
@@ -1,3 +1,30 @@
|
||||||
+/*
|
+/*
|
||||||
+ * DISTRHO Cardinal Plugin
|
+ * DISTRHO Cardinal Plugin
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../Rack/src/plugin.cpp 2023-05-20 17:03:33.006081772 +0200
|
--- ../Rack/src/plugin.cpp 2023-06-11 21:02:02.644002965 +0200
|
||||||
+++ plugin.cpp 2023-05-20 18:43:27.496323540 +0200
|
+++ plugin.cpp 2023-06-11 20:56:09.476002797 +0200
|
||||||
@@ -1,356 +1,46 @@
|
@@ -1,356 +1,46 @@
|
||||||
-#include <thread>
|
-#include <thread>
|
||||||
-#include <map>
|
-#include <map>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue