Christoph Thiede uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-ct.100.mcz
==================== Summary ====================
Name: Help-Squeak-Project-ct.100
Author: ct
Time: 5 December 2023, 11:00:06.139337 pm
UUID: e5d36ed2-bc14-8249-8d27-c3241476d8e7
Ancestors: Help-Squeak-Project-ct.99
Minor revisions to the first five pages of Squeak Help:
* spell-check everything, fix plenks, typogaphic slips, and use Oxford comma consistently
* fix formatting slips caused by blinkParen
* rename Dock -> docking bar
* add "become" link to implementors of become primitive
* change "web" link from WebClient to WebServer
* mention preferences for internalizing changes and sources
* spread some emphasis
* other very minor changes
=============== Diff against Help-Squeak-Project-ct.99 ===============
Item was changed:
----- Method: SqueakHelp class>>introduction (in category 'pages') -----
introduction
"This method was automatically generated. Edit it using:"
"SqueakHelp edit: #introduction"
<generated>
^(HelpTopic
title: 'Welcome'
contents:
'Welcome to Squeak
+ Visit https://www.squeak.org for the latest information.
- Visit https://www.squeak.org for the lastest information.
+ Squeak is a modern, open-source Smalltalk programming system with fast execution environments for all major platforms. It features the Morphic framework, which promotes low-effort graphical, interactive application development and maintenance. Many projects have been successfully created with Squeak. They cover a wide range of domains such as education, multimedia, gaming, research, and commerce. Squeak is fast, flexible, and free.
- Squeak is a modern, open-source Smalltalk programming system with fast execution environments for all major platforms. It features the Morphic framework, which promotes low effort graphical, interactive application development and maintenance. Many projects have been successfully created with Squeak. They cover a wide range of domains such as education, multimedia, gaming, research, and commerce. Squeak is fast, flexible and free.
It''s Smalltalk!!!!
Everything is an object. Objects collaborate by sending messages to achieve the desired application behavior. The Smalltalk programming language has a concise syntax and simple execution semantics. The Smalltalk system is implemented in itself: Compiler, debugger, programming tools, and so on are all Smalltalk code the user can read and modify. Novice programmers can get started easily and experts can engineer elegant solutions at large.
Morphic UI Framework
All graphical objects are tangible and interactively changeable. This promotes short feedback loops and low-effort application development. Morphic thus leverages the live programming experience of traditional Smalltalk environments from a mainly text-focused domain to a graphical one.
Powerful Tooling
The dynamic Squeak environment provides a variety of tools for browsing, writing, executing, and versioning Smalltalk code. Multiple debugging sessions can be served concurrently. Thanks to Morphic, tool customization can be achieved with reasonable effort.
Fast Virtual Machine
+ The standard VM for Squeak, Cog Spur, has the most advanced object representation yet devised for Smalltalk. Spur has direct pointers, a compact object header, and efficiently implements become (Smalltalk''s object mutation primitive) via lazy forwarding. Spur provides pinning, and a segmented heap, releasing memory back to the OS after global garbage collection. Cog Spur''s JIT combines context-to-stack mapping, aggressive in-line message caching, a register-based calling convention, and Spur''s object representation to provide the fastest production Smalltalk VM. Cog Spur is developed in Smalltalk, in a uniquely productive VM development environment. There are other important Squeak VMs. Examples include SqueakJS, which runs in web browsers, and research VMs such as TruffleSqueak (based on GraalVM and a method JIT using partial evaluation) and RSqueak/VM (based on PyPy''s meta-tracing JIT).
- The standard VM for Squeak, Cog Spur, has the most advanced object representation yet devised for Smalltalk. Spur has direct pointers, a compact object header, and efficiently implements become (Smalltalk''s object mutation primitive) via lazy forwarding. Spur provides pinning, and a segmented heap, releasing memory back to the OS after global garbage collection. Cog Spur''s JIT combines context-to-stack mapping, aggressive in-line message caching, a register based calling convention, and Spur''s object representation to provide the fastest production Smalltalk VM. Cog Spur is developed in Smalltalk, in a uniquely productive VM development environment. There are other important Squeak VMs. Examples include SqueakJS, which runs in web browsers, and research VMs such as TruffleSqueak (based on GraalVM and a method JIT using partial evaluation) and RSqueak/VM (based on PyPy''s meta-tracing JIT).
Web Development
With frameworks like Seaside and AIDA, Squeak can be a web server. It provides a layered set of abstractions over HTTP and HTML that let you build highly interactive web applications quickly, reusably, and maintainably.
Multi-Platform Support
+ Squeak supports Windows, Linux (X86, X64, and ARM), and macOS and is preinstalled on C.H.I.P., Raspberry Pi, and OLPC XO.!!
+ ]style[(19 5 1 22 28 439 15 18 6 33 8 87 14 80 8 2 8 2 17 161 20 27 8 254 16 64 8 11 9 6 10 152 20 29 8 151 6 196 24 13 23 43 28 111 26 28 10 19 8 55 13 11 7 48 10 11 6 21 15 22 7 5 4 18 3 163 22 122)a0b,a0,a0b,Rhttps://www.squeak.org;,a0,,i,,Rcode://Object;,,Rcode://MessageSend;,,Rcode://HelpBrowser openOn: TerseGuideHelp;,,Rcode://Compiler;,,Rcode://Debugger;,,Rcode://Browser;,,i,,Rcode://Morph new openInHand;,,i,,Rcode://ToolSet browse: String selector: #findTokens:;,,Rcode://7/0;,,Rcode://MCWorkingCopyBrowser new show;,,i,,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm#readme;,,Rcode…
+ self systemNavigation browseAllImplementorsOfList: #(become: becomeForward: becomeForward:copyHash:) title: ''become implementors'';,,Rhttp://lists.squeakfoundation.org/pipermail/squeak-dev/2021-January/213418.html;,,Rhttp://www.mirandabanda.org/cogblog/2011/03/01/build-me-a-jit-as-fast-as-you-can/;,,Rhttp://www.mirandabanda.org/cogblog/2013/09/05/a-spur-gear-for-cog/;,,Rhttps://www.researchgate.net/publication/328509577_Two_Decades_of_Smalltalk_VM_Development_Live_VM_Development_through_Simulation_Tools;,,Rhttps://squeak.org/development/#virtual-machines;,,Rhttps://squeak.js.org;,,Rhttps://github.com/hpi-swa/trufflesqueak/;,,Rhttps://www.graalvm.org/;,,Rhttps://github.com/hpi-swa/RSqueak/;,,Rhttps://www.pypy.org/;,,i,,Rhttp://www.seaside.st/;,,Rhttp://www.aidaweb.si/;,,Rcode://WebServer;,,i,!!' readStream nextChunkText)
- Squeak supports Windows, Linux (X86, X64 and ARM), and macOS and is preinstalled on C.H.I.P., Raspberry Pi, and OLPC XO.!!
- ]style[(19 5 1 22 29 438 15 18 6 33 8 87 14 80 8 2 8 2 17 161 20 27 8 254 16 64 8 11 9 6 10 152 20 29 8 353 24 13 23 43 28 111 26 28 10 19 8 56 13 11 7 48 10 11 6 21 15 22 7 5 4 18 3 163 22 121)a0b,a0,a0b,Rhttps://www.squeak.org;,a0,,i,,Rcode://Object;,,Rcode://MessageSend;,,Rcode://HelpBrowser openOn: TerseGuideHelp;,,Rcode://Compiler;,,Rcode://Debugger;,,Rcode://Browser;,,i,,Rcode://Morph new openInHand;,,i,,Rcode://ToolSet browse: String selector: #findTokens:;,,Rcode://7/0;,,Rcode://MCWorkingCopyBrowser new show;,,i,,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm#readme;,,Rhttp…
/#virtual-machines;,,Rhttps://squeak.js.org;,,Rhttps://github.com/hpi-swa/trufflesqueak/;,,Rhttps://www.graalvm.org/;,,Rhttps://github.com/hpi-swa/RSqueak/;,,Rhttps://www.pypy.org/;,,i,,Rhttp://www.seaside.st/;,,Rhttp://www.aidaweb.si/;,,Rcode://WebClient;,,i,!!' readStream nextChunkText)
key: #introduction;
shouldStyle: false;
yourself!
Item was changed:
----- Method: SqueakProjectHelp class>>extendingTheSystem (in category 'pages') -----
extendingTheSystem
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #extendingTheSystem"
<generated>
^(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: #graphQlEngine
Change #graphQlEngine 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 or update Metacello through
Metacello new. "or"
Installer ensureRecentMetacello.
Here are some examples for installing packages via Metacello:
Metacello new configuration: ''OCompletion''; load.
Metacello new configuration: ''FFI''; load.
Metacello new configuration: ''RefactoringTools''; load.
---------------
The source code for the Squeak, Cuis, and Pharo virtual machines (VM) is generated from a package called ''VMMaker''.
MCHttpRepository
location: ''https://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.
The VMMaker.oscog fork generates the recent VM included in this release.
+ The generated VM code and the platform support code are at: https://opensmalltalk.org/
+ See the README file there.!!
+ ]style[(9 309 19 266 6 126 8 130 9 879 27 27)Rcode://SMLoaderPlus open;,,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';,,i,,u,,Rhttps://github.com/metacello/metacello;,,Rhttps://opensmalltalk.org/ ;,!!' readStream nextChunkText)
- The generated VM code and the platform support code is at: https://opensmalltalk.org/
- See README file there.!!
- ]style[(9 309 19 266 6 126 8 130 9 878 27 23)Rcode://SMLoaderPlus open;,,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';,,i,,u,,Rhttps://github.com/metacello/metacello;,,Rhttps://opensmalltalk.org/ ;,!!' readStream nextChunkText)
key: #extendingTheSystem;
shouldStyle: false;
yourself!
Item was changed:
----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in category 'pages') -----
squeakResourcesOnline
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #squeakResourcesOnline"
<generated>
^(HelpTopic
title: 'Squeak Resources Online'
contents:
'Web sites
Main site of Squeak
https://www.squeak.org
Issue Tracker for bug reports and other feedback
https://bugs.squeak.org
Weekly Squeak
https://news.squeak.org
Downloads for many versions
https://www.squeak.org/downloads
Main site of OpenSmalltalk VM
https://github.com/OpenSmalltalk/opensmalltalk-vm
Mailing lists
beginners
This is the place to ask even the most basic questions. Don''t be afraid. Just ask. The community will help you get started with Squeak.
https://lists.squeakfoundation.org/mailman/listinfo/beginners
squeak-dev
+ This is the main Squeak mailing list. Join that list to be part of the community. Subscribe to the mail server or read on a forum.
- This is the main Squeak mailing list. Join that list to be part in the community. Subscribe to the mail server or read on a forum.
https://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
+ For more information on the community and the contribution process, check out the tutorial Contributing to Squeak on the following pages.
- For more information on the community and the contribution process, check out the tutorial Contributing to Squeak in the following pages.
vm-beginners
This is the entry point for people who want to learn more about how Squeak runs on your operating system. You may ask even basic questions. :-)
https://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
vm-dev
This is the place where discussions about the OpenSmalltalk virtual machine happen. Join that list the be a part of the community.
https://lists.squeakfoundation.org/mailman/listinfo/vm-dev
Books
Squeak By Example
+ A beginners textbook about Squeak''s environment, language, tools, and the Morphic framework, currently based on Squeak 6.0. Available as a colored paperback at Lulu and as a free PDF here. The content is maintained on GitHub.
- A beginners textbook about Squeak''s environment, language, tools, and the Morphic framework, currently based on Squeak 6.0. Available as a colored paperback at lulu and as a free PDF here. The content is maintained on GitHub.
Other books
Many books about Squeak and Smalltalk in general have been made available:
https://squeak.org/documentation/#books!!
]style[(11 19 1 23 48 1 23 1 14 23 1 27 1 32 1 29 1 49 1 1 13 1 1 10 135 1 61 1 1 10 1 131 62 92 22 25 1 13 144 64 1 1 6 1 131 58 1 1 5 2 17 1 160 4 19 4 31 6 2 1 11 1 75 39)b,I0i,I0,Rhttps://www.squeak.org;I1,I0i,I0,Rhttps://bugs.squeak.org;I1,I…queak.org/documentation/#books;I1!!' readStream nextChunkText)
key: #squeakResourcesOnline;
shouldStyle: false;
yourself!
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?
- 1. Red button, Yellow Button; buttons on mice, trackpads and wheels - what do they do?
+ Smalltalk has been around for 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".
- 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 one 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. 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.
- 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).
- 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 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.
- 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 (accessible from the docking bar -> 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 (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 ;-)
+ 3. The docking bar
- 3. The Dock
+ Across the top of the screen lies the docking bar; a mix of a menu bar, toolbar, 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 docking bar 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.
- 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 menus:
+ a) pull-down menus - like those that you see on the docking bar;
+ 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;
- 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.
- 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.
- 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 Morphic 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 o
ne.
- 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.
- 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" 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, and then drop the object at the desired position in the flap.!!
+ ]style[(25 126 89 1831 18 172 25 139 20 142 5 127 20 430 5 5 4 421 10 41 15 50 12 116 8 81 18 339 13 221 16 674 16 142 15 843 7 693 13 47 15 523)b,,i,,Rcode://PreferenceBrowser open;,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,Rcode://(ProjectViewMorph newProjectViewInAWindowFor: MorphicProject new) openInWorld;,,i,,Rcode://SystemWindow topWindow addHalo;,,i,,i,,Rcode://Project current world activateObjectsTool;,!!' readStream nextChunkText)
- 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)
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 a 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.
- '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.
- 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 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".
- 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.
- 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.
- - 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.
- 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.
3. The Sources File
+ Smalltalk traditionally includes the source code in the running system. However, keeping multiple copies of the same source code in all image 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 to this file, which is read on the fly to present the original source code.
- 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.
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 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 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 the ''versions'' button in code browsers). This encourages experimentation since you can easily revert to the original versions of any set of methods.
- 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). You can also disable both files in the preferences and have all sources managed in the image.
- 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
- 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.
- 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
- 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 explain everything; consider reading the Squeak by Example book!!!!!!
+ ]style[(226 24 98 15 610 18 89 18 236 19 173 6 165 6 179 9 39 17 594 19 589 19 1442 44 192 11 53 7 303 34 194 19 106),b,,i,,i,,i,,i,,b,,b,,b,,b,,b,,b,,b,,b,,Rcode://PackageInfo;,,Rhttp://w…,!!' readStream nextChunkText)
- 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)
key: #workingWithSqueak;
shouldStyle: false;
yourself!
Christoph Thiede uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-ct.101.mcz
==================== Summary ====================
Name: Help-Squeak-Project-ct.101
Author: ct
Time: 15 December 2023, 7:29:43.889435 pm
UUID: 90f0d4cb-4451-764e-8f4a-2775eab81d21
Ancestors: Help-Squeak-Project-ct.100, Help-Squeak-Project-jr.99
Merges minor revisinos and fixes to the first five pages of Squeak Help.
Help-Squeak-Project-ct.100:
Minor revisions to the first five pages of Squeak Help:
* spell-check everything, fix plenks, typogaphic slips, and use Oxford comma consistently
* fix formatting slips caused by blinkParen
* rename Dock -> docking bar
* add "become" link to implementors of become primitive
* change "web" link from WebClient to WebServer
* mention preferences for internalizing changes and sources
* spread some emphasis
* other very minor changes
Help-Squeak-Project-jr.99:
Fix a few small typos, and add a "link" to the swapMouseButtons preference.
=============== Diff against Help-Squeak-Project-ct.99 ===============
Item was changed:
----- Method: SqueakHelp class>>introduction (in category 'pages') -----
introduction
"This method was automatically generated. Edit it using:"
"SqueakHelp edit: #introduction"
<generated>
^(HelpTopic
title: 'Welcome'
contents:
'Welcome to Squeak
+ Visit https://www.squeak.org for the latest information.
- Visit https://www.squeak.org for the lastest information.
+ Squeak is a modern, open-source Smalltalk programming system with fast execution environments for all major platforms. It features the Morphic framework, which promotes low-effort graphical, interactive application development and maintenance. Many projects have been successfully created with Squeak. They cover a wide range of domains such as education, multimedia, gaming, research, and commerce. Squeak is fast, flexible, and free.
- Squeak is a modern, open-source Smalltalk programming system with fast execution environments for all major platforms. It features the Morphic framework, which promotes low effort graphical, interactive application development and maintenance. Many projects have been successfully created with Squeak. They cover a wide range of domains such as education, multimedia, gaming, research, and commerce. Squeak is fast, flexible and free.
It''s Smalltalk!!!!
Everything is an object. Objects collaborate by sending messages to achieve the desired application behavior. The Smalltalk programming language has a concise syntax and simple execution semantics. The Smalltalk system is implemented in itself: Compiler, debugger, programming tools, and so on are all Smalltalk code the user can read and modify. Novice programmers can get started easily and experts can engineer elegant solutions at large.
Morphic UI Framework
All graphical objects are tangible and interactively changeable. This promotes short feedback loops and low-effort application development. Morphic thus leverages the live programming experience of traditional Smalltalk environments from a mainly text-focused domain to a graphical one.
Powerful Tooling
The dynamic Squeak environment provides a variety of tools for browsing, writing, executing, and versioning Smalltalk code. Multiple debugging sessions can be served concurrently. Thanks to Morphic, tool customization can be achieved with reasonable effort.
Fast Virtual Machine
+ The standard VM for Squeak, Cog Spur, has the most advanced object representation yet devised for Smalltalk. Spur has direct pointers, a compact object header, and efficiently implements become (Smalltalk''s object mutation primitive) via lazy forwarding. Spur provides pinning, and a segmented heap, releasing memory back to the OS after global garbage collection. Cog Spur''s JIT combines context-to-stack mapping, aggressive in-line message caching, a register-based calling convention, and Spur''s object representation to provide the fastest production Smalltalk VM. Cog Spur is developed in Smalltalk, in a uniquely productive VM development environment. There are other important Squeak VMs. Examples include SqueakJS, which runs in web browsers, and research VMs such as TruffleSqueak (based on GraalVM and a method JIT using partial evaluation) and RSqueak/VM (based on PyPy''s meta-tracing JIT).
- The standard VM for Squeak, Cog Spur, has the most advanced object representation yet devised for Smalltalk. Spur has direct pointers, a compact object header, and efficiently implements become (Smalltalk''s object mutation primitive) via lazy forwarding. Spur provides pinning, and a segmented heap, releasing memory back to the OS after global garbage collection. Cog Spur''s JIT combines context-to-stack mapping, aggressive in-line message caching, a register based calling convention, and Spur''s object representation to provide the fastest production Smalltalk VM. Cog Spur is developed in Smalltalk, in a uniquely productive VM development environment. There are other important Squeak VMs. Examples include SqueakJS, which runs in web browsers, and research VMs such as TruffleSqueak (based on GraalVM and a method JIT using partial evaluation) and RSqueak/VM (based on PyPy''s meta-tracing JIT).
Web Development
With frameworks like Seaside and AIDA, Squeak can be a web server. It provides a layered set of abstractions over HTTP and HTML that let you build highly interactive web applications quickly, reusably, and maintainably.
Multi-Platform Support
+ Squeak supports Windows, Linux (X86, X64, and ARM), and macOS and is preinstalled on C.H.I.P., Raspberry Pi, and OLPC XO.!!
+ ]style[(19 5 1 22 28 439 15 18 6 33 8 87 14 80 8 2 8 2 17 161 20 27 8 254 16 64 8 11 9 6 10 152 20 29 8 151 6 196 24 13 23 43 28 111 26 28 10 19 8 55 13 11 7 48 10 11 6 21 15 22 7 5 4 18 3 163 22 122)a0b,a0,a0b,Rhttps://www.squeak.org;,a0,,i,,Rcode://Object;,,Rcode://MessageSend;,,Rcode://HelpBrowser openOn: TerseGuideHelp;,,Rcode://Compiler;,,Rcode://Debugger;,,Rcode://Browser;,,i,,Rcode://Morph new openInHand;,,i,,Rcode://ToolSet browse: String selector: #findTokens:;,,Rcode://7/0;,,Rcode://MCWorkingCopyBrowser new show;,,i,,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm#readme;,,Rcode…
+ self systemNavigation browseAllImplementorsOfList: #(become: becomeForward: becomeForward:copyHash:) title: ''become implementors'';,,Rhttp://lists.squeakfoundation.org/pipermail/squeak-dev/2021-January/213418.html;,,Rhttp://www.mirandabanda.org/cogblog/2011/03/01/build-me-a-jit-as-fast-as-you-can/;,,Rhttp://www.mirandabanda.org/cogblog/2013/09/05/a-spur-gear-for-cog/;,,Rhttps://www.researchgate.net/publication/328509577_Two_Decades_of_Smalltalk_VM_Development_Live_VM_Development_through_Simulation_Tools;,,Rhttps://squeak.org/development/#virtual-machines;,,Rhttps://squeak.js.org;,,Rhttps://github.com/hpi-swa/trufflesqueak/;,,Rhttps://www.graalvm.org/;,,Rhttps://github.com/hpi-swa/RSqueak/;,,Rhttps://www.pypy.org/;,,i,,Rhttp://www.seaside.st/;,,Rhttp://www.aidaweb.si/;,,Rcode://WebServer;,,i,!!' readStream nextChunkText)
- Squeak supports Windows, Linux (X86, X64 and ARM), and macOS and is preinstalled on C.H.I.P., Raspberry Pi, and OLPC XO.!!
- ]style[(19 5 1 22 29 438 15 18 6 33 8 87 14 80 8 2 8 2 17 161 20 27 8 254 16 64 8 11 9 6 10 152 20 29 8 353 24 13 23 43 28 111 26 28 10 19 8 56 13 11 7 48 10 11 6 21 15 22 7 5 4 18 3 163 22 121)a0b,a0,a0b,Rhttps://www.squeak.org;,a0,,i,,Rcode://Object;,,Rcode://MessageSend;,,Rcode://HelpBrowser openOn: TerseGuideHelp;,,Rcode://Compiler;,,Rcode://Debugger;,,Rcode://Browser;,,i,,Rcode://Morph new openInHand;,,i,,Rcode://ToolSet browse: String selector: #findTokens:;,,Rcode://7/0;,,Rcode://MCWorkingCopyBrowser new show;,,i,,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm#readme;,,Rhttp…
/#virtual-machines;,,Rhttps://squeak.js.org;,,Rhttps://github.com/hpi-swa/trufflesqueak/;,,Rhttps://www.graalvm.org/;,,Rhttps://github.com/hpi-swa/RSqueak/;,,Rhttps://www.pypy.org/;,,i,,Rhttp://www.seaside.st/;,,Rhttp://www.aidaweb.si/;,,Rcode://WebClient;,,i,!!' readStream nextChunkText)
key: #introduction;
shouldStyle: false;
yourself!
Item was changed:
----- Method: SqueakProjectHelp class>>extendingTheSystem (in category 'pages') -----
extendingTheSystem
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #extendingTheSystem"
<generated>
^(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: #graphQlEngine
Change #graphQlEngine 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 or update Metacello through
Metacello new. "or"
Installer ensureRecentMetacello.
Here are some examples for installing packages via Metacello:
Metacello new configuration: ''OCompletion''; load.
Metacello new configuration: ''FFI''; load.
Metacello new configuration: ''RefactoringTools''; load.
---------------
The source code for the Squeak, Cuis, and Pharo virtual machines (VM) is generated from a package called ''VMMaker''.
MCHttpRepository
location: ''https://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.
The VMMaker.oscog fork generates the recent VM included in this release.
+ The generated VM code and the platform support code are at: https://opensmalltalk.org/
+ See the README file there.!!
+ ]style[(9 309 19 266 6 126 8 130 9 879 27 27)Rcode://SMLoaderPlus open;,,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';,,i,,u,,Rhttps://github.com/metacello/metacello;,,Rhttps://opensmalltalk.org/ ;,!!' readStream nextChunkText)
- The generated VM code and the platform support code is at: https://opensmalltalk.org/
- See README file there.!!
- ]style[(9 309 19 266 6 126 8 130 9 878 27 23)Rcode://SMLoaderPlus open;,,Rcode://ToolSet browseClass: Installer category: ''package-definitions'';,,i,,u,,Rhttps://github.com/metacello/metacello;,,Rhttps://opensmalltalk.org/ ;,!!' readStream nextChunkText)
key: #extendingTheSystem;
shouldStyle: false;
yourself!
Item was changed:
----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in category 'pages') -----
squeakResourcesOnline
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #squeakResourcesOnline"
<generated>
^(HelpTopic
title: 'Squeak Resources Online'
contents:
'Web sites
Main site of Squeak
https://www.squeak.org
Issue Tracker for bug reports and other feedback
https://bugs.squeak.org
Weekly Squeak
https://news.squeak.org
Downloads for many versions
https://www.squeak.org/downloads
Main site of OpenSmalltalk VM
https://github.com/OpenSmalltalk/opensmalltalk-vm
Mailing lists
beginners
This is the place to ask even the most basic questions. Don''t be afraid. Just ask. The community will help you get started with Squeak.
https://lists.squeakfoundation.org/mailman/listinfo/beginners
squeak-dev
+ This is the main Squeak mailing list. Join that list to be part of the community. Subscribe to the mail server or read on a forum.
- This is the main Squeak mailing list. Join that list to be part in the community. Subscribe to the mail server or read on a forum.
https://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
+ For more information on the community and the contribution process, check out the tutorial Contributing to Squeak on the following pages.
- For more information on the community and the contribution process, check out the tutorial Contributing to Squeak in the following pages.
vm-beginners
This is the entry point for people who want to learn more about how Squeak runs on your operating system. You may ask even basic questions. :-)
https://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
vm-dev
This is the place where discussions about the OpenSmalltalk virtual machine happen. Join that list the be a part of the community.
https://lists.squeakfoundation.org/mailman/listinfo/vm-dev
Books
Squeak By Example
+ A beginners textbook about Squeak''s environment, language, tools, and the Morphic framework, currently based on Squeak 6.0. Available as a colored paperback at Lulu and as a free PDF here. The content is maintained on GitHub.
- A beginners textbook about Squeak''s environment, language, tools, and the Morphic framework, currently based on Squeak 6.0. Available as a colored paperback at lulu and as a free PDF here. The content is maintained on GitHub.
Other books
Many books about Squeak and Smalltalk in general have been made available:
https://squeak.org/documentation/#books!!
]style[(11 19 1 23 48 1 23 1 14 23 1 27 1 32 1 29 1 49 1 1 13 1 1 10 135 1 61 1 1 10 1 131 62 92 22 25 1 13 144 64 1 1 6 1 131 58 1 1 5 2 17 1 160 4 19 4 31 6 2 1 11 1 75 39)b,I0i,I0,Rhttps://www.squeak.org;I1,I0i,I0,Rhttps://bugs.squeak.org;I1,I…queak.org/documentation/#books;I1!!' readStream nextChunkText)
key: #squeakResourcesOnline;
shouldStyle: false;
yourself!
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?
- 1. Red button, Yellow Button; buttons on mice, trackpads and wheels - what do they do?
+ Smalltalk has been around for 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".
- 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 one 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", "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.
- 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).
- 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 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.
- 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 (accessible from the docking bar -> 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 (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 ;-)
+ 3. The docking bar
- 3. The Dock
+ Across the top of the screen lies the docking bar; a mix of a menu bar, toolbar, 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 docking bar 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.
- 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 menus:
+ a) pull-down menus - like those that you see on the docking bar;
+ 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;
- 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.
- 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.
- 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 Morphic 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 o
ne.
- 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.
- 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" 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, and then drop the object at the desired position in the flap.!!
+ ]style[(25 126 89 1865 20 142 25 139 20 142 5 127 20 430 5 5 4 422 10 41 15 50 12 116 8 81 18 339 13 221 16 674 16 142 15 843 7 693 13 47 15 523)b,,i,,Rcode:// (Preferences preferenceAt: #swapMouseButtons) open;,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,i,,Rcode://(ProjectViewMorph newProjectViewInAWindowFor: MorphicProject new) openInWorld;,,i,,Rcode://SystemWindow topWindow addHalo;,,i,,i,,Rcode://Project current world activateObjectsTool;,!!' readStream nextChunkText)
- 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)
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 a 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.
- '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.
- 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 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".
- 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.
- 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.
- - 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.
- 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.
3. The Sources File
+ Smalltalk traditionally includes the source code in the running system. However, keeping multiple copies of the same source code in all image 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 to this file, which is read on the fly to present the original source code.
- 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.
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 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 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 the ''versions'' button in code browsers). This encourages experimentation since you can easily revert to the original versions of any set of methods.
- 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). You can also disable both files in the preferences and have all sources managed in the image.
- 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
- 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.
- 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
- 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 explain everything; consider reading the Squeak by Example book!!!!!!
+ ]style[(226 24 98 15 610 18 89 18 236 19 173 6 165 6 179 9 39 17 594 19 589 19 1442 44 192 11 53 7 303 34 194 19 106),b,,i,,i,,i,,i,,b,,b,,b,,b,,b,,b,,b,,b,,Rcode://PackageInfo;,,Rhttp://w…,!!' readStream nextChunkText)
- 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)
key: #workingWithSqueak;
shouldStyle: false;
yourself!
Christoph Thiede uploaded a new version of Help-Squeak-Project to project The Treated Inbox:
http://source.squeak.org/treated/Help-Squeak-Project-ct.70.mcz
==================== Summary ====================
Name: Help-Squeak-Project-ct.70
Author: ct
Time: 3 October 2019, 2:24:48.841682 am
UUID: 1b5d8124-e6b0-4b43-9e35-dc3d47ea06c9
Ancestors: Help-Squeak-Project-mt.69
Complements Tools-ct.900 (Inspector refactoring)
Just use refer to another menu that is more suitable as an example :)
=============== Diff against Help-Squeak-Project-mt.69 ===============
Item was changed:
----- Method: SqueakMessageCategoriesHelp>>menu (in category 'menu') -----
menu
"This category includes all methods related to menus, often context menus in particular. It contains methods defining the menu as well as often callbacks for the labels of menu items or the actions to be executed. Sometimes the menus are split up in different categories if there are multiple menus or submenus."
+ ^ {ObjectExplorer>>#mainTreeListMenu: . SystemWindow>>#makeClosable}!
- ^ {DictionaryInspector>>#mainFieldListMenu: . SystemWindow>>#makeClosable}!
Marcel Taeumel uploaded a new version of Regex-Tests-Core to project The Trunk:
http://source.squeak.org/trunk/Regex-Tests-Core-mt.34.mcz
==================== Summary ====================
Name: Regex-Tests-Core-mt.34
Author: mt
Time: 15 December 2023, 2:55:54.123424 pm
UUID: 053ecc9e-66fc-2b4b-a29a-c03b4b4a8ab1
Ancestors: Regex-Tests-Core-ct.33
Some test selectors seem to be missing... maybe a prior version was incomplete? Try to fix this.
=============== Diff against Regex-Tests-Core-ct.33 ===============
Item was added:
+ ----- Method: RxParserTest>>expectedFailures (in category 'failures') -----
+ expectedFailures
+
+ ^ #(testOptionalLookbehind2)!
Item was added:
+ ----- Method: RxParserTest>>testOptionalLookbehind2 (in category 'tests') -----
+ testOptionalLookbehind2
+
+ self assert: [('AB' allRegexMatches: '((?<=a)b)?') asArray = #('A')].!
Item was added:
+ ----- Method: RxParserTest>>toDotestSpecialCharacterInSetRange (in category 'tests') -----
+ toDotestSpecialCharacterInSetRange
+ "self debug: #testSpecialCharacterInSetRange"
+
+ "Special characters within a set are `^', `-', and `]' that closes the
+ set. Below are the examples of how to literally use them in a set:
+ [01^] -- put the caret anywhere except the beginning
+ [01-] -- put the dash as the last character
+ []01] -- put the closing bracket as the first character
+ [^]01] (thus, empty and universal sets cannot be specified)"
+
+ self assert: ('0' matchesRegex: '[01^]').
+
+ self assert: ('0' matchesRegex: '[0-9]').
+ !
Marcel Taeumel uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-mt.403.mcz
==================== Summary ====================
Name: CollectionsTests-mt.403
Author: mt
Time: 15 December 2023, 12:28:48.74718 pm
UUID: ed0517c3-f92d-1948-92e6-e821ff620e31
Ancestors: CollectionsTests-mt.402
Document an issue (?) with #findLiteral. Maybe this is expected. Then the test should be changed.
=============== Diff against CollectionsTests-mt.402 ===============
Item was added:
+ ----- Method: StringTest>>testFindLiteralBooleanOrNil (in category 'tests - finding') -----
+ testFindLiteralBooleanOrNil
+
+ #(
+ true 'true'
+ false 'false'
+ nil 'nil'
+ ) pairsDo: [:literal :str |
+ self assert: (literal literalEqual: str findLiteral)].!