├── .appveyor.yml ├── .coveragerc ├── .gitignore ├── .gitmodules ├── .travis.yml ├── LICENSE ├── README.md ├── ardublockly ├── ardublockly.css ├── ardublockly.js ├── ardublockly_blockly.js ├── ardublockly_design.js ├── ardublockly_desktop.js ├── ardublockly_lang.js ├── ardublockly_toolbox.js ├── ardublocklyserver_ajax.js ├── classic │ ├── ardublockly_classic.css │ ├── ardublockly_classic.js │ ├── icons.png │ ├── index.html │ ├── settings.css │ ├── settings.html │ └── settings.js ├── font │ ├── droid │ │ ├── DroidSansMono.ttf │ │ ├── NOTICE │ │ └── README.txt │ ├── material-design-icons │ │ ├── LICENSE.txt │ │ ├── Material-Design-Icons.eot │ │ ├── Material-Design-Icons.svg │ │ ├── Material-Design-Icons.ttf │ │ ├── Material-Design-Icons.woff │ │ └── Material-Design-Icons.woff2 │ └── roboto │ │ ├── Roboto-Bold.eot │ │ ├── Roboto-Bold.ttf │ │ ├── Roboto-Bold.woff │ │ ├── Roboto-Bold.woff2 │ │ ├── Roboto-Light.eot │ │ ├── Roboto-Light.ttf │ │ ├── Roboto-Light.woff │ │ ├── Roboto-Light.woff2 │ │ ├── Roboto-Medium.eot │ │ ├── Roboto-Medium.ttf │ │ ├── Roboto-Medium.woff │ │ ├── Roboto-Medium.woff2 │ │ ├── Roboto-Regular.eot │ │ ├── Roboto-Regular.ttf │ │ ├── Roboto-Regular.woff │ │ ├── Roboto-Regular.woff2 │ │ ├── Roboto-Thin.eot │ │ ├── Roboto-Thin.ttf │ │ ├── Roboto-Thin.woff │ │ └── Roboto-Thin.woff2 ├── img │ ├── ardublockly_splash.png │ ├── favicon.ico │ └── sidenav_header.png ├── index.html ├── js_libs │ ├── FileSaver.min.js │ ├── FileSaver_LICENSE.md │ ├── diff.js │ ├── diff_LICENSE │ ├── hammer.min.js │ ├── jquery-2.1.3.min.js │ └── jquery_LICENSE ├── materialize │ ├── LICENSE │ ├── README.md │ ├── materialize.css │ └── materialize.js ├── msg │ ├── en.js │ ├── es.js │ ├── fr.js │ ├── it.js │ ├── nl.js │ ├── pt.js │ └── ru.js └── prettify │ ├── arduino.css │ ├── hemisu-light.css │ ├── prettify.css │ ├── prettify.js │ ├── run_prettify.js │ └── tomorrow.css ├── ardublocklyserver ├── __init__.py ├── actions.py ├── compilersettings.py ├── local-packages │ ├── bottle-info │ │ ├── AUTHORS │ │ ├── LICENSE │ │ ├── README.rst │ │ └── version_info.md │ ├── bottle.py │ ├── configparser │ │ ├── README.md │ │ ├── __init__.py │ │ └── helpers.py │ ├── serial │ │ ├── CHANGES.rst │ │ ├── LICENSE.txt │ │ ├── README.rst │ │ ├── __init__.py │ │ ├── rfc2217.py │ │ ├── rs485.py │ │ ├── serialcli.py │ │ ├── serialjava.py │ │ ├── serialposix.py │ │ ├── serialutil.py │ │ ├── serialwin32.py │ │ ├── threaded │ │ │ └── __init__.py │ │ ├── tools │ │ │ ├── __init__.py │ │ │ ├── hexlify_codec.py │ │ │ ├── list_ports.py │ │ │ ├── list_ports_common.py │ │ │ ├── list_ports_linux.py │ │ │ ├── list_ports_osx.py │ │ │ ├── list_ports_posix.py │ │ │ ├── list_ports_windows.py │ │ │ └── miniterm.py │ │ ├── urlhandler │ │ │ ├── __init__.py │ │ │ ├── protocol_alt.py │ │ │ ├── protocol_hwgrep.py │ │ │ ├── protocol_loop.py │ │ │ ├── protocol_rfc2217.py │ │ │ ├── protocol_socket.py │ │ │ └── protocol_spy.py │ │ ├── version_info.md │ │ └── win32.py │ ├── six-info │ │ ├── LICENSE │ │ └── README │ ├── six.py │ └── waitress │ │ ├── CHANGES.txt │ │ ├── CONTRIBUTORS.txt │ │ ├── COPYRIGHT.txt │ │ ├── HISTORY.txt │ │ ├── LICENSE.txt │ │ ├── README.rst │ │ ├── __init__.py │ │ ├── adjustments.py │ │ ├── buffers.py │ │ ├── channel.py │ │ ├── compat.py │ │ ├── parser.py │ │ ├── receiver.py │ │ ├── runner.py │ │ ├── server.py │ │ ├── task.py │ │ ├── trigger.py │ │ ├── utilities.py │ │ └── version_info.md ├── serialport.py ├── server.py ├── sketchcreator.py └── tests │ ├── actions_test.py │ ├── compilersettings_test.py │ ├── requirements.txt │ ├── run_all.py │ ├── server_test.py │ └── sketchcreator_test.py ├── blockly ├── .gitignore ├── .jshintignore ├── LICENSE ├── README.md ├── appengine │ ├── README.txt │ ├── app.yaml │ ├── apple-touch-icon.png │ ├── favicon.ico │ ├── index.yaml │ ├── index_redirect.py │ ├── redirect.html │ ├── robots.txt │ ├── storage.js │ └── storage.py ├── arduino_compressed.js ├── blockly_compressed.js ├── blockly_uncompressed.js ├── blocks │ ├── arduino │ │ ├── io.js │ │ ├── logo.js │ │ ├── map.js │ │ ├── procedures.js │ │ ├── serial.js │ │ ├── servo.js │ │ ├── spi.js │ │ ├── stepper.js │ │ ├── time.js │ │ ├── tone.js │ │ └── variables.js │ ├── colour.js │ ├── lists.js │ ├── logic.js │ ├── loops.js │ ├── math.js │ ├── procedures.js │ ├── text.js │ └── variables.js ├── blocks_compressed.js ├── build.py ├── core │ ├── block.js │ ├── block_render_svg.js │ ├── block_svg.js │ ├── blockly.js │ ├── blocks.js │ ├── bubble.js │ ├── comment.js │ ├── connection.js │ ├── connection_db.js │ ├── constants.js │ ├── contextmenu.js │ ├── css.js │ ├── events.js │ ├── field.js │ ├── field_angle.js │ ├── field_checkbox.js │ ├── field_colour.js │ ├── field_date.js │ ├── field_dropdown.js │ ├── field_image.js │ ├── field_instance.js │ ├── field_label.js │ ├── field_number.js │ ├── field_textinput.js │ ├── field_variable.js │ ├── flyout.js │ ├── generator.js │ ├── icon.js │ ├── inject.js │ ├── input.js │ ├── instances.js │ ├── msg.js │ ├── mutator.js │ ├── names.js │ ├── options.js │ ├── procedures.js │ ├── rendered_connection.js │ ├── scrollbar.js │ ├── static_typing.js │ ├── toolbox.js │ ├── tooltip.js │ ├── trashcan.js │ ├── type.js │ ├── types.js │ ├── utils.js │ ├── variables.js │ ├── warning.js │ ├── widgetdiv.js │ ├── workspace.js │ ├── workspace_svg.js │ ├── xml.js │ └── zoom_controls.js ├── dart_compressed.js ├── demos │ ├── blockfactory │ │ ├── blocks.js │ │ ├── factory.js │ │ ├── icon.png │ │ ├── index.html │ │ └── link.png │ ├── code │ │ ├── code.js │ │ ├── icon.png │ │ ├── icons.png │ │ ├── index.html │ │ ├── msg │ │ │ ├── ar.js │ │ │ ├── be-tarask.js │ │ │ ├── br.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ ├── fr.js │ │ │ ├── he.js │ │ │ ├── hrx.js │ │ │ ├── hu.js │ │ │ ├── ia.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ko.js │ │ │ ├── mk.js │ │ │ ├── ms.js │ │ │ ├── nb.js │ │ │ ├── nl.js │ │ │ ├── oc.js │ │ │ ├── pl.js │ │ │ ├── pms.js │ │ │ ├── pt-br.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sc.js │ │ │ ├── sk.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── ta.js │ │ │ ├── th.js │ │ │ ├── tlh.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-hans.js │ │ │ └── zh-hant.js │ │ └── style.css │ ├── fixed │ │ ├── icon.png │ │ └── index.html │ ├── generator │ │ ├── icon.png │ │ └── index.html │ ├── graph │ │ ├── icon.png │ │ └── index.html │ ├── headless │ │ ├── icon.png │ │ └── index.html │ ├── index.html │ ├── interpreter │ │ ├── acorn_interpreter.js │ │ ├── icon.png │ │ └── index.html │ ├── maxBlocks │ │ ├── icon.png │ │ └── index.html │ ├── mirror │ │ ├── icon.png │ │ └── index.html │ ├── plane │ │ ├── README.txt │ │ ├── blocks.js │ │ ├── generated │ │ │ ├── ar.js │ │ │ ├── be-tarask.js │ │ │ ├── br.js │ │ │ ├── ca.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── fa.js │ │ │ ├── fr.js │ │ │ ├── he.js │ │ │ ├── hrx.js │ │ │ ├── hu.js │ │ │ ├── ia.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ko.js │ │ │ ├── ms.js │ │ │ ├── nb.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── pms.js │ │ │ ├── pt-br.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sc.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-hans.js │ │ │ └── zh-hant.js │ │ ├── icon.png │ │ ├── index.html │ │ ├── plane.js │ │ ├── slider.js │ │ ├── soy │ │ │ ├── COPYING │ │ │ ├── README │ │ │ ├── SoyMsgExtractor.jar │ │ │ ├── SoyToJsSrcCompiler.jar │ │ │ └── soyutils.js │ │ ├── style.css │ │ ├── template.soy │ │ └── xlf │ │ │ ├── extracted_msgs.xlf │ │ │ ├── translated_msgs_ar.xlf │ │ │ ├── translated_msgs_be-tarask.xlf │ │ │ ├── translated_msgs_br.xlf │ │ │ ├── translated_msgs_ca.xlf │ │ │ ├── translated_msgs_da.xlf │ │ │ ├── translated_msgs_de.xlf │ │ │ ├── translated_msgs_el.xlf │ │ │ ├── translated_msgs_en.xlf │ │ │ ├── translated_msgs_es.xlf │ │ │ ├── translated_msgs_fa.xlf │ │ │ ├── translated_msgs_fr.xlf │ │ │ ├── translated_msgs_he.xlf │ │ │ ├── translated_msgs_hrx.xlf │ │ │ ├── translated_msgs_hu.xlf │ │ │ ├── translated_msgs_ia.xlf │ │ │ ├── translated_msgs_is.xlf │ │ │ ├── translated_msgs_it.xlf │ │ │ ├── translated_msgs_ja.xlf │ │ │ ├── translated_msgs_ko.xlf │ │ │ ├── translated_msgs_ms.xlf │ │ │ ├── translated_msgs_nb.xlf │ │ │ ├── translated_msgs_nl.xlf │ │ │ ├── translated_msgs_pl.xlf │ │ │ ├── translated_msgs_pms.xlf │ │ │ ├── translated_msgs_pt-br.xlf │ │ │ ├── translated_msgs_ro.xlf │ │ │ ├── translated_msgs_ru.xlf │ │ │ ├── translated_msgs_sc.xlf │ │ │ ├── translated_msgs_sv.xlf │ │ │ ├── translated_msgs_th.xlf │ │ │ ├── translated_msgs_tr.xlf │ │ │ ├── translated_msgs_uk.xlf │ │ │ ├── translated_msgs_vi.xlf │ │ │ ├── translated_msgs_zh-hans.xlf │ │ │ └── translated_msgs_zh-hant.xlf │ ├── prettify.css │ ├── prettify.js │ ├── resizable │ │ ├── icon.png │ │ ├── index.html │ │ └── overlay.html │ ├── rtl │ │ ├── icon.png │ │ └── index.html │ ├── storage │ │ ├── icon.png │ │ └── index.html │ └── toolbox │ │ ├── icon.png │ │ └── index.html ├── generators │ ├── arduino.js │ ├── arduino │ │ ├── boards.js │ │ ├── colour.js │ │ ├── io.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── map.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── serial.js │ │ ├── servo.js │ │ ├── spi.js │ │ ├── stepper.js │ │ ├── text.js │ │ ├── time.js │ │ ├── tone.js │ │ └── variables.js │ ├── dart.js │ ├── dart │ │ ├── colour.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── text.js │ │ └── variables.js │ ├── javascript.js │ ├── javascript │ │ ├── colour.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── text.js │ │ └── variables.js │ ├── lua.js │ ├── lua │ │ ├── colour.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── text.js │ │ └── variables.js │ ├── php.js │ ├── php │ │ ├── colour.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── text.js │ │ └── variables.js │ ├── python.js │ └── python │ │ ├── colour.js │ │ ├── lists.js │ │ ├── logic.js │ │ ├── loops.js │ │ ├── math.js │ │ ├── procedures.js │ │ ├── text.js │ │ └── variables.js ├── i18n │ ├── common.py │ ├── create_messages.py │ ├── dedup_json.py │ ├── js_to_json.py │ ├── json_to_js.py │ ├── tests.py │ └── xliff_to_json.py ├── javascript_compressed.js ├── lua_compressed.js ├── media │ ├── 1x1.gif │ ├── click.mp3 │ ├── click.ogg │ ├── click.wav │ ├── delete.mp3 │ ├── delete.ogg │ ├── delete.wav │ ├── disconnect.mp3 │ ├── disconnect.ogg │ ├── disconnect.wav │ ├── handclosed.cur │ ├── handdelete.cur │ ├── handopen.cur │ ├── quote0.png │ ├── quote1.png │ ├── sprites.png │ └── sprites.svg ├── msg │ ├── js │ │ ├── ar.js │ │ ├── az.js │ │ ├── ba.js │ │ ├── bcc.js │ │ ├── be-tarask.js │ │ ├── bg.js │ │ ├── bn.js │ │ ├── br.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── da.js │ │ ├── de.js │ │ ├── el.js │ │ ├── en.js │ │ ├── es.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fr.js │ │ ├── he.js │ │ ├── hi.js │ │ ├── hrx.js │ │ ├── hu.js │ │ ├── ia.js │ │ ├── id.js │ │ ├── is.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ko.js │ │ ├── lb.js │ │ ├── lki.js │ │ ├── lrc.js │ │ ├── lt.js │ │ ├── mk.js │ │ ├── ms.js │ │ ├── nb.js │ │ ├── nl.js │ │ ├── oc.js │ │ ├── pl.js │ │ ├── pms.js │ │ ├── pt-br.js │ │ ├── pt.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── sc.js │ │ ├── sd.js │ │ ├── shn.js │ │ ├── sk.js │ │ ├── sl.js │ │ ├── sq.js │ │ ├── sr.js │ │ ├── sv.js │ │ ├── ta.js │ │ ├── tcy.js │ │ ├── th.js │ │ ├── tl.js │ │ ├── tlh.js │ │ ├── tr.js │ │ ├── uk.js │ │ ├── vi.js │ │ ├── zh-hans.js │ │ └── zh-hant.js │ ├── json │ │ ├── ar.json │ │ ├── az.json │ │ ├── ba.json │ │ ├── bcc.json │ │ ├── be-tarask.json │ │ ├── bg.json │ │ ├── bn.json │ │ ├── br.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── da.json │ │ ├── de.json │ │ ├── el.json │ │ ├── en.json │ │ ├── en_ardublockly.json │ │ ├── es.json │ │ ├── es_ardublockly.json │ │ ├── fa.json │ │ ├── fi.json │ │ ├── fr.json │ │ ├── fr_ardublockly.json │ │ ├── he.json │ │ ├── hi.json │ │ ├── hrx.json │ │ ├── hu.json │ │ ├── ia.json │ │ ├── id.json │ │ ├── is.json │ │ ├── it.json │ │ ├── it_ardublockly.json │ │ ├── ja.json │ │ ├── ko.json │ │ ├── lb.json │ │ ├── lki.json │ │ ├── lrc.json │ │ ├── lt.json │ │ ├── mk.json │ │ ├── ms.json │ │ ├── nb.json │ │ ├── nl.json │ │ ├── nl_ardublockly.json │ │ ├── oc.json │ │ ├── pl.json │ │ ├── pms.json │ │ ├── pt-br.json │ │ ├── pt.json │ │ ├── qqq.json │ │ ├── qqq_ardublockly.json │ │ ├── ro.json │ │ ├── ru.json │ │ ├── ru_ardublockly.json │ │ ├── sc.json │ │ ├── sd.json │ │ ├── shn.json │ │ ├── sk.json │ │ ├── sl.json │ │ ├── sq.json │ │ ├── sr.json │ │ ├── sv.json │ │ ├── synonyms.json │ │ ├── synonyms_ardublockly.json │ │ ├── ta.json │ │ ├── tcy.json │ │ ├── th.json │ │ ├── tl.json │ │ ├── tlh.json │ │ ├── tr.json │ │ ├── uk.json │ │ ├── vi.json │ │ ├── zh-hans.json │ │ └── zh-hant.json │ ├── messages.js │ └── messages_ardublockly.js ├── package.json ├── php_compressed.js ├── python_compressed.js └── tests │ ├── generators │ ├── colour.xml │ ├── functions.xml │ ├── index.html │ ├── lists.xml │ ├── logic.xml │ ├── loops1.xml │ ├── loops2.xml │ ├── loops3.xml │ ├── math.xml │ ├── text.xml │ ├── unittest.js │ ├── unittest_arduino.js │ ├── unittest_dart.js │ ├── unittest_javascript.js │ ├── unittest_lua.js │ ├── unittest_php.js │ ├── unittest_python.js │ └── variables.xml │ ├── jsunit │ ├── blockly_test.js │ ├── connection_db_test.js │ ├── connection_test.js │ ├── db_test.js │ ├── generator_test.js │ ├── index.html │ ├── names_test.js │ ├── workspace_test.js │ └── xml_test.js │ ├── multi_playground.html │ └── playground.html ├── blocks ├── README.md ├── blocks_data.json ├── grove │ ├── README.md │ ├── blocks.js │ ├── blocks_config.json │ ├── examples │ │ ├── joystick_lcd.xml │ │ ├── joystick_servo.xml │ │ ├── pir_led.xml │ │ └── temperature_serial.xml │ ├── extensions.js │ ├── generator_arduino.js │ ├── img │ │ ├── button.png │ │ ├── joystick.png │ │ ├── lcd_rgb.png │ │ ├── led.png │ │ ├── pir.png │ │ └── temperature.png │ └── msg │ │ ├── lang │ │ ├── en.js │ │ └── es.js │ │ └── messages.js ├── test │ ├── blocks.js │ ├── blocks_config.json │ ├── generator_arduino.js │ └── msg │ │ ├── lang │ │ ├── en.js │ │ └── es.js │ │ └── messages.js └── user │ └── README.md ├── circle.yml ├── examples ├── blink.xml ├── serial_print_ascii.xml ├── serial_repeat_game.xml ├── servo_knob.xml ├── stepper_knob.xml └── traffic_light.xml ├── package ├── README.md ├── ardublocklydocs │ └── mkdocs.yml ├── build_docs.py ├── build_pyinstaller.py ├── electron │ ├── .gitignore │ ├── README.md │ ├── app │ │ ├── appmenu.js │ │ ├── helpers │ │ │ ├── context_menu.js │ │ │ ├── external_links.js │ │ │ └── window.js │ │ ├── main.js │ │ ├── package.json │ │ ├── projectlocator.js │ │ └── servermgr.js │ ├── config │ │ ├── env_development.json │ │ └── env_production.json │ ├── gulpfile.js │ ├── package.json │ ├── resources │ │ ├── icon.png │ │ ├── linux │ │ │ ├── DEBIAN │ │ │ │ └── control │ │ │ └── app.desktop │ │ ├── osx │ │ │ ├── Info.plist │ │ │ ├── appdmg.json │ │ │ ├── dmg-background.png │ │ │ ├── dmg-background@2x.png │ │ │ ├── dmg-icon.icns │ │ │ ├── helper_apps │ │ │ │ ├── Info EH.plist │ │ │ │ ├── Info NP.plist │ │ │ │ └── Info.plist │ │ │ └── icon.icns │ │ └── windows │ │ │ ├── icon.ico │ │ │ ├── installer.nsi │ │ │ ├── setup-banner.bmp │ │ │ └── setup-icon.ico │ └── tasks │ │ ├── build │ │ ├── build.js │ │ └── bundle.js │ │ ├── release │ │ ├── linux.js │ │ ├── osx.js │ │ ├── release.js │ │ └── windows.js │ │ ├── start.js │ │ └── utils.js ├── pack_ardublockly.py ├── pyinstaller.spec ├── requirements.txt └── wxcef_build │ ├── .appveyor_wxcef.yml │ ├── .travis_wxcef.yml │ ├── README.md │ ├── build_pyinstaller_wxcef.py │ ├── build_windows_wxcef.py │ ├── circle_wxcef.yml │ ├── pack_ardublockly_wxcef.py │ ├── pyinstaller_wxcef.spec │ └── start_cef.py └── start.py /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = False 3 | cover_pylib = False 4 | source = ardublocklyserver/ 5 | omit = 6 | ardublocklyserver/tests/* 7 | ardublocklyserver/local-packages/* 8 | ardublocklyserver/pyserialports/* 9 | 10 | [report] 11 | show_missing = True 12 | skip_covered = False 13 | exclude_lines = 14 | # Don't complain if non-runnable code isn't run: 15 | if 0: 16 | if __name__ == .__main__.: 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ###################### 2 | # OS generated files # 3 | ###################### 4 | .DS_Store 5 | .DS_Store? 6 | ._* 7 | .Spotlight-V100 8 | .Trashes 9 | Icon? 10 | ehthumbs.db 11 | Thumbs.db 12 | Desktop.ini 13 | $RECYCLE.BIN/ 14 | 15 | ######## 16 | # IDEs # 17 | ######## 18 | *.komodoproject 19 | .idea/ 20 | npp.session 21 | .editorconfig 22 | 23 | ########## 24 | # Python # 25 | ########## 26 | # Byte-compiled / optimized / DLL files 27 | __pycache__/ 28 | *.py[cod] 29 | 30 | # C extensions 31 | *.so 32 | 33 | # Distribution / packaging 34 | .Python 35 | env/ 36 | build/ 37 | develop-eggs/ 38 | dist/ 39 | eggs/ 40 | lib/ 41 | lib64/ 42 | parts/ 43 | sdist/ 44 | var/ 45 | *.egg-info/ 46 | .installed.cfg 47 | *.egg 48 | 49 | # Installer logs 50 | pip-log.txt 51 | pip-delete-this-directory.txt 52 | 53 | # Unit test / coverage reports 54 | htmlcov/ 55 | .tox/ 56 | .coverage 57 | .cache 58 | nosetests.xml 59 | coverage.xml 60 | 61 | # Translations 62 | *.mo 63 | *.pot 64 | 65 | # Sphinx documentation 66 | docs/_build/ 67 | 68 | ################### 69 | # Node / electron # 70 | ################### 71 | # Comprehensive gitignore file in /package/electron directory 72 | # due to build cwd, log might placed in root directory 73 | npm-debug.log* 74 | 75 | #################### 76 | # Project specific # 77 | #################### 78 | # Arduino sketch generated by the Python server 79 | ArdublocklySketch.ino 80 | 81 | # Server App settings file generated by the Python server 82 | ServerCompilerSettings.ini 83 | 84 | # Desktop application log file 85 | ardublockly.log 86 | ardublockly2.log 87 | 88 | # Anything starting with this is created as a unit/module testing temporal file 89 | TestTemp_* 90 | 91 | # Miscellaneous files that should not get revisioned 92 | /ignore 93 | 94 | # Packaged python build folders and files 95 | /build 96 | /upload 97 | /releases 98 | /arduexec 99 | ardublockly_run.* 100 | 101 | # The documentation is built with the GitHub wiki data 102 | /docs 103 | package/ardublocklydocs/site 104 | 105 | # Materialize uncompress source 106 | /ardublockly/materialize/materialize_uncompressed.css 107 | /ardublockly/materialize/materialize_uncompressed.js 108 | 109 | # The electron package needs the build folder (to be changed in the near future) 110 | !/package/electron/tasks/build/ 111 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "closure-library"] 2 | path = closure-library 3 | url = https://github.com/google/closure-library.git 4 | [submodule "package/ardublocklydocs/ardublockly.wiki"] 5 | path = package/ardublocklydocs/ardublockly.wiki 6 | url = https://github.com/carlosperate/ardublockly.wiki.git 7 | -------------------------------------------------------------------------------- /ardublockly/classic/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/classic/icons.png -------------------------------------------------------------------------------- /ardublockly/classic/settings.css: -------------------------------------------------------------------------------- 1 | /* General HTML */ 2 | html { 3 | height: 100%; 4 | } 5 | body { 6 | background-color: #fff; 7 | font-family: sans-serif; 8 | margin: 0; 9 | padding: 0; 10 | border: 0; 11 | height: 100%; 12 | } 13 | h1 { 14 | font-weight: normal; 15 | font-size: 140%; 16 | margin: 0px; 17 | } 18 | select, 19 | input { 20 | box-sizing: border-box; 21 | -moz-box-sizing: border-box; 22 | -webkit-box-sizing: border-box; 23 | } 24 | 25 | /* Table */ 26 | .settings_wrapper { 27 | height: -moz-calc(100% - 40px); 28 | width: -moz-calc(100% - 40px); 29 | /* WebKit */ 30 | height: -webkit-calc(100% - 40px); 31 | width: -webkit-calc(100% - 40px); 32 | /* Opera */ 33 | height: -o-calc(100% - 40px); 34 | width: -o-calc(100% - 40px); 35 | /* Standard */ 36 | height: calc(100% - 40px); 37 | width: calc(100% - 40px); 38 | padding: 20px; 39 | } 40 | 41 | .settings_div { 42 | margin: 24px 0px; 43 | width: 100%; 44 | } 45 | 46 | .settings_div input, 47 | .settings_div select { 48 | width: 100%; 49 | } 50 | -------------------------------------------------------------------------------- /ardublockly/classic/settings.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ardublockly: Arduino Code Settings 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

Settings

15 |
16 |
17 | 18 |
19 |
20 |
21 | 22 |
23 |
24 |
25 | 30 |
31 |
32 |
33 | 36 |
37 |
38 |
39 | 43 |
44 |
45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /ardublockly/font/droid/DroidSansMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/droid/DroidSansMono.ttf -------------------------------------------------------------------------------- /ardublockly/font/droid/README.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2008 The Android Open Source Project 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | ########## 16 | 17 | This directory contains the fonts for the platform. They are licensed 18 | under the Apache 2 license. 19 | -------------------------------------------------------------------------------- /ardublockly/font/material-design-icons/Material-Design-Icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/material-design-icons/Material-Design-Icons.eot -------------------------------------------------------------------------------- /ardublockly/font/material-design-icons/Material-Design-Icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/material-design-icons/Material-Design-Icons.ttf -------------------------------------------------------------------------------- /ardublockly/font/material-design-icons/Material-Design-Icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/material-design-icons/Material-Design-Icons.woff -------------------------------------------------------------------------------- /ardublockly/font/material-design-icons/Material-Design-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/material-design-icons/Material-Design-Icons.woff2 -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /ardublockly/font/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/font/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /ardublockly/img/ardublockly_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/img/ardublockly_splash.png -------------------------------------------------------------------------------- /ardublockly/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/img/favicon.ico -------------------------------------------------------------------------------- /ardublockly/img/sidenav_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/img/sidenav_header.png -------------------------------------------------------------------------------- /ardublockly/js_libs/FileSaver_LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright © 2015 [Eli Grey][1]. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | 9 | [1]: http://eligrey.com 10 | -------------------------------------------------------------------------------- /ardublockly/js_libs/diff_LICENSE: -------------------------------------------------------------------------------- 1 | Software License Agreement (BSD License) 2 | 3 | Copyright (c) 2009-2011, Kevin Decker 4 | 5 | All rights reserved. 6 | 7 | Redistribution and use of this software in source and binary forms, with or without modification, 8 | are permitted provided that the following conditions are met: 9 | 10 | * Redistributions of source code must retain the above 11 | copyright notice, this list of conditions and the 12 | following disclaimer. 13 | 14 | * Redistributions in binary form must reproduce the above 15 | copyright notice, this list of conditions and the 16 | following disclaimer in the documentation and/or other 17 | materials provided with the distribution. 18 | 19 | * Neither the name of Kevin Decker nor the names of its 20 | contributors may be used to endorse or promote products 21 | derived from this software without specific prior 22 | written permission. 23 | 24 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 25 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 26 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 27 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 30 | IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31 | OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /ardublockly/js_libs/jquery_LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2005, 2014 jQuery Foundation, Inc. and other contributors 4 | http://jquery.org/license 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. -------------------------------------------------------------------------------- /ardublockly/materialize/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Materialize 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /ardublockly/materialize/README.md: -------------------------------------------------------------------------------- 1 | ## Materialize CSS Framework 2 | 3 | This folder contains the CSS and Javascript for the Materialize CSS framework. 4 | 5 | https://github.com/Dogfalo/materialize 6 | 7 | Current version used: >0.97.5 [@09cd7116129c3f3b9879c24f7ff688e8c7da18f2 commit](https://github.com/Dogfalo/materialize/commit/09cd7116129c3f3b9879c24f7ff688e8c7da18f2) 8 | 9 | There has been a patch added to the minified javascript file. The issue is described in https://github.com/Dogfalo/materialize/issues/1647 and fixed by un-merged PR https://github.com/Dogfalo/materialize/pull/1691 . 10 | -------------------------------------------------------------------------------- /ardublockly/msg/fr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublockly/msg/fr.js -------------------------------------------------------------------------------- /ardublockly/prettify/arduino.css: -------------------------------------------------------------------------------- 1 | /* Arduino There *. 2 | /* Based on Tomorrow Theme from https://github.com/chriskempson/tomorrow-theme */ 3 | .prettyprint { 4 | background: white; 5 | font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace; 6 | font-size: 12px; 7 | line-height: 1.5; 8 | border: 1px solid #ccc; 9 | padding: 10px; 10 | } 11 | 12 | .pln { 13 | color: #4d4d4c; 14 | } 15 | 16 | @media screen { 17 | .str { 18 | color: #718c00; 19 | } 20 | .kwd { 21 | color: #5E6D03; 22 | } 23 | .com { 24 | color: #8e908c; 25 | } 26 | .typ { 27 | color: #00979C; 28 | } 29 | .lit { 30 | color: #f5871f; 31 | } 32 | .pun { 33 | color: #4d4d4c; 34 | } 35 | .opn { 36 | color: #4d4d4c; 37 | } 38 | .clo { 39 | color: #4d4d4c; 40 | } 41 | .tag { 42 | color: #c82829; 43 | } 44 | .atn { 45 | color: #f5871f; 46 | } 47 | .atv { 48 | color: #3e999f; 49 | } 50 | .dec { 51 | color: #f5871f; 52 | } 53 | .var { 54 | color: #c82829; 55 | } 56 | .fun { 57 | color: #4271ae; 58 | } 59 | } 60 | @media print, projection { 61 | .str { 62 | color: #006600; 63 | } 64 | .kwd { 65 | color: #006; 66 | font-weight: bold; 67 | } 68 | .com { 69 | color: #600; 70 | font-style: italic; 71 | } 72 | .typ { 73 | color: #404; 74 | font-weight: bold; 75 | } 76 | .lit { 77 | color: #004444; 78 | } 79 | .pun, .opn, .clo { 80 | color: #444400; 81 | } 82 | .tag { 83 | color: #006; 84 | font-weight: bold; 85 | } 86 | .atn { 87 | color: #440044; 88 | } 89 | .atv { 90 | color: #006600; 91 | } 92 | } 93 | /* Specify class=linenums on a pre to get line numbering */ 94 | ol.linenums { 95 | margin-top: 0; 96 | margin-bottom: 0; 97 | } 98 | 99 | /* IE indents via margin-left */ 100 | li.L0, 101 | li.L1, 102 | li.L2, 103 | li.L3, 104 | li.L4, 105 | li.L5, 106 | li.L6, 107 | li.L7, 108 | li.L8, 109 | li.L9 { 110 | /* */ 111 | } 112 | 113 | /* Alternate shading for lines */ 114 | li.L1, 115 | li.L3, 116 | li.L5, 117 | li.L7, 118 | li.L9 { 119 | /* */ 120 | } 121 | -------------------------------------------------------------------------------- /ardublockly/prettify/hemisu-light.css: -------------------------------------------------------------------------------- 1 | /* Hemisu Light */ 2 | /* Original theme - http://noahfrederick.com/vim-color-scheme-hemisu/ */ 3 | .prettyprint{background:#fff;font-family:Menlo,'Bitstream Vera Sans Mono','DejaVu Sans Mono',Monaco,Consolas,monospace;font-size:12px;line-height:1.5;border:1px solid #ccc;padding:10px}.pln{color:#111}@media screen{.kwd,.str{color:#739200}.com{color:#999}.typ{color:#f05}.lit{color:#538192}.clo,.opn,.pun,.tag{color:#111}.atn{color:#739200}.atv{color:#f05}.dec,.var{color:#111}.fun{color:#538192}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:700}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:700}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006;font-weight:700}.atn{color:#404}.atv{color:#060}}ol.linenums{margin-top:0;margin-bottom:0} -------------------------------------------------------------------------------- /ardublockly/prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /ardublockly/prettify/tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | .prettyprint{background:#fff;font-family:Menlo,'Bitstream Vera Sans Mono','DejaVu Sans Mono',Monaco,Consolas,monospace;font-size:12px;line-height:1.5;border:1px solid #ccc;padding:10px}.pln{color:#4d4d4c}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.clo,.opn,.pun{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:700}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:700}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006;font-weight:700}.atn{color:#404}.atv{color:#060}}ol.linenums{margin-top:0;margin-bottom:0} -------------------------------------------------------------------------------- /ardublocklyserver/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ardublocklyserver package. 3 | 4 | Copyright (c) 2017 carlosperate https://github.com/carlosperate/ 5 | Licensed under the Apache License, Version 2.0 (the "License"): 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | 8 | There is a specific requirements for this Python project to not need external 9 | module dependencies, so all third-party modules have been carefully chosen with 10 | this purpose in mind and included in a folder named 'local-packages'. 11 | The sys.path has to be expanded to be able to import these. 12 | """ 13 | import os 14 | import sys 15 | 16 | # Adding the local-packages to the sys path 17 | local_packages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 18 | 'local-packages') 19 | sys.path.insert(0, local_packages_path) 20 | 21 | # Follows Semantic Versioning 2.0.0 http://semver.org/spec/v2.0.0.html 22 | __version__ = '0.1.3-a' 23 | 24 | __author__ = 'carlosperate' 25 | __copyright__ = 'Copyright 2017, carlosperate https://github.com/carlosperate/' 26 | __license__ = 'Apache License, Version 2.0' 27 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/bottle-info/AUTHORS: -------------------------------------------------------------------------------- 1 | Bottle is written and maintained by Marcel Hellkamp . 2 | 3 | Thanks to all the people who found bugs, sent patches, spread the word, helped each other on the mailing-list and made this project possible. I hope the following (alphabetically sorted) list is complete. If you miss your name on that list (or want your name removed) please :doc:`tell me ` or add it yourself. 4 | 5 | * acasajus 6 | * Adam R. Smith 7 | * Alexey Borzenkov 8 | * Alexis Daboville 9 | * Anton I. Sipos 10 | * Anton Kolechkin 11 | * apexi200sx 12 | * apheage 13 | * BillMa 14 | * Brad Greenlee 15 | * Brandon Gilmore 16 | * Branko Vukelic 17 | * Brian Sierakowski 18 | * Brian Wickman 19 | * Carl Scharenberg 20 | * Damien Degois 21 | * David Buxton 22 | * Duane Johnson 23 | * fcamel 24 | * Frank Murphy 25 | * Frederic Junod 26 | * goldfaber3012 27 | * Greg Milby 28 | * gstein 29 | * Ian Davis 30 | * Itamar Nabriski 31 | * Iuri de Silvio 32 | * Jaimie Murdock 33 | * Jeff Nichols 34 | * Jeremy Kelley 35 | * joegester 36 | * Johannes Krampf 37 | * Jonas Haag 38 | * Joshua Roesslein 39 | * Karl 40 | * Kevin Zuber 41 | * Kraken 42 | * Kyle Fritz 43 | * m35 44 | * Marcos Neves 45 | * masklinn 46 | * Michael Labbe 47 | * Michael Soulier 48 | * `reddit `_ 49 | * Nicolas Vanhoren 50 | * Robert Rollins 51 | * rogererens 52 | * rwxrwx 53 | * Santiago Gala 54 | * Sean M. Collins 55 | * Sebastian Wollrath 56 | * Seth 57 | * Sigurd Høgsbro 58 | * Stuart Rackham 59 | * Sun Ning 60 | * Tomás A. Schertel 61 | * Tristan Zajonc 62 | * voltron 63 | * Wieland Hoffmann 64 | * zombat 65 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/bottle-info/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Marcel Hellkamp. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/bottle-info/README.rst: -------------------------------------------------------------------------------- 1 | Bottle Web Framework 2 | ==================== 3 | 4 | .. image:: http://bottlepy.org/docs/dev/_static/logo_nav.png 5 | :alt: Bottle Logo 6 | :align: right 7 | 8 | Bottle is a fast and simple micro-framework for small web applications. It 9 | offers request dispatching (URL routing) with URL parameter support, templates, 10 | a built-in HTTP Server and adapters for many third party WSGI/HTTP-server and 11 | template engines - all in a single file and with no dependencies other than the 12 | Python Standard Library. 13 | 14 | Homepage and documentation: http://bottlepy.org/ 15 | License: MIT (see LICENSE) 16 | 17 | Installation and Dependencies 18 | ----------------------------- 19 | 20 | Install bottle with ``pip install bottle`` or just `download bottle.py `_ and place it in your project directory. There are no (hard) dependencies other than the Python Standard Library. 21 | 22 | 23 | Example 24 | ------- 25 | 26 | .. code-block:: python 27 | 28 | from bottle import route, run 29 | 30 | @route('/hello/') 31 | def hello(name): 32 | return '

Hello %s!

' % name.title() 33 | 34 | run(host='localhost', port=8080) 35 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/bottle-info/version_info.md: -------------------------------------------------------------------------------- 1 | The version of Bottle included here is 0.12.13 2 | commit 7423aa0f64e381507d1e06a6bcab48888baf9a7b 3 | 4 | https://github.com/bottlepy/bottle/releases/tag/0.12.13 5 | 6 | This package has no dependencies. 7 | 8 | No modifications have been made. -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/configparser/README.md: -------------------------------------------------------------------------------- 1 | # configparser 3.5.0b2 2 | This library brings the updated configparser from Python 3.5 to Python 2.6-3.5. 3 | 4 | The ancient ConfigParser module available in the standard library 2.x has seen a major update in Python 3.2. This is a backport of those changes so that they can be used directly in Python 2.6 - 3.5. 5 | 6 | This is required mostly due to the Unicode support added. 7 | 8 | https://pypi.python.org/pypi/configparser 9 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2001-2016 Chris Liechti 2 | All Rights Reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above 12 | copyright notice, this list of conditions and the following 13 | disclaimer in the documentation and/or other materials provided 14 | with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived 18 | from this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | 32 | --------------------------------------------------------------------------- 33 | Note: 34 | Individual files contain the following tag instead of the full license text. 35 | 36 | SPDX-License-Identifier: BSD-3-Clause 37 | 38 | This enables machine processing of license information based on the SPDX 39 | License Identifiers that are here available: http://spdx.org/licenses/ 40 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/README.rst: -------------------------------------------------------------------------------- 1 | ================================= 2 | pySerial |build-status| |docs| 3 | ================================= 4 | 5 | Overview 6 | ======== 7 | This module encapsulates the access for the serial port. It provides backends 8 | for Python_ running on Windows, OSX, Linux, BSD (possibly any POSIX compliant 9 | system) and IronPython. The module named "serial" automatically selects the 10 | appropriate backend. 11 | 12 | - Project Homepage: https://github.com/pyserial/pyserial 13 | - Download Page: https://pypi.python.org/pypi/pyserial 14 | 15 | BSD license, (C) 2001-2016 Chris Liechti 16 | 17 | 18 | Documentation 19 | ============= 20 | For API documentation, usage and examples see files in the "documentation" 21 | directory. The ".rst" files can be read in any text editor or being converted to 22 | HTML or PDF using Sphinx_. A HTML version is online at 23 | https://pythonhosted.org/pyserial/ 24 | 25 | Examples 26 | ======== 27 | Examples and unit tests are in the directory examples_. 28 | 29 | 30 | Installation 31 | ============ 32 | ``pip install pyserial`` should work for most users. 33 | 34 | Detailed information can be found in `documentation/pyserial.rst`_. 35 | 36 | The usual setup.py for Python_ libraries is used for the source distribution. 37 | Windows installers are also available (see download link above). 38 | 39 | .. _`documentation/pyserial.rst`: https://github.com/pyserial/pyserial/blob/master/documentation/pyserial.rst#installation 40 | .. _examples: https://github.com/pyserial/pyserial/blob/master/examples 41 | .. _Python: http://python.org/ 42 | .. _Sphinx: http://sphinx-doc.org/ 43 | .. |build-status| image:: https://travis-ci.org/pyserial/pyserial.svg?branch=master 44 | :target: https://travis-ci.org/pyserial/pyserial 45 | :alt: Build status 46 | .. |docs| image:: https://readthedocs.org/projects/pyserial/badge/?version=latest 47 | :target: http://pyserial.readthedocs.io/ 48 | :alt: Documentation 49 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublocklyserver/local-packages/serial/tools/__init__.py -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/urlhandler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/ardublocklyserver/local-packages/serial/urlhandler/__init__.py -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/urlhandler/protocol_alt.py: -------------------------------------------------------------------------------- 1 | #! python 2 | # 3 | # This module implements a special URL handler that allows selecting an 4 | # alternate implementation provided by some backends. 5 | # 6 | # This file is part of pySerial. https://github.com/pyserial/pyserial 7 | # (C) 2015 Chris Liechti 8 | # 9 | # SPDX-License-Identifier: BSD-3-Clause 10 | # 11 | # URL format: alt://port[?option[=value][&option[=value]]] 12 | # options: 13 | # - class=X used class named X instead of Serial 14 | # 15 | # example: 16 | # use poll based implementation on Posix (Linux): 17 | # python -m serial.tools.miniterm alt:///dev/ttyUSB0?class=PosixPollSerial 18 | 19 | try: 20 | import urlparse 21 | except ImportError: 22 | import urllib.parse as urlparse 23 | 24 | import serial 25 | 26 | 27 | def serial_class_for_url(url): 28 | """extract host and port from an URL string""" 29 | parts = urlparse.urlsplit(url) 30 | if parts.scheme != 'alt': 31 | raise serial.SerialException( 32 | 'expected a string in the form "alt://port[?option[=value][&option[=value]]]": ' 33 | 'not starting with alt:// ({!r})'.format(parts.scheme)) 34 | class_name = 'Serial' 35 | try: 36 | for option, values in urlparse.parse_qs(parts.query, True).items(): 37 | if option == 'class': 38 | class_name = values[0] 39 | else: 40 | raise ValueError('unknown option: {!r}'.format(option)) 41 | except ValueError as e: 42 | raise serial.SerialException( 43 | 'expected a string in the form ' 44 | '"alt://port[?option[=value][&option[=value]]]": {!r}'.format(e)) 45 | if not hasattr(serial, class_name): 46 | raise ValueError('unknown class: {!r}'.format(class_name)) 47 | cls = getattr(serial, class_name) 48 | if not issubclass(cls, serial.Serial): 49 | raise ValueError('class {!r} is not an instance of Serial'.format(class_name)) 50 | return (''.join([parts.netloc, parts.path]), cls) 51 | 52 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 53 | if __name__ == '__main__': 54 | s = serial.serial_for_url('alt:///dev/ttyS0?class=PosixPollSerial') 55 | print(s) 56 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/urlhandler/protocol_rfc2217.py: -------------------------------------------------------------------------------- 1 | #! python 2 | # 3 | # This is a thin wrapper to load the rfc2271 implementation. 4 | # 5 | # This file is part of pySerial. https://github.com/pyserial/pyserial 6 | # (C) 2011 Chris Liechti 7 | # 8 | # SPDX-License-Identifier: BSD-3-Clause 9 | 10 | from serial.rfc2217 import Serial # noqa 11 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/serial/version_info.md: -------------------------------------------------------------------------------- 1 | The version of pyserial included here is v3.2.1 2 | commit ffb44d6d7394e2b73bfb1bb91dd69c377c0f8aa0 3 | 4 | https://github.com/pyserial/pyserial/releases/tag/v3.2.1 5 | 6 | This package has no dependencies. 7 | 8 | No modifications have been made. 9 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/six-info/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2015 Benjamin Peterson 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/six-info/README: -------------------------------------------------------------------------------- 1 | Six is a Python 2 and 3 compatibility library. It provides utility functions 2 | for smoothing over the differences between the Python versions with the goal of 3 | writing Python code that is compatible on both Python versions. See the 4 | documentation for more information on what is provided. 5 | 6 | Six supports every Python version since 2.5. It is contained in only one Python 7 | file, so it can be easily copied into your project. (The copyright and license 8 | notice must be retained.) 9 | 10 | Online documentation is at http://pythonhosted.org/six/. 11 | 12 | Bugs can be reported to https://bitbucket.org/gutworth/six. The code can also 13 | be found there. 14 | 15 | For questions about six or porting in general, email the python-porting mailing 16 | list: http://mail.python.org/mailman/listinfo/python-porting 17 | 18 | This version of six has been modified: 19 | - The u() function in Python 3 originally just returned the input argument, as 20 | it expected a string literal, which is Unicode by default in Python 3. 21 | It now ensures the return string is encoded in utf-8. 22 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/waitress/COPYRIGHT.txt: -------------------------------------------------------------------------------- 1 | Zope Foundation and Contributors -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/waitress/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Zope Public License (ZPL) Version 2.1 2 | 3 | A copyright notice accompanies this license document that identifies the 4 | copyright holders. 5 | 6 | This license has been certified as open source. It has also been designated as 7 | GPL compatible by the Free Software Foundation (FSF). 8 | 9 | Redistribution and use in source and binary forms, with or without 10 | modification, are permitted provided that the following conditions are met: 11 | 12 | 1. Redistributions in source code must retain the accompanying copyright 13 | notice, this list of conditions, and the following disclaimer. 14 | 15 | 2. Redistributions in binary form must reproduce the accompanying copyright 16 | notice, this list of conditions, and the following disclaimer in the 17 | documentation and/or other materials provided with the distribution. 18 | 19 | 3. Names of the copyright holders must not be used to endorse or promote 20 | products derived from this software without prior written permission from the 21 | copyright holders. 22 | 23 | 4. The right to distribute this software or to use it for any purpose does not 24 | give you the right to use Servicemarks (sm) or Trademarks (tm) of the 25 | copyright 26 | holders. Use of them is covered by separate agreement with the copyright 27 | holders. 28 | 29 | 5. If any files are modified, you must cause the modified files to carry 30 | prominent notices stating that you changed the files and the date of any 31 | change. 32 | 33 | Disclaimer 34 | 35 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED 36 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 37 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 38 | EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 39 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 40 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 41 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 42 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 43 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 44 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 45 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/waitress/README.rst: -------------------------------------------------------------------------------- 1 | Waitress is meant to be a production-quality pure-Python WSGI server with very 2 | acceptable performance. It has no dependencies except ones which live in the 3 | Python standard library. It runs on CPython on Unix and Windows under Python 4 | 2.7+ and Python 3.3+. It is also known to run on PyPy 1.6.0+ on UNIX. It 5 | supports HTTP/1.0 and HTTP/1.1. 6 | 7 | For more information, see the "docs" directory of the Waitress package or 8 | http://docs.pylonsproject.org/projects/waitress/en/latest/ . 9 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/waitress/__init__.py: -------------------------------------------------------------------------------- 1 | from waitress.server import create_server 2 | import logging 3 | 4 | def serve(app, **kw): 5 | _server = kw.pop('_server', create_server) # test shim 6 | _quiet = kw.pop('_quiet', False) # test shim 7 | _profile = kw.pop('_profile', False) # test shim 8 | if not _quiet: # pragma: no cover 9 | # idempotent if logging has already been set up 10 | logging.basicConfig() 11 | server = _server(app, **kw) 12 | if not _quiet: # pragma: no cover 13 | server.print_listen('Serving on http://{}:{}') 14 | if _profile: # pragma: no cover 15 | profile('server.run()', globals(), locals(), (), False) 16 | else: 17 | server.run() 18 | 19 | def serve_paste(app, global_conf, **kw): 20 | serve(app, **kw) 21 | return 0 22 | 23 | def profile(cmd, globals, locals, sort_order, callers): # pragma: no cover 24 | # runs a command under the profiler and print profiling output at shutdown 25 | import os 26 | import profile 27 | import pstats 28 | import tempfile 29 | fd, fn = tempfile.mkstemp() 30 | try: 31 | profile.runctx(cmd, globals, locals, fn) 32 | stats = pstats.Stats(fn) 33 | stats.strip_dirs() 34 | # calls,time,cumulative and cumulative,calls,time are useful 35 | stats.sort_stats(*(sort_order or ('cumulative', 'calls', 'time'))) 36 | if callers: 37 | stats.print_callers(.3) 38 | else: 39 | stats.print_stats(.3) 40 | finally: 41 | os.remove(fn) 42 | -------------------------------------------------------------------------------- /ardublocklyserver/local-packages/waitress/version_info.md: -------------------------------------------------------------------------------- 1 | The version of waitress included here is v1.0.2 2 | commit 76b34b8411cc84ef808f4ab266271bf6a77a1071 3 | 4 | https://github.com/Pylons/waitress/releases/tag/v1.0.2 5 | 6 | This package has no dependencies. 7 | 8 | No modifications have been made. -------------------------------------------------------------------------------- /ardublocklyserver/serialport.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """Functions to retrieve the computer Serial Port list. 3 | 4 | Copyright (c) 2017 carlosperate https://github.com/carlosperate/ 5 | Licensed under the Apache License, Version 2.0 (the "License"): 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | """ 8 | from __future__ import unicode_literals, absolute_import, print_function 9 | # local-packages imports 10 | from serial.tools import list_ports 11 | 12 | 13 | def get_port_list(): 14 | """Return a list with available Serial Ports. 15 | 16 | :return: A list with the available serial ports only. 17 | """ 18 | return [port for port, descriptor, hw_id in sorted(list_ports.comports())] 19 | 20 | 21 | def print_ports(): 22 | """Print the available Serial Ports with their info into the console. 23 | 24 | This includes the ports descriptor and hardware ID. 25 | """ 26 | iterator = sorted(list_ports.comports()) 27 | print('Found %s ports:' % len(iterator)) 28 | for port, descriptor, hw_id in iterator: 29 | print('Port: %s\n\tDescriptor: %s\n\tHardware ID: %s' % 30 | (port, descriptor, hw_id)) 31 | -------------------------------------------------------------------------------- /ardublocklyserver/tests/requirements.txt: -------------------------------------------------------------------------------- 1 | coverage>=4.3.4 2 | requests>=2.13.0 3 | flake8>=3.3.0 4 | mock>=2.0.0 5 | -------------------------------------------------------------------------------- /ardublocklyserver/tests/run_all.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """Runs all the unit tests from this directory. 4 | 5 | This file manually adds the tests to be run. 6 | 7 | Copyright (c) 2017 carlosperate https://github.com/carlosperate/ 8 | Licensed under the Apache License, Version 2.0 (the "License"): 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | """ 11 | import os 12 | import sys 13 | import unittest 14 | 15 | # Adding the ardublockly server package to the sys path 16 | file_dir = os.path.dirname(os.path.realpath(__file__)) 17 | package_dir = os.path.dirname(os.path.dirname(file_dir)) 18 | sys.path.insert(0, package_dir) 19 | # Adding local-packages to the sys path 20 | from ardublocklyserver import local_packages_path 21 | sys.path.insert(0, local_packages_path) 22 | 23 | # Import test cases to run 24 | from sketchcreator_test import SketchCreatorTestCase 25 | from compilersettings_test import ServerCompilerSettingsTestCase 26 | from actions_test import ActionsTestCase 27 | from server_test import ServerTestCase 28 | 29 | 30 | def run_tests(): 31 | unittest.main() 32 | 33 | 34 | if __name__ == '__main__': 35 | run_tests() 36 | -------------------------------------------------------------------------------- /blockly/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .DS_Store 4 | .settings 5 | .project 6 | *.pyc 7 | *.komodoproject 8 | /nbproject/private/ -------------------------------------------------------------------------------- /blockly/.jshintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | tests/ 3 | demos/ 4 | **/*_compressed.js 5 | **/*_uncompressed.js 6 | **/*_test.js -------------------------------------------------------------------------------- /blockly/README.md: -------------------------------------------------------------------------------- 1 | # Blockly fork 2 | 3 | This is a fork of Google's Blockly visual programming editor: https://github.com/google/blockly 4 | 5 | It adds the following features: 6 | 7 | * Arduino code generation 8 | * Arduino specific blocks 9 | * Multiple Arduino boards support 10 | * Static typing 11 | * Code warnings 12 | * Arduino pin tracking 13 | * Arduino generator unit test (incomplete) 14 | * Procedures core class modified to include the Arduino setup() and loop() functions 15 | * Temporarily removed procedure's mutator responsible to add arguments 16 | * Blocks HSV hue colour value slightly higher for more vibrant colours 17 | * Minor visual changes to the zoom icons positioning 18 | * Build file updated to include all these changes 19 | 20 | The following features are planned to be pushed upstream (list will be updated as PR get accepted): 21 | 22 | * Replaces window.prompt uses to a local version that can easily be replaced by an asynchronous HTML version 23 | 24 | All other changes and fixes have been submitted to the original Blockly repository for inclusion into the upstream master branch. 25 | 26 | This fork gets frequent upstream pulls to maintain it up to date. 27 | 28 | 29 | ## Git configuration 30 | 31 | This fork is configured as a Git Subtree, this is done to be able to pull all the newest features from upstream and still work on the Ardublockly additions. 32 | 33 | 34 | ### Pulling from upstream 35 | 36 | Adding the Blockly repository as a remote and fetching latest: 37 | 38 | ``` 39 | git remote add -f blockly https://github.com/google/blockly.git 40 | ``` 41 | 42 | Pulling from Blockly master, from the project root directory: 43 | 44 | ``` 45 | git fetch blockly master 46 | git subtree pull --prefix blockly blockly master 47 | ``` 48 | 49 | To pull all the changes into a single commit the flag `---squashed` can be added to the `subtree pull` command. 50 | 51 | Then resolve any conflicts and push to origin. 52 | 53 | 54 | ## Blockly 55 | 56 | Google's Blockly is a web-based, visual programming editor. Users can drag 57 | blocks together to build programs. All code is free and open source. 58 | 59 | **The project page is https://developers.google.com/blockly/** 60 | 61 | ![](https://developers.google.com/blockly/sample.png) 62 | -------------------------------------------------------------------------------- /blockly/appengine/README.txt: -------------------------------------------------------------------------------- 1 | 2 | Running an App Engine server 3 | 4 | This directory contains the files needed to setup the optional Blockly server. 5 | Although Blockly itself is 100% client-side, the server enables cloud storage 6 | and sharing. Store your programs in Datastore and get a unique URL that allows 7 | you to load the program on any computer. 8 | 9 | To run your own App Engine instance you'll need to create this directory 10 | structure: 11 | 12 | blockly/ 13 | |- app.yaml 14 | |- index.yaml 15 | |- index_redirect.py 16 | |- README.txt 17 | |- storage.js 18 | |- storage.py 19 | |- closure-library/ (Optional) 20 | `- static/ 21 | |- blocks/ 22 | |- core/ 23 | |- demos/ 24 | |- generators/ 25 | |- media/ 26 | |- msg/ 27 | |- tests/ 28 | |- blockly_compressed.js 29 | |- blockly_uncompressed.js (Optional) 30 | |- blocks_compressed.js 31 | |- dart_compressed.js 32 | |- javascript_compressed.js 33 | |- lua_compressed.js 34 | |- php_compressed.js 35 | `- python_compressed.js 36 | 37 | Instructions for fetching the optional Closure library may be found here: 38 | https://developers.google.com/blockly/hacking/closure 39 | 40 | Go to https://appengine.google.com/ and create your App Engine application. 41 | Modify the 'application' name of app.yaml to your App Engine application name. 42 | 43 | Finally, upload this directory structure to your App Engine account, 44 | wait a minute, then go to http://YOURAPPNAME.appspot.com/ 45 | -------------------------------------------------------------------------------- /blockly/appengine/app.yaml: -------------------------------------------------------------------------------- 1 | application: blockly-demo 2 | version: 1 3 | runtime: python27 4 | api_version: 1 5 | threadsafe: no 6 | 7 | handlers: 8 | # Redirect obsolete URLs. 9 | # Blockly files moved from /blockly to /static on 5 Dec 2012. 10 | - url: /blockly/.* 11 | static_files: redirect.html 12 | upload: redirect.html 13 | # Code, Maze and Turtle moved from demos on 29 Dec 2012. 14 | - url: /static/demos/(maze|turtle)/.* 15 | static_files: redirect.html 16 | upload: redirect.html 17 | # Apps was disbanded on 20 Nov 2014. 18 | - url: /static/apps/.* 19 | static_files: redirect.html 20 | upload: redirect.html 21 | 22 | 23 | # Storage API. 24 | - url: /storage 25 | script: storage.py 26 | secure: always 27 | - url: /storage\.js 28 | static_files: storage.js 29 | upload: storage\.js 30 | secure: always 31 | 32 | # Blockly files. 33 | - url: /static 34 | static_dir: static 35 | secure: always 36 | 37 | # Closure library for uncompiled Blockly. 38 | - url: /closure-library 39 | static_dir: closure-library 40 | secure: always 41 | 42 | # Redirect for root directory. 43 | - url: / 44 | script: index_redirect.py 45 | secure: always 46 | 47 | # Favicon. 48 | - url: /favicon\.ico 49 | static_files: favicon.ico 50 | upload: favicon\.ico 51 | secure: always 52 | expiration: "30d" 53 | 54 | # Apple icon. 55 | - url: /apple-touch-icon\.png 56 | static_files: apple-touch-icon.png 57 | upload: apple-touch-icon\.png 58 | secure: always 59 | expiration: "30d" 60 | 61 | # robot.txt 62 | - url: /robots\.txt 63 | static_files: robots.txt 64 | upload: robots\.txt 65 | secure: always 66 | 67 | 68 | skip_files: 69 | # App Engine default patterns. 70 | - ^(.*/)?#.*#$ 71 | - ^(.*/)?.*~$ 72 | - ^(.*/)?.*\.py[co]$ 73 | - ^(.*/)?.*/RCS/.*$ 74 | - ^(.*/)?\..*$ 75 | # Custom skip patterns. 76 | - ^static/appengine/.*$ 77 | - ^static/demos/plane/soy/.+\.jar$ 78 | - ^static/demos/plane/template.soy$ 79 | - ^static/demos/plane/xlf/.*$ 80 | - ^static/i18n/.*$ 81 | - ^static/msg/json/.*$ 82 | - ^.+\.soy$ 83 | -------------------------------------------------------------------------------- /blockly/appengine/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/appengine/apple-touch-icon.png -------------------------------------------------------------------------------- /blockly/appengine/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/appengine/favicon.ico -------------------------------------------------------------------------------- /blockly/appengine/index.yaml: -------------------------------------------------------------------------------- 1 | indexes: 2 | 3 | # AUTOGENERATED 4 | 5 | # This index.yaml is automatically updated whenever the dev_appserver 6 | # detects that a new type of query is run. If you want to manage the 7 | # index.yaml file manually, remove the above marker line (the line 8 | # saying "# AUTOGENERATED"). If you want to manage some indexes 9 | # manually, move them above the marker line. The index.yaml file is 10 | # automatically uploaded to the admin console when you next deploy 11 | # your application using appcfg.py. 12 | -------------------------------------------------------------------------------- /blockly/appengine/index_redirect.py: -------------------------------------------------------------------------------- 1 | print("Status: 302") 2 | print("Location: /static/demos/index.html") 3 | -------------------------------------------------------------------------------- /blockly/appengine/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: /storage 3 | -------------------------------------------------------------------------------- /blockly/blocks/arduino/map.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Block for the Arduino map functionality. 8 | * The Arduino built in functions syntax can be found at: 9 | * http://arduino.cc/en/Reference/HomePage 10 | * 11 | * TODO: This block can be improved to set the new range properly. 12 | */ 13 | 'use strict'; 14 | 15 | goog.provide('Blockly.Blocks.map'); 16 | 17 | goog.require('Blockly.Blocks'); 18 | goog.require('Blockly.Types'); 19 | 20 | 21 | /** Common HSV hue for all blocks in this category. */ 22 | Blockly.Blocks.map.HUE = 230; 23 | 24 | Blockly.Blocks['base_map'] = { 25 | /** 26 | * Block for creating a the map function. 27 | * @this Blockly.Block 28 | */ 29 | init: function() { 30 | this.setHelpUrl('http://arduino.cc/en/Reference/map'); 31 | this.setColour(Blockly.Blocks.map.HUE); 32 | this.appendValueInput('NUM') 33 | .appendField(Blockly.Msg.ARD_MAP) 34 | .setCheck(Blockly.Types.NUMBER.checkList); 35 | this.appendValueInput('DMAX') 36 | .appendField(Blockly.Msg.ARD_MAP_VAL) 37 | .setCheck(Blockly.Types.NUMBER.checkList); 38 | this.appendDummyInput() 39 | .appendField(']'); 40 | this.setInputsInline(true); 41 | this.setOutput(true); 42 | this.setTooltip(Blockly.Msg.ARD_MAP_TIP); 43 | }, 44 | /** @return {string} The type of return value for the block, an integer. */ 45 | getBlockType: function() { 46 | return Blockly.Types.NUMBER; 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /blockly/blocks/arduino/procedures.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Block for the Arduino functions. 8 | * The Arduino built in functions syntax can be found at: 9 | * https://arduino.cc/en/Reference/HomePage 10 | */ 11 | 'use strict'; 12 | 13 | goog.require('Blockly.Blocks'); 14 | 15 | 16 | /** Common HSV hue for all blocks in this category. */ 17 | Blockly.Blocks.procedures.HUE = 290; 18 | 19 | Blockly.Blocks['arduino_functions'] = { 20 | /** 21 | * Block for defining the Arduino setup() and loop() functions. 22 | * @this Blockly.Block 23 | */ 24 | init: function() { 25 | this.appendDummyInput() 26 | .appendField(Blockly.Msg.ARD_FUN_RUN_SETUP); 27 | this.appendStatementInput('SETUP_FUNC'); 28 | this.appendDummyInput() 29 | .appendField(Blockly.Msg.ARD_FUN_RUN_LOOP); 30 | this.appendStatementInput('LOOP_FUNC'); 31 | this.setInputsInline(false); 32 | this.setColour(Blockly.Blocks.procedures.HUE); 33 | this.setTooltip(Blockly.Msg.ARD_FUN_RUN_TIP); 34 | this.setHelpUrl('https://arduino.cc/en/Reference/Loop'); 35 | this.contextMenu = false; 36 | }, 37 | /** @return {!boolean} True if the block instance is in the workspace. */ 38 | getArduinoLoopsInstance: function() { 39 | return true; 40 | } 41 | }; 42 | -------------------------------------------------------------------------------- /blockly/blocks/arduino/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Block for the Arduino map functionality. 8 | * The Arduino built in functions syntax can be found at: 9 | * http://arduino.cc/en/Reference/HomePage 10 | * 11 | * TODO: This block can be improved to set the new range properly. 12 | */ 13 | 'use strict'; 14 | 15 | goog.require('Blockly.Blocks'); 16 | goog.require('Blockly.Types'); 17 | 18 | 19 | /** Common HSV hue for all blocks in this category. */ 20 | Blockly.Blocks.variables.HUE = 330; 21 | 22 | Blockly.Blocks['variables_set_type'] = { 23 | /** 24 | * Block for variable casting. 25 | * @this Blockly.Block 26 | */ 27 | init: function() { 28 | this.setHelpUrl('http://arduino.cc/en/Reference/HomePage'); 29 | this.setColour(Blockly.Blocks.variables.HUE); 30 | this.appendValueInput('VARIABLE_SETTYPE_INPUT'); 31 | this.appendDummyInput() 32 | .appendField(Blockly.Msg.ARD_VAR_AS) 33 | .appendField(new Blockly.FieldDropdown( 34 | Blockly.Types.getValidTypeArray()), 35 | 'VARIABLE_SETTYPE_TYPE'); 36 | this.setInputsInline(true); 37 | this.setOutput(true); 38 | this.setTooltip(Blockly.Msg.ARD_VAR_AS_TIP); 39 | }, 40 | /** 41 | * Assigns a type to the block based on the selected type to cast. 42 | * @return {!string} Blockly type for this block configuration. 43 | * @this Blockly.Block 44 | */ 45 | getBlockType: function() { 46 | var blocklyTypeKey = this.getFieldValue('VARIABLE_SETTYPE_TYPE'); 47 | return Blockly.Types[blocklyTypeKey]; 48 | } 49 | }; 50 | -------------------------------------------------------------------------------- /blockly/core/blocks.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Editor 4 | * 5 | * Copyright 2013 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Empty name space for the Blocks singleton. 23 | * @author spertus@google.com (Ellen Spertus) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.Blocks'); 28 | -------------------------------------------------------------------------------- /blockly/core/field_number.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Editor 4 | * 5 | * Copyright 2016 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Number input field 23 | * @author fenichel@google.com (Rachel Fenichel) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.FieldNumber'); 28 | 29 | goog.require('Blockly.FieldTextInput'); 30 | 31 | /** 32 | * Class for an editable number field. 33 | * @param {string} text The initial content of the field. 34 | * @param {Function=} opt_validator An optional function that is called 35 | * to validate any constraints on what the user entered. Takes the new 36 | * text as an argument and returns either the accepted text, a replacement 37 | * text, or null to abort the change. 38 | * @extends {Blockly.FieldTextInput} 39 | * @constructor 40 | */ 41 | Blockly.FieldNumber = function(text, opt_validator) { 42 | Blockly.FieldNumber.superClass_.constructor.call(this, text, 43 | opt_validator); 44 | }; 45 | goog.inherits(Blockly.FieldNumber, Blockly.FieldTextInput); 46 | -------------------------------------------------------------------------------- /blockly/core/msg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Editor 4 | * 5 | * Copyright 2013 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Empty name space for the Message singleton. 23 | * @author scr@google.com (Sheridan Rawlins) 24 | */ 25 | 'use strict'; 26 | 27 | /** 28 | * Name space for the Msg singleton. 29 | * Msg gets populated in the message files. 30 | */ 31 | goog.provide('Blockly.Msg'); 32 | 33 | 34 | /** 35 | * Back up original getMsg function. 36 | * @type {!Function} 37 | */ 38 | goog.getMsgOrig = goog.getMsg; 39 | 40 | /** 41 | * Gets a localized message. 42 | * Overrides the default Closure function to check for a Blockly.Msg first. 43 | * Used infrequently, only known case is TODAY button in date picker. 44 | * @param {string} str Translatable string, places holders in the form {$foo}. 45 | * @param {Object=} opt_values Maps place holder name to value. 46 | * @return {string} message with placeholders filled. 47 | * @suppress {duplicate} 48 | */ 49 | goog.getMsg = function(str, opt_values) { 50 | var key = goog.getMsg.blocklyMsgMap[str]; 51 | if (key) { 52 | str = Blockly.Msg[key]; 53 | } 54 | return goog.getMsgOrig(str, opt_values); 55 | }; 56 | 57 | /** 58 | * Mapping of Closure messages to Blockly.Msg names. 59 | */ 60 | goog.getMsg.blocklyMsgMap = { 61 | 'Today': 'TODAY' 62 | }; 63 | -------------------------------------------------------------------------------- /blockly/demos/blockfactory/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/blockfactory/icon.png -------------------------------------------------------------------------------- /blockly/demos/blockfactory/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/blockfactory/link.png -------------------------------------------------------------------------------- /blockly/demos/code/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/code/icon.png -------------------------------------------------------------------------------- /blockly/demos/code/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/code/icons.png -------------------------------------------------------------------------------- /blockly/demos/code/msg/ar.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "كود", 3 | blocks: "البلوكات", 4 | linkTooltip: "احفظ ووصلة إلى البلوكات.", 5 | runTooltip: "شغل البرنامج المعرف بواسطة البلوكات في مساحة العمل.", 6 | badCode: "خطأ في البرنامج:\n %1", 7 | timeout: "تم تجاوز الحد الأقصى لتكرارات التنفيذ .", 8 | trashTooltip: "تجاهل كل البلوكات.", 9 | catLogic: "منطق", 10 | catLoops: "الحلقات", 11 | catMath: "رياضيات", 12 | catText: "نص", 13 | catLists: "قوائم", 14 | catColour: "لون", 15 | catVariables: "متغيرات", 16 | catFunctions: "إجراءات", 17 | listVariable: "قائمة", 18 | textVariable: "نص", 19 | httpRequestError: "كانت هناك مشكلة مع هذا الطلب.", 20 | linkAlert: "مشاركة كود بلوكلي الخاص بك مع هذا الرابط:\n %1", 21 | hashError: "عذراً،ال '%1' لا تتوافق مع أي برنامج تم حفظه.", 22 | xmlError: "تعذر تحميل الملف المحفوظة الخاصة بك. ربما تم إنشاؤه باستخدام إصدار مختلف من بلوكلي؟", 23 | badXml: "خطأ في توزيع ال \"XML\":\n %1\n\nحدد 'موافق' للتخلي عن التغييرات أو 'إلغاء الأمر' لمواصلة تحرير ال\"XML\"." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/be-tarask.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Код", 3 | blocks: "Блёкі", 4 | linkTooltip: "Захаваць і зьвязаць з блёкамі.", 5 | runTooltip: "Запусьціце праграму, вызначаную блёкамі ў працоўнай вобласьці.", 6 | badCode: "Памылка праграмы:\n%1", 7 | timeout: "Перавышана максымальная колькасьць ітэрацыяў.", 8 | trashTooltip: "Выдаліць усе блёкі.", 9 | catLogic: "Лёгіка", 10 | catLoops: "Петлі", 11 | catMath: "Матэматычныя формулы", 12 | catText: "Тэкст", 13 | catLists: "Сьпісы", 14 | catColour: "Колер", 15 | catVariables: "Зьменныя", 16 | catFunctions: "Функцыі", 17 | listVariable: "сьпіс", 18 | textVariable: "тэкст", 19 | httpRequestError: "Узьнікла праблема з запытам.", 20 | linkAlert: "Падзяліцца Вашым блёкам праз гэтую спасылку:\n\n%1", 21 | hashError: "Прабачце, '%1' не адпавядае ніводнай захаванай праграме.", 22 | xmlError: "Не атрымалася загрузіць захаваны файл. Магчыма, ён быў створаны з іншай вэрсіяй Блёклі?", 23 | badXml: "Памылка сынтаксічнага аналізу XML:\n%1\n\nАбярыце \"ОК\", каб адмовіцца ад зьменаў ці \"Скасаваць\" для далейшага рэдагаваньня XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/br.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kod", 3 | blocks: "Bloc'hoù", 4 | linkTooltip: "Enrollañ ha liammañ d'ar bloc'hadoù.", 5 | runTooltip: "Lañsañ ar programm termenet gant ar bloc'hadoù en takad labour.", 6 | badCode: "Fazi programm :\n%1", 7 | timeout: "Tizhet eo bet an niver brasañ a iteradurioù seveniñ aotreet.", 8 | trashTooltip: "Disteurel an holl vloc'hoù.", 9 | catLogic: "Poell", 10 | catLoops: "Boukloù", 11 | catMath: "Matematik", 12 | catText: "Testenn", 13 | catLists: "Rolloù", 14 | catColour: "Liv", 15 | catVariables: "Argemmennoù", 16 | catFunctions: "Arc'hwelioù", 17 | listVariable: "roll", 18 | textVariable: "testenn", 19 | httpRequestError: "Ur gudenn zo gant ar reked.", 20 | linkAlert: "Rannañ ho ploc'hoù gant al liamm-mañ :\n\n%1", 21 | hashError: "Digarezit. \"%1\" ne glot gant programm enrollet ebet.", 22 | xmlError: "Ne c'haller ket kargañ ho restr enrollet. Marteze e oa bet krouet gant ur stumm disheñvel eus Blockly ?", 23 | badXml: "Fazi dielfennañ XML :\n%1\n\nDibabit \"Mat eo\" evit dilezel ar c'hemmoù-se pe \"Nullañ\" evit kemmañ an XML c'hoazh." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ca.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Codi", 3 | blocks: "Blocs", 4 | linkTooltip: "Desa i enllaça als blocs.", 5 | runTooltip: "Executa el programa definit pels blocs de l'àrea de treball.", 6 | badCode: "Error de programa:\n %1", 7 | timeout: "S'ha superat el nombre màxim d'iteracions d'execució.", 8 | trashTooltip: "Descarta tots els blocs.", 9 | catLogic: "Lògica", 10 | catLoops: "Bucles", 11 | catMath: "Matemàtiques", 12 | catText: "Text", 13 | catLists: "Llistes", 14 | catColour: "Color", 15 | catVariables: "Variables", 16 | catFunctions: "Procediments", 17 | listVariable: "llista", 18 | textVariable: "text", 19 | httpRequestError: "Hi ha hagut un problema amb la sol·licitud.", 20 | linkAlert: "Comparteix els teus blocs amb aquest enllaç: %1", 21 | hashError: "Ho sentim, '%1' no es correspon amb cap fitxer desat de Blockly.", 22 | xmlError: "No s'ha pogut carregar el teu fitxer desat. Potser va ser creat amb una versió diferent de Blockly?", 23 | badXml: "Error d'anàlisi XML:\n%1\n\nSeleccioneu 'Acceptar' per abandonar els vostres canvis, o 'Cancel·lar' per continuar editant l'XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/cs.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kód", 3 | blocks: "Bloky", 4 | linkTooltip: "Ulož a spoj bloky..", 5 | runTooltip: "", 6 | badCode: "Chyba programu:\n%1", 7 | timeout: "Maximum execution iterations exceeded.", 8 | trashTooltip: "Zahodit všechny bloky.", 9 | catLogic: "Logika", 10 | catLoops: "Smyčky", 11 | catMath: "Matematika", 12 | catText: "Text", 13 | catLists: "Seznamy", 14 | catColour: "Barva", 15 | catVariables: "Proměnné", 16 | catFunctions: "Procedury", 17 | listVariable: "seznam", 18 | textVariable: "text", 19 | httpRequestError: "Došlo k potížím s požadavkem.", 20 | linkAlert: "Sdílej bloky tímto odkazem: \n\n%1", 21 | hashError: "Omlouváme se, '%1' nesouhlasí s žádným z uložených souborů.", 22 | xmlError: "Nepodařilo se uložit vás soubor. Pravděpodobně byl vytvořen jinou verzí Blockly?", 23 | badXml: "Chyba parsování XML:\n%1\n\nVybrat \"OK\" pro zahození vašich změn nebo 'Cancel' k dalšímu upravování XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/da.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kode", 3 | blocks: "Blokke", 4 | linkTooltip: "Gem og link til blokke.", 5 | runTooltip: "Kør programmet, der er defineret af blokkene i arbejdsområdet.", 6 | badCode: "Programfejl:\n%1", 7 | timeout: "Maksimale antal udførelsesgentagelser overskredet.", 8 | trashTooltip: "Kassér alle blokke.", 9 | catLogic: "Logik", 10 | catLoops: "Løkker", 11 | catMath: "Matematik", 12 | catText: "Tekst", 13 | catLists: "Lister", 14 | catColour: "Farve", 15 | catVariables: "Variabler", 16 | catFunctions: "Funktioner", 17 | listVariable: "liste", 18 | textVariable: "tekst", 19 | httpRequestError: "Der var et problem med forespørgslen.", 20 | linkAlert: "Del dine blokke med dette link:\n\n%1", 21 | hashError: "Beklager, '%1' passer ikke med nogen gemt Blockly fil.", 22 | xmlError: "Kunne ikke hente din gemte fil. Måske er den lavet med en anden udgave af Blockly?", 23 | badXml: "Fejl under fortolkningen af XML:\n%1\n\nVælg 'OK' for at opgive dine ændringer eller 'Afbryd' for at redigere XML-filen yderligere." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/de.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Code", 3 | blocks: "Bausteine", 4 | linkTooltip: "Speichern und auf Bausteine verlinken.", 5 | runTooltip: "Das Programm ausführen, das von den Bausteinen im Arbeitsbereich definiert ist.", 6 | badCode: "Programmfehler:\n%1", 7 | timeout: "Die maximalen Ausführungswiederholungen wurden überschritten.", 8 | trashTooltip: "Alle Bausteine verwerfen.", 9 | catLogic: "Logik", 10 | catLoops: "Schleifen", 11 | catMath: "Mathematik", 12 | catText: "Text", 13 | catLists: "Listen", 14 | catColour: "Farbe", 15 | catVariables: "Variablen", 16 | catFunctions: "Funktionen", 17 | listVariable: "Liste", 18 | textVariable: "Text", 19 | httpRequestError: "Mit der Anfrage gab es ein Problem.", 20 | linkAlert: "Teile deine Bausteine mit diesem Link:\n\n%1", 21 | hashError: "„%1“ stimmt leider mit keinem gespeicherten Programm überein.", 22 | xmlError: "Deine gespeicherte Datei konnte nicht geladen werden. Vielleicht wurde sie mit einer anderen Version von Blockly erstellt.", 23 | badXml: "Fehler beim Parsen von XML:\n%1\n\nWähle 'OK' zum Verwerfen deiner Änderungen oder 'Abbrechen' zum weiteren Bearbeiten des XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/el.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Κώδικας", 3 | blocks: "Μπλοκ", 4 | linkTooltip: "Αποθηκεύει και συνδέει σε μπλοκ.", 5 | runTooltip: "Εκτελεί το πρόγραμμα που ορίζεται από τα μπλοκ στον χώρο εργασίας.", 6 | badCode: "Σφάλμα προγράμματος:\n%1", 7 | timeout: "Υπέρβαση μέγιστου αριθμού επαναλήψεων.", 8 | trashTooltip: "Απόρριψη όλων των μπλοκ.", 9 | catLogic: "Λογική", 10 | catLoops: "Επαναλήψεις", 11 | catMath: "Μαθηματικά", 12 | catText: "Κείμενο", 13 | catLists: "Λίστες", 14 | catColour: "Χρώμα", 15 | catVariables: "Μεταβλητές", 16 | catFunctions: "Συναρτήσεις", 17 | listVariable: "λίστα", 18 | textVariable: "κείμενο", 19 | httpRequestError: "Υπήρξε πρόβλημα με το αίτημα.", 20 | linkAlert: "Κοινοποίησε τα μπλοκ σου με αυτόν τον σύνδεσμο:\n\n%1", 21 | hashError: "Λυπάμαι, το «%1» δεν αντιστοιχεί σε κανένα αποθηκευμένο πρόγραμμα.", 22 | xmlError: "Δεν μπορώ να φορτώσω το αποθηκευμένο αρχείο σου. Μήπως δημιουργήθηκε από μία παλιότερη έκδοση του Blockly;", 23 | badXml: "Σφάλμα ανάλυσης XML:\n%1\n\nΕπίλεξε «Εντάξει» για να εγκαταλείψεις τις αλλαγές σου ή «Ακύρωση» για να επεξεργαστείς το XML κι άλλο." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/en.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Code", 3 | blocks: "Blocks", 4 | linkTooltip: "Save and link to blocks.", 5 | runTooltip: "Run the program defined by the blocks in the workspace.", 6 | badCode: "Program error:\n%1", 7 | timeout: "Maximum execution iterations exceeded.", 8 | trashTooltip: "Discard all blocks.", 9 | catLogic: "Logic", 10 | catLoops: "Loops", 11 | catMath: "Math", 12 | catText: "Text", 13 | catLists: "Lists", 14 | catColour: "Colour", 15 | catVariables: "Variables", 16 | catFunctions: "Functions", 17 | listVariable: "list", 18 | textVariable: "text", 19 | httpRequestError: "There was a problem with the request.", 20 | linkAlert: "Share your blocks with this link:\n\n%1", 21 | hashError: "Sorry, '%1' doesn't correspond with any saved program.", 22 | xmlError: "Could not load your saved file. Perhaps it was created with a different version of Blockly?", 23 | badXml: "Error parsing XML:\n%1\n\nSelect 'OK' to abandon your changes or 'Cancel' to further edit the XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/es.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Código", 3 | blocks: "Bloques", 4 | linkTooltip: "Guarda conexión a los bloques.", 5 | runTooltip: "Ejecute el programa definido por los bloques en el área de trabajo.", 6 | badCode: "Error del programa:\n%1", 7 | timeout: "Se excedio el máximo de iteraciones ejecutadas permitidas.", 8 | trashTooltip: "Descartar todos los bloques.", 9 | catLogic: "Lógica", 10 | catLoops: "Secuencias", 11 | catMath: "Matemáticas", 12 | catText: "Texto", 13 | catLists: "Listas", 14 | catColour: "Color", 15 | catVariables: "Variables", 16 | catFunctions: "Funciones", 17 | listVariable: "lista", 18 | textVariable: "texto", 19 | httpRequestError: "Hubo un problema con la petición.", 20 | linkAlert: "Comparte tus bloques con este enlace:\n\n%1", 21 | hashError: "«%1» no corresponde con ningún programa guardado.", 22 | xmlError: "No se pudo cargar el archivo guardado. ¿Quizá fue creado con otra versión de Blockly?", 23 | badXml: "Error de análisis XML:\n%1\n\nSelecciona OK para abandonar tus cambios o Cancelar para seguir editando el XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/fa.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "کد", 3 | blocks: "بلوک‌ها", 4 | linkTooltip: "ذخیره و پیوند به بلوک‌ها.", 5 | runTooltip: "اجرای برنامهٔ تعریف‌شده توسط بلوک‌ها در فضای کار.", 6 | badCode: "خطای برنامه:\n%1", 7 | timeout: "حداکثر تکرارهای اجرا رد شده‌است.", 8 | trashTooltip: "دورریختن همهٔ بلوک‌ها.", 9 | catLogic: "منطق", 10 | catLoops: "حلقه‌ها", 11 | catMath: "ریاضی", 12 | catText: "متن", 13 | catLists: "فهرست‌ها", 14 | catColour: "رنگ", 15 | catVariables: "متغییرها", 16 | catFunctions: "توابع", 17 | listVariable: "فهرست", 18 | textVariable: "متن", 19 | httpRequestError: "مشکلی با درخواست وجود داشت.", 20 | linkAlert: "اشتراک‌گذاری بلاک‌هایتان با این پیوند:\n\n%1", 21 | hashError: "شرمنده، «%1» با هیچ برنامهٔ ذخیره‌شده‌ای تطبیق پیدا نکرد.", 22 | xmlError: "نتوانست پروندهٔ ذخیرهٔ شما بارگیری شود. احتمالاً با نسخهٔ متفاوتی از بلوکی درست شده‌است؟", 23 | badXml: "خطای تجزیهٔ اکس‌ام‌ال:\n%1\n\n«باشد» را برای ذخیره و «فسخ» را برای ویرایش بیشتر اکس‌ام‌ال انتخاب کنید." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/fr.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Code", 3 | blocks: "Blocs", 4 | linkTooltip: "Sauvegarder et lier aux blocs.", 5 | runTooltip: "Lancer le programme défini par les blocs dans l’espace de travail.", 6 | badCode: "Erreur du programme :\n%1", 7 | timeout: "Nombre maximum d’itérations d’exécution dépassé.", 8 | trashTooltip: "Jeter tous les blocs.", 9 | catLogic: "Logique", 10 | catLoops: "Boucles", 11 | catMath: "Math", 12 | catText: "Texte", 13 | catLists: "Listes", 14 | catColour: "Couleur", 15 | catVariables: "Variables", 16 | catFunctions: "Fonctions", 17 | listVariable: "liste", 18 | textVariable: "texte", 19 | httpRequestError: "Il y a eu un problème avec la demande.", 20 | linkAlert: "Partagez vos blocs grâce à ce lien:\n\n%1", 21 | hashError: "Désolé, '%1' ne correspond à aucun programme sauvegardé.", 22 | xmlError: "Impossible de charger le fichier de sauvegarde. Peut être a t-il été créé avec une autre version de Blockly?", 23 | badXml: "Erreur d’analyse du XML :\n%1\n\nSélectionner 'OK' pour abandonner vos modifications ou 'Annuler' pour continuer à modifier le XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/he.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "קוד", 3 | blocks: "קטעי קוד", 4 | linkTooltip: "שמירה וקישור לקטעי קוד.", 5 | runTooltip: "הרצת התכנית שהוגדרה על ידי קטעי הקוד שבמרחב העבודה.", 6 | badCode: "שגיאה בתכנית: %1", 7 | timeout: "חריגה ממספר פעולות חוזרות אפשריות.", 8 | trashTooltip: "השלך את כל קטעי הקוד.", 9 | catLogic: "לוגיקה", 10 | catLoops: "לולאות", 11 | catMath: "מתמטיקה", 12 | catText: "טקסט", 13 | catLists: "רשימות", 14 | catColour: "צבע", 15 | catVariables: "משתנים", 16 | catFunctions: "פונקציות", 17 | listVariable: "רשימה", 18 | textVariable: "טקסט", 19 | httpRequestError: "הבקשה נכשלה.", 20 | linkAlert: "ניתן לשתף את קטעי הקוד שלך באמצעות קישור זה:\n\n%1", 21 | hashError: "לצערנו, '%1' איננו מתאים לאף אחת מהתוכניות השמורות", 22 | xmlError: "נסיון הטעינה של הקובץ השמור שלך נכשל. האם ייתכן שהוא נוצר בגרסא שונה של בלוקלי?", 23 | badXml: "תקלה בפענוח XML:\n\n%1\n\nנא לבחור 'אישור' כדי לנטוש את השינויים שלך או 'ביטול' כדי להמשיך ולערוך את ה־XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/hrx.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Code", 3 | blocks: "Bausten", 4 | linkTooltip: "Speichre und auf Bausten verlinke.", 5 | runTooltip: "Das Programm ausfüahre, das von den Bausten im Oorweitsbereich definiert ist.", 6 | badCode: "Programmfehler:\n%1", 7 | timeout: "Die maximale Ausführungswiederholunge woore üwerschritt.", 8 | trashTooltip: "All Bausten verwerfe.", 9 | catLogic: "Logik", 10 | catLoops: "Schleife", 11 | catMath: "Mathematik", 12 | catText: "Text", 13 | catLists: "Liste", 14 | catColour: "Farreb", 15 | catVariables: "Variable", 16 | catFunctions: "Funktione", 17 | listVariable: "List", 18 | textVariable: "Text", 19 | httpRequestError: "Mit der Oonfroch hots en Problem geb.", 20 | linkAlert: "Tel von dein Bausten mit dem Link:\n\n%1", 21 | hashError: "„%1“ stimmt leider mit kenem üweren gespeicherte Programm.", 22 | xmlError: "Dein gespeicherte Datei könnt net gelood sin. Vielleicht woard se mit ener annre Version von Blockly erstellt.", 23 | badXml: "Fehler beim Parse von XML:\n%1\n\nWähle 'OK' zum Verwerfe von deiner Ändrunge orrer 'Abbreche' zum XML weiter beoorbeite." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/hu.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kódszerkesztő", 3 | blocks: "Blokkok", 4 | linkTooltip: "Hivatkozás létrehozása", 5 | runTooltip: "Program futtatása.", 6 | badCode: "Program hiba:\n%1", 7 | timeout: "A program elérte a maximális végrehajtási időt.", 8 | trashTooltip: "Összes blokk törlése.", 9 | catLogic: "Logikai műveletek", 10 | catLoops: "Ciklusok", 11 | catMath: "Matematikai műveletek", 12 | catText: "Sztring műveletek", 13 | catLists: "Listakezelés", 14 | catColour: "Színek", 15 | catVariables: "Változók", 16 | catFunctions: "Eljárások", 17 | listVariable: "lista", 18 | textVariable: "szöveg", 19 | httpRequestError: "A kéréssel kapcsolatban probléma merült fel.", 20 | linkAlert: "Ezzel a hivatkozással tudod megosztani a programodat:\n\n%1", 21 | hashError: "Sajnos a '%1' hivatkozás nem tartozik egyetlen programhoz sem.", 22 | xmlError: "A programodat nem lehet betölteni. Elképzelhető, hogy a Blockly egy másik verziójában készült?", 23 | badXml: "Hiba az XML feldolgozásakor:\n%1\n\nVáltozások elvetése?" 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ia.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Codice", 3 | blocks: "Blocos", 4 | linkTooltip: "Salveguardar e ligar a blocos.", 5 | runTooltip: "Executar le programma definite per le blocos in le spatio de travalio.", 6 | badCode: "Error del programma:\n%1", 7 | timeout: "Le numero de iterationes executate ha excedite le maximo.", 8 | trashTooltip: "Abandonar tote le blocos.", 9 | catLogic: "Logica", 10 | catLoops: "Buclas", 11 | catMath: "Mathematica", 12 | catText: "Texto", 13 | catLists: "Listas", 14 | catColour: "Color", 15 | catVariables: "Variabiles", 16 | catFunctions: "Functiones", 17 | listVariable: "lista", 18 | textVariable: "texto", 19 | httpRequestError: "Il habeva un problema con le requesta.", 20 | linkAlert: "Divide tu blocos con iste ligamine:\n\n%1", 21 | hashError: "Infelicemente, '%1' non corresponde a alcun programma salveguardate.", 22 | xmlError: "Impossibile cargar le file salveguardate. Pote esser que illo ha essite create con un altere version de Blockly?", 23 | badXml: "Error de analyse del XML:\n%1\n\nSelige 'OK' pro abandonar le modificationes o 'Cancellar' pro continuar a modificar le codice XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/is.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kóði", 3 | blocks: "Kubbar", 4 | linkTooltip: "Vista og tengja við kubba.", 5 | runTooltip: "Keyra forritið sem kubbarnir á vinnusvæðinu mynda.", 6 | badCode: "Villa í forriti:\n%1", 7 | timeout: "Forritið hefur endurtekið sig of oft.", 8 | trashTooltip: "Fleygja öllum kubbum.", 9 | catLogic: "Rökvísi", 10 | catLoops: "Lykkjur", 11 | catMath: "Reikningur", 12 | catText: "Texti", 13 | catLists: "Listar", 14 | catColour: "Litir", 15 | catVariables: "Breytur", 16 | catFunctions: "Stefjur", 17 | listVariable: "listi", 18 | textVariable: "texti", 19 | httpRequestError: "Það kom upp vandamál með beiðnina.", 20 | linkAlert: "Deildu kubbunum þínum með þessari krækju:", 21 | hashError: "Því miður, '%1' passar ekki við neitt vistað forrit.", 22 | xmlError: "Gat ekki hlaðið vistuðu skrána þína. Var hún kannske búin til í annarri útgáfu af Blockly?", 23 | badXml: "Villa við úrvinnslu XML:\n%1\n\nVeldu 'Í lagi' til að sleppa breytingum eða 'Hætta við' til að halda áfram með XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/it.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Codice", 3 | blocks: "Blocchi", 4 | linkTooltip: "Salva e collega ai blocchi.", 5 | runTooltip: "Esegui il programma definito dai blocchi nell'area di lavoro.", 6 | badCode: "Errore programma:\n%1", 7 | timeout: "È stato superato il numero massimo consentito di interazioni eseguite.", 8 | trashTooltip: "Elimina tutti i blocchi.", 9 | catLogic: "Logica", 10 | catLoops: "Cicli", 11 | catMath: "Matematica", 12 | catText: "Testo", 13 | catLists: "Elenchi", 14 | catColour: "Colore", 15 | catVariables: "Variabili", 16 | catFunctions: "Funzioni", 17 | listVariable: "elenco", 18 | textVariable: "testo", 19 | httpRequestError: "La richiesta non è stata soddisfatta.", 20 | linkAlert: "Condividi i tuoi blocchi con questo collegamento:\n\n%1", 21 | hashError: "Mi spiace, '%1' non corrisponde ad alcun programma salvato.", 22 | xmlError: "Non è stato possibile caricare il documento. Forse è stato creato con una versione diversa di Blockly?", 23 | badXml: "Errore durante l'analisi XML:\n%1\n\nSeleziona 'OK' per abbandonare le modifiche o 'Annulla' per continuare a modificare l'XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ja.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "コード", 3 | blocks: "ブロック", 4 | linkTooltip: "ブロックの状態を保存してリンクを取得します。", 5 | runTooltip: "ブロックで作成したプログラムを実行します。", 6 | badCode: "プログラムのエラー:\n%1", 7 | timeout: "命令の実行回数が制限値を超えました。", 8 | trashTooltip: "すべてのブロックを消します。", 9 | catLogic: "論理", 10 | catLoops: "繰り返し", 11 | catMath: "数学", 12 | catText: "テキスト", 13 | catLists: "リスト", 14 | catColour: "色", 15 | catVariables: "変数", 16 | catFunctions: "関数", 17 | listVariable: "リスト", 18 | textVariable: "テキスト", 19 | httpRequestError: "ネットワーク接続のエラーです。", 20 | linkAlert: "ブロックの状態をこのリンクで共有できます:\n\n%1", 21 | hashError: "すみません。「%1」という名前のプログラムは保存されていません。", 22 | xmlError: "保存されたファイルを読み込めませんでした。別のバージョンのブロックリーで作成された可能性があります。", 23 | badXml: "XML のエラーです:\n%1\n\nXML の変更をやめるには「OK」、編集を続けるには「キャンセル」を選んでください。" 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ko.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "코드", 3 | blocks: "블록", 4 | linkTooltip: "블록을 저장하고 링크를 가져옵니다.", 5 | runTooltip: "작업 공간에서 블록으로 정의된 프로그램을 실행합니다.", 6 | badCode: "프로그램 오류:\n%1", 7 | timeout: "최대 실행 반복을 초과했습니다.", 8 | trashTooltip: "모든 블록을 버립니다.", 9 | catLogic: "논리", 10 | catLoops: "반복", 11 | catMath: "수학", 12 | catText: "텍스트", 13 | catLists: "목록", 14 | catColour: "색", 15 | catVariables: "변수", 16 | catFunctions: "기능", 17 | listVariable: "목록", 18 | textVariable: "텍스트", 19 | httpRequestError: "요청에 문제가 있습니다.", 20 | linkAlert: "다음 링크로 블록을 공유하세요:\n\n%1", 21 | hashError: "죄송하지만 '%1'은 어떤 저장된 프로그램으로 일치하지 않습니다.", 22 | xmlError: "저장된 파일을 불러올 수 없습니다. 혹시 블록리의 다른 버전으로 만들었습니까?", 23 | badXml: "XML 구문 분석 오류:\n%1\n\n바뀜을 포기하려면 '확인'을 선택하고 XML을 더 편집하려면 '취소'를 선택하세요." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/mk.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Код", 3 | blocks: "Блокчиња", 4 | linkTooltip: "Зачувај и стави врска до блокчињата.", 5 | runTooltip: "Пушти го програмот определен од блокчињата во работниот простор.", 6 | badCode: "Грешка во програмот:\n%1", 7 | timeout: "Го надминавте допуштениот број на повторувања во извршувањето.", 8 | trashTooltip: "Отстрани ги сите блокчиња.", 9 | catLogic: "Логика", 10 | catLoops: "Јамки", 11 | catMath: "Математика", 12 | catText: "Текст", 13 | catLists: "Списоци", 14 | catColour: "Боја", 15 | catVariables: "Променливи", 16 | catFunctions: "Функции", 17 | listVariable: "список", 18 | textVariable: "текст", 19 | httpRequestError: "Се појави проблем во барањето.", 20 | linkAlert: "Споделете ги вашите блокчиња со оваа врска:\n\n%1", 21 | hashError: "„%1“ не одговара на ниеден зачуван програм.", 22 | xmlError: "Не можев да ја вчитам зачуваната податотека. Да не сте ја создале со друга верзија на Blockly?", 23 | badXml: "Грешка при расчленувањето на XML:\n%1\n\nСтиснете на „ОК“ за да ги напуштите промените или на „Откажи“ ако сакате уште да ја уредувате XML-податотеката." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ms.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kod", 3 | blocks: "Blok", 4 | linkTooltip: "Simpan dan pautkan kepada blok.", 5 | runTooltip: "Jalankan aturcara yang ditetapkan oleh blok-blok di dalam ruang kerja.", 6 | badCode: "Ralat aturcara:\n%1", 7 | timeout: "Takat maksimum lelaran pelaksanaan dicecah.", 8 | trashTooltip: "Buang semua Blok.", 9 | catLogic: "Logik", 10 | catLoops: "Gelung", 11 | catMath: "Matematik", 12 | catText: "Teks", 13 | catLists: "Senarai", 14 | catColour: "Warna", 15 | catVariables: "Pemboleh ubah", 16 | catFunctions: "Fungsi", 17 | listVariable: "senarai", 18 | textVariable: "teks", 19 | httpRequestError: "Permintaan itu terdapat masalah.", 20 | linkAlert: "Kongsikan blok-blok anda dengan pautan ini:\n\n%1", 21 | hashError: "Maaf, '%1' tidak berpadanan dengan sebarang aturcara yang disimpan.", 22 | xmlError: "Fail simpanan anda tidak dapat dimuatkan. Jangan-jangan ia dicipta dengan versi Blockly yang berlainan?", 23 | badXml: "Ralat ketika menghuraikan XML:\n%1\n\nPilih 'OK' untuk melucutkan suntingan anda atau 'Batal' untuk bersambung menyunting XML-nya." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/nb.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kode", 3 | blocks: "Blokker", 4 | linkTooltip: "Lagre og lenke til blokker.", 5 | runTooltip: "Kjør programmet definert av blokken i arbeidsområdet.", 6 | badCode: "Programfeil:\n%1", 7 | timeout: "Det maksimale antallet utførte looper er oversteget.", 8 | trashTooltip: "Fjern alle blokker", 9 | catLogic: "Logikk", 10 | catLoops: "Looper", 11 | catMath: "Matte", 12 | catText: "Tekst", 13 | catLists: "Lister", 14 | catColour: "Farge", 15 | catVariables: "Variabler", 16 | catFunctions: "Funksjoner", 17 | listVariable: "Liste", 18 | textVariable: "Tekst", 19 | httpRequestError: "Det oppsto et problem med forespørselen din", 20 | linkAlert: "Del dine blokker med denne lenken:\n\n%1", 21 | hashError: "Beklager, '%1' samsvarer ikke med noe lagret program.", 22 | xmlError: "Kunne ikke laste inn filen. Kanskje den ble laget med en annen versjon av Blockly?", 23 | badXml: "Feil ved parsering av XML:\n%1\n\nVelg 'OK' for å avbryte endringene eller 'Cancel' for å fortsette å redigere XML-koden." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/nl.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Code", 3 | blocks: "Blokken", 4 | linkTooltip: "Opslaan en koppelen naar blokken.", 5 | runTooltip: "Voer het programma uit dat met de blokken in de werkruimte is gemaakt.", 6 | badCode: "Programmafout:\n%1", 7 | timeout: "Het maximale aantal iteraties is overschreden.", 8 | trashTooltip: "Alle blokken verwijderen", 9 | catLogic: "Logica", 10 | catLoops: "Lussen", 11 | catMath: "Formules", 12 | catText: "Tekst", 13 | catLists: "Lijsten", 14 | catColour: "Kleur", 15 | catVariables: "Variabelen", 16 | catFunctions: "Functies", 17 | listVariable: "lijst", 18 | textVariable: "tekst", 19 | httpRequestError: "Er is een probleem opgetreden tijdens het verwerken van het verzoek.", 20 | linkAlert: "Deel uw blokken via deze koppeling:\n\n%1", 21 | hashError: "\"%1\" komt helaas niet overeen met een opgeslagen bestand.", 22 | xmlError: "Uw opgeslagen bestand kan niet geladen worden. Is het misschien gemaakt met een andere versie van Blockly?", 23 | badXml: "Fout tijdens het verwerken van de XML:\n%1\n\nSelecteer \"OK\" om uw wijzigingen te negeren of \"Annuleren\" om de XML verder te bewerken." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/oc.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Còde", 3 | blocks: "Blòts", 4 | linkTooltip: "Salva e liga als blòts.", 5 | runTooltip: "Aviar lo programa definit pels blòts dins l’espaci de trabalh.", 6 | badCode: "Error del programa :\n%1", 7 | timeout: "Nombre maximum d’iteracions d’execucion depassat.", 8 | trashTooltip: "Getar totes los blòts.", 9 | catLogic: "Logic", 10 | catLoops: "Boclas", 11 | catMath: "Math", 12 | catText: "Tèxte", 13 | catLists: "Listas", 14 | catColour: "Color", 15 | catVariables: "Variablas", 16 | catFunctions: "Foncions", 17 | listVariable: "lista", 18 | textVariable: "tèxte", 19 | httpRequestError: "I a agut un problèma amb la demanda.", 20 | linkAlert: "Partejatz vòstres blòts gràcia a aqueste ligam :\n\n%1", 21 | hashError: "O planhèm, '%1' correspond pas a un fichièr Blockly salvament.", 22 | xmlError: "Impossible de cargar lo fichièr de salvament. Benlèu qu'es estat creat amb una autra version de Blockly ?", 23 | badXml: "Error d’analisi del XML :\n%1\n\nSeleccionar 'D'acòrdi' per abandonar vòstras modificacions o 'Anullar' per modificar encara lo XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/pl.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kod", 3 | blocks: "Bloki", 4 | linkTooltip: "Zapisz i podlinkuj do bloków", 5 | runTooltip: "Uruchom program zdefinowany przez bloki w obszarze roboczym", 6 | badCode: "Błąd programu:\n%1", 7 | timeout: "Maksymalna liczba iteracji wykonywań przekroczona", 8 | trashTooltip: "Odrzuć wszystkie bloki.", 9 | catLogic: "Logika", 10 | catLoops: "Pętle", 11 | catMath: "Matematyka", 12 | catText: "Tekst", 13 | catLists: "Listy", 14 | catColour: "Kolor", 15 | catVariables: "Zmienne", 16 | catFunctions: "Funkcje", 17 | listVariable: "lista", 18 | textVariable: "tekst", 19 | httpRequestError: "Wystąpił problem z żądaniem.", 20 | linkAlert: "Udpostępnij swoje bloki korzystając z poniższego linku : \n\n\n%1", 21 | hashError: "Przepraszamy, \"%1\" nie odpowiada żadnemu zapisanemu programowi.", 22 | xmlError: "Nie można załadować zapisanego pliku. Być może został utworzony za pomocą innej wersji Blockly?", 23 | badXml: "Błąd parsowania XML : \n%1\n\nZaznacz 'OK' aby odrzucić twoje zmiany lub 'Cancel', żeby w przyszłości edytować XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/pms.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Còdes", 3 | blocks: "Blòch", 4 | linkTooltip: "Argistré e lijé ai blòch.", 5 | runTooltip: "Fé andé ël programa definì dai blòch ant lë spassi ëd travaj.", 6 | badCode: "Eror dël programa:\n%1", 7 | timeout: "Nùmer màssim d'arpetission d'esecussion sorpassà.", 8 | trashTooltip: "Scarté tuti ij blòch.", 9 | catLogic: "Lògica", 10 | catLoops: "Liasse", 11 | catMath: "Matemàtica", 12 | catText: "Test", 13 | catLists: "Liste", 14 | catColour: "Color", 15 | catVariables: "Variàbij", 16 | catFunctions: "Fonsion", 17 | listVariable: "lista", 18 | textVariable: "test", 19 | httpRequestError: "A-i é staje un problema con l'arcesta.", 20 | linkAlert: "Ch'a partagia ij sò blòch grassie a sta liura: %1", 21 | hashError: "An dëspias, '%1 a corëspond a gnun programa salvà.", 22 | xmlError: "A l'é nen podusse carié so archivi salvà. Miraco a l'é stàit creà con na version diferenta ëd Blockly?", 23 | badXml: "Eror d'anàlisi dl'XML:\n%1\n\nSelessioné 'Va bin' për lassé perde toe modìfiche o 'Anulé' për modifiché ancora l'XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/pt-br.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Código", 3 | blocks: "Blocos", 4 | linkTooltip: "Salvar e ligar aos blocos.", 5 | runTooltip: "Execute o programa definido pelos blocos na área de trabalho.", 6 | badCode: "Erro no programa:\n%1", 7 | timeout: "Máximo de iterações de execução excedido.", 8 | trashTooltip: "Descartar todos os blocos.", 9 | catLogic: "Lógica", 10 | catLoops: "Laços", 11 | catMath: "Matemática", 12 | catText: "Texto", 13 | catLists: "Listas", 14 | catColour: "Cor", 15 | catVariables: "Variáveis", 16 | catFunctions: "Funções", 17 | listVariable: "lista", 18 | textVariable: "texto", 19 | httpRequestError: "Houve um problema com a requisição.", 20 | linkAlert: "Compartilhe seus blocos com este link:\n\n%1", 21 | hashError: "Desculpe, '%1' não corresponde a um programa salvo.", 22 | xmlError: "Não foi possível carregar seu arquivo salvo. Talvez ele tenha sido criado com uma versão diferente do Blockly?", 23 | badXml: "Erro de análise XML:\n%1\n\nSelecione 'OK' para abandonar suas mudanças ou 'Cancelar' para editar o XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ro.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Cod", 3 | blocks: "Blocuri", 4 | linkTooltip: "Salvează și adaugă la blocuri.", 5 | runTooltip: "Execută programul definit de către blocuri în spațiul de lucru.", 6 | badCode: "Eroare de program:\n%1", 7 | timeout: "Numărul maxim de iterații a fost depășit.", 8 | trashTooltip: "Șterge toate blocurile.", 9 | catLogic: "Logic", 10 | catLoops: "Bucle", 11 | catMath: "Matematică", 12 | catText: "Text", 13 | catLists: "Liste", 14 | catColour: "Culoare", 15 | catVariables: "Variabile", 16 | catFunctions: "Funcții", 17 | listVariable: "listă", 18 | textVariable: "text", 19 | httpRequestError: "A apărut o problemă la solicitare.", 20 | linkAlert: "Distribuie-ți blocurile folosind această legătură:\n\n%1", 21 | hashError: "Scuze, „%1” nu corespunde nici unui program salvat.", 22 | xmlError: "Sistemul nu a putut încărca fișierul salvat. Poate că a fost creat cu o altă versiune de Blockly?", 23 | badXml: "Eroare de parsare XML:\n%1\n\nAlege „OK” pentru a renunța la modificările efectuate sau „Revocare” pentru a modifica în continuare fișierul XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ru.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Код", 3 | blocks: "Блоки", 4 | linkTooltip: "Сохранить и показать ссылку на блоки.", 5 | runTooltip: "Запустить программу, заданную блоками в рабочей области.", 6 | badCode: "Ошибка программы:\n%1", 7 | timeout: "Превышено максимальное количество итераций.", 8 | trashTooltip: "Удалить все блоки.", 9 | catLogic: "Логические", 10 | catLoops: "Циклы", 11 | catMath: "Математика", 12 | catText: "Текст", 13 | catLists: "Списки", 14 | catColour: "Цвет", 15 | catVariables: "Переменные", 16 | catFunctions: "Функции", 17 | listVariable: "список", 18 | textVariable: "текст", 19 | httpRequestError: "Произошла проблема при запросе.", 20 | linkAlert: "Поделитесь своими блоками по этой ссылке:\n\n%1", 21 | hashError: "К сожалению, «%1» не соответствует ни одному сохраненному файлу Блокли.", 22 | xmlError: "Не удалось загрузить ваш сохраненный файл. Возможно, он был создан в другой версии Блокли?", 23 | badXml: "Ошибка синтаксического анализа XML:\n%1\n\nВыберите 'ОК', чтобы отказаться от изменений или 'Cancel' для дальнейшего редактирования XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/sc.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Còdixi", 3 | blocks: "Brocus", 4 | linkTooltip: "Sarva e alliòngia a is brocus.", 5 | runTooltip: "Arròllia su programa cumpostu de is brocus in s'àrea de traballu.", 6 | badCode: "Errori in su Programa:\n%1", 7 | timeout: "Giai lòmpius a su màssimu numeru de repicus.", 8 | trashTooltip: "Boganci totu is brocus.", 9 | catLogic: "Lògica", 10 | catLoops: "Lòrigas", 11 | catMath: "Matemàtica", 12 | catText: "Testu", 13 | catLists: "Lista", 14 | catColour: "Colori", 15 | catVariables: "Variabilis", 16 | catFunctions: "Funtzionis", 17 | listVariable: "lista", 18 | textVariable: "testu", 19 | httpRequestError: "Ddui fut unu problema cun sa pregunta", 20 | linkAlert: "Poni is brocus tuus in custu acàpiu:\n\n%1", 21 | hashError: "Mi dispraxit, '%1' non torrat a pari cun nimancu unu de is programas sarvaus.", 22 | xmlError: "Non potzu carrigai su file sarvau. Fortzis est stètiu fatu cun d-una versioni diferenti de Blockly?", 23 | badXml: "Errori in s'anàlisi XML:\n%1\n\nCraca 'OK' po perdi is mudàntzias 'Anudda' po sighì a scriri su XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/sk.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kód", 3 | blocks: "Bloky", 4 | linkTooltip: "Uložiť a zdieľať odkaz na tento program.", 5 | runTooltip: "Spustiť program, zložený z dielcov na pracovnej ploche.", 6 | badCode: "Chyba v programe:\n%1", 7 | timeout: "Bol prekročený maximálny počet opakovaní.", 8 | trashTooltip: "Zahodiť všetky dielce.", 9 | catLogic: "Logika", 10 | catLoops: "Cykly", 11 | catMath: "Matematické", 12 | catText: "Text", 13 | catLists: "Zoznamy", 14 | catColour: "Farby", 15 | catVariables: "Premenné", 16 | catFunctions: "Funkcie", 17 | listVariable: "zoznam", 18 | textVariable: "text", 19 | httpRequestError: "Problém so spracovaním požiadavky.", 20 | linkAlert: "Zdieľať tento program skopírovaním odkazu\n\n%1", 21 | hashError: "Prepáč, '%1' nie je meno žiadnemu uloženému programu.", 22 | xmlError: "Nebolo možné načítať uložený súbor. Možno bol vytvorený v inej verzii Blocky.", 23 | badXml: "Chyba pri parsovaní XML:\n%1\n\nStlačte 'OK' ak chcete zrušiť zmeny alebo 'Zrušiť' pre pokračovanie v úpravách XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/sr.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Кôд", 3 | blocks: "Блокови", 4 | linkTooltip: "Сачувајте и повежите са блоковима.", 5 | runTooltip: "Покрените програм заснован на блоковима у радном простору.", 6 | badCode: "Грешка у програму:\n%1", 7 | timeout: "Достигнут је максималан број понављања у извршавању.", 8 | trashTooltip: "Одбаците све блокове.", 9 | catLogic: "Логика", 10 | catLoops: "Петље", 11 | catMath: "Математика", 12 | catText: "Текст", 13 | catLists: "Спискови", 14 | catColour: "Боја", 15 | catVariables: "Променљиве", 16 | catFunctions: "Процедуре", 17 | listVariable: "списак", 18 | textVariable: "текст", 19 | httpRequestError: "Дошло је до проблема у захтеву.", 20 | linkAlert: "Делите своје блокове овом везом:\n\n%1", 21 | hashError: "„%1“ не одговара ниједном сачуваном програму.", 22 | xmlError: "Не могу да учитам сачувану датотеку. Можда је направљена другом верзијом Blockly-ја.", 23 | badXml: "Грешка при рашчлањивању XML-а:\n%1\n\nПритисните „У реду“ да напустите измене или „Откажи“ да наставите са уређивањем XML датотеке." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/sv.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kod", 3 | blocks: "Block", 4 | linkTooltip: "Spara och länka till block.", 5 | runTooltip: "Kör programmet som definierats av blocken i arbetsytan.", 6 | badCode: "Programfel:\n%1", 7 | timeout: "Det maximala antalet utförda loopar har överskridits.", 8 | trashTooltip: "Släng alla block.", 9 | catLogic: "Logik", 10 | catLoops: "Loopar", 11 | catMath: "Matematik", 12 | catText: "Text", 13 | catLists: "Listor", 14 | catColour: "Färg", 15 | catVariables: "Variabler", 16 | catFunctions: "Funktioner", 17 | listVariable: "lista", 18 | textVariable: "text", 19 | httpRequestError: "Det uppstod ett problem med begäran.", 20 | linkAlert: "Dela dina block med denna länk: \n\n%1", 21 | hashError: "Tyvärr, '%1' överensstämmer inte med något sparat program.", 22 | xmlError: "Kunde inte läsa din sparade fil. Den skapades kanske med en annan version av Blockly?", 23 | badXml: "Fel vid parsning av XML:\n%1\n\nKlicka på 'OK' för att strunta i dina ändringar eller 'Avbryt' för att fortsätta redigera XML-koden." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/ta.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "கணினி நிரல்", //Code 3 | blocks: "நிரல் துண்டு", //block 4 | linkTooltip: "சேமித்து நிரல் துண்டிற்கு இணைக்க", //save and link to block 5 | runTooltip: "பணிமனை நினைவகத்தில் இயக்குக", //Run the program defined by the blocks in the workspace. 6 | badCode: "கணினி நிரல் கோளாறு:\n%1", 7 | timeout: "அதிகபட்ச அடுக்கின் அளவை மீரியது", //max iters reached/exceeded 8 | trashTooltip: "நீக்கு", 9 | catLogic: "தர்க வகை", 10 | catLoops: "மடக்கு வாக்கியம்", 11 | catMath: "கணிதம்", 12 | catText: "உரை", 13 | catLists: "பட்டியல்", 14 | catColour: "வண்ணம்", 15 | catVariables: "மாறிகள்", 16 | catFunctions: "சார்புகள்", 17 | listVariable: "பட்டியல் மாறி", 18 | textVariable: "உரை சரம்", 19 | httpRequestError: "இந்த செயலை இயக்குவதில் கோளாறு ஏற்பட்டது", 20 | linkAlert: "இந்த சுட்டி வழியாக நிரல் துண்டுகளை பகிரவும்:\n\n%1", 21 | hashError: "'%1' : இது சேமித்த நிரலாக தெரியவில்லை.", 22 | xmlError: "உங்களது நிரலை காணவில்லை; வேறு Blockly அத்தியாயத்தில் சேமித்தீரா?", 23 | badXml: "XML பகுப்பதில் கோளாறு:\n%1\n\nOK' கிளிக் செய்தால் மாற்றங்கள் இழப்பீர்கள்; பிழைகளுடன் தொடர 'Cancel' கிளிக் செய்யவும்." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/th.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "เขียนโปรแกรม", 3 | blocks: "บล็อก", 4 | linkTooltip: "บันทึกและสร้างลิงก์มายังบล็อกเหล่านี้", 5 | runTooltip: "เรียกใช้โปรแกรมตามที่กำหนดไว้ด้วยบล็อกที่อยู่ในพื้นที่ทำงาน", 6 | badCode: "โปรแกรมเกิดข้อผิดพลาด:\n%1", 7 | timeout: "โปรแกรมทำงานซ้ำคำสั่งเดิมมากเกินไป", 8 | trashTooltip: "ยกเลิกบล็อกทั้งหมด", 9 | catLogic: "ตรรกะ", 10 | catLoops: "การวนซ้ำ", 11 | catMath: "คณิตศาสตร์", 12 | catText: "ข้อความ", 13 | catLists: "รายการ", 14 | catColour: "สี", 15 | catVariables: "ตัวแปร", 16 | catFunctions: "ฟังก์ชัน", 17 | listVariable: "รายการ", 18 | textVariable: "ข้อความ", 19 | httpRequestError: "มีปัญหาเกี่ยวกับการร้องขอ", 20 | linkAlert: "แบ่งปันบล็อกของคุณด้วยลิงก์นี้:\n\n%1", 21 | hashError: "เสียใจด้วย '%1' ไม่ตรงกับโปรแกรมใดๆ ที่เคยบันทึกเอาไว้เลย", 22 | xmlError: "ไม่สามารถโหลดไฟล์ที่บันทึกไว้ของคุณได้ บางทีมันอาจจะถูกสร้างขึ้นด้วย Blockly รุ่นอื่นที่แตกต่างกัน?", 23 | badXml: "เกิดข้อผิดพลาดในการแยกวิเคราะห์ XML:\n%1\n\nเลือก 'ตกลง' เพื่อละทิ้งการเปลี่ยนแปลงต่างๆ ที่ทำไว้ หรือเลือก 'ยกเลิก' เพื่อแก้ไข XML ต่อไป" 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/tlh.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "ngoq", 3 | blocks: "ngoghmey", 4 | linkTooltip: "", 5 | runTooltip: "", 6 | badCode: "Qagh:\n%1", 7 | timeout: "tlhoy nI'qu' poH.", 8 | trashTooltip: "", 9 | catLogic: "meq", 10 | catLoops: "vIHtaHbogh ghomey", 11 | catMath: "mI'QeD", 12 | catText: "ghItlhHommey", 13 | catLists: "tetlhmey", 14 | catColour: "rItlh", 15 | catVariables: "lIwmey", 16 | catFunctions: "mIwmey", 17 | listVariable: "tetlh", 18 | textVariable: "ghItlhHom", 19 | httpRequestError: "Qapbe' tlhobmeH QIn.", 20 | linkAlert: "latlhvaD ngoghmeylIj DangeHmeH Quvvam yIlo':\n\n%1", 21 | hashError: "Do'Ha', ngogh nab pollu'pu'bogh 'oHbe'law' \"%1\"'e'.", 22 | xmlError: "ngogh nablIj pollu'pu'bogh chu'qa'laHbe' vay'. chaq pollu'pu'DI' ghunmeH ngogh pIm lo'lu'pu'.", 23 | badXml: "XML yajchu'laHbe' vay':\n%1\n\nchoHmeylIj DalonmeH \"ruch\" yIwIv pagh XML DachoHqa'meH \"qIl\" yIwIv." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/tr.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Kod", 3 | blocks: "Bloklar", 4 | linkTooltip: "Blokları ve bağlantı adresini kaydet.", 5 | runTooltip: "Çalışma alanında bloklar tarafından tanımlanan programını çalıştırın.", 6 | badCode: "Program hatası:\n %1", 7 | timeout: "Maksimum yürütme yinelemeleri aşıldı.", 8 | trashTooltip: "Bütün blokları at.", 9 | catLogic: "Mantık", 10 | catLoops: "Döngüler", 11 | catMath: "Matematik", 12 | catText: "Metin", 13 | catLists: "Listeler", 14 | catColour: "Renk", 15 | catVariables: "Değişkenler", 16 | catFunctions: "İşlevler", 17 | listVariable: "liste", 18 | textVariable: "metin", 19 | httpRequestError: "İstek ile ilgili bir problem var.", 20 | linkAlert: "Bloklarını bu bağlantı ile paylaş:\n\n%1", 21 | hashError: "Üzgünüz, '%1' hiç bir kaydedilmiş program ile uyuşmuyor.", 22 | xmlError: "Kaydedilen dosyanız yüklenemiyor\nBlockly'nin önceki sürümü ile kaydedilmiş olabilir mi?", 23 | badXml: "XML ayrıştırma hatası:\n%1\n\nDeğişikliklerden vazgeçmek için 'Tamam'ı, düzenlemeye devam etmek için 'İptal' seçeneğini seçiniz." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/uk.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Код", 3 | blocks: "Блоки", 4 | linkTooltip: "Зберегти і пов'язати з блоками.", 5 | runTooltip: "Запустіть програму, визначену блоками у робочій області.", 6 | badCode: "Помилка програми:\n%1", 7 | timeout: "Максимальне виконання ітерацій перевищено.", 8 | trashTooltip: "Відкинути всі блоки.", 9 | catLogic: "Логіка", 10 | catLoops: "Петлі", 11 | catMath: "Математика", 12 | catText: "Текст", 13 | catLists: "Списки", 14 | catColour: "Колір", 15 | catVariables: "Змінні", 16 | catFunctions: "Функції", 17 | listVariable: "список", 18 | textVariable: "текст", 19 | httpRequestError: "Виникла проблема із запитом.", 20 | linkAlert: "Поділитися вашим блоками через посилання:\n\n%1", 21 | hashError: "На жаль, \"%1\" не відповідає жодній збереженій програмі.", 22 | xmlError: "Не вдалося завантажити ваш збережений файл. Можливо, він був створений з іншої версії Blockly?", 23 | badXml: "Помилка синтаксичного аналізу XML:\n%1\n\nВиберіть \"Гаразд\", щоб відмовитися від змін або 'Скасувати' для подальшого редагування XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/vi.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "Chương trình", 3 | blocks: "Các mảnh", 4 | linkTooltip: "Lưu và lấy địa chỉ liên kết.", 5 | runTooltip: "Chạy chương trình.", 6 | badCode: "'Lỗi chương trình:\n%1", 7 | timeout: "Đã vượt quá số lần lặp cho phép.", 8 | trashTooltip: "Xóa tất cả mọi mảnh.", 9 | catLogic: "Logic", 10 | catLoops: "Vòng lặp", 11 | catMath: "Công thức toán", 12 | catText: "Văn bản", 13 | catLists: "Danh sách", 14 | catColour: "Màu", 15 | catVariables: "Biến", 16 | catFunctions: "Hàm", 17 | listVariable: "danh sách", 18 | textVariable: "văn bản", 19 | httpRequestError: "Hoạt động bị trục trặc, không thực hiện được yêu cầu của bạn.", 20 | linkAlert: "Chia sẻ chương trình của bạn với liên kết sau:\n\n %1", 21 | hashError: "Không tìm thấy chương trình được lưu ở '%1'.", 22 | xmlError: "Không mở được chương trình của bạn. Có thể nó nằm trong một phiên bản khác của Blockly?", 23 | badXml: "Lỗi sử lý XML:\n %1\n\nChọn 'OK' để từ bỏ các thay đổi hoặc 'Hủy' để tiếp tục chỉnh sửa các XML." 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/zh-hans.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "代码", 3 | blocks: "块", 4 | linkTooltip: "保存模块并生成链接。", 5 | runTooltip: "于工作区中运行块所定义的程式。", 6 | badCode: "程序错误:\n%1", 7 | timeout: "超过最大执行行数。", 8 | trashTooltip: "放弃所有块。", 9 | catLogic: "逻辑", 10 | catLoops: "循环", 11 | catMath: "数学", 12 | catText: "文本", 13 | catLists: "列表", 14 | catColour: "颜色", 15 | catVariables: "变量", 16 | catFunctions: "函数", 17 | listVariable: "列表", 18 | textVariable: "文本", 19 | httpRequestError: "请求存在问题。", 20 | linkAlert: "通过这个链接分享您的模块:\n\n%1", 21 | hashError: "对不起,没有任何已保存的程序对应'%1' 。", 22 | xmlError: "无法载入您保存的文件。您是否使用其他版本的Blockly创建该文件的?", 23 | badXml: "XML解析错误:\n%1\n\n选择“确定”以取消您对XML的修改,或选择“取消”以继续编辑XML。" 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/code/msg/zh-hant.js: -------------------------------------------------------------------------------- 1 | var MSG = { 2 | title: "程式碼", 3 | blocks: "積木", 4 | linkTooltip: "儲存積木組並提供連結。", 5 | runTooltip: "於工作區中執行積木組所定義的程式。", 6 | badCode: "程式錯誤:\n%1", 7 | timeout: "超過最大執行數。", 8 | trashTooltip: "捨棄所有積木。", 9 | catLogic: "邏輯", 10 | catLoops: "迴圈", 11 | catMath: "數學式", 12 | catText: "文字", 13 | catLists: "列表", 14 | catColour: "顏色", 15 | catVariables: "變量", 16 | catFunctions: "流程", 17 | listVariable: "列表", 18 | textVariable: "文字", 19 | httpRequestError: "命令出現錯誤。", 20 | linkAlert: "透過此連結分享您的積木組:\n\n%1", 21 | hashError: "對不起,「%1」並未對應任何已保存的程式。", 22 | xmlError: "未能載入您保存的檔案。或許它是由其他版本的Blockly創建?", 23 | badXml: "解析 XML 時出現錯誤:\n%1\n\n選擇'確定'以放棄您的更改,或選擇'取消'以進一步編輯 XML。" 24 | }; 25 | -------------------------------------------------------------------------------- /blockly/demos/fixed/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/fixed/icon.png -------------------------------------------------------------------------------- /blockly/demos/fixed/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blockly Demo: Fixed Blockly 6 | 7 | 8 | 9 | 19 | 20 | 21 |

Blockly > 22 | Demos > Fixed Blockly

23 | 24 |

This is a simple demo of injecting Blockly into a fixed-sized 'div' element.

25 | 26 |

→ More info on injecting fixed-sized Blockly

27 | 28 |
29 | 30 | 39 | 40 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /blockly/demos/generator/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/generator/icon.png -------------------------------------------------------------------------------- /blockly/demos/graph/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/graph/icon.png -------------------------------------------------------------------------------- /blockly/demos/headless/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/headless/icon.png -------------------------------------------------------------------------------- /blockly/demos/interpreter/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/interpreter/icon.png -------------------------------------------------------------------------------- /blockly/demos/maxBlocks/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/maxBlocks/icon.png -------------------------------------------------------------------------------- /blockly/demos/mirror/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/mirror/icon.png -------------------------------------------------------------------------------- /blockly/demos/plane/README.txt: -------------------------------------------------------------------------------- 1 | This Blockly demo uses Closure Templates to create a multilingual application. 2 | Any changes to the template.soy file require a recompile. Here is the command 3 | to generate a quick English version for debugging: 4 | 5 | java -jar soy/SoyToJsSrcCompiler.jar --outputPathFormat generated/en.js --srcs template.soy 6 | 7 | To generate a full set of language translations, first extract all the strings 8 | from template.soy using this command: 9 | 10 | java -jar soy/SoyMsgExtractor.jar --outputFile xlf/extracted_msgs.xlf template.soy 11 | 12 | This generates xlf/extracted_msgs.xlf, which may then be used by any 13 | XLIFF-compatible translation console to generate a set of files with the 14 | translated strings. These should be placed in the xlf directory. 15 | 16 | Finally, generate all the language versions wih this command: 17 | 18 | java -jar soy/SoyToJsSrcCompiler.jar --locales ar,be-tarask,br,ca,da,de,el,en,es,fa,fr,he,hrx,hu,ia,is,it,ja,ko,ms,nb,nl,pl,pms,pt-br,ro,ru,sc,sv,th,tr,uk,vi,zh-hans,zh-hant --messageFilePathFormat xlf/translated_msgs_{LOCALE}.xlf --outputPathFormat "generated/{LOCALE}.js" template.soy 19 | 20 | This is the process that Google uses for maintaining Blockly Games in 40+ 21 | languages. The XLIFF fromat is simple enough that it is trival to write a 22 | Python script to reformat it into some other format (such as JSON) for 23 | compatability with other translation consoles. 24 | 25 | For more information, see message translation for Closure Templates: 26 | https://developers.google.com/closure/templates/docs/translation 27 | -------------------------------------------------------------------------------- /blockly/demos/plane/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/plane/icon.png -------------------------------------------------------------------------------- /blockly/demos/plane/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Blockly Demo: 7 | 8 | 9 | 10 | 11 | 12 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /blockly/demos/plane/soy/README: -------------------------------------------------------------------------------- 1 | // Copyright 2009 Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | 16 | Contents: 17 | 18 | + SoyToJsSrcCompiler.jar 19 | Executable jar that compiles template files into JavaScript files. 20 | 21 | + SoyMsgExtractor.jar 22 | Executable jar that extracts messages from template files into XLF files. 23 | 24 | + soyutils.js 25 | Helper utilities required by all JavaScript code that SoyToJsSrcCompiler 26 | generates. Equivalent functionality to soyutils_usegoog.js, but this 27 | version does not need Closure Library. 28 | 29 | 30 | Instructions: 31 | 32 | + A simple Hello World for JavaScript: 33 | http://code.google.com/closure/templates/docs/helloworld_js.html 34 | 35 | + Complete documentation: 36 | http://code.google.com/closure/templates/ 37 | 38 | + Closure Templates project on Google Code: 39 | http://code.google.com/p/closure-templates/ 40 | 41 | 42 | Notes: 43 | 44 | + Closure Templates requires Java 6 or higher: 45 | http://www.java.com/ 46 | -------------------------------------------------------------------------------- /blockly/demos/plane/soy/SoyMsgExtractor.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/plane/soy/SoyMsgExtractor.jar -------------------------------------------------------------------------------- /blockly/demos/plane/soy/SoyToJsSrcCompiler.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/plane/soy/SoyToJsSrcCompiler.jar -------------------------------------------------------------------------------- /blockly/demos/plane/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | font-family: sans-serif; 4 | margin-top: 0; 5 | } 6 | h1 { 7 | font-weight: normal; 8 | font-size: 140%; 9 | } 10 | .farSide { 11 | text-align: right; 12 | } 13 | html[dir="RTL"] .farSide { 14 | text-align: left; 15 | } 16 | .tab { 17 | padding: 6px 12px; 18 | text-decoration: none; 19 | color: #000; 20 | } 21 | #selected { 22 | font-weight: bold; 23 | background-color: #ddd; 24 | border-radius: 20px; 25 | } 26 | 27 | /* Pulse the language menu once to draw attention to it. */ 28 | #languageBorder { 29 | border-radius: 4px; 30 | animation: pulse 2s ease-in-out forwards; 31 | -webkit-animation: pulse 2s ease-in-out forwards; 32 | animation-delay: 2s; 33 | -webkit-animation-delay: 2s; 34 | } 35 | @keyframes pulse { 36 | 0% { background-color: #fff } 37 | 50% { background-color: #f00 } 38 | 100% { background-color: #fff } 39 | } 40 | @-webkit-keyframes pulse { 41 | 0% { background-color: #fff } 42 | 50% { background-color: #f00 } 43 | 100% { background-color: #fff } 44 | } 45 | 46 | #blockly { 47 | height: 300px; 48 | width: 100%; 49 | border-style: solid; 50 | border-color: #ddd; 51 | border-width: 0 1px 1px 0; 52 | } 53 | 54 | /* SVG Plane. */ 55 | #plane { 56 | overflow: hidden; 57 | } 58 | #fuselage { 59 | fill: #fff; 60 | stroke: #000; 61 | } 62 | #wing, #tail { 63 | fill: #ddd; 64 | stroke: #444; 65 | } 66 | .crew { 67 | fill: #f44; 68 | stroke: #000; 69 | } 70 | .seat1st { 71 | fill: #88f; 72 | stroke: #000; 73 | } 74 | .seat2nd { 75 | fill: #8b8; 76 | stroke: #000; 77 | } 78 | #seatYes, #seatNo { 79 | font-size: 40pt; 80 | } 81 | text { 82 | font-family: sans-serif; 83 | font-size: 20pt; 84 | fill: #444; 85 | } 86 | html[dir="RTL"] #plane text { 87 | text-anchor: end; 88 | } 89 | 90 | /* Slider. */ 91 | .sliderTrack { 92 | stroke: #aaa; 93 | stroke-width: 6px; 94 | stroke-linecap: round; 95 | } 96 | .sliderKnob { 97 | fill: #ddd; 98 | stroke: #bbc; 99 | stroke-width: 1px; 100 | stroke-linejoin: round; 101 | } 102 | .sliderKnob:hover { 103 | fill: #eee; 104 | } 105 | -------------------------------------------------------------------------------- /blockly/demos/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /blockly/demos/resizable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/resizable/icon.png -------------------------------------------------------------------------------- /blockly/demos/resizable/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blockly Demo: Resizable Blockly (Part 1) 6 | 30 | 31 | 32 | 33 | 34 | 44 | 45 | 46 | 49 | 50 |
35 |

Blockly > 36 | Demos > Resizable Blockly (Part 1)

37 | 38 |

The first step in creating a resizable Blockly workspace is to use 39 | CSS or tables to create an area for it. 40 | Next, inject Blockly over that area.

41 | 42 |

→ More info on injecting resizable Blockly

43 |
47 | Blockly will be positioned here. 48 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /blockly/demos/rtl/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/rtl/icon.png -------------------------------------------------------------------------------- /blockly/demos/storage/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/storage/icon.png -------------------------------------------------------------------------------- /blockly/demos/toolbox/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/demos/toolbox/icon.png -------------------------------------------------------------------------------- /blockly/generators/arduino/colour.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Generating Arduino code for colour blocks. 8 | * 9 | * TODO: These blocks do not really serve a purpose for Arduino code. 10 | */ 11 | 12 | 'use strict'; 13 | 14 | goog.provide('Blockly.Arduino.colour'); 15 | 16 | goog.require('Blockly.Arduino'); 17 | 18 | 19 | Blockly.Arduino['colour_picker'] = Blockly.Arduino.noGeneratorCodeInline; 20 | 21 | Blockly.Arduino['colour_random'] = Blockly.Arduino.noGeneratorCodeInline; 22 | 23 | Blockly.Arduino['colour_rgb'] = Blockly.Arduino.noGeneratorCodeInline; 24 | 25 | Blockly.Arduino['colour_blend'] = Blockly.Arduino.noGeneratorCodeInline; 26 | -------------------------------------------------------------------------------- /blockly/generators/arduino/lists.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Generating Arduino code for list blocks. 8 | * 9 | * TODO: A lot of this can be converted to arrays code by creating functions to 10 | * replicate this kind of behavior. 11 | */ 12 | 'use strict'; 13 | 14 | goog.provide('Blockly.Arduino.lists'); 15 | 16 | goog.require('Blockly.Arduino'); 17 | 18 | 19 | Blockly.Arduino['lists_create_empty'] = Blockly.Arduino.noGeneratorCodeInline; 20 | 21 | Blockly.Arduino['lists_create_with'] = Blockly.Arduino.noGeneratorCodeInline; 22 | 23 | Blockly.Arduino['lists_repeat'] = Blockly.Arduino.noGeneratorCodeInline; 24 | 25 | Blockly.Arduino['lists_length'] = Blockly.Arduino.noGeneratorCodeInline; 26 | 27 | Blockly.Arduino['lists_isEmpty'] = Blockly.Arduino.noGeneratorCodeInline; 28 | 29 | Blockly.Arduino['lists_indexOf'] = Blockly.Arduino.noGeneratorCodeInline; 30 | 31 | Blockly.Arduino['lists_getIndex'] = Blockly.Arduino.noGeneratorCodeInline; 32 | 33 | Blockly.Arduino['lists_setIndex'] = Blockly.Arduino.noGeneratorCodeLine; 34 | -------------------------------------------------------------------------------- /blockly/generators/arduino/map.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Code generator for the Arduino map functionality. 8 | * Arduino built-in function docs: http://arduino.cc/en/Reference/HomePage 9 | */ 10 | 'use strict'; 11 | 12 | goog.provide('Blockly.Arduino.map'); 13 | 14 | goog.require('Blockly.Arduino'); 15 | 16 | 17 | /** 18 | * Code generator for the map block. 19 | * Arduino code: loop { map(x, 0, 1024, 0, y) } 20 | * @param {!Blockly.Block} block Block to generate the code from. 21 | * @return {array} Completed code with order of operation. 22 | */ 23 | Blockly.Arduino['base_map'] = function(block) { 24 | var valueNum = Blockly.Arduino.valueToCode( 25 | block, 'NUM', Blockly.Arduino.ORDER_NONE) || '0'; 26 | var valueDmax = Blockly.Arduino.valueToCode( 27 | block, 'DMAX', Blockly.Arduino.ORDER_ATOMIC) || '0'; 28 | 29 | var code = 'map(' + valueNum + ', 0, 1024, 0, ' + valueDmax + ')'; 30 | return [code, Blockly.Arduino.ORDER_NONE]; 31 | }; 32 | -------------------------------------------------------------------------------- /blockly/generators/arduino/serial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Code generator for the Arduino serial blocks. 8 | * Arduino Serial library docs: https://www.arduino.cc/en/Reference/Serial 9 | * 10 | * TODO: There are more functions that can be added: 11 | * http://arduino.cc/en/Reference/Serial 12 | */ 13 | 'use strict'; 14 | 15 | goog.provide('Blockly.Arduino.serial'); 16 | 17 | goog.require('Blockly.Arduino'); 18 | 19 | 20 | /** 21 | * Code generator of block for writing to the serial com. 22 | * Arduino code: loop { Serial.print(X); } 23 | * @param {!Blockly.Block} block Block to generate the code from. 24 | * @return {string} Completed code. 25 | */ 26 | Blockly.Arduino['serial_print'] = function(block) { 27 | var serialId = block.getFieldValue('SERIAL_ID'); 28 | var content = Blockly.Arduino.valueToCode( 29 | block, 'CONTENT', Blockly.Arduino.ORDER_ATOMIC) || '0'; 30 | var checkbox_name = (block.getFieldValue('NEW_LINE') == 'TRUE'); 31 | 32 | var serialPins = Blockly.Arduino.Boards.selected.serialPins[serialId]; 33 | for (var i = 0; i < serialPins.length; i++) { 34 | Blockly.Arduino.reservePin(block, serialPins[i][1], 35 | Blockly.Arduino.PinTypes.SERIAL, 'SERIAL ' + serialPins[i][0]); 36 | } 37 | 38 | if (checkbox_name) { 39 | var code = serialId + '.println(' + content + ');\n'; 40 | } else { 41 | var code = serialId + '.print(' + content + ');\n'; 42 | } 43 | return code; 44 | }; 45 | 46 | /** 47 | * Code generator for block for setting the serial com speed. 48 | * Arduino code: setup{ Serial.begin(X); } 49 | * @param {!Blockly.Block} block Block to generate the code from. 50 | * @return {array} Completed code. 51 | */ 52 | Blockly.Arduino['serial_setup'] = function(block) { 53 | var serialId = block.getFieldValue('SERIAL_ID'); 54 | var serialSpeed = block.getFieldValue('SPEED'); 55 | var serialSetupCode = serialId + '.begin(' + serialSpeed + ');'; 56 | Blockly.Arduino.addSetup('serial_' + serialId, serialSetupCode, true); 57 | var code = ''; 58 | return code; 59 | }; 60 | -------------------------------------------------------------------------------- /blockly/generators/arduino/tone.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Code generator for Arduino Digital and Analogue input/output. 8 | * Arduino built in function docs: http://arduino.cc/en/Reference/HomePage 9 | */ 10 | 'use strict'; 11 | 12 | goog.provide('Blockly.Arduino.tone'); 13 | 14 | goog.require('Blockly.Arduino'); 15 | 16 | 17 | /** 18 | * Function for turning the tone library on on a given pin (X). 19 | * Arduino code: setup { pinMode(X, OUTPUT) } 20 | * loop { tone(X, frequency) } 21 | * @param {!Blockly.Block} block Block to generate the code from. 22 | * @return {array} Completed code with order of operation. 23 | */ 24 | 25 | Blockly.Arduino['io_tone'] = function(block) { 26 | var pin = block.getFieldValue('TONEPIN'); 27 | var freq = Blockly.Arduino.valueToCode(block, 'FREQUENCY', Blockly.Arduino.ORDER_ATOMIC); 28 | Blockly.Arduino.reservePin( 29 | block, pin, Blockly.Arduino.PinTypes.OUTPUT, 'Tone Pin'); 30 | 31 | var pinSetupCode = 'pinMode(' + pin + ', OUTPUT);\n'; 32 | Blockly.Arduino.addSetup('io_' + pin, pinSetupCode, false); 33 | 34 | var code = 'tone(' + pin + ',' + freq + ');\n'; 35 | return code; 36 | }; 37 | 38 | Blockly.Arduino['io_notone'] = function(block) { 39 | var pin = block.getFieldValue("TONEPIN"); 40 | Blockly.Arduino.reservePin( 41 | block, pin, Blockly.Arduino.PinTypes.OUTPUT, 'Tone Pin'); 42 | 43 | var pinSetupCode = 'pinMode(' + pin + ', OUTPUT);\n'; 44 | Blockly.Arduino.addSetup('io_' + pin, pinSetupCode, false); 45 | 46 | var code = 'noTone(' + pin + ');\n'; 47 | return code; 48 | }; 49 | -------------------------------------------------------------------------------- /blockly/generators/arduino/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Generating Arduino code for variables blocks. 8 | */ 9 | 'use strict'; 10 | 11 | goog.provide('Blockly.Arduino.variables'); 12 | 13 | goog.require('Blockly.Arduino'); 14 | 15 | 16 | /** 17 | * Code generator for variable (X) getter. 18 | * Arduino code: loop { X } 19 | * @param {Blockly.Block} block Block to generate the code from. 20 | * @return {array} Completed code with order of operation. 21 | */ 22 | Blockly.Arduino['variables_get'] = function(block) { 23 | var code = Blockly.Arduino.variableDB_.getName(block.getFieldValue('VAR'), 24 | Blockly.Variables.NAME_TYPE); 25 | return [code, Blockly.Arduino.ORDER_ATOMIC]; 26 | }; 27 | 28 | /** 29 | * Code generator for variable (X) setter (Y). 30 | * Arduino code: type X; 31 | * loop { X = Y; } 32 | * @param {Blockly.Block} block Block to generate the code from. 33 | * @return {string} Completed code. 34 | */ 35 | Blockly.Arduino['variables_set'] = function(block) { 36 | var argument0 = Blockly.Arduino.valueToCode(block, 'VALUE', 37 | Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; 38 | var varName = Blockly.Arduino.variableDB_.getName( 39 | block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); 40 | return varName + ' = ' + argument0 + ';\n'; 41 | }; 42 | 43 | /** 44 | * Code generator for variable (X) casting (Y). 45 | * Arduino code: loop { (Y)X } 46 | * @param {Blockly.Block} block Block to generate the code from. 47 | * @return {array} Completed code with order of operation. 48 | */ 49 | Blockly.Arduino['variables_set_type'] = function(block) { 50 | var argument0 = Blockly.Arduino.valueToCode(block, 'VARIABLE_SETTYPE_INPUT', 51 | Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; 52 | var varType = Blockly.Arduino.getArduinoType_( 53 | Blockly.Types[block.getFieldValue('VARIABLE_SETTYPE_TYPE')]); 54 | var code = '(' + varType + ')(' + argument0 + ')'; 55 | return [code, Blockly.Arduino.ORDER_ATOMIC]; 56 | }; 57 | -------------------------------------------------------------------------------- /blockly/generators/dart/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Language 4 | * 5 | * Copyright 2014 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Generating Dart for variable blocks. 23 | * @author fraser@google.com (Neil Fraser) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.Dart.variables'); 28 | 29 | goog.require('Blockly.Dart'); 30 | 31 | 32 | Blockly.Dart['variables_get'] = function(block) { 33 | // Variable getter. 34 | var code = Blockly.Dart.variableDB_.getName(block.getFieldValue('VAR'), 35 | Blockly.Variables.NAME_TYPE); 36 | return [code, Blockly.Dart.ORDER_ATOMIC]; 37 | }; 38 | 39 | Blockly.Dart['variables_set'] = function(block) { 40 | // Variable setter. 41 | var argument0 = Blockly.Dart.valueToCode(block, 'VALUE', 42 | Blockly.Dart.ORDER_ASSIGNMENT) || '0'; 43 | var varName = Blockly.Dart.variableDB_.getName(block.getFieldValue('VAR'), 44 | Blockly.Variables.NAME_TYPE); 45 | return varName + ' = ' + argument0 + ';\n'; 46 | }; 47 | -------------------------------------------------------------------------------- /blockly/generators/javascript/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Language 4 | * 5 | * Copyright 2012 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Generating JavaScript for variable blocks. 23 | * @author fraser@google.com (Neil Fraser) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.JavaScript.variables'); 28 | 29 | goog.require('Blockly.JavaScript'); 30 | 31 | 32 | Blockly.JavaScript['variables_get'] = function(block) { 33 | // Variable getter. 34 | var code = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('VAR'), 35 | Blockly.Variables.NAME_TYPE); 36 | return [code, Blockly.JavaScript.ORDER_ATOMIC]; 37 | }; 38 | 39 | Blockly.JavaScript['variables_set'] = function(block) { 40 | // Variable setter. 41 | var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', 42 | Blockly.JavaScript.ORDER_ASSIGNMENT) || '0'; 43 | var varName = Blockly.JavaScript.variableDB_.getName( 44 | block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); 45 | return varName + ' = ' + argument0 + ';\n'; 46 | }; 47 | -------------------------------------------------------------------------------- /blockly/generators/lua/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Language 4 | * 5 | * Copyright 2016 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Generating Lua for variable blocks. 23 | * @author rodrigoq@google.com (Rodrigo Queiro) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.Lua.variables'); 28 | 29 | goog.require('Blockly.Lua'); 30 | 31 | 32 | Blockly.Lua['variables_get'] = function(block) { 33 | // Variable getter. 34 | var code = Blockly.Lua.variableDB_.getName(block.getFieldValue('VAR'), 35 | Blockly.Variables.NAME_TYPE); 36 | return [code, Blockly.Lua.ORDER_ATOMIC]; 37 | }; 38 | 39 | Blockly.Lua['variables_set'] = function(block) { 40 | // Variable setter. 41 | var argument0 = Blockly.Lua.valueToCode(block, 'VALUE', 42 | Blockly.Lua.ORDER_NONE) || '0'; 43 | var varName = Blockly.Lua.variableDB_.getName( 44 | block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); 45 | return varName + ' = ' + argument0 + '\n'; 46 | }; 47 | -------------------------------------------------------------------------------- /blockly/generators/php/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Language 4 | * 5 | * Copyright 2015 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Generating PHP for variable blocks. 23 | * @author daarond@gmail.com (Daaron Dwyer) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.PHP.variables'); 28 | 29 | goog.require('Blockly.PHP'); 30 | 31 | 32 | Blockly.PHP['variables_get'] = function(block) { 33 | // Variable getter. 34 | var code = Blockly.PHP.variableDB_.getName(block.getFieldValue('VAR'), 35 | Blockly.Variables.NAME_TYPE); 36 | return [code, Blockly.PHP.ORDER_ATOMIC]; 37 | }; 38 | 39 | Blockly.PHP['variables_set'] = function(block) { 40 | // Variable setter. 41 | var argument0 = Blockly.PHP.valueToCode(block, 'VALUE', 42 | Blockly.PHP.ORDER_ASSIGNMENT) || '0'; 43 | var varName = Blockly.PHP.variableDB_.getName( 44 | block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); 45 | return varName + ' = ' + argument0 + ';\n'; 46 | }; -------------------------------------------------------------------------------- /blockly/generators/python/variables.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Visual Blocks Language 4 | * 5 | * Copyright 2012 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | /** 22 | * @fileoverview Generating Python for variable blocks. 23 | * @author q.neutron@gmail.com (Quynh Neutron) 24 | */ 25 | 'use strict'; 26 | 27 | goog.provide('Blockly.Python.variables'); 28 | 29 | goog.require('Blockly.Python'); 30 | 31 | 32 | Blockly.Python['variables_get'] = function(block) { 33 | // Variable getter. 34 | var code = Blockly.Python.variableDB_.getName(block.getFieldValue('VAR'), 35 | Blockly.Variables.NAME_TYPE); 36 | return [code, Blockly.Python.ORDER_ATOMIC]; 37 | }; 38 | 39 | Blockly.Python['variables_set'] = function(block) { 40 | // Variable setter. 41 | var argument0 = Blockly.Python.valueToCode(block, 'VALUE', 42 | Blockly.Python.ORDER_NONE) || '0'; 43 | var varName = Blockly.Python.variableDB_.getName(block.getFieldValue('VAR'), 44 | Blockly.Variables.NAME_TYPE); 45 | return varName + ' = ' + argument0 + '\n'; 46 | }; 47 | -------------------------------------------------------------------------------- /blockly/i18n/tests.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | # Tests of i18n scripts. 5 | # 6 | # Copyright 2013 Google Inc. 7 | # https://developers.google.com/blockly/ 8 | # 9 | # Licensed under the Apache License, Version 2.0 (the "License"); 10 | # you may not use this file except in compliance with the License. 11 | # You may obtain a copy of the License at 12 | # 13 | # http://www.apache.org/licenses/LICENSE-2.0 14 | # 15 | # Unless required by applicable law or agreed to in writing, software 16 | # distributed under the License is distributed on an "AS IS" BASIS, 17 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | # See the License for the specific language governing permissions and 19 | # limitations under the License. 20 | 21 | import common 22 | import re 23 | import unittest 24 | 25 | class TestSequenceFunctions(unittest.TestCase): 26 | def test_insert_breaks(self): 27 | spaces = re.compile(r'\s+|\\n') 28 | def contains_all_chars(orig, result): 29 | return re.sub(spaces, '', orig) == re.sub(spaces, '', result) 30 | 31 | sentences = [u'Quay Pegman qua bên trái hoặc bên phải 90 độ.', 32 | u'Foo bar baz this is english that is okay bye.', 33 | u'If there is a path in the specified direction, \nthen ' + 34 | u'do some actions.', 35 | u'If there is a path in the specified direction, then do ' + 36 | u'the first block of actions. Otherwise, do the second ' + 37 | u'block of actions.'] 38 | for sentence in sentences: 39 | output = common.insert_breaks(sentence, 30, 50) 40 | self.assert_(contains_all_chars(sentence, output), 41 | u'Mismatch between:\n{0}\n{1}'.format( 42 | re.sub(spaces, '', sentence), 43 | re.sub(spaces, '', output))) 44 | 45 | 46 | if __name__ == '__main__': 47 | unittest.main() 48 | -------------------------------------------------------------------------------- /blockly/media/1x1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/1x1.gif -------------------------------------------------------------------------------- /blockly/media/click.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/click.mp3 -------------------------------------------------------------------------------- /blockly/media/click.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/click.ogg -------------------------------------------------------------------------------- /blockly/media/click.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/click.wav -------------------------------------------------------------------------------- /blockly/media/delete.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/delete.mp3 -------------------------------------------------------------------------------- /blockly/media/delete.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/delete.ogg -------------------------------------------------------------------------------- /blockly/media/delete.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/delete.wav -------------------------------------------------------------------------------- /blockly/media/disconnect.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/disconnect.mp3 -------------------------------------------------------------------------------- /blockly/media/disconnect.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/disconnect.ogg -------------------------------------------------------------------------------- /blockly/media/disconnect.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/disconnect.wav -------------------------------------------------------------------------------- /blockly/media/handclosed.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/handclosed.cur -------------------------------------------------------------------------------- /blockly/media/handdelete.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/handdelete.cur -------------------------------------------------------------------------------- /blockly/media/handopen.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/handopen.cur -------------------------------------------------------------------------------- /blockly/media/quote0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/quote0.png -------------------------------------------------------------------------------- /blockly/media/quote1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/quote1.png -------------------------------------------------------------------------------- /blockly/media/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blockly/media/sprites.png -------------------------------------------------------------------------------- /blockly/media/sprites.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /blockly/msg/json/es_ardublockly.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "carlosperate" 5 | ] 6 | }, 7 | "ARD_PULSE_READ": "mide pulso %1 en pin #%2", 8 | "ARD_PULSE_READ_TIMEOUT": "mide pulso %1 en pin #%2 (agotar tiempo en %3 μs)", 9 | "ARD_PULSE_TIP": "Mide la duración de un pulso en el pin especificado.", 10 | "ARD_PULSETIMEOUT_TIP": "Mide la duración de un pulso en el pin especificado y configura el tiempo de espera en micro-segundos.", 11 | "NEW_INSTANCE": "Nueva instancia...", 12 | "RENAME_INSTANCE": "Renombrar la instancia...", 13 | "NEW_INSTANCE_TITLE": "Nueva nombre de la instance:", 14 | "RENAME_INSTANCE_TITLE": "Renombrar todas las instancias '%1' a:" 15 | } 16 | -------------------------------------------------------------------------------- /blockly/msg/json/synonyms.json: -------------------------------------------------------------------------------- 1 | {"PROCEDURES_DEFRETURN_TITLE": "PROCEDURES_DEFNORETURN_TITLE", "CONTROLS_IF_IF_TITLE_IF": "CONTROLS_IF_MSG_IF", "CONTROLS_WHILEUNTIL_INPUT_DO": "CONTROLS_REPEAT_INPUT_DO", "CONTROLS_IF_MSG_THEN": "CONTROLS_REPEAT_INPUT_DO", "LISTS_GET_SUBLIST_INPUT_IN_LIST": "LISTS_INLIST", "CONTROLS_IF_ELSE_TITLE_ELSE": "CONTROLS_IF_MSG_ELSE", "PROCEDURES_DEFRETURN_PROCEDURE": "PROCEDURES_DEFNORETURN_PROCEDURE", "TEXT_CREATE_JOIN_ITEM_TITLE_ITEM": "VARIABLES_DEFAULT_NAME", "LISTS_GET_INDEX_INPUT_IN_LIST": "LISTS_INLIST", "PROCEDURES_DEFRETURN_COMMENT": "PROCEDURES_DEFNORETURN_COMMENT", "CONTROLS_IF_ELSEIF_TITLE_ELSEIF": "CONTROLS_IF_MSG_ELSEIF", "PROCEDURES_DEFRETURN_DO": "PROCEDURES_DEFNORETURN_DO", "CONTROLS_FOR_INPUT_DO": "CONTROLS_REPEAT_INPUT_DO", "LISTS_GET_INDEX_HELPURL": "LISTS_INDEX_OF_HELPURL", "LISTS_INDEX_OF_INPUT_IN_LIST": "LISTS_INLIST", "CONTROLS_FOREACH_INPUT_DO": "CONTROLS_REPEAT_INPUT_DO", "LISTS_CREATE_WITH_ITEM_TITLE": "VARIABLES_DEFAULT_NAME", "TEXT_APPEND_VARIABLE": "VARIABLES_DEFAULT_NAME", "MATH_CHANGE_TITLE_ITEM": "VARIABLES_DEFAULT_NAME", "LISTS_SET_INDEX_INPUT_IN_LIST": "LISTS_INLIST"} -------------------------------------------------------------------------------- /blockly/msg/json/synonyms_ardublockly.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /blockly/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockly", 3 | "version": "1.0.0", 4 | "description": "Blockly is a library for building visual programming editors.", 5 | "keywords": ["blockly"], 6 | "scripts": { 7 | "lint": "jshint ." 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/google/blockly.git" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/google/blockly/issues" 15 | }, 16 | "homepage": "https://developers.google.com/blockly/", 17 | "author": { 18 | "name": "Neil Fraser" 19 | }, 20 | "license": "Apache-2.0", 21 | "private": true, 22 | "devDependencies": { 23 | "jshint": "latest" 24 | }, 25 | "jshintConfig": { 26 | "globalstrict": true, 27 | "predef": ["Blockly", "goog", "window", "document", "soy", "XMLHttpRequest"], 28 | "sub": true, 29 | "undef": true, 30 | "unused": true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /blockly/tests/generators/variables.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | item 6 | 7 | 8 | 123 9 | 10 | 11 | 12 | 13 | variable 14 | 15 | 16 | item 17 | 18 | 19 | 20 | 21 | 123 22 | 23 | 24 | 25 | 26 | if 27 | 28 | 29 | 123 30 | 31 | 32 | 33 | 34 | reserved variable 35 | 36 | 37 | if 38 | 39 | 40 | 41 | 42 | 123 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | naked 56 | Intentionally non-connected variable. 57 | 58 | 59 | -------------------------------------------------------------------------------- /blockly/tests/jsunit/generator_test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Blockly Tests 4 | * 5 | * Copyright 2012 Google Inc. 6 | * https://developers.google.com/blockly/ 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 'use strict'; 21 | 22 | function test_prefix() { 23 | var generator = new Blockly.Generator('INTERCAL'); 24 | assertEquals('Prefix nothing.', '', generator.prefixLines('', '')); 25 | assertEquals('Prefix a word.', '@Hello', generator.prefixLines('Hello', '@')); 26 | assertEquals('Prefix one line.', '12Hello\n', generator.prefixLines('Hello\n', '12')); 27 | assertEquals('Prefix two lines.', '***Hello\n***World\n', generator.prefixLines('Hello\nWorld\n', '***')); 28 | } 29 | -------------------------------------------------------------------------------- /blockly/tests/jsunit/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Unit Tests for Blockly 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /blocks/README.md: -------------------------------------------------------------------------------- 1 | # Additional blocks 2 | 3 | This directory contains additional blocks to the default Arduino blocks. 4 | 5 | The blockly fork contains only the blocks relevant to all the Arduino functionality available out of the box. Blocks for any third party libraries will be contained here. 6 | 7 | During development, the `blocks_data.json` file has been manually created and maintained in this directory. This file combines all the data stored in each individual `blocks_config.json` file. In the future this data will be automatically generated by the `ardublocklyserver`. 8 | 9 | The JSON format will be documented once the feature is in a more stable state. 10 | 11 | For now the menu to add these blocks is only accessible through the Electron development environment, or executing the `Ardublockly.openExtraCategoriesSelect()` on console. 12 | 13 | 14 | ### THIS IS STILL AN EXPERIMENTAL FEATURE 15 | -------------------------------------------------------------------------------- /blocks/blocks_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "categories": { 3 | "grove": { 4 | "categoryName": "Grove", 5 | "description": "Grove Modules.", 6 | "languages": ["en", "es"], 7 | "toolboxName": "Grove", 8 | "toolbox": [ 9 | "", 10 | " ", 11 | " 2", 12 | " ", 13 | " ", 14 | " HIGH", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " ", 23 | " ", 24 | " ", 25 | " Hello world!", 26 | " ", 27 | " ", 28 | " ", 29 | "" 30 | ], 31 | "extensions": ["Blockly.Arduino.Groove.init"] 32 | }, 33 | "test": { 34 | "categoryName": "Test blocks", 35 | "description": "Test blocks to demonstrate this feature.", 36 | "languages": ["en", "es"], 37 | "toolboxName": "Test", 38 | "toolbox": [ 39 | "", 40 | " ", 41 | "" 42 | ] 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /blocks/grove/README.md: -------------------------------------------------------------------------------- 1 | # Grove Module Blocks 2 | 3 | This directory contains the blocks for the SeeedStudio Grove Modules. 4 | 5 | [http://www.seeedstudio.com/wiki/Grove_System](http://www.seeedstudio.com/wiki/Grove_System) 6 | 7 | These blocks are still under development and more will be added soon. These are the current modules included: 8 | 9 | * [LED](http://www.seeedstudio.com/wiki/Grove_-_LED) 10 | * [Button](http://www.seeedstudio.com/wiki/Grove_-_Button) 11 | * [Thumb Joystick](http://www.seeedstudio.com/wiki/Grove_-_Thumb_Joystick) 12 | * [PIR Motion Sensor](http://www.seeedstudio.com/wiki/Grove_-_PIR_Motion_Sensor) 13 | * [Temperature Sensor](http://www.seeedstudio.com/wiki/Grove_-_Temperature_Sensor_V1.2) 14 | * [LCD RGB Backlight](http://www.seeedstudio.com/wiki/Grove_-_LCD_RGB_Backlight) (only basic functionality), requires [this library](https://github.com/Seeed-Studio/Grove_LCD_RGB_Backlight) to be installed 15 | 16 | 17 | All images from the `img` folder are license under [Creative Commons Attribution-ShareAlike License 3.0](http://creativecommons.org/licenses/by-sa/3.0/) as part of the SeeedStudio documentation. Minor modifications were made to remove their background, and the resulting files are also under the [Creative Commons Attribution-ShareAlike License 3.0](http://creativecommons.org/licenses/by-sa/3.0/) license. 18 | -------------------------------------------------------------------------------- /blocks/grove/blocks_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "categoryName": "Grove", 3 | "description": "Grove Modules.", 4 | "languages": ["en", "es"], 5 | "toolboxName": "Grove", 6 | "toolbox": [ 7 | "", 8 | " ", 9 | " 2", 10 | " ", 11 | " ", 12 | " HIGH", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " Hello world!", 22 | " ", 23 | " ", 24 | " ", 25 | "" 26 | ], 27 | "extensions": ["Blockly.Arduino.Groove.init"] 28 | } 29 | -------------------------------------------------------------------------------- /blocks/grove/examples/joystick_lcd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | x: 9 | 10 | 11 | 12 | 13 | A0 14 | 0 15 | 16 | 17 | 18 | 19 | ; y: 20 | 21 | 22 | 23 | 24 | A0 25 | 1 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 500 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /blocks/grove/examples/pir_led.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 4 14 | 15 | 16 | HIGH 17 | 18 | 19 | 20 | 21 | 22 | 23 | 4 24 | 25 | 26 | LOW 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | isPeopleDetected 36 | 37 | 38 | 39 | 40 | 41 | 2 42 | 43 | 44 | 45 | 46 | TRUE 47 | 48 | 49 | 50 | 51 | 52 | 53 | FALSE 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /blocks/grove/examples/temperature_serial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Serial 4 | 9600 5 | 6 | 7 | 8 | 9 | Serial 10 | TRUE 11 | 12 | 13 | The temperatues are displayed in Centigrades: 14 | 15 | 16 | 17 | 18 | 19 | 20 | Serial 21 | TRUE 22 | 23 | 24 | 25 | 26 | 27 | Temperature is: 28 | 29 | 30 | 31 | 32 | A1 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 500 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /blocks/grove/extensions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Extends Ardublockly functionality for the Grove blocks. 8 | * These modules depend on an Arduino Shield, which should connected to the 9 | * same pins in all Arduino boards. 10 | */ 11 | 'use strict'; 12 | 13 | goog.provide('Blockly.Arduino.Groove'); 14 | 15 | goog.require('Blockly.Arduino'); 16 | goog.require('Blockly.Arduino.Boards'); 17 | 18 | /** Initialises all the Groove blocks Ardublockly extensions. */ 19 | Blockly.Arduino.Groove.init = function() { 20 | Blockly.Arduino.Groove.extendBoards(); 21 | Blockly.Arduino.Groove.extendPinTypes(); 22 | }; 23 | 24 | Blockly.Arduino.Groove.genDigitalConnectors = function(pinStart, pinEnd) { 25 | var connectorIo = []; 26 | for (var i = pinStart; i < (pinEnd + 1); i++) { 27 | connectorIo.push(['D' + i.toString(), i.toString()]); 28 | } 29 | return connectorIo; 30 | }; 31 | 32 | /** Extends all the Arduino boards to include Grove connectors.*/ 33 | Blockly.Arduino.Groove.extendBoards = function() { 34 | for (var boardName in Blockly.Arduino.Boards.profiles) { 35 | var board = Blockly.Arduino.Boards.profiles[boardName]; 36 | board.groveDigital = Blockly.Arduino.Groove.genDigitalConnectors(2, 8); 37 | board.groveAnalog = Blockly.Arduino.Boards.generateAnalogIo(0, 3); 38 | board.groveI2c = ['I2C', 'Wire']; 39 | board.groveUart = ['UART', 'Serial']; 40 | } 41 | }; 42 | 43 | /** Extends the pin types to include Grove modules. */ 44 | Blockly.Arduino.Groove.extendPinTypes = function() { 45 | Blockly.Arduino.PinTypes.GROVE_LED = 'GROVE LED'; 46 | Blockly.Arduino.PinTypes.GROVE_BUTTON = 'GROVE BUTTON'; 47 | Blockly.Arduino.PinTypes.GROVE_JOYSTICK = 'GROVE JOYSTICK'; 48 | Blockly.Arduino.PinTypes.GROVE_PIR = 'GROVE PIR'; 49 | Blockly.Arduino.PinTypes.GROVE_TEMPERATURE = 'GROVE TEMPERATURE'; 50 | }; 51 | -------------------------------------------------------------------------------- /blocks/grove/img/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/button.png -------------------------------------------------------------------------------- /blocks/grove/img/joystick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/joystick.png -------------------------------------------------------------------------------- /blocks/grove/img/lcd_rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/lcd_rgb.png -------------------------------------------------------------------------------- /blocks/grove/img/led.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/led.png -------------------------------------------------------------------------------- /blocks/grove/img/pir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/pir.png -------------------------------------------------------------------------------- /blocks/grove/img/temperature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/img/temperature.png -------------------------------------------------------------------------------- /blocks/grove/msg/lang/en.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/msg/lang/en.js -------------------------------------------------------------------------------- /blocks/grove/msg/lang/es.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/grove/msg/lang/es.js -------------------------------------------------------------------------------- /blocks/grove/msg/messages.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview English strings for Grove module blocks. All names have the 8 | * postfix BLOCKS_GROVE. 9 | */ 10 | 'use strict'; 11 | 12 | goog.require('Blockly.Msg.en'); 13 | 14 | /** 15 | * Due to the frequency of long strings, the 80-column wrap rule need not apply 16 | * to message files. 17 | */ 18 | 19 | /// Toolbox category name 20 | Blockly.Msg.BLOCKS_GROVE_CATEGORY = 'Grove'; 21 | 22 | /// LED block 23 | Blockly.Msg.BLOCKS_GROVE_LED = 'set Grove LED on connector'; 24 | Blockly.Msg.BLOCKS_GROVE_LED_TIP = 'Turns the LED On (HIGH) or Off (LOW).'; 25 | 26 | /// Button block 27 | Blockly.Msg.BLOCKS_GROVE_BUTTON = 'read Grove Button pressed state on connector'; 28 | Blockly.Msg.BLOCKS_GROVE_BUTTON_TIP = 'Set to HIGH when the button is pressed, otherwise LOW.'; 29 | 30 | /// Joystick block 31 | Blockly.Msg.BLOCKS_GROVE_JOYSTICK = 'read Grove Joystick axis'; 32 | Blockly.Msg.BLOCKS_GROVE_JOYSTICK_2 = 'on connector'; 33 | Blockly.Msg.BLOCKS_GROVE_JOYSTICK_TIP = 'Reads the joystick position value from 200-800.'; 34 | 35 | /// PIR block 36 | Blockly.Msg.BLOCKS_GROVE_PIR = 'read Grove PIR state on connector'; 37 | Blockly.Msg.BLOCKS_GROVE_PIR_TIP = 'On motion sense it outputs HIGH, otherwise LOW.'; 38 | 39 | /// Temperature block 40 | Blockly.Msg.BLOCKS_GROVE_TEMPERATURE = 'read Grove Temperature on connector'; 41 | Blockly.Msg.BLOCKS_GROVE_TEMPERATURE_TIP = 'Returns the temperate in ºC.'; 42 | 43 | /// LCD RGB block 44 | Blockly.Msg.BLOCKS_GROVE_LCD_RGB = 'set Grove LCD RGB text to'; 45 | Blockly.Msg.BLOCKS_GROVE_LCD_RGB_TIP = 'Sets the text on the LCD display.'; 46 | -------------------------------------------------------------------------------- /blocks/test/blocks.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Ardublockly JavaScript for the Blockly resources and bindings. 8 | */ 9 | 'use strict'; 10 | 11 | goog.provide('Blockly.Blocks.test'); 12 | 13 | goog.require('Blockly.Blocks'); 14 | 15 | Blockly.Blocks.test.HUE = 180; 16 | 17 | /* Ardublockly logo block */ 18 | Blockly.Blocks['ardublockly_name_top'] = { 19 | init: function() { 20 | this.appendDummyInput() 21 | .appendField(Blockly.Msg.BLOCKS_TEST_); 22 | this.setNextStatement(true); 23 | this.setColour(Blockly.Blocks.test.HUE); 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /blocks/test/blocks_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "categoryName": "Test blocks", 3 | "description": "Test blocks to demonstrate the feature.", 4 | "languages": ["en", "es"], 5 | "toolboxName": "Test", 6 | "toolbox": [ 7 | "", 8 | " ", 9 | "" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/test/generator_arduino.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview Code generator for the test 2 blocks. 8 | */ 9 | 'use strict'; 10 | 11 | goog.provide('Blockly.Arduino.test'); 12 | 13 | goog.require('Blockly.Arduino'); 14 | 15 | 16 | /** . */ 17 | Blockly.Arduino['ardublockly_name_top'] = function(block) { 18 | return ''; 19 | }; 20 | -------------------------------------------------------------------------------- /blocks/test/msg/lang/en.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/test/msg/lang/en.js -------------------------------------------------------------------------------- /blocks/test/msg/lang/es.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/blocks/test/msg/lang/es.js -------------------------------------------------------------------------------- /blocks/test/msg/messages.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Licensed under the Apache License, Version 2.0 (the "License"): 3 | * http://www.apache.org/licenses/LICENSE-2.0 4 | */ 5 | 6 | /** 7 | * @fileoverview English strings for test blocks. All names have the postfix 8 | * BLOCKS_{category} from the blocks_config.json data. 9 | */ 10 | 'use strict'; 11 | 12 | goog.require('Blockly.Msg.en'); 13 | 14 | /** 15 | * Due to the frequency of long strings, the 80-column wrap rule need not apply 16 | * to message files. 17 | */ 18 | 19 | /// Toolbox category name 20 | Blockly.Msg.BLOCKS_TEST_CATEGORY = 'Test'; 21 | 22 | /// Ardublockly name 23 | Blockly.Msg.BLOCKS_TEST_ = 'Ardublockly'; 24 | -------------------------------------------------------------------------------- /blocks/user/README.md: -------------------------------------------------------------------------------- 1 | # User Blocks 2 | 3 | User created blocks will be saved in this directory. 4 | 5 | ### This feature has not yet been implemented. 6 | -------------------------------------------------------------------------------- /examples/blink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 4 | 5 | 6 | HIGH 7 | 8 | 9 | 10 | 11 | 12 | 13 | 1000 14 | 15 | 16 | 17 | 18 | 13 19 | 20 | 21 | LOW 22 | 23 | 24 | 25 | 26 | 27 | 28 | 1000 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /examples/servo_knob.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | val 4 | 5 | 6 | A0 7 | 8 | 9 | 10 | 11 | val 12 | 13 | 14 | 15 | 16 | val 17 | 18 | 19 | 20 | 21 | 180 22 | 23 | 24 | 25 | 26 | 27 | 28 | 9 29 | 30 | 31 | val 32 | 33 | 34 | 35 | 36 | 37 | 38 | 15 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /examples/stepper_knob.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | MyStepper 4 | 8 5 | 9 6 | 7 | 8 | 100 9 | 10 | 11 | 12 | 13 | 30 14 | 15 | 16 | 17 | 18 | val 19 | 20 | 21 | A0 22 | 23 | 24 | 25 | 26 | MyStepper 27 | 28 | 29 | MINUS 30 | 31 | 32 | val 33 | 34 | 35 | 36 | 37 | previous 38 | 39 | 40 | 41 | 42 | 43 | 44 | previous 45 | 46 | 47 | val 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /package/README.md: -------------------------------------------------------------------------------- 1 | # Ardublockly package 2 | This package folder contains three components required to build and package the Ardublockly desktop application: 3 | 4 | * The [Electron][1] project to use Ardublockly as a desktop application 5 | * Python scripts required to build and package Ardublockly into a standalone executable. 6 | * Git submodule that contains the documentation (stored in the Ardublockly GitHub Wiki) 7 | 8 | The full build instruction can be found in the Ardublockly GitHub Wiki article [Building-Ardublockly][2]. 9 | 10 | The build output can be distributed without any dependencies other than having the Arduino IDE. 11 | 12 | ## Download the packaged Ardublockly 13 | The stable binaries for Windows, Linux, and Mac OS X are hosted in GitHub as part of the [repository releases][1]. 14 | 15 | Development builds are triggered in the CI build servers on each git commit and are hosted in the following links: 16 | 17 | | Linux build | Windows build | Mac OS X build | 18 | |:-------------------:|:-------------------:|:--------------------:| 19 | | [![Linux Build Status](https://circleci.com/gh/carlosperate/ardublockly/tree/master.svg?style=svg)](https://circleci.com/gh/carlosperate/ardublockly/tree/master) | [![Windows Build status](https://ci.appveyor.com/api/projects/status/t877g920hdiifc2i?svg=true)](https://ci.appveyor.com/project/carlosperate/ardublockly) | [![Mac Build Status](https://travis-ci.org/carlosperate/ardublockly.svg?branch=master)](https://travis-ci.org/carlosperate/ardublockly) | 20 | | [Download Link][11] | [Download Link][12] | [Download Link][13] | 21 | 22 | 23 | [1]: https://electron.atom.io 24 | [2]: https://github.com/carlosperate/ardublockly/wiki/Building-Ardublockly 25 | [11]: http://ardublockly-builds.s3-website-us-west-2.amazonaws.com/index.html?prefix=linux/ 26 | [12]: http://ardublockly-builds.s3-website-us-west-2.amazonaws.com/index.html?prefix=windows/ 27 | [13]: http://ardublockly-builds.s3-website-us-west-2.amazonaws.com/index.html?prefix=mac/ 28 | -------------------------------------------------------------------------------- /package/ardublocklydocs/mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: 'Ardublockly Documentation' 2 | site_url: http://ardublockly.embeddedlog.com 3 | repo_url: http://github.com/carlosperate/ardublockly/wiki 4 | site_description: Visual programming for Arduino. 5 | site_author: carlosperate 6 | site_dir: ../../docs 7 | docs_dir: 'ardublockly.wiki' 8 | theme: 'readthedocs' 9 | 10 | # It is IMPERATIVE to leave this property to the end without anything after it. 11 | # This is because the build file will delete everything after this line and 12 | # replace it with newly generated data. 13 | pages: 14 | - Home: 'home.md' 15 | - Quick Start: 'Quick-Start.md' 16 | - User Guide: 17 | - Installing Ardublockly: 'Installing-Ardublockly.md' 18 | - Configure Ardublockly: 'Configure-Ardublockly.md' 19 | - Arduino Compiler Settings: 'Arduino-Compiler-Settings.md' 20 | - Developer Guide: 21 | - Building Ardublockly: 'Building-Ardublockly.md' 22 | - FAQs: 'FAQs.md' 23 | - About: 24 | - About Ardublocly: 'About.md' 25 | - License: 'License.md' 26 | - Credits: 'Credits.md' -------------------------------------------------------------------------------- /package/electron/.gitignore: -------------------------------------------------------------------------------- 1 | ###################### 2 | # OS generated files # 3 | ###################### 4 | .DS_Store 5 | .DS_Store? 6 | ._* 7 | .Spotlight-V100 8 | .Trashes 9 | Icon? 10 | ehthumbs.db 11 | Thumbs.db 12 | Desktop.ini 13 | $RECYCLE.BIN/ 14 | 15 | ######## 16 | # IDEs # 17 | ######## 18 | *.komodoproject 19 | .idea/ 20 | npp.session 21 | .editorconfig 22 | 23 | ######## 24 | # Node # 25 | ######## 26 | # Logs 27 | logs 28 | *.log 29 | 30 | # Runtime data 31 | pids 32 | *.pid 33 | *.seed 34 | 35 | # Directory for instrumented libs generated by jscoverage/JSCover 36 | lib-cov 37 | 38 | # Coverage directory used by tools like istanbul 39 | coverage 40 | 41 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 42 | .grunt 43 | 44 | # node-waf configuration 45 | .lock-wscript 46 | 47 | # Dependency directory (https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git) 48 | node_modules 49 | 50 | #################### 51 | # Project specific # 52 | #################### 53 | *.autogenerated 54 | /build/ 55 | /releases/ 56 | /tmp/ 57 | -------------------------------------------------------------------------------- /package/electron/app/helpers/context_menu.js: -------------------------------------------------------------------------------- 1 | // This gives you default context menu (cut, copy, paste) 2 | // in all input fields and textareas across your app. 3 | 4 | (function () { 5 | 'use strict'; 6 | 7 | var remote = require('electron').remote; 8 | var Menu = remote.Menu; 9 | var MenuItem = remote.MenuItem; 10 | 11 | var isAnyTextSelected = function () { 12 | return window.getSelection().toString() !== ''; 13 | }; 14 | 15 | var cut = new MenuItem({ 16 | label: "Cut", 17 | click: function () { 18 | document.execCommand("cut"); 19 | } 20 | }); 21 | 22 | var copy = new MenuItem({ 23 | label: "Copy", 24 | click: function () { 25 | document.execCommand("copy"); 26 | } 27 | }); 28 | 29 | var paste = new MenuItem({ 30 | label: "Paste", 31 | click: function () { 32 | document.execCommand("paste"); 33 | } 34 | }); 35 | 36 | var normalMenu = new Menu(); 37 | normalMenu.append(copy); 38 | 39 | var textEditingMenu = new Menu(); 40 | textEditingMenu.append(cut); 41 | textEditingMenu.append(copy); 42 | textEditingMenu.append(paste); 43 | 44 | document.addEventListener('contextmenu', function (e) { 45 | switch (e.target.nodeName) { 46 | case 'TEXTAREA': 47 | case 'INPUT': 48 | e.preventDefault(); 49 | textEditingMenu.popup(remote.getCurrentWindow()); 50 | break; 51 | default: 52 | if (isAnyTextSelected()) { 53 | e.preventDefault(); 54 | normalMenu.popup(remote.getCurrentWindow()); 55 | } 56 | } 57 | }, false); 58 | 59 | }()); 60 | -------------------------------------------------------------------------------- /package/electron/app/helpers/external_links.js: -------------------------------------------------------------------------------- 1 | // Convenient way for opening links in external browser, not in the app. 2 | // Useful especially if you have a lot of links to deal with. 3 | // 4 | // Usage: 5 | // 6 | // Every link with class ".js-external-link" will be opened in external browser. 7 | // google 8 | // 9 | // The same behaviour for many links can be achieved by adding 10 | // this class to any parent tag of an anchor tag. 11 | // 15 | 16 | (function () { 17 | 'use strict'; 18 | 19 | var shell = require('electron').shell; 20 | 21 | var supportExternalLinks = function (e) { 22 | var href; 23 | var isExternal = false; 24 | 25 | var checkDomElement = function (element) { 26 | if (element.nodeName === 'A') { 27 | href = element.getAttribute('href'); 28 | } 29 | if (element.classList.contains('js-external-link')) { 30 | isExternal = true; 31 | } 32 | if (href && isExternal) { 33 | shell.openExternal(href); 34 | e.preventDefault(); 35 | } else if (element.parentElement) { 36 | checkDomElement(element.parentElement); 37 | } 38 | }; 39 | 40 | checkDomElement(e.target); 41 | }; 42 | 43 | document.addEventListener('click', supportExternalLinks, false); 44 | }()); 45 | -------------------------------------------------------------------------------- /package/electron/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ardublockly", 3 | "productName": "Ardublockly", 4 | "description": "Visual programming for Arduino", 5 | "version": "0.1.3-a", 6 | "author": "carlosperate", 7 | "copyright": "© 2016, carlosperate", 8 | "homepage": "http://ardublockly.embeddedlog.com/", 9 | "main": "main.js", 10 | "dependencies": { 11 | "fs-jetpack": "^0.9.0", 12 | "winston": "^1.0.1" 13 | }, 14 | "packageNameTemplate": "{{name}}-v{{version}}-{{platform}}-{{arch}}", 15 | "osx": { 16 | "build": "1", 17 | "identifier": "com.embeddedlog.ardublockly", 18 | "LSApplicationCategoryType": "public.app-category.developer-tools" 19 | }, 20 | "repository" : { 21 | "type" : "git", 22 | "url" : "https://github.com/carlosperate/ardublockly.git" 23 | }, 24 | "bugs" : { 25 | "url" : "https://github.com/carlosperate/ardublockly/issues" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /package/electron/app/servermgr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author carlosperate 3 | * @copyright 2015 carlosperate https://github.com/carlosperate 4 | * @license Licensed under the The MIT License (MIT), a copy can be found in 5 | * the electron project directory LICENSE file. 6 | * 7 | * @fileoverview Manages the Ardublockly server. 8 | */ 9 | const winston = require('winston'); 10 | const childProcess = require('child_process'); 11 | 12 | const projectLocator = require('./projectlocator.js'); 13 | 14 | const tagMgr = '[ServerMgr] '; 15 | const tagSrv = '[ArdublocklySrv] '; 16 | 17 | var serverProcess = null; 18 | 19 | module.exports.startServer = function() { 20 | if (serverProcess === null) { 21 | var serverExecLocation = projectLocator.getServerExecPath(); 22 | winston.info(tagMgr + 'Command: ' + serverExecLocation + 23 | ' --findprojectroot --nobrowser'); 24 | serverProcess = childProcess.spawn( 25 | serverExecLocation, ['--findprojectroot', '--nobrowser']); 26 | 27 | // Setting the listeners 28 | serverProcess.stdout.on('data', function(data) { 29 | winston.info(tagSrv + data); 30 | }); 31 | 32 | serverProcess.stderr.on('data', function(data) { 33 | winston.error(tagSrv + data); 34 | }); 35 | 36 | serverProcess.on('close', function(code) { 37 | if (code !== 0) { 38 | winston.info(tagSrv + 'Process exited with code ' + code); 39 | } 40 | serverProcess = null; 41 | }); 42 | } 43 | }; 44 | 45 | module.exports.stopServer = function() { 46 | if (serverProcess !== null) { 47 | // Server executable needs to clean up (kill child), so no SIGKILL 48 | serverProcess.kill('SIGTERM'); 49 | serverProcess = null; 50 | winston.info(tagMgr + 'Server stopped.'); 51 | } 52 | }; 53 | 54 | module.exports.restartServer = function() { 55 | module.exports.stopServer(); 56 | setTimeout(function() { 57 | module.exports.startServer(); 58 | }, 1000); 59 | }; 60 | -------------------------------------------------------------------------------- /package/electron/config/env_development.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "development", 3 | "description": "Add here any environment specific stuff you like." 4 | } 5 | -------------------------------------------------------------------------------- /package/electron/config/env_production.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "production", 3 | "description": "Add here any environment specific stuff you like." 4 | } 5 | -------------------------------------------------------------------------------- /package/electron/gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('./tasks/build/build'); 4 | require('./tasks/release/release'); 5 | require('./tasks/start'); 6 | -------------------------------------------------------------------------------- /package/electron/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "asar": "^0.11.0", 4 | "electron-prebuilt": "~1.2.0", 5 | "fs-jetpack": "^0.9.0", 6 | "gulp": "^3.9.0", 7 | "gulp-batch": "^1.0.5", 8 | "gulp-util": "^3.0.6", 9 | "gulp-watch": "^4.3.5", 10 | "q": "^1.4.1", 11 | "rollup": "^0.26.3", 12 | "yargs": "^4.2.0" 13 | }, 14 | "optionalDependencies": { 15 | "appdmg": "^0.3.2", 16 | "rcedit": "^0.5.0" 17 | }, 18 | "scripts": { 19 | "postinstall": "cd app && npm install", 20 | "build": "gulp build", 21 | "release": "gulp release --env=production", 22 | "start": "gulp start" 23 | }, 24 | "repository" : { 25 | "type" : "git", 26 | "url" : "https://github.com/carlosperate/ardublockly.git" 27 | }, 28 | "bugs" : { 29 | "url" : "https://github.com/carlosperate/ardublockly/issues" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /package/electron/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/icon.png -------------------------------------------------------------------------------- /package/electron/resources/linux/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: {{name}} 2 | Version: {{version}} 3 | Maintainer: {{author}} 4 | Priority: optional 5 | Architecture: amd64 6 | Installed-Size: {{size}} 7 | Description: {{description}} 8 | -------------------------------------------------------------------------------- /package/electron/resources/linux/app.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Encoding=UTF-8 5 | Name={{productName}} 6 | Comment={{description}} 7 | Exec=/opt/{{name}}/{{name}} 8 | Path=/opt/{{name}}/ 9 | Icon=/opt/{{name}}/icon.png 10 | Terminal=false 11 | Categories=Application; 12 | -------------------------------------------------------------------------------- /package/electron/resources/osx/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} 7 | CFBundleExecutable 8 | {{productName}} 9 | CFBundleIconFile 10 | icon.icns 11 | CFBundleIdentifier 12 | {{identifier}} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | {{productName}} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleVersion 20 | {{build}} 21 | CFBundleVersionString 22 | {{build}} 23 | CFBundleShortVersionString 24 | {{version}} 25 | CFBundleGetInfoString 26 | {{version}} 27 | LSMinimumSystemVersion 28 | 10.8.0 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | AtomApplication 33 | NSSupportsAutomaticGraphicsSwitching 34 | 35 | NSHumanReadableCopyright 36 | {{copyright}} 37 | LSApplicationCategoryType 38 | {{LSApplicationCategoryType}} 39 | 40 | 41 | -------------------------------------------------------------------------------- /package/electron/resources/osx/appdmg.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "{{productName}}", 3 | "icon": "{{dmgIcon}}", 4 | "background": "{{dmgBackground}}", 5 | "icon-size": 128, 6 | "contents": [ 7 | { "x": 410, "y": 220, "type": "link", "path": "/Applications" }, 8 | { "x": 130, "y": 220, "type": "file", "path": "{{appPath}}" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /package/electron/resources/osx/dmg-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/osx/dmg-background.png -------------------------------------------------------------------------------- /package/electron/resources/osx/dmg-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/osx/dmg-background@2x.png -------------------------------------------------------------------------------- /package/electron/resources/osx/dmg-icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/osx/dmg-icon.icns -------------------------------------------------------------------------------- /package/electron/resources/osx/helper_apps/Info EH.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} Helper EH 7 | CFBundleExecutable 8 | {{productName}} Helper EH 9 | CFBundleIdentifier 10 | {{identifier}}.helper.EH 11 | CFBundleName 12 | {{productName}} Helper EH 13 | CFBundlePackageType 14 | APPL 15 | DTSDKName 16 | macosx 17 | LSUIElement 18 | 19 | NSSupportsAutomaticGraphicsSwitching 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /package/electron/resources/osx/helper_apps/Info NP.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} Helper NP 7 | CFBundleExecutable 8 | {{productName}} Helper NP 9 | CFBundleIdentifier 10 | {{identifier}}.helper.NP 11 | CFBundleName 12 | {{productName}} Helper NP 13 | CFBundlePackageType 14 | APPL 15 | DTSDKName 16 | macosx 17 | LSUIElement 18 | 19 | NSSupportsAutomaticGraphicsSwitching 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /package/electron/resources/osx/helper_apps/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | {{identifier}}.helper 7 | CFBundleName 8 | {{productName}} Helper 9 | CFBundlePackageType 10 | APPL 11 | DTSDKName 12 | macosx 13 | LSUIElement 14 | 15 | NSSupportsAutomaticGraphicsSwitching 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /package/electron/resources/osx/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/osx/icon.icns -------------------------------------------------------------------------------- /package/electron/resources/windows/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/windows/icon.ico -------------------------------------------------------------------------------- /package/electron/resources/windows/setup-banner.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/windows/setup-banner.bmp -------------------------------------------------------------------------------- /package/electron/resources/windows/setup-icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosperate/ardublockly/04fa48273b5651386d0ef1ce6dd446795ffc2594/package/electron/resources/windows/setup-icon.ico -------------------------------------------------------------------------------- /package/electron/tasks/build/bundle.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var pathUtil = require('path'); 4 | var jetpack = require('fs-jetpack'); 5 | var rollup = require('rollup'); 6 | var Q = require('q'); 7 | 8 | var nodeBuiltInModules = ['assert', 'buffer', 'child_process', 'cluster', 9 | 'console', 'constants', 'crypto', 'dgram', 'dns', 'domain', 'events', 10 | 'fs', 'http', 'https', 'module', 'net', 'os', 'path', 'process', 'punycode', 11 | 'querystring', 'readline', 'repl', 'stream', 'string_decoder', 'timers', 12 | 'tls', 'tty', 'url', 'util', 'v8', 'vm', 'zlib']; 13 | 14 | var electronBuiltInModules = ['electron']; 15 | 16 | var npmModulesUsedInApp = function () { 17 | var appManifest = require('../../app/package.json'); 18 | return Object.keys(appManifest.dependencies); 19 | }; 20 | 21 | var generateExternalModulesList = function () { 22 | return [].concat(nodeBuiltInModules, electronBuiltInModules, npmModulesUsedInApp()); 23 | }; 24 | 25 | module.exports = function (src, dest) { 26 | var deferred = Q.defer(); 27 | 28 | rollup.rollup({ 29 | entry: src, 30 | external: generateExternalModulesList(), 31 | }).then(function (bundle) { 32 | var jsFile = pathUtil.basename(dest); 33 | var result = bundle.generate({ 34 | format: 'cjs', 35 | sourceMap: true, 36 | sourceMapFile: jsFile, 37 | }); 38 | // Wrap code in self invoking function so the variables don't 39 | // pollute the global namespace. 40 | var isolatedCode = '(function () {' + result.code + '\n}());'; 41 | return Q.all([ 42 | jetpack.writeAsync(dest, isolatedCode + '\n//# sourceMappingURL=' + jsFile + '.map'), 43 | jetpack.writeAsync(dest + '.map', result.map.toString()), 44 | ]); 45 | }).then(function () { 46 | deferred.resolve(); 47 | }).catch(function (err) { 48 | deferred.reject(err); 49 | }); 50 | 51 | return deferred.promise; 52 | }; 53 | -------------------------------------------------------------------------------- /package/electron/tasks/release/release.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var utils = require('../utils'); 5 | 6 | var releaseForOs = { 7 | osx: require('./osx'), 8 | linux: require('./linux'), 9 | windows: require('./windows'), 10 | }; 11 | 12 | gulp.task('release', ['build'], function () { 13 | return releaseForOs[utils.os()](); 14 | }); 15 | -------------------------------------------------------------------------------- /package/electron/tasks/start.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var childProcess = require('child_process'); 4 | var electron = require('electron-prebuilt'); 5 | var gulp = require('gulp'); 6 | 7 | gulp.task('start', ['build', 'watch'], function () { 8 | childProcess.spawn(electron, ['./build'], { 9 | stdio: 'inherit' 10 | }) 11 | .on('close', function () { 12 | // User closed the app. Kill the host process. 13 | process.exit(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /package/electron/tasks/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var argv = require('yargs').argv; 4 | var os = require('os'); 5 | 6 | module.exports.os = function () { 7 | switch (os.platform()) { 8 | case 'darwin': 9 | return 'osx'; 10 | case 'linux': 11 | return 'linux'; 12 | case 'win32': 13 | return 'windows'; 14 | } 15 | return 'unsupported'; 16 | }; 17 | 18 | module.exports.replace = function (str, patterns) { 19 | Object.keys(patterns).forEach(function (pattern) { 20 | var matcher = new RegExp('{{' + pattern + '}}', 'g'); 21 | str = str.replace(matcher, patterns[pattern]); 22 | }); 23 | return str; 24 | }; 25 | 26 | module.exports.getReleasePackageName = function(manifest) { 27 | return module.exports.replace(manifest.packageNameTemplate, { 28 | name: manifest.name, 29 | version: manifest.version, 30 | build: manifest.build, 31 | productName: manifest.productName, 32 | platform: process.platform, 33 | arch: process.arch 34 | }); 35 | }; 36 | 37 | module.exports.getEnvName = function () { 38 | return argv.env || 'development'; 39 | }; 40 | 41 | module.exports.getSigningId = function () { 42 | return argv.sign; 43 | }; 44 | 45 | // Fixes https://github.com/nodejs/node-v0.x-archive/issues/2318 46 | module.exports.spawnablePath = function (path) { 47 | if (process.platform === 'win32') { 48 | return path + '.cmd'; 49 | } 50 | return path; 51 | }; 52 | -------------------------------------------------------------------------------- /package/pyinstaller.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | # This spec file counts on the PyInstaller script being executed from the 4 | # project root directory, otherwise the start.py file path will have to 5 | # be updated. 6 | 7 | # We have a 'local-packages' folder with modules, need to expand sys.path 8 | import os 9 | import sys 10 | project_root = os.path.realpath('') 11 | print('PyInstaller defined project root: %s' % project_root) 12 | local_packages = os.path.join( 13 | project_root, 'ardublocklyserver', 'local-packages') 14 | sys.path.insert(0, project_root) 15 | sys.path.insert(0, local_packages) 16 | 17 | # Import required modules, ensures PyInstaller fails if it cannot find them 18 | import ardublockly 19 | import six, configparser, serial, waitress, bottle 20 | 21 | 22 | block_cipher = None 23 | 24 | a = Analysis(['../start.py'], 25 | pathex=None, 26 | hiddenimports=['ardublocklyserver', 'waitress'], 27 | hookspath=None, 28 | runtime_hooks=None, 29 | excludes=None) 30 | #cipher=block_cipher) 31 | 32 | pyz = PYZ(a.pure) 33 | #cipher=block_cipher) 34 | 35 | exe = EXE(pyz, 36 | a.scripts, 37 | exclude_binaries=True, 38 | name='start', 39 | debug=False, 40 | strip=None, 41 | upx=True, 42 | console=True) 43 | 44 | coll = COLLECT(exe, 45 | a.binaries, 46 | a.zipfiles, 47 | a.datas, 48 | strip=None, 49 | upx=True, 50 | name='server') 51 | -------------------------------------------------------------------------------- /package/requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs>=0.15.3 2 | pyinstaller>=3.2.1 3 | -------------------------------------------------------------------------------- /package/wxcef_build/pyinstaller_wxcef.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | # This spec file counts on the PyInstaller script being executed from the 4 | # project root directory, otherwise the start_cef.py file path will have to 5 | # be updated. 6 | 7 | block_cipher = None 8 | 9 | a = Analysis(['start_cef.py'], 10 | pathex=None, 11 | hiddenimports=["ArdublocklyServer", "cefpython3", "wx"], 12 | hookspath=None, 13 | runtime_hooks=None, 14 | excludes=None) 15 | #cipher=block_cipher) 16 | 17 | pyz = PYZ(a.pure) 18 | #cipher=block_cipher) 19 | 20 | exe = EXE(pyz, 21 | a.scripts, 22 | exclude_binaries=True, 23 | name='start_cef', 24 | debug=False, 25 | strip=None, 26 | upx=True, 27 | console=False) 28 | 29 | coll = COLLECT(exe, 30 | a.binaries, 31 | a.zipfiles, 32 | a.datas, 33 | strip=None, 34 | upx=True, 35 | name='arduexec') 36 | --------------------------------------------------------------------------------