tweaked variable block visibility

snap7
jmoenig 2021-10-08 09:28:47 +02:00
rodzic 9acc2010b4
commit f94360f805
3 zmienionych plików z 23 dodań i 14 usunięć

Wyświetl plik

@ -38,6 +38,9 @@
* German * German
* Chinese, thanks, Simon! * Chinese, thanks, Simon!
### 2021-10-08
* objects: tweaked variable block visibility
### 2021-10-07 ### 2021-10-07
* objects, byob: new BlockVisibilityDialogMorph for bulk-selecting blocks to hide / show in the palette * objects, byob: new BlockVisibilityDialogMorph for bulk-selecting blocks to hide / show in the palette
* ojects: simplified palette context menu * ojects: simplified palette context menu

Wyświetl plik

@ -18,7 +18,7 @@
<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-07"></script> <script src="src/blocks.js?version=2021-10-07"></script>
<script src="src/threads.js?version=2021-10-06"></script> <script src="src/threads.js?version=2021-10-06"></script>
<script src="src/objects.js?version=2021-10-07"></script> <script src="src/objects.js?version=2021-10-08"></script>
<script src="src/scenes.js?version=2021-07-21"></script> <script src="src/scenes.js?version=2021-07-21"></script>
<script src="src/gui.js?version=2021-09-30"></script> <script src="src/gui.js?version=2021-09-30"></script>
<script src="src/paint.js?version=2021-07-05"></script> <script src="src/paint.js?version=2021-07-05"></script>

Wyświetl plik

@ -87,7 +87,7 @@ BlockVisibilityDialogMorph*/
/*jshint esversion: 6*/ /*jshint esversion: 6*/
modules.objects = '2021-October-07'; modules.objects = '2021-October-08';
var SpriteMorph; var SpriteMorph;
var StageMorph; var StageMorph;
@ -2684,7 +2684,7 @@ SpriteMorph.prototype.blockTemplates = function (
} }
blocks.push('-'); blocks.push('-');
varNames = this.reachableGlobalVariableNames(true); varNames = this.reachableGlobalVariableNames(true, all);
if (varNames.length > 0) { if (varNames.length > 0) {
varNames.forEach(name => { varNames.forEach(name => {
blocks.push(variableWatcherToggle(name)); blocks.push(variableWatcherToggle(name));
@ -2693,7 +2693,7 @@ SpriteMorph.prototype.blockTemplates = function (
blocks.push('-'); blocks.push('-');
} }
varNames = this.allLocalVariableNames(true); varNames = this.allLocalVariableNames(true, all);
if (varNames.length > 0) { if (varNames.length > 0) {
varNames.forEach(name => { varNames.forEach(name => {
blocks.push(variableWatcherToggle(name)); blocks.push(variableWatcherToggle(name));
@ -3170,7 +3170,9 @@ SpriteMorph.prototype.isHidingBlock = function (aBlock) {
).isHelper; ).isHelper;
} }
if (aBlock.selector === 'reportGetVar') { if (aBlock.selector === 'reportGetVar') {
return this.variables.find(name).vars[aBlock.blockSpec].isHidden; return this.variables.find(
aBlock.blockSpec
).vars[aBlock.blockSpec].isHidden;
} }
return StageMorph.prototype.hiddenPrimitives[aBlock.selector] === true; return StageMorph.prototype.hiddenPrimitives[aBlock.selector] === true;
}; };
@ -3182,7 +3184,9 @@ SpriteMorph.prototype.changeBlockVisibility = function (aBlock, hideIt, quick) {
: this.getLocalMethod(aBlock.semanticSpec) : this.getLocalMethod(aBlock.semanticSpec)
).isHelper = !!hideIt; ).isHelper = !!hideIt;
} else if (aBlock.selector === 'reportGetVar') { } else if (aBlock.selector === 'reportGetVar') {
this.variables.find(name).vars[name].isHidden = !!hideIt; this.variables.find(
aBlock.blockSpec
).vars[aBlock.blockSpec].isHidden = !!hideIt;
} else { } else {
if (hideIt) { if (hideIt) {
StageMorph.prototype.hiddenPrimitives[aBlock.selector] = true; StageMorph.prototype.hiddenPrimitives[aBlock.selector] = true;
@ -7152,16 +7156,17 @@ SpriteMorph.prototype.hasSpriteVariable = function (varName) {
return contains(this.variables.names(), varName); return contains(this.variables.names(), varName);
}; };
SpriteMorph.prototype.allLocalVariableNames = function (sorted) { SpriteMorph.prototype.allLocalVariableNames = function (sorted, all) {
// "all" includes hidden ones in the palette
var exceptGlobals = this.globalVariables(), var exceptGlobals = this.globalVariables(),
globalNames = exceptGlobals.names(), globalNames = exceptGlobals.names(all),
data; data;
function alphabetically(x, y) { function alphabetically(x, y) {
return x.toLowerCase() < y.toLowerCase() ? -1 : 1; return x.toLowerCase() < y.toLowerCase() ? -1 : 1;
} }
data = this.variables.allNames(exceptGlobals).filter(each => data = this.variables.allNames(exceptGlobals, all).filter(each =>
!contains(globalNames, each) !contains(globalNames, each)
); );
if (sorted) { if (sorted) {
@ -7170,15 +7175,16 @@ SpriteMorph.prototype.allLocalVariableNames = function (sorted) {
return data; return data;
}; };
SpriteMorph.prototype.reachableGlobalVariableNames = function (sorted) { SpriteMorph.prototype.reachableGlobalVariableNames = function (sorted, all) {
var locals = this.allLocalVariableNames(), // "all" includes hidden ones in the palette
var locals = this.allLocalVariableNames(null, all),
data; data;
function alphabetically(x, y) { function alphabetically(x, y) {
return x.toLowerCase() < y.toLowerCase() ? -1 : 1; return x.toLowerCase() < y.toLowerCase() ? -1 : 1;
} }
data = this.globalVariables().names().filter(each => data = this.globalVariables().names(all).filter(each =>
!contains(locals, each) !contains(locals, each)
); );
if (sorted) { if (sorted) {
@ -8907,7 +8913,7 @@ StageMorph.prototype.blockTemplates = function (
} }
blocks.push('-'); blocks.push('-');
varNames = this.reachableGlobalVariableNames(true); varNames = this.reachableGlobalVariableNames(true, all);
if (varNames.length > 0) { if (varNames.length > 0) {
varNames.forEach(name => { varNames.forEach(name => {
blocks.push(variableWatcherToggle(name)); blocks.push(variableWatcherToggle(name));
@ -8916,7 +8922,7 @@ StageMorph.prototype.blockTemplates = function (
blocks.push('-'); blocks.push('-');
} }
varNames = this.allLocalVariableNames(true); varNames = this.allLocalVariableNames(true, all);
if (varNames.length > 0) { if (varNames.length > 0) {
varNames.forEach(name => { varNames.forEach(name => {
blocks.push(variableWatcherToggle(name)); blocks.push(variableWatcherToggle(name));