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() {
return NULL;
}
virtual void dataFromJson(json_t* root) {}
virtual void dataFromJson(json_t* rootJ) {}

///////////////////////
// Events
@@ -433,6 +433,7 @@ struct Module {
INTERNAL int meterLength();
INTERNAL int meterIndex();
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);
}

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

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

json_t* oldModuleJ = toJson();

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

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

DEFER({json_decref(moduleJ);});
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);
DEFER({json_decref(moduleJ);});

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

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

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

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

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

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

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

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

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

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

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

FILE* file = std::fopen(path.c_str(), "w");
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 rack

Loading…
Cancel
Save