summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2014-01-08 17:51:34 +0100
committerjmoenig <jens@moenig.org>2014-01-08 17:51:34 +0100
commit1e959b8891df838b18c3bae40ba941c5f74df5cb (patch)
tree486a78a5e9d49f6572fbf6babba04f88560eb6bd
parent1da3ae32aaf3eb45564c04d6e0a2d0067829fe7c (diff)
downloadsnap-1e959b8891df838b18c3bae40ba941c5f74df5cb.tar.gz
snap-1e959b8891df838b18c3bae40ba941c5f74df5cb.zip
fixed StopOthers blocks and added another option
also updated the German translation
-rw-r--r--blocks.js13
-rw-r--r--lang-de.js8
-rw-r--r--locale.js4
-rw-r--r--objects.js3
-rw-r--r--threads.js44
5 files changed, 50 insertions, 22 deletions
diff --git a/blocks.js b/blocks.js
index 8b6bcc2..1ad2239 100644
--- a/blocks.js
+++ b/blocks.js
@@ -1037,6 +1037,19 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
);
part.setContents(['encode URI']);
break;
+ case '%stopOthersChoices':
+ part = new InputSlotMorph(
+ null,
+ false,
+ {
+ 'all but this script' : ['all but this script'],
+ 'other scripts in sprite' : ['other scripts in sprite']
+ },
+ true
+ );
+ part.setContents(['all but this script']);
+ part.isStatic = true;
+ break;
case '%typ':
part = new InputSlotMorph(
null,
diff --git a/lang-de.js b/lang-de.js
index dec6092..1ed3f4f 100644
--- a/lang-de.js
+++ b/lang-de.js
@@ -185,7 +185,7 @@ SnapTranslator.dict.de = {
'translator_e-mail':
'jens@moenig.org', // optional
'last_changed':
- '2013-10-04', // this, too, will appear in the Translators tab
+ '2018-01-08', // this, too, will appear in the Translators tab
// GUI
// control bar:
@@ -453,6 +453,12 @@ SnapTranslator.dict.de = {
'stoppe dieses Skript',
'stop all %stop':
'stoppe alles %stop',
+ 'stop %stopOthersChoices':
+ 'stoppe %stopOthersChoices',
+ 'all but this script':
+ 'alles au\u00dfer diesem Skript',
+ 'other scripts in sprite':
+ 'andere Skripte in diesem Objekt',
'pause all %pause':
'pausiere alles %pause',
'run %cmdRing %inputs':
diff --git a/locale.js b/locale.js
index f894050..fd12371 100644
--- a/locale.js
+++ b/locale.js
@@ -42,7 +42,7 @@
/*global modules, contains*/
-modules.locale = '2013-December-04';
+modules.locale = '2014-January-08';
// Global stuff
@@ -149,7 +149,7 @@ SnapTranslator.dict.de = {
'translator_e-mail':
'jens@moenig.org',
'last_changed':
- '2013-10-04'
+ '2014-01-08'
};
SnapTranslator.dict.it = {
diff --git a/objects.js b/objects.js
index fa9be12..9f892d4 100644
--- a/objects.js
+++ b/objects.js
@@ -594,7 +594,7 @@ SpriteMorph.prototype.initBlocks = function () {
doStopOthers: {
type: 'command',
category: 'control',
- spec: 'stop other scripts in sprite'
+ spec: 'stop %stopOthersChoices'
},
doRun: {
type: 'command',
@@ -4361,6 +4361,7 @@ StageMorph.prototype.blockTemplates = function (category) {
blocks.push(block('doStopBlock'));
blocks.push(block('doStop'));
blocks.push(block('doStopAll'));
+ blocks.push(block('doStopOthers'));
blocks.push('-');
blocks.push(block('doRun'));
blocks.push(block('fork'));
diff --git a/threads.js b/threads.js
index 7d7b50a..8c3eb25 100644
--- a/threads.js
+++ b/threads.js
@@ -151,26 +151,19 @@ ThreadManager.prototype.startProcess = function (block, isThreadSafe) {
return newProc;
};
-ThreadManager.prototype.stopAll = function () {
+ThreadManager.prototype.stopAll = function (excpt) {
+ // excpt is optional
this.processes.forEach(function (proc) {
- proc.stop();
- });
-};
-
-ThreadManager.prototype.stopAllForReceiver = function (rcvr) {
- this.processes.forEach(function (proc) {
- if (proc.homeContext.receiver === rcvr) {
+ if (proc !== excpt) {
proc.stop();
- if (rcvr.isClone) {
- proc.isDead = true;
- }
}
});
};
-ThreadManager.prototype.stopAllForReceiverExcept = function (rcvr, excpt) {
+ThreadManager.prototype.stopAllForReceiver = function (rcvr, excpt) {
+ // excpt is optional
this.processes.forEach(function (proc) {
- if (proc.homeContext.receiver === rcvr && proc != excpt) {
+ if (proc.homeContext.receiver === rcvr && proc !== excpt) {
proc.stop();
if (rcvr.isClone) {
proc.isDead = true;
@@ -1379,12 +1372,25 @@ Process.prototype.doStopAll = function () {
}
};
-Process.prototype.doStopOthers = function () {
- var stage, ide;
+Process.prototype.doStopOthers = function (choice) {
+ var stage;
if (this.homeContext.receiver) {
stage = this.homeContext.receiver.parentThatIsA(StageMorph);
if (stage) {
- stage.threads.stopAllForReceiverExcept(this.homeContext.receiver, this);
+
+ switch (this.inputOption(choice)) {
+ case 'all but this script':
+ stage.threads.stopAll(this);
+ break;
+ case 'other scripts in sprite':
+ stage.threads.stopAllForReceiver(
+ this.homeContext.receiver,
+ this
+ );
+ break;
+ default:
+ nop();
+ }
}
}
};
@@ -1751,8 +1757,10 @@ Process.prototype.reportURL = function (url) {
if (!this.httpRequest) {
this.httpRequest = new XMLHttpRequest();
this.httpRequest.open("GET", 'http://' + url, true);
- this.httpRequest.setRequestHeader("X-Requested-With",
- "XMLHttpRequest");
+ this.httpRequest.setRequestHeader(
+ "X-Requested-With",
+ "XMLHttpRequest"
+ );
this.httpRequest.setRequestHeader("X-Application", "Snap! 4.0");
this.httpRequest.send(null);
} else if (this.httpRequest.readyState === 4) {