summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Mönig <jens@moenig.org>2013-04-09 00:26:54 -0700
committerJens Mönig <jens@moenig.org>2013-04-09 00:26:54 -0700
commitcd41e7c644d77a396ec80d5f32abe14be7cfcc6b (patch)
treeadbd35eb96687eadbbb4caf2a40c933b948d3f64
parent0c4cedad05713aed3340c3d89a2e0c82fc87af40 (diff)
parentf3bd991f0710cc41178d6dc41cc1e69dfd41c62b (diff)
downloadsnap-byow-cd41e7c644d77a396ec80d5f32abe14be7cfcc6b.tar.gz
snap-byow-cd41e7c644d77a396ec80d5f32abe14be7cfcc6b.zip
Merge pull request #15 from queryselector/master
Removed .DS_Store, fixed #3, and made things consistently UTF-8
-rw-r--r--.DS_Storebin6148 -> 0 bytes
-rw-r--r--.gitignore1
-rw-r--r--README.md18
-rw-r--r--blocks.js12
-rw-r--r--byob.js24
-rw-r--r--cloud.js6
-rwxr-xr-xcontributing to BYOB4.txt150
-rw-r--r--gui.js40
-rwxr-xr-xhistory.txt748
-rw-r--r--lang-cs.js10
-rw-r--r--lang-de.js22
-rw-r--r--lang-eo.js10
-rw-r--r--lang-es.js22
-rw-r--r--lang-fr.js12
-rw-r--r--lang-it.js334
-rwxr-xr-xlang-ja.js454
-rwxr-xr-xlang-ja_HIRA.js12
-rw-r--r--lang-ko.js124
-rwxr-xr-xlang-pt.js10
-rw-r--r--lang-ru.js12
-rw-r--r--lang-si.js40
-rw-r--r--lang-zh.js10
-rw-r--r--lists.js6
-rw-r--r--locale.jsbin13844 -> 6951 bytes
-rw-r--r--manifest.mf2
-rw-r--r--morphic.js74
-rwxr-xr-xmorphic.txtbin61116 -> 30482 bytes
-rw-r--r--objects.js10
-rw-r--r--readme.txt2
-rw-r--r--sha512.js2
-rwxr-xr-xsnap.html4
-rw-r--r--store.js8
-rw-r--r--threads.js6
-rw-r--r--tools.xml2
-rwxr-xr-xtranslating Snap.txt4
-rw-r--r--widgets.js8
-rw-r--r--xml.js8
37 files changed, 1108 insertions, 1099 deletions
diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
--- a/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/README.md b/README.md
index 8cb1ef7..8564d27 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
-
+
Snap! Build Your Own Blocks
-http://snap.berkeley.edu
-
-a visual, blocks based programming language
-inspired by Scratch
-
-written by Jens Mönig and Brian Harvey
-jens@moenig.org, bh@cs.berkeley.edu
-
+http://snap.berkeley.edu
+
+a visual, blocks based programming language
+inspired by Scratch
+
+written by Jens Mönig and Brian Harvey
+jens@moenig.org, bh@cs.berkeley.edu
+
Copyright (C) 2013 by Jens Mönig and Brian Harvey
Snap! is free software: you can redistribute it and/or modify
diff --git a/blocks.js b/blocks.js
index 1903573..061e176 100644
--- a/blocks.js
+++ b/blocks.js
@@ -6,12 +6,12 @@
based on morphic.js
inspired by Scratch
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -1588,9 +1588,9 @@ SyntaxElementMorph.prototype.endLayout = function () {
special form: upvar
%upvar - same as %t (inline variable reporter template)
-
+
special form: input name
-
+
%inputName - variable blob (used in input type dialog)
examples:
@@ -4386,7 +4386,7 @@ ScriptsMorph.prototype.reactToDropOf = function (droppedMorph, hand) {
Usually I am just a receptacle for inherited methods and attributes,
however, if my 'type' attribute is set to one of the following
values, I act as an iconic slot myself:
-
+
'list' - a list symbol
*/
diff --git a/byob.js b/byob.js
index 2999dbd..c21cf11 100644
--- a/byob.js
+++ b/byob.js
@@ -6,12 +6,12 @@
based on morphic.js, widgets.js blocks.js, threads.js and objects.js
inspired by Scratch
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -57,7 +57,7 @@
ReporterBlockMorph***
CustomReporterBlockMorph
JaggedBlockMorph
-
+
StringMorph*
BlockLabelFragmentMorph
@@ -90,7 +90,7 @@
VariableDialogMorph
BlockExportDialogMorph
BlockImportDialogMorph
-
+
*/
/*global modules, CommandBlockMorph, SpriteMorph, TemplateSlotMorph,
@@ -418,7 +418,7 @@ CustomCommandBlockMorph.prototype.refreshPrototype = function () {
protoSpec = this.specFromFragments();
- // update the prototype's type
+ // update the prototype's type
// and possibly exchange 'this' for 'myself'
if (this instanceof CustomCommandBlockMorph
&& ((hat.type === 'reporter') || (hat.type === 'predicate'))) {
@@ -1302,7 +1302,7 @@ BlockDialogMorph.prototype.fixLayout = function () {
+ this.padding
);
}
- } else if (this.head) { // when changing an existing prototype
+ } else if (this.head) { // when changing an existing prototype
if (this.types) {
this.types.fixLayout();
this.silentSetWidth(
@@ -2125,7 +2125,7 @@ InputSlotDialogMorph.uber = DialogBoxMorph.prototype;
// InputSlotDialogMorph preferences settings:
-// if "isLaunchingExpanded" is true I always open in the long form
+// if "isLaunchingExpanded" is true I always open in the long form
InputSlotDialogMorph.prototype.isLaunchingExpanded = false;
// InputSlotDialogMorph instance creation:
@@ -2486,13 +2486,13 @@ InputSlotDialogMorph.prototype.addSlotTypeButton = function (
its right.
Note that you can make the slot picture interactive (turn
it into a ToggleElementMorph by changing the
-
+
element.fullImage()
-
+
line to just
-
+
element
-
+
I've opted for the simpler representation because it reduces
the duration of time it takes for the InputSlotDialog to load
and show. But in the future computers and browsers may be
diff --git a/cloud.js b/cloud.js
index 3faf327..ccd9345 100644
--- a/cloud.js
+++ b/cloud.js
@@ -4,11 +4,11 @@
a backend API for SNAP!
- written by Jens Mnig
+ written by Jens Mönig
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
diff --git a/contributing to BYOB4.txt b/contributing to BYOB4.txt
index 988a660..8813846 100755
--- a/contributing to BYOB4.txt
+++ b/contributing to BYOB4.txt
@@ -2,54 +2,54 @@
Contributing to BYOB4 / Snap!
by Jens Mönig
last changed: 12/09/14
-*****************************
-
+*****************************
+
Attached is the current development code base for BYOB4 a.k.a. Snap. It consists of
several JavaScript, HTML and text files, and while some of it may be functional
most parts will be in flux and subject to frequent, even fundamental modifications.
This document lays out a few simple guidelines ensuring that collaborative code
-contribution works out.
-
-
-Working with changesets
------------------------
+contribution works out.
+
+
+Working with changesets
+-----------------------
You'll often want to change or add code in existing JS files. Please don't. Instead
-use a changeset. The way I always do it myself is to copy the empty
-
- changeset.js
-
-file and rename it to something like
-
- JensChangesToMorphic.js
-
+use a changeset. The way I always do it myself is to copy the empty
+
+ changeset.js
+
+file and rename it to something like
+
+ JensChangesToMorphic.js
+
Into this file I write all the functions I want to add to Morphic. If I want to
change a function in Morphic.js I copy it to the changeset and edit it there. Then
-I always validate the changeset with
-
- JSLint.com
-
-Please check your code frequently with JSLint!
-
-For our Snap code set JSLint's settings to:
-
- assume a browser
- tolerate missing 'use strict' pragma
-
- [4] indentation
- [78] maximum line length
+I always validate the changeset with
+
+ JSLint.com
+
+Please check your code frequently with JSLint!
+
+For our Snap code set JSLint's settings to:
+
+ assume a browser
+ tolerate missing 'use strict' pragma
+
+ [4] indentation
+ [78] maximum line length
If you're working on the core Morphic library you can also
- tolerate eval
+ tolerate eval
tolerate unfiltered for in
-
+
although you'll probably not ever going to need either EVAL or FORIN in your
-changesets anyway.
-
+changesets anyway.
+
There are, of course, other tools - like JSHint and Firebug - that help you debug
your code. Feel free to use whichever suits you best, but let's all agree on
JSLint's (nitpicky!) formatting rules so we get code that's well readable and
-easily shareable among ourselves.
+easily shareable among ourselves.
Coding style
@@ -112,62 +112,62 @@ Avoid
- create a new constructor instead
-Testing your code
-------------------
+Testing your code
+------------------
(don't worry, I'm not talking about formal UnitTest Suites or other BDSM software
-fetishes, just about playing with what you're creating while you're doing it)
-
+fetishes, just about playing with what you're creating while you're doing it)
+
To test your changesets just add another line in the html stub file with your
changeset. Make sure to put your changeset /after/ Morphic.js and Blocks.js and
-whichever libraries are already included, so it'll actually get used.
-
-In your changeset override the world's
-
- customMorphs
-
+whichever libraries are already included, so it'll actually get used.
+
+In your changeset override the world's
+
+ customMorphs
+
function so it returns a list of instances of your Morphs. For "Blocks.js" that
-code is:
-
- var BlockMorph;
- var ScriptsMorph;
-
- WorldMorph.prototype.customMorphs = function () {
- var sm = new ScriptsMorph();
- sm.setExtent(new Point(800, 600));
- return [
- new BlockMorph(),
- sm
- ];
- };
-
+code is:
+
+ var BlockMorph;
+ var ScriptsMorph;
+
+ WorldMorph.prototype.customMorphs = function () {
+ var sm = new ScriptsMorph();
+ sm.setExtent(new Point(800, 600));
+ return [
+ new BlockMorph(),
+ sm
+ ];
+ };
+
Just modify this code so it returns your list of sample Morphs instead of
-BlockMorph and ScriptsMorph instances.
-
+BlockMorph and ScriptsMorph instances.
+
Once you've added this code to your changeset you can open your sample html file
-in your browser, and you'll find your sample Morphs in the World's DEMO menu.
-
-
-Inspectors
-----------
+in your browser, and you'll find your sample Morphs in the World's DEMO menu.
+
+
+Inspectors
+----------
To actually test play with your Morphs you can right-click on them and open an
inspector on them. You can open more than one inspector on each object. The
inspector pretty much works the same as in Smalltalk. It even has an evaluation
pane at the bottom, in which you can type in any JS code, mark it with your mouse
(or select all with ctrl-a), righ-click on the selection and either "do it", "show
-it" or "inspect it" (again, like in Squeak).
-
+it" or "inspect it" (again, like in Squeak).
+
Needless to say, in the evaluation pane "this" always refers to the inspected
-object.
-
-
-Source Code Mgmt
------------------
+object.
+
+
+Source Code Mgmt
+-----------------
The good thing about changesets is that you can continue working on them regardless
of new dev releases that happen in the meantime. When you feel you've got something
that's finished just send me your changeset, and I'll work all the changesets into
the Snap codebase and release another dev version. That way there will always (and
-frequently) be a harmonized common code base.
-
-Thanks!
-
+frequently) be a harmonized common code base.
+
+Thanks!
+
--Jens
diff --git a/gui.js b/gui.js
index 184bbd0..07d4f07 100644
--- a/gui.js
+++ b/gui.js
@@ -6,12 +6,12 @@
based on morphic.js, blocks.js, threads.js and objects.js
inspired by Scratch
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -269,7 +269,7 @@ IDE_Morph.prototype.openIn = function (world) {
);
} else if (location.hash.substr(0, 6) === '#lang:') {
this.setLanguage(location.hash.substr(6));
- this.newProject();
+ this.loadNewProject = true;
} else if (location.hash.substr(0, 7) === '#signup') {
this.createCloudAccount();
}
@@ -1227,7 +1227,7 @@ IDE_Morph.prototype.createCorral = function () {
// IDE_Morph layout
IDE_Morph.prototype.fixLayout = function (situation) {
- // situation is a string, i.e.
+ // situation is a string, i.e.
// 'selectSprite' or 'refreshPalette' or 'tabEditor'
var padding = 5;
@@ -2177,7 +2177,9 @@ IDE_Morph.prototype.newProject = function () {
if (this.stage) {
this.stage.destroy();
}
- location.hash = '';
+ if (location.hash.substr(0, 6) !== '#lang:') {
+ location.hash = '';
+ }
this.globalVariables = new VariableFrame();
this.currentSprite = new SpriteMorph(this.globalVariables);
this.sprites = new List([this.currentSprite]);
@@ -2788,21 +2790,27 @@ IDE_Morph.prototype.setLanguage = function (lang) {
IDE_Morph.prototype.reflectLanguage = function (lang) {
var projectData;
SnapTranslator.language = lang;
- if (Process.prototype.isCatchingErrors) {
- try {
+ if (!this.loadNewProject) {
+ if (Process.prototype.isCatchingErrors) {
+ try {
+ projectData = this.serializer.serialize(this.stage);
+ } catch (err) {
+ this.showMessage('Serialization failed: ' + err);
+ }
+ } else {
projectData = this.serializer.serialize(this.stage);
- } catch (err) {
- this.showMessage('Serialization failed: ' + err);
}
- } else {
- projectData = this.serializer.serialize(this.stage);
}
SpriteMorph.prototype.initBlocks();
this.spriteBar.tabBar.tabTo('scripts');
this.createCategories();
this.createCorralBar();
this.fixLayout();
- this.openProjectString(projectData);
+ if (this.loadNewProject){
+ this.newProject();
+ } else {
+ this.openProjectString(projectData);
+ }
};
// IDE_Morph blocks scaling
@@ -4478,8 +4486,8 @@ SpriteIconMorph.prototype.copySound = function (sound) {
/*
I am a selectable element in the SpriteEditor's "Costumes" tab, keeping
- a self-updating thumbnail of the costume I'm respresenting, and a
- self-updating label of the costume's name (in case it is changed
+ a self-updating thumbnail of the costume I'm respresenting, and a
+ self-updating label of the costume's name (in case it is changed
elsewhere)
*/
@@ -5300,4 +5308,4 @@ JukeboxMorph.prototype.reactToDropOf = function (icon) {
});
this.sprite.sounds.add(costume, idx);
this.updateList();
-}; \ No newline at end of file
+};
diff --git a/history.txt b/history.txt
index c4b9796..9dc8a97 100755
--- a/history.txt
+++ b/history.txt
@@ -1,377 +1,377 @@
-BYOB4 (Snap) history
----------------------
-110511
-------
-* Scrolling by dragging
-* Scrolling by dragging velocity
-
-110516
-------
-* Autoscrolling
-
-110518
-------
-* Textures
-
-110524
-------
-* CommandSlotMorphs (%c)
-
-110527
-------
-* Templates
-* Padding for ScrollFrames
-
-110530
-------
-* C-slots only attach to blocks' tops (no longer also to bottoms)
-
-110531
-------
-* ReporterBlockMorphs
-
-110628
-------
-* World menu in every Morph's developersMenu
-* changed the standard to "sharp shadows" because of Firefox5 bug
-
-110630
-------
-* StringMorphs and TextMorph notify their parents of layout changes
-* TypeInSlotMorphs (round - %n - and rectangular - %s -)
-
-110705
-------
-* block specs
-
-110706
-------
-* BooleanSlotMorphs (%b)
-* Color mixing
-* contrast setting for SyntaxElementMorphs
-* exit confirmation
-
-110707
-------
-* BlockMorph color changing
-* entry field tabbing (Firefox and Opera only)
-* label multi-line wrapping for command blocks
-
-110708
-------
-* extrapolate blockSpec upon label part drop
-
-110711
-------
-* optional intra-block-label word wrap (flag) layout setting
-
-110712
-------
-* rectangular reporter layout
-* label mutli-line wrapping for reporters
-* user-definable label line breaks (%br)
-* font size customizable for individual menus
-* ArrowMorphs
-
-110714
-------
-* optional drop-down menu for type-in slots
-* read-only menus for type-in slots (%inst, %var, %lst, %obj, %eff,
- %dir, %cst, %snd, %key, %idx, %msg, %att, %fun, %typ)
-* global pixel color sensing
-* renamed TypeInSlotMorph to InputSlotMorph
-
-110718
-------
-* ColorSlotMorphs (%clr)
-* collision detection groundwork
-
-110719
-------
-* high-level documentation and code comments
-* optional blurred slot shades (off by default)
-
-110720
-------
-* HatBlocks
-
-110721
-------
-* scrollBarSize can now optionally be specified individually
-* block highlighting
-* specs for any-unevaluated and Boolean-unevaluated inputs
-
-110722
-------
-* stringField settable as numeric, supresses textual input
-* editable numeric input slots supress textual type-in
-* evaluation helper methods and properties
-* collision detection
-
-110726
-------
-* MultiArgMorphs (%mult%x)
-
-110727
-------
-* Morphic: fullBounds() now ignores hidden submorphs
-* MultiArgMorphs: Optional label and minimum inputs settings, '%inputs'
-* Morphic: simplified BoxMorph rendering
-* Same-colored (white), semi-transparent reporter drop feedbacks
-
-110804
-------
-* evaluator: ThreadManager, Process, StackFrame, VariableFrame
-
-110810
-------
-* nasciturus: objects, gui
-
-110811
-------
-* Morphic: broken rect fix for float-positioned Morphs
-* Blocks: straight bottom edges for stop-blocks
-* PenMorph: round line ends
-
-110816
-------
-* Morphic: SpeechBubbleMorphs and bubble help for menus/buttons
-
-110817
-------
-* Threads: evaluating reporters
-* showValue bubbles
-
-110818
-------
-* optimizations for menu bubble help and Blocks layout
-
-110823
-------
-* Sprite-scoped variables
-
-110824
-------
-* numerical virtual keyboard (pop-up-sliders - taken out again)
-* sliders now work with negative floor numbers
-* mouse wheel scroll events (thanks, Nathan!)
-
-110826
-------
-* TemplateSlotMorphs (%t, %mult%t, %scriptVars)
-* script variables
-* lockable inputs
-
-110911
-------
-* Morphic: PenMorph.setHeading() fixed
-
-110912
-------
-* Threads: renamed StackFrame to Context
-* Blocks: persistent input default values
-
-110913
-------
-* basic Lambda primitives
-* basic Lambda visualization (showBubble)
-
-110914
-------
-* c-slots in primitives are now static by default
-* basic THE BLOCK, CALL and REPORT
-
-110919
-------
-* formal parameters
-* recursion
-* closures
-
-110922
-------
-* implicit parameters
-
-110923
-------
-* error catching for block evaluation
-
-110926
-------
-* basic message broadcasting
-* thread forking (LAUNCH block)
-
-110927
-------
-* WAIT block
-
-110928
-------
-* GLIDE block
-
-111006
-------
-* force yield after timeout
-
-111007
-------
-* swooshy hat block tops (instead of circle segments)
-
-111009
-------
-* call/cc
-
-111010
-------
-* hybrid scope
-
-111012
-------
-* autolambdafying CSlotMorphs (C-shaped) and CommandSlotMorphs (inline)
-* Morphic: right mouse click emulation for Mac
-
-111017
-------
-* another take on continuations
-
-111019
-------
-* Morphic: scrolling speedup
-
-111020
-------
-* unevaluated FunctionSlotMorphs (%f)
-* autolambdafying ReporterSlotMorphs (%r, %p)
-
-111021
-------
-* GUI: CellMorphs (for stage watchers)
-
-111025
-------
-* GUI: WatcherMorphs
-* SHOW VARIABLE, HIDE VARIABLE blocks
-
-111026
-------
-* Blocks: empty choice for input drop down menus
-* automatic positioning of new watchers
-* watchers on temporary variables are deleted by HIDE VARIABLE block (not hidden)
-* HIDE VARIABLE with empty input deletes all watchers on temporary vars
-
-111027
-------
-* more extensive Error catching
-* slider for numerical text entries in "mobile mode"
-* bigger blocks in "mobile mode"
-
-111031
-------
-* new: widgets.js
-* PushButtons
-
-111102
-------
-* Morphic: StringMorph shadows
-
-111103
-------
-* widgets: ToggleMorphs (check boxes and radio buttons)
-* non-variable watchers
-* checkbox toggling for variable watchers
-
-111108
-------
-* Lists
-
-111109
-------
-* ListWatchers (basics)
-
-111111
-------
-* Morphic: visibleBounds() bug fix
-
-111114
-------
-* Morphic: fullImageClassic() for ListWatcherMorphs
-* Threads: MultiArgMorph now use Lists instead of JS-Arrays
-* List Blocks
-* GUI: adding/removing variables doesn't make the palette jump to the top
-* Blocks: list type slots
-
-111115
-------
-* Morphic: more tolerant grabbing
-* Lists: synchronized Watcher updating (speed-up)
-
-111116
-------
-* Lists: conservative watcher updating (speed-up)
-* GUI: logo pane and 'about' box
-
-111118
-------
-* Lists: watcher shows list range (speed-up, stability)
-
-111121
-------
-* Atomicity (WARP)
-* REPEAT UNTIL
-* WAIT UNTIL
-
-111123
-------
-* hybrid lists (arrayed and linked)
-* CONS and CDR
-
-111124
-------
-* layout optimization for dropped and snapping blocks (thanks, John!)
-* Equality testing for lists (thanks, Brian!)
-
-111128
-------
-* layout optimization merged into Morphic.js -> trackChanges
-
-111129
-------
-* Widgets: DialogBoxMorph basics
-
-111130
-------
-* Widgets: AlignmentMorphs
-* keyboard events for DialogBoxMorphs
-
-111202
-------
-* Widgets: InputFieldMorphs
-* Prompters based on DialogBoxes
-* Renaming of input templates
-* Morphic keyboard enhancements
-
-111205
-------
-* new primitives: MOUSE X, MOUSE Y, TIMER, RESET TIMER
-
-111207
-------
-* byob.js (CustomBlockDefinition, CustomCommandBlockMorph)
-
-111209
-------
-* BlockEditor basics for CustomCommandBlocks
-
-111212
-------
-* BlockDialogMorph (basics)
-* CustomReporterBlockMorph
-
-111213
-------
-* call/cc for lambdas and custom blocks
-
-111214
-------
+BYOB4 (Snap) history
+---------------------
+110511
+------
+* Scrolling by dragging
+* Scrolling by dragging velocity
+
+110516
+------
+* Autoscrolling
+
+110518
+------
+* Textures
+
+110524
+------
+* CommandSlotMorphs (%c)
+
+110527
+------
+* Templates
+* Padding for ScrollFrames
+
+110530
+------
+* C-slots only attach to blocks' tops (no longer also to bottoms)
+
+110531
+------
+* ReporterBlockMorphs
+
+110628
+------
+* World menu in every Morph's developersMenu
+* changed the standard to "sharp shadows" because of Firefox5 bug
+
+110630
+------
+* StringMorphs and TextMorph notify their parents of layout changes
+* TypeInSlotMorphs (round - %n - and rectangular - %s -)
+
+110705
+------
+* block specs
+
+110706
+------
+* BooleanSlotMorphs (%b)
+* Color mixing
+* contrast setting for SyntaxElementMorphs
+* exit confirmation
+
+110707
+------
+* BlockMorph color changing
+* entry field tabbing (Firefox and Opera only)
+* label multi-line wrapping for command blocks
+
+110708
+------
+* extrapolate blockSpec upon label part drop
+
+110711
+------
+* optional intra-block-label word wrap (flag) layout setting
+
+110712
+------
+* rectangular reporter layout
+* label mutli-line wrapping for reporters
+* user-definable label line breaks (%br)
+* font size customizable for individual menus
+* ArrowMorphs
+
+110714
+------
+* optional drop-down menu for type-in slots
+* read-only menus for type-in slots (%inst, %var, %lst, %obj, %eff,
+ %dir, %cst, %snd, %key, %idx, %msg, %att, %fun, %typ)
+* global pixel color sensing
+* renamed TypeInSlotMorph to InputSlotMorph
+
+110718
+------
+* ColorSlotMorphs (%clr)
+* collision detection groundwork
+
+110719
+------
+* high-level documentation and code comments
+* optional blurred slot shades (off by default)
+
+110720
+------
+* HatBlocks
+
+110721
+------
+* scrollBarSize can now optionally be specified individually
+* block highlighting
+* specs for any-unevaluated and Boolean-unevaluated inputs
+
+110722
+------
+* stringField settable as numeric, supresses textual input
+* editable numeric input slots supress textual type-in
+* evaluation helper methods and properties
+* collision detection
+
+110726
+------
+* MultiArgMorphs (%mult%x)
+
+110727
+------
+* Morphic: fullBounds() now ignores hidden submorphs
+* MultiArgMorphs: Optional label and minimum inputs settings, '%inputs'
+* Morphic: simplified BoxMorph rendering
+* Same-colored (white), semi-transparent reporter drop feedbacks
+
+110804
+------
+* evaluator: ThreadManager, Process, StackFrame, VariableFrame
+
+110810
+------
+* nasciturus: objects, gui
+
+110811
+------
+* Morphic: broken rect fix for float-positioned Morphs
+* Blocks: straight bottom edges for stop-blocks
+* PenMorph: round line ends
+
+110816
+------
+* Morphic: SpeechBubbleMorphs and bubble help for menus/buttons
+
+110817
+------
+* Threads: evaluating reporters
+* showValue bubbles
+
+110818
+------
+* optimizations for menu bubble help and Blocks layout
+
+110823
+------
+* Sprite-scoped variables
+
+110824
+------
+* numerical virtual keyboard (pop-up-sliders - taken out again)
+* sliders now work with negative floor numbers
+* mouse wheel scroll events (thanks, Nathan!)
+
+110826
+------
+* TemplateSlotMorphs (%t, %mult%t, %scriptVars)
+* script variables
+* lockable inputs
+
+110911
+------
+* Morphic: PenMorph.setHeading() fixed
+
+110912
+------
+* Threads: renamed StackFrame to Context
+* Blocks: persistent input default values
+
+110913
+------
+* basic Lambda primitives
+* basic Lambda visualization (showBubble)
+
+110914
+------
+* c-slots in primitives are now static by default
+* basic THE BLOCK, CALL and REPORT
+
+110919
+------
+* formal parameters
+* recursion
+* closures
+
+110922
+------
+* implicit parameters
+
+110923
+------
+* error catching for block evaluation
+
+110926
+------
+* basic message broadcasting
+* thread forking (LAUNCH block)
+
+110927
+------
+* WAIT block
+
+110928
+------
+* GLIDE block
+
+111006
+------
+* force yield after timeout
+
+111007
+------
+* swooshy hat block tops (instead of circle segments)
+
+111009
+------
+* call/cc
+
+111010
+------
+* hybrid scope
+
+111012
+------
+* autolambdafying CSlotMorphs (C-shaped) and CommandSlotMorphs (inline)
+* Morphic: right mouse click emulation for Mac
+
+111017
+------
+* another take on continuations
+
+111019
+------
+* Morphic: scrolling speedup
+
+111020
+------
+* unevaluated FunctionSlotMorphs (%f)
+* autolambdafying ReporterSlotMorphs (%r, %p)
+
+111021
+------
+* GUI: CellMorphs (for stage watchers)
+
+111025
+------
+* GUI: WatcherMorphs
+* SHOW VARIABLE, HIDE VARIABLE blocks
+
+111026
+------
+* Blocks: empty choice for input drop down menus
+* automatic positioning of new watchers
+* watchers on temporary variables are deleted by HIDE VARIABLE block (not hidden)
+* HIDE VARIABLE with empty input deletes all watchers on temporary vars
+
+111027
+------
+* more extensive Error catching
+* slider for numerical text entries in "mobile mode"
+* bigger blocks in "mobile mode"
+
+111031
+------
+* new: widgets.js
+* PushButtons
+
+111102
+------
+* Morphic: StringMorph shadows
+
+111103
+------
+* widgets: ToggleMorphs (check boxes and radio buttons)
+* non-variable watchers
+* checkbox toggling for variable watchers
+
+111108
+------
+* Lists
+
+111109
+------
+* ListWatchers (basics)
+
+111111
+------
+* Morphic: visibleBounds() bug fix
+
+111114
+------
+* Morphic: fullImageClassic() for ListWatcherMorphs
+* Threads: MultiArgMorph now use Lists instead of JS-Arrays
+* List Blocks
+* GUI: adding/removing variables doesn't make the palette jump to the top
+* Blocks: list type slots
+
+111115
+------
+* Morphic: more tolerant grabbing
+* Lists: synchronized Watcher updating (speed-up)
+
+111116
+------
+* Lists: conservative watcher updating (speed-up)
+* GUI: logo pane and 'about' box
+
+111118
+------
+* Lists: watcher shows list range (speed-up, stability)
+
+111121
+------
+* Atomicity (WARP)
+* REPEAT UNTIL
+* WAIT UNTIL
+
+111123
+------
+* hybrid lists (arrayed and linked)
+* CONS and CDR
+
+111124
+------
+* layout optimization for dropped and snapping blocks (thanks, John!)
+* Equality testing for lists (thanks, Brian!)
+
+111128
+------
+* layout optimization merged into Morphic.js -> trackChanges
+
+111129
+------
+* Widgets: DialogBoxMorph basics
+
+111130
+------
+* Widgets: AlignmentMorphs
+* keyboard events for DialogBoxMorphs
+
+111202
+------
+* Widgets: InputFieldMorphs
+* Prompters based on DialogBoxes
+* Renaming of input templates
+* Morphic keyboard enhancements
+
+111205
+------
+* new primitives: MOUSE X, MOUSE Y, TIMER, RESET TIMER
+
+111207
+------
+* byob.js (CustomBlockDefinition, CustomCommandBlockMorph)
+
+111209
+------
+* BlockEditor basics for CustomCommandBlocks
+
+111212
+------
+* BlockDialogMorph (basics)
+* CustomReporterBlockMorph
+
+111213
+------
+* call/cc for lambdas and custom blocks
+
+111214
+------
* feature: deleting block instances and custom block definitions
120106
diff --git a/lang-cs.js b/lang-cs.js
index dee3750..7995417 100644
--- a/lang-cs.js
+++ b/lang-cs.js
@@ -8,7 +8,7 @@
Copyright (C) 2012 by Michal Moc
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -265,21 +265,21 @@ SnapTranslator.dict.cs = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-de.js b/lang-de.js
index 230d2af..b5eb86f 100644
--- a/lang-de.js
+++ b/lang-de.js
@@ -4,11 +4,11 @@
German translation for SNAP!
- written by Jens Mnig
+ written by Jens Mönig
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -171,10 +171,10 @@ SnapTranslator.dict.de = {
/*
Special characters: (see <http://0xcc.net/jsescape/>)
- , \u00c4, \u00e4
- , \u00d6, \u00f6
- , \u00dc, \u00fc
- \u00df
+ Ä, ä \u00c4, \u00e4
+ Ö, ö \u00d6, \u00f6
+ Ü, ü \u00dc, \u00fc
+ ß \u00df
*/
// translations meta information
@@ -265,21 +265,21 @@ SnapTranslator.dict.de = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-eo.js b/lang-eo.js
index 85eb11b..453ff01 100644
--- a/lang-eo.js
+++ b/lang-eo.js
@@ -8,7 +8,7 @@
Copyright (C) 2012 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -269,21 +269,21 @@ SnapTranslator.dict.eo = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-es.js b/lang-es.js
index 5bb7ef4..893148a 100644
--- a/lang-es.js
+++ b/lang-es.js
@@ -4,11 +4,11 @@
Spanish translation for SNAP!
- written by Jens Mnig
+ written by Jens Mönig
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -171,10 +171,10 @@ SnapTranslator.dict.es = {
/*
Special characters: (see <http://0xcc.net/jsescape/>)
- , \u00c4, \u00e4
- , \u00d6, \u00f6
- , \u00dc, \u00fc
- \u00df
+ Ä, ä \u00c4, \u00e4
+ Ö, ö \u00d6, \u00f6
+ Ü, ü \u00dc, \u00fc
+ ß \u00df
*/
// translations meta information
@@ -265,21 +265,21 @@ SnapTranslator.dict.es = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-fr.js b/lang-fr.js
index 4ec2589..15eebb8 100644
--- a/lang-fr.js
+++ b/lang-fr.js
@@ -8,7 +8,7 @@
Copyright (C) 2012 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -227,7 +227,7 @@ SnapTranslator.dict.fr = {
'Costumes',
'Sounds':
'Sons',
-
+
// names:
'Sprite':
'Lutin',
@@ -264,21 +264,21 @@ SnapTranslator.dict.fr = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-it.js b/lang-it.js
index edccca3..5b0b1b8 100644
--- a/lang-it.js
+++ b/lang-it.js
@@ -1,14 +1,14 @@
-/*
-
- lang-it.js
-
- Italian translation for SNAP!
-
- written by Jens Mönig
-
- Copyright (C) 2012 by Jens Mönig
-
- This file is part of Snap!.
+/*
+
+ lang-it.js
+
+ Italian translation for SNAP!
+
+ written by Jens Mönig
+
+ Copyright (C) 2012 by Jens Mönig
+
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -22,7 +22,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+
Note to Translators:
@@ -164,7 +164,7 @@
-Jens
*/
-/*global SnapTranslator*/
+/*global SnapTranslator*/
SnapTranslator.dict.it = {
@@ -265,21 +265,21 @@ SnapTranslator.dict.it = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
@@ -303,7 +303,7 @@ SnapTranslator.dict.it = {
'vai a x: %n y: %n',
'go to %dst':
'raggiungi %dst',
- 'glide %n secs to x: %n y: %n':
+ 'glide %n secs to x: %n y: %n':
'scivola in %n secondi a x: %n y: %n',
'change x by %n':
'cambia x di %n',
@@ -377,16 +377,16 @@ SnapTranslator.dict.it = {
'stop all sounds':
'arresta tutti i suoni',
'rest for %n beats':
- 'fai una pausa di %n battute',
- 'play note %n for %n beats':
- 'suona nota %n per %n battute',
- 'change tempo by %n':
- 'cambia tempo di %n',
- 'set tempo to %n bpm':
- 'porta tempo a %n bpm',
- 'tempo':
- 'tempo',
-
+ 'fai una pausa di %n battute',
+ 'play note %n for %n beats':
+ 'suona nota %n per %n battute',
+ 'change tempo by %n':
+ 'cambia tempo di %n',
+ 'set tempo to %n bpm':
+ 'porta tempo a %n bpm',
+ 'tempo':
+ 'tempo',
+
// pen:
'clear':
'pulisci',
@@ -460,14 +460,14 @@ SnapTranslator.dict.it = {
'chiama %cmdRing con continuazione',
'warp %c':
'esegui in modalit\u00E0 turbo %c',
- 'when I start as a clone':
- 'quando vengo clonato',
- 'create a clone of %cln':
- 'crea un clone di %cln',
- 'myself':
- 'me stesso',
- 'delete this clone':
- 'elimina questo clone',
+ 'when I start as a clone':
+ 'quando vengo clonato',
+ 'create a clone of %cln':
+ 'crea un clone di %cln',
+ 'myself':
+ 'me stesso',
+ 'delete this clone':
+ 'elimina questo clone',
// sensing:
'touching %col ?':
@@ -496,14 +496,14 @@ SnapTranslator.dict.it = {
'azzera cronometro',
'timer':
'cronometro',
- '%att of %spr':
- '%att di %spr',
- 'http:// %s':
- 'leggi pagina web http:// %s',
- 'turbo mode?':
- 'modalit\u00E0 turbo attiva',
- 'set turbo mode to %b':
- 'porta modalit\u00E0 turbo a %b',
+ '%att of %spr':
+ '%att di %spr',
+ 'http:// %s':
+ 'leggi pagina web http:// %s',
+ 'turbo mode?':
+ 'modalit\u00E0 turbo attiva',
+ 'set turbo mode to %b':
+ 'porta modalit\u00E0 turbo a %b',
'filtered for %clr':
'selezionati per colore %clr',
@@ -547,8 +547,8 @@ SnapTranslator.dict.it = {
'lettera del codice unicode %n',
'is %s a %typ ?':
'%s \u00E8 di tipo %typ',
- 'is %s identical to %s ?':
- '%s \u00E8 identico a %s ?',
+ 'is %s identical to %s ?':
+ '%s \u00E8 identico a %s ?',
'type of %s':
'tipo di %s',
@@ -644,22 +644,22 @@ SnapTranslator.dict.it = {
'Esporta blocchi...',
'show global custom block definitions as XML\nin a new browser window':
'mostra in formato XML le definizione dei nuovi blocchi\nin una nuova finestra del browser',
- 'Import tools...':
- 'Importa tools...',
- 'load the official library of\npowerful blocks':
- 'carica la libreria ufficiale di\nblocchi Snap',
-
- // cloud menu
- 'Login...':
- 'Accedi...',
- 'Signup...':
- 'Registrati...',
+ 'Import tools...':
+ 'Importa tools...',
+ 'load the official library of\npowerful blocks':
+ 'carica la libreria ufficiale di\nblocchi Snap',
+
+ // cloud menu
+ 'Login...':
+ 'Accedi...',
+ 'Signup...':
+ 'Registrati...',
// settings menu
'Language...':
'Lingua...',
- 'Zoom blocks...':
- 'Zoom dei blocchi...',
+ 'Zoom blocks...':
+ 'Zoom dei blocchi...',
'Blurred shadows':
'Ombreggiature attenuate',
'uncheck to use solid drop\nshadows and highlights':
@@ -668,18 +668,18 @@ SnapTranslator.dict.it = {
'abilitare per visualizzare ombreggiature\ned evidenziature attenuate',
'Zebra coloring':
'Colorazione alternata',
- 'check to enable alternating\ncolors for nested blocks':
+ 'check to enable alternating\ncolors for nested blocks':
'abilitare per visualizzare a colori\nalternati i blocchi annidati',
- 'uncheck to disable alternating\ncolors for nested block':
+ 'uncheck to disable alternating\ncolors for nested block':
'disabilitare per non visualizzare a colori\nalternati i blocchi annidati',
-
- 'Dynamic input labels':
- 'Etichette degli input dinamiche',
- 'uncheck to disable dynamic\nlabels for variadic inputs':
- 'disabilitare per non avere etichette\ndinamiche per input variabili',
- 'check to enable dynamic\nlabels for variadic inputs':
- 'abilitare per avere etichette\ndinamiche per input variabili',
-
+
+ 'Dynamic input labels':
+ 'Etichette degli input dinamiche',
+ 'uncheck to disable dynamic\nlabels for variadic inputs':
+ 'disabilitare per non avere etichette\ndinamiche per input variabili',
+ 'check to enable dynamic\nlabels for variadic inputs':
+ 'abilitare per avere etichette\ndinamiche per input variabili',
+
'Prefer empty slot drops':
'Favorisci l\'aggancio a slot vuoti',
'settings menu prefer empty slots hint':
@@ -691,49 +691,49 @@ SnapTranslator.dict.it = {
'check to always show slot\ntypes in the input dialog':
'abilitare per mostrare sempre i tipi degli slot\nnella finestra di creazione degli input',
'uncheck to use the input\ndialog in short form':
- 'disabilitare per non mostrare automaticamente i tipi degli slot\nnella finestra di creazione degli input',
+ 'disabilitare per non mostrare automaticamente i tipi degli slot\nnella finestra di creazione degli input',
'Virtual keyboard':
'Tastiera virtuale',
'uncheck to disable\nvirtual keyboard support\nfor mobile devices':
- 'disabilitare per non usare il supporto\ndella tastiera virtuale con i dispositivi mobili',
+ 'disabilitare per non usare il supporto\ndella tastiera virtuale con i dispositivi mobili',
'check to enable\nvirtual keyboard support\nfor mobile devices':
- 'abilitare per usare il supporto della\ntastiera virtuale con i dispositivi mobili',
+ 'abilitare per usare il supporto della\ntastiera virtuale con i dispositivi mobili',
'Input sliders':
'Usa slider per gli input',
'uncheck to disable\ninput sliders for\nentry fields':
- 'disabilitare per non visualizzare gli slider\n per inserire valori numerici',
+ 'disabilitare per non visualizzare gli slider\n per inserire valori numerici',
'check to enable\ninput sliders for\nentry fields':
- 'abilitare per visualizzare gli slider\n per inserire valori numerici',
+ 'abilitare per visualizzare gli slider\n per inserire valori numerici',
'Clicking sound':
'Click di aggancio dei blocchi',
'uncheck to turn\nblock clicking\nsound off':
- 'disabilitare per non riprodurre il suono di aggancio dei blocchi',
+ 'disabilitare per non riprodurre il suono di aggancio dei blocchi',
'check to turn\nblock clicking\nsound on':
- 'abilitare per riprodurre il suono di aggancio dei blocchi',
- 'Animations':
- 'Animazioni',
- 'uncheck to disable\nIDE animations':
- 'disabilitare per non consentire\nanimazioni dell\u0027IDE',
- 'Turbo mode':
- 'Modalit\u00E0 Turbo',
- 'check to prioritize\nscript execution':
- 'abilitare per dare priorit\u00E0\nall\u0027esecuzione degli script',
- 'uncheck to run scripts\nat normal speed':
- 'disabilitare per eseguire gli script\na velocità normale',
- 'check to enable\nIDE animations':
- 'abilitare per nconsentire\nanimazioni dell\u0027IDE',
- 'Thread safe scripts':
- 'Script thread safe',
- 'uncheck to allow\nscript reentrancy':
- 'disabilitare per permettere agli script di rientrare',
- 'check to disallow\nscript reentrancy':
- 'abilitare per impedire agli script di rientrare',
- 'Prefer smooth animations':
- 'Animazioni a framerate fisso',
- 'uncheck for greater speed\nat variable frame rates':
- 'disabilitare per massima velocità\na framerate variabile',
- 'check for smooth, predictable\nanimations across computers':
- 'abilitare per avere animazioni\nfluide su tutti i computer',
+ 'abilitare per riprodurre il suono di aggancio dei blocchi',
+ 'Animations':
+ 'Animazioni',
+ 'uncheck to disable\nIDE animations':
+ 'disabilitare per non consentire\nanimazioni dell\u0027IDE',
+ 'Turbo mode':
+ 'Modalit\u00E0 Turbo',
+ 'check to prioritize\nscript execution':
+ 'abilitare per dare priorit\u00E0\nall\u0027esecuzione degli script',
+ 'uncheck to run scripts\nat normal speed':
+ 'disabilitare per eseguire gli script\na velocità normale',
+ 'check to enable\nIDE animations':
+ 'abilitare per nconsentire\nanimazioni dell\u0027IDE',
+ 'Thread safe scripts':
+ 'Script thread safe',
+ 'uncheck to allow\nscript reentrancy':
+ 'disabilitare per permettere agli script di rientrare',
+ 'check to disallow\nscript reentrancy':
+ 'abilitare per impedire agli script di rientrare',
+ 'Prefer smooth animations':
+ 'Animazioni a framerate fisso',
+ 'uncheck for greater speed\nat variable frame rates':
+ 'disabilitare per massima velocità\na framerate variabile',
+ 'check for smooth, predictable\nanimations across computers':
+ 'abilitare per avere animazioni\nfluide su tutti i computer',
// inputs
'with inputs':
@@ -750,14 +750,14 @@ SnapTranslator.dict.it = {
// blocks:
'help...':
'aiuto...',
- 'relabel...':
- 'rinomina...',
+ 'relabel...':
+ 'rinomina...',
'duplicate':
'duplica',
'make a copy\nand pick it up':
'crea una copia',
- 'only duplicate this block':
- 'duplica solo questo blocco',
+ 'only duplicate this block':
+ 'duplica solo questo blocco',
'delete':
'cancella',
'script pic...':
@@ -766,8 +766,8 @@ SnapTranslator.dict.it = {
'apri una nuova finestra\ncon un\'immagine di questo script',
'ringify':
'inserisci in un anello',
- 'unringify':
- 'estrai dall\'anello',
+ 'unringify':
+ 'estrai dall\'anello',
// custom blocks:
'delete block definition...':
@@ -781,14 +781,14 @@ SnapTranslator.dict.it = {
'export...':
'esporta...',
- // stage:
- 'show all':
- 'mostra tutti gli sprite',
- 'pic...':
- 'salva immagine dello Stage...',
- 'open a new window\nwith a picture of the stage':
- 'apre una nuova finestra con un\u0027immagine dello Stage',
-
+ // stage:
+ 'show all':
+ 'mostra tutti gli sprite',
+ 'pic...':
+ 'salva immagine dello Stage...',
+ 'open a new window\nwith a picture of the stage':
+ 'apre una nuova finestra con un\u0027immagine dello Stage',
+
// scripting area
'clean up':
'riordina',
@@ -804,8 +804,8 @@ SnapTranslator.dict.it = {
'rinomina',
'export':
'esporta',
- 'rename costume':
- 'rinomina costume',
+ 'rename costume':
+ 'rinomina costume',
// sounds
'Play sound':
@@ -816,8 +816,8 @@ SnapTranslator.dict.it = {
'Stop',
'Play':
'Play',
- 'rename sound':
- 'rinomina suono',
+ 'rename sound':
+ 'rinomina suono',
// dialogs
// buttons
@@ -833,47 +833,47 @@ SnapTranslator.dict.it = {
// help
'Help':
'Aiuto',
-
- // zoom blocks
- 'Zoom blocks':
- 'Zoom dei blocchi',
- 'build':
- 'costruisci',
- 'your own':
- 'i tuoi',
- 'blocks':
- 'blocchi',
- 'normal (1x)':
- 'normale (1x)',
- 'demo (1.2x)':
- 'Demo (1.2x)',
- 'presentation (1.4x)':
- 'presentazione(1.4x)',
- 'big (2x)':
- 'grandi (2x)',
- 'huge (4x)':
- 'molto grandi (4x)',
- 'giant (8x)':
- 'giganti (8x)',
- 'monstrous (10x)':
- 'grandissimi (10x)',
-
- // Project Manager
- 'Untitled':
- 'Senza Titolo',
- 'Open Project':
- 'Apri Progetto',
- '(empty)':
- '(vuoto)',
- 'Saved!':
- 'Salvato!',
- 'Delete Project':
- 'Elimina Progetto',
- 'Are you sure you want to delete':
- 'Sei sicuro di voler eliminare',
- 'rename...':
- 'rinomina...',
-
+
+ // zoom blocks
+ 'Zoom blocks':
+ 'Zoom dei blocchi',
+ 'build':
+ 'costruisci',
+ 'your own':
+ 'i tuoi',
+ 'blocks':
+ 'blocchi',
+ 'normal (1x)':
+ 'normale (1x)',
+ 'demo (1.2x)':
+ 'Demo (1.2x)',
+ 'presentation (1.4x)':
+ 'presentazione(1.4x)',
+ 'big (2x)':
+ 'grandi (2x)',
+ 'huge (4x)':
+ 'molto grandi (4x)',
+ 'giant (8x)':
+ 'giganti (8x)',
+ 'monstrous (10x)':
+ 'grandissimi (10x)',
+
+ // Project Manager
+ 'Untitled':
+ 'Senza Titolo',
+ 'Open Project':
+ 'Apri Progetto',
+ '(empty)':
+ '(vuoto)',
+ 'Saved!':
+ 'Salvato!',
+ 'Delete Project':
+ 'Elimina Progetto',
+ 'Are you sure you want to delete':
+ 'Sei sicuro di voler eliminare',
+ 'rename...':
+ 'rinomina...',
+
// costume editor
'Costume Editor':
'Editor di Immagini',
@@ -901,8 +901,8 @@ SnapTranslator.dict.it = {
// export blocks
'Export blocks':
'Esporta blocchi',
- 'Import blocks':
- 'Importa blocchi',
+ 'Import blocks':
+ 'Importa blocchi',
'this project doesn\'t have any\ncustom global blocks yet':
'in questo progetto non sono stati ancora definiti dei nuovi blocchi',
'select':
@@ -946,8 +946,8 @@ SnapTranslator.dict.it = {
'Crea parametro',
'Edit input name':
'Modifica parametro',
- 'Edit label fragment':
- 'Modifica porzione di etichetta',
+ 'Edit label fragment':
+ 'Modifica porzione di etichetta',
'Title text':
'Parole della definizione',
'Input name':
@@ -1016,8 +1016,8 @@ SnapTranslator.dict.it = {
'Scegli il min del cursore...',
'slider max...':
'Scegli il max del cursore...',
- 'import...':
- 'importa...',
+ 'import...':
+ 'importa...',
'Slider minimum value':
'Valore minimo del cursore',
'Slider maximum value':
@@ -1053,8 +1053,8 @@ SnapTranslator.dict.it = {
// costumes
'Turtle':
'Tartaruga',
- 'Empty':
- 'Vuoto',
+ 'Empty':
+ 'Vuoto',
// graphical effects
'ghost':
@@ -1191,4 +1191,4 @@ SnapTranslator.dict.it = {
'ultimo',
'any':
'qualunque'
-};
+};
diff --git a/lang-ja.js b/lang-ja.js
index e4f6ba9..06af972 100755
--- a/lang-ja.js
+++ b/lang-ja.js
@@ -1,14 +1,14 @@
-/*
-
- lang-ja.js
-
- Japanese translation for SNAP!
-
- written by Jens Mönig
-
- Copyright (C) 2012 by Jens Mönig
-
- This file is part of Snap!.
+/*
+
+ lang-ja.js
+
+ Japanese translation for SNAP!
+
+ written by Jens Mönig
+
+ Copyright (C) 2012 by Jens Mönig
+
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -22,7 +22,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+
Note to Translators:
@@ -164,7 +164,7 @@
-Jens
*/
-/*global SnapTranslator*/
+/*global SnapTranslator*/
SnapTranslator.dict.ja = {
@@ -265,21 +265,21 @@ SnapTranslator.dict.ja = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
@@ -303,7 +303,7 @@ SnapTranslator.dict.ja = {
'x座標を %n 、y座標を %n にする',
'go to %dst':
'%dst へ行く',
- 'glide %n secs to x: %n y: %n':
+ 'glide %n secs to x: %n y: %n':
'%n 秒でx座標を %n に、y座標を %n に変える',
'change x by %n':
'x座標を %n ずつ変える',
@@ -376,16 +376,16 @@ SnapTranslator.dict.ja = {
'終わるまで %snd の音を鳴らす',
'stop all sounds':
'すべての音を止める',
- 'rest for %n beats':
- '%n 拍休む',
- 'play note %n for %n beats':
- '%n の音符を %n 拍鳴らす',
- 'change tempo by %n':
- 'テンポを %n ずつ変える',
- 'set tempo to %n bpm':
- 'テンポを %n BPMにする',
- 'tempo':
- 'テンポ',
+ 'rest for %n beats':
+ '%n 拍休む',
+ 'play note %n for %n beats':
+ '%n の音符を %n 拍鳴らす',
+ 'change tempo by %n':
+ 'テンポを %n ずつ変える',
+ 'set tempo to %n bpm':
+ 'テンポを %n BPMにする',
+ 'tempo':
+ 'テンポ',
// pen:
'clear':
@@ -460,14 +460,14 @@ SnapTranslator.dict.ja = {
'継続付きで %cmdRing を呼ぶ',
'warp %c':
'ワープする %c',
- 'when I start as a clone':
- 'クローンされたとき',
- 'create a clone of %cln':
- '%cln のクローンを作る',
- 'myself':
- '自分自身',
- 'delete this clone':
- 'このクローンを削除する',
+ 'when I start as a clone':
+ 'クローンされたとき',
+ 'create a clone of %cln':
+ '%cln のクローンを作る',
+ 'myself':
+ '自分自身',
+ 'delete this clone':
+ 'このクローンを削除する',
// sensing:
'touching %col ?':
@@ -498,11 +498,11 @@ SnapTranslator.dict.ja = {
'タイマー',
'http:// %s':
'http:// %s',
- 'turbo mode?':
- 'ターボモード?',
- 'set turbo mode to %b':
- 'ターボーモードを %b にする',
-
+ 'turbo mode?':
+ 'ターボモード?',
+ 'set turbo mode to %b':
+ 'ターボーモードを %b にする',
+
'filtered for %clr':
'%clr 色を抽出',
'stack size':
@@ -545,11 +545,11 @@ SnapTranslator.dict.ja = {
'Unicodeで %n の文字',
'is %s a %typ ?':
'%s は %typ 型',
- 'is %s identical to %s ?':
- '%s は %s と同一',
+ 'is %s identical to %s ?':
+ '%s は %s と同一',
'type of %s':
- '%s の型',
+ '%s の型',
// variables:
'Make a variable':
@@ -629,9 +629,9 @@ SnapTranslator.dict.ja = {
'Import...':
'読み込み...',
'file menu import hint':
- 'チェックするとレポーターをドラッグ&ドロップするとき\n'
- + '空のレポーターにフォーカスします\n\n'
- + 'いくつかのブラウザーではサポートされません',
+ 'チェックするとレポーターをドラッグ&ドロップするとき\n'
+ + '空のレポーターにフォーカスします\n\n'
+ + 'いくつかのブラウザーではサポートされません',
'Export project as plain text ...':
'テキストファイルとしてプロジェクトを書き出す...',
'Export project...':
@@ -642,21 +642,21 @@ SnapTranslator.dict.ja = {
'ブロックを書き出す...',
'show global custom block definitions as XML\nin a new browser window':
'グローバルカスタムブロックの定義をXMLとして\nブラウザの新しいウインドウに表示する',
- 'Import tools...':
- 'ツールを読み込む...',
- 'load the official library of\npowerful blocks':
- '強力なブロックの公式\nライブラリを読み込む',
-
- // cloud menu
- 'Login...':
- 'ログイン...',
- 'Signup...':
- 'サインアップ...',
+ 'Import tools...':
+ 'ツールを読み込む...',
+ 'load the official library of\npowerful blocks':
+ '強力なブロックの公式\nライブラリを読み込む',
+
+ // cloud menu
+ 'Login...':
+ 'ログイン...',
+ 'Signup...':
+ 'サインアップ...',
// settings menu
'Language...':
- '言語...',
- 'Zoom blocks...':
+ '言語...',
+ 'Zoom blocks...':
'ブロックをズーム...',
'Blurred shadows':
'半透明の影',
@@ -665,17 +665,17 @@ SnapTranslator.dict.ja = {
'check to use blurred drop\nshadows and highlights':
'チェックすると半透明の影と\nハイライトになります',
'Zebra coloring':
- '縞々で表示',
- 'check to enable alternating\ncolors for nested blocks':
+ '縞々で表示',
+ 'check to enable alternating\ncolors for nested blocks':
'チェックすると入れ子になった\nブロックを縞々で表示します',
- 'uncheck to disable alternating\ncolors for nested block':
- 'チェックを外すと入れ子になった\nブロックを普通に表示します',
- 'Dynamic input labels':
- '動的な入力ラベル',
- 'uncheck to disable dynamic\nlabels for variadic inputs':
- 'チェックを外すと可変個引数の\n動的ラベルを不可にします',
- 'check to enable dynamic\nlabels for variadic inputs':
- 'チェックすると可変個引数の\n動的ラベルを可能にします',
+ 'uncheck to disable alternating\ncolors for nested block':
+ 'チェックを外すと入れ子になった\nブロックを普通に表示します',
+ 'Dynamic input labels':
+ '動的な入力ラベル',
+ 'uncheck to disable dynamic\nlabels for variadic inputs':
+ 'チェックを外すと可変個引数の\n動的ラベルを不可にします',
+ 'check to enable dynamic\nlabels for variadic inputs':
+ 'チェックすると可変個引数の\n動的ラベルを可能にします',
'Prefer empty slot drops':
'空のスロットのドロップを許す',
'settings menu prefer empty slots hint':
@@ -687,49 +687,49 @@ SnapTranslator.dict.ja = {
'check to always show slot\ntypes in the input dialog':
'チェックすると引数ダイアログに\n常にスロットの型を表示します',
'uncheck to use the input\ndialog in short form':
- 'チェックを外すと引数ダイアログを短く表示します',
+ 'チェックを外すと引数ダイアログを短く表示します',
'Virtual keyboard':
'仮想キーボード',
'uncheck to disable\nvirtual keyboard support\nfor mobile devices':
- 'チェックを外すとモバイル機器用の\n仮想キーボードを無効にします',
+ 'チェックを外すとモバイル機器用の\n仮想キーボードを無効にします',
'check to enable\nvirtual keyboard support\nfor mobile devices':
- 'チェックするとモバイル機器用の\n仮想キーボードを有効にします',
+ 'チェックするとモバイル機器用の\n仮想キーボードを有効にします',
'Input sliders':
'入力スライダー',
'uncheck to disable\ninput sliders for\nentry fields':
- 'チェックを外すと入力フィールドのスライダーを無効にします',
+ 'チェックを外すと入力フィールドのスライダーを無効にします',
'check to enable\ninput sliders for\nentry fields':
- 'チェックすると入力フィールドのスライダーを有効にします',
+ 'チェックすると入力フィールドのスライダーを有効にします',
'Clicking sound':
'クリック音',
'uncheck to turn\nblock clicking\nsound off':
- 'チェックを外すとブロックの\nクリック音を切ります',
+ 'チェックを外すとブロックの\nクリック音を切ります',
'check to turn\nblock clicking\nsound on':
- 'チェックを外すとブロックの\nクリック音を入れます',
- 'Animations':
- 'アニメーション',
- 'uncheck to disable\nIDE animations':
- 'チェックを外すとIDEの\nアニメーションを切ります',
- 'check to prioritize\nscript execution':
- 'チェックするとスクリプトの\n処理を優先します',
- 'uncheck to run scripts\nat normal speed':
- 'チェックを外すとスクリプトを\n通常の速度で実行します',
- 'check to enable\nIDE animations':
- 'チェックするとIDEの\nアニメーションを入れます',
- 'Turbo mode':
- 'ターボモード',
+ 'チェックを外すとブロックの\nクリック音を入れます',
+ 'Animations':
+ 'アニメーション',
+ 'uncheck to disable\nIDE animations':
+ 'チェックを外すとIDEの\nアニメーションを切ります',
+ 'check to prioritize\nscript execution':
+ 'チェックするとスクリプトの\n処理を優先します',
+ 'uncheck to run scripts\nat normal speed':
+ 'チェックを外すとスクリプトを\n通常の速度で実行します',
+ 'check to enable\nIDE animations':
+ 'チェックするとIDEの\nアニメーションを入れます',
+ 'Turbo mode':
+ 'ターボモード',
'Thread safe scripts':
'スクリプトをスレッドセーフにする',
'uncheck to allow\nscript reentrancy':
- 'チェックを外すとスクリプトを\n再入可能にします',
+ 'チェックを外すとスクリプトを\n再入可能にします',
'check to disallow\nscript reentrancy':
- 'チェックするとスクリプトを\n再入不能にします',
- 'Prefer smooth animations':
- 'なめらかなアニメーションにする',
- 'uncheck for greater speed\nat variable frame rates':
- 'チェックを外すとフレームレート\n当たりの速度を上げます',
- 'check for smooth, predictable\nanimations across computers':
- 'チェックするとコンピューター間で\nなめらかで予測可能なアニメーションにします',
+ 'チェックするとスクリプトを\n再入不能にします',
+ 'Prefer smooth animations':
+ 'なめらかなアニメーションにする',
+ 'uncheck for greater speed\nat variable frame rates':
+ 'チェックを外すとフレームレート\n当たりの速度を上げます',
+ 'check for smooth, predictable\nanimations across computers':
+ 'チェックするとコンピューター間で\nなめらかで予測可能なアニメーションにします',
// inputs
'with inputs':
@@ -738,8 +738,8 @@ SnapTranslator.dict.ja = {
'引数名:',
'Input Names:':
'引数名:',
- 'input list:':
- '引数リスト:',
+ 'input list:':
+ '引数リスト:',
// context menus:
'help':
@@ -751,8 +751,8 @@ SnapTranslator.dict.ja = {
'duplicate':
'複製',
'make a copy\nand pick it up':
- 'コピーを作って\nそれを掴みます',
- 'only duplicate this block':
+ 'コピーを作って\nそれを掴みます',
+ 'only duplicate this block':
'このブロックをコピーするだけ',
'delete':
'削除',
@@ -762,8 +762,8 @@ SnapTranslator.dict.ja = {
'このスクリプトの画像を表示する新しいウィンドウを開きます',
'ringify':
'リング化',
- 'unringify':
- '非リング化',
+ 'unringify':
+ '非リング化',
// custom blocks:
'delete block definition...':
@@ -775,15 +775,15 @@ SnapTranslator.dict.ja = {
'edit':
'編集',
'export...':
- '書き出し...',
+ '書き出し...',
- // stage:
- 'show all':
- 'すべてを表示',
- 'pic...':
- '画像...',
- 'open a new window\nwith a picture of the stage':
- 'このステージの画像で\n新しいウィンドウを開く',
+ // stage:
+ 'show all':
+ 'すべてを表示',
+ 'pic...':
+ '画像...',
+ 'open a new window\nwith a picture of the stage':
+ 'このステージの画像で\n新しいウィンドウを開く',
// scripting area
'clean up':
@@ -799,8 +799,8 @@ SnapTranslator.dict.ja = {
'rename':
'名前を変更',
'export':
- '書き出し',
- 'rename costume':
+ '書き出し',
+ 'rename costume':
'コスチュームの名前を変更',
// sounds
@@ -811,16 +811,16 @@ SnapTranslator.dict.ja = {
'Stop':
'停止',
'Play':
- '再生',
- 'rename sound':
+ '再生',
+ 'rename sound':
'音の名前を変更',
// dialogs
// buttons
'OK':
'OK',
- 'Ok':
- 'OK',
+ 'Ok':
+ 'OK',
'Cancel':
'キャンセル',
'Yes':
@@ -831,48 +831,48 @@ SnapTranslator.dict.ja = {
// help
'Help':
'ヘルプ',
-
- // zoom blocks
- 'Zoom blocks':
- 'ブロックをズーム',
- 'build':
- '作ろう',
- 'your own':
- 'あなた自身の',
- 'blocks':
- 'ブロックを',
- 'normal (1x)':
- 'ノーマル (1x)',
- 'demo (1.2x)':
- 'デモ (1.2x)',
- 'presentation (1.4x)':
- 'プレゼンテーション (1.4x)',
- 'big (2x)':
- '大 (2x)',
- 'huge (4x)':
- '特大 (4x)',
- 'giant (8x)':
- '巨大 (8x)',
- 'monstrous (10x)':
- '超巨大 (10x)',
-
- // Project Manager
- 'Untitled':
- '名称未設定',
- 'Open Project':
- 'プロジェクトを開く',
- 'Open':
- '開く',
- '(empty)':
- '(空)',
- 'Saved!':
- '保存しました!',
- 'Delete Project':
- 'プロジェクトを削除',
- 'Are you sure you want to delete':
- '本当に削除しますか',
- 'rename...':
- '名前を変更...',
+
+ // zoom blocks
+ 'Zoom blocks':
+ 'ブロックをズーム',
+ 'build':
+ '作ろう',
+ 'your own':
+ 'あなた自身の',
+ 'blocks':
+ 'ブロックを',
+ 'normal (1x)':
+ 'ノーマル (1x)',
+ 'demo (1.2x)':
+ 'デモ (1.2x)',
+ 'presentation (1.4x)':
+ 'プレゼンテーション (1.4x)',
+ 'big (2x)':
+ '大 (2x)',
+ 'huge (4x)':
+ '特大 (4x)',
+ 'giant (8x)':
+ '巨大 (8x)',
+ 'monstrous (10x)':
+ '超巨大 (10x)',
+
+ // Project Manager
+ 'Untitled':
+ '名称未設定',
+ 'Open Project':
+ 'プロジェクトを開く',
+ 'Open':
+ '開く',
+ '(empty)':
+ '(空)',
+ 'Saved!':
+ '保存しました!',
+ 'Delete Project':
+ 'プロジェクトを削除',
+ 'Are you sure you want to delete':
+ '本当に削除しますか',
+ 'rename...':
+ '名前を変更...',
// costume editor
'Costume Editor':
@@ -901,8 +901,8 @@ SnapTranslator.dict.ja = {
// export blocks
'Export blocks':
'ブロックを書き出し',
- 'Import blocks':
- 'ブロックを読み込み',
+ 'Import blocks':
+ 'ブロックを読み込み',
'this project doesn\'t have any\ncustom global blocks yet':
'このプロジェクトはカスタムグローバルブロックを持っていません',
'select':
@@ -945,8 +945,8 @@ SnapTranslator.dict.ja = {
'引数名を作成',
'Edit input name':
'引数名を編集',
- 'Edit label fragment':
- 'ラベルの断片を編集',
+ 'Edit label fragment':
+ 'ラベルの断片を編集',
'Title text':
'タイトルテキスト',
'Input name':
@@ -981,7 +981,7 @@ SnapTranslator.dict.ja = {
'複数の引数 (値は引数のリスト)',
'Upvar - make internal variable visible to caller':
'Upvar - 呼び出し元から見える内部的な変数',
-
+
// About Snap
'About Snap':
'Snapについて',
@@ -1015,8 +1015,8 @@ SnapTranslator.dict.ja = {
'スライダーの最小値...',
'slider max...':
'スライダーの最大値...',
- 'import...':
- '読み込み...',
+ 'import...':
+ '読み込み...',
'Slider minimum value':
'スライダーの最小値',
'Slider maximum value':
@@ -1038,7 +1038,7 @@ SnapTranslator.dict.ja = {
'(-90) 左',
'(0) up':
'(0) 上',
- '(180) down':
+ '(180) down':
'(180) 下',
// collision detection
@@ -1052,8 +1052,8 @@ SnapTranslator.dict.ja = {
// costumes
'Turtle':
'タートル',
- 'Empty':
- '空',
+ 'Empty':
+ '空',
// graphical effects
'ghost':
@@ -1189,62 +1189,62 @@ SnapTranslator.dict.ja = {
'last':
'最後',
'any':
- '任意',
-
- // missing entries
- 'Reference manual':
- 'リファレンスマニュアル',
- 'Sign in':
- 'サインイン',
- 'User name:':
- 'ユーザー名:',
- 'Password:':
- 'パスワード:',
- 'stay signed in on this computer\nuntil logging out':
- 'ログアウトするまでこのコンピューターに\nサインインしたままにする',
- 'Sign up':
- 'サインアップ',
- 'User name:':
- 'ユーザー名:',
- 'Password:':
- 'パスワード:',
- 'Birth date:':
- '誕生月:',
- 'Birth date:':
- '年:',
- 'January':
- '1月',
- 'February':
- '2月',
- 'March':
- '3月',
- 'April':
- '4月',
- 'May':
- '5月',
- 'June':
- '6月',
- 'July':
- '7月',
- 'August':
- '8月',
- 'September':
- '9月',
- 'October':
- '10月',
- 'November':
- '11月',
- 'December':
- '12月',
- '1993 or before':
- '1993年以前',
- 'E-mail address:':
- '電子メールアドレス:',
- 'Terms of Service...':
- 'サービス利用規約...',
- 'Privacy...':
- '個人情報...',
- 'I have read and agree\nto the Terms of Service':
- 'サービス利用規約を読み\nそれに同意します',
-
-};
+ '任意',
+
+ // missing entries
+ 'Reference manual':
+ 'リファレンスマニュアル',
+ 'Sign in':
+ 'サインイン',
+ 'User name:':
+ 'ユーザー名:',
+ 'Password:':
+ 'パスワード:',
+ 'stay signed in on this computer\nuntil logging out':
+ 'ログアウトするまでこのコンピューターに\nサインインしたままにする',
+ 'Sign up':
+ 'サインアップ',
+ 'User name:':
+ 'ユーザー名:',
+ 'Password:':
+ 'パスワード:',
+ 'Birth date:':
+ '誕生月:',
+ 'Birth date:':
+ '年:',
+ 'January':
+ '1月',
+ 'February':
+ '2月',
+ 'March':
+ '3月',
+ 'April':
+ '4月',
+ 'May':
+ '5月',
+ 'June':
+ '6月',
+ 'July':
+ '7月',
+ 'August':
+ '8月',
+ 'September':
+ '9月',
+ 'October':
+ '10月',
+ 'November':
+ '11月',
+ 'December':
+ '12月',
+ '1993 or before':
+ '1993年以前',
+ 'E-mail address:':
+ '電子メールアドレス:',
+ 'Terms of Service...':
+ 'サービス利用規約...',
+ 'Privacy...':
+ '個人情報...',
+ 'I have read and agree\nto the Terms of Service':
+ 'サービス利用規約を読み\nそれに同意します',
+
+};
diff --git a/lang-ja_HIRA.js b/lang-ja_HIRA.js
index 30a4636..0bf8596 100755
--- a/lang-ja_HIRA.js
+++ b/lang-ja_HIRA.js
@@ -8,7 +8,7 @@
Copyright (C) 2012 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -265,21 +265,21 @@ SnapTranslator.dict.ja_HIRA = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
@@ -981,7 +981,7 @@ SnapTranslator.dict.ja_HIRA = {
'ふくすうのひきすう (あたいはひきすうのリスト)',
'Upvar - make internal variable visible to caller':
'Upvar - よびだしもとからみえるないぶてきなへんすう',
-
+
// About Snap
'About Snap':
'Snapについて',
diff --git a/lang-ko.js b/lang-ko.js
index f882c7a..1c0f747 100644
--- a/lang-ko.js
+++ b/lang-ko.js
@@ -1,14 +1,14 @@
-/*
-
- lang-ko.js
-
- Korean translation for SNAP!
-
- written by Jens Mönig
-
- Copyright (C) 2012 by Jens Mönig
-
- This file is part of Snap!.
+/*
+
+ lang-ko.js
+
+ Korean translation for SNAP!
+
+ written by Jens Mönig
+
+ Copyright (C) 2012 by Jens Mönig
+
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -22,7 +22,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+
Note to Translators:
@@ -164,7 +164,7 @@
-Jens
*/
-/*global SnapTranslator*/
+/*global SnapTranslator*/
SnapTranslator.dict.ko = {
@@ -265,21 +265,21 @@ SnapTranslator.dict.ko = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
@@ -303,7 +303,7 @@ SnapTranslator.dict.ko = {
'x: %n 、y: %n 쪽으로 가기',
'go to %dst':
'%dst 위치로 가기',
- 'glide %n secs to x: %n y: %n':
+ 'glide %n secs to x: %n y: %n':
'%n 초 동안 x: %n 、y: %n 쪽으로 움직이기',
'change x by %n':
'x좌표 %n 만큼 바꾸기',
@@ -386,7 +386,7 @@ SnapTranslator.dict.ko = {
'템포를 %n bpm으로 맞추기',
'tempo':
'템포',
-
+
// pen:
'clear':
@@ -491,7 +491,7 @@ SnapTranslator.dict.ko = {
'타이머',
'http:// %s':
'http:// %s',
-
+
'filtered for %clr':
'%clr 색 추출하기',
'stack size':
@@ -579,7 +579,7 @@ SnapTranslator.dict.ko = {
'%s 을(를) %idx 위치에 추가하기 %l',
'replace item %idx of %l with %s':
'%idx 항목 %l 에 %s 로 교체하기',
-
+
// other
'Make a block':
'블록 만들기',
@@ -615,9 +615,9 @@ SnapTranslator.dict.ko = {
'Import...':
'가져오기...',
'file menu import hint':
- '내보낸 프로젝트 파일, 블록 라이브러리\n'
- + '스프라이트 모양 또는 소리를 가져옵니다.\n\n'
- + '일부 웹브라우저에서는 지원되지 않습니다.',
+ '내보낸 프로젝트 파일, 블록 라이브러리\n'
+ + '스프라이트 모양 또는 소리를 가져옵니다.\n\n'
+ + '일부 웹브라우저에서는 지원되지 않습니다.',
'Export project as plain text ...':
'프로젝트를 텍스트 파일로 내보내기...',
'Export project...':
@@ -640,9 +640,9 @@ SnapTranslator.dict.ko = {
'체크하면, 그림자와 하이라이트가\n반투명 상태로 됩니다.',
'Zebra coloring':
'중첩 블록 구분하기',
- 'check to enable alternating\ncolors for nested blocks':
+ 'check to enable alternating\ncolors for nested blocks':
'체크하면, 중첩된 블록을\n다른 색으로 구분할 수 있습니다.',
- 'uncheck to disable alternating\ncolors for nested block':
+ 'uncheck to disable alternating\ncolors for nested block':
'체크해제하면, 중첩된 블록을\n다른 색으로 구분할 수 없습니다.',
'Prefer empty slot drops':
'빈 슬롯에 입력 가능',
@@ -655,31 +655,31 @@ SnapTranslator.dict.ko = {
'check to always show slot\ntypes in the input dialog':
'체크하면, 입력 대화창에\n항상 슬롯의 형태를 보여줍니다.',
'uncheck to use the input\ndialog in short form':
- '체크해제하면, 입력 대화창을\n짧은 형태로 사용합니다.',
+ '체크해제하면, 입력 대화창을\n짧은 형태로 사용합니다.',
'Virtual keyboard':
'가상 키보드',
'uncheck to disable\nvirtual keyboard support\nfor mobile devices':
- '체크해제하면, 모바일 기기에서\n가상 키보드를 사용할 수 없습니다.',
+ '체크해제하면, 모바일 기기에서\n가상 키보드를 사용할 수 없습니다.',
'check to enable\nvirtual keyboard support\nfor mobile devices':
- '체크하면, 모바일 기기에서\n가상 키보드를 사용할 수 있습니다.',
+ '체크하면, 모바일 기기에서\n가상 키보드를 사용할 수 있습니다.',
'Input sliders':
'입력창에서 슬라이더 사용',
'uncheck to disable\ninput sliders for\nentry fields':
- '체크해제하면, 입력창에서\n슬라이더를 사용할 수 없습니다.',
+ '체크해제하면, 입력창에서\n슬라이더를 사용할 수 없습니다.',
'check to enable\ninput sliders for\nentry fields':
- '체크하면, 입력창에서\n슬라이더를 사용할 수 있습니다.',
+ '체크하면, 입력창에서\n슬라이더를 사용할 수 있습니다.',
'Clicking sound':
'블록 클릭시 소리',
'uncheck to turn\nblock clicking\nsound off':
- '체크해제하면, 블록 클릭시\n소리가 꺼집니다.',
+ '체크해제하면, 블록 클릭시\n소리가 꺼집니다.',
'check to turn\nblock clicking\nsound on':
- '체크하면, 블록 클릭시\n소리가 켜집니다.',
+ '체크하면, 블록 클릭시\n소리가 켜집니다.',
'Thread safe scripts':
'스레드 안전 스크립트',
'uncheck to allow\nscript reentrancy':
- '체크해제하면, 스크립트\n재진입성을 허락합니다.',
+ '체크해제하면, 스크립트\n재진입성을 허락합니다.',
'check to disallow\nscript reentrancy':
- '체크하면, 스크립트\n재진입성을 허락하지 않습니다.',
+ '체크하면, 스크립트\n재진입성을 허락하지 않습니다.',
// inputs
'with inputs':
@@ -1069,30 +1069,30 @@ SnapTranslator.dict.ko = {
'last':
'마지막',
'any':
- '임의',
-
- // missing entries
- 'Untitled':
- '이름없음',
- 'Open Project':
- '프로젝트 열기',
- 'Open':
- '열기',
- '(empty)':
- '(공란)',
- 'Saved!':
- '저장했습니다!',
- 'Delete Project':
- '프로젝트 삭제',
- 'Are you sure you want to delete':
- '정말로 삭제합니까?',
- 'unringify':
- '형태변환취소',
- 'rename...':
- '이름수정...',
- '(180) down':
- '(180) 아래',
- 'Ok':
- 'OK'
-
-};
+ '임의',
+
+ // missing entries
+ 'Untitled':
+ '이름없음',
+ 'Open Project':
+ '프로젝트 열기',
+ 'Open':
+ '열기',
+ '(empty)':
+ '(공란)',
+ 'Saved!':
+ '저장했습니다!',
+ 'Delete Project':
+ '프로젝트 삭제',
+ 'Are you sure you want to delete':
+ '정말로 삭제합니까?',
+ 'unringify':
+ '형태변환취소',
+ 'rename...':
+ '이름수정...',
+ '(180) down':
+ '(180) 아래',
+ 'Ok':
+ 'OK'
+
+};
diff --git a/lang-pt.js b/lang-pt.js
index db68d89..47e47a0 100755
--- a/lang-pt.js
+++ b/lang-pt.js
@@ -8,7 +8,7 @@
Copyright (C) 2012 by Manuel Menezes de Sequeira
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -265,21 +265,21 @@ SnapTranslator.dict.pt = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-ru.js b/lang-ru.js
index 49f1a58..f3ad6a2 100644
--- a/lang-ru.js
+++ b/lang-ru.js
@@ -4,7 +4,7 @@
Russian translation for SNAP!
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -168,7 +168,7 @@ SnapTranslator.dict.ru = {
Special characters: (see <http://0xcc.net/jsescape/>)
€, Š \u00c4, \u00e4
- …, š \u00d6, \u00f6
+…, š \u00d6, \u00f6
†, Ÿ \u00dc, \u00fc
§ \u00df
*/
@@ -260,21 +260,21 @@ SnapTranslator.dict.ru = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lang-si.js b/lang-si.js
index b8f09e1..dbe290a 100644
--- a/lang-si.js
+++ b/lang-si.js
@@ -1,14 +1,14 @@
-/*
-
- lang-si.js
-
- Slovenian translation for SNAP!
-
- translated by Sasa Divjak
-
- Copyright (C) 2012 by Jens Mönig
-
- This file is part of Snap!.
+/*
+
+ lang-si.js
+
+ Slovenian translation for SNAP!
+
+ translated by Sasa Divjak
+
+ Copyright (C) 2012 by Jens Mönig
+
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -22,7 +22,7 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+
Note to Translators:
@@ -62,7 +62,7 @@
pl - Polish => SnapTranslator.dict.pl = {
pt - Portuguese => SnapTranslator.dict.pt = {
es - Spanish => SnapTranslator.dict.es = {
- el - Greek => => SnapTranslator.dict.el = {
+ el - Greek => => SnapTranslator.dict.el = {
si - Slovenian => => SnapTranslator.dict.si = {
etc. (see <http://en.wikipedia.org/wiki/ISO_639-1>)
@@ -144,7 +144,7 @@
pl - Polish => lang-pl.js
pt - Portuguese => lang-pt.js
es - Spanish => lang-es.js
- el - Greek => => lang-el.js
+ el - Greek => => lang-el.js
si - Slovenian => => lang-si.js
and send it to me for inclusion in the official Snap! distribution.
@@ -166,7 +166,7 @@
-Jens
*/
-/*global SnapTranslator*/
+/*global SnapTranslator*/
SnapTranslator.dict.si = {
@@ -267,21 +267,21 @@ SnapTranslator.dict.si = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
@@ -1066,4 +1066,4 @@ SnapTranslator.dict.si = {
'zadnji',
'any':
'poljuben'
-};
+};
diff --git a/lang-zh.js b/lang-zh.js
index 378b5cf..9e2a8a8 100644
--- a/lang-zh.js
+++ b/lang-zh.js
@@ -9,7 +9,7 @@
Copyright (C) 2012 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -266,21 +266,21 @@ SnapTranslator.dict.zh = {
abbreviation.
For example:
-
+
'say %s for %n secs'
can currently not be changed into
-
+
'say %n secs long %s'
and still work as intended.
Similarly
-
+
'point towards %dst'
cannot be changed into
-
+
'point towards %cst'
without breaking its functionality.
diff --git a/lists.js b/lists.js
index 5b54947..71f8f65 100644
--- a/lists.js
+++ b/lists.js
@@ -4,12 +4,12 @@
list data structure and GUI for SNAP!
- written by Jens Mnig and Brian Harvey
+ written by Jens Mönig and Brian Harvey
jens@moenig.org, bh@cs.berkeley.edu
- Copyright (C) 2013 by Jens Mnig and Brian Harvey
+ Copyright (C) 2013 by Jens Mönig and Brian Harvey
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
diff --git a/locale.js b/locale.js
index ec85cb2..11bbe92 100644
--- a/locale.js
+++ b/locale.js
Binary files differ
diff --git a/manifest.mf b/manifest.mf
index e5d0c93..353d47f 100644
--- a/manifest.mf
+++ b/manifest.mf
@@ -11,4 +11,4 @@ widgets.js
store.js
xml.js
scriptsPaneTexture.gif
-snap_logo_sm.gif \ No newline at end of file
+snap_logo_sm.gif
diff --git a/morphic.js b/morphic.js
index 9bbeaa0..e28ca66 100644
--- a/morphic.js
+++ b/morphic.js
@@ -5,12 +5,12 @@
a lively Web-GUI
inspired by Squeak
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -591,9 +591,9 @@
rasterization can be deferred until the destination scale is known, taking
advantage of SVG's ability for smooth scaling. If instead SVGs are to be
rasterized right away, you can set the
-
+
MorphicPreferences.rasterizeSVGs
-
+
preference to <true>. In this case dropped SVGs also trigger the
droppedImage() event with a canvas containing a rasterized version of the
SVG.
@@ -602,12 +602,12 @@
canvas.
Those are dispatched as
-
+
droppedAudio(anAudio, name)
droppedText(aString, name)
events to interested Morphs at the mouse pointer.
-
+
if none of the above content types can be determined, the file contents
is dispatched as an ArrayBuffer to interested Morphs:
@@ -637,7 +637,7 @@
keyboardReceiver
property.
-
+
Note that processKeyUp() is optional and doesn't have to be present
if your morph doesn't require it.
@@ -708,34 +708,34 @@
a stream of events, mostly by "bubbling" them up the text element's
owner chain. Text elements' parents are notified about the following
events:
-
+
Whenever the user presses a key on the keyboard while a text element
is being edited, a
-
+
reactToKeystroke(event)
is escalated up its parent chain, the "event" parameter being the
original one received by the World.
-
+
Once the user has completed the edit, the following events are
dispatched:
-
+
accept() - <enter> was pressed on a single line of text
cancel() - <esc> was pressed on any text element
Note that "accept" only gets triggered by single-line texte elements,
as the <enter> key is used to insert line breaks in multi-line
elements. Therefore, whenever a text edit is terminated by the user
- (accepted, cancelled or otherwise),
+ (accepted, cancelled or otherwise),
reactToEdit(StringOrTextMorph)
is triggered.
If the MorphicPreference's
-
+
useSliderForInput
-
+
setting is turned on, a slider is popped up underneath the currently
edited text element letting the user insert numbers out of the given
slider range. Whenever this happens, i.e. whenever the slider is moved
@@ -751,7 +751,7 @@
method is invoked. That way complex Morphs containing text elements
get a chance to react if something about the embedded text has been
modified programmatically. These events are:
-
+
layoutChanged() - sent from instances of TextMorph
fixLayout() - sent from instances of StringMorph
@@ -842,12 +842,12 @@
menu features Gui-Builder-wise functionality to directly inspect,
take apart, reassamble and otherwise manipulate morphs and their
contents.
-
+
Instead of using the "customContextMenu" property you can also
assign a more dynamic contextMenu by overriding the general
-
+
userMenu()
-
+
method with a customized menu constructor. The difference between
the customContextMenu property and the userMenu() method is that
the former is also present in development mode and overrides the
@@ -936,11 +936,11 @@
seemingly dramatic slow-down of the Morphic system. Typically this
occurs when updating the layout of complex Morphs with very many
submorphs, e.g. when resizing an inspector window.
-
+
An effective strategy to cope with this is to use the inherited
-
+
trackChanges
-
+
property of the Morph prototype for damage list housekeeping.
The trackChanges property of the Morph prototype is a Boolean switch
@@ -953,20 +953,20 @@
achieved by setting the trackChanges flag to false before propagating
the layout changes, setting it to true again and then storing the full
bounds of the surrounding morph. An an example refer to the
-
+
moveBy()
-
+
method of HandMorph, and to the
fixLayout()
-
+
method of InspectorMorph, or the
-
+
startLayout()
endLayout()
- methods of SyntaxElementMorph in the Snap application.
-
+ methods of SyntaxElementMorph in the Snap application.
+
(9) minifying morphic.js
------------------------
@@ -1025,7 +1025,7 @@
Ian Reynolds contributed backspace key handling for Chrome.
Davide Della Casa contributed performance optimizations for Firefox.
- - Jens Mnig
+ - Jens Mönig
*/
// Global settings /////////////////////////////////////////////////////
@@ -2157,9 +2157,9 @@ Morph.uber = Node.prototype;
bounds of the surrounding morph. An an example refer to the
fixLayout()
-
+
method of InspectorMorph, or the
-
+
startLayout()
endLayout()
@@ -3975,7 +3975,7 @@ PenMorph.prototype.drawNew = function (facing) {
/*
my orientation can be overridden with the "facing" parameter to
implement Scratch-style rotation styles
-
+
*/
var context, start, dest, left, right, len,
direction = facing || this.heading;
@@ -6602,7 +6602,7 @@ MenuMorph.prototype.addItem = function (labelString, action, hint, color) {
/*
labelString is normally a single-line string. But it can also be one
of the following:
-
+
* a multi-line string (containing line breaks)
* an icon (either a Morph or a Canvas)
* a tuple of format: [icon, string]
@@ -8137,7 +8137,7 @@ MenuItemMorph.prototype.createLabel = function () {
if (isString(this.labelString)) {
this.label = this.createLabelString(this.labelString);
} else if (this.labelString instanceof Array) {
- // assume its pattern is: [icon, string]
+ // assume its pattern is: [icon, string]
this.label = new Morph();
this.label.alpha = 0; // transparent
this.label.add(icon = this.createIcon(this.labelString[0]));
@@ -8837,7 +8837,7 @@ function ListMorph(elements, labelGetter, format) {
last predicate to evaluate true when given the list element sets
the given color. If no condition is met, the default color (black)
will be assigned.
-
+
An example of how to use fomats can be found in the InspectorMorph's
"markOwnProperties" mechanism.
*/
@@ -9551,11 +9551,11 @@ HandMorph.prototype.processDrop = function (event) {
find out whether an external image or audio file was dropped
onto the world canvas, turn it into an offscreen canvas or audio
element and dispatch the
-
+
droppedImage(canvas, name)
droppedSVG(image, name)
droppedAudio(audio, name)
-
+
events to interested Morphs at the mouse pointer
*/
var files = event instanceof FileList ? event
diff --git a/morphic.txt b/morphic.txt
index 5b475f5..afa6096 100755
--- a/morphic.txt
+++ b/morphic.txt
Binary files differ
diff --git a/objects.js b/objects.js
index 7ebdccf..71a945c 100644
--- a/objects.js
+++ b/objects.js
@@ -6,12 +6,12 @@
based on morphic.js, blocks.js and threads.js
inspired by Scratch
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -5080,7 +5080,7 @@ CellMorph.prototype.mouseClickLeft = function (pos) {
/*
I am a little window which observes some value and continuously
updates itself accordingly.
-
+
My target can be either a SpriteMorph or a VariableFrame.
*/
@@ -5337,7 +5337,7 @@ WatcherMorph.prototype.fixLayout = function () {
// WatcherMorph events:
-/*
+/*
// Scratch-like watcher-toggling, commented out b/c we have a drop-down menu
WatcherMorph.prototype.mouseClickLeft = function () {
diff --git a/readme.txt b/readme.txt
index 1634cef..0f11b5c 100644
--- a/readme.txt
+++ b/readme.txt
@@ -21,4 +21,4 @@ SVG support limitations
OS/X: turn LCD font smoothing off
-Beware of third-party Chrome toolbars and iFrames \ No newline at end of file
+Beware of third-party Chrome toolbars and iFrames
diff --git a/sha512.js b/sha512.js
index 03d1c4e..f9cf313 100644
--- a/sha512.js
+++ b/sha512.js
@@ -18,7 +18,7 @@
var hex_sha512 = (function (hex_sha512) {
- var hexcase = 0;
+ var hexcase = 0;
function hex_sha512(s)
{
diff --git a/snap.html b/snap.html
index a760a86..2a0a175 100755
--- a/snap.html
+++ b/snap.html
@@ -17,7 +17,7 @@
<script type="text/javascript" src="locale.js"></script>
<script type="text/javascript" src="cloud.js"></script>
<script type="text/javascript" src="sha512.js"></script>
- <script type="text/javascript">
+ <script type="text/javascript">
var world;
window.onload = function () {
world = new WorldMorph(document.getElementById('world'));
@@ -34,4 +34,4 @@
<p>Your browser doesn't support canvas.</p>
</canvas>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/store.js b/store.js
index 3f3c1bf..bbf2a70 100644
--- a/store.js
+++ b/store.js
@@ -4,12 +4,12 @@
saving and loading Snap! projects
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -46,7 +46,7 @@
working version of a complete XMLSerializer. I have taken much of the
overall design and many of the functions and methods in this file from
Nathan's fine original prototype.
-
+
*/
/*global modules, XML_Element, XML_Serializer, VariableFrame, StageMorph,
diff --git a/threads.js b/threads.js
index dea1733..958a270 100644
--- a/threads.js
+++ b/threads.js
@@ -6,12 +6,12 @@
based on morphic.js and blocks.js
inspired by Scratch, Scheme and Squeak
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
diff --git a/tools.xml b/tools.xml
index 5024c8a..6942dea 100644
--- a/tools.xml
+++ b/tools.xml
@@ -1 +1 @@
-<blocks app="Snap! 4.0, http://snap.berkeley.edu" version="1"><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportJoinWords"><list><l> </l><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></autolambda><list></list></block><list></list></block></list></block></list></block></block></script></block></script></block-definition><block-definition s="list-&gt;sentence %&apos;data&apos;" type="reporter" category="operators"><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence-&gt;list %&apos;text&apos;" type="reporter" category="operators"><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>thisword</l><l>emptyword</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>thisword</l><l></l></block><block s="doSetVar"><l>emptyword</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="i"/><block var="text"/></block><l> </l></block><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block><block s="doSetVar"><l>thisword</l><block var="emptyword"/></block></script></block></script><script><block s="doSetVar"><l>thisword</l><block s="reportJoinWords"><list><block var="thisword"/><block s="reportLetter"><block var="i"/><block var="text"/></block></list></block></block></script></block></script></custom-block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition></blocks> \ No newline at end of file
+<blocks app="Snap! 4.0, http://snap.berkeley.edu" version="1"><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportJoinWords"><list><l> </l><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></autolambda><list></list></block><list></list></block></list></block></list></block></block></script></block></script></block-definition><block-definition s="list-&gt;sentence %&apos;data&apos;" type="reporter" category="operators"><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence-&gt;list %&apos;text&apos;" type="reporter" category="operators"><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>thisword</l><l>emptyword</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>thisword</l><l></l></block><block s="doSetVar"><l>emptyword</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="i"/><block var="text"/></block><l> </l></block><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block><block s="doSetVar"><l>thisword</l><block var="emptyword"/></block></script></block></script><script><block s="doSetVar"><l>thisword</l><block s="reportJoinWords"><list><block var="thisword"/><block s="reportLetter"><block var="i"/><block var="text"/></block></list></block></block></script></block></script></custom-block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition></blocks>
diff --git a/translating Snap.txt b/translating Snap.txt
index c63b8a6..f4b5ff6 100755
--- a/translating Snap.txt
+++ b/translating Snap.txt
@@ -2,8 +2,8 @@
Translating BYOB4 / Snap!
by Jens Moenig
last changed: 12/10/16
-*****************************
-
+*****************************
+
At this stage of development, Snap! can be translated to any LTR language
maintaining the current order of inputs (formal parameters in blocks).
diff --git a/widgets.js b/widgets.js
index ea01fa6..dbeeefc 100644
--- a/widgets.js
+++ b/widgets.js
@@ -4,12 +4,12 @@
additional GUI elements for morphic.js
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -2978,4 +2978,4 @@ InputFieldMorph.prototype.drawRectBorder = function (context) {
context.moveTo(this.width() - shift, this.edge);
context.lineTo(this.width() - shift, this.height() - this.edge);
context.stroke();
-}; \ No newline at end of file
+};
diff --git a/xml.js b/xml.js
index c8eaacb..877fff7 100644
--- a/xml.js
+++ b/xml.js
@@ -4,12 +4,12 @@
a simple XML DOM, encoder and parser for morphic.js
- written by Jens Mnig
+ written by Jens Mönig
jens@moenig.org
- Copyright (C) 2013 by Jens Mnig
+ Copyright (C) 2013 by Jens Mönig
- This file is part of Snap!.
+ This file is part of Snap!.
Snap! is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -425,4 +425,4 @@ XML_Element.prototype.parseStream = function (stream) {
this.contents += ch;
}
}
-}; \ No newline at end of file
+};