Karl Ramberg uploaded a new version of Help-Squeak-Project to project The Treated Inbox:
http://source.squeak.org/treated/Help-Squeak-Project-kfr.90.mcz
==================== Summary ====================
Name: Help-Squeak-Project-kfr.90
Author: kfr
Time: 31 May 2022, 7:44:37.578707 am
UUID: 5d773e28-3fc3-be43-ae9b-84615c80437c
Ancestors: Help-Squeak-Project-ct.89
Added info about Alt key for text emphasis on Windoes
=============== Diff against Help-Squeak-Project-ct.89 ===============
Item was changed:
----- Method: SqueakTutorialsCommandKey class>>commandKeyMappings (in category 'pages') -----
commandKeyMappings
"This method was automatically generated. Edit it using:"
"SqueakTutorialsCommandKey edit: #commandKeyMappings"
<generated>
^(HelpTopic
title: 'Command Key Mappings'
contents:
'This page summarizes different shortcuts that are available in text editors. Note that some modifier keys work differently on different platforms. On platforms different than Mac, Cmd translates to Alt. See the related keyboard preferences for more details.
Lower-case command keys
(use with Cmd key on Mac and Alt key on other platforms)
a Select all
b Browse it (selection is a class name or cursor is over a class-list or message-list)
c Copy selection
d Do it (selection is a valid expression)
e Exchange selection with prior selection
f Find text with a dialog
g Find the current selection again
j Repeat the last selection replacement
i Inspect it
k Set font
l Cancel text edit
m Implementors of it
n Senders of it
o Spawn current method
p Print it (selection is a valid expression)
q Query symbol (toggle all possible completion for a given prefix)
s Save (i.e. accept)
t Finds a Transcript (when cursor is over the desktop)
u Toggle alignment
v Paste
w Select/Delete preceding word (over text); Close-window (over morphic desktop)
x Cut selection
y Swap characters
z Undo
Note: for Do it, Senders of it, etc., a null selection will be expanded to a word or to the current line in an attempt to do what you want. Also note that Senders/Implementors of it will find the outermost keyword selector in a large selection, as when you have selected a bracketed expression or an entire line. Finally note that the same cmd-m and cmd-n (and cmd-v for versions) work in the message pane of most browsers.
Upper-case command keys
(use with Shift-Cmd, or Ctrl on Mac
or Shift-Alt on other platforms; sometimes Ctrl works too)
A Advance argument
B Browse it in this same browser (in System browsers only)
C Compare the selected text to the clipboard contents
D Debug-It
E Method strings containing it
F Insert ''ifFalse:''
G fileIn from it (a file name)
H Move cursor to top/home of text
I Inspect via Object Explorer
J Again many (apply the previous text command repeatedly until the end of the text)
K Set style
L Opens a FileList, bringing forward on that already exists if appropriate
M Select current type-in
N References to it (selection is a class name, or cursor is over a class-list or message-list)
O Open single-message browser (in message lists)
P Make project link
R opens a Recent Submissions browser
S Pretty-print a method in the current browser
T Insert ''ifTrue:''
U Convert linefeeds to carriage returns in selection
V Paste author''s initials
W Selectors containing it (in text); show-world-menu (when issued with cursor over desktop)
X Force selection to lowercase
Y Force selection to uppercase
Z Redo
Other special keys
Backspace Backward delete character
Shift-Bksp Backward select or delete word
Del Forward delete character
Shift-Del Forward delete word
Esc Pop up the context menu
Shift+Esc Pop up the World Menu
Cmd+Esc Close the active window
Ctrl+Esc Present a list of open windows
Cmd+\ Send the active window to the back
Tab Insert a tab char in a single-line selection or insert a tab at the beginning of each line in a multi-line selection
Shift-Tab Remove a tab from the beginning of each line in the selection
Shift-Cmd-_ (underscore) condense selection into one line
Cursor keys
left, right,
up, down Move cursor left, right, up or down
Ctrl-left Move cursor left one word
Ctrl-right Move cursor right one word
Home Move cursor to begin of line or begin of text
End Move cursor to end of line or end of text
PgUp, Ctrl-up Move cursor up one page
PgDown, Ctrl-Dn Move cursor down one page
Note all these keys can be used together with Shift to define or enlarge the selection.
Other Cmd-key combinations
(not available on all platforms)
Cmd+Return Insert new line without indentation
Cmd+Space Select the current word as with double clicking
Enclose the selection in a pair of brackets (preference)
(not available on all platforms)
( Enclose selection with parentheses
) Remove parentheses from selection
[ Enclose selection with brackets
] Remove brackets from selection
{ Enclose selection with curly braces
} Remove curly braces from selection
< Enclose selection with chevrons
> Remove chevrons from selection
" Toggle enclosure within double-quotes
'' Toggle enclosure within single-quotes
| Toggle enclosure within pipes
Legacy enclosure shortcuts (QWERTY layout only -- need to be enabled in the preferences)
Ctrl-( Toggle enclosure within parentheses
Cmd-[ Toggle enclosure within brackets
Crtl-{ Toggle enclosure within curly braces
Ctrl-'''' Toggle enclosure within double-quotes
Cmd-'''' Toggle enclosure within single-quotes
Note also that you can double-click just inside any of the above delimiters, or at the beginning or end of a line, to select the text enclosed.
Text Emphasis
+ (Use Alt on Windows. Not available on all platforms)
- (not available on all platforms)
Cmd-1 type the first method argument
Cmd-2 type the second method argument
Cmd-3 type the third method argument
Cmd-4 type the fourth method argument
Cmd-5 color, action-on-click, link to class comment, link to method, url, custom attributes (brings up a menu)
Cmd-6 italic
Cmd-7 bold
Cmd-8 struck-out
Cmd-9 underlined
Cmd-0 make plain (removes all attributes)
And remember this: nine is fine for underline, obliter-eight it as you see fit, seven has been bold for ever''n, which leaves six as the obivous fix to emphasize your poetics.
Docking Bar
Ctrl-<n> opens the n-th (where n is between 0 and 7) menu if such exists, otherwise it moves the keyboard focus to the Search Bar. Currently -- and depending on your preferences -- this means:
Ctrl-0 Activates Search Bar or Scratch Pad
Ctrl-1 Squeak menu
Ctrl-2 Projects menu
Ctrl-3 Tools menu
Ctrl-4 Apps menu
Ctrl-5 Do menu (an editable menu of useful expressions)
Ctrl-6 Extras menu
Ctrl-7 Windows menu
Ctrl-8 Help menu !!
]style[(211 28 20 24 56 1171 24 95 993 19 591 12 413 26 33 107 45 10 2 32 396 26 50 11 219 24 12 110 14 33 538 12 166 11 246),Rcode:// PreferenceBrowser open searchPattern: ''keystrokes involving'';,,b,i,,b,i,,b,,b,,b,i,,b,Rcode:// (Preferences pragmaPreferenceFor: TextEditor getter: #encloseSelection) openInCategory: ''editing'';b,b,i,,bc099099099,c099099099,Rcode:// (Preferences pragmaPreferenceFor: LegacyShortcutsFilter getter: #legacyShortcutsEnabled) openInCategory: ''editing'';,c099099099,,b,,b,i,,b,,Rcode:// PreferenceBrowser open selectedCategory: ''docking bars'' capitalized;,!!' readStream nextChunkText)
key: #commandKeyMappings;
shouldStyle: false;
yourself!
Karl Ramberg uploaded a new version of TrueType to project The Treated Inbox:
http://source.squeak.org/treated/TrueType-kfr.52.mcz
==================== Summary ====================
Name: TrueType-kfr.52
Author: kfr
Time: 3 January 2019, 10:34:19.705286 pm
UUID: 248937ad-7e63-4c27-b659-6165fdda9ffe
Ancestors: TrueType-pre.51
FontImporterTool would not open because 'Noto Color Emoji' error: 'File does not have a naming table'.
Delete the font from FontPaths and continue
=============== Diff against TrueType-pre.51 ===============
Item was changed:
----- Method: TTFileDescription class>>openFontFile:do: (in category 'instance creation') -----
openFontFile: fontFileName do: aBlock
"Open the font with the given font file name"
| fontFilePath file |
fontFilePath := FontPaths at: fontFileName
ifAbsentPut:[self findFontFile: fontFileName].
fontFilePath ifNil:[^nil].
file := [FileStream readOnlyFileNamed: fontFilePath] on: Error do:[:ex|
"We lost the font; someone might have moved it away"
+ FontPaths removeKey: fontFileName ifAbsent:[].
+ ^nil].
+ [^[aBlock value: file binary] on: Error do:[:ex|
+ "Error reading font. Skip it"
+ FontPaths removeKey: fontFileName ifAbsent:[].
+ ^nil] ] ensure:[file close].
+ !
- fontFilePath removeKey: fontFileName ifAbsent:[].
- ^nil
- ].
- ^[aBlock value: file binary] ensure:[file close].!
Karl Ramberg uploaded a new version of Collections to project The Treated Inbox:
http://source.squeak.org/treated/Collections-kfr.1012.mcz
==================== Summary ====================
Name: Collections-kfr.1012
Author: kfr
Time: 16 June 2022, 9:59:32.00337 pm
UUID: 52865d2e-6f39-f14f-8c48-b630ecfd76a5
Ancestors: Collections-lrnp.1011
TextLinks would sometimes open i the background
=============== Diff against Collections-lrnp.1011 ===============
Item was changed:
----- Method: TextLink>>actOnClickFor: (in category 'event handling') -----
actOnClickFor: aMessageSet
"Add to the end of the list. 'aClass selector', 'aClass Comment', 'aClass Definition', 'aClass Hierarchy' are the formats allowed."
+ Project current addDeferredUIMessage: [aMessageSet addItem: classAndMethod].
- aMessageSet addItem: classAndMethod.
^ true!
tim Rowledge uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-tpr.91.mcz
==================== Summary ====================
Name: Help-Squeak-Project-tpr.91
Author: tpr
Time: 19 June 2022, 5:08:24.386177 pm
UUID: 3104a4c3-fafc-4ae0-99b0-1e9f3c4379f8
Ancestors: Help-Squeak-Project-eem.90
Small improvements to a couple of help browser pages
=============== Diff against Help-Squeak-Project-eem.90 ===============
Item was changed:
----- Method: SqueakProjectHelp class>>extendingTheSystem (in category 'pages') -----
extendingTheSystem
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #extendingTheSystem"
+ <generated>
+ ^(HelpTopic
- ^HelpTopic
title: 'Extending The System'
contents:
'SqueakMap is an integrated catalog of external applications for Squeak. It is accessible from the "Apps" menu. This catalog does not host the projects, it merely documents the load scripts required to correctly bring them into the image.
Many SqueakMap packages use Installer, which defines several packages in its package-definitions protocol. Any of these can be loaded with an expression like the following:
Installer new merge: #openGL
Change #openGL to the selector name of the package you want to load. The latest version of that package and all of its prerequisites will be merged into the image. Merging a package is no different from loading it unless the package is already loaded, in which case it is upgraded to the latest version in a way that preserves any local changes you may already have made.
Other packages can be loaded through Metacello. If you come across a project providing either a MetacelloConfiguration or MetacelloBaseline, you can install Metacello through
Installer ensureRecentMetacello
---------------
+ The source code for the Squeak, Pharo and Cuis virtual machines (VM) is generated from a package called ''VMMaker''.
- The source code for the Squeak, Pharo and Cuis virtual machines (VM) is generated from a package called ''VMMaker''; specifically the VMMaker.oscog fork.
MCHttpRepository
location: ''http://source.squeak.org/VMMaker''
user: ''''
password: ''''
The source code for the VM is written in a subset of Smalltalk called ''Slang''.
+ It is translated to C.
- It is translated to C by the Slang compiler in VMMaker and compiled with the platform C compiler to produce the production VM.
+ The VMMaker.oscog fork generates the recent VM included in this release.
- The generated VM code and the platform support code lives at: https://github.com/OpenSmalltalk/opensmalltalk-vm.
- See README.md file there.
+ The generated VM code and the platform support code is at: http://opensmalltalk.org/
+ See README file there.
+
---------------
This remainder of this workspace documents load-scripts for packages that are not documented in either SqueakMap or Installer.
OCompletion
"Provides source code completion as you type"
(Installer ss project: ''OCompletion'')
addPackage: ''OcompletionSqueakCompatibility'';
addPackage: ''Ocompletion'';
install.
(Smalltalk at: #ECToolSet) register.
(Smalltalk at: #ToolSet) default: (Smalltalk at: #ECToolSet).
-
- Refactoring Browser
- Refactoring is supportedf in the standard system browser if one loads the refactoring tools from http://www.squeaksource.com/rb. See https://wiki.squeak.org/squeak/227 for details.
-
- Pier CMS
- "Pier CMS: http://www.piercms.com"
- (Installer ss project: ''MetacelloRepository'') install: ''ConfigurationOfPier2''.
- (Smalltalk at: #ConfigurationOfPier2) load.
-
- (Installer lukas project: ''pier2'') install: ''Pier-Blog''.
- (Installer lukas project: ''pier2'') install: ''Pier-Book''.
- (Installer lukas project: ''pier2addons'') install: ''Pier-Setup''.
- (Smalltalk at: #PRDistribution) new register.
-
- "The document model used is the one which later on lead to the Pharo Pillar document system"
-
- Open Cobalt
- "http://opencobalt.org (Best to run this from an image in an open cobalt directory)"
- Installer ss project: ''TweakCore''; install: ''update''.
- [Installer ss project: ''TweakExtras''; install: ''update'']
- on: (Smalltalk at: #CUnsynchronizedModification) do: [:ex | ex resume].
- Installer cobalt project: ''Tweak'';
- answer: ''Would you like to conserve memory at all costs?'' with: true;
- answer: ''Password for interactive VNC connections?'' with: ''cobalt'';
- answer: ''Would you like to add the RFBServer to the World open menu?'' with: true;
- install: ''update''
!!
+ ]style[(9 309 19 252 6 126 8 130 9 828 11 274)Rcode://SMLoaderPlus open;,,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';,,i,,u,,Rhttps://github.com/metacello/metacello;,,bu,!!' readStream nextChunkText)
+ key: #extendingTheSystem;
+ shouldStyle: false;
+ yourself!
- ]style[(9 309 19 252 6 126 8 130 9 141 21 135 95 109 68 61 25 173 11 47 226 2 11 292 8 480 11 547)Rcode://SMLoaderPlus open;FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,iFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,uFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,Rhttps://github.com/metacello/metacello;,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14!!' readStream nextChunkText!
Item was changed:
----- Method: SqueakProjectHelp class>>squeakUserInterface (in category 'pages') -----
squeakUserInterface
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #squeakUserInterface"
+ <generated>
^(HelpTopic
title: 'Squeak User Interface'
contents:
'The Squeak User Interface
The Squeak UI has some unusual elements that you may not have seen before. Here is a brief introduction to those elements.
1. Red button, Yellow Button; buttons on mice, trackpads and wheels - what do they do?
Smalltalk has been around a long time; since before most people had any idea that computers could have graphical screens or that devices such as mice existed. Smalltalk''s UI expects three button mice and to some extent still sticks with the ancient PARC tradition of naming them Red (left), Yellow (middle) and Blue (right). You''ll see these names in code referring to things like ''blueButtonActivity''.
Of course, not many mice used these days actually have the buttons colored, and quite a few have different numbers of buttons and even scroller wheels or trackpad surfaces; all of which can make it confusing to explain what button needs to be used. Laptops tend to have trackpads with perhaps a button, or two, or perhaps require a ctl or alt or cmd key to be pressed at the same time as the trackpad. To try to help work around the potential for confusion, think of the actions as <Select>, <Menu> and <Halo>.
a) <Select> is the fairly obvious ''select an item in a list'', or ''select a place in some text'', or press a screen button'' action. In many cases you can also hold down the button to drag the pointer to select a range of text, or double-click to perform some other action.
b) <Menu> will normally open a pop-up menu that is specific to the location of the pointer.
c) <Halo> normally displays the Morphic Halo (see below) that lets you perform many actions on the morph (a UI element)
In general on a Mac you can also hold the alt key down to get the <Menu> button action when simply pressing on a trackpad (or even one of the rare single-button mice) , or the cmd key for the Halo Button action. On a Windows laptop you can typically use the alt key for <Menu> and the ctl key for Halo. On the assorted unix systems out there you are on your own; the choice of window manager etc. can change anything.
In the Preference Browser you can ''swap mouse buttons'' to swap the <Menu> and <Halo> buttons if you prefer; this may feel more familiar for users of systems where a right button press opens menus.
2. Keyboard shortcuts
+ Squeak has a number of keyboard shortcuts available (which, like everything else are changeable by users) that can be found listed on the ''Command Key Mappings'' page (accesible from the Dock -> Help -> Keyboard Shortcuts menu). Some will seem very familiar and some will appear quite strange. Cmd-y, for example swaps the characters on the left and right of the text election; a surprisingly useful key for small tpyos ;-)
- Squeak has a number of keyboard shortcuts available (which, like everything else are changeable by users) that can be found listed on the ''Command Key Mappings'' page. Some will seem very familiar and some will appear quite strange. Cmd-y, for example swaps the characters on the left and right of the text election; a surprisingly useful key for small tpyos ;-)
3. The Dock
Across the top of the screen lies the Dock; a mix of menu bar, tool bar and search interface. At the extreme left is the Squeak logo, which if clicked will open a menu that gives easy access to updating Squeak, checking your system configuration, and saving and/or quitting. The other headings at the left of the screen provide menus giving access to assorted tools and other facilities; you will probably mostly use the Tools and Apps items. To the right end of the Dock is the search interface, a quick way to search for message names and classes. Type a message (or a partial message, or a class name and press <Return> to see what it finds. There is also a clock and lastly a button that will expand the Squeak window to fill the screen - if possible it will take over the entire screen. Click on it again to return to the previous window size.
4. Menus
Squeak uses several sorts of menu.
a) the pull-down menus - like those that you see on the Dock.
b) pop-up menus that appear where the pointer is located (sometimes shifted to fit on-screen)
c) menus where some entries have an ellipsis (the ...) which tells you that clicking on the entry will open another menu
d) hierarchical menus where entries with a right-pointing triangle icon automatically open another menu, usually to the right of the original menu. As above, this may be modified to fit the new menu on the screen.
As with most GUIs these days clicking on a menu item will choose that action and clicking outside the menu will close the menu(s) and do nothing.
5. Projects
A project is an entire Squeak desktop full of windows and is akin to the desktop spaces used in some window systems. Projects can be used to change quickly from one task to another. An inactive project is represented by a project window, which shows a thumbnail of its state. Project windows are actually more like doors than windows, since you can enter the project just by clicking on them. Each project maintains its own set of windows and other information.
You can create a new project by choosing ''Create MVC Project'' or ''Create Morphic Project'' from the dock menu. The MVC projects use the older MVC type windows - the original windowing system. Note that not all tools work well - or at all - in MVC projects and you should generally use Morphic projects. The default project is a Morphic project.
To exit a project (and return to its parent project), choose ''previous project'' from the screen menu.
6. Morphic Halos
In a orphic project, pressing the <Halo> Button (see above!!!!) on a graphical object (e.g. a window) will surround it with a constellation of colored circles. These are called "halo handles." Additional clicks will cycle through the halos for the other graphical objects in the nesting structure. If you hold down the Shift key while <Halo>-clicking, the nested morphs will be traversed from innermost outward. Clicking Select or Menu will dismiss the halo. While the halo is up, letting the cursor linger over one of the halo handles for a few seconds will cause a balloon to pop up with the name of that handle. Three useful handles are the top-left "X" handle (delete), the bottom-right yellow handle (resize), and the brown handle (slide the object within its containing object). Halos allow complex graphical objects to be explored - or even disassembled (using the black halo handle). Usually no harm results from taking apart an object; you can just discard the pieces and create a new on
e.
7. Flaps
The Flaps are a sort of sliding menu - a drawer - containing tools etc as one way to access them. To enable Flaps, red-click on the desktop background to show the world menu, choose the "Flaps..." menu and "show shared tabs". Tabs labeled "Squeak", "Tools", "Supplies", etc., will appear around the edges of the Squeak desktop. Click on any tab to open the corresponding flap. Drag a tab to resize the flap and to relocate the tab. Bring up the halo on any tab and click on its menu handle to be presented with many options relating to the flap. Use the "Flaps..." menu, reached via the desktop menu, to control which flaps are visible and for other flap-related options and assistance.
8. Parts Bins
You can obtain new objects in many ways. The "Objects Catalog" (choose "objects'' from the world menu or open the objects flap) and several of the standard flaps (e.g. "Tools" and "Supplies") serve as "Parts Bins" the for new objects. Drag any icon you see in a Parts Bin and a fresh copy of the kind of object it represents will appear "in your hand"; click to deposit the new object anywhere you wish. You can also add your own objects to any of the flaps - just drag your object over the tab, wait for the flap to pop open, then drop the object at the desired position in the flap.
!!
+ ]style[(25 126 88 283 1 14 1 17 1 1008 1 59 1 137 1 492 25 52 1 86 20 134 5 126 13 421 5 5 4 130 1 282 10 156 1 81 1 415 1 19 13 221 16 675 16 49 1 91 15 843 7 691 13 47 15 523)b,,i,,b,,b,,b,,b,,b,,b,,i,,b,,i,,i,,i,,i,,i,,b,,i,,b,,b,,b,,i,,Rcode://(ProjectViewMorph newProjectViewInAWindowFor: MorphicProject new) openInWorld;,,i,,b,,Rcode://SystemWindow topWindow addHalo;,,i,,i,,Rcode://Project current world activateObjectsTool;,!!' readStream nextChunkText)
- ]style[(25 126 88 283 1 14 1 17 1 1008 1 59 1 137 1 492 25 52 1 86 20 73 5 126 13 421 5 5 4 130 1 282 10 156 1 81 1 415 1 19 13 221 16 675 16 49 1 91 15 843 7 691 13 47 15 523)b,,i,,b,,b,,b,,b,,b,,b,,i,,b,,i,,i,,i,,i,,i,,b,,i,,b,,b,,b,,i,,Rcode://(ProjectViewMorph newProjectViewInAWindowFor: MorphicProject new) openInWorld;,,i,,b,,Rcode://SystemWindow topWindow addHalo;,,i,,i,,Rcode://Project current world activateObjectsTool;,!!' readStream nextChunkText)
key: #squeakUserInterface;
shouldStyle: false;
yourself!
Item was changed:
----- Method: SqueakProjectHelp class>>workingWithSqueak (in category 'pages') -----
workingWithSqueak
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #workingWithSqueak"
+ <generated>
^(HelpTopic
title: 'Working with Squeak'
contents:
'Take few minutes and get familiar with the image concept of the Squeak/Smalltalk system. This includes starting and quitting the image, learning where all the objects live, and understanding where your source code resides.
1. Starting and Quitting
Like most Smalltalks, the machine-executable portion is a relatively small program known as the virtual machine (VM). The VM''s job is to provide services from the physical machine to the Smalltalk system; services like memory management; input from keyboards, mice, and networks; output to screens, files, and networks. The Smalltalk system, including all data and code, is a system of objects built from the ground up, and interpreted by this virtual computer. This affords a Smalltalk system platform portability.
Smalltalk cannot run without the VM. The VM can''t do anything useful except process Smalltalk systems. They belong together like Rebo and Zooty.
To start the system
- On most OS you can double-click on the ''*.image'' file and the OS file type handler will start the VM with that image file.
+ - On many OS, drag the ''*.image'' file to the VM executable application, typically named "Squeak" plus some version name such as "Squeak6.0".
- - On many OS, drag the ''*.image'' file to the VM executable application, typically named "Squeak" plus some version name such as "Squeak5.3".
- Where a command line terminal or shell is used, there are several command-line options for starting the system. Typically you can run ''squeak --help'' for some help.
By default, the system will open on the screen in a single OS hosted window, though there are options for headless usage.
To quit a Squeak session
- Choose ''quit'' from the Squeak-logo menu at the left of the menu bar (the Dock) at the top of the window. That will close the session and you will lose any work you did.
- If you ''save'', the image file will be overwritten and resume from that place the next time it''s launched.
- In general you should not over-write the delivered image file but instead use the ''save as'' option to create your own work copy.
2. The Image File
Squeak is an environment built in its own objects from the ground up, including one or more end-user applications. All of the objects in the system -- Classes, Dictionaries, Windows, Customers and other objects that make up the Squeak environment are stored in a binary ".image" file. This is the "object-data file" loaded by the VM when Squeak is launched.
+ When an image is started, every object resumes from where it was last saved - except for objects representing outside resources. External files, for example, may not exist when an image is restarted, perhaps on another machine.
- When an image is started, every object resumes exactly from where it was last saved.
3. The Sources File
Smalltalk is traditionally includes the source code in the running system. However, keeping multiple copies of the same source code in all images files is wasteful. Therefore, the source code itself is kept in a read-only .sources file and accessed by all images. The image files merely have pointers into this file, which is read on-the-fly to present original source code.
+ The code of the base system is stored in the file "SqueakV60.sources". This file does not change except between releases of Squeak. Normally this file should be placed in the folder containing the VM executable.
- The code of the base system is stored in the file "SqueakV50.sources". This file does not change except between releases of Squeak. Normally this file should be placed in the folder containing the VM executable.
4. The Changes File
The purpose of Squeak is to develop new programs and systems. Code changes to the running system are effective immediately. But since multiple images can be running, they could not all update the .sources file safely. Therefore, each image file is accompanied by a ".changes" file which contains source code changes for that and only that Smalltalk system..
The changes file is important for project work. It keeps a sequential log of development activity for the purpose of recovering work performed since the last image-save. Any of several events could lead to the need to recover work, including a power-outage or making an erroneous change to code required to keep the system running.
The changes file does not consume memory space, so Squeak is able to keep a complete history of all program changes. This makes it easy to examine or even reinstate older versions of methods (see ''versions'' option in browser selector pane). This encourages experimentation, since you can easily revert to the original versions of any set of methods.
In extreme cases where sources and/or changes files are not available, the system can still run, and will automatically decompile the bytecode methods in image memory, if necessary, into readable and editable versions of the original source code (only comments and temporary variable names are lost).
5. Transferring Code-Snippets Between Images
In addition to the ''save'' command that saves the entire state of the system, the code of individual methods, categories or classes may be ''filed out'' and then filed-in to another image.
6. Packages
The code of an entire project is encapsulated in a Package. This allows users to share their code with other users. Code of packages are delineated by the categories of their classes, and methods. The Monticello browser is then used to wrap that code into a Package object which can be saved to a Monticello repository. Visit the Squeak Swiki for more info - http://wiki.squeak.org/squeak/1287
+ Some projects end up using the resources provided by several packages, resulting in a hierarchy of packages that make up a system. The ''Installer'' class can be used to install such systems.
+
+ 7. More information
+
+ This extremely brief explanation cannot expleain everything; consider reading the Squeak by Example book!!!!!!
+ ]style[(224 24 98 15 611 18 90 18 236 19 173 6 165 6 178 9 39 17 592 19 591 19 1354 44 189 11 364 34 194 19 107),b,,i,,i,,i,,i,,b,,b,,b,,b,,b,,b,,b,,b,,Rhttp://wiki.squeak.org/squeak/…,!!' readStream nextChunkText)
- Some projects end up using the resources provided by several packages, resulting in a hierarchy of packages that make up a system. The ''Installer'' class can be used to install such systems.!!
- ]style[(224 24 98 15 611 18 90 18 236 19 173 6 165 6 178 9 39 17 449 19 591 19 1354 44 189 11 364 34 192),b,,i,,i,,i,,i,,b,,b,,b,,b,,b,,b,,b,,b,,Rhttp://wiki.squeak.org/squeak/…;,!!' readStream nextChunkText)
key: #workingWithSqueak;
shouldStyle: false;
yourself!
Christoph Thiede uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ct.1012.mcz
==================== Summary ====================
Name: Collections-ct.1012
Author: ct
Time: 17 June 2022, 10:41:55.471906 pm
UUID: bb97a774-226a-7f43-b69d-4dfc884a681f
Ancestors: Collections-lrnp.1011
Implements missing #middle on OrderedDictionary, just like we already have #first, #last, #ninth etc. there for compatibility with SequenceableCollection.
=============== Diff against Collections-lrnp.1011 ===============
Item was added:
+ ----- Method: OrderedDictionary>>middle (in category 'accessing') -----
+ middle
+ "Answer the middle element of the receiver."
+
+ ^ self atIndex: self size // 2 + 1!
Eliot Miranda uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-eem.90.mcz
==================== Summary ====================
Name: Help-Squeak-Project-eem.90
Author: eem
Time: 17 June 2022, 1:40:31.177576 pm
UUID: ed6f1896-e631-47e8-8716-f7e1f3d02e93
Ancestors: Help-Squeak-Project-ct.89
Update VMMaker & Refactoring Tools info and delete reference to Omnibrowser (hence refacgtoring tools change) in Help's Extending the System page.
=============== Diff against Help-Squeak-Project-ct.89 ===============
Item was changed:
----- Method: SqueakProjectHelp class>>extendingTheSystem (in category 'pages') -----
extendingTheSystem
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #extendingTheSystem"
^HelpTopic
title: 'Extending The System'
contents:
'SqueakMap is an integrated catalog of external applications for Squeak. It is accessible from the "Apps" menu. This catalog does not host the projects, it merely documents the load scripts required to correctly bring them into the image.
Many SqueakMap packages use Installer, which defines several packages in its package-definitions protocol. Any of these can be loaded with an expression like the following:
Installer new merge: #openGL
Change #openGL to the selector name of the package you want to load. The latest version of that package and all of its prerequisites will be merged into the image. Merging a package is no different from loading it unless the package is already loaded, in which case it is upgraded to the latest version in a way that preserves any local changes you may already have made.
Other packages can be loaded through Metacello. If you come across a project providing either a MetacelloConfiguration or MetacelloBaseline, you can install Metacello through
Installer ensureRecentMetacello
---------------
+ The source code for the Squeak, Pharo and Cuis virtual machines (VM) is generated from a package called ''VMMaker''; specifically the VMMaker.oscog fork.
- The source code for the Squeak, Pharo and Cuis virtual machines (VM) is generated from a package called ''VMMaker''.
MCHttpRepository
location: ''http://source.squeak.org/VMMaker''
user: ''''
password: ''''
The source code for the VM is written in a subset of Smalltalk called ''Slang''.
+ It is translated to C by the Slang compiler in VMMaker and compiled with the platform C compiler to produce the production VM.
- It is translated to C.
+ The generated VM code and the platform support code lives at: https://github.com/OpenSmalltalk/opensmalltalk-vm.
+ See README.md file there.
- The VMMaker.oscog fork generates the recent VM included in this release.
- The generated VM code and the platform support code is at: http://opensmalltalk.org/
- See README file there.
-
---------------
This remainder of this workspace documents load-scripts for packages that are not documented in either SqueakMap or Installer.
OCompletion
"Provides source code completion as you type"
(Installer ss project: ''OCompletion'')
addPackage: ''OcompletionSqueakCompatibility'';
addPackage: ''Ocompletion'';
install.
(Smalltalk at: #ECToolSet) register.
(Smalltalk at: #ToolSet) default: (Smalltalk at: #ECToolSet).
+ Refactoring Browser
+ Refactoring is supportedf in the standard system browser if one loads the refactoring tools from http://www.squeaksource.com/rb. See https://wiki.squeak.org/squeak/227 for details.
- Omnibrowser
- "Including Refactoring engine"
- (Installer ss project: ''MetacelloRepository'') install: ''ConfigurationOfOmniBrowser''.
- ((Smalltalk at: #ConfigurationOfOmniBrowser) project perform: #lastVersion) load: #( Dev ).
- "No longer supported, use the Refactoring tools available on SqueakMap instead"
-
-
Pier CMS
"Pier CMS: http://www.piercms.com"
(Installer ss project: ''MetacelloRepository'') install: ''ConfigurationOfPier2''.
(Smalltalk at: #ConfigurationOfPier2) load.
(Installer lukas project: ''pier2'') install: ''Pier-Blog''.
(Installer lukas project: ''pier2'') install: ''Pier-Book''.
(Installer lukas project: ''pier2addons'') install: ''Pier-Setup''.
(Smalltalk at: #PRDistribution) new register.
"The document model used is the one which later on lead to the Pharo Pillar document system"
Open Cobalt
"http://opencobalt.org (Best to run this from an image in an open cobalt directory)"
Installer ss project: ''TweakCore''; install: ''update''.
[Installer ss project: ''TweakExtras''; install: ''update'']
on: (Smalltalk at: #CUnsynchronizedModification) do: [:ex | ex resume].
Installer cobalt project: ''Tweak'';
answer: ''Would you like to conserve memory at all costs?'' with: true;
answer: ''Password for interactive VNC connections?'' with: ''cobalt'';
answer: ''Would you like to add the RFBServer to the World open menu?'' with: true;
install: ''update''
!!
]style[(9 309 19 252 6 126 8 130 9 141 21 135 95 109 68 61 25 173 11 47 226 2 11 292 8 480 11 547)Rcode://SMLoaderPlus open;FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';FBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,iFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,uFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,Rhttps://github.com/metacello/metacello;,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14,buFBitmap DejaVu Sans#14,FBitmap DejaVu Sans#14!!' readStream nextChunkText!