kopia lustrzana https://github.com/backface/turtlestitch
				
				
				
			Check project for compatibility
notify users of potential incompatibilities when opening projects created in other forks (e.g. BeetleBlocks)pull/3/merge
							rodzic
							
								
									947906aab9
								
							
						
					
					
						commit
						50e84f8890
					
				
							
								
								
									
										43
									
								
								gui.js
								
								
								
								
							
							
						
						
									
										43
									
								
								gui.js
								
								
								
								
							|  | @ -9,7 +9,7 @@ | |||
|     written by Jens Mönig | ||||
|     jens@moenig.org | ||||
| 
 | ||||
|     Copyright (C) 2014 by Jens Mönig | ||||
|     Copyright (C) 2015 by Jens Mönig | ||||
| 
 | ||||
|     This file is part of Snap!. | ||||
| 
 | ||||
|  | @ -69,7 +69,7 @@ SpeechBubbleMorph*/ | |||
| 
 | ||||
| // Global stuff ////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| modules.gui = '2014-December-04'; | ||||
| modules.gui = '2015-January-12'; | ||||
| 
 | ||||
| // Declarations
 | ||||
| 
 | ||||
|  | @ -300,7 +300,6 @@ IDE_Morph.prototype.openIn = function (world) { | |||
|         this.inform('Snap!', motd); | ||||
|     } | ||||
|     */ | ||||
| 
 | ||||
|     function interpretUrlAnchors() { | ||||
|         var dict; | ||||
|         if (location.hash.substr(0, 6) === '#open:') { | ||||
|  | @ -2509,7 +2508,7 @@ IDE_Morph.prototype.aboutSnap = function () { | |||
|         world = this.world(); | ||||
| 
 | ||||
|     aboutTxt = 'Snap! 4.0\nBuild Your Own Blocks\n\n--- beta ---\n\n' | ||||
|         + 'Copyright \u24B8 2014 Jens M\u00F6nig and ' | ||||
|         + 'Copyright \u24B8 2015 Jens M\u00F6nig and ' | ||||
|         + 'Brian Harvey\n' | ||||
|         + 'jens@moenig.org, bh@cs.berkeley.edu\n\n' | ||||
| 
 | ||||
|  | @ -2943,12 +2942,18 @@ IDE_Morph.prototype.rawOpenProjectString = function (str) { | |||
|     StageMorph.prototype.enableCodeMapping = false; | ||||
|     if (Process.prototype.isCatchingErrors) { | ||||
|         try { | ||||
|             this.serializer.openProject(this.serializer.load(str), this); | ||||
|             this.serializer.openProject( | ||||
|                 this.serializer.load(str, this), | ||||
|                 this | ||||
|             ); | ||||
|         } catch (err) { | ||||
|             this.showMessage('Load failed: ' + err); | ||||
|         } | ||||
|     } else { | ||||
|         this.serializer.openProject(this.serializer.load(str), this); | ||||
|         this.serializer.openProject( | ||||
|             this.serializer.load(str, this), | ||||
|             this | ||||
|         ); | ||||
|     } | ||||
|     this.stopFastTracking(); | ||||
| }; | ||||
|  | @ -2980,7 +2985,10 @@ IDE_Morph.prototype.rawOpenCloudDataString = function (str) { | |||
|             model = this.serializer.parse(str); | ||||
|             this.serializer.loadMediaModel(model.childNamed('media')); | ||||
|             this.serializer.openProject( | ||||
|                 this.serializer.loadProjectModel(model.childNamed('project')), | ||||
|                 this.serializer.loadProjectModel( | ||||
|                     model.childNamed('project'), | ||||
|                     this | ||||
|                 ), | ||||
|                 this | ||||
|             ); | ||||
|         } catch (err) { | ||||
|  | @ -2990,7 +2998,10 @@ IDE_Morph.prototype.rawOpenCloudDataString = function (str) { | |||
|         model = this.serializer.parse(str); | ||||
|         this.serializer.loadMediaModel(model.childNamed('media')); | ||||
|         this.serializer.openProject( | ||||
|             this.serializer.loadProjectModel(model.childNamed('project')), | ||||
|             this.serializer.loadProjectModel( | ||||
|                 model.childNamed('project'), | ||||
|                 this | ||||
|             ), | ||||
|             this | ||||
|         ); | ||||
|     } | ||||
|  | @ -3974,6 +3985,9 @@ IDE_Morph.prototype.cloudResponse = function () { | |||
| IDE_Morph.prototype.cloudError = function () { | ||||
|     var myself = this; | ||||
| 
 | ||||
|     // try finding an eplanation what's going on
 | ||||
|     // has some issues, commented out for now
 | ||||
|     /* | ||||
|     function getURL(url) { | ||||
|         try { | ||||
|             var request = new XMLHttpRequest(); | ||||
|  | @ -3987,13 +4001,15 @@ IDE_Morph.prototype.cloudError = function () { | |||
|             return null; | ||||
|         } | ||||
|     } | ||||
|     */ | ||||
| 
 | ||||
|     return function (responseText, url) { | ||||
|         // first, try to find out an explanation for the error
 | ||||
|         // and notify the user about it,
 | ||||
|         // if none is found, show an error dialog box
 | ||||
|         var response = responseText, | ||||
|             explanation = getURL('http://snap.berkeley.edu/cloudmsg.txt'); | ||||
|             // explanation = getURL('http://snap.berkeley.edu/cloudmsg.txt'),
 | ||||
|             explanation = null; | ||||
|         if (myself.shield) { | ||||
|             myself.shield.destroy(); | ||||
|             myself.shield = null; | ||||
|  | @ -4044,14 +4060,7 @@ IDE_Morph.prototype.setCloudURL = function () { | |||
|         null, | ||||
|         { | ||||
|             'Snap!Cloud' : | ||||
|                 'https://snapcloud.miosoft.com/miocon/app/' + | ||||
|                     'login?_app=SnapCloud', | ||||
|             'local network lab' : | ||||
|                 '192.168.2.107:8087/miocon/app/login?_app=SnapCloud', | ||||
|             'local network office' : | ||||
|                 '192.168.186.146:8087/miocon/app/login?_app=SnapCloud', | ||||
|             'localhost dev' : | ||||
|                 'localhost/miocon/app/login?_app=SnapCloud' | ||||
|                 'https://snap.apps.miosoft.com/SnapCloud' | ||||
|         } | ||||
|     ); | ||||
| }; | ||||
|  |  | |||
							
								
								
									
										29
									
								
								store.js
								
								
								
								
							
							
						
						
									
										29
									
								
								store.js
								
								
								
								
							|  | @ -7,7 +7,7 @@ | |||
|     written by Jens Mönig | ||||
|     jens@moenig.org | ||||
| 
 | ||||
|     Copyright (C) 2014 by Jens Mönig | ||||
|     Copyright (C) 2015 by Jens Mönig | ||||
| 
 | ||||
|     This file is part of Snap!. | ||||
| 
 | ||||
|  | @ -61,7 +61,7 @@ SyntaxElementMorph, Variable*/ | |||
| 
 | ||||
| // Global stuff ////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| modules.store = '2014-December-17'; | ||||
| modules.store = '2015-January-12'; | ||||
| 
 | ||||
| 
 | ||||
| // XML_Serializer ///////////////////////////////////////////////////////
 | ||||
|  | @ -306,16 +306,33 @@ XML_Serializer.prototype.mediaXML = function (name) { | |||
|     return xml + '</media>'; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| // SnapSerializer loading:
 | ||||
| 
 | ||||
| SnapSerializer.prototype.load = function (xmlString) { | ||||
| SnapSerializer.prototype.load = function (xmlString, ide) { | ||||
|     // public - answer a new Project represented by the given XML String
 | ||||
|     return this.loadProjectModel(this.parse(xmlString)); | ||||
|     return this.loadProjectModel(this.parse(xmlString), ide); | ||||
| }; | ||||
| 
 | ||||
| SnapSerializer.prototype.loadProjectModel = function (xmlNode) { | ||||
| SnapSerializer.prototype.loadProjectModel = function (xmlNode, ide) { | ||||
|     // public - answer a new Project represented by the given XML top node
 | ||||
|     // show a warning if the origin apps differ
 | ||||
| 
 | ||||
|     var appInfo = xmlNode.attributes.app, | ||||
|         app = appInfo ? appInfo.split(' ')[0] : null; | ||||
| 
 | ||||
|     if (ide && app !== this.app.split(' ')[0]) { | ||||
|         ide.inform( | ||||
|             app + ' Project', | ||||
|             'This project has been created by a different app:\n\n' + | ||||
|                 app + | ||||
|                 '\n\nand may be incompatible or fail to load here.' | ||||
|         ); | ||||
|     } | ||||
|     return this.rawLoadProjectModel(xmlNode); | ||||
| }; | ||||
| 
 | ||||
| SnapSerializer.prototype.rawLoadProjectModel = function (xmlNode) { | ||||
|     // private
 | ||||
|     var myself = this, | ||||
|         project = {sprites: {}}, | ||||
|         model, | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 jmoenig
						jmoenig