Cleanup accessible Blockly.

This commit is contained in:
Neil Fraser
2016-05-23 17:34:46 -07:00
parent 6474fcd774
commit 763e9b938f
8 changed files with 404 additions and 408 deletions

View File

@@ -14,6 +14,6 @@ Use Accessible Blockly in Your Web App
-----------
1. see the basic demo under blockly/demos/accessible. This covers the absolute minimum required to import Accessible Blockly into your own web app.
2. You will need to import the files in the same order as in the demo: utils.service.js will need to be the first Angular file imported.
3. You will need a boot.js file. If you aren't creating any extra Angular components, your boot.js file will look identical to that in the demo. If you are creating a different Angular component that should be loaded first, change line 26 accordingly.
3. When the DOMContentLoaded event fires, call ng.platform.browser.bootstrap() on the main component to be loaded. This will usually be blocklyApp.AppView, but if you have another component that wraps it, use that one instead.
4. You will need to implement a runCode() function in the global scope. This function will be called when the user presses the Run Code button in the Accessible Blockly app.
5. Note that we do not support having multiple Accessible Blockly apps in a single webpage.
5. Note that we do not support having multiple Accessible Blockly apps in a single webpage.

68
accessible/messages.js Normal file
View File

@@ -0,0 +1,68 @@
/**
* @license
* Visual Blocks Language
*
* Copyright 2016 Google Inc.
* https://developers.google.com/blockly/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Accessible strings.
* @author madeeha@google.com (Madeeha Ghori)
*/
'use strict';
// The following are all Accessible Blockly strings.
// None of the alert messages have periods on them. This is because the user
// will have their punctuation setting set to 'all', which will result in any
// punctuation being read out to them.
Blockly.Msg.RUN_CODE = 'Run Code';
Blockly.Msg.CLEAR_WORKSPACE = 'Clear Workspace';
Blockly.Msg.BLOCK_ACTION_LIST = 'block action list';
Blockly.Msg.CUT_BLOCK = 'cut block';
Blockly.Msg.COPY_BLOCK = 'copy block';
Blockly.Msg.PASTE_BELOW = 'paste below';
Blockly.Msg.PASTE_ABOVE = 'paste above';
Blockly.Msg.MARK_SPOT_BELOW = 'mark spot below';
Blockly.Msg.MARK_SPOT_ABOVE = 'mark spot above';
Blockly.Msg.MOVE_TO_MARKED_SPOT = 'move to marked spot';
Blockly.Msg.DELETE = 'delete';
Blockly.Msg.MARK_THIS_SPOT = 'mark this spot';
Blockly.Msg.PASTE = 'paste';
Blockly.Msg.TOOLBOX_LOAD_MSG = 'Loading Toolbox…';
Blockly.Msg.WORKSPACE_LOAD_MSG = 'Loading Workspace…';
Blockly.Msg.BLOCK_SUMMARY = 'block summary';
Blockly.Msg.OPTION_LIST = 'option list';
Blockly.Msg.ARGUMENT_OPTIONS_LIST = 'argument options list';
Blockly.Msg.ARGUMENT_INPUT = 'argument input';
Blockly.Msg.ARGUMENT_BLOCK_ACTION_LIST = 'argument block action list';
Blockly.Msg.TEXT = 'text';
Blockly.Msg.BUTTON = 'button';
Blockly.Msg.UNAVAILABLE = 'unavailable';
Blockly.Msg.CURRENT_ARGUMENT_VALUE = 'current argument value:';
Blockly.Msg.COPY_TO_WORKSPACE = 'copy to workspace';
Blockly.Msg.COPY_TO_CLIPBOARD = 'copy to clipboard';
Blockly.Msg.COPY_TO_MARKED_SPOT = 'copy to marked spot';
Blockly.Msg.TOOLBOX = 'Toolbox';
Blockly.Msg.WORKSPACE = 'Workspace';
Blockly.Msg.ANY = 'any';
Blockly.Msg.STATEMENT = 'statement';
Blockly.Msg.VALUE = 'value';
Blockly.Msg.CUT_BLOCK_MSG = 'Cut block: ';
Blockly.Msg.COPIED_BLOCK_MSG = 'Copied block to clipboard: ';
Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG = 'Pasted block from clipboard: ';
Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG = 'Pasted block to marked spot: ';
Blockly.Msg.MARKED_SPOT_MSG = 'Marked spot';
Blockly.Msg.BLOCK_MOVED_TO_MARKED_SPOT_MSB = 'Block moved to marked spot: ';

View File

@@ -1,27 +0,0 @@
/**
* Blockly Demos: AccessibleBlockly
*
* Copyright 2016 Google Inc.
* https://developers.google.com/blockly/
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Starts up Angular app.
* @author madeeha@google.com (Madeeha Ghori)
*/
document.addEventListener('DOMContentLoaded', function() {
ng.platform.browser.bootstrap(blocklyApp.AppView);
});

BIN
demos/accessible/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

View File

@@ -1,341 +1,326 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>accessibleBlockly Basic Demo</title>
<meta charset="utf-8">
<title>Accessible Blockly Demo</title>
<!-- Load Blockly -->
<script src='../../../blockly_compressed.js'></script>
<script src='../../../blocks_compressed.js'></script>
<script src='../../../javascript_compressed.js'></script>
<script src='../../../msg/js/en.js'></script>
<script src='../../../msg/messages.js'></script>
<script src="../../blockly_compressed.js"></script>
<script src="../../blocks_compressed.js"></script>
<script src="../../javascript_compressed.js"></script>
<script src="../../msg/js/en.js"></script>
<script src="../../msg/messages.js"></script>
<script src="../../accessible/messages.js"></script>
<!-- Load accessibleBlockly -->
<script src='../../../accessible/libs/es6-shim.min.js'></script>
<script src='../../../accessible/libs/angular2-polyfills.min.js'></script>
<script src='../../../accessible/libs/Rx.umd.min.js'></script>
<script src='../../../accessible/libs/angular2-all.umd.min.js'></script>
<script src='../../../accessible/utils.service.js'></script>
<script src='../../../accessible/clipboard.service.js'></script>
<script src='../../../accessible/tree.service.js'></script>
<script src='../../../accessible/fieldview.component.js'></script>
<script src='../../../accessible/workspace_treeview.component.js'></script>
<script src='../../../accessible/toolbox_treeview.component.js'></script>
<script src='../../../accessible/toolboxview.component.js'></script>
<script src='../../../accessible/workspaceview.component.js'></script>
<script src='../../../accessible/appview.component.js'></script>
<script src="../../accessible/libs/es6-shim.min.js"></script>
<script src="../../accessible/libs/angular2-polyfills.min.js"></script>
<script src="../../accessible/libs/Rx.umd.min.js"></script>
<script src="../../accessible/libs/angular2-all.umd.min.js"></script>
<script src="../../accessible/utils.service.js"></script>
<script src="../../accessible/clipboard.service.js"></script>
<script src="../../accessible/tree.service.js"></script>
<script src="../../accessible/fieldview.component.js"></script>
<script src="../../accessible/workspace_treeview.component.js"></script>
<script src="../../accessible/toolbox_treeview.component.js"></script>
<script src="../../accessible/toolboxview.component.js"></script>
<script src="../../accessible/workspaceview.component.js"></script>
<script src="../../accessible/appview.component.js"></script>
<link rel="stylesheet" type="text/css" href="../../../media/accessible.css">
<link rel="stylesheet" href="../../media/accessible.css">
<style>
body {
background-color: #fff;
font-family: sans-serif;
}
h1 {
font-weight: normal;
font-size: 140%;
}
</style>
</head>
<body>
<h1><a href="https://developers.google.com/blockly/">Blockly</a> &gt;
<a href="../index.html">Demos</a> &gt; Accessible Blockly</h1>
<p>This is a simple demo of a version of Blockly designed for screen readers.</p>
<!--
<p>&rarr; More info on <a href="https://developers.google.com/blockly/">accessible Blockly</a>&hellip;</p>
-->
<blockly-app></blockly-app>
<script src='boot.js'></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
ng.platform.browser.bootstrap(blocklyApp.AppView);
});
</script>
<xml id="blockly-toolbox-xml" style='display: none'>
<category name='Logic' colour='210'>
<block type='controls_if'></block>
<block type='logic_compare'></block>
<block type='logic_operation'></block>
<block type='logic_negate'></block>
<block type='logic_boolean'></block>
<block type='logic_null' disabled='true'></block>
<block type='logic_ternary'></block>
</category>
<category name='Loops' colour='120'>
<block type='controls_repeat_ext'>
<value name='TIMES'>
<shadow type='math_number'>
<field name='NUM'>10</field>
</shadow>
</value>
</block>
<block type='controls_repeat' disabled='true'></block>
<block type='controls_whileUntil'></block>
<block type='controls_for'>
<value name='FROM'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
<value name='TO'>
<shadow type='math_number'>
<field name='NUM'>10</field>
</shadow>
</value>
<value name='BY'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
</block>
<block type='controls_forEach'></block>
<block type='controls_flow_statements'></block>
</category>
<category name='Math' colour='230'>
<block type='math_number' gap='32'></block>
<block type='math_arithmetic'>
<value name='A'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
<value name='B'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
</block>
<block type='math_single'>
<value name='NUM'>
<shadow type='math_number'>
<field name='NUM'>9</field>
</shadow>
</value>
</block>
<block type='math_trig'>
<value name='NUM'>
<shadow type='math_number'>
<field name='NUM'>45</field>
</shadow>
</value>
</block>
<block type='math_constant'></block>
<block type='math_number_property'>
<value name='NUMBER_TO_CHECK'>
<shadow type='math_number'>
<field name='NUM'>0</field>
</shadow>
</value>
</block>
<block type='math_change'>
<value name='DELTA'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
</block>
<block type='math_round'>
<value name='NUM'>
<shadow type='math_number'>
<field name='NUM'>3.1</field>
</shadow>
</value>
</block>
<block type='math_on_list'></block>
<block type='math_modulo'>
<value name='DIVIDEND'>
<shadow type='math_number'>
<field name='NUM'>64</field>
</shadow>
</value>
<value name='DIVISOR'>
<shadow type='math_number'>
<field name='NUM'>10</field>
</shadow>
</value>
</block>
<block type='math_constrain'>
<value name='VALUE'>
<shadow type='math_number'>
<field name='NUM'>50</field>
</shadow>
</value>
<value name='LOW'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
<value name='HIGH'>
<shadow type='math_number'>
<field name='NUM'>100</field>
</shadow>
</value>
</block>
<block type='math_random_int'>
<value name='FROM'>
<shadow type='math_number'>
<field name='NUM'>1</field>
</shadow>
</value>
<value name='TO'>
<shadow type='math_number'>
<field name='NUM'>100</field>
</shadow>
</value>
</block>
<block type='math_random_float'></block>
</category>
<category name='Text' colour='160'>
<block type='text'></block>
<block type='text_join'></block>
<block type='text_append'>
<value name='TEXT'>
<shadow type='text'></shadow>
</value>
</block>
<block type='text_length'>
<value name='VALUE'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
<block type='text_isEmpty'>
<value name='VALUE'>
<shadow type='text'>
<field name='TEXT'></field>
</shadow>
</value>
</block>
<block type='text_indexOf'>
<value name='VALUE'>
<block type='variables_get'>
<field name='VAR'>text</field>
</block>
</value>
<value name='FIND'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
<block type='text_charAt'>
<value name='VALUE'>
<block type='variables_get'>
<field name='VAR'>text</field>
</block>
</value>
</block>
<block type='text_getSubstring'>
<value name='STRING'>
<block type='variables_get'>
<field name='VAR'>text</field>
</block>
</value>
</block>
<block type='text_changeCase'>
<value name='TEXT'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
<block type='text_trim'>
<value name='TEXT'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
<block type='text_print'>
<value name='TEXT'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
<block type='text_prompt_ext'>
<value name='TEXT'>
<shadow type='text'>
<field name='TEXT'>abc</field>
</shadow>
</value>
</block>
</category>
<category name='Lists' colour='260'>
<block type='lists_create_with'>
<mutation items='0'></mutation>
</block>
<block type='lists_create_with'></block>
<block type='lists_repeat'>
<value name='NUM'>
<shadow type='math_number'>
<field name='NUM'>5</field>
</shadow>
</value>
</block>
<block type='lists_length'></block>
<block type='lists_isEmpty'></block>
<block type='lists_indexOf'>
<value name='VALUE'>
<block type='variables_get'>
<field name='VAR'>list</field>
</block>
</value>
</block>
<block type='lists_getIndex'>
<value name='VALUE'>
<block type='variables_get'>
<field name='VAR'>list</field>
</block>
</value>
</block>
<block type='lists_setIndex'>
<value name='LIST'>
<block type='variables_get'>
<field name='VAR'>list</field>
</block>
</value>
</block>
<block type='lists_getSublist'>
<value name='LIST'>
<block type='variables_get'>
<field name='VAR'>list</field>
</block>
</value>
</block>
<block type='lists_split'>
<value name='DELIM'>
<shadow type='text'>
<field name='TEXT'>,</field>
</shadow>
</value>
</block>
</category>
<category name='Colour' colour='20'>
<block type='colour_picker'></block>
<block type='colour_random'></block>
<block type='colour_rgb'>
<value name='RED'>
<shadow type='math_number'>
<field name='NUM'>100</field>
</shadow>
</value>
<value name='GREEN'>
<shadow type='math_number'>
<field name='NUM'>50</field>
</shadow>
</value>
<value name='BLUE'>
<shadow type='math_number'>
<field name='NUM'>0</field>
</shadow>
</value>
</block>
<block type='colour_blend'>
<value name='COLOUR1'>
<shadow type='colour_picker'>
<field name='COLOUR'>#ff0000</field>
</shadow>
</value>
<value name='COLOUR2'>
<shadow type='colour_picker'>
<field name='COLOUR'>#3333ff</field>
</shadow>
</value>
<value name='RATIO'>
<shadow type='math_number'>
<field name='NUM'>0.5</field>
</shadow>
</value>
</block>
</category>
<sep></sep>
<category name='Variables' colour='330' custom='VARIABLE'></category>
<category name='Functions' colour='290' custom='PROCEDURE'></category>
<xml id="blockly-toolbox-xml" style="display: none">
<category name="Logic" colour="210">
<block type="controls_if"></block>
<block type="logic_compare"></block>
<block type="logic_operation"></block>
<block type="logic_negate"></block>
<block type="logic_boolean"></block>
<block type="logic_null" disabled="true"></block>
<block type="logic_ternary"></block>
</category>
<category name="Loops" colour="120">
<block type="controls_repeat_ext">
<value name="TIMES">
<shadow type="math_number">
<field name="NUM">10</field>
</shadow>
</value>
</block>
<block type="controls_repeat" disabled="true"></block>
<block type="controls_whileUntil"></block>
<block type="controls_for">
<value name="FROM">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="TO">
<shadow type="math_number">
<field name="NUM">10</field>
</shadow>
</value>
<value name="BY">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
<block type="controls_forEach"></block>
<block type="controls_flow_statements"></block>
</category>
<category name="Math" colour="230">
<block type="math_number" gap="32"></block>
<block type="math_arithmetic">
<value name="A">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="B">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
<block type="math_single">
<value name="NUM">
<shadow type="math_number">
<field name="NUM">9</field>
</shadow>
</value>
</block>
<block type="math_trig">
<value name="NUM">
<shadow type="math_number">
<field name="NUM">45</field>
</shadow>
</value>
</block>
<block type="math_constant"></block>
<block type="math_number_property">
<value name="NUMBER_TO_CHECK">
<shadow type="math_number">
<field name="NUM">0</field>
</shadow>
</value>
</block>
<block type="math_change">
<value name="DELTA">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
<block type="math_round">
<value name="NUM">
<shadow type="math_number">
<field name="NUM">3.1</field>
</shadow>
</value>
</block>
<block type="math_on_list"></block>
<block type="math_modulo">
<value name="DIVIDEND">
<shadow type="math_number">
<field name="NUM">64</field>
</shadow>
</value>
<value name="DIVISOR">
<shadow type="math_number">
<field name="NUM">10</field>
</shadow>
</value>
</block>
<block type="math_constrain">
<value name="VALUE">
<shadow type="math_number">
<field name="NUM">50</field>
</shadow>
</value>
<value name="LOW">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="HIGH">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
<block type="math_random_int">
<value name="FROM">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="TO">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
<block type="math_random_float"></block>
</category>
<category name="Text" colour="160">
<block type="text"></block>
<block type="text_join"></block>
<block type="text_append">
<value name="TEXT">
<shadow type="text"></shadow>
</value>
</block>
<block type="text_length">
<value name="VALUE">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_isEmpty">
<value name="VALUE">
<shadow type="text">
<field name="TEXT"></field>
</shadow>
</value>
</block>
<block type="text_indexOf">
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_charAt">
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
<block type="text_getSubstring">
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
<block type="text_changeCase">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_trim">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_print">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_prompt_ext">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
</category>
<category name="Lists" colour="260">
<block type="lists_create_with">
<mutation items="0"></mutation>
</block>
<block type="lists_create_with"></block>
<block type="lists_repeat">
<value name="NUM">
<shadow type="math_number">
<field name="NUM">5</field>
</shadow>
</value>
</block>
<block type="lists_length"></block>
<block type="lists_isEmpty"></block>
<block type="lists_indexOf">
<value name="VALUE">
<block type="variables_get">
<field name="VAR">list</field>
</block>
</value>
</block>
<block type="lists_getIndex">
<value name="VALUE">
<block type="variables_get">
<field name="VAR">list</field>
</block>
</value>
</block>
<block type="lists_setIndex">
<value name="LIST">
<block type="variables_get">
<field name="VAR">list</field>
</block>
</value>
</block>
<block type="lists_getSublist">
<value name="LIST">
<block type="variables_get">
<field name="VAR">list</field>
</block>
</value>
</block>
<block type="lists_split">
<value name="DELIM">
<shadow type="text">
<field name="TEXT">,</field>
</shadow>
</value>
</block>
</category>
<sep></sep>
<category name="Variables" colour="330" custom="VARIABLE"></category>
<category name="Functions" colour="290" custom="PROCEDURE"></category>
</xml>
</body>

View File

@@ -136,18 +136,6 @@
</td>
</tr>
<tr>
<td>
<a href="plane/index.html">
<img src="plane/icon.png" height=80 width=100>
</a>
</td>
<td>
<div><a href="plane/index.html">Plane</a></div>
<div>Using Closure Templates to support 35 languages.</div>
</td>
</tr>
<tr>
<td>
<a href="storage/index.html">
@@ -172,6 +160,30 @@
</td>
</tr>
<tr>
<td>
<a href="accessible/index.html">
<img src="accessible/icon.png" height=80 width=100>
</a>
</td>
<td>
<div><a href="accessible/index.html">Accessible Blockly</a></div>
<div>Version of Blockly accessible to screen readers.</div>
</td>
</tr>
<tr>
<td>
<a href="plane/index.html">
<img src="plane/icon.png" height=80 width=100>
</a>
</td>
<td>
<div><a href="plane/index.html">Plane</a></div>
<div>Using Closure Templates to support 35 languages.</div>
</td>
</tr>
<tr>
<td>
<a href="code/index.html">

View File

@@ -1120,45 +1120,3 @@ Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = 'If a value is true, then return a sec
Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = 'http://c2.com/cgi/wiki?GuardClause';
/// warning - This appears if the user tries to use this block outside of a function definition.
Blockly.Msg.PROCEDURES_IFRETURN_WARNING = 'Warning: This block may be used only within a function definition.';
// The following are all Accessible Blockly strings.
// None of the alert messages have periods on them. This is because the user will have their punctuation
// setting set to 'all', which will result in any punctuation being read out to them.
Blockly.Msg.RUN_CODE = 'Run Code';
Blockly.Msg.CLEAR_WORKSPACE = 'Clear Workspace';
Blockly.Msg.BLOCK_ACTION_LIST = 'block action list';
Blockly.Msg.CUT_BLOCK = 'cut block';
Blockly.Msg.COPY_BLOCK = 'copy block';
Blockly.Msg.PASTE_BELOW = 'paste below';
Blockly.Msg.PASTE_ABOVE = 'paste above';
Blockly.Msg.MARK_SPOT_BELOW = 'mark spot below';
Blockly.Msg.MARK_SPOT_ABOVE = 'mark spot above';
Blockly.Msg.MOVE_TO_MARKED_SPOT = 'move to marked spot';
Blockly.Msg.DELETE = 'delete';
Blockly.Msg.MARK_THIS_SPOT = 'mark this spot';
Blockly.Msg.PASTE = 'paste';
Blockly.Msg.TOOLBOX_LOAD_MSG = 'Loading Toolbox…';
Blockly.Msg.WORKSPACE_LOAD_MSG = 'Loading Workspace…';
Blockly.Msg.BLOCK_SUMMARY = 'block summary';
Blockly.Msg.OPTION_LIST = 'option list';
Blockly.Msg.ARGUMENT_OPTIONS_LIST = 'argument options list';
Blockly.Msg.ARGUMENT_INPUT = 'argument input';
Blockly.Msg.ARGUMENT_BLOCK_ACTION_LIST = 'argument block action list';
Blockly.Msg.TEXT = 'text';
Blockly.Msg.BUTTON = 'button';
Blockly.Msg.UNAVAILABLE = 'unavailable';
Blockly.Msg.CURRENT_ARGUMENT_VALUE = 'current argument value:';
Blockly.Msg.COPY_TO_WORKSPACE = 'copy to workspace';
Blockly.Msg.COPY_TO_CLIPBOARD = 'copy to clipboard';
Blockly.Msg.COPY_TO_MARKED_SPOT = 'copy to marked spot';
Blockly.Msg.TOOLBOX = 'Toolbox';
Blockly.Msg.WORKSPACE = 'Workspace';
Blockly.Msg.ANY = 'any';
Blockly.Msg.STATEMENT = 'statement';
Blockly.Msg.VALUE = 'value';
Blockly.Msg.CUT_BLOCK_MSG = 'Cut block: ';
Blockly.Msg.COPIED_BLOCK_MSG = 'Copied block to clipboard: ';
Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG = 'Pasted block from clipboard: ';
Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG = 'Pasted block to marked spot: ';
Blockly.Msg.MARKED_SPOT_MSG = 'Marked spot';
Blockly.Msg.BLOCK_MOVED_TO_MARKED_SPOT_MSB = 'Block moved to marked spot: ';

View File

@@ -29,4 +29,4 @@
"undef": true,
"unused": true
}
}
}