summaryrefslogtreecommitdiff
path: root/blocks.js
diff options
context:
space:
mode:
Diffstat (limited to 'blocks.js')
-rw-r--r--blocks.js68
1 files changed, 63 insertions, 5 deletions
diff --git a/blocks.js b/blocks.js
index 96d8b53..f0ddd93 100644
--- a/blocks.js
+++ b/blocks.js
@@ -9,7 +9,7 @@
written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mönig
+ Copyright (C) 2014 by Jens Mönig
This file is part of Snap!.
@@ -155,7 +155,8 @@ DialogBoxMorph, BlockInputFragmentMorph, PrototypeHatBlockMorph, Costume*/
// Global stuff ////////////////////////////////////////////////////////
-modules.blocks = '2013-November-26';
+modules.blocks = '2014-March-31';
+
var SyntaxElementMorph;
var BlockMorph;
@@ -812,6 +813,24 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
true // read-only
);
break;
+ case '%dates':
+ part = new InputSlotMorph(
+ null, // text
+ false, // non-numeric
+ {
+ 'year' : ['year'],
+ 'month' : ['month'],
+ 'date' : ['date'],
+ 'day of week' : ['day of week'],
+ 'hour' : ['hour'],
+ 'minute' : ['minute'],
+ 'second' : ['second'],
+ 'time in milliseconds' : ['time in milliseconds']
+ },
+ true // read-only
+ );
+ part.setContents(['date']);
+ break;
case '%delim':
part = new InputSlotMorph(
null, // text
@@ -996,7 +1015,6 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
'attributesMenu',
true
);
- part.isStatic = true;
break;
case '%fun':
part = new InputSlotMorph(
@@ -1038,6 +1056,33 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
);
part.setContents(['encode URI']);
break;
+ case '%stopChoices':
+ part = new InputSlotMorph(
+ null,
+ false,
+ {
+ 'all' : ['all'],
+ 'this script' : ['this script'],
+ 'this block' : ['this block']
+ },
+ true
+ );
+ part.setContents(['all']);
+ part.isStatic = true;
+ 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,
@@ -1166,7 +1211,6 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
);
break;
-
// symbols:
case '%turtle':
@@ -1591,6 +1635,12 @@ SyntaxElementMorph.prototype.showBubble = function (value) {
morphToShow.silentSetWidth(img.width);
morphToShow.silentSetHeight(img.height);
morphToShow.image = img;
+ } else if (value instanceof Costume) {
+ img = value.thumbnail(new Point(40, 40));
+ morphToShow = new Morph();
+ morphToShow.silentSetWidth(img.width);
+ morphToShow.silentSetHeight(img.height);
+ morphToShow.image = img;
} else if (value instanceof Context) {
img = value.image();
morphToShow = new Morph();
@@ -3267,6 +3317,7 @@ CommandBlockMorph.prototype.snap = function () {
CommandBlockMorph.prototype.isStop = function () {
return ([
+ 'doStopThis',
'doStop',
'doStopBlock',
'doStopAll',
@@ -6147,7 +6198,7 @@ CSlotMorph.prototype.drawBottomEdge = function (context) {
I am an editable text input slot. I can be either rectangular or
rounded, and can have an optional drop-down menu. If I'm set to
read-only I must have a drop-down menu and will assume a darker
- shade of my parent's color.
+ shade of my parent's color.
my most important public attributes and accessors are:
@@ -6302,6 +6353,8 @@ InputSlotMorph.prototype.dropDownMenu = function () {
if (Object.prototype.hasOwnProperty.call(choices, key)) {
if (key[0] === '~') {
menu.addLine();
+ // } else if (key.indexOf('§_def') === 0) {
+ // menu.addItem(choices[key].blockInstance(), choices[key]);
} else {
menu.addItem(key, choices[key]);
}
@@ -6518,6 +6571,11 @@ InputSlotMorph.prototype.attributesMenu = function () {
dict[name] = name;
});
}
+ /*
+ obj.customBlocks.forEach(function (def, i) {
+ dict['§_def' + i] = def
+ });
+ */
return dict;
};