diff --git a/core/blockly.js.rej b/core/blockly.js.rej deleted file mode 100644 index 7644eedfe..000000000 --- a/core/blockly.js.rej +++ /dev/null @@ -1,26 +0,0 @@ -*** 943,968 **** - var expandOption = {enabled: hasCollapsedBlocks}; - expandOption.text = Blockly.Msg.EXPAND_ALL; - expandOption.callback = function() { -+ Blockly.Instrument.initializeStats("expandAllCollapsedBlocks"); -+ Blockly.Instrument.timer( -+ function () { -+ var ms = 0; -+ for (var i = 0; i < topBlocks.length; i++) { -+ var block = topBlocks[i]; -+ while (block) { -+ setTimeout(block.setCollapsed.bind(block, false), ms); -+ block = block.getNextBlock(); -+ ms += COLLAPSE_DELAY; -+ } -+ } -+ Blockly.resetWorkspaceArrangements(); -+ }, -+ function (result, timeDiff) { -+ Blockly.Instrument.stats.totalTime = timeDiff; -+ Blockly.Instrument.displayStats("expandAllCollapsedBlocks"); -+ } -+ ); - }; - options.push(expandOption); - } diff --git a/core/procedures.js.rej b/core/procedures.js.rej deleted file mode 100644 index acfcc20de..000000000 --- a/core/procedures.js.rej +++ /dev/null @@ -1,30 +0,0 @@ -*************** -*** 255,266 **** - * @param {!Blockly.Workspace} workspace The workspace to delete callers from. - * @param {!Array.} paramNames Array of new parameter names. - * @param {!Array.} paramIds Array of unique parameter IDs. - */ - Blockly.Procedures.mutateCallers = function(name, workspace, -- paramNames, paramIds) { - var callers = Blockly.Procedures.getCallers(name, workspace); - for (var x = 0; x < callers.length; x++) { -- callers[x].setProcedureParameters(paramNames, paramIds); - } - }; - ---- 256,270 ---- - * @param {!Blockly.Workspace} workspace The workspace to delete callers from. - * @param {!Array.} paramNames Array of new parameter names. - * @param {!Array.} paramIds Array of unique parameter IDs. -+ * @param {boolean} opt_intializeTracking indicate whether paramId tracking should start -+ * Is undefined (falsey) as default. // [lyn, 10/26/13] added this. - */ - Blockly.Procedures.mutateCallers = function(name, workspace, -+ paramNames, paramIds, -+ opt_initializeTracking) { - var callers = Blockly.Procedures.getCallers(name, workspace); - for (var x = 0; x < callers.length; x++) { -+ callers[x].setProcedureParameters(paramNames, paramIds, opt_initializeTracking); - } - }; - diff --git a/core/warning.js.rej b/core/warning.js.rej deleted file mode 100644 index 65ced2804..000000000 --- a/core/warning.js.rej +++ /dev/null @@ -1,60 +0,0 @@ -*************** -*** 82,99 **** - ! - */ - var iconShield = Blockly.createSvgElement('path', -- {'class': 'blocklyIconShield', - 'd': 'M 2,15 Q -1,15 0.5,12 L 6.5,1.7 Q 8,-1 9.5,1.7 L 15.5,12 ' + - 'Q 17,15 14,15 z'}, - this.iconGroup_); - this.iconMark_ = Blockly.createSvgElement('text', -- {'class': 'blocklyIconMark', - 'x': Blockly.Icon.RADIUS, - 'y': 2 * Blockly.Icon.RADIUS - 3}, this.iconGroup_); - this.iconMark_.appendChild(document.createTextNode('!')); - }; - - /** - * Show or hide the warning bubble. - * @param {boolean} visible True if the bubble should be visible. - */ ---- 82,120 ---- - ! - */ - var iconShield = Blockly.createSvgElement('path', -+ {'class': 'blocklyWarningIconShield', - 'd': 'M 2,15 Q -1,15 0.5,12 L 6.5,1.7 Q 8,-1 9.5,1.7 L 15.5,12 ' + - 'Q 17,15 14,15 z'}, - this.iconGroup_); - this.iconMark_ = Blockly.createSvgElement('text', -+ {'class': 'blocklyWarningIconMark', - 'x': Blockly.Icon.RADIUS, - 'y': 2 * Blockly.Icon.RADIUS - 3}, this.iconGroup_); - this.iconMark_.appendChild(document.createTextNode('!')); - }; - - /** -+ * Create the text for the warning's bubble. -+ * @param {string} text The text to display. -+ * @return {!SVGTextElement} The top-level node of the text. -+ * @private -+ */ -+ Blockly.Warning.prototype.textToDom_ = function(text) { -+ var paragraph = /** @type {!SVGTextElement} */ ( -+ Blockly.createSvgElement( -+ 'text', {'class': 'blocklyText blocklyErrorWarningText', 'y': Blockly.Bubble.BORDER_WIDTH}, -+ null)); -+ var lines = text.split('\n'); -+ for (var i = 0; i < lines.length; i++) { -+ var tspanElement = Blockly.createSvgElement('tspan', -+ {'dy': '1em', 'x': Blockly.Bubble.BORDER_WIDTH}, paragraph); -+ var textNode = document.createTextNode(lines[i]); -+ tspanElement.appendChild(textNode); -+ } -+ return paragraph; -+ }; -+ -+ /** - * Show or hide the warning bubble. - * @param {boolean} visible True if the bubble should be visible. - */ diff --git a/core/xml.js.rej b/core/xml.js.rej deleted file mode 100644 index dcb91104a..000000000 --- a/core/xml.js.rej +++ /dev/null @@ -1,34 +0,0 @@ -*************** -*** 342,348 **** - } - if (firstRealGrandchild && - firstRealGrandchild.nodeName.toLowerCase() == 'block') { -- blockChild = Blockly.Xml.domToBlock(workspace, firstRealGrandchild, - opt_reuseBlock); - if (blockChild.outputConnection) { - input.connection.connect(blockChild.outputConnection); ---- 415,421 ---- - } - if (firstRealGrandchild && - firstRealGrandchild.nodeName.toLowerCase() == 'block') { -+ blockChild = Blockly.Xml.domToBlockInner(workspace, firstRealGrandchild, - opt_reuseBlock); - if (blockChild.outputConnection) { - input.connection.connect(blockChild.outputConnection); -*************** -*** 362,368 **** - // This could happen if there is more than one XML 'next' tag. - throw 'Next statement is already connected.'; - } -- blockChild = Blockly.Xml.domToBlock(workspace, firstRealGrandchild, - opt_reuseBlock); - if (!blockChild.previousConnection) { - throw 'Next block does not have previous statement.'; ---- 435,441 ---- - // This could happen if there is more than one XML 'next' tag. - throw 'Next statement is already connected.'; - } -+ blockChild = Blockly.Xml.domToBlockInner(workspace, firstRealGrandchild, - opt_reuseBlock); - if (!blockChild.previousConnection) { - throw 'Next block does not have previous statement.'; diff --git a/i18n/common.py b/i18n/common.py index fac4c39b6..90e584e16 100644 --- a/i18n/common.py +++ b/i18n/common.py @@ -3,7 +3,7 @@ # Code shared by translation conversion scripts. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. @@ -61,7 +61,7 @@ def read_json_file(filename): return defs except ValueError, e: print('Error reading ' + filename) - raise InputError(file, str(e)) + raise InputError(filename, str(e)) def _create_qqq_file(output_dir): diff --git a/i18n/create_messages.py b/i18n/create_messages.py index cd63f1bd1..d32814f4a 100755 --- a/i18n/create_messages.py +++ b/i18n/create_messages.py @@ -3,7 +3,7 @@ # Generate .js files defining Blockly core and language messages. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. @@ -28,6 +28,14 @@ from common import read_json_file _NEWLINE_PATTERN = re.compile('[\n\r]') +def string_is_ascii(s): + try: + s.decode('ascii') + return True + except UnicodeEncodeError: + return False + + def main(): """Generate .js files defining Blockly core and language messages.""" @@ -76,10 +84,17 @@ def main(): target_lang = filename[:filename.index('.')] if target_lang not in ('qqq', 'keys', 'synonyms'): target_defs = read_json_file(os.path.join(os.curdir, arg_file)) + + # Verify that keys are 'ascii' + bad_keys = [key for key in target_defs if not string_is_ascii(key)] + if bad_keys: + print(u'These keys in {0} contain non ascii characters: {1}'.format( + filename, ', '.join(bad_keys))) + # If there's a '\n' or '\r', remove it and print a warning. for key, value in target_defs.items(): if _NEWLINE_PATTERN.search(value): - print('WARNING: definition of {0} in {1} contained ' + print(u'WARNING: definition of {0} in {1} contained ' 'a newline character.'. format(key, arg_file)) target_defs[key] = _NEWLINE_PATTERN.sub(' ', value) @@ -118,10 +133,10 @@ goog.require('Blockly.Msg'); synonym_keys = [key for key in target_defs if key in synonym_defs] if not args.quiet: if extra_keys: - print('These extra keys appeared in {0}: {1}'.format( + print(u'These extra keys appeared in {0}: {1}'.format( filename, ', '.join(extra_keys))) if synonym_keys: - print('These synonym keys appeared in {0}: {1}'.format( + print(u'These synonym keys appeared in {0}: {1}'.format( filename, ', '.join(synonym_keys))) outfile.write(synonym_text) diff --git a/i18n/dedup_json.py b/i18n/dedup_json.py index b4b51ba10..30e572dde 100755 --- a/i18n/dedup_json.py +++ b/i18n/dedup_json.py @@ -7,7 +7,7 @@ # output. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. diff --git a/i18n/js_to_json.py b/i18n/js_to_json.py index 097bd5493..197dc4357 100755 --- a/i18n/js_to_json.py +++ b/i18n/js_to_json.py @@ -3,7 +3,7 @@ # Gives the translation status of the specified apps and languages. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. diff --git a/i18n/json_to_js.py b/i18n/json_to_js.py index 44ab97882..f8c20f6af 100755 --- a/i18n/json_to_js.py +++ b/i18n/json_to_js.py @@ -3,7 +3,7 @@ # Converts .json files into .js files for use within Blockly apps. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. diff --git a/i18n/status.py b/i18n/status.py deleted file mode 100644 index 64fa98da1..000000000 --- a/i18n/status.py +++ /dev/null @@ -1,247 +0,0 @@ -#!/usr/bin/python - -# Gives the translation status of the specified apps and languages. -# -# Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ -# -# 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. - -"""Produce a table showing the translation status of each app by language. - -@author Ellen Spertus (ellen.spertus@gmail.com) -""" - -import argparse -import os -from common import read_json_file - -# Bogus language name representing all messages defined. -TOTAL = 'qqq' - -# List of key prefixes, which are app names, except for 'Apps', which -# has common messages. It is included here for convenience. -APPS = ['Apps', 'Code', 'Graph', 'Maze', 'Plane', 'Puzzle', 'Turtle'] - - -def get_prefix(s): - """Gets the portion of a string before the first period. - - Args: - s: A string. - - Returns: - The portion of the string before the first period, or the entire - string if it does not contain a period. - """ - return s.split('.')[0] - - -def get_prefix_count(prefix, arr): - """Counts how many strings in the array start with the prefix. - - Args: - prefix: The prefix string. - arr: An array of strings. - Returns: - The number of strings in arr starting with prefix. - """ - # This code was chosen for its elegance not its efficiency. - return len([elt for elt in arr if elt.startswith(prefix)]) - - -def output_as_html(messages, apps, verbose): - """Outputs the given prefix counts and percentages as HTML. - - Specifically, a sortable HTML table is produced, where the app names - are column headers, and one language is output per row. Entries - are color-coded based on the percent completeness. - - Args: - messages: A dictionary of dictionaries, where the outer keys are language - codes used by translatewiki (generally, ISO 639 language codes) or - the string TOTAL, used to indicate the total set of messages. The - inner dictionary makes message keys to values in that language. - apps: Apps to consider. - verbose: Whether to list missing keys. - """ - def generate_language_url(lang): - return 'https://translatewiki.net/wiki/Special:SupportedLanguages#' + lang - - def generate_number_as_percent(num, total, tag): - percent = num * 100 / total - if percent == 100: - color = 'green' - elif percent >= 90: - color = 'orange' - elif percent >= 60: - color = 'black' - else: - color = 'gray' - s = '{1} ({2}%)'.format(color, num, percent) - if verbose and percent < 100: - return '{1}'.format(tag, s) - else: - return s - - print('Blockly app translation status') - print("") - print('') - print('') - for lang in messages: - if lang != TOTAL: - print(''.format( - lang, generate_language_url(lang))) - for app in apps: - print '' - print('') - print('
Language' + - ''.join(apps) + '
{0}' - print(generate_number_as_percent( - get_prefix_count(app, messages[lang]), - get_prefix_count(app, messages[TOTAL]), - (lang + app))) - print '
ALL') - print(''.join([str(get_prefix_count(app, TOTAL)) for app in apps])) - print('
') - - if verbose: - for lang in messages: - if lang != TOTAL: - for app in apps: - if (get_prefix_count(app, messages[lang]) < - get_prefix_count(app, messages[TOTAL])): - print('
{1} ({0})'. - format(lang, app, generate_language_url(lang))) - print(' missing: ') - print(', '.join( - [key for key in messages[TOTAL] if - key.startswith(app) and key not in messages[lang]])) - print('

') - print('') - - -def output_as_text(messages, apps, verbose): - """Outputs the given prefix counts and percentages as text. - - Args: - messages: A dictionary of dictionaries, where the outer keys are language - codes used by translatewiki (generally, ISO 639 language codes) or - the string TOTAL, used to indicate the total set of messages. The - inner dictionary makes message keys to values in that language. - apps: Apps to consider. - verbose: Whether to list missing keys. - """ - def generate_number_as_percent(num, total): - return '{0} ({1}%)'.format(num, num * 100 / total) - MAX_WIDTH = len('999 (100%)') + 1 - FIELD_STRING = '{0: <' + str(MAX_WIDTH) + '}' - print(FIELD_STRING.format('Language') + ''.join( - [FIELD_STRING.format(app) for app in apps])) - print(('-' * (MAX_WIDTH - 1) + ' ') * (len(apps) + 1)) - for lang in messages: - if lang != TOTAL: - print(FIELD_STRING.format(lang) + - ''.join([FIELD_STRING.format(generate_number_as_percent( - get_prefix_count(app, messages[lang]), - get_prefix_count(app, messages[TOTAL]))) - for app in apps])) - print(FIELD_STRING.format(TOTAL) + - ''.join( - [FIELD_STRING.format(get_prefix_count(app, messages[TOTAL])) - for app in apps])) - if verbose: - for lang in messages: - if lang != TOTAL: - for app in apps: - missing = [key for key in messages[TOTAL] - if key.startswith(app) and key not in messages[lang]] - print('{0} {1}: Missing: {2}'.format( - app.upper(), lang, (', '.join(missing) if missing else 'none'))) - - -def output_as_csv(messages, apps): - """Outputs the given prefix counts and percentages as CSV. - - Args: - messages: A dictionary of dictionaries, where the outer keys are language - codes used by translatewiki (generally, ISO 639 language codes) or - the string TOTAL, used to indicate the total set of messages. The - inner dictionary makes message keys to values in that language. - apps: Apps to consider. - """ - # Header row. - print('Language, ' + ', ,'.join(apps)) - - # Total row. - # Put at top, rather than bottom, so it can be frozen. - print('TOTAL, ' + ', '.join( - [str(get_prefix_count(app, messages[TOTAL])) + ', ' - for app in apps])) - - # One line per language. - for lang in messages: - if lang != TOTAL: - print(lang + ', ' + ', '.join( - [str(get_prefix_count(app, messages[lang])) - + ', ' - + str((get_prefix_count(app, messages[lang]) * 1.0 / - get_prefix_count(app, messages[TOTAL]))) - for app in apps])) - - -def main(): - """Processes input files and outputs results in specified format. - """ - # Argument parsing. - parser = argparse.ArgumentParser( - description='Display translation status by app and language.') - parser.add_argument('--key_file', default='json' + os.path.sep + 'keys.json', - help='file with complete list of keys.') - parser.add_argument('--output', default='text', - choices=['text', 'html', 'csv'], - help='output format') - parser.add_argument('--verbose', action='store_true', default=False, - help='whether to indicate which messages were translated ' - '(only used in text and html output modes)') - parser.add_argument('--app', default=None, choices=APPS, - help='if set, only consider the specified app (prefix).') - parser.add_argument('lang_files', nargs='+', - help='names of JSON files to examine') - args = parser.parse_args() - apps = [args.app] if args.app else APPS - - - # Read in JSON files. - messages = {} # A dictionary of dictionaries. - messages[TOTAL] = read_json_file(args.key_file) - for lang_file in args.lang_files: - prefix = get_prefix(os.path.split(lang_file)[1]) - # Skip non-language files. - if prefix not in ['qqq', 'keys']: - messages[prefix] = read_json_file(lang_file) - - # Output results. - if args.output == 'text': - output_as_text(messages, apps, args.verbose) - elif args.output == 'html': - output_as_html(messages, apps, args.verbose) - elif args.output == 'csv': - output_as_csv(messages, apps) - else: - print('No output?!') - - -if __name__ == '__main__': - main() diff --git a/i18n/tests.py b/i18n/tests.py index f771a1ede..7e4fc49aa 100644 --- a/i18n/tests.py +++ b/i18n/tests.py @@ -4,7 +4,7 @@ # Tests of i18n scripts. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. diff --git a/i18n/xliff_to_json.py b/i18n/xliff_to_json.py index 4665173c0..b38b4d6ec 100755 --- a/i18n/xliff_to_json.py +++ b/i18n/xliff_to_json.py @@ -3,7 +3,7 @@ # Converts .xlf files into .json files for use at http://translatewiki.net. # # Copyright 2013 Google Inc. -# https://blockly.googlecode.com/ +# 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. diff --git a/media/anon.jpeg b/media/anon.jpeg deleted file mode 100644 index 5ac84edbe..000000000 Binary files a/media/anon.jpeg and /dev/null differ diff --git a/media/backpack-closed.png b/media/backpack-closed.png deleted file mode 100644 index 11f5733d1..000000000 Binary files a/media/backpack-closed.png and /dev/null differ diff --git a/media/backpack-empty.png b/media/backpack-empty.png deleted file mode 100644 index 2136f3506..000000000 Binary files a/media/backpack-empty.png and /dev/null differ diff --git a/media/backpack-full.png b/media/backpack-full.png deleted file mode 100644 index dbc51107d..000000000 Binary files a/media/backpack-full.png and /dev/null differ diff --git a/media/backpack-small.png b/media/backpack-small.png deleted file mode 100644 index b6633decf..000000000 Binary files a/media/backpack-small.png and /dev/null differ diff --git a/media/backpack-smaller.png b/media/backpack-smaller.png deleted file mode 100644 index d4acea061..000000000 Binary files a/media/backpack-smaller.png and /dev/null differ diff --git a/media/backpack.mp3 b/media/backpack.mp3 deleted file mode 100644 index a390e457d..000000000 Binary files a/media/backpack.mp3 and /dev/null differ diff --git a/media/backpack.ogg b/media/backpack.ogg deleted file mode 100644 index 46b449e36..000000000 Binary files a/media/backpack.ogg and /dev/null differ diff --git a/media/backpack.wav b/media/backpack.wav deleted file mode 100644 index 99fffe907..000000000 Binary files a/media/backpack.wav and /dev/null differ diff --git a/media/blockly.css b/media/blockly.css deleted file mode 100644 index 04b06388e..000000000 --- a/media/blockly.css +++ /dev/null @@ -1,255 +0,0 @@ -.blocklySvg { - background-color: #fff; -} -.blocklyWidgetDiv { - position: absolute; - display: none; - z-index: 999; -} -.blocklyDraggable { - cursor: url(handopen.cur) 8 5 , auto; -} -.blocklyResizeSE { - fill: #aaa; - cursor: se-resize; -} -.blocklyResizeSW { - fill: #aaa; - cursor: sw-resize; -} -.blocklyResizeLine { - stroke-width: 1; - stroke: #888; -} -.blocklyHighlightedConnectionPath { - stroke-width: 4px; - stroke: #fc3; - fill: none; -} -.blocklyPathLight { - fill: none; - stroke-width: 2; - stroke-linecap: round; -} -.blocklySelected>.blocklyPath { - stroke-width: 3px; - stroke: #fc3; -} -.blocklySelected>.blocklyPathLight { - display: none; -} -.blocklyDragging>.blocklyPath, .blocklyDragging>.blocklyPathLight { - fill-opacity: .8; - stroke-opacity: .8; -} -.blocklyDragging>.blocklyPathDark { - display: none; -} -.blocklyDisabled>.blocklyPath { - fill-opacity: .5; - stroke-opacity: .5; -} -.blocklyDisabled>.blocklyPathLight, .blocklyDisabled>.blocklyPathDark { - display: none; -} -.blocklyText { - cursor: default; - font-family: sans-serif; - font-size: 11pt; - fill: #fff; -} -.blocklyNonEditableText>text { - pointer-events: none; -} -.blocklyNonEditableText>rect, .blocklyEditableText>rect { - fill: #fff; - fill-opacity: .6; -} -.blocklyNonEditableText>text, .blocklyEditableText>text { - fill: #000; -} -.blocklyEditableText:hover>rect { - stroke-width: 2; - stroke: #fff; -} -.blocklySvg text { - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - cursor: inherit; -} -.blocklyHidden { - display: none; -} -.blocklyTooltipBackground { - fill: #ffffc7; - stroke-width: 1px; - stroke: #d8d8d8; -} -.blocklyTooltipShadow, .blocklyContextMenuShadow, .blocklyDropdownMenuShadow { - fill: #bbb; - filter: url(#blocklyShadowFilter); -} -.blocklyTooltipText { - font-family: sans-serif; - font-size: 9pt; - fill: #000; -} -.blocklyIconShield { - cursor: default; - fill: #00c; - stroke-width: 1px; - stroke: #ccc; -} -.blocklyIconGroup:hover>.blocklyIconShield { - fill: #00f; - stroke: #fff; -} -.blocklyIconGroup:hover>.blocklyIconMark { - fill: #fff; -} -.blocklyIconMark { - cursor: default !important; - font-family: sans-serif; - font-size: 9pt; - font-weight: bold; - fill: #ccc; - text-anchor: middle; -} -.blocklyMinimalBody { - margin: 0; - padding: 0; -} -.blocklyCommentTextarea { - margin: 0; - padding: 2px; - border: 0; - resize: none; - background-color: #ffc; -} -.blocklyHtmlInput { - font-family: sans-serif; - font-size: 11pt; - border: none; - outline: none; -} -.blocklyContextMenuBackground, .blocklyMutatorBackground { - fill: #fff; - stroke-width: 1; - stroke: #ddd; -} -.blocklyContextMenuOptions>.blocklyMenuDiv, .blocklyContextMenuOptions>.blocklyMenuDivDisabled, .blocklyDropdownMenuOptions>.blocklyMenuDiv { - fill: #fff; -} -.blocklyToolboxOptions>.blocklyMenuDiv { - fill: #ddd; -} -.blocklyToolboxOptions>.blocklyMenuDiv:hover { - fill: #e4e4e4; -} -.blocklyContextMenuOptions>.blocklyMenuDiv:hover>rect, .blocklyDropdownMenuOptions>.blocklyMenuDiv:hover>rect, .blocklyMenuSelected>rect { - fill: #57e; -} -.blocklyMenuText { - cursor: default !important; - font-family: sans-serif; - font-size: 15px; - fill: #000; -} -.blocklyContextMenuOptions>.blocklyMenuDiv:hover>.blocklyMenuText, .blocklyDropdownMenuOptions>.blocklyMenuDiv:hover>.blocklyMenuText, .blocklyMenuSelected>.blocklyMenuText { - fill: #fff; -} -.blocklyMenuDivDisabled>.blocklyMenuText { - fill: #ccc; -} -.blocklyToolboxBackground { - fill: #ddd; -} -.blocklyFlyoutBackground { - fill: #ddd; - fill-opacity: .8; -} -.blocklyColourBackground { - fill: #666; -} -.blocklyScrollbarBackground { - fill: #fff; - stroke-width: 1; - stroke: #e4e4e4; -} -.blocklyScrollbarKnob { - fill: #ccc; -} -.blocklyScrollbarBackground:hover+.blocklyScrollbarKnob, .blocklyScrollbarKnob:hover { - fill: #bbb; -} -.blocklyInvalidInput { - background: #faa; -} -.goog-palette { - outline: none; - cursor: default; -} -.goog-palette-table { - border: 1px solid #666; - border-collapse: collapse; -} -.goog-palette-cell { - height: 13px; - width: 15px; - margin: 0; - border: 0; - text-align: center; - vertical-align: middle; - border-right: 1px solid #666; - font-size: 1px; -} -.goog-palette-colorswatch { - position: relative; - height: 13px; - width: 15px; - border: 1px solid #666; -} -.goog-palette-cell-hover .goog-palette-colorswatch { - border: 1px solid #fff; -} -.goog-palette-cell-selected .goog-palette-colorswatch { - border: 1px solid #000; - color: #fff; -} - - -.blocklyErrorIconShield { - cursor: default; - fill: #f00; - stroke-width: 1px; - stroke: #ccc; -} -.blocklyIconGroup:hover>.blocklyErrorIconShield { - fill: #f00; - stroke: #fff; -} - -.blocklyWarningIconShield { - cursor: default; - fill: #ff5; - stroke-width: 1px; - stroke: #555; -} -.blocklyIconGroup:hover>.blocklyWarningIconShield { - fill: #ff0; - stroke: #000; -} - -.blocklyWarningIconMark { - cursor: default !important; - font-family: sans-serif; - font-size: 9pt; - font-weight: bold; - fill: #555; - text-anchor: middle; -} - -.blocklyIconGroup:hover>.blocklyWarningIconMark { - fill: #000; -} diff --git a/media/progress.gif b/media/progress.gif deleted file mode 100644 index e97adb875..000000000 Binary files a/media/progress.gif and /dev/null differ