summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2014-07-29 12:03:06 +0200
committerjmoenig <jens@moenig.org>2014-07-29 12:03:06 +0200
commitbef0e7a790119f3602683a144b9ddf894cb4d013 (patch)
tree77acfb6753e83ee3546b89cdea05245c372e1519
parentb451a08812fbf1a4ae0481005a62dc1743bbe333 (diff)
downloadsnap-bef0e7a790119f3602683a144b9ddf894cb4d013.tar.gz
snap-bef0e7a790119f3602683a144b9ddf894cb4d013.zip
export and import nested sprites
-rw-r--r--gui.js2
-rwxr-xr-xhistory.txt1
-rw-r--r--store.js21
3 files changed, 22 insertions, 2 deletions
diff --git a/gui.js b/gui.js
index 7e98549..e4c75dd 100644
--- a/gui.js
+++ b/gui.js
@@ -2850,7 +2850,7 @@ IDE_Morph.prototype.exportGlobalBlocks = function () {
};
IDE_Morph.prototype.exportSprite = function (sprite) {
- var str = this.serializer.serialize(sprite);
+ var str = this.serializer.serialize(sprite.allParts());
window.open('data:text/xml,<sprites app="'
+ this.serializer.app
+ '" version="'
diff --git a/history.txt b/history.txt
index 0938517..c64bba8 100755
--- a/history.txt
+++ b/history.txt
@@ -2243,3 +2243,4 @@ ______
------
* fixed #526, thanks, Bernat, for reporting it!
* Objects, GUI: duplicate and clone nested sprites
+* GUI, Store: export and import nested sprites
diff --git a/store.js b/store.js
index 11e2757..f8d46bf 100644
--- a/store.js
+++ b/store.js
@@ -61,7 +61,7 @@ SyntaxElementMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.store = '2014-Jun-04';
+modules.store = '2014-July-29';
// XML_Serializer ///////////////////////////////////////////////////////
@@ -618,6 +618,25 @@ SnapSerializer.prototype.loadSprites = function (xmlString, ide) {
sprite.gotoXY(+model.attributes.x || 0, +model.attributes.y || 0);
myself.loadObject(sprite, model);
});
+
+ // restore nesting associations
+ project.stage.children.forEach(function (sprite) {
+ var anchor;
+ if (sprite.nestingInfo) { // only sprites may have nesting info
+ anchor = project.sprites[sprite.nestingInfo.anchor];
+ if (anchor) {
+ anchor.attachPart(sprite);
+ }
+ sprite.rotatesWithAnchor = (sprite.nestingInfo.synch === 'true');
+ }
+ });
+ project.stage.children.forEach(function (sprite) {
+ if (sprite.nestingInfo) { // only sprites may have nesting info
+ sprite.nestingScale = +(sprite.nestingInfo.scale || sprite.scale);
+ delete sprite.nestingInfo;
+ }
+ });
+
this.objects = {};
this.project = {};
this.mediaDict = {};