app/assets/htmls/gs-element-blockly.html in gobstones-blockly-0.18.1 vs app/assets/htmls/gs-element-blockly.html in gobstones-blockly-0.19.0
- old
+ new
@@ -4033,19 +4033,22 @@
};
}
</script>
<script>initProcedsBlockly("Statement");</script>
- <script>var PLUS = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfhDAUCCjFLV0NqAAAC60lEQVR42u3dQW7aQABA0Wl7MMjJICeDnIwuqm4qVQrYjMH/Pa/jsfFnTJDwjAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBUP7Y+gClOY4zznX9zHmN8bn3gLHcYtwXbYevDZ5nLost/G7dx2foUeNzyyy+BN7Zs8ncjeHvrvP/NAW9qvff/rueAn1sfwNMcX3hvL2S/3wPcVt7fTl+p/c4AfIsA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4mYHcBinVRdz+v+2tjlHfdrv8lRjHFZcyG3P22VmBPOWQrrsd+WtJ7iOjzkDzQrA5b/XpATmBHAY1ynj7MtxfD1/kDkBrP+RrGHC1ZnxX8Bpwhj7NOGV8z1A3IxbgBvA455+fcwAcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcT9mjLKcevTfFPn5/860AwQ58ehr2wnPw51C3jMccYgcwL48nyAu11nPB3AI2Je1bRHxMz7EPgxjuaBb7mO46zLP3MG+OMwjuM8ecx3cp419f81O4B51v7PY6evlO8B4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQN2fp2G0cV9zXhEVct7HfGeD6wntjisu4rbRdtj4VHnFYLYDD1qfCY9aZA7z/39jyBFz+N7fsRrD7yX+n62H+4zTG3QvWnscYn1sfOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALvzG8Ijm7EmMQYoAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDAyOjEwOjQ5LTA1OjAwJa2zowAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQwMjoxMDo0OS0wNTowMFTwCx8AAAAASUVORK5CYII=";
-var MINUS = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfhDAUCCi+xWH4JAAABcUlEQVR42u3c7ZGCMBSG0etuYcTKls7AyrSEVWd4+bjnUECMeSbhD6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBzu4XHm2rUvPekD2yutR57/4itTLXU0/Pvs9SUW5TcDrDUyE3r9Na6ZwZKBWD5PxVKIBPAVGtknGsZibeBTADPyCjXE1idn8A0/gJjXFPgn0sEwIEljgAHwPc2Xx87QHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNDcb2SUsfc0T2re/utAO0BzPg49sot8HOoI+M5IDJIJ4OF+gI+F7gpyRcwxxa6Iyb0E3mvYB96y1kgtv2vijubS18QBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAWXq7xrTQhKAi3AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDAyOjEwOjQ3LTA1OjAwdZLI/gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQwMjoxMDo0Ny0wNTowMATPcEIAAAAASUVORK5CYII=";
-var HAND = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfiBAUBKBeKSgeBAAABTElEQVQoz22QzyvDcRjHX5/vvrMyStI2uZgftdVCSpJCyW1y00oUF+Xg4OIkx5VyUyJOsgv/gnJw4YCSSFMyB5pGbLJ99/k8LltreB2f9+v50eOigoc5FvGTJF8pugCwaKaNaE98uf9zMBXwjtNpbvmuaH2B0+HXuuyMEbOlQ4U1M5ZVcYbowg02YfZW5cnE9JIROdI7jsiOacoMPLZdEYPR1ouQkxCRG+feESlIXkQOzLR+NhvCpc3UbPcHAoRsADcAQ0Twq0ZosQgEVY0SqvGpkAUCxkIUYRP4bZRRNi9pvaD+TwXyFseHuYzy/Kt8CWfQ5Ems6C/5y7uZyDEH0Nt8vq0dUx0XzaapPyIIoIi23+47+SrlTvrTjLhKy2wmO95OqiacS+QBH9gAFDlOZnYbrimWOixSZCwUlK+vZd7bXiPldyi0yqX1OtkfCBS/9XAtDKAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDQtMDVUMDQ6NDQ6NDItMDM6MDD+uUN1AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA0LTA1VDA0OjQwOjIzLTAzOjAw5hdZgAAAAABJRU5ErkJggg==";
-var CLEAN = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYEAYAAACw5+G7AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4gQJFAcFO9SQhwAACW1JREFUWMPFV2lUFFcavVW90U2zNN2yyr7IooiCGYgiiEYH4oKIRo0alxAxZgSXEDHICTpxDDEQYiJBSTQTjQnqQUBNjAuaVsSgxgUEFFFQdmyg966urpoflJ4zyXGMk+37c+t7dc6797771TungD+55E1EGQCIHgAAcSHK2m4L4LR9XLz9ccBvdugoYRgg3htxTrwBANwX/O/9yD9L+DidLBsAhh4WeAIS3tzYEQHizNTCCTERX8szy1NmVMbOdp3+3eXoG2EmaffGOIq11ANWnweZXebB/y80EPOjYiEAnLPu2wSQZ8d8FpJt/coK1Yhxfh85VL9XbTAZi+nx1G6Zh3g38Zm80Pes24DN32bZWH0tOg0M8WN90IbQJ+/P/6OEJ/LcWwCAqOInk7lAfLZoKVMZ0R62wW+T/djVMsgsQkubsbA2/07EQPypN4ba2lvInOAJqhZ9MavtHNY/0+ALaLZKS6xb0QUAeOFPTUDTR3UBQGn63Romg/eq12FnoeTCwjC3GhtHiN1G2O4nMoz9DgkTq4JeFC9da+JnooAx2318a0y7Wffv8qC9CWl17lb9x6g4tgSb/4IEeNf4JXgIjL2jiIDcy9XxnO0esmXKTjpHu11rhTx+M200e/KMzm1SKREpRY2o3da4s2ZP07GeIeb4A7w1w/Y9eCABzs3t2oUJT+b5wxIYkmgzhz8fkE2XFpB9Ua9LsghPy0deoX3f9q00ZAL9o9VDqHHAzcudS8zLNetuhnenmnvzpr2oCMq3ymrVDmRQQ1m/p/P85gQO7cpdBi1A7CeOEU6CKMseC8W+7Hzp/pj2jfRO9ptLi040kDsnJ7Ghhn3mY4Lz6h7mXaYW6D9AL0MySuuSVOmYvO92Y7VKzUSXBT383NBn+ha44a0ahetP5//NCfCv8DIRDljszUpWJ3/FPc5rmHxT8dopi+LdfepOKGZlLrhqXzf9E/lPfimkGjAvFJ1nLwC3FgwMQWlV462yvl7Uv2etKBFvIosNPde9eyvYlGfg/3+FKxbwLvpHADMK1/oRRwUDY619vuAXzeiefSdJT44Y7RkRExZCeysEwyPC5dJZAN4eXWDlAdzl3442KAHhjoY9emPnwahE1tPUTS/mu/LriJewn2Ko90EBa8miNyH8AwwkDo/eBgAdS++/ZZwLJAz4HFWlhmxXRfbdGD0xc0uVvTLWtU6hOx9e2dD3NmCvsytqWw6EhY/K7iWAYWcDWonZQGBOYIrVQKSg8bW6S6bFIXG8c2QgseoBmNNMMe4McrG/Qg/xa4V/MTHrbQBIPrrka99RwMntZWda7CJ7hhq8X3Ad2LbFGGuaIet/Xngl8HKu7gix9UrRZY0oAGjb2mq2UwF0BJUk6AXsChxG9wcD9qXy7A7htiMzE2M9us3rl9Q6NJvJAkvvBs/deibtdxyhHUvTfADALzTQX5oHnJhUuu7ekYgTvmODWj0kn57xqfTbqLAbmUcK2UzNFCA4zf8HYyEQ/XLkyN4i4ErV9YgWFVClv/ilzSXg9rpbS4ZMNmdc/0cTTza1XtlwqsHFsdbS27i9o9FgO8h55xkm4okJFIdkdAKAU4GbkncS0Mm1Jy2TvCcFKIIXuXvuXj5sePA054UxyfyVZLp+LGAq1qfpKwDTeOOPhrWAamb3xzoasKTRfHMh0BetVlpeBmobGz8QKrX37066TVLWs4RkJ+8+Yr93tnqHXEoXAtnBXzmyH/4OCdim2H+KfKAnsvNbyyS7S4FHQ3WO8nce+rwfUOlijLknnCZstFoK9Ff15GmWAehlA42fA/oN2nHUXEB3UF1iLgR4XwqMTATA18CJeQMIJH0ymCypyFynVRMrgw96p/iqRPrvcfHC+TRNHkf+DAZ+cY3uT9jsCwBdQR1HsVp42Nvfv9n2fHqe75sBf/dImdskchVPlPLxWl++aoJ5IUBdNThoNADTxHzJXAO0R9VFTBmAGrQxXgC1zNjE7AKMFbqzjBQgsnAIUXAk43hR5Bqn5xOGrxIGjwPoneYdBO8ZZudRAocO5eYSBMBOZj3YzYDGp1+GLKF10OuhL0o3LP/Qzy3oYkDcmnjiOfIDQbjw9Q5Da2D3FAAVlGHAFZBslWbRAoDezJhEasA8xrKanQMQPSStswL0YQMeTB9Ar6CPs/8ABDNF20kTwFgx49k3SQoA3OYB9A7LLABA+LMZeJyAwwOFTOICOCgdF5FJiWZ3G+9OjxWboiwuzBzobTPuCW93tSYD9HrDczoVwJvIazUdBFBJXOW/AWjGak4K1gOWbMpJVw6Y1hpXMdUAlUIlE3qA5yqQ8aIAdjNiebMAiqZMbLO6F2iR3CwBcsPLS1kW8mdNgCQWYyoIwPSJIYwGQOxAGmG8vqhT/uBUl6+yr1Fw7WpjvU4pNUo2ipIAoozJ1wEQOoslvC3AwyuqTbwJwMN9neoBMcDGMFXUS4DRaFCyWkCwQzxbXAkIO8SuQhqgasxHyLn05V5SFWJJ7RhJEF6GBqNAMShHwF1APO4/jEjidIY8ycDjW4jXPIi0N8tiHfBWzvyV2OYTMOrW8DXWxf86HXA6YL7CK2mVI+V4haX4hyhXuotkgfq42lc00wG5l90XplyATbLY6YsBvZvBnd8NWDzZfeJqwFZpu43yBjrv9/paxTxcsW/0gc39W+cRB22r7dnoGudBdraBU2HgsIdDt0G0xHFyUx/rfvTAFgxiTk5ODqr4+efP1NYAZvP9Ze355vKfGvltrMnUrj5OfMTTCGJd3FvSmwu0GrsDgiP8CSRFxspO2N9jigFKY/Kx1AP9Z9Sk8Bigv6CbypwCZF7ydH4n0CRpbmSn/ETvL/lujilh7wX1D6aPAaqaO89znJqdnCwdh98MArOe63f9IoGfBVM/iFYJHO4izLgNSM48fyy4DoHeZaOUflvxw/iUYEnAcpstcVrHSCetoNq/lLzGEnSI7Ku78Xc6TPfodKd2F75ovnS13OCYI0wkU09/WvlPzasb571/4kCWqbR4EifMgTvhMYNoHuBOvpJDzohFxgmMe4qBx3WYC+rSIPKXc72I66+7PWd3GLDJCC3y+RF7naY5NssqSHunjZYF5gh2CY/vonCs4Du4vcsv56cTUyXlNaduTqP8yypOrrsxEqldb3EGlnECuW/BYs2tf8clcpDTcxy/sR6N3GrO/+L/Tox4h3vfxfVSrs/mUMmtGzm8yq0/GpXkn/E8tf4Dx6D38eIbrrQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDQtMDlUMjA6MDc6MDUtMDc6MDDtLVEkAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA0LTA5VDIwOjA3OjA1LTA3OjAwnHDpmAAAAABJRU5ErkJggg==";
+ <script>/* global Blockly */
-/* global Blockly */
-
Blockly.CUSTOM_COLORS = {"globalHsvSaturation":0.45,"globalHsvValue":0.65,"primitiveCommand":"#1d3c99","assignation":"#051d66","controlStructure":"#0f2b80","literalExpression":"#1d992c","primitiveExpression":"#1d992c","operator":"#0f801c","program":"#8d1bb3","interactiveProgram":"#6e158c","interactiveBinding":"#a11fcc","procedure":"#935ba6","function":"#745380","primitiveProcedure":"#2e4fb3","primitiveFunction":"#2eb33e","procedure_call":"#355bcc","function_call":"#35cc47","variable":"#056610","parameter":"#056610","complete":"#ff0000","H":{"commands":225,"expressions":127,"definitions":285},"S":{"assignation":95,"variable":95,"parameter":95,"primitiveCommand":81,"literalExpression":81,"primitiveExpression":81,"controlStructure":88,"operator":88,"procedure_call":74,"function_call":74,"primitiveProcedure":74,"primitiveFunction":74,"program":85,"interactiveProgram":85,"interactiveBinding":85,"procedure":45,"function":35,"complete":99},"V":{"assignation":40,"variable":40,"parameter":40,"primitiveCommand":60,"literalExpression":60,"primitiveExpression":60,"controlStructure":50,"operator":50,"procedure_call":80,"function_call":80,"primitiveProcedure":70,"primitiveFunction":70,"program":70,"interactiveProgram":55,"interactiveBinding":80,"procedure":65,"function":50,"complete":99}};
+Blockly.AVAILABLE_ICONS = ["bool-false.svg","bool-true.svg","clean.png","color-azul.svg","color-negro.svg","color-rojo.svg","color-verde.svg","direccion-este.svg","direccion-norte.svg","direccion-oeste.svg","direccion-sur.svg","hand.png","minus.png","plus.png"];
+const getOptions = (block) => {
+ const parentWorkspace = block.workspace.options.parentWorkspace;
+ return parentWorkspace && parentWorkspace.options || block.workspace.options
+}
+const getLocalMediaUrl = (block, name) => getOptions(block).localMedia + name;
+const getLocalMediaSize = (name) => Blockly.AVAILABLE_ICONS.includes(name) ? 16 : 0;
+
/**
* Create the svg representation of a block and render
* @name {!string} name of the parameter.
* @this Blockly.Block
*/
@@ -4167,14 +4170,15 @@
},
_addInit() {
this.$init = true;
+ const icon = "minnus.png";
var removeButton = new Blockly.FieldImage(
- MINUS,
- 16,
- 16,
+ getLocalMediaUrl(this, icon),
+ getLocalMediaSize(icon),
+ getLocalMediaSize(icon),
"Eliminar",
function() {
this.$init = false;
this.removeInput("initlabel");
this.removeInput("init");
@@ -4191,14 +4195,15 @@
},
_addTimeout(timeout) {
this.$timeout = timeout;
+ const icon = "minus.png";
var removeButton = new Blockly.FieldImage(
- MINUS,
- 16,
- 16,
+ getLocalMediaUrl(this, icon),
+ getLocalMediaSize(icon),
+ getLocalMediaSize(icon),
"Eliminar",
function() {
this.$timeout = undefined;
this.removeInput("timeoutlabel");
this.removeInput("timeout");
@@ -4274,26 +4279,28 @@
this.appendStatementInput('block').setCheck(["Statement"]);
const self = this;
const input = this.inputList[0];
+ const plusIcon = "plus.png";
+ const cleanIcon = "clean.png";
input.appendField(new Blockly.FieldImage(
- PLUS,
- 16,
- 16,
+ getLocalMediaUrl(this, plusIcon),
+ getLocalMediaSize(plusIcon),
+ getLocalMediaSize(plusIcon),
"Agregar modificador",
function() {
const modifiersCount = getModifierFields(self).length / 2;
if (modifiersCount >= modifiers.length) return;
self._addModifier();
}
));
input.appendField(new Blockly.FieldImage(
- CLEAN,
- 16,
- 16,
+ getLocalMediaUrl(this, cleanIcon),
+ getLocalMediaSize(cleanIcon),
+ getLocalMediaSize(cleanIcon),
"Limpiar modificadores",
function() {
self._cleanModifiers();
}
));
@@ -4423,11 +4430,11 @@
Blockly.Blocks.AlternativaSimple = {
init: function () {
this.jsonInit({
type: "Statement",
previousStatement: "Statement",
- nextStatement: "Statement",
+ nextStatement: "Statement"
});
this.setColour(Blockly.CUSTOM_COLORS.AlternativaSimple || Blockly.CUSTOM_COLORS.controlStructure);
this.appendValueInput('condicion')
.appendField(Blockly.Msg["CONTROLS_IF_MSG_IF"]);
@@ -4550,16 +4557,24 @@
// Comandos:
// ------------------------------------------------------
Blockly.Blocks.Poner = {
init: function () {
+ const icon = "putStone.png";
+
this.jsonInit({
- message0: 'Poner %1',
+ message0: '%1 Poner %2',
type: "Statement",
previousStatement: "Statement",
nextStatement: "Statement",
args0: [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
type: 'input_value',
name: 'COLOR'
}
],
@@ -4570,16 +4585,24 @@
}
};
Blockly.Blocks.Sacar = {
init: function () {
+ const icon = "removeStone.png";
+
this.jsonInit({
type: "Statement",
previousStatement: "Statement",
nextStatement: "Statement",
- message0: 'Sacar %1',
+ message0: '%1 Sacar %2',
args0: [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
type: 'input_value',
name: 'COLOR'
}
],
@@ -4590,16 +4613,24 @@
}
};
Blockly.Blocks.Mover = {
init: function () {
+ const icon = "move.png";
+
this.jsonInit({
type: "Statement",
previousStatement: "Statement",
nextStatement: "Statement",
- message0: 'Mover %1',
+ message0: '%1 Mover %2',
args0: [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
type: 'input_value',
name: 'DIRECCION'
}
],
@@ -4610,16 +4641,24 @@
}
};
Blockly.Blocks.IrAlBorde = {
init: function () {
+ const icon = "goToEdge.png";
+
this.jsonInit({
type: "Statement",
previousStatement: "Statement",
nextStatement: "Statement",
- message0: 'Ir al borde %1',
+ message0: '%1 Ir al borde %2',
args0: [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
type: 'input_value',
name: 'DIRECCION'
}
],
@@ -4630,31 +4669,49 @@
}
};
Blockly.Blocks.VaciarTablero = {
init: function () {
+ const icon = "emptyBoard.png";
+
this.jsonInit({
type: "Statement",
previousStatement: "Statement",
nextStatement: "Statement",
- message0: 'Vaciar tablero',
+ message0: '%1 Vaciar tablero',
+ args0: [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
+ ],
colour: Blockly.CUSTOM_COLORS.VaciarTablero || Blockly.CUSTOM_COLORS.primitiveCommand,
tooltip: 'Vaciar el tablero.',
inputsInline: true
});
}
};
Blockly.Blocks.BOOM = {
init: function () {
+ const icon = "boom.png";
+
this.jsonInit({
"type": "Statement",
"previousStatement": "Statement",
"nextStatement": "Statement",
"lastDummyAlign0": "RIGHT",
- "message0": "Hacer ¡BOOM! porque: %1 %2",
+ "message0": "%1 Hacer ¡BOOM! porque: %2 %3",
"args0": [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
"type": "input_dummy"
},
{
"type": "field_input",
@@ -4723,10 +4780,18 @@
const oldMathNumber = Blockly.Blocks.math_number;
Blockly.Blocks.math_number = deepCopyObj(Blockly.Blocks.math_number);
Blockly.Blocks.math_number.init = function() {
oldMathNumber.init.call(this);
+
+ const icon = "number.png";
+ var iconField = new Blockly.FieldImage(
+ getLocalMediaUrl(this, icon),
+ getLocalMediaSize(icon),
+ getLocalMediaSize(icon)
+ );
+ this.inputList[0].insertFieldAt(0, iconField);
this.setColour(Blockly.CUSTOM_COLORS.math_number || Blockly.CUSTOM_COLORS.literalExpression);
}
Blockly.Blocks.ExpresionCompletar = {
init: function () {
@@ -4745,21 +4810,36 @@
function createLiteralSelectorBlock(type,values){
return {
init: function () {
this.jsonInit({
type: type,
- message0: "%1",
- args0: [{
- type: "field_dropdown",
- name: type + "Dropdown",
- options: values.map(value => [value,value]),
- }],
+ message0: "%1 %2",
+ args0: [
+ {
+ "type": "field_image",
+ "src": "",
+ "width": 16,
+ "height": 16
+ },
+ {
+ type: "field_dropdown",
+ name: type + "Dropdown",
+ options: values.map(value => [value,value])
+ }
+ ],
output: type,
colour: Blockly.CUSTOM_COLORS[`${type}Selector`] || Blockly.CUSTOM_COLORS.literalExpression,
tooltip: "Escoger " + type,
});
- }
+ },
+
+ onchange: function(event) {
+ const [image, dropdown] = this.inputList[0].fieldRow;
+ const value = dropdown.getValue();
+
+ image.setValue(getLocalMediaUrl(this, `${type.toLowerCase()}-${value.toLowerCase()}.svg`));
+ }
};
}
Blockly.Blocks.ColorSelector = createLiteralSelectorBlock('Color',['Rojo','Verde','Negro','Azul']);
Blockly.Blocks.DireccionSelector = createLiteralSelectorBlock('Direccion',['Este','Oeste','Norte','Sur']);
@@ -4879,14 +4959,22 @@
}
};
Blockly.Blocks.Asignacion = {
init: function () {
+ const icon = "assignation.png";
+
this.jsonInit({
"type": "asignacion",
- "message0": "Recordar que %1 %2 vale %3 %4",
+ "message0": "%1 Recordar que %2 %3 vale %4 %5",
"args0": [
+ {
+ "type": "field_image",
+ "src": getLocalMediaUrl(this, icon),
+ "width": getLocalMediaSize(icon),
+ "height": getLocalMediaSize(icon)
+ },
{
"type": "field_input",
"name": "varName",
"text": "una variable",
"class": Blockly.Procedures.rename
@@ -4909,14 +4997,16 @@
"tooltip": "",
"helpUrl": ""
});
var self = this;
+
+ const handIcon = "hand.png";
var createGetterButton = new Blockly.FieldImage(
- HAND,
- 16,
- 16,
+ getLocalMediaUrl(this, handIcon),
+ getLocalMediaSize(handIcon),
+ getLocalMediaSize(handIcon),
"Obtener variable",
function() {
var name = self.getFieldValue('varName');
self.createVariableBlock(name);
}
@@ -5865,10 +5955,18 @@
type: String,
value: "../bower_components/blockly-package/media/"
},
/*
+ * `media` path a media de gs-element-blockly.
+ */
+ localMedia: {
+ type: String,
+ value: "../media/"
+ },
+
+ /*
* `readOnly` Use blockly in readOnly mode.
*/
readOnly: {
type: Boolean,
value: false
@@ -6521,18 +6619,19 @@
},
attached: function() {
this._definePrimitiveProcedures();
this._definePrimitiveFunctions();
- // create workspace
+
+ // create workspace
var blocklyDiv = this.$$('#blocklyDiv');
this.blocklyDiv = blocklyDiv;
this._fixSize();
this._fixScroll();
this.workspace = Blockly.inject(blocklyDiv, {
toolbox: this._createToolbox(),
- media: this.get("media"),
+ media: this.media,
toolboxPosition: "start",
scrollbars: true,
horizontalLayout: false,
collapse: true,
css: true,
@@ -6540,9 +6639,11 @@
zoom: {
controls: true,
wheel: true
}
});
+ this.workspace.options.localMedia = this.localMedia;
+
var _this = this;
this.workspace.addChangeListener(function (a, b, c) {
Blockly.Events.disableOrphans(a, b, c);
_this._onBlocklyWorkspaceUpdate();
});
\ No newline at end of file