From 108340ddef9b48ab5dc70a15e56f2a4102adfe30 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Sun, 15 Sep 2019 17:24:41 -0400 Subject: [PATCH] Add SaveScriptItem. --- src/Prototype.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/Prototype.cpp b/src/Prototype.cpp index 50c4860..d6a8b66 100644 --- a/src/Prototype.cpp +++ b/src/Prototype.cpp @@ -301,6 +301,33 @@ struct ReloadScriptItem : MenuItem { }; +struct SaveScriptItem : MenuItem { + Prototype* module; + void onAction(const event::Action& e) override { + if (module->script == "") + return; + + std::string ext = string::filenameExtension(string::filename(module->path)); + std::string dir = asset::plugin(pluginInstance, "examples"); + std::string filename = "Untitled." + ext; + char* pathC = osdialog_file(OSDIALOG_SAVE, dir.c_str(), filename.c_str(), NULL); + if (!pathC) { + return; + } + std::string path = pathC; + std::free(pathC); + // Add extension if user didn't specify one + std::string pathExt = string::filenameExtension(string::filename(path)); + if (pathExt == "") + path += "." + ext; + + std::ofstream f(path); + f << module->script; + module->path = path; + } +}; + + struct PrototypeWidget : ModuleWidget { PrototypeWidget(Prototype* module) { setModule(module); @@ -364,6 +391,10 @@ struct PrototypeWidget : ModuleWidget { ReloadScriptItem* reloadScriptItem = createMenuItem("Reload script"); reloadScriptItem->module = module; menu->addChild(reloadScriptItem); + + SaveScriptItem* saveScriptItem = createMenuItem("Save script as"); + saveScriptItem->module = module; + menu->addChild(saveScriptItem); } };