mirror of
https://github.com/google/blockly.git
synced 2025-12-16 06:10:12 +01:00
Swap order of arguments on domToWorkspace.
This commit is contained in:
@@ -60,7 +60,7 @@ BlocklyStorage.restoreBlocks = function(opt_workspace) {
|
||||
if ('localStorage' in window && window.localStorage[url]) {
|
||||
var workspace = opt_workspace || Blockly.getMainWorkspace();
|
||||
var xml = Blockly.Xml.textToDom(window.localStorage[url]);
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -181,7 +181,7 @@ BlocklyStorage.loadXml_ = function(xml, workspace) {
|
||||
}
|
||||
// Clear the workspace to avoid merge.
|
||||
workspace.clear();
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -535,7 +535,7 @@ Blockly.Connection.prototype.disconnect = function() {
|
||||
var shadow = parentConnection.getShadowDom();
|
||||
if (parentBlock.workspace && shadow && Blockly.Events.recordUndo) {
|
||||
var blockShadow =
|
||||
Blockly.Xml.domToBlock(parentBlock.workspace, shadow);
|
||||
Blockly.Xml.domToBlock(shadow, parentBlock.workspace);
|
||||
if (blockShadow.outputConnection) {
|
||||
parentConnection.connect(blockShadow.outputConnection);
|
||||
} else if (blockShadow.previousConnection) {
|
||||
|
||||
@@ -124,7 +124,7 @@ Blockly.ContextMenu.hide = function() {
|
||||
Blockly.ContextMenu.callbackFactory = function(block, xml) {
|
||||
return function() {
|
||||
Blockly.Events.disable();
|
||||
var newBlock = Blockly.Xml.domToBlock(block.workspace, xml);
|
||||
var newBlock = Blockly.Xml.domToBlock(xml, block.workspace);
|
||||
// Move the new block next to the old block.
|
||||
var xy = block.getRelativeToSurfaceXY();
|
||||
if (block.RTL) {
|
||||
|
||||
@@ -324,7 +324,7 @@ Blockly.Events.Create.prototype.run = function(forward) {
|
||||
var workspace = Blockly.Workspace.getById(this.workspaceId);
|
||||
var xml = goog.dom.createDom('xml');
|
||||
xml.appendChild(this.xml);
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
} else {
|
||||
for (var i = 0, id; id = this.ids[i]; i++) {
|
||||
var block = Blockly.Block.getById(id);
|
||||
@@ -389,7 +389,7 @@ Blockly.Events.Delete.prototype.run = function(forward) {
|
||||
var workspace = Blockly.Workspace.getById(this.workspaceId);
|
||||
var xml = goog.dom.createDom('xml');
|
||||
xml.appendChild(this.oldXml);
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -393,7 +393,7 @@ Blockly.Flyout.prototype.show = function(xmlList) {
|
||||
this.permanentlyDisabled_.length = 0;
|
||||
for (var i = 0, xml; xml = xmlList[i]; i++) {
|
||||
if (xml.tagName && xml.tagName.toUpperCase() == 'BLOCK') {
|
||||
var block = Blockly.Xml.domToBlock(this.workspace_, xml);
|
||||
var block = Blockly.Xml.domToBlock(xml, this.workspace_);
|
||||
if (block.disabled) {
|
||||
// Record blocks that were initially disabled.
|
||||
// Do not enable these blocks as a result of capacity filtering.
|
||||
@@ -636,7 +636,7 @@ Blockly.Flyout.prototype.createBlockFunc_ = function(originBlock) {
|
||||
Blockly.Events.disable();
|
||||
// Create the new block by cloning the block in the flyout (via XML).
|
||||
var xml = Blockly.Xml.blockToDom(originBlock);
|
||||
var block = Blockly.Xml.domToBlock(workspace, xml);
|
||||
var block = Blockly.Xml.domToBlock(xml, workspace);
|
||||
// Place it in the same spot as the flyout copy.
|
||||
var svgRootOld = originBlock.getSvgRoot();
|
||||
if (!svgRootOld) {
|
||||
|
||||
@@ -468,7 +468,7 @@ Blockly.WorkspaceSvg.prototype.paste = function(xmlBlock) {
|
||||
}
|
||||
Blockly.terminateDrag_(); // Dragging while pasting? No.
|
||||
Blockly.Events.disable();
|
||||
var block = Blockly.Xml.domToBlock(this, xmlBlock);
|
||||
var block = Blockly.Xml.domToBlock(xmlBlock, this);
|
||||
// Move the duplicate to original position.
|
||||
var blockX = parseInt(xmlBlock.getAttribute('x'), 10);
|
||||
var blockY = parseInt(xmlBlock.getAttribute('y'), 10);
|
||||
|
||||
38
core/xml.js
38
core/xml.js
@@ -268,10 +268,17 @@ Blockly.Xml.textToDom = function(text) {
|
||||
|
||||
/**
|
||||
* Decode an XML DOM and create blocks on the workspace.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
* @param {!Element} xml XML DOM.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
*/
|
||||
Blockly.Xml.domToWorkspace = function(workspace, xml) {
|
||||
Blockly.Xml.domToWorkspace = function(xml, workspace) {
|
||||
if (xml instanceof Blockly.Workspace) {
|
||||
var swap = xml;
|
||||
xml = workspace;
|
||||
workspace = swap;
|
||||
console.warn('Deprecated call to Blockly.Xml.domToWorkspace, ' +
|
||||
'swap the arguments.');
|
||||
}
|
||||
var width; // Not used in LTR.
|
||||
if (workspace.RTL) {
|
||||
width = workspace.getWidth();
|
||||
@@ -289,7 +296,7 @@ Blockly.Xml.domToWorkspace = function(workspace, xml) {
|
||||
var xmlChild = xml.childNodes[i];
|
||||
var name = xmlChild.nodeName.toLowerCase();
|
||||
if (name == 'block' || name == 'shadow') {
|
||||
var block = Blockly.Xml.domToBlock(workspace, xmlChild);
|
||||
var block = Blockly.Xml.domToBlock(xmlChild, workspace);
|
||||
var blockX = parseInt(xmlChild.getAttribute('x'), 10);
|
||||
var blockY = parseInt(xmlChild.getAttribute('y'), 10);
|
||||
if (!isNaN(blockX) && !isNaN(blockY)) {
|
||||
@@ -306,14 +313,21 @@ Blockly.Xml.domToWorkspace = function(workspace, xml) {
|
||||
/**
|
||||
* Decode an XML block tag and create a block (and possibly sub blocks) on the
|
||||
* workspace.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
* @param {!Element} xmlBlock XML block element.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
* @return {!Blockly.Block} The root block created.
|
||||
*/
|
||||
Blockly.Xml.domToBlock = function(workspace, xmlBlock) {
|
||||
Blockly.Xml.domToBlock = function(xmlBlock, workspace) {
|
||||
if (xmlBlock instanceof Blockly.Workspace) {
|
||||
var swap = xmlBlock;
|
||||
xmlBlock = workspace;
|
||||
workspace = swap;
|
||||
console.warn('Deprecated call to Blockly.Xml.domToBlock, ' +
|
||||
'swap the arguments.');
|
||||
}
|
||||
// Create top-level block.
|
||||
Blockly.Events.disable();
|
||||
var topBlock = Blockly.Xml.domToBlockHeadless_(workspace, xmlBlock);
|
||||
var topBlock = Blockly.Xml.domToBlockHeadless_(xmlBlock, workspace);
|
||||
if (workspace.rendered) {
|
||||
// Hide connections to speed up assembly.
|
||||
topBlock.setConnectionsHidden(true);
|
||||
@@ -347,12 +361,12 @@ Blockly.Xml.domToBlock = function(workspace, xmlBlock) {
|
||||
/**
|
||||
* Decode an XML block tag and create a block (and possibly sub blocks) on the
|
||||
* workspace.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
* @param {!Element} xmlBlock XML block element.
|
||||
* @param {!Blockly.Workspace} workspace The workspace.
|
||||
* @return {!Blockly.Block} The root block created.
|
||||
* @private
|
||||
*/
|
||||
Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
|
||||
Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) {
|
||||
var block = null;
|
||||
var prototypeName = xmlBlock.getAttribute('type');
|
||||
if (!prototypeName) {
|
||||
@@ -447,8 +461,8 @@ Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
|
||||
input.connection.setShadowDom(childShadowNode);
|
||||
}
|
||||
if (childBlockNode) {
|
||||
blockChild = Blockly.Xml.domToBlockHeadless_(workspace,
|
||||
childBlockNode);
|
||||
blockChild = Blockly.Xml.domToBlockHeadless_(childBlockNode,
|
||||
workspace);
|
||||
if (blockChild.outputConnection) {
|
||||
input.connection.connect(blockChild.outputConnection);
|
||||
} else if (blockChild.previousConnection) {
|
||||
@@ -469,8 +483,8 @@ Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
|
||||
// This could happen if there is more than one XML 'next' tag.
|
||||
throw 'Next statement is already connected.';
|
||||
}
|
||||
blockChild = Blockly.Xml.domToBlockHeadless_(workspace,
|
||||
childBlockNode);
|
||||
blockChild = Blockly.Xml.domToBlockHeadless_(childBlockNode,
|
||||
workspace);
|
||||
if (!blockChild.previousConnection) {
|
||||
throw 'Next block does not have previous statement.';
|
||||
}
|
||||
|
||||
@@ -786,7 +786,7 @@ function init() {
|
||||
mainWorkspace);
|
||||
} else {
|
||||
var xml = '<xml><block type="factory_base" deletable="false" movable="false"></block></xml>';
|
||||
Blockly.Xml.domToWorkspace(mainWorkspace, Blockly.Xml.textToDom(xml));
|
||||
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), mainWorkspace);
|
||||
}
|
||||
mainWorkspace.clearUndo();
|
||||
|
||||
|
||||
@@ -139,11 +139,11 @@ Code.loadBlocks = function(defaultXml) {
|
||||
// Language switching stores the blocks during the reload.
|
||||
delete window.sessionStorage.loadOnceBlocks;
|
||||
var xml = Blockly.Xml.textToDom(loadOnce);
|
||||
Blockly.Xml.domToWorkspace(Code.workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, Code.workspace);
|
||||
} else if (defaultXml) {
|
||||
// Load the editor with default starting blocks.
|
||||
var xml = Blockly.Xml.textToDom(defaultXml);
|
||||
Blockly.Xml.domToWorkspace(Code.workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, Code.workspace);
|
||||
} else if ('BlocklyStorage' in window) {
|
||||
// Restore saved blocks in a separate thread so that subsequent
|
||||
// initialization is not affected from a failed load.
|
||||
@@ -270,7 +270,7 @@ Code.tabClick = function(clickedName) {
|
||||
}
|
||||
if (xmlDom) {
|
||||
Code.workspace.clear();
|
||||
Blockly.Xml.domToWorkspace(Code.workspace, xmlDom);
|
||||
Blockly.Xml.domToWorkspace(xmlDom, Code.workspace);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
var workspace = Blockly.inject('blocklyDiv',
|
||||
{media: '../../media/',
|
||||
toolbox: document.getElementById('toolbox')});
|
||||
Blockly.Xml.domToWorkspace(workspace,
|
||||
document.getElementById('startBlocks'));
|
||||
Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
|
||||
workspace);
|
||||
|
||||
function showCode() {
|
||||
// Generate JavaScript code and display it.
|
||||
|
||||
@@ -338,8 +338,8 @@ Graph.init = function() {
|
||||
{collapse: false,
|
||||
media: '../../media/',
|
||||
toolbox: document.getElementById('toolbox')});
|
||||
Blockly.Xml.domToWorkspace(Graph.workspace,
|
||||
document.getElementById('startBlocks'));
|
||||
Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
|
||||
Graph.workspace);
|
||||
Graph.workspace.clearUndo();
|
||||
|
||||
// When Blockly changes, update the graph.
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
}
|
||||
// Create a headless workspace.
|
||||
var workspace = new Blockly.Workspace();
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
var code = Blockly.Python.workspaceToCode(workspace);
|
||||
document.getElementById('code_output').value = code;
|
||||
}
|
||||
|
||||
@@ -124,8 +124,8 @@
|
||||
var workspace = Blockly.inject('blocklyDiv',
|
||||
{media: '../../media/',
|
||||
toolbox: document.getElementById('toolbox')});
|
||||
Blockly.Xml.domToWorkspace(workspace,
|
||||
document.getElementById('startBlocks'));
|
||||
Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
|
||||
workspace);
|
||||
|
||||
var myInterpreter = null;
|
||||
|
||||
|
||||
@@ -143,11 +143,11 @@ Plane.loadBlocks = function(defaultXml) {
|
||||
// Language switching stores the blocks during the reload.
|
||||
delete window.sessionStorage.loadOnceBlocks;
|
||||
var xml = Blockly.Xml.textToDom(loadOnce);
|
||||
Blockly.Xml.domToWorkspace(Plane.workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, Plane.workspace);
|
||||
} else if (defaultXml) {
|
||||
// Load the editor with default starting blocks.
|
||||
var xml = Blockly.Xml.textToDom(defaultXml);
|
||||
Blockly.Xml.domToWorkspace(Plane.workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, Plane.workspace);
|
||||
}
|
||||
Plane.workspace.clearUndo();
|
||||
};
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
{media: '../../media/',
|
||||
rtl: true,
|
||||
toolbox: document.getElementById('toolbox')});
|
||||
Blockly.Xml.domToWorkspace(workspace,
|
||||
document.getElementById('startBlocks'));
|
||||
Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
|
||||
workspace);
|
||||
//window.onbeforeunload = function() {
|
||||
// return 'Leaving this page will result in the loss of your work.';
|
||||
//};
|
||||
|
||||
@@ -128,7 +128,7 @@ function fromXml(xmlText) {
|
||||
alert('Error parsing XML:\n' + e);
|
||||
return;
|
||||
}
|
||||
Blockly.Xml.domToWorkspace(workspace, xmlDoc);
|
||||
Blockly.Xml.domToWorkspace(xmlDoc, workspace);
|
||||
}
|
||||
|
||||
function setOutput(text) {
|
||||
|
||||
@@ -118,7 +118,7 @@ function toXml() {
|
||||
function fromXml() {
|
||||
var input = document.getElementById('importExport');
|
||||
var xml = Blockly.Xml.textToDom(input.value);
|
||||
Blockly.Xml.domToWorkspace(workspace, xml);
|
||||
Blockly.Xml.domToWorkspace(xml, workspace);
|
||||
taChange();
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ function spaghetti(n) {
|
||||
xml = '<xml xmlns="http://www.w3.org/1999/xhtml">' + xml + '</xml>';
|
||||
var dom = Blockly.Xml.textToDom(xml);
|
||||
console.time('Spaghetti domToWorkspace');
|
||||
Blockly.Xml.domToWorkspace(workspace, dom);
|
||||
Blockly.Xml.domToWorkspace(dom, workspace);
|
||||
console.timeEnd('Spaghetti domToWorkspace');
|
||||
}
|
||||
var spaghettiXml = [
|
||||
|
||||
Reference in New Issue
Block a user