migrated "object" type for ArgMorph

pull/95/head
jmoenig 2020-02-17 11:33:50 +01:00
rodzic bb919bfc86
commit e958ca37fa
2 zmienionych plików z 52 dodań i 11 usunięć

Wyświetl plik

@ -6,6 +6,7 @@
<link rel="shortcut icon" href="src/favicon.ico"> <link rel="shortcut icon" href="src/favicon.ico">
<script type="text/javascript" src="src/morphic.js?version=2020-02-10"></script> <script type="text/javascript" src="src/morphic.js?version=2020-02-10"></script>
<script type="text/javascript" src="src/widgets.js?version=2020-01-03"></script> <script type="text/javascript" src="src/widgets.js?version=2020-01-03"></script>
<script type="text/javascript" src="src/symbols.js?version=2020-02-10"></script>
<script type="text/javascript" src="src/blocks.js?version=2020-02-11"></script> <script type="text/javascript" src="src/blocks.js?version=2020-02-11"></script>
<!-- <!--
<script type="text/javascript" src="src/threads.js?version=2019-12-19"></script> <script type="text/javascript" src="src/threads.js?version=2019-12-19"></script>
@ -15,9 +16,6 @@
<script type="text/javascript" src="src/lists.js?version=2019-12-08"></script> <script type="text/javascript" src="src/lists.js?version=2019-12-08"></script>
<script type="text/javascript" src="src/byob.js?version=2020-01-03"></script> <script type="text/javascript" src="src/byob.js?version=2020-01-03"></script>
<script type="text/javascript" src="src/tables.js?version=2020-01-03"></script> <script type="text/javascript" src="src/tables.js?version=2020-01-03"></script>
//-->
<script type="text/javascript" src="src/symbols.js?version=2020-02-10"></script>
<!--
<script type="text/javascript" src="src/sketch.js?version=2019-10-09"></script> <script type="text/javascript" src="src/sketch.js?version=2019-10-09"></script>
<script type="text/javascript" src="src/video.js?version=2019-06-27"></script> <script type="text/javascript" src="src/video.js?version=2019-06-27"></script>
<script type="text/javascript" src="src/maps.js?version=2019-10-28"></script> <script type="text/javascript" src="src/maps.js?version=2019-10-28"></script>

Wyświetl plik

@ -1667,7 +1667,7 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
part.shadowColor = this.color.darker(this.labelContrast); part.shadowColor = this.color.darker(this.labelContrast);
part.shadowOffset = MorphicPreferences.isFlat ? part.shadowOffset = MorphicPreferences.isFlat ?
new Point() : this.embossing; new Point() : this.embossing;
part.drawNew(); part.fixLayout();
break; break;
case '%turtleOutline': case '%turtleOutline':
part = new SymbolMorph('turtleOutline'); part = new SymbolMorph('turtleOutline');
@ -7391,13 +7391,13 @@ function ArgMorph(type) {
this.init(type); this.init(type);
} }
ArgMorph.prototype.init = function (type, silently) { ArgMorph.prototype.init = function (type) {
this.type = type || null; this.type = type || null;
this.icon = null;
this.isHole = false; this.isHole = false;
ArgMorph.uber.init.call(this, silently); ArgMorph.uber.init.call(this);
this.color = new Color(0, 17, 173); this.color = new Color(0, 17, 173);
this.rerender(); // +++ ?? this.createIcon();
// this.setExtent(new Point(50, 50), silently); // +++ ???
}; };
// ArgMorph preferences settings: // ArgMorph preferences settings:
@ -7451,6 +7451,42 @@ ArgMorph.prototype.getSpec = function () {
// ArgMorph drawing // ArgMorph drawing
ArgMorph.prototype.createIcon = function () {
switch (this.type) {
case 'list':
break;
case 'object':
this.icon = this.labelPart('%turtle')
this.add(this.icon);
break;
default:
nop(); // no icon
}
};
ArgMorph.prototype.fixLayout = function () {
if (this.icon) {
this.icon.setPosition(this.position());
this.bounds.setExtent(this.icon.extent());
} else {
ArgMorph.uber.fixLayout.call(this);
}
}
ArgMorph.prototype.render = function (ctx) {
// make sure my icon's shadow color matches my block's color
var block;
if (this.icon) {
block = this.parentThatIsA(BlockMorph);
if (block) {
this.icon.shadowColor = block.color.darker(this.labelContrast);
}
} else {
ArgMorph.uber.render.call(this, ctx);
}
};
/* // +++ remove
ArgMorph.prototype.render = function (ctx) { ArgMorph.prototype.render = function (ctx) {
if (this.type === 'list') { if (this.type === 'list') {
this.image = this.listIcon(); // +++ refactor to not use a Canvas or to share a single one this.image = this.listIcon(); // +++ refactor to not use a Canvas or to share a single one
@ -7468,8 +7504,9 @@ ArgMorph.prototype.render = function (ctx) {
ArgMorph.uber.render.call(this, ctx); ArgMorph.uber.render.call(this, ctx);
} }
}; };
*/
ArgMorph.prototype.listIcon = function () { // +++ rafactor to turn into a Symbol? ArgMorph.prototype.listIcon = function () { // +++ refactor to turn into a Symbol?
var frame = new Morph(), var frame = new Morph(),
first = new CellMorph(), first = new CellMorph(),
second = new CellMorph(), second = new CellMorph(),
@ -7502,9 +7539,11 @@ ArgMorph.prototype.listIcon = function () { // +++ rafactor to turn into a Symbo
return icon; return icon;
}; };
/*// +++ remove
ArgMorph.prototype.objectIcon = function () { ArgMorph.prototype.objectIcon = function () {
return this.labelPart('%turtle').image; return this.labelPart('%turtle').image;
}; };
*/
// ArgMorph evaluation // ArgMorph evaluation
@ -13590,7 +13629,7 @@ ScriptFocusMorph.prototype.reactToKeyEvent = function (key) {
// comment out to shave off a millisecond loading speed ;-) // comment out to shave off a millisecond loading speed ;-)
(function () { (function () {
var c, ci, cb, cm, cd; var c, ci, cb, cm, cd, co;
SyntaxElementMorph.prototype.setScale(2.5); SyntaxElementMorph.prototype.setScale(2.5);
c = new CommandBlockMorph(); c = new CommandBlockMorph();
@ -13608,6 +13647,9 @@ ScriptFocusMorph.prototype.reactToKeyEvent = function (key) {
cd = new CommandBlockMorph(); cd = new CommandBlockMorph();
cd.setSpec('direction %dir degrees'); cd.setSpec('direction %dir degrees');
co = new CommandBlockMorph();
co.setSpec('object %obj');
BlockMorph.prototype.addToDemoMenu([ BlockMorph.prototype.addToDemoMenu([
'Syntax', 'Syntax',
[ [
@ -13619,7 +13661,8 @@ ScriptFocusMorph.prototype.reactToKeyEvent = function (key) {
[ci, 'editable input slots'], [ci, 'editable input slots'],
[cb, 'Boolean slot'], [cb, 'Boolean slot'],
[cm, 'menu input'], [cm, 'menu input'],
[cd, 'direction input'] [cd, 'direction input'],
[co, 'object input']
] ]
]); ]);
})(); })();