| 2455 | } |
| 2456 | |
| 2457 | bool ModularSynth::LoadLayoutFromFile(std::string jsonFile, bool makeDefaultLayout /*= true*/) |
| 2458 | { |
| 2459 | ofLog() << "Loading layout: " << jsonFile; |
| 2460 | mLoadedLayoutPath = String(jsonFile).replace(ofToDataPath("").c_str(), "").toStdString(); |
| 2461 | |
| 2462 | ofxJSONElement root; |
| 2463 | bool loaded = root.open(jsonFile); |
| 2464 | |
| 2465 | if (!loaded) |
| 2466 | { |
| 2467 | LogEvent("Couldn't load, error parsing " + jsonFile, kLogEventType_Error); |
| 2468 | LogEvent("Try loading it up in a json validator", kLogEventType_Error); |
| 2469 | return false; |
| 2470 | } |
| 2471 | |
| 2472 | LoadLayout(root); |
| 2473 | |
| 2474 | if (juce::String(jsonFile).endsWith("blank.json")) |
| 2475 | { |
| 2476 | IDrawableModule* gain = FindModule("gain"); |
| 2477 | IDrawableModule* splitter = FindModule("splitter"); |
| 2478 | IDrawableModule* output1 = FindModule("output 1"); |
| 2479 | IDrawableModule* output2 = FindModule("output 2"); |
| 2480 | if (output1 != nullptr && output1->GetPosition().y > ofGetHeight() / gDrawScale - 40) |
| 2481 | { |
| 2482 | float offset = ofGetHeight() / gDrawScale - output1->GetPosition().y - 40; |
| 2483 | if (gain != nullptr) |
| 2484 | gain->SetPosition(gain->GetPosition().x, gain->GetPosition().y + offset); |
| 2485 | if (splitter != nullptr) |
| 2486 | splitter->SetPosition(splitter->GetPosition().x, splitter->GetPosition().y + offset); |
| 2487 | if (output1 != nullptr) |
| 2488 | output1->SetPosition(output1->GetPosition().x, output1->GetPosition().y + offset); |
| 2489 | if (output2 != nullptr) |
| 2490 | output2->SetPosition(output2->GetPosition().x, output2->GetPosition().y + offset); |
| 2491 | } |
| 2492 | |
| 2493 | if (output2 != nullptr && output2->GetPosition().x > ofGetWidth() / gDrawScale - 100) |
| 2494 | { |
| 2495 | float offset = ofGetWidth() / gDrawScale - output2->GetPosition().x - 100; |
| 2496 | if (gain != nullptr) |
| 2497 | gain->SetPosition(gain->GetPosition().x + offset, gain->GetPosition().y); |
| 2498 | if (splitter != nullptr) |
| 2499 | splitter->SetPosition(splitter->GetPosition().x + offset, splitter->GetPosition().y); |
| 2500 | if (output1 != nullptr) |
| 2501 | output1->SetPosition(output1->GetPosition().x + offset, output1->GetPosition().y); |
| 2502 | if (output2 != nullptr) |
| 2503 | output2->SetPosition(output2->GetPosition().x + offset, output2->GetPosition().y); |
| 2504 | } |
| 2505 | } |
| 2506 | |
| 2507 | if (makeDefaultLayout) |
| 2508 | UpdateUserPrefsLayout(); |
| 2509 | |
| 2510 | return true; |
| 2511 | } |
| 2512 | |
| 2513 | bool ModularSynth::LoadLayoutFromString(std::string jsonString) |
| 2514 | { |
no test coverage detected