diff --git a/include/app/RackWidget.hpp b/include/app/RackWidget.hpp index 2989a6b3..f39df7b3 100644 --- a/include/app/RackWidget.hpp +++ b/include/app/RackWidget.hpp @@ -28,6 +28,7 @@ struct RackWidget : OpaqueWidget { void loadDialog(); void saveDialog(); void saveAsDialog(); + void saveTemplate(); /** If `lastPath` is defined, ask the user to reload it */ void revert(); /** Disconnects all wires */ diff --git a/src/app/RackWidget.cpp b/src/app/RackWidget.cpp index 831a706d..569fe629 100644 --- a/src/app/RackWidget.cpp +++ b/src/app/RackWidget.cpp @@ -145,6 +145,12 @@ void RackWidget::saveAsDialog() { lastPath = pathStr; } +void RackWidget::saveTemplate() { + if (osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, "Overwrite template patch?")) { + save(asset::user("template.vcv")); + } +} + void RackWidget::save(std::string filename) { INFO("Saving patch %s", filename.c_str()); json_t *rootJ = toJson(); diff --git a/src/app/Toolbar.cpp b/src/app/Toolbar.cpp index b890d79f..ab01b531 100644 --- a/src/app/Toolbar.cpp +++ b/src/app/Toolbar.cpp @@ -76,6 +76,16 @@ struct SaveAsItem : MenuItem { }; +struct SaveTemplateItem : MenuItem { + SaveTemplateItem() { + text = "Save template"; + } + void onAction(const event::Action &e) override { + context()->scene->rackWidget->saveTemplate(); + } +}; + + struct RevertItem : MenuItem { RevertItem() { text = "Revert"; @@ -120,6 +130,7 @@ struct FileButton : MenuButton { menu->addChild(new OpenItem); menu->addChild(new SaveItem); menu->addChild(new SaveAsItem); + menu->addChild(new SaveTemplateItem); menu->addChild(new RevertItem); menu->addChild(new DisconnectCablesItem); menu->addChild(new QuitItem); diff --git a/src/app/WireWidget.cpp b/src/app/WireWidget.cpp index c279a87a..8c6014fd 100644 --- a/src/app/WireWidget.cpp +++ b/src/app/WireWidget.cpp @@ -183,7 +183,7 @@ void WireWidget::draw(NVGcontext *vg) { if (wire && wire->outputModule) { Output *output = &wire->outputModule->outputs[wire->outputId]; if (output->numChannels != 1) { - thickness = 8; + thickness = 9; } }