Browse Source

Add Module::jsonStripIds().

tags/v2.0.0
Andrew Belt 3 years ago
parent
commit
f1635cd96b
4 changed files with 18 additions and 22 deletions
  1. +2
    -1
      include/engine/Module.hpp
  2. +5
    -11
      src/app/ModuleWidget.cpp
  3. +3
    -10
      src/app/RackWidget.cpp
  4. +8
    -0
      src/engine/Module.cpp

+ 2
- 1
include/engine/Module.hpp View File

@@ -327,7 +327,7 @@ struct Module {
virtual json_t* dataToJson() { virtual json_t* dataToJson() {
return NULL; return NULL;
} }
virtual void dataFromJson(json_t* root) {}
virtual void dataFromJson(json_t* rootJ) {}


/////////////////////// ///////////////////////
// Events // Events
@@ -433,6 +433,7 @@ struct Module {
INTERNAL int meterLength(); INTERNAL int meterLength();
INTERNAL int meterIndex(); INTERNAL int meterIndex();
INTERNAL void doProcess(const ProcessArgs& args); INTERNAL void doProcess(const ProcessArgs& args);
INTERNAL static void jsonStripIds(json_t* rootJ);
}; };






+ 5
- 11
src/app/ModuleWidget.cpp View File

@@ -459,12 +459,6 @@ void ModuleWidget::onDragHover(const DragHoverEvent& e) {
OpaqueWidget::onDragHover(e); OpaqueWidget::onDragHover(e);
} }


static void cleanupModuleJson(json_t* moduleJ) {
json_object_del(moduleJ, "id");
json_object_del(moduleJ, "leftModuleId");
json_object_del(moduleJ, "rightModuleId");
}

json_t* ModuleWidget::toJson() { json_t* ModuleWidget::toJson() {
json_t* moduleJ = APP->engine->moduleToJson(module); json_t* moduleJ = APP->engine->moduleToJson(module);
return moduleJ; return moduleJ;
@@ -475,7 +469,7 @@ void ModuleWidget::fromJson(json_t* moduleJ) {
} }


void ModuleWidget::pasteJsonAction(json_t* moduleJ) { void ModuleWidget::pasteJsonAction(json_t* moduleJ) {
cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


json_t* oldModuleJ = toJson(); json_t* oldModuleJ = toJson();


@@ -499,7 +493,7 @@ void ModuleWidget::pasteJsonAction(json_t* moduleJ) {


void ModuleWidget::copyClipboard() { void ModuleWidget::copyClipboard() {
json_t* moduleJ = toJson(); json_t* moduleJ = toJson();
cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


DEFER({json_decref(moduleJ);}); DEFER({json_decref(moduleJ);});
char* json = json_dumps(moduleJ, JSON_INDENT(2)); char* json = json_dumps(moduleJ, JSON_INDENT(2));
@@ -539,7 +533,7 @@ void ModuleWidget::load(std::string filename) {
throw Exception("File is not a valid patch file. JSON parsing error at %s %d:%d %s", error.source, error.line, error.column, error.text); throw Exception("File is not a valid patch file. JSON parsing error at %s %d:%d %s", error.source, error.line, error.column, error.text);
DEFER({json_decref(moduleJ);}); DEFER({json_decref(moduleJ);});


cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);
fromJson(moduleJ); fromJson(moduleJ);
} }


@@ -613,7 +607,7 @@ void ModuleWidget::save(std::string filename) {
assert(moduleJ); assert(moduleJ);
DEFER({json_decref(moduleJ);}); DEFER({json_decref(moduleJ);});


cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


FILE* file = std::fopen(filename.c_str(), "w"); FILE* file = std::fopen(filename.c_str(), "w");
if (!file) { if (!file) {
@@ -764,7 +758,7 @@ void ModuleWidget::cloneAction() {


// JSON serialization is the obvious way to do this // JSON serialization is the obvious way to do this
json_t* moduleJ = toJson(); json_t* moduleJ = toJson();
cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


// Clone Module // Clone Module
engine::Module* clonedModule = model->createModule(); engine::Module* clonedModule = model->createModule();


+ 3
- 10
src/app/RackWidget.cpp View File

@@ -387,13 +387,6 @@ void RackWidget::fromJson(json_t* rootJ) {
} }
} }


static void cleanupModuleJson(json_t* moduleJ) {
json_object_del(moduleJ, "id");
json_object_del(moduleJ, "leftModuleId");
json_object_del(moduleJ, "rightModuleId");
}


struct PasteJsonReturn { struct PasteJsonReturn {
std::map<int64_t, int64_t> newModuleIds; std::map<int64_t, int64_t> newModuleIds;
}; };
@@ -415,7 +408,7 @@ static PasteJsonReturn RackWidget_pasteJson(RackWidget* that, json_t* rootJ, his
continue; continue;
int64_t id = json_integer_value(idJ); int64_t id = json_integer_value(idJ);


cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


ModuleWidget* mw; ModuleWidget* mw;
try { try {
@@ -524,7 +517,7 @@ void RackWidget::pasteJsonAction(json_t* rootJ) {
} }


void RackWidget::pasteModuleJsonAction(json_t* moduleJ) { void RackWidget::pasteModuleJsonAction(json_t* moduleJ) {
cleanupModuleJson(moduleJ);
engine::Module::jsonStripIds(moduleJ);


ModuleWidget* mw; ModuleWidget* mw;
try { try {
@@ -929,7 +922,7 @@ void RackWidget::saveSelection(std::string path) {
assert(rootJ); assert(rootJ);
DEFER({json_decref(rootJ);}); DEFER({json_decref(rootJ);});


cleanupModuleJson(rootJ);
engine::Module::jsonStripIds(rootJ);


FILE* file = std::fopen(path.c_str(), "w"); FILE* file = std::fopen(path.c_str(), "w");
if (!file) { if (!file) {


+ 8
- 0
src/engine/Module.cpp View File

@@ -384,5 +384,13 @@ void Module::doProcess(const ProcessArgs& args) {
} }




void Module::jsonStripIds(json_t* rootJ) {
json_object_del(rootJ, "id");
json_object_del(rootJ, "leftModuleId");
json_object_del(rootJ, "rightModuleId");
}



} // namespace engine } // namespace engine
} // namespace rack } // namespace rack

Loading…
Cancel
Save