| 583 | } |
| 584 | |
| 585 | void CtrlrPanelCanvas::restoreState (const ValueTree &savedState) |
| 586 | { |
| 587 | setBounds (VAR2RECT(getProperty(Ids::uiPanelCanvasRectangle))); |
| 588 | |
| 589 | /* first restore any layers used */ |
| 590 | if (savedState.getChildWithName (Ids::uiPanelEditor).isValid()) |
| 591 | { |
| 592 | if (savedState.getChildWithName (Ids::uiPanelEditor).getChildWithName (Ids::uiPanelCanvasLayer).isValid()) |
| 593 | { |
| 594 | /* canvas has it's own layers, delete the default one */ |
| 595 | removeAllLayers(); |
| 596 | } |
| 597 | |
| 598 | for (int i=0; i<savedState.getChildWithName (Ids::uiPanelEditor).getNumChildren(); i++) |
| 599 | { |
| 600 | ValueTree child = savedState.getChildWithName (Ids::uiPanelEditor).getChild(i); |
| 601 | |
| 602 | if (child.hasType(Ids::uiPanelCanvasLayer)) |
| 603 | { |
| 604 | addLayer (child); |
| 605 | } |
| 606 | } |
| 607 | |
| 608 | layers.sort(*this); |
| 609 | layersChanged(); |
| 610 | } |
| 611 | |
| 612 | /* now restore components */ |
| 613 | |
| 614 | for (int i=0; i<savedState.getNumChildren(); i++) |
| 615 | { |
| 616 | ValueTree child = savedState.getChild(i); |
| 617 | |
| 618 | if (child.hasType(Ids::modulator)) |
| 619 | { |
| 620 | CtrlrComponent *c = addNewComponent (child); |
| 621 | if (c == nullptr) |
| 622 | { |
| 623 | _WRN("CtrlrPanelCanvas::restoreState failed to add component: " + child.getProperty(Ids::name).toString()); |
| 624 | } |
| 625 | else |
| 626 | { |
| 627 | if ((bool)c->getProperty(Ids::componentSentBack) == true) |
| 628 | { |
| 629 | c->toBack(); |
| 630 | } |
| 631 | c->setVisible ((bool)c->getProperty(Ids::componentVisibility)); |
| 632 | } |
| 633 | } |
| 634 | } |
| 635 | |
| 636 | canvasStateRestored(); |
| 637 | |
| 638 | getPanel().getUndoManager()->clearUndoHistory(); |
| 639 | } |
| 640 | |
| 641 | void CtrlrPanelCanvas::canvasStateRestored() |
| 642 | { |
no test coverage detected