- added TODO comments to all functions that need updating (byob, blocks)
- separate out the code into 3 new functions for readability:
- `saveFileAs` is a generic method
- `saveCanvasAs` and `saveXMLAs` are wrappers which aid in exporting images and all XML files which together cover almost all export cases.
- In other cases, you can call `saveFileAs` directly with some additional input.
- `saveCanvasAs` in particular uses a new `Canvas.toBlob()` option when it is available (FF and IE currently) that should greatly reduce memory.
(Chrome and Safari both have open bugs and may at somepoint implement this function.)
- I have added in code to detect bugs in chrome, including when a new window is being opened. If a new window cannot be opened, the a (to be written) warning message will appear.
- a few functions (namely those in morphic.js) have not touched. However, these are functions which should only occur in a small subset of cases and are behind hidden features.
* BYOB, Objects, GUI: New “Remove Unused Global Blocks” Feature
* GUI, Lists: “Export Project Summary” improvements:
- show variable values as watcher pics
- expand list watcher pics to show their complete contents (1. level)
- url for shared projects
- table of contents
- basic support for sprite nesting and inheritance
- make the summary “browsable” instead of editable
- outline around sprite / stage snapshots
- experimental hidden (shift-click) “drop-shadows” option
* GUI: Rearrange project menu, only show global blocks-related ops if
there are any
* GUI: Remove URL location.hash information when loading a new project
* Store: Fix deserialization support for projects using inheritance
* German translation update
This function was only used for tools.xml, and didnt even do its job...
As of this writing, it simply prepended the `baseURL` variable, which is
determined by the Snap! server, not s.b.e.
If we want to have s.b.e as a permanent fallback source we should re-implement
this in a way that is used for all Snap! media.
This fixes a small typo in the LIBRARIES file, so that the leap motion lib will
load correctly.
This renames the getCostumesList() method to getMediaList() because its used for
Costumes, Backgrounds, Sounds, and soon libraries.
* opens a new browser tab on an editable HTML document containing an
overview of the current project which can be further processed (saved,
edited, printed, turned into a PDF) to create a project report.
* now, when you export script pics attached comments get included.
* also new: Support to detect and react to “any” keystroke (hat and
sensing blocks)
activate:
- shift + click on a scripting pane's background
- shift + click on any block
- shift + enter in the IDE's edit mode
stop editing:
- left-click on scripting pane's background
- esc
navigate among scripts:
- tab: next script
- backtab (shift + tab): last script
start editing a new script:
- shift + enter
navigate among commands within a script:
- down arrow: next command
- up arrow: last command
navigate among all elements within a script:
- right arrow: next element (block or input)
- left arrow: last element
move the currently edited script (stack of blocks):
- shift + arrow keys (left, right, up, down)
editing scripts:
- backspace:
* delete currently focused reporter
* delete command above current insertion mark (blinking)
* collapse currently focused variadic input by one element
- enter:
* edit currently focused input slot
* expand currently focused variadic input by one element
- space:
* activate currently focused input slot's pull-down menu, if any
* show a menu of reachable variables for the focused input or
reporter
- any other key:
start searching for insertable matching blocks
- in menus triggered by this feature:
* navigate with up / down arrow keys
* trigger selection with enter
* cancel menu with esc
- in the search bar triggered b this feature:
* keep typing / deleting to narrow and update matches
* navigate among shown matches with up / down arrow keys
* insert selected match at the focus' position with enter
* cancel searching and inserting with esc
running the currently edited script:
* shift+ctrl+enter simulates clicking the edited script with
the mouse
add additional yields to nextSteps() to work around a bug recently
introduced to Chrome (other browsers don’t need this kludge). Remember
to take those yields out again when and if Chrome (ever) fixes this
(which, for all I know, may be never)
* 'master' of git://github.com/jmoenig/Snap--Build-Your-Own-Blocks: (34 commits)
tail-call-elimination for reporters - experiment
allow recursive reporters to be stopped by user
updated history
fixed#131Fixed#34Fixed#644Fixed#372Fixed#416Fixed#318
Fix “stop this block” primitive for tail-call-elimination
Fix "stop this block"’s lexical awareness
Add a new Favicon to Snap! (Clearer Lambda)
integrate translation update
push morphic.js version date
fix ‘line’ option in ‘split’ block for Windows files
integrate percent sign fix for JSLint
Updated the “About” Dialog
renamed Process::callback to "onComplete"
Fixed#364 avoid “freezing” when calling LAUNCH on empty ring
Fixed#642, avoid “freezing” when calling CONS on non-list/null
...
When Snap! is loaded, Snap! will now check whether a user is logged in
(via the presence of `SnapCloud.username`) and if so, the default save
location will be the cloud.
Using full http://s.b.e/snapsource/tools.xml disallows local repository.
Using relative tools.xml disallows running from local disk but getting tools from s.b.e.
So we try both.
includes the sizes of the sent project components in the transmision,
so the cloud backend can check if the whole of them have been
transmitted before comitting to the database
thanks, Brian. Also, this changeset contains improvements and
simplifications for synchronous HTTP calls which are used for fetching
libraries and example projects
most user settings (language, blocks zoom, long form input, clicking
sound, design preference) are now made persistent in localStorage, so
if the user closes and re-opens Snap! the settings stay the same
Primitive blocks in the palette can now be hidden in the project via
their context menu. Each palette's context menu further lets you hide
or show all its primitives depending on whether any primitives are left
to hide or show.
Hidden primitives are stored in the project data. This lets instructors
create "simplified" examples and problem sets.
prevent multiple block editors on the same block definition, allow
multiple dialogs on different objects, handle dialog instances in
DialogBoxMorph.prototype