kopia lustrzana https://github.com/backface/turtlestitch
				
				
				
			Only show the "message" upvar in the "When I receive" hat if "any message" is selected
							rodzic
							
								
									85a7e2fc50
								
							
						
					
					
						commit
						600e6c378b
					
				| 
						 | 
					@ -43,6 +43,9 @@
 | 
				
			||||||
    * German
 | 
					    * German
 | 
				
			||||||
    * Chinese, thanks, Simon!
 | 
					    * Chinese, thanks, Simon!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 2021-10-22
 | 
				
			||||||
 | 
					* blocks, objects: Only show the "message" upvar in the "When I receive" hat if "any message" is selected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 2021-10-21
 | 
					### 2021-10-21
 | 
				
			||||||
* threads, objects: make "when I receive 'any message'" hat scripts threadsafe (uninterruptable by other messages)
 | 
					* threads, objects: make "when I receive 'any message'" hat scripts threadsafe (uninterruptable by other messages)
 | 
				
			||||||
* threads: enabled sending atomic lists to other scenes
 | 
					* threads: enabled sending atomic lists to other scenes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,9 +16,9 @@
 | 
				
			||||||
        <script src="src/morphic.js?version=2021-07-09"></script>
 | 
					        <script src="src/morphic.js?version=2021-07-09"></script>
 | 
				
			||||||
        <script src="src/symbols.js?version=2021-03-03"></script>
 | 
					        <script src="src/symbols.js?version=2021-03-03"></script>
 | 
				
			||||||
        <script src="src/widgets.js?version=2021-07-21"></script>
 | 
					        <script src="src/widgets.js?version=2021-07-21"></script>
 | 
				
			||||||
        <script src="src/blocks.js?version=2021-10-20"></script>
 | 
					        <script src="src/blocks.js?version=2021-10-22"></script>
 | 
				
			||||||
        <script src="src/threads.js?version=2021-10-21"></script>
 | 
					        <script src="src/threads.js?version=2021-10-21"></script>
 | 
				
			||||||
        <script src="src/objects.js?version=2021-10-21"></script>
 | 
					        <script src="src/objects.js?version=2021-10-22"></script>
 | 
				
			||||||
        <script src="src/scenes.js?version=2021-10-12"></script>
 | 
					        <script src="src/scenes.js?version=2021-10-12"></script>
 | 
				
			||||||
        <script src="src/gui.js?version=2021-10-20"></script>
 | 
					        <script src="src/gui.js?version=2021-10-20"></script>
 | 
				
			||||||
        <script src="src/paint.js?version=2021-07-05"></script>
 | 
					        <script src="src/paint.js?version=2021-07-05"></script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -160,7 +160,7 @@ CustomCommandBlockMorph, ToggleButtonMorph, DialMorph, SnapExtensions*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Global stuff ////////////////////////////////////////////////////////
 | 
					// Global stuff ////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
modules.blocks = '2021-October-21';
 | 
					modules.blocks = '2021-October-22';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var SyntaxElementMorph;
 | 
					var SyntaxElementMorph;
 | 
				
			||||||
var BlockMorph;
 | 
					var BlockMorph;
 | 
				
			||||||
| 
						 | 
					@ -311,6 +311,7 @@ SyntaxElementMorph.prototype.labelParts = {
 | 
				
			||||||
        type: 'input'
 | 
					        type: 'input'
 | 
				
			||||||
        tags: 'numeric read-only unevaluated landscape static'
 | 
					        tags: 'numeric read-only unevaluated landscape static'
 | 
				
			||||||
        menu: dictionary or selector
 | 
					        menu: dictionary or selector
 | 
				
			||||||
 | 
					        react: selector
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    '%s': {
 | 
					    '%s': {
 | 
				
			||||||
        type: 'input'
 | 
					        type: 'input'
 | 
				
			||||||
| 
						 | 
					@ -596,7 +597,8 @@ SyntaxElementMorph.prototype.labelParts = {
 | 
				
			||||||
    '%msgHat': {
 | 
					    '%msgHat': {
 | 
				
			||||||
        type: 'input',
 | 
					        type: 'input',
 | 
				
			||||||
        tags: 'read-only static',
 | 
					        tags: 'read-only static',
 | 
				
			||||||
        menu: 'messagesReceivedMenu'
 | 
					        menu: 'messagesReceivedMenu',
 | 
				
			||||||
 | 
					        react: 'updateMessageUpvar'
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    '%msgSend': {
 | 
					    '%msgSend': {
 | 
				
			||||||
        type: 'input',
 | 
					        type: 'input',
 | 
				
			||||||
| 
						 | 
					@ -1610,6 +1612,7 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
 | 
				
			||||||
        switch (info.type) {
 | 
					        switch (info.type) {
 | 
				
			||||||
        case 'input':
 | 
					        case 'input':
 | 
				
			||||||
            part = new InputSlotMorph(null, null, info.menu);
 | 
					            part = new InputSlotMorph(null, null, info.menu);
 | 
				
			||||||
 | 
					            part.onSetContents = info.react || null;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 'text entry':
 | 
					        case 'text entry':
 | 
				
			||||||
            part = new TextSlotMorph();
 | 
					            part = new TextSlotMorph();
 | 
				
			||||||
| 
						 | 
					@ -8928,10 +8931,10 @@ CSlotMorph.prototype.drawBottomEdge = function (ctx) {
 | 
				
			||||||
    my most important public attributes and accessors are:
 | 
					    my most important public attributes and accessors are:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setContents(str/float)    - display the argument (string or float)
 | 
					    setContents(str/float)    - display the argument (string or float)
 | 
				
			||||||
    contents().text            - get the displayed string
 | 
					    contents().text           - get the displayed string
 | 
				
			||||||
    choices                    - a key/value list for my optional drop-down
 | 
					    choices                   - a key/value list for my optional drop-down
 | 
				
			||||||
    isReadOnly                - governs whether I am editable or not
 | 
					    isReadOnly                - governs whether I am editable or not
 | 
				
			||||||
    isNumeric                - governs my outer shape (round or rect)
 | 
					    isNumeric                 - governs my outer shape (round or rect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my block specs are:
 | 
					    my block specs are:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8985,6 +8988,7 @@ InputSlotMorph.prototype.init = function (
 | 
				
			||||||
    this.isReadOnly = isReadOnly || false;
 | 
					    this.isReadOnly = isReadOnly || false;
 | 
				
			||||||
    this.minWidth = 0; // can be chaged for text-type inputs ("landscape")
 | 
					    this.minWidth = 0; // can be chaged for text-type inputs ("landscape")
 | 
				
			||||||
    this.constant = null;
 | 
					    this.constant = null;
 | 
				
			||||||
 | 
					    this.onSetContents = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    InputSlotMorph.uber.init.call(this, null, true);
 | 
					    InputSlotMorph.uber.init.call(this, null, true);
 | 
				
			||||||
    this.color = WHITE;
 | 
					    this.color = WHITE;
 | 
				
			||||||
| 
						 | 
					@ -9069,6 +9073,11 @@ InputSlotMorph.prototype.setContents = function (data) {
 | 
				
			||||||
    if (this.isReadOnly && (this.parent instanceof BlockMorph)) {
 | 
					    if (this.isReadOnly && (this.parent instanceof BlockMorph)) {
 | 
				
			||||||
        this.parent.fixLabelColor();
 | 
					        this.parent.fixLabelColor();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // run onSetContents if any
 | 
				
			||||||
 | 
					    if (this.onSetContents) {
 | 
				
			||||||
 | 
					        this[this.onSetContents](data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
InputSlotMorph.prototype.userSetContents = function (aStringOrFloat) {
 | 
					InputSlotMorph.prototype.userSetContents = function (aStringOrFloat) {
 | 
				
			||||||
| 
						 | 
					@ -10006,6 +10015,31 @@ InputSlotMorph.prototype.userMenu = function () {
 | 
				
			||||||
    return menu;
 | 
					    return menu;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// InputSlotMorph reacting to user choices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					    if selecting an option from a dropdown menu might affect the visibility
 | 
				
			||||||
 | 
					    or contents of another input slot, the methods in this section can
 | 
				
			||||||
 | 
					    offer functionality that can be specified externally by setting
 | 
				
			||||||
 | 
					    the "onSetContents" property to the name of the according method
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					InputSlotMorph.prototype.updateMessageUpvar = function (data) {
 | 
				
			||||||
 | 
					    // assumes a second multi-arg input slot to my right that is
 | 
				
			||||||
 | 
					    // either shown or hidden and collapsed based on whether
 | 
				
			||||||
 | 
					    // "any message" is selected as choice.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var trg = this.parent.inputs()[1];
 | 
				
			||||||
 | 
					    if (data instanceof Array && data[0] === 'any message') {
 | 
				
			||||||
 | 
					        trg.show();
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        trg.removeInput();
 | 
				
			||||||
 | 
					        trg.hide();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.parent.fixLayout();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InputSlotMorph code mapping
 | 
					// InputSlotMorph code mapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,7 +87,7 @@ BlockVisibilityDialogMorph*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*jshint esversion: 6*/
 | 
					/*jshint esversion: 6*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
modules.objects = '2021-October-21';
 | 
					modules.objects = '2021-October-22';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var SpriteMorph;
 | 
					var SpriteMorph;
 | 
				
			||||||
var StageMorph;
 | 
					var StageMorph;
 | 
				
			||||||
| 
						 | 
					@ -744,7 +744,8 @@ SpriteMorph.prototype.initBlocks = function () {
 | 
				
			||||||
        receiveMessage: {
 | 
					        receiveMessage: {
 | 
				
			||||||
            type: 'hat',
 | 
					            type: 'hat',
 | 
				
			||||||
            category: 'control',
 | 
					            category: 'control',
 | 
				
			||||||
            spec: 'when I receive %msgHat %message'
 | 
					            spec: 'when I receive %msgHat %message',
 | 
				
			||||||
 | 
					            defaults: [''] // trigger the "message" expansion to refresh
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        receiveCondition: {
 | 
					        receiveCondition: {
 | 
				
			||||||
            type: 'hat',
 | 
					            type: 'hat',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Ładowanie…
	
		Reference in New Issue