FLOSS Manuals

 English |  Español |  Français |  Italiano |  Português |  Русский |  Shqip

Etoys Reference Manual Vol. II

Etoys/Squeak Development Environment

The Squeak IDE: Introspection and Development Tools

The objects that make up the Etoys world were developed in Squeak. Although it is not at all discoverable by the uninitiated, Etoys provides access to the full set of Squeak development tools and to the full Smalltalk language. All of the Squeak Integrated Development Environment (IDE) tools can be accessed from Etoys menus such as the Halo menu, the Debug menu (available with the eToyFriendly preference turned off), and the World menu, or from within such tools. The purpose of this section is to show each tool, explain how to access it, and give a minimal explanation of the components of each tool. See Squeak programming documentation and tutorials for how to use them.

There are three settings that allow access to different subsets of the IDE tools.

  • Set etoyFriendly off in Preferences. This gives easy access to the World menu; places more objects in the Object catalog; adds more categories and more scripting tiles in the Standard Viewer; and much more. This preference canbe turned off in the Chicago developer theme.
  • Set debugHaloHandle on in Preferences. With etoyFriendly set off, this gives access to a menu of IDE tools from any object halo.
  • Remove ("destroy") the OLPC Sugar flaps and add the developer flaps.

Debug Halo Handle

The optional debug Halo tool, in the form of a wrench, is accessed by setting debugHaloHandle on in the Halos category in Preferences. Click the wrench to get a menu of tools such as the following for examining objects. Shift-click brings up an object inspector, the first item on the menu, directly.

These tools provide views into the Squeak underlying Etoys. Each is described below in turn.

inspect morph

An object inspector showing variables defined in the class of the object. Different morph classes have different variables.

self Player and morph names. The same information as the print in transcript tile and the print string tile.

all inst vars All of the values shown for other selections.

bounds Upper left and lower right corners as points. The left and right values are the same as those given by the left and right tiles. The top and bottom values in the inspector are on reversed scales, equal to the tile values subtracted from 900.

owner The object this object is embedded in. Not available as the value of a tile.

submorphs List of objects embedded in this object. Not available as the value of a tile.

fullBounds It is not clear in what way this differs from bounds.

color The same as the value of the color tile for this object, showing either the name of the color or its decimal rgb values if it has no name.

extension Extension name, external name, player name, and an IdentityDictionary with values corresponding to variable tiles for this object, all with value 0.

borderWidth Same as border width tile.

borderColor Same as border color tile, showing either the name of the color or its decimal rgb values.

explore morph 

A object explorer giving a tree view of the structure of an Etoys object and its subobjects, giving names and values for associated variables, and structure of object values. Click the triangle next to a line to open or close its subtree.

inspect properties

An inspector for variables associated with an object. Click a variable name to see the associated value, which may be a dictionary. The selections self and all inst variables show different selections from among these values.

What is the distinction between the object inspector and the properties viewer? Clearly they show values for different variables, but how are the sets chosen?

The variables shown in the object inspector are instance variables from the class of the morph, as shown in the System Browser. The variables shown in Properties are items in an IdentityDictionary defined for the morph. Where is that IdentityDictionary defined? Apparently in MorphicExtension.

inspect owner chain

An inspector for the chain of object ownership running from the target object up to the world that contains it. An object can be owned as a subobject, or as a base Morph represented by a TransformMorph.

inspect player

An inspector for certain properties of a Player object, either an UnscriptedPlayer or in a subclass of Player in which it is the sole instance. Scripts defined for this player are represented as methods in that class.

viewer for Player 

Opens a standard viewer for the Morph, not the Player. This menu item has been removed in v5.

viewer for Morph 

Fails with error message 'MessageNotUnderstood: EllipseMorph>>hasUserDefinedScripts'.

This message is defined only for Players and UnscriptedPlayers, not for Morphs.
Reported as bug SQ-1155.

morph protocol

Give information on every method that applies to this class, from anywhere in its superclass chain, with tools similar to a System Browser for further exploration. See Squeak documentation for full details.

The term protocol for this vocabulary window conflicts with the usage for protocols in Squeak as named subsets of the methods for a single Class.

make own subclass

Force creation of a Player with a name chosen by the user.

The default name indicates that the Player is a Morph. This is incorrect and very confusing. The name offered should match the Player name as shown in the inspector for this object from Players. Reported as bug SQ-1156.

internal name


Where does this name appear, and what is it a name of? This operation appears to have no effect. When clicking this menu item again, the new name does not appear, just the same default as the time before.

Reported as bug SQ-1157.

save morph in file

Accept the default name, or enter a new name. The file is saved in the directory where Etoys is installed. Load morph from the load project button on the toolbar. Hold down the mouse button to get a menu, select find any file, selected the morph file, then select load a morph.

control-menu…

The following substantial menu, or something similar, appears. Many of these commands are described elsewhere in this manual. Here we examine only the Squeak introspection tools offered on this menu.

The command add halo opens the object's halo, just as if it were right clicked.

Selecting inspect offers to open an inspector on an item in a menu, with the question Inspect whom?. The inspector is the same as on the previous debug Halo handle menu.

The menu suggests that there could be more than one choice, but I don't see how. It doesn't show the container for an embedded object.

Selecting explore opens the same object explorer as the corresponding item on the previous debug Halo handle menu.

Selecting browse hierarchy opens a Hierarchy Browser showing the superclass chain and subclass tree for the selected object. Clicking any class in the tree displays the class structure. It is also possible to open a Hierarchy Browser showing an alphabetical list of classes in linear rather than tree order, from the toolbar menu in the System Browser, described below.

make own subclass Create a new named class and transfer this object into it. This permits the user to define new behaviors for this object without affecting the existing class. Examine the newly created subclass in the System Browser in the usual way.

set variable name… What is this the name of?

debug… Returns to the main debug menu.

World menu

With eToyFriendly off, click in the world to get this menu. With eToyFriendly on, click anywhere in the Etoys world outside open windows or other objects, and use the keyboard shortcut ctrl-shift-w (Windows),  alt-shift-w (Linux) or cmd-shift-w (Mac) to get this menu. Click the pushpin icon at the top right if you want to anchor the menu in the world so that it does not disappear after any selection, or after clicking elsewhere.

previous project Return to the project before this one, if any. This is the same as the left arrow on the Sugar Navigation Flap.

jump to project… Go to any currently active project, selected from a menu. This is more general than the right arrow on the Sugar Navigation Flap.

save project on file… Opens a file dialog for saving and naming the current project.

load project from file Opens a file dialog for selecting and loading a saved project.

undo (z) Offers to undo the last action, which it displays, or else says can't undo.

restore display (r) I don't know what this is intended to do.

open… Brings up the open… menu described below.

windows… Brings up the windows… menu described below.

changes… Opens a menu for dealing with changes and change set files. This menu is described below.

help… Opens a help menu described below.

appearance… Opens an appearance menu described below.

do… Opens a do menu described below.

objects (o) Opens an instance of the Object Catalog, or brings a previously-opened instance to the front.

new morph… Brings up a menu of ways to create morphs, described below.

authoring tools… Brings up a menu of tools described below.

playfield options… A menu of preferences and commands related to playfields, described below.

flaps… A menu of preferences and commands related to flaps, described below.

projects… A menu of preferences and commands related to projects, described below.

print PS to File Brings up a file dialog for creating a named .ps file of the current object.

debug Brings up a debug menu different from the one described above, and described below.

save Saves the complete state of Etoys in the current image file, overwriting the previous version.

save as… Saves the complete state of Etoys in a named file.

save as new version Save the complete state of this Etoys session with a new name so that it can be loaded later.

save and quit Save the current state of Etoys as a new version under the same name.

quit End this Etoys session without saving. 

Open menu

Open this menu from the World menu.

browser (b) Open the standard Squeak class browser, described below.

package-pane browser Open the Package Browser, described below.

workspace (k) Open a workspace, a window for entering text and executing commands.

file list Open a file system browser.

file… Open a menu of files.

transcript (t) Open a window for messages.

event theatre Open a window containing a framework for authoring "event-movies", available also in the Object Catalog, and described in the chapter on Basic Objects.

method finder Open a search dialog for method names, described below. Clicking a search result opens a System Browser.

message names (W) Open a different search dialog for method names, described below.

simple change sorter Open a single-pane viewer for changes to projects, described below.

dual change sorter Open a two-pane viewer for changes to projects, described below.

DBus Explorer Open a tool for examining communications using DBus, described below.

http proxy editor Open a tool for examining and changing the HTTP proxy server name and port.

Monticello Browser Open a Monticello browser for Squeak programming, described below.

Monticello Configurations Open a Monticello package browser, described below.

Package List Open a window containing a list of packages, described below.

SqueakMap Package Loader Open a window called Packages with a scrolling list of packages. Select a package by name, and middle-click to add it to the current session or to remove it.

morphic project Create a new project. 

Windows menu

Open this menu from the World menu.

find window Open a menu of available windows and menus, if any. If there are none, nothing appears, and there is a sound.

find changed browsers… Open a menu of browsers containing unsaved changes, if any. If there are none, nothing happens.

find changed windows… Open a menu of windows containing unsaved changes, if any. If there are none, nothing happens.

find a transcript (t) Bring a transcript window to the front and make it active if there is one, or open a new transcript window if not.

find a file list (L) Bring a file list window to the front and make it active if there is one, or open a new transcript window if not.

find a change sorter (C) Bring a change sorter window to the front and make it active if there is one, or open a new transcript window if not.

find message names (W) Bring a message names window to the front and make it active if there is one, or open a new transcript window if not.

stagger windows Toggle whether new windows are placed so that part of each window is visible.

collapse all windows Reduce each window to minimum size, with only the name and control buttons showing. This is the same action as the collapse button in the halo.

collapse all objects Reduce each object to a minimal rectangle, with only the name and control buttons showing. This is the same action as the collapse button in the halo.

expand all Restore collapsed objects to normal.

close top window (w) Close the topmost window, and bring the next window to the front and make it active.

send top window to back (\) Make the topmost window the bottommost object, behind other windows and morphs, and bring the next window to the front and make it active.

move windows onscreen If any windows are offscreen, move them to the screen. (Windows can be dragged offscreen or scripted to move off screen.)

delete unchanged windows Close windows not containing unsaved changes.

delete non-windows Move objects other than windows to the trash.

delete both of the above  Delete unchanged windows and non-windows

Changes menu

Open this menu from the World menu.

file out current change set Add changes made in this session to the current change set and save it in a file with a name based on the current change set file together with the current date and time.

create new change set… Create a new named change set and make it the current one for saving further changes.

browse changed methods Display changed methods, if any, in a message-list browser, and allow the user to edit them.

check change set for slips Examine the current change set for halts, references to the Transcript, and some other issues, and open a message-list browser to display them if any are found.

simple change sorter Open a simple change sorter with a single list of change sets.

dual change sorter Open a dual change sorter with two lists of change sets.

find a change sorter (C) Bring an open change sorter to the front and make it active, if there is one. Otherwise, open a change sorter.

browse recent submissions Open a new recent-submissions browser, described below.

find recent submissions (R) Bring an open recent-submissions browser to the front and make it active, if there is one. Otherwise, open a recent-submissions browser.

recently logged changes… Open a change-list browser, described below, on the latter part of the changes log. This gives access to changes not saved to the change set in the event of a crash.

recent log file… Create a file containing logged changes as far back as desired in the Etoys installation directory, and open a window showing that file.


The file is 32-bit/4-byte UTF-32 Unicode, but the log file window attempts to display it as 8-bit text, with boxes for all of the null characters. Reported as bug SQ-1158.

save world as morph file Save a file that, when reloaded, reconstitutes the current World. It is saved in the Etoys installation directory. Load morph from the load project button on the toolbar. Hold down the mouse button to get a menu, select find any file, selected the morph file, then select load a morph.

isolate changes of this project Isolate this project and its subprojects from the system. Changes to methods made here will be reverted on leaving the project.

Recent Submissions Browser

Open this from the changes menu with the browse recent submissions command.

 

This browser lists class comments from a list of classes. The tab controls are the same as in a System Browser. Selecting an item and middle-clicking brings up this menu.

or this variant.

The title line of one shows the number of submissions to be maintained on the list, and the other shows the name Comment.

Most of these commands are documented under System Browser. The exceptions are

copy selector (c) The selector is Comment. Put this on the clipboard.

remove from RecentSubmissions Delete from this list.

more... The following submenu

These commands are described under System Browser, except for one.

set size of recent history... Open a dialog box asking How many recent methods should be maintained? with the default answer of 30. The user can edit the number and accept or cancel.


Change-list browser

Open this from the changes menu with the recently logged changes... command.

Each line gives brief, indeed cryptic, information on changes made to the user's Etoys image, such as importing objects, editing classes and methods, and so on. Consult Squeak documentation for further details. Clicking a line selects or deselects it. Selected lines are highlighted with a changed background color. The most recently-selected line is highlighted with red text. Any combination of lines can be selected at the same time.

Selecting a line and midde-clicking on it, or clicking on the menu icon above the scroll bar at the top right brings up this menu.

fileIn selections Import the selected items into the image.

fileOut selections... Create a new file containing the selected items.

compare to current Open a separate window which shows the text differences between the on-file version and the in-image version.

No effect. Reported as bug SQ-1159.

toggle diffing (D) Start or stop showing diffs in the code pane. The check box in the diffs tab is selected or deselected.

No other visible effect. Is this supposed to work only for certain kinds of change? If so, which? Reported as bug SQ-1160.

select conflicts with any changeset Select methods in the file which also occur in any change-set in the system.

select conflicts with current changeset Select methods in the file which also occur in the current change-set.

select conflicts with... Allows the user to designate a file or change-set against which to check for code conflicts.

select unchanged methods Select methods in the file whose in-image versions are the same as their in-file counterparts.

select new methods Select methods in the file that do not occur in the image.

select methods for this class Select all methods in the file that belong to the currently-selected class.

select all (a) Select all the items in the list.

deselect all Deselect all the items in the list.

invert selections Select every item in the list that is not currently selected, and deselect every item that is currently selected.

browse all versions of single selection Open a version browser showing the versions of the currently selected method.

No effect. Reported as bug SQ-1162.

browse all versions of selections Open a version browser showing all the versions of all the selected methods.

No effect. Reported as bug SQ-1163.

browse current versions of selections Open a message-list browser showing the current (in-image) counterparts of the selected methods, or show this error message if there are none.

No selected methods have in-memory counterparts.

destroy current methods of selections Remove (destroy) the in-image counterparts of all selected methods.

remove doIts Remove all items that are doIts rather than methods.

remove older versions Remove all but the most recent versions of methods in the list.

remove up-to-date versions Remove all items whose code is the same as the counterpart in-image code.

remove selected items Remove the selected items from the change-list.

remove unselected items Remove all the items not currently selected from the change-list.

Clicking on the menu icon in the lower pane brings up this menu, which is the same as the middle-click menu for text windows such as a Workspace.

These commands have been described above.

Help menu

This menu appears to be misnamed. Perhaps System Menu would be better. Reported as issue SQ-1164.

Open this menu from the World menu.

about this system… Version and license information.

update code from server Load latest code updates over the Internet.

preferences… Open Preferences panel.

set language… Bring up a menu of available user interface languages. All other than English are severely incomplete.

command-key help Display a list of keyboard shortcuts. It is correct for Windows and Mac, but incorrectly says to use the Alt key in combinations on Linux.

world menu help Open a list of commands available on the World menu and its submenus, showing where to find each one.

font size summary Open a list of fonts and sizes that Etoys can access.

useful expressions Open a list of expressions useful to knowledgeable developers.

annotation setup… Open an editor for annotations to appear in browsers and other windows. It shows a column of annotations to apply, and another column of available annotation types Drag and drop names of types from one list to the other.

graphical imports Open a browser for importable graphic elements, described below.

standard graphics library Open a browser for icons used in Etoys on buttons and tiles, described below.

telemorphic Open a menu of commands for connecting multiple computers running Smalltalk, described below. 

turn sound off Disable all Etoys sound output.

definition for… Look up English words in an online dictionary.

set author initials Specify initials used to identify the author of code and other content.

vm statistics Provide information on uptime, memory usage, and garbage collections in the current session.

purge undo records Save space by removing all undo information in all projects.

space left Perform a full garbage collection and report available internal and physical memory, and the number of undo records.

Graphical imports browser

Open this browser from the Help Menu with the graphical imports command.


The Prev and Next buttons allow the user to cycle through an image library implemented as a dictionary.

Clicking the tiny icon to the left of the Prev button brings up this menu.

remove Remove this entry from the dictionary.

rename Rename this entry.

repaint Edit the actual graphic for this entry.

hand me one Hand me a morph with this picture as its form. That is, attach it to the cursor for placement in the World.

browse symbol references  Browse methods that refer to this icon's name, if any. Otherwise display a message.

There are no senders of [name of graphic]
None of the graphics are referred to in methods, so I was not able to open this browser and get an image.

browse string references

 If there are no such references, display a message.

There are no Methods with string [name of graphic] (case-sensitive)
None of the graphics are referred to in strings, so I was not able to open this browser and get an image. See the method string browser below, under standard graphics library browser.

copy name Copy the name of this graphic to the clipboard.

find... Find an entry by name.

find again Find the next match for the keyword previously searched for, or display the message "not found".

This sometimes results in an error: subscript is out of bounds: 0. Reported as bug SQ-1165.

Standard graphics library browser

Open this browser from the Help Menu with the standard graphics library command. It looks just like the graphical imports browser, and has the same controls and menu commands, but it gives access to a library of icons used in Etoys. The window is bizarrely named Testing One Two Three.

This is an example of the result of the browse string references menu command. It has the same functions as a System Browser, but is restricted to the relevant methods.


Telemorphic menu

Open this menu from the Help Menu with the telemorphic command.


Consult Squeak system documentation for explanations of these communications functions.

Appearance menu


Open this menu from the World menu.

preferences… Open Preferences panel.

choose theme… Open theme menu, described below. Each theme sets a selection of Preferences. The default theme for OLPC development is cambridge.

window colors… Opens a Window Colors browser, described below, allowing the user to select the background colors for a variety of windows. The window types and their colors are displayed in a list. 

system fonts… Open a Standard System Fonts menu, described below, allowing the user to view and select fonts and font sizes used in various parts of the Etoys system. The various uses are displayed in a list, each in the current font.

text highlight color… Open a color picker to select the color for highlighted Morphic text.

There is a + icon for opening a full property sheet. It fails. Reported as bug SQ-1166.

insertion point color… Open a color picker to select the color for the insertion point cursor and for selected text in editing text.

There is a + icon for opening a full property sheet. It fails. Reported as bug SQ-1166.

keyboard focus color Open a color picker to select the color for highlighting the border of the text field that currently has focus.

There is a + icon for opening a full property sheet. It fails. Reported as addition to bug SQ-1166.

start menu-color-from-world/stop menu-color-from-world Toggle whether the background color in menus should be the same as the background color of the World.

start rounding window corners/stop rounding window corners Toggle round or square window corners.

full screen on Make Etoys expand to the full screen.

full screen off Make Etoys run in its normal window size.

set display depth… Open a menu for selecting the number of bits per pixel in the Etoys display, in powers of 2 from 1 to 32.

set desktop color… Open a color picker for choosing the background color for the desktop.

set gradient color… Open a color picker for choosing a second color for a gradient on the dekstop.

use texture background Apply a grid to the desktop.

There is no provision on this menu for turning the grid off. I do not see which preference to use for this.

Reported as bug SQ-1167.

clear turtle trails from desktop Remove any color laid down by moving objects, and restore the desktop to its normal appearance according to current settings.

pen-trail arrowhead size… Choose the size for arrowheads used in pen trails. This setting is not available in scripting tiles. It defaults to a 5@4 rectangle.

Theme menu

Open this menu from the Appearance... menu.

Each theme consists of a number of preferences settings. The choices are

  • cambridge A theme for Squeakland and OLPC project
  • chicago A theme for Squeakland developers. It turns off the eToyFriendly and showSecurityStatus preferences.
  • outOfTheBox The default out-of-the-box preference settings for Squeak 3.2
  • personal Settings saved (by sometime earlier having hit the 'Save Current Settings as my Personal Preferences' in a Preferences panel) as my personal preference

    There is also an option to browse themes, which opens the Preference theme browser, described below.

    Preference theme browser

    Open this browser from the Theme menu.

    This browser shows the methods in the Preferences class for installing themes on the themes... menu described above. The controls are the same as in a System Browser. The themes shown here are described above, under Theme menu.

    Window Colors browser

    Open this browser from the Appearance... menu.

    Clicking the ? icon brings up this help text:

    "The 'Window Colors' panel lets you select colors for many kinds of standard Squeak windows.

    "You can change your color preference for any particular tool by clicking on the color swatch and then selecting the desired color from the resulting color-picker.

    "The three buttons entitled 'Bright', 'Pastel', and 'White' let you revert to any of three different standard color schemes.  

    "The choices you make in the Window Colors panel only affect the colors of new windows that you open.

    "You can make other tools have their colors governed by this panel by simply implementing #windowColorSpecification on the class side of the model -- consult implementors of that method to see examples of how to do this."

    Also, from the color picker, the user can open a full property sheet with options for gradient or radial fills, border colors, and drop shadows.

    Standard System Fonts menu

    Open this menu from the Appearance... menu with the system fonts... command.


    These are the fonts listed and their uses.

    • default text font... For code and in workspaces, transcripts, etc.
    • list font... Used in list panes
    • flaps font... Used in textual flap panes
    • etoy tile font... Used on Etoy scripting tiles
    • etoy button font... Used in button text
    • etoy code font... Used in textual code in Etoys, with the show code textually command on the scripting editor menu
    • etoy title font...  ???
    Help text does not help, and is ungrammatical. "Choose the font to be used titles in Etoys". How does this differ from window-title font, below? Reported as bug SQ-1168.
    • menu font... Used on menus
    • window-title font... Used in window titles
    • balloon-help font... Used in help balloons
    • button font... Used in (some) button text
    Which? How is this different from etoy button font?
    • code font... Used in code panes to display methods
    • connector label font... Used in labels attached to connectors

    At the bottom of the menu there are two commands:

    • restore default font choices Set fonts, font sizes, and line spacing to their original values
    • show current font choices Open a text window with a display such as the following:

    standardDefaultTextFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardListFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardFlapFont BitstreamVeraSans Bold points: 15 height: 20.0
    standardEToysFont BitstreamVeraSans Bold points: 15 height: 20.0
    standardEToysButtonFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardEToysCodeFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardEToysTitleFont BitstreamVeraSans Normal points: 24 height: 32.0
    standardMenuFont BitstreamVeraSans Normal points: 15 height: 20.0
    windowTitleFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardBalloonHelpFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardCodeFont BitstreamVeraSans Normal points: 15 height: 20.0
    standardButtonFont BitstreamVeraSans Normal points: 15 height: 20.0

    The knoweledgeable user can modify the arguments to the methods listed above as desired. These methods modify a dictionary called Parameters, which is a class variable of Preferences.

    Do menu--Common Requests


    Open this menu from the World menu.

    The following commands are in Smalltalk. Consult language documentation for their meaning, or look up the specified objects in a system browser, and messages in a message name browser or method finder.
    

    Utilities emergencyCollapse.

    Utilities closeAllDebuggers.

    Sensor keyboard.

    ParagraphEditor abandonChangeText.

    Cursor normal show.

    Project allInstancesDo: [:p | p displayDepth: 16].

    ScriptingSystem inspectFormDictionary.

    Form fromUser bitEdit.

    Display border: (0@0 extent: 640@480) width: 2.

    Undeclared inspect.

    Undeclared removeUnreferencedKeys; inspect.

    Transcript clear.

    Utilities grabScreenAndSaveOnDisk.

    FrameRateMorph new openInHand.

    Utilities reconstructTextWindowsFromFileNamed: 'TW'.

    Utilities storeTextWindowContentsToFileNamed: 'TW'.

    ChangeSorter removeEmptyUnnamedChangeSets.

    ChangeSorter reorderChangeSets.

    ActiveWorld installVectorVocabulary.

    ActiveWorld abandonVocabularyPreference.

    Smalltalk saveAsNewVersion

    Add a new morph menu


    Open this menu with the new morph… command on the World menu. The alphabetical list of Morphs is provided elsewhere in this manual. Unfortunately, there is a bug in the from alphabetical list command on this menu. It tries to present sublists that are too long for the window height, and do not scroll. Ways to create new morphs are documented in the chapter Implementation of Etoys in this manual.

    Reported as bug SQ-1169.
    

    When creating a morph with any of these commands, the morph is attached to the cursor for placement by clicking in the World.

    from paste buffer If a morph has been copied, paste it.

    from alphabetical list Select from submenus in alphabetical order.

    from a file… Open a suitable file, if any.

    grab rectangle from screen  Selecting this command results in the cursor changing shape. Click and drag to select two corners of a rectangle. The screen contents within that rectangle are made into a morph.

    grab with lasso from screen Selecting this command results in the cursor changing shape. Click and drag in any desired curve to select a region from the World. The screen contents within that curve, with its endpoints joined by a straight line, are made into a morph. The curve can intersect itself, in which case the regions within separate areas bounded by the curve are selected, joined at one point per self-intersection.

    grab rubber band from screen Selecting this command results in the cursor changing shape. Click at multiple points to lay out a polyline. The screen contents within that polyline are made into a morph. It can intersect itself, in which case the regions in each bounding polygon are selected, joined together at one point per self-intersection.

    grab flood area from screen Click anywhere on the screen. The contiguous area of the same color as the point clicked is selected, unless it is too big, for example when clicking on the desktop background. Regions covering well over half of the window can be selected, but the limit is somewhat smaller than the entire window.

    make new drawing Open a Paintbox to create a new drawing.

    make link to project… Brings up a menu of currently available projects. Selecting one creates a thumbnail of its visual state. Placing this makes it into a button. Clicking it activates that project. The back button returns the user to the previous project where the button was created.

    Authoring Tools menu


    Open this menu from the World menu.

    objects (o) Open the Preferences Panel, described below.

    view trash contents Open the Trash.

    empty trash can Discard all objects in the trash.

    sound library Open a menu of the stock Etoys sounds. with several buttons for exploring them and creating scripting tiles for them: Play, Stop, Tile, Resume, Delete, Load, Help.

    new scripting area Create an Etoys scripting area containing a playfield and control buttons.

    status of scripts Open an All Scripts button set in hand.

    summary of scripts List all scripts in the workspace with text version of code.

    browser for scripts Open a browser for scripts with functions similar to the System Browser.

    gallery of players Open a Players panel.

    etoy vocabulary summary Open a text window with a summary of the standard scripting tiles.

    attempt misc repairs Take unspecified measures that may help fix a faulty or problematical project.

    remove all viewers Remove all object viewers that display scripting tiles from the project.

    abandon unsituated players Replace references to unavailable objects with the standard object Dot. If there is no Dot in the project, create one and hide it.

    refer to masters Modify scripts if necessary to make them refer to the first object of any their types, in alphabetical order by external name.

    unlock locked objects If any items are locked, which can be done from their halo menus, unlock them.

    unhide hidden objects If any items are hidden, which can be done with a scripting tile in the miscellaneous category, unhide them.

    Playfield Options menu

     

    Open this menu from the World menu. 

    auto-phrase-expansion Toggle whether dropping a tile automatically creates a scriptor around it.

    automatic viewing Toggle whether touching an object (picking it up and dropping it) opens a viewer on it.

    fence enabled Toggle whether moving objects stop at the edge of a containing playfield.

    grid visible when gridding Toggle whether grid should be shown when gridding is on.

    mouse-over halos Toggle whether halos appear only when right-clicking on an object or when the mouse

    origin-at-center Toggle between placing the origin of playfield coordinates in the center or the lower left corner.

    use gridding Toggle whether to use gridding within this playfield.

    What does that do?
    

    round up strays Move any objects that are associated with this playfield but are outside its boundaries so that at least some of each is visible.

    set grid spacing… Edit the grid center point (default 0@0) and grid spacing (default 8@8).

    What effect does this have?
    

    use standard texture Set the playfield background to yellow with blue grid lines.

    make graph paper… Open a GraphPaperPanel for setting the background color, grid line color, and grid size, with an option for a second grid color on a wider spacing (coarse grid), and another option to use just a single solid color.

    show viewers of all players Open viewers for all scripted objects in this playfield.

    remove viewers of all players Close viewers.

    Flaps menu

    Open this menu from the World menu. The following is the default flaps menu for Etoys under Sugar. Even when not running under Sugar these olpc etoy flaps, described below, are the default set.


    show shared tabs Toggle display of shared flaps such as the Sugar Navigator flap.

    automatic flap layout Toggle whether to move flaps when the outer application is resized so that flaps along the bottom do not overlap. Overlap is sometimes a problem when the Stack Tools and Supplies flaps are both displayed along the bottom edge. It can occur with other flaps when they are set to display on the bottom edge. If there is no overlap, setting this toggle will have no visible effect.

    supplies Toggle display of Supplies flap via the chest icon in the Sugar Navigation Flap.

    Sugar Navigation Flap Toggle display of Sugar Navigation flap.

    make a new flap Create a new, empty flap, name it, place it on any of the four edges of the playfield, and open a flap menu, which is also the halo menu for the flap. This menu is described below.

    put shared flaps on bottom Move flaps from top or sides to bottom of playfield.

    destroy all shared flaps Destroy all shared flaps and disable their use in all projects. A severe warning message appears asking whether you really mean to go ahead and remove the current set of flaps. They can easily be restored or another set installed when desired. If you go ahead, the flaps menu changes to the following, offering three choices of shared flaps to install, and three corresponding flaps menus.

    Olpc etoy flaps are the Sugar Navigation flap and the Supplies flap whose icon appears on the Sugar Navigation Flap. With these flaps selected, the flaps menu is the default shown at the beginning of this section.


    These tools are explained in the User Interface chapter of volume I of this manual.

    Classic Etoys flaps are Navigator and Supplies flaps along the bottom edge of the window, as in this image.


    With these flaps installed, the flaps menu changes to the following.

    The user can toggle the Supplies and Navigator flaps on or off. The other commands are as explained above.

    Navigator

    This flap provides tools for managing projects.

    NEW Start a new project.

    <PREV Return to previous project.

    PUBLISH IT! Save the current project. Hold mouse button down for further options:

    publish Edit project info and save

    publish as... Edit project info and give project a new name if desired, before saving.

    publish to different server Edit project info and open file dialog allowing saving anywhere on the user's computer, or on any connected remote server.

    edit project info Open project info dialog box for editing. Do not save project afterwards.

    FIND Look for and load a project.

    (paintbrush icon) Open a PaintBox and SketchEditor for painting.

    (speaker icon) Open an adjustable slide for setting speaker volume.

    This has no effect on actual volume. Report added to bug SQ-1010.
    

    (globe icon) Open language menu for selecting user interface language, described in the User Interface chapter.

    QUIT  Exit Etoys without saving image.

    Supplies

     

    This is not the same selection of objects as in the supplies box on the olpc etoys toolbar, but there is considerable overlap. These items are all explained in vol. I of this manual, in the Basic Objects chapter.

    Developer flaps default to


    The full set is shown next.


    With developer flaps installed, the flaps menu appears in this form, with toggles for the various optional flaps. This image shows the default selections.


    Squeak (default on, left edge of window) The following is how this flap displays when set along the bottom edge of the window.


    • Save Overwrite Etoys image on disk without warning, and exit.
    • load code updates Check the Squeak server for updates, and load any found.
    • about this system Show Etoys version number and update number. Offer to show license.
    • change theme... Open themes menu, described above.
    • trash A trash can, described in the User Interface chapter.

    Supplies (default on, bottom edge of window) Described above.

    Tools (default on, right edge of window)

    Most of these IDE tools have been described above, where they occur on various menus. The exceptions are

    • Processes Open a Process Browser, described below
    • Annotations Open an Annotations selector window, described below

    Widgets (default on, bottom edge of window)

    These objects are described in vol. I of this manual.

    Stack Tools (default off, bottom edge of window)

     

    A stack is very similar to an Apple Hypercard deck, supporting programmable interactive display and navigation functions. In Etoys it is expected that Books will be used rather than these Stacks. Describing the use of these tools for stack programming is beyond the scope of this manual.

    • Stack Create and display a new, empty stack, described below.
    • Stack Help Display the following text.

    A "stack" is a place where you can create, store, view and retrieve data "fields" from a set of "cards".  Data that you want to occur on every card (such as a name and an address in an Address Stack) are represented by objects such as "Simple Text", "Fancy Text", and "Scrolling Text" that you obtain from the Stack Tools flap.

    When you look at a card in a Stack, you may be seeing three different kinds of material.  Press the § button in the stack's controls to see the current designations, and use the "explain designations" to get a reminder of what the three different colors mean.
    ·  Things that are designated to be seen on every card, and have the same contents whichever card is being shown. (green)
    ·  Things that are designated to be seen on every card, with each card having its own value for them. (orange)
    ·  Things that are designated to occur only on the particular card at hand. (red)

    Use the "stack/cards" menu (in an object's halo menu) to change the designation of any object.  For example, if you have an object that is private to just one card, and you want to make it visible on all cards, use "place onto background".  If you further want it to hold a separate value for each separate card, use "start holding separate data for each instance".

    Cannot find this menu and this command. Available menus include Stack, Stack / Book, Card and Stack, Card, and Stack debugging. The command is provided by the Morph addStackItemsTo: method, which has no senders. What??? Reported as bug SQ-1177.

    The normal sequence to define a Stack's structure is to obtain a blank Stack, then create your fields by grabbing what you want from the Stack Tools flap and dropping it where you want it in the stack.  For easiest use, give a name to each field (by editing the name in its halo) *before* you put it onto the background..  Those fields that you want to represent the basic data of the stack need to be given names, placed on the background, and then told to hold separate data.

    When you hit the + button in a stack's controls, a new card is created with default values in all the fields.  You can arrange for a particular default value to be used in a field -- do this either for one field at a time with "be default value on new card", or you can request that the all the values seen on a particular card serve as default by choosing "be defaults for new cards" from the stack's · menu.

    It is also possible to have multiple "backgrounds" in the same stack -- each different background defines a different data structure, and cards from multiple backgrounds can be freely mixed in the same stack.

    Besides text fields, it is also possible to have picture-valued fields -- and potentially fields with data values of any other type as well.

    • Simple Text An unadorned, editable text in a fixed font
    • Fancy Text Text in a window that by default is colored, with a drop shadow, where various fonts and effects can be applied to the text, and various graphic effects can be applied to the window
    • Scrolling Text A text window with a scrollbar.
    • Scriptable Button A button with an editable text and the ability to fire a designated script.
    • Previous Card A navigation button to be placed on a card
    • Next Card A navigation button to be placed on a card
      A new stack appears as in the following image.

        The button texts show character set damage. What character set is this supposed to be? Reported as bug SQ-1170. - ¬´ (AC B4) < ¬ (AC 8F) ¬ß (AC 9F) > ¬ª (AC AA) +
        

        The buttons along the top of the stack window have the following functions, and should show the following symbols.

        - Delete this card

        « First card

        < Previous card

        • Stack command menu, described below

        § Show designations, explained in help text above

        > Next card

        » Final card

        + Insert new card after current card

        ◊ Display fewer controls (Previous, Menu, Next)

        This is the stack command menu from the stack halo. There is no balloon help for the commands on this menu.

        find... Open a search window for entering terms to look for in the current stack.

        find via this template Search other cards for the text on the current card.

        show designations Highlight designations in three colors, as described by the following command.

        explain designations Open the following informational display.

        Note that the word 'card' is nearly hidden by the black bar below the first pane. This display cannot be resized using the halo handles in order to make the word show.

        Reported as bug SQ-1171.

        previous card Go to previous card in stack. The previous card before the first card is the last card.

        next card Go to next card in stack. The next card after the last card is the first card.

        first card Go to first card in stack.

        last card Go to last card in stack.

        go to card... Open a window for entering the number of a card to go to.

        add a card of this background Insert a card after the current card using the same background as this card.

        add a card of background... Allow the user to select from among the named backgrounds of cards in this stack. If there is only one, display the message, "At this time, there IS only one kind of background in this stack, so that's what you'll get" with on OK button.

        make a new background Create a new named background which can be edited and used for creating new cards.

        insert cards from clipboard data Create new cards and paste items from the clipboard into them.

        insert cards from a file... Open a file dialog box to allow the user to select a file. If the file is in an appropriate format, put its contents on new cards.

        instance variable order... Open a window showing a list of instance variables used in this stack, and allow the user to rearrange them.

        What instance variables? What happens if the user edits them beyond rearranging their order?
        

        be defaults for new cards Make the settings for this card the defaults for newly created cards.

        sort cards by... If there are no fields defined on any cards in this stack, this command has no visible effect. If there are any, the user is invited to sort on any of them.

        Get image
        

        delete this card Ask "Really delete this card and all of its data?", with the options Yes and No.

        delete all cards *except* this one Keep the current card and remove all others.

        move card to front of stack Make the current card the first card in the stack.

        move card to back of stack Make the current card the last card in the stack.

        move card one position earlier Swap the positions of this card and the previous card. Does not swap the first and last cards.

        move card one position later Swap the positions of this card and the next card. Does not swap the last and first cards.

        scripts for this background Open a Hierarchy Browser, described above, on the card object, which is a numbered subclass of CardPlayer. Show the object inheritance chain for this CardPlayer, the class protocols and selectors, and method text. Offer to open other IDE tools as usual.

        debug... Open a stack debug menu, described below.

        bookish items... Open a Stack / Book menu, described below.

        page controls visible Toggle display of the toolbar in the stack window.

        view pages full-screen Toggle between full screen and window display of this stack.

        Card menu

        Access this menu from the halo on a card, not the stack. Its name will reflect the name of the card object, which is determined by the background of the card. The default name for the default (initially empty) background is "card", but the user can rename it, and can give any desired name to user-created backgrounds. This menu is created via the Morph addStandardHaloMenuItemsTo: method and other methods that it calls. The functions in the upper part of the menu are documented in the User Interface chapter in Vol. I of this manual. Cards in a stack have one settings toggle and three extra commands not available for general Morphs, and one more option for debug...

        round corners Toggle between rounded and square corners on pages in current stack.

        debug... Most of this menu is the same as for general Morphs. For cards in a stack, there is one more command, abandon costume history, which tells the page to forget any previous forms that it had. 

        card & stack... Bring up the card and stack menu, described below.

        pen trails... Bring up the pen trails menu. The commands on this menu are versions of the functions in the Pen Trails category of scripting tiles, described in the Common Tiles and Viewer Categories chapter of Vol. I of this manual.

        playfield options... Bring up the playfield options menu, described

        Selecting control-menu... under debug... brings up this extension of the card menu. Except for the last four items, described above, it is the same as the extended Halo menu on any Morph.

        grab

        copy to paste buffer

        delete

        copy text

        copy Postscript

        print Postscript to file...

        go behind

        add halo

        duplicate

        embed into

        resize

        fill style

        drop shadow

        layout

        provide clipping toggle

        inspect

        explore

        browse hierarchy

        make own subclass

        set variable name...

        save morph in file

        attach to resource

        show actions

        debug...

        card & stack...

        pen trails...

        playfield options

        Card and stack menu

        Access this menu from the Card menu.

        This menu has no balloon help. Most of these commands appear on other menus and are invoked by icon buttons that are described elsewhere. These two do not.

        show foreground objects Highlight foreground items in orange.

        show background objects Highlight background items in red.

        Stack debugging menu

        Access this menu from the Stack menu with the debug... command. This menu has no balloon help.

        This menu is defined in the StackMorph offerStackDebugMenu method.
        

        reassess Check the structure of the current card.

        relax grip on variable names Abandon any memory of variable names defined for this card.

        commit card data 

        browse card uniclass Open a System Browser on the class of the current card.

        inspect card Open an inspector on the class of the current card.

        inspect background Open an inspector on the class of the background of the current card.

        inspect stack Open an inspector on the class of the stack.

        Stack / Book menu

        Access this menu from the Stack menu with the bookish items... command. This menu has no balloon help. Its appearance is defined in the StackMorph offerBookishMenu method.

        sort pages Open a BookPageSorter showing page thumbnails.


        The BookPageSorter shows only one or two pages, and gives no hint of how to sort them. The BookPageSorterMorph class has no class comment. One can drag and drop a page, getting what looks like a new order, but accepting it has no effect. Reported as bug SQ-1172.
        

        uncache page sorter No visible effect. The code for the uncachePageSorter method in BookMorph removes the cachedThumbnail property from each page in the stack.

        Where are these thumbnails used, apart from the BookPageSorter?
        

        stop at last page Do not treat the first page as the page after the last page. This property can be toggled to wrap around, and this menu item can be changed to read wrap after last page and to have the opposite effect. No visible effect.

        How can it be toggled?
        Clicking this, going to the last page, and clicking the next page button goes to the first page. Reported as bug SQ-1173.
        

        make bookmark Place a bookmark button at the cursor. When clicked, either from another page in the stack or from outside, it moves to the page selected.

        make thumbnail Place a thumbnail of the current page at the cursor.

        This usually makes a thumbnail of the same page no matter which page is displayed. Reported as bug SQ-1174.
        What can the user do with such a thumbnail?
        

        sound effect for all pages Change the sound effect for pages that have one by selecting from the usual menu of sounds, described in Vol. I of this manual.

        How is it that some pages do not respond to this setting?
        Reported as bug SQ-1175.
        

        sound effect for this page only Set or change the sound effect for this page by selecting from the usual menu of sounds.

        visual effect for all pages Choose a visual effect from the following menu, and apply it to all pages that have an effect.

         

        How is it that some pages do not respond to this setting? Why is it that transitions to a page with this setting don't all use the visual effect applied?
        

        Reported as bug SQ-1176.

        The following visual transitions are provided on the menu.

        none The card simply appears

        slide over (in one of these directions: right, down right, down, down left, left, up left, up, up right)

        slide both (in one of these directions: right, down right, down, down left, left, up left, up, up right)

        slide away (in one of these directions: right, down right, down, down left, left, up left, up, up right)

        slide border (in one of these directions: right, down right, down, down left, left, up left, up, up right)

        page forward (in one of these directions: right, down, left, up)

        page back (in one of these directions: right, down, left, up)

        french door (in one of these directions: in, in h, out, out h)

        zoom frame in or out

        zoom in or out

        dissolve

        visual effect for this page only Choose a visual effect from the following menu, and apply it to the current page.

        save as new-page prototype Make this the default appearance for new pages, and add a new line to this menu the next time it is opened. This line does not appear while the menu is pinned in the workspace.

        Does it save only the current background? It does not seem to be working. At least, there should be a new line,
        

        clear new-page prototype (Appears if a new-page prototype has been saved using the command above) Remove the saved new-page prototype, and go back to the default format for new pages. Using this command removes it from the menu after it is dismissed and invoked anew.

        close dragNdrop/open dragNdrop Toggle the DragNDrop property.

        What effect is this supposed to have?
        

        make all pages this size now Make all pages be of the same size as the current page.

        keep all pages the same size Toggle whether or not the receiver should maintain uniform page size.

        send all pages to server Write out all pages in this book onto a server.  For any page that does not have a SqueakPage and a url already, ask the user for one.  Give the option of naming all page files by page number.  Any pages that are not in memory will stay that way.  The local disk could be the server.

        send this page to server Write out this single page onto a server.  See send all pages to server.  (Don't compute the texts, only this page's is written.)

        reload all from server Fetch the pages of this book from the server again.  For all pages that have not been modified, keep current ones. Use new pages. For each, look up in cache, if time there is equal to time of new, and its in, use the current morph. Later do fancy things when a page has changed here, and also on the server.

        The text above, from the comment to the BookMorph reload method, is ungrammatical. What does it mean?
        

        copy page url to clipboard If this page has a URL, put it on the clipboard ready for pasting. Otherwise, display the error message "Page does not have a url.  Send page to server first."

        keep in one file Mark this book so that each page will not go into a separate file.  Do this when pages share references to a common Player.  We don't want many copies of that Player to be brought in.  Do not write pages of book out.  Write the PasteUpMorph that the entire book lives in.

        load PPT images from slide #1 Open a file menu. If the user selects a PowerPoint file, read slides in as pages, starting at slide #1.

        The following comment is from the BookMorph loadImagesIntoBook method.

        PowerPoint stores GIF presentations as individual slides named Slide1, Slide2, etc. Load these into the book.

        background color for all pages... Open a color picker for the user to select a color. Use the selected color as the background color for all pages.

          Navigator (default off, bottom edge of window) Shown above

          Paint (default off, upper right corner of window)

          Click to open standard PaintBox and Sketcheditor for painting images to use as Morph costumes.

          Objects flap (default off, top edge of window)

           

          This offers the same objects in the same categories as the Object Catalog, with the same find function and the same alphabetic listing.

          destroy flap… Open a list of flaps and allow the user to choose one to remove.

          about flaps… Open a text window containing information about flaps. The default shared flaps listed are Supplies and Sugar Navigation flap. The command install default shared flaps, described in the about flaps... window, is therefore not shown.

          Process browser

          This tool is accessed from the Tools flap, described above.

          Describe commands, two middle-click menus.
          

          Annotations selector

          This tool is accessed from the Tools flap, described above.

          Describe commands
          

          Flap menu

          This is the halo menu for a flap. It also appears when creating a flap with the make a new flap command on the Flaps menu.

          Explain commands.
          

          Projects menu


          Open this menu from the World menu.

          save on server (also makes a local copy) Save current project on server, prompting for a Project Name, Description, Author, and Tags, and then offering to save either in the user's computer's file system or the Squeakland server.

          What does it mean about saving a local copy?
          

          save to a different server Save current project on server, prompting for a Project Name, Description, Author, and Tags, and then offering to save either in the user's computer's file system or the Squeakland server.

          save project on local file only Save current project in the local filesystem, prompting for a Project Name, Description, Author, and Tags.
          There is no visible difference between the actions of the above three commands. The same file menu appears, with the same button for logging into Squeakland.
          

          Reported as bug SQ-1179.

          see if server version is more recent… Determine whether the current project has been loaded from an earlier version than the latest one stored on the computer or the Squeakland server.

          load project from file… Open a file dialog to the directory with saved projects and with the ablity to navigate to other directories. The order of projects listed is neither alphabetical nor by time saved. The user can click a project in any saved version to load.

          show project hierarchy Open a text window with the available projects listed in a tree structure. Versions are not displayed.

          create new morphic project Place a thumbnail for a new, empty playfield in the World. Clicking it suspends the current project and opens the new one. Use the back button on the Sugar Navigation Toolbar or the go to previous project command on the project menu to navigate to the previous project. With this tool, projects can be linked in a tree structure.

          go to previous project Suspend this project and go to the last previously active project.

          go to next project After coming back from a nested project, use this to return to it.

          jump to project… When more than one project is embedded in the current project, this command brings up a list of projects to choose from, as an alternative to clicking on project thumbnails.

          save for future revert

          No help balloon. Clicking this function puts one in a different project, empty except for an icon for the previously active project, or else results in an error. Reported as bug SQ-1180.
          

          revert to saved copy

          No help balloon. Clicking this command puts one in the previously saved project. There seems to be a bug in this function, since it frequently pops up an error alert.
          

          Reported as bug SQ-1181.

          Debug menu


          Open this menu from the World menu. It is defined in the TheWorldMenu debugMenu method.

          inspect world Open an object inspector on the World as a Morph, identifying its player and costume, and showing values of variables.

          explore world Open an object explorer on the World, giving a hierarchical, tree-structured view of its contents.

          inspect model Open an object inspector on the current morphic model, identifying it and showing values of variables. A model object is an initially empty subclass of MorphicModel. As the user names parts and adds behavior, instance variables and methods are added to this class.

          start MessageTally Offer to open a Spy Results text window, showing the number of message tallies, time, memory usage, and garbage collections between starting MessageTally and moving the mouse cursor to the top of the window.

          start/browse MessageTally The same data as start MessageTally, but opened in a browser that shows the code of a message when one is selected.

          open process browser Open a browser for system processes.

          start drawing again In case of error in drawing, reset error status and resume.

          start stepping again In case of an error in stepping, test whether the error condition persists, and if not, resume stepping. This gives the user an opportunity to change the script being debugged and attempt to continue.

          call #tempCommand Call a Squeak command defined with the menu command below.

          define #tempCommand Open a browser on the tempCommand method in the Morph class, allowing it to be edited.

          Viewer Menu

          With the etoyFriendly preference turned off, the menu in any viewer has this form. The options on this menu are described in the User Interface chapter in Vol. I of this manual.

          Clicking more... brings up this menu.

          Most of these options are described in the User Interface chapter in the first volume of this Reference Manual or, for common inspectors and browsers, elsewhere in this chapter. A few require further explanation here.

          Choose Vocabulary

          Bring up a menu of vocabularies, that is, sets of scripting tiles to add to the viewer, in the following form. The Etoy vocabulary is selected by default.


          Here is an example of an added tile category, for the vector vocabulary.

          The last four are of a tile type that I have not previously encountered. Document in User Interface chapter. What do they do? Can drop one in place of object in scripting tile, but cannot yet determine the effect (even by viewing source code), except for one crash of all of Etoys.
          Report as bug.
          

          All of the options other than vector fail, resulting in no categories at all being displayed in the viewer, and no way to recover the viewer. It is necessary to shut down the viewer and open another one on the same object.

          Reported as bug elsewhere.
          Document vector vocabulary in Scripting Tiles chapter.
          

          Choose Limit Class

          No visible effect. Report as bug.
          

          Open Standard Lexicon

          This command opens a vocabulary browser giving the Squeak source for the methods attached to all of the scripting tiles in the current standard viewer.

          Describe controls.
          

          The top left pane lists the categories in this viewer, including any added vocabularies such as vector.

          The top right pane lists the method names corresponding to the various tiles in the currently selected category.

          There is a small pane below the two described above, where a description of the currently selected category or method should appear. None of the categories actually has a description defined. There are descriptions for two special items at the bottom of the category list.

          • -- query result -- Results of queries will show up here.
          • -- active -- Methods visited recently. Use the "-" button to remove a method from this category.
          • -- all -- causes an error, reported elsewhere as a bug. So there is no way to view its descripbtion in the vocabulary browser.

          Selecting a method results in the display of a property string in the form

          sw 8/17/1998 17:23 · slot getters/setters · 3 implementors · in no change set ·
          

          It gives the initials of the implementors, the date when it was defined, the protocol of the method in its defining class, the number of implementors of methods of the same name, and any change sets containing this method.

          World Halo Menu

          Open this menu from the World's Halo.

          about this system… Display Etoys version and update number, and offer to show Apache license.

          redraw screen (r) In the case of a display bug, this redraws everything in the window fresh.

          preferences… Open the Preferences Panel.

          authoring tools… Open the Authoring Tools menu described above.

          display mode… Open a menu described below.

          fill style Brings up a submenu with the selections

          • change color (with color picker)
          • solid fill
          • gradient fill
          • bitmap fill
          • graph paper
          • default fill

          pen trails… Brings up the pen trails menu, described below.

          playfield options… Brings up the playfield options menu, described above.

          The World Halo menu gives access to several other menus and the preferences tool.

          Preferences

          View or change a wide range of system preferences. By default, with the eToyFriendly preference on, the initial view is like this.

          With eToyFriendly off, Preferences comes up like this when restarted.


          This tool is described in the Etoys Preferences appendix.

          Authoring tools

          Also available from the World menu, and described above.

          Display mode

          This menu has three toggle buttons:

          No Scaling makes the world fill the window at any size, but keeps the elements in the world the same size.

          Scale To Fit maintains the aspect ratio of the world and resizes it to fit within the window shape, scaling all elements that it contains.

          Selecting one of the above buttons deselects the other.

          Full Screen expands the window to full screen, observing the scaling selection.

          Pen Trails

          Open from world halo menu or any other playfield halo menu. These commands affect the pen trails of all objects in the current playfield.

          clear pen trails Restore the appearance of the playfield with no pen trails visible.

          all pens up Set all objects in the playfield not to leave pen trails when moving.

          all pens down Set all objects in the playfield to leave pen trails when moving.

          all pens show lines Set the pen trails of all objects to be plain lines.

          all pens show arrowheads Set the pen trails of all objects to be arrowheads without arrow bodies.

          all pens show arrows Set the pen trails of all objects to be arrows with line bodies

          all pens show dots Set the pen trails of all objects to be dots.

          batch pen trails Toggle whether to draw pen trails for all object motions (false) or to update trails only at the time of each screen update, possibly missing detailed motions in between.

          Playfield options

          Described above as an option on the World menu.

          The Open Menu

          The open… menu described above, gives access to a variety of views into the Squeak system and the underlying Smalltalk Object-Oriented Programming system, including the following.

          System Browser


          Open this tool from the open… menu with the browser command or from the keyboard with ctrl-b/cmd-b.

          The System Browser is the heart of the Squeak Smalltalk IDE (Integrated Development Environment) within Etoys. It provides tools for displaying class and method definitions, for displaying the class structure in whole or in part, for showing inheritance and overriding of methods, for searching within the system, and for finding where and how methods and variables are used.

          Toolbar:

          close button Close this window.

          menu button Display the following menu.

          These commands are

          • change title Edit the title for this instance of the System Browser
          • send to back Make this window the bottommost in its playfield
          • make next-to-topmost Bring the next window to the top, and put this one behind it
          • make uncloseable Remove the close button from the toolbar, and change command to make closable
          • make undraggable Make the Browser resist being picked up with the mouse, and make this item make draggable; it can still be moved with the Pick Up and Move tools in the halo
          • full screen expand browser to nearly fill playfield
          • window color Set background color with color picker
          • what to show
          • Register this Browser as default If the Package Pane Browser is the default, make the System Browser the default instead to be opened by the Browser command in the Open menu, or the ctrl-b/cmd-b keyboard shortcut
          • Choose new default Browser The user can set either the System Browser or the Package Pane Browser as the default.

          title System Browser

          full screen button Expand to nearly fill the available space, or restore to a smaller size.

          collapse button Reduce browser to a tab with only the name and a few controls.

          Panes: The System Browser window is divided into several functional areas. Across the top are four panes for exploring classes and methods. From left to right, they are the categories pane, showing a two-level grouping of classes using two-part names; the class pane, listing classes in a category; the protocol or message category pane, showing groupings of methods; and the method pane, showing methods in a protocol.

          At the bottom of the classes pane are three buttons.

          instance Display instance methods for the selected class in the methods pane.

          ? Display the class comment below, and instance methods in the methods pane.

          class Display class methods in the class pane.

          Below these four panes there is an information line. It gives uninformative messages for categories, classes, and protocols, but useful information about methods in the format

          implementor's initials; date and time of last modification; number of classes implementing the same message; number of change sets including the method

          Next below is a toolbar displayed as a line of tabs, for opening other tools: browse, senders, implementors, versions, inheritance, hierarchy, inst vars, class vars, source. These are illustrated and explained below.

          At the bottom of the window is the code pane, which displays different information depending on the current selection.

          • When a category is selected, but no class, the code pane shows the subclass template, which the user can edit and accept to define a new class.
          • When a class is selected, but no protocol, the code pane shows the definition of the class and the class comment (or a message saying that there isn't one).
          • When the ? button is selected in the class pane, only the class comment is displayed in the code pane.
          • When a protocol is selected, but no message, the method template is displayed for the user to edit and accept to define a new method.

          Categories pane

          Show listing of named groups of Smalltalk classes. The names are in two parts separated by a dash, for example, "Morphic-Basic" for simple geometric morphs.

          Categories menu, from the icon above the scroll bar.

          These commands are

          • find class Enter part of a class name to get a list of classes that include that part.
          • recent classes… Open a list of classes viewed in this session to choose from.
          • browse all Open a Hierarchy Browser window (described above) with a complete alphabetical list of classes in linear order
          • browse Open a browser on the classes in the currently selected category. If none is selected, nothing happens.
          • printOut Silently write an html file containing a description of the currently selected category, if there is none, or bring up a message asking whether to overwrite it or write  a file with another name, if there is. Canceling results in an error.
          Reported as bug SQ-1182.
          
          • fileOut Silently write a changeset file containing a definition of the classes in the currently selected category, if there is none, or bring up a message asking whether to overwrite it or write  a file with another name, if there is. Canceling results in an error.
          Reported as bug SQ-1183.
          • reorganize Make a list of categories and the classes they contain in the lower pane of the System Browser
          • alphabetize Put the categories in alphabetical order. This order persists in the current session even between projects, but not across a closing and restarting of Etoys.
          • update
          No visible effect. What is this for?
          
          • add item Create a new named category with no classes in it.
          • rename Open a dialog box for editing the name of the currently selected category.
          • remove Delete this category and all of the classes in it from the currently running system. Ask before deleting system categories

          Classes pane

          Names of object types within the selected category, further defined by inheritance (superclass and subclasses), instance and class variables, and both class and instance methods. The three buttons at the bottom of this pane are explained above.

          Classes menu, from the icon above the scroll bar.

          browse full Open a new system browser on the selected class.

          browse hierarchy Open a hierarchy browser on the selected class.

          browse protocol Open a vocabulary browser on the selected class.

          printOut Silently create an HTML file showing the selected class, if there is none. Allow the user to choose whether to overwrite the existing file, create another under a different name, or cancel. Canceling causes an error.

          Reported as bug SQ-1184.
          

          fileOut Silently create a text file showing the definitions for the selected class, if there is none. Allow the user to choose whether to overwrite the existing file, create another under a different name, or cancel. Canceling causes an error.

          Reported as bug SQ-1185.
          

          show hierarchy Display the inheritance chain from ProtoObject to the current class in the lower pane of this browser.

          show definition Display the definition of this class in the lower pane of this browser. This is the default view.

          show comment Display only the comment from the definition of this class in the lower pane of this browser.

          inst var refs… Bring up a menu of the instance variables defined in this class for the user to select from, if any, otherwise display a message. Display methods from all classes that access this variable, if any, otherwise display a message. This Accesses browser is explained below.

          inst var defs… Bring up a menu of the instance variables defined in this class for the user to select from, if any, otherwise display a message. Open a Stores Into viewer showing the definitions of methods in any class that set the value of a selected variable. If there are none, display a message.

           

          The view above shows that there are 44 methods that store values into bounds, a variable defined in the Morph class. In the upper pane each line specifies a class, a method name, and its associated protocol. In the narrow pane below that is information on the method selected above, consisting of the implementor's initials, a timestamp, a protocol name, the number of implementors, and information on a change set containing this method, if any. The bottom pane displays the method body, with the same set of tabs as a system browser.

          class var refs… Bring up a menu of the class variables defined in this class for the user to select from, if any, otherwise offer to display DependentFields, which results in a display of class variables in the superclass chain of this class. Display methods from all classes that access the selected variable, if any, otherwise display a message. This Accesses browser is explained below.

          class vars Bring up a window containing all of the class variables for this class, with their current values. For example:

          class refs Open a browser for Users of this class, showing methods that refer to it.

          rename class Bring up an edit window for the class name.

          remove class Bring up a warning dialog box asking whether the user really wants to delete the selected object definition.

          find method Open a menu of the methods defined in this class, with an option for doing a wildcard search. The menu of methods does not scroll if there are more methods than fit in the window. Clicking more…advances the list display. When the end of the list is reached, this changes to start over

          find method wildcard Open the wildcard search dialog box.

          more Open this submenu

          unsent methods Browse all methods in the selected class that have no senders, that is, those not used in the construction of Squeak and Etoys that are available to users.

          unreferenced inst vars Display a list of instance variables defined in the selected class that are not referenced in methods, if any, otherwise display a message.

          unreferenced class vars Display a list of class variables defined in the selected class that are not referenced in methods, if any, otherwise display a message.

          subclass template Display the template for defining new classes.

          sample instance Create an instance of this class, if possible, and either display it in the world, if possible, or open an inspector on it.

          inspect instances Open an inspector on all instances of this class currently in use, including any in the trash.

          inspect subinstances Open an inspector on all instances of this class and all of its subclasses currently in use, including any in the trash.

          fetch documentation Not currently used. At one time it fetched documentation on a class from the Squeak Documentation Repository. Invoking this command now results in an error.

          add all meths to current chgs Add any new or modified methods in this class to the current change set.

          create inst var accessors Compile an instance variable accessor method for each variable that does not have one.

          more… Return to the previous menu.

          protocols pane

          For the convenience of developers methods defined within a class or its metaclass can be put into named groups called protocols, with separate lists of protocols for instance and class methods in the class view. The choice of protocol names and the selection of methods to put into each are not defined in the system, but are entirely up to developers. Methods do not have to be put into protocols.  Some conventions have arisen, such as having protocols for initialization and accessing, and a private protocol to suggest that certain methods should not be called directly in methods defined in other classes. The --all-- item, which always appears at the top of the protocols list, gives access to all methods in alphabetical order. If there are methods not assigned to any protocol, there will be an item in the protocol list with the name "as yet unclassified" to held them.

          Protocols menu

          browse Open a Message Category Browser on the selected protocol, if any. If not, nothing happens.


          This Browser shows the selected protocol at the top. There is a bug that makes the boundary of this pane overlap the one below.

          Reported as bug SQ-1186.
          

          The pane below contains a scrolling list of messages in the selected protocol. Selecting a message results in a display of the implementor's initials, a timestamp, the protocal name, information on implementors, and information on a change set, if any. The bottom pane shows the code for the method corresponding to the selected message, with the same set of tabs as in a System Browser.

          printOut Silently create an HTML file showing the selected protocol and its methods if there is not one, or allow the user to specify a name for another copy.

          fileOut Silently create a file containing definitions for the methods in the selected protocol if there is not one, or allow the user to specify a name for another copy.

          reorganize Display definitions of the protocols in the code pane in a Squeak dictionary format.

          alphabetize Since protocols and methods are automatically kept in alphabetical order, this command has no effect.

          Is this a bug? Is it supposed to alphabetize the protocols or the methods? Is there a way for whichever it is to get out of order?
          

          remove empty categories Delete protocol names from the list if they have no methods assigned to them.

          categorize all uncategorized Categorize methods by looking in parent classes for a method category.

          new category… Open a dialog box for the user to enter a name, and create a category with that name if none exists, otherwise display a message.

          rename… Open a dialog box for the user to enter a name, and change the name of the selected category to that name if there is no conflict, otherwise display a message.

          remove Delete a protocol and its methods.

          Methods pane

          This pane shows the methods for the currently selected class in the currently selected protocol, or all methods if the -- all -- option is selected, or no option is selected. Methods can be assigned to protocols in the column to the left by clicking and dragging, or by menu commands described below.

          The menu in the methods pane is of the following form, showing the number of methods in the selected protocol, or for the complete class if no protocol is selected.

          When a specific method is selected the second line of this menu shows the initials of the implementor and the date and time of the definition.

          n messages The number of messages in the selected protocol, or the number of methods for this class if -- all -- is selected.

          what to show… A menu of radio buttons for choosing how to displaying the method code, or whether to show its comment. The examples shown below are for category Kernel-Number, class Number, protocol arithmetic, method negated

          • source Code for the method as entered and saved by the developer.
          negated
              "Answer a Number that is the negation of the receiver."
              ^0 - self
          • documentation
          negated
          
          Answer a Number that is the negation of the receiver.
          
          • prettyPrint Formatted code with tab indents and a limited line length.
          negated
          	"Answer a Number that is the negation of the
          	receiver. "
          	^ 0 - self
          
          • colorPrint prettyPrint plus syntax coloring.
          negated
          	"Answer a Number that is the negation of the
          	receiver. "
          	^ 0 - self
          
          • altSyntax Display code colored and in an alternative syntax. See Squeak documentation for details.
          negated
          	"Answer a Number that is the negation of the
          	receiver. "
          	Answer 0 - self
          • showDiffs For methods with more than one version, show the differences between the current version and the last previous version.
          Where can we get a good example?
          
          • prettyDiffs For methods with more than one version, show the differences between the current version and the last previous version in prettyPrint format.
          Where can we get a good example?
          
          • decompile Show the code that results from decompiling the compiled bytecode for this method.
          negated
          	^ 0 - self
          
          • byteCodes Show a human-readable translation of the binary code from compiling this method. Line numbers are sequential for all bytecode sequences shown in this session. The individual bytecode values are given in hexadecimal and in a text form comparable to FORTH or assembly language. Consult Squeak implementation documentation for details.
          13 <75> pushConstant: 0
          14 <70> self
          15 <B1> send: -
          16 <7C> returnTop
          
          
          • tiles Show this method as it would appear in a tile script. Tile components can be duplicated with the green handle, just as in a halo handle of the same form, and placed elsewhere, or the tile expression can edited in place using other controls that appear.
          Further explanation is needed.
          

          The comment is displayed in blue text on a blue background, and only one tile at a time is shown. Reported as bug SQ-1187.
          Tile components are SyntaxMorphs. They should be documented elsewhere.
          

          toggle break on entry  Install or uninstall a halt-on-entry breakpoint

          browse full Open a system browser with this class and method selected.

          browse hierarchy Open a hierarchy browser showing subclasses of this class, with this method selected.

          browse method Open a Message List Browser on this method, with tools to view senders, other implementations in various classes, and so on.

          browse protocol Open a vocabulary browser on this class with this method selected.

          fileOut Write an HTML file for displaying this method.

          printOut Write a text file containing a definition of this method.

          senders of… Open a browser showing all methods in all classes that send a message with the same name as the selected method.

          implementors of… Open a browser showing classes which have implementations of methods with the same name as the selected method.

          inheritance Open a browser showing the inheritance relationships among methods with the same name as the selected method, including overriding a method in a superclass, sending to the method in a superclass, and other relationships.

          tile scriptor Open a window showing the code for the selected method in a tile form, with some editing functions, as shown above under What to Show

          versions List versions in different changesets.

          inst var refs… For classes with instance variables, display a menu to select among them, and then open a browser displaying methods that use the value of that variable.

          inst var defs… For classes with instance variables, display a menu to select among them, and then open a browser displaying methods that change the value of that variable.

          class var refs… For classes with class variables, display a menu to select among them, and then open a browser displaying methods that use the value of that variable.

          class variables Open an inspector on the class variables of the selected class.

          class refs Open a browser showing the classes that make use of methods defined in this class.

          remove method Delete this method from this class. A warning appears showing how many other methods send this message, and asking whether to delete the method silently, delete it and then display the other senders of that message, don't remove but show senders, or cancel.

          more… Open a submenu

          Some of these commands do not concern methods, and are clearly on the wrong menu.
          

          method pane Open a window containing the same contents as the method pane for the selected method.

          Image?
          

          tile scriptor Open a window showing the code for the selected method with the ability to see tiles for the method and any part of its code, as described above.

          toggle diffing

          What does this do?
          

          implementors of sent messages Open a browser showing where all messages sent in the selected method are defined, as described above.

          local senders of… Show list of methods that send the message provided by this method. Picking one opens a browser showing senders of the selected message.

          What makes this local?
          

          local implementors of… Show list of methods that that send the message provided by this method. Picking one opens a browser showing implementors of the selected message.

          What makes this local?
          

          spawn sub-protocol Open a browser showing all methods for the selected object and its immediate superclass.

          This command name is unnecessarily confusing. In addition to using the undefined term spawn, its use of the word protocol conflicts with other usage within Squeak.
          

          spawn full protocol Open a browser showing all methods for the selected object and all classes in its superclass chain.

          sample instance Create an instance of this object. If it is a graphic object, place it at the cursor. If not, open an inspector on it.

          When creating a CircleMorph with this command, it starts out as an ellipse, but snaps to circular shape when resized with the yellow halo handle. Reported as bug SQ-1188.
          
          For some objects such as a BalloonRectangleMorph, this command throws an error. Reported as bug SQ-1189.
          

          inspect instances Open an inspector showing properties of all current instances of the selected class, if any. Otherwise, display a message: There are no instances of [selected Class].

          inspect subinstances Open an inspector showing properties of all current instances of the selected class and all of its subclasses, if any. Otherwise, display a message: There are no instances of [selected Class] or any of its subclasses.

          change category Assign the currently selected method to a different protocol.

          show category If -- all -- is selected in the protocol pane, and a method is selected, change the view to the protocol that contains this method, with this method still selected.

          change sets with this method List change sets, if any in which this message has a different method body.

          revert to previous version Restore the definition of this method in the previous change set, abandoning more recent changes.

          remove from current change set If this method has been changed an saved in a change set, remove that definition, leaving any other changes in the change set.

          revert & remove from changes Both of the functions above: restore the previous definition, and remove the discarded version from the current change set.

          add to current change set Add the selected method to the current change set.

          copy up or copy down Open a list of superclasses and subclasses of the selected class, and copy the selected method to a class selected from the list.

          fetch documentation Results in error: No server found in group "Squeak Public Updates" or Instances of undefined object are not indexable.

          Reported as bug SQ-1190.
          

          more… Return to previous menu

          Package Browser


          Open this tool from the open… menu with the package-pane browser command.

          The Package Browser is very similar to the System Browser, except that it has a fifth pane at the left showing groupings of categories by prefix. When a prefix is selected in this pane, the categories pane shows only categories with that prefix. Clicking the selected prefix deselects it. Then the categories pane shows the full list of categories, just as in the System Browser.

          The menu for the Packages pane is as follows.

          Each of these commands has the same function as it does on the categories pane menu, described above.

          The commands on this toolbar menu from the Package Browser are also described elsewhere.

          Accesses Browser

          A Squeak tool for viewing methods that access a selected variable. This browser is invoked with the inst var refs… command on the System Browser class menu and from the inst vars button on the toolbar in the lower pane of the System Browser.

          It has a menu button on its window frame, with the same commands as the menu invoked by the button in the frame of the System Browser, and toolbar of buttons at the top of the lower pane, with the same functions as in the System Browser.

          Workspace


          Open this tool from the open… menu with the workspace command or from the keyboard with ctrl-k/cmd-k. A workspace serves as a holder for text, with limited text editing functions, and with the ability to execute lines of text as Squeak commands and optionally show a text result in the same workspace, or open an IDE tool on the result.

          Middle-clicking in a Workspace brings up the menu shown above.

          find…(f) Open a text search dialogue box for searching within the text in this workspace.

          find again (g) Repeat the previous text search from the current location of the cursor.

          set search string (h) Make the currently selected text, highlighted in green, the search string for the find again command.

          do again (j) Repeat a command. See do it, below.

          undo (z) Revert the last edit to the text.

          copy (c) Copy the selected text to the system clipboard. It can then be pasted within or outside of Etoys.

          cut (x) Cut the selected text and place it in the system clipboard.

          paste (v) Insert text from the system clipboard. This can be used to paste in text from outside of Etoys.

          paste… Insert one of the texts from a predefined list.

          I don't see how to change this list. What are these list entries for?
          

          do it (d) Execute the currently selected text, or the line where the cursor is currently placed, as a Squeak command.

          print it (p) Execute the currently selected text, or the line where the cursor is currently placed, as a Squeak command, and display a text result after the selection or at the end of the line.

          inspect it (i) Open an object inspector on the first named object in the current selection or current line.

          explore it (l) Open an object explorer on the first named object in the current selection or current line.

          That is the letter I, not the letter l. It is nearly impossible to distinguish them in the san-serif font used on this menu, unless you already know which is which.
          

          Reported as bug SQ-1192.

          debug it Open a debugger on the selected command.

          accept (s) When changes are made to the text in the workspace, a red border is placed around the text area. Accepting changes removes this border.

          cancel (l)

          That is the letter l, not the letter I. It is nearly impossible to distinguish them in the san-serif font used on this menu, unless you already know which is which.

          Delete all text in workspace.

          show bytecodes In a workspace, this has no effect. In a method display, toggle between display of method code and byte code for this method.

          Reported as bug SQ-1191.
          

          more…Clicking more… brings up this extended menu.

          set font… (k) Open the same font and size menu that is available in the halo of a text object, from the green FF button.

          set style… (K) Open the same font menu that is available in the halo of a text object, from the pink FF button.

          set alignment… Open a menu of alignments: left flush, centered, right flush, justified. These choices are also available in the halo of a text object, from the brown FF button, along with other style selections.

          explain If a token, construct, or special character defined in Squeak is selected, add a brief explanation to the workplace text and select it. If not, display this message in the workspace.

          "Sorry, I can't explain that.  Please select a single
          token, construct, or special character."
          

          pretty print Format the selection as Squeak code, or the entire contents of the workspace if nothing is selected.

          pretty print with color Format the selection or the entire contents of the workspace as code with syntax coloring.

          file it in (G) No visible effect.

          What does this do?

          tiles from it If the selected text is syntactically correct Squeak code, create a MessageNode containing it. If not, or if nothing is selected, throw an error.

          What can the user do with these tiles? They are not the same as Etoys scripting tiles, and cannot be dropped into an Etoys script.
          
          Reported as bug SQ-1193.
          

          recognizer (r) Attempts to recognize characters drawn with the mouse. Not very effective.

          spawn (o) Create a duplicate workspace.

          definition of word Apparently this is meant to look up a selected word in an online dictionary. Fails with message "There are no WebBrowser applications registered."

          Reported as bug SQ-1194.
          

          verify spelling of word Apparently this is meant to look up a selected word in an online dictionary. Fails with message "Sorry, cannot reach that web site. Task abandoned. (Make sure you have an internet connection.)"

          Reported as bug SQ-1194.
          

          translate it Apparently this is meant to send the selected text to an online translation engine and report the result. Fails with message "There are no WebBrowser applications registered."

          Reported as bug SQ-1194.
          

          choose language Open a menu with three selections, in this form.

          • word definition and spelling verification (English) Choices: English and Portuguese.
          • language to translate FROM (now English) Choices: French, German, Spanish, English, Portuguese, Italian, Norwegian.
          • language to translate TO (now German) Same choices as FROM.

          browse it (b) If the selected text is the name of an existing class, open a System Browser and display the class definition. If not, nothing happens.

          Report the lack of a message as a UI feature request.
          

          senders of it (n) Open a browser on all methods that send the selected message, if any. If the selection is not a message or message component, nothing happens. If the selection contains more than one identifier, choose a method name or selector in preference to a class name.

          Report the lack of a message as a UI feature request.
          

          implementors of it (m) Open a browser on all methods that implement the selected message, if any. If the selection is not a message or message component, nothing happens. If the selection contains more than one identifier, choose a method name or selector in preference to a class name.

          Report the lack of a message as a UI feature request.
          

          references to it (N) Open a browser showing all users of a selected class name. Do nothing for other selections, or no selection.

          Report the lack of a message as a UI feature request.
          

          selectors containing it (W) Open a browser showing all message names that contain the selected text as part of a selector.

          method strings with it (E) Open a browser showing all methods containing the selected text.

          method source with it First show a dialogue box containing the message "This will take a few minutes. Shall I proceed?" If the user selects Yes, search Squeak source code for the selected text and display the results in a browser, if there are any. Otherwise, display the message "There are no Methods containing '[selection]' (use shift for case-sensitive)"

          class names containing it Open a browser showing classes which have names containing the selected text. If there are none, do nothing.

          Report the lack of a message as a UI feature request.
          

          class comments with it Open a browser showing class coments containing the selected text, if there are any. Otherwise, display the message "There are no Class comments containing '[selection]' (use shift for case-sensitive)"

          change sets with it Open a change set viewer displaying any current change sets containing the selected object, if there are any. Otherwise, display the message "[selectiön] is not in any change set".

          save contents to file… Open a dialogue box with the default file name Workspace.text, and allow the user to edit it. If the user accepts a file name, save the contents of the workspace to that file. If a file of that name exists, ask whether to overwrite it.

          What is the location for saving?
          

          send contents to printer No visible effect.

          Error output:
          pnmtops: warning, image too large for page, rescaling to 0.705254
          pnmtops: writing color PostScript…
          Reported as bug SQ-1195.
          

          printer setup Open this printer properties dialogue.


          special menu… Described below

          more… Returns to previous menu 

          The special menu… item on this menu brings up this further menu containing Squeak commands. Consult Squeak documentation for further information.

          This is the menu from the Workspace toolbar.

          Most of these commands are documented above. These two are particular to this menu.

          append contents of file Open a file dialogue, shown below, and add the contents of a selected file to the workspace.

          create textual references to dropped morphs No visible effect.

          What does this do?

          file list


          Open this tool from the open… menu with the file list  command. The window shows the tree structure of the file system, and a pane with a list of files in the selected directory, showing the date and time of each file with its name, and optionally the size of each file. There are buttons for sorting the file list by name, date, or size. Selecting a file shows its Squeak version, encoding, language, source URI, user, Project-Format, project keywords, projectname, projectauthor, and up to 5,000 characters in 8-bit text format, with control codes displayed as empty rectangles.

          For some file types, particularly those containing Smalltalk code and archives of compressed files, other command buttons appear.

           .st (Smalltalk), .cs (changeset)

          • filein Read and execute Smalltalk code from a file. If the file does not contain Smalltalk code, error messages will result.
          • code Open a "file-contents browser" on this file, allowing you to view and selectively load its code.
          • changes Open a changelist tool on this file.
          • install Install the file as a body of code in the image; create a new change set and file-in the selected file into it.
          • XO Wrap as an OLPC XO bundle. 
          What file types does this work for?
          • workspace with contents Open a new Workspace whose contents are set to the contents of this file.
          • remove version # Remove the version number from the filename.

          .pr (project)

          • load Open project from file
          • open zip Open an archive viewer on this file. It will have the following command buttons
          New Archive Create a new, empty archive, and discard this one

          Load Archive Open another archive, and discard this one.

          Save Archive As Save this archive under a new name.

          Extract all Extract all this archive's members into a new directory.

          Add file Add another file to this archive.

          Add from clipboard Add the contents of the clipboard as a new file.

          Add Directory Add the entire contents of a directory, with its subdirectories.

          Extract Member As Extract the selected member to a file.

          Delete Member Remove the selected member from this archive.

          Rename Member Rename the selected member.

          View All Contents Toggle the view of all the selected member's contents.

          • extract all Open a file dialog for selecting the directory to put the archive contents in.
          • xo Make an XO bundle.

          File dialog


          Open this tool from the open… menu with the  command or from the keyboard with ctrl-/cmd-.

          At the top of this menu is an indented representation of the path to the Etoys directory. Next is a list of subdirectories to choose from. Selecting any of them results in a display of the path to that directory, and of files in that directory. The bottom section of this menu is a list of files in the Etoys directory.

          Transcript


          Open this tool from the open… menu with the transcript command or from the keyboard with ctrl-t/cmd-t. Transcript displays messages sent to it from anywhere in the project. One way to send such a message is with the print in transcript tile in the as object viewer category. Another is with the Squeak message printInTranscript that that tile sends to its object.

          Event Theatre


          Open this tool from the open… menu with the event theatre command.

           The Event Theatre provides a framework for authoring "event-movies".  It uses custom variants of the Navigator, the Supplies flap, the painting system, property sheets, Viewer flaps, etc., all of which reside within the controlled confines of the Theatre.

          To author an event-movie, get a new Event Theatre from the Objects catalog or from the "open…" branch of the desktop menu.

          1. Resize the Theatre, using the halo, to the delivery size desired for playback.

          2. Use the menu in the controls panel to add or delete Supplies and Navigator flaps as desired.

          3. Edit the "caption" by clicking on the text that says "Untitled" and typing your desired caption.  This caption is affixed to playback buttons, and, generally, provides a way to identify the event-movie.

          4. Set up the "initial conditions" for the event-movie you're about to record (e.g., paint a background, provide some explanatory text, add objects you want to be present at the start of the movie.) When the recording is first opened by the user for playback, and whenever the recording has been rewound, this is exactly what it will look like.

          5. When ready to start the recording, press the "Record" button. A red border will be seen around the recorder, to indicate that recording is in progress.  Recording will continue until you hit the ESC key.

          6. Note that if you  want to include sound in your recording, you can add it directly during playback, or you can produce voiceover externally and add it in later using the Event Roll.

          7. Now proceed to "do", with the mouse and keyboard, whatever you wish to record. For best results, all mouse gestures should be made within the interior of the Theatre.

          8. Press ESC when done recording.

          9. To review what you've recorded, press "Play". If unhappy with the result, repeat steps 1-8.

          10.  If you're happy with the result, and now wish to add a sound, open the sound panel, then click Play to replay the recording, and whenever you wish to add a snippet of voiceover, click on the "Start Recording Voiceover" button, and start talking, and when done with that snippet click the "Stop Recording Voiceover" button.  Once the playback finishes, the added voiceover(s) will become part of the event tape, and will be seen in the event roll.

          11. When you're happy with the result, hit the "Publish" button, to get a playback button. There are currently two choices:

          a. Iconic Button - Initially provides a picture of the initial scene of the movie, scaled 0.3x, and overlaid with the word HINT.  When the user clicks on such a button, the event-movie is played back in an ephemeral "playback theatre", and after the playback is done, the playback theatre shrinks down to a 0.5x scale-downed picture of the *final* scene of the movie.  Subsequent hitting of the button will again invoke a playback.

          b. Textual Button - a simple labeled button which, when pressed, triggers playback of the event tape.

          12. The playback buttons you obtain when you "Publish" can be placed anywhere, such as on the page of a book. You can control, via a playback-button's halo menu, whether or not it should be "auto-start", and whether or not "auto-dismiss". When the user presses the button, a "Playback" space will open, which resembles an Event Theatre, but has only playback-relevant controls.   A playback set up for both auto-start and auto-dismiss comes without any controls.

          13.  To edit the "event tape" of a recording you have made in an Event Theatre, and for a generally good time, click on the interlocking-circles icon to obtain a tool that allows you to visualize and to edit a "score" or "piano roll" of the event tape. 

          set balloon help Allows you to provide a message to be presented to a user as balloon-help when the mouse lingers over buttons that trigger playback of the tape of this event theatre

          shrink event tape Shorten the tape by deleting mouseMove events that can just as well be interpolated later at playback time

          revert to version... Offer the user the opportunity to revert to a prior version of a recorded event tape by opening a list of versions. If there are none, display the message no versions available, sorry.

          delete old versions Empty the list of remembered past versions.

          remove sugar navigatorFlap Hide the Sugar toolbar within the Event Theatre

          event roll Open a horizontal piano-roll-like tool for viewing and editing the events of this event theatre.

          remove event roll Abandon any event-roll that may be associated with this event theatre.

          Method Finder


          Open this tool from the open… menu with the method finder command. Method finder's purpose it to help the developer find methods, and the classes where they are defined, given a name, or partial name, or examples of its intended use. Its function overlaps with the message names tool, which can only search by name, but provides a view into the structure of the classes found.

          Type a fragment of a selector in the top pane.  Accept it.

          Or, use an example to find a method in the system.  Type receiver, args, and answer in the top pane with periods between the items.  3. 4. 7

          Or, in this pane, use examples to find a method in the system.  Select the line of code and choose "print it". 

          MethodFinder methodFor: #( (4 3) 7  (0 5) 5  (5 5) 10).
          

          This will discover (data1 + data2). You supply inputs and answers and the system will find the method.  Each inner array is a list of inputs.  It contains the receiver and zero or more arguments.  For Booleans and any computed arguments, use brace notation.

          MethodFinder methodFor: { {1. 3}. true.  {20. 10}. false}.

          This will discover the expressions (data1 < data2), (data2 > data1), and many others.

          MethodFinder methodFor: { {'29 Apr 1999' asDate}. 'Thursday'. {'30 Apr 1999' asDate}. 'Friday' }.

          This will discover the expression (data1 weekday). Receiver and arguments do not have to be in the right order.

          The verify method of the MethodFinder class contains more examples.

          Message Names


          Open this tool from the open… menu with the message names command or from the keyboard with ctrl-W/cmd-W

          This shortcut does not work. Reported as bug SQ-1196.
          

          Enter all or part of a message name and accept it (click search button, press Enter/Return, select accept from middle-click menu, or use keyboard shortcut ctrl-s/cmd-s) to get a list of messages containing that text. Click any of the resulting names to get a list of classes that have a method of that name. Click any line in the list to see the code for that method. Other information and controls in the lower pane are as in the System Browser.

          Simple Change Sorter


          Open this tool from the open… menu with the simple change sorter command.

          The pane on the upper left shows current projects. The pane on the right lists classes and methods altered in this changeset, and the pane below shows the code of the changed methods.

          Does it display diffs? I should create a changeset and see.

          An item on the toolbar menu for this change sorter provides another menu that lets the user choose what to show in the Simple Change Sorter. These options are described where they appear in the method pane menu of the System Browser.


           Dual Change Sorter


          Open this tool from the open… menu with the dual change sorter command. Many of its features are the same as in the simple change sorter, but it provides a way to compare two change sets and copy changes from one to the other.

          Create two changesets and test these functions.
          

          DBus Explorer


          Open this tool from the open… menu with the DBus Explorer command. DBus Explorer provides a tree-structured view of DBus functions. Consult system documentation for more on DBus.

          HTTP Proxy Editor


          Open this tool from the open… menu with the http proxy editor  command. If a proxy is in use, this tool shows the server name and port. The tool can also be used to connect to a proxy server by entering its name and port, and selecting Accept.

          Monticello Browser


          Open this tool from the open… menu with the Monticello Browser command. Monticello is a package management system for Squeak. 

          The toolbar at the top of the Monticello Browser window has buttons for the following commands.

          • +Package Add a new package and make it the working copy.
          • Browse Open a snapshot browser, described below, to browse the working copy of the selected package.
          • Scripts Edit the load and unload scripts for the selected package. This button opens a menu offering the choices edit preamble; edit postscript; edit preambleOfRemoval; edit postscriptOfRemoval.
          • History Open a Version History window displaying a list of versions of this package. Selecting a version results in a display of its Name, Author (initials only), Time, UUID, Ancestors (if any), and a comment.


          • Changes Open a ?? tool displaying the working copy's changes relative to the installed version from the repository.
          No effect. Report as bug.
          • Backport Backport the working copy's changes to an ancestor. Opens a list of ancestors to choose from, if there are any.
          • Save Save the working copy to the repository as a new version.
          • +Repository Add a new repository to the list of those displayed here.
          • Open Open a Repository browser, described below, on the selected repository.
          The left pane shows a list of packages. The right pane shows a list of repositories, including an Etoys/Package-Cache directory on the user's computer, the default repositories at squeak.org, and any others that the user has added.

          Monticello Configurations


          Open this tool from the open… menu with the Monticello Configurations command. The menu on the title bar contains standard commands. The toolbar contains these commands.

          Add Add a dependency from a list of packages

          Update Update dependencies from image or repositories

          Install Load/Merge/Upgrade selected packages into image

          Up Move selected item up in list

          Down Move selected item down in list

          Remove Remove selected item from list

          Store Store configuration in selected repository as a .mcm file, or complain if no repository is selected

          Post Post this configuration to an update stream as a .cs file

          The three panes below the toolbar show

          Package list (Middle-click to add package from list)

          Repositories (Middle-click to add repository from list)

          Package description, showing

          • Package Package name
          • Name Package file name
          • Author Author's initials
          • Time Timestamp
          • UUID Unique identifier
          • Ancestors Previous versions of the selected package
          • Comment In some cases, the version of Etoys containing this package

          Package List


          Open this tool from the open… menu with the Package List command. The toolbar menu contains standard commands. Middle-click to add a package by name or remove a selected package.

          Add to or remove from what?
          

          SqueakMap Package Loader


          Open this tool from the open… menu with the SqueakMap Package Loader command.

          Report as bug.

          morphic project


          Open this tool from the open… menu with the morphic project command or from the keyboard with ctrl-d/cmd-d.

          Keyboard shortcut not working in Etoys to go v. 5. Report as bug.
          

          An icon appears in the workspace. Its Halo calls it ProjectView. The object has a title at the bottom of the active area, initially "unnamed" and a representation of a Sugar Navigator Flap at the top. Click inside to be taken to a new project, where all of the Etoys tools are available. This new project can be saved, and the developer can then return to the previous project using the back button on the Sugar Navigator Flap. Using the delete button in the halo brings up a menu with the question "Do you want to delete the project named 'Unnamed' and all its contents?" with the choices

          • yes - delete icon and remove the project
          • no - delete icon but keep the project
          • cancel - do not delete anything
          Selecting yes deletes the project from memory, but not a saved version on disk.

          This icon is similar in effect to the Make a Project cloud button in the startup view.

          Snapshot Browser

          Accessed with the browse button in the Monticello Browser. The functions in the Snapshot Browser window are the same as in a System Browser, but it only displays the structure of the classes in a selected package.

           

          Repository browser

          Accessed with the Open button in a Monticello Browser when a repository is selected. Consult Squeak documentation for functions of repositories and archived Monticello packages.

           

          Refresh Refresh the version list.

          Browse Open a browser on the classes in the selected archive.

          History Open a history window giving the name of the archive, the author's initials, a date stamp, a UIUD, any ancestors, and a note.

          Changes Open a window listing changes to the selected archive.

          Load Load this version to the current image.

          Merge Merge this version into the current image, checking whether that makes any changes.

          Adopt Adopt this version as an ancestor of your working copy.

          Copy Copy this version to another repository.

          Diff Create an equivalent version based on an earlier release.

          Predebugger and Debugger

          When an error occurs in executing a method, a predebugger window is displayed giving some information on the nature of the error and offering options for dealing with it. The predebugger has two forms, depending on the state of the eToyFriendly preference.

          image

          image

          Describe options

          If the user selects the Debug button, this debugger opens

          debugger image

          title bar menu

          top pane, stack trace

          information on method, including number of implementors

          Toolbar

          Proceed

          Restart

          Into

          Over

          Through

          Full Stack

          Where

          The panes at the bottom give information on the receiver of the message and on the current Context.

          The user can also put breakpoints into the code for methods, write expressions to invoke them in a workspace, and invoke the debug it command from the workspace menu to step through the code.

          error messages

          MessageNotUnderstood

          ZeroDivide/division by zero

           


          There has been error in communication with Booktype server. Not sure right now where is the problem.

          You should refresh this page.