diff --git a/include/app.hpp b/include/app.hpp index 8b9d09f4..07b04682 100644 --- a/include/app.hpp +++ b/include/app.hpp @@ -170,6 +170,7 @@ struct RackWidget : OpaqueWidget { /** Disconnects all wires */ void disconnect(); void save(std::string filename); + void setAsDefaultPatch(); void load(std::string filename); json_t *toJson(); void fromJson(json_t *rootJ); diff --git a/src/app/RackScene.cpp b/src/app/RackScene.cpp index d74f09d1..8ba8e746 100644 --- a/src/app/RackScene.cpp +++ b/src/app/RackScene.cpp @@ -95,6 +95,12 @@ void RackScene::onHoverKey(EventHoverKey &e) { e.consumed = true; } } break; + case GLFW_KEY_D: { + if (windowIsModPressed() && windowIsShiftPressed()) { + gRackWidget->setAsDefaultPatch(); + e.consumed = true; + } + } break; case GLFW_KEY_V: { if (windowIsModPressed() && !windowIsShiftPressed()) { gRackWidget->pastePresetClipboard(); diff --git a/src/app/RackWidget.cpp b/src/app/RackWidget.cpp index e7d5c065..06654ad6 100644 --- a/src/app/RackWidget.cpp +++ b/src/app/RackWidget.cpp @@ -139,6 +139,11 @@ void RackWidget::save(std::string filename) { json_decref(rootJ); } +void RackWidget::setAsDefaultPatch() { + info("Saving current patch as default one in 'tempalte.vcv'"); + save(assetLocal("template.vcv")); +} + void RackWidget::load(std::string filename) { info("Loading patch %s", filename.c_str()); FILE *file = fopen(filename.c_str(), "r"); diff --git a/src/app/Toolbar.cpp b/src/app/Toolbar.cpp index decae309..3268bf06 100644 --- a/src/app/Toolbar.cpp +++ b/src/app/Toolbar.cpp @@ -69,6 +69,16 @@ struct SaveAsButton : TooltipIconButton { } }; +struct SetAsDefaultPatchButton : TooltipIconButton { + SetAsDefaultPatchButton() { + setSVG(SVG::load(assetGlobal("res/icons/noun_1343811_cc.svg"))); + tooltipText = "Set patch as default (" WINDOW_MOD_KEY_NAME "+Shift+D)"; + } + void onAction(EventAction &e) override { + gRackWidget->setAsDefaultPatch(); + } +}; + struct RevertButton : TooltipIconButton { RevertButton() { setSVG(SVG::load(assetGlobal("res/icons/noun_1084369_cc.svg"))); @@ -170,6 +180,7 @@ Toolbar::Toolbar() { layout->addChild(new OpenButton()); layout->addChild(new SaveButton()); layout->addChild(new SaveAsButton()); + layout->addChild(new SetAsDefaultPatchButton()); layout->addChild(new RevertButton()); layout->addChild(new DisconnectCablesButton());