extended "hide/show var" primitive to also hide/show custom blocks in the palette

snap7
jmoenig 2021-10-04 16:47:19 +02:00
rodzic 264b146be1
commit cc5412a89e
3 zmienionych plików z 29 dodań i 6 usunięć

Wyświetl plik

@ -6,7 +6,7 @@
* extensions
* single blocks palette option, thanks, Michael!
* web-serial support, thanks, Dariusz Dorożalski!
* hide custom helper blocks in palette
* hide custom helper blocks in palette, also use "hide/show var" primitive on custom blocks (same as on primitives)
* user defined custom block palettes
* PWA, thanks, Joan and John, for pioneering this at Robolot and in Mircoblocks!
* new "blocksZoom=n" url parameter, thanks, Bernat!
@ -40,6 +40,7 @@
### 2021-10-04
* blocks: added "enter" key to key-pressed dropdown
* updated German translation for "enter" key
* threads: extended "hide/show var" primitive to also hide/show custom blocks in the palette
* migrated Bangla block specs
* migrated Portuguese block specs

Wyświetl plik

@ -17,7 +17,7 @@
<script src="src/symbols.js?version=2021-03-03"></script>
<script src="src/widgets.js?version=2021-07-21"></script>
<script src="src/blocks.js?version=2021-10-04"></script>
<script src="src/threads.js?version=2021-09-30"></script>
<script src="src/threads.js?version=2021-10-04"></script>
<script src="src/objects.js?version=2021-10-04"></script>
<script src="src/scenes.js?version=2021-07-21"></script>
<script src="src/gui.js?version=2021-09-30"></script>

Wyświetl plik

@ -64,7 +64,7 @@ SnapExtensions, AlignmentMorph, TextMorph, Cloud*/
/*jshint esversion: 6*/
modules.threads = '2021-September-30';
modules.threads = '2021-October-04';
var ThreadManager;
var Process;
@ -1726,7 +1726,11 @@ Process.prototype.doShowVar = function (varName, context) {
if (name.expression.selector === 'reportGetVar') {
name = name.expression.blockSpec;
} else {
this.doChangePrimitiveVisibility(name.expression, false);
if (name.expression.isCustomBlock) {
this.doChangeCustomBlockVisibility(name.expression, false);
} else {
this.doChangePrimitiveVisibility(name.expression, false);
}
return;
}
}
@ -1788,7 +1792,11 @@ Process.prototype.doHideVar = function (varName, context) {
if (name.expression.selector === 'reportGetVar') {
name = name.expression.blockSpec;
} else {
this.doChangePrimitiveVisibility(name.expression, true);
if (name.expression.isCustomBlock) {
this.doChangeCustomBlockVisibility(name.expression, true);
} else {
this.doChangePrimitiveVisibility(name.expression, true);
}
return;
}
}
@ -1852,12 +1860,26 @@ Process.prototype.doChangePrimitiveVisibility = function (aBlock, hideIt) {
reifyPredicate: 'operators',
doDeclareVariables: 'variables'
};
cat = dict[this.selector] || this.category;
cat = dict[aBlock.selector] || aBlock.category;
if (cat === 'lists') {cat = 'variables'; }
ide.flushBlocksCache(cat);
ide.refreshPalette();
};
// Process hiding and showing custom blocks primitives
Process.prototype.doChangeCustomBlockVisibility = function (aBlock, hideIt) {
var ide = this.homeContext.receiver.parentThatIsA(IDE_Morph),
method = aBlock.isGlobal ? aBlock.definition
: this.blockReceiver().getLocalMethod(aBlock.semanticSpec);
if (!ide || !method || (aBlock.selector !== 'evaluateCustomBlock')) {
return;
}
method.isHelper = !!hideIt; // force type to be Boolean
ide.flushBlocksCache(aBlock.category);
ide.refreshPalette();
};
// Process sprite inheritance primitives
Process.prototype.doDeleteAttr = function (attrName) {