[squeak-dev] The Inbox: Help-Squeak-Project-mt.94.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jul 14 14:15:10 UTC 2022


A new version of Help-Squeak-Project was added to project The Inbox:
http://source.squeak.org/inbox/Help-Squeak-Project-mt.94.mcz

==================== Summary ====================

Name: Help-Squeak-Project-mt.94
Author: mt
Time: 1 July 2022, 11:21:31.874976 am
UUID: b31887b9-4ca9-e646-b07f-f96e27269c2b
Ancestors: Help-Squeak-Project-ct.93

Various documentation updates.

=============== Diff against Help-Squeak-Project-ct.93 ===============

Item was removed:
- SystemOrganization addCategory: #'Help-Squeak-Project'!

Item was removed:
- ----- Method: HelpIcons class>>squeakIcon (in category '*help-squeak-project') -----
- squeakIcon
- 	^(Form
- 	extent: 12 at 12
- 	depth: 32
- 	fromArray: #( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75398782 26843545 0 0 1159996452 1378823983 338044454 0 0 0 0 455682345 1295266868 1126376227 0 0 1040582150 0 1328097577 0 0 0 23488102 1277502757 0 1076834095 0 0 1075781407 0 287647013 472854319 0 0 471472666 204089898 0 1092756002 0 0 1041963803 36909875 0 1880232466 454761243 287515427 1342572038 0 104939841 974460181 0 0 270080281 354690084 86846765 3674539269 1394219546 1611599631 3557427722 86123042 388244516 204287277 0 26843545 605558808 1025055001 1008014613 1159141143 522264865 739710743 1159141143 571083274 570820102 188891714 0 942550574 1411391520 1143021857 1312241463 1428563494 3205040393 3708159494 1663576104 1511067921 1579887403 1629758500 958472481 656679972 439563059 1294608938 839913488 739644950 172246084 221459251 840900383 1075978786 1209933342 724512559 707077413 0 0 0 0 0 0 0 0 0 0 38488907 0 0 0 0 0 0 0 0 0 0 0 0 0)
- 	offset: 0 at 0)!

Item was removed:
- CustomHelp subclass: #SqueakHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakHelp class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Squeak'!

Item was removed:
- ----- Method: SqueakHelp class>>icon (in category 'accessing') -----
- icon
- 	(self name = #SqueakHelp) ifTrue: [^HelpIcons iconNamed: #squeakIcon].
- 	^nil!

Item was removed:
- ----- 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 http://www.squeak.org for the lastest information.
- 
- Squeak is an open-source Smalltalk programming system available 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 in 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).
- 
- 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 21 29 399 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 28 1 8 2 351 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,Rhttp://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,,f5,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm#readme;,f5,,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/de
 velopment/#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 removed:
- ----- Method: SqueakHelp class>>pages (in category 'accessing') -----
- pages
- 	^#(introduction SqueakProjectHelp SqueakToolsHelp SqueakTutorials)!

Item was removed:
- ----- Method: SqueakHelp class>>priority (in category 'accessing') -----
- priority
- 
- 	^ self == SqueakHelp ifTrue: [-9999 "at the top"] ifFalse: [nil]!

Item was removed:
- SqueakProjectHelp subclass: #SqueakLicenseHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>bookName (in category 'accessing') -----
- bookName 
- 	^'License'!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>fontLicenseBitstreamVera (in category 'pages') -----
- fontLicenseBitstreamVera
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakLicenseHelp edit: #fontLicenseBitstreamVera"
- 	<generated>
- 	^(HelpTopic
- 		title: 'Bitstream Vera License'
- 		readOnlyContents: 
- 'Bitstream Vera Fonts Copyright
- 
- The fonts have a generous copyright, allowing derivative works (as
- long as "Bitstream" or "Vera" are not in the names), and full
- redistribution (so long as they are not *sold* by themselves). They
- can be be bundled, redistributed and sold with any software.
- 
- The fonts are distributed under the following copyright:
- 
- Copyright
- 
- Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
- Vera is a trademark of Bitstream, Inc.
- 
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of the fonts accompanying this license ("Fonts") and associated
- documentation files (the "Font Software"), to reproduce and distribute
- the Font Software, including without limitation the rights to use,
- copy, merge, publish, distribute, and/or sell copies of the Font
- Software, and to permit persons to whom the Font Software is furnished
- to do so, subject to the following conditions:
- 
- The above copyright and trademark notices and this permission notice
- shall be included in all copies of one or more of the Font Software
- typefaces.
- 
- The Font Software may be modified, altered, or added to, and in
- particular the designs of glyphs or characters in the Fonts may be
- modified and additional glyphs or characters may be added to the
- Fonts, only if the fonts are renamed to names not containing either
- the words "Bitstream" or the word "Vera".
- 
- This License becomes null and void to the extent applicable to Fonts
- or Font Software that has been modified and is distributed under the
- "Bitstream Vera" names.
- 
- The Font Software may be sold as part of a larger software package but
- no copy of one or more of the Font Software typefaces may be sold by
- itself.
- 
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
- BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
- OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
- SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
- 
- Except as contained in this notice, the names of Gnome, the Gnome
- Foundation, and Bitstream Inc., shall not be used in advertising or
- otherwise to promote the sale, use or other dealings in this Font
- Software without prior written authorization from the Gnome Foundation
- or Bitstream Inc., respectively. For further information, contact:
- fonts at gnome dot org.
- 
- Copyright FAQ
- 
-   1. I don''t understand the resale restriction... What gives?
- 
-     Bitstream is giving away these fonts, but wishes to ensure its
-     competitors can''t just drop the fonts as is into a font sale system
-     and sell them as is. It seems fair that if Bitstream can''t make money
-     from the Bitstream Vera fonts, their competitors should not be able to
-     do so either. You can sell the fonts as part of any software package,
-     however.
- 
-   2. I want to package these fonts separately for distribution and
-     sale as part of a larger software package or system.  Can I do so?
- 
-     Yes. A RPM or Debian package is a "larger software package" to begin
-     with, and you aren''t selling them independently by themselves.
-     See 1. above.
- 
-   3. Are derivative works allowed?
-     Yes!!!!
- 
-   4. Can I change or add to the font(s)?
-     Yes, but you must change the name(s) of the font(s).
- 
-   5. Under what terms are derivative works allowed?
- 
-     You must change the name(s) of the fonts. This is to ensure the
-     quality of the fonts, both to protect Bitstream and Gnome. We want to
-     ensure that if an application has opened a font specifically of these
-     names, it gets what it expects (though of course, using fontconfig,
-     substitutions could still could have occurred during font
-     opening). You must include the Bitstream copyright. Additional
-     copyrights can be added, as per copyright law. Happy Font Hacking!!!!
- 
-   6. If I have improvements for Bitstream Vera, is it possible they might get
-     adopted in future versions?
- 
-     Yes. The contract between the Gnome Foundation and Bitstream has
-     provisions for working with Bitstream to ensure quality additions to
-     the Bitstream Vera font family. Please contact us if you have such
-     additions. Note, that in general, we will want such additions for the
-     entire family, not just a single font, and that you''ll have to keep
-     both Gnome and Jim Lyles, Vera''s designer, happy!!!! To make sense to add
-     glyphs to the font, they must be stylistically in keeping with Vera''s
-     design. Vera cannot become a "ransom note" font. Jim Lyles will be
-     providing a document describing the design elements used in Vera, as a
-     guide and aid for people interested in contributing to Vera.
- 
-   7. I want to sell a software package that uses these fonts: Can I do so?
- 
-     Sure. Bundle the fonts with your software and sell your software
-     with the fonts. That is the intent of the copyright.
- 
-   8. If applications have built the names "Bitstream Vera" into them,
-     can I override this somehow to use fonts of my choosing?
- 
-     This depends on exact details of the software. Most open source
-     systems and software (e.g., Gnome, KDE, etc.) are now converting to
-     use fontconfig (see www.fontconfig.org) to handle font configuration,
-     selection and substitution; it has provisions for overriding font
-     names and subsituting alternatives. An example is provided by the
-     supplied local.conf file, which chooses the family Bitstream Vera for
-     "sans", "serif" and "monospace".  Other software (e.g., the XFree86
-     core server) has other mechanisms for font substitution.
- 
- ***
- 
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Bold''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Bold Oblique''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Mono''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Mono Bold''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Mono Bold Oblique''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Mono Oblique''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Sans Oblique''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Serif''.
- TTFontDescription descriptionFullNamed: ''Bitstream Vera Serif Bold''.!!' readStream nextChunkText)
- 			key: #fontLicenseBitstreamVera;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>licenseChange (in category 'pages') -----
- licenseChange
- 
- 	^(HelpTopic
- 		title: 'License Details and History'
- 		readOnlyContents: 
- 'On 23 September 1996, Apple Computer Inc. released Squeak V1.1 under the "Squeak License" (SqL).
- 
- On May 8, 2006 Apple agreed to relicense original Squeak V1.1 under the Apple Public Source License.
- 
- On October 12, 2006 Apple granted permission to relicense under Apache license 2.0.
- 
- In 2006, VPRI began to collect "Distribution Agreements" for all contributors to Squeak since V1.1 up to V3.8, asking them to relicense their contributions, which were originally licensed under SqL, to the MIT license. This was a great effort on behalf of many and VPRI has 100s of signed documents agreeing to this.
- 
- Do you want to contribute source to Squeak? All new contributions since 4.0 must be under the MIT license. When you make your code available, please state explicitly in some form such as the description on a web site or email announcement that your contribution is under the MIT license. (It doesn''t have to be exclusive; you can release it under difference licenses at the same time.)
- 
- Have you contributed source to Squeak? If you believe you have, but have not sent in an agreement to allow your submission(s) to be licensed under the MIT license then please see http://netjam.org/squeak/contributors. There you can find a list of known contributors and a PDF of the agreement with instructions. The snail mail address is found in the agreement PDF file.
- 
- Also there are a few people for which we are lacking full contact information. If you think you can help please also visit the link above and see if you can identify any of the unknown developer initials or any of the developers for whom we do not have a current email address.!!
- ]style[(603 43 344 38 141 37 433),b,,b,,Rhttp://netjam.org/squeak/contributors;,!!' readStream nextChunkText)
- 			key: #licenseChange!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>noteOnResources (in category 'pages') -----
- noteOnResources
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakLicenseHelp edit: #noteOnResources"
- 	<generated>
- 	^(HelpTopic
- 		title: 'Note on Resources'
- 		contents: 
- 'Squeak provides several resources (such as icons or sounds) that may come with an extra license if the MIT license does not cover the particular artistic work. If such resources are materialized in source code (such as MenuIcons class >> #fugueBroomIconContents), we note the particular license in method comments.
- 
- In general, we are eager to only use extra licenses that share the spirit of the MIT license. Creative Commons falls in this category. Visit https://creativecommons.org/share-your-work/ to learn more.!!
- ]style[(82 13 8 11 105 42 37 15 97 16 31 44 15),i,,b,,Rcode:// MenuIcons class >> #fugueBroomIconContents;,,i,,b,,Rhttps://creativecommons.org/share-your-work/;,!!' readStream nextChunkText)
- 			key: #noteOnResources;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>officialLicense (in category 'pages') -----
- officialLicense
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakLicenseHelp edit: #officialLicense"
- 	^ (HelpTopic
- 		title: 'Official License'
- 		contents: (MessageSend receiver: Smalltalk selector: #license))
- 		key: #officialLicense!

Item was removed:
- ----- Method: SqueakLicenseHelp class>>pages (in category 'accessing') -----
- pages
- 	^#( officialLicense licenseChange fontLicenseBitstreamVera noteOnResources)!

Item was removed:
- SqueakToolsHelp subclass: #SqueakMessageCategoriesHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>addAllCategoriesTopicTo: (in category 'private') -----
- addAllCategoriesTopicTo: newTopic
- 	
- 	| mapping allCategoriesTopic |
- 	allCategoriesTopic := HelpTopic 
- 		title: 'All message categories'
- 		icon: (HelpIcons iconNamed: #bookIcon)
- 		contents: self allCategoriesExplanation.
- 	
- 	mapping := IdentityDictionary new.
- 	SystemNavigation allBehaviorsDo: [:behavior |
- 		((behavior organization categories 
- 			reject: [:category | category first = $*])
- 			collect: [:category | (category findTokens: '-') first withBlanksTrimmed])
- 			do: [:category |
- 				(mapping at: category asLowercase asSymbol ifAbsentPut: [Set new]) add: behavior]].
- 	
- 	mapping keys sorted do: [:categoryName |
- 		allCategoriesTopic addSubtopic: (HelpTopic
- 			title: categoryName
- 			icon: (HelpIcons iconNamed: #pageIcon)
- 			contents: (((mapping at: categoryName) collect: [:c | c printString]) sorted joinSeparatedBy: ',' , String crlf))]. 
- 		
- 	^ newTopic addSubtopic: allCategoriesTopic!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>addCategoryTopicsTo: (in category 'private') -----
- addCategoryTopicsTo: aTopic
- 
- 	self selectors sorted do: [:selector | | helpContents examples |
- 		examples := (self new perform: selector).
- 		examples := examples isCollection ifTrue: [examples] ifFalse: [#()].
- 		
- 		helpContents := (self commentsAt: selector) first asText,
- 			String crlf asText , String crlf asText ,
- 			('Examples:' asText allBold; yourself) , 
- 			String crlf asText , 
- 			((examples collect: [:m | m reference]) joinSeparatedBy: ', ' , String crlf) asText.
- 		
- 		aTopic addSubtopic: ((HelpTopic 
- 								title: (self organization categoryOfElement: selector)
- 								icon: (HelpIcons iconNamed: #pageIcon)
- 								contents: helpContents)
- 								priority: 999;
- 								yourself)]!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>allCategoriesExplanation (in category 'contents') -----
- allCategoriesExplanation
- 
- 	^ 'This chapter contains a list of all message categories used in the system and in which classes they are used.'!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>asHelpTopic (in category 'converting') -----
- asHelpTopic
- 
- 	| newTopic |
- 	newTopic := HelpTopic 
- 		title: 'Message categories' 
- 		icon: (HelpIcons iconNamed: #bookIcon)
- 		contents: self mainTopicExplanation.
- 		
- 	self 
- 		addCategoryTopicsTo: newTopic;
- 		addAllCategoriesTopicTo: newTopic.	
- 		
- 	^ newTopic
- 		!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>mainTopicExplanation (in category 'contents') -----
- mainTopicExplanation
- 
- 	^ 'Message categories are useful for readers of a class to distinguish between different aspects of the class. Depending on the category users might have a different perspective on the class they look at. Selecting the right message category can be difficult as there might be several categories the method would fit into. The following guidelines might help with judging where to put methods:
- 	
- 1. Look for matching method categories in common classes such as Collections, Magnitude, or Object. Depending on the domain of your method this might also include common, but specialized, classes such as Form, Morph, AbstractSound and so on.
- 
- 2. If the category you would like to use is already very full or does not describe the concern of your method very well, consider using subcategories. You can specify one by putting a dash between the category name and the subcategory name, e.g. ''menu - layout menu''.
- 
- 3. Method categories are often used to denote whether a method should only be called by an object on itself. Such methods are often sorted into the ''private'' category. This immediately indicates which methods should rather not be used by other objects. At the same time the ''private'' category is very generic and does not help readers very much. Thus, consider using a subcategory which describes the concern of the method.
- 
- This chapter further contains a more detailed description of some of the message categories and a separate subchapter listing all categories used in the system. The detailed descriptions all contain a list of example methods and, where appropriate, specify the meaning of the category in different contexts (e.g. packages or particular class hierarchies).'!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp class>>priority (in category 'accessing') -----
- priority
- 
- 	^ 9999 "at the bottom"!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>arithmetic (in category 'arithmetic') -----
- arithmetic
- "This category contains methods implementing all kinds of arithmetic operations. Note that the content of the method and not the selector is relevant for whether a method belongs to that category. A method with the selector #+ that implements the composition of two things which is not the arithmetic addition does not belong here.  (For example TraitComposition>>#+)"
- 
- 	^ {Fraction>>#+ . Point>>#//}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>comparing (in category 'comparing') -----
- comparing
- "This category contains all methods for comparing objects. The main selectors are #= and #hash which should both be implemented consistently. Subclasses such as Magnitude add specialized selectors such as #<=."
- 
- 	^ { Object>>#= . String>>#charactersExactlyMatching: }!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>converting (in category 'converting') -----
- converting
- "This category contains methods for converting objects to other representations. 
- Note: For converting to string representations for displaying or storing see the 'printing' category."
- 
- 	^ {Object>>#asString . PositionableStream>>#asBinaryOrTextStream}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>copying (in category 'copying') -----
- copying
- "This category contains methods for different ways to copy an object. The standard method is #copy which is mapped to specialized methods."
- 
- 	^ {Object>>#postCopy . String>>#copyReplaceTokens:with: }!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>debugging (in category 'debugging') -----
- debugging
- "The debugging category contains all kinds of methods related to debugging."
- 
- 	^ {Object>>#inspectOnce . Object>>#haltIf:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>displaying (in category 'displaying') -----
- displaying
- "In the context of the ST80 package this category contains methods for displaying an object on screen. This is related to the drawing category in Morphic."
- 
- 	^ {FormView>>#displayOn: . Circle>>#displayOn:at:clippingBox:rule:fillColor:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>drawing (in category 'drawing') -----
- drawing
- "In the context of the Morphic package, the drawing category contains the methods for displaying a Morph on the screen. The main entry points are the 'drawOn:' methods. This category is related to the displaying category in the ST80 package."
- 
- 	^ {EllipseMorph>>#drawOn: . HandMorph>>#fullDrawOn:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>enumerating (in category 'enumerating') -----
- enumerating
- "This category is mostly found with classes representing some form of collection. The methods in this category allow all sorts of iteration and enumeration on the receiver."
- 
- 	^ {Collection>>#select: . HelpBrowser>>#do:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>eventHandling (in category 'event handling') -----
- eventHandling
- "In the context of the Morphic package, this category defines methods for processing events and methods Morph classes can override to handle particular events."
- 
- 	^ {Morph>>#hasFocus . ScrollPane>>#handlesKeyboard:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>examples (in category 'examples') -----
- examples
- "This category is mostly found on meta classes. The methods in this category can be called to create an example instance for the class."
- 
- 	^ {SystemProgressMorph class>>#exampleLabelOnly . Form class>>#exampleShrink}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>failures (in category 'failures') -----
- failures
- "This category is most often used with TestCase classes. It contains any methods denoting failures for this TestCase"
- 
- 	^ {"There is no stable example method for this"}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>initializeRelease (in category 'initialize-release') -----
- initializeRelease
- "This category contains methods related to initializing and, seldomly, releasing objects. The most common method in here is the #initialize method and any related methods. Further, this category also sometimes includes methods used by clients of the object to set an initial state after the object was initialized by #initialize."
- 
- 	^ {WeakRegistry>>#initialize . RxMatcher>>#initialize:ignoreCase:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>instanceCreation (in category 'instance creation') -----
- instanceCreation
- "This category contains methods for creating instances. Most often these are implemented for the class object."
- 
- 	^ {TestCase class>>#selector: . Symbol class>>#empty}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>layout (in category 'layout') -----
- layout
- "In the context of the Morphic package, the layout category contain methods for setting layout policies or layout properties. In subcategories it futher contains methods for controling context menus for setting the layout parameters."
- 
- 	^ {Morph>>#fullBounds . StringMorph>>#fitContents}!

Item was removed:
- ----- 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."
- 
- 	^ {Inspector>>#mainFieldListMenu: . SystemWindow>>#makeClosable}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>printing (in category 'printing') -----
- printing
- "This category contains methods for creating a textual representation of an object, may it be for displaying (#printString) or storing (#storeOn:)."
- 
- 	^ {Character>>#printOn: . Object>>#storeString}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>private (in category 'private') -----
- private
- "This category contains methods which are only (and should only be) used by the containing class and its relatives up and down the class hierarchy. Often these methods expect a particular object state and are only useful in a particular control flow. One common reason for that is that the method is only a substep of a more elaborate process."
- 
- 	^ {Monitor>>#privateCleanup . Collection>>#emptyCheck}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>removing (in category 'removing') -----
- removing
- "The 'removing' category is mostly used with objects representing collections of some kind and include methods for "
- 
- 	^ {MethodDictionary>>#removeAll . ProcessorScheduler>>#remove:ifAbsent:}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>running (in category 'running') -----
- running
- "In the context of a TestCase class, the 'running' category most often contains the #setUp and #tearDown methods."
- 
- 	^ {ClipboardTest>>#setUp . PreferencesTest>>#tearDown}!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>testing (in category 'testing') -----
- testing
- "The testing category contains predicate methods which typically answer a Boolean value."
- 
- 	^ {SMPackage>>#isAvailable . TTFontFileHandle>>#hasChildren}
- 	!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelp>>tests (in category 'tests') -----
- tests
- "The tests category contains test methods in a TestCase class."
- 
- 	^ {MCAncestryTest>>#testLinearPath . DurationTest>>#testNegated}
- 	
- 	!

Item was removed:
- TestCase subclass: #SqueakMessageCategoriesHelpTest
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakMessageCategoriesHelpTest>>testCategoriesAreConsistent (in category 'tests') -----
- testCategoriesAreConsistent
- 
- 	| helpInstance |
- 	helpInstance := SqueakMessageCategoriesHelp new.
- 	SqueakMessageCategoriesHelp selectors do: [:selector | |correctCategory|
- 		correctCategory := SqueakMessageCategoriesHelp organization categoryOfElement: selector.
- 		(helpInstance perform: selector) do: [:method |
- 			self 
- 				assert: ((method methodClass organization categoryOfElement: method selector) beginsWith: correctCategory)
- 				description: 'Expected category ' , correctCategory]]!

Item was removed:
- SqueakHelp subclass: #SqueakProjectHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakProjectHelp class>>bookName (in category 'accessing') -----
- bookName 
- 	^'The Project'!

Item was removed:
- ----- 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: #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''.
- 
- 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.
- 
- 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).
- !!
- ]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!

Item was removed:
- ----- Method: SqueakProjectHelp class>>pages (in category 'accessing') -----
- pages
- 	^#(extendingTheSystem squeakResourcesOnline squeakUserInterface workingWithSqueak)!

Item was removed:
- ----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in category 'pages') -----
- squeakResourcesOnline
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakProjectHelp edit: #squeakResourcesOnline"
- 	^(HelpTopic
- 		title: 'Squeak Resources Online'
- 		contents: 
- 'Web sites
- 
- Main site of Squeak
- 	http://www.squeak.org
- Weekly Squeak
- 	http://news.squeak.org
- Downloads for many versions
- 	http://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.
- 	http://lists.squeakfoundation.org/mailman/listinfo/beginners
- 	http://forum.world.st/Squeak-Beginners-f107673.html
- 
- squeak-dev
- 	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.
- 	http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
- 	http://forum.world.st/Squeak-Dev-f45488.html
- 
- 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. :-)
- 	http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
- 	http://forum.world.st/Smalltalk-VM-Beginners-f3068605.html
- 
- vm-dev
- 	This is the place where discussions about the OpenSmalltalk virtual machine happen. Join that list the be a part of the community.
- 	http://lists.squeakfoundation.org/mailman/listinfo/vm-dev
- 	http://forum.world.st/Squeak-VM-f104410.html
- 
- Books
- 
- Squeak By Example
- 	A beginners textbook, based on Squeak 3.9 and so a little out of date in some visual aspects and some details. Still a valuable resource. The content is maintained in github at
- https://github.com/SquareBracketAssociates/SqueakByExample-english
- but a prepared and ready to read pdf version can be found at
- https://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac
- 
- Other books
- 	Many books about Squeak and Smalltalk in general have been made available and are hosted at
- http://stephane.ducasse.free.fr/FreeBooks.html!!
- ]style[(11 19 2 21 1 15 22 1 27 2 31 32 49 2 13 1 1 11 135 2 60 2 51 2 10 2 132 61 2 44 2 14 145 63 2 58 2 6 134 57 2 44 2 5 2 17 2 177 66 62 87 2 11 94 46)b,I0i,I0,Rhttp://www.squeak.org;,I0,I0i,Rhttp://news.squeak.org;,I0,I0i,I0,Rhttp://www.squeak.org/downloads;,I0,Rhttps://github.com/OpenSmalltalk/opensmalltalk-vm;,I0,I0b,I0,,i,,b,Rhttp://lists.squeakfoundation.org/mailman/listinfo/beginners;,,Rhttp://forum.world.st/Squeak-Beginners-f107673.html;,,i,b,,Rhttp://lists.squeakfoundation.org/mailman/listinfo/squeak-dev;,,Rhttp://forum.world.st/Squeak-Dev-f45488.html;,,i,,Rhttp://lists.squeakfoundation.org/mailman/listinfo/vm-beginners;,,Rhttp://forum.world.st/Smalltalk-VM-Beginners-f3068605.html;,,i,,Rhttp://lists.squeakfoundation.org/mailman/listinfo/vm-dev;,,Rhttp://forum.world.st/Squeak-VM-f104410.html;,,b,,i,b,,Rhttps://github.com/SquareBracketAssociates/SqueakByExample-english;I1,,Rhttps://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac;I1,,i,,Rht
 tp://stephane.ducasse.free.fr/FreeBooks.html;I1!!' readStream nextChunkText)
- 			key: #squeakResourcesOnline;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- 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 ;-)
- 
- 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)
- 			key: #squeakUserInterface;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- 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".
- - 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.
- 
- 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.
- 
- 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/1287;,,b,!!' readStream nextChunkText)
- 			key: #workingWithSqueak;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- SqueakProjectHelp subclass: #SqueakReleaseNotes
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakReleaseNotes class>>asHelpTopic (in category 'accessing') -----
- asHelpTopic
- 
- 	^ DirectoryBasedHelpTopic new
- 		directoryEntry: (FileDirectory default entryAt: 'release-notes' ifAbsent: []);
- 		sortBlock: [:t1 :t2 | t1 title >= t2 title];
- 		title: self bookName!

Item was removed:
- ----- Method: SqueakReleaseNotes class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Release Notes'!

Item was removed:
- SqueakToolsHelp subclass: #SqueakToolsDebuggerHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>bookName (in category 'accessing') -----
- bookName
- 	^'Debugger'!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>openingTheDebugger (in category 'pages') -----
- openingTheDebugger
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsDebuggerHelp edit: #openingTheDebugger"
- 	^HelpTopic 
- 		title: 'Open a Debugger.'
- 		contents: 'A debugger window is opened in response to an unhandled exception condition. Evaluating the expression ''self halt'' in a workspace or as an expression in a method will cause a debugger window to be opened. The debugger provides direct interactive access to the interrupted process.
- 
- The debugger permits its interrupted process to be inspected and modified. Source code and variables may be modified interactively, and the process can be stepped through its execution in various ways.'!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>pages (in category 'accessing') -----
- pages
- 	^# (whatIsADebugger openingTheDebugger usingTheDebugger)!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>priority (in category 'pages') -----
- priority
- 
- 	^ 30!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>showForm: (in category 'pages') -----
- showForm: aSymbol
- 	| form contents |
- 	form := ScriptingSystem formAtKey: aSymbol.
- 	contents :=  (String with: Character cr) asText, 
- 					(Text string: ' '
- 					attribute: (TextFontReference toFont: 
- 						(FormSetFont new
- 							fromFormArray: (Array with: form)
- 							asciiStart: Character space asInteger
- 							ascent: form height))),
- 						(String with: Character cr) asText.
- 	^contents!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>usingTheDebugger (in category 'pages') -----
- usingTheDebugger
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsDebuggerHelp edit: #usingTheDebugger"
- 	^HelpTopic 
- 		title: 'Debugging Loops.'
- 		contents: 'There are a few ways to get out of a loop.  The best way is to just let the loop run.
- 
- To do that select the space on your code (while in the Debugger) you want to jump to, right click and select: ''run to here.''
- 
- ' asText, 
- (self showForm: #Debugger1),
- '
- 
- That will take you to the place you clicked on in your code.
- 
- There is another trick, loops usually have an index. This is Smalltalk after all.  In the case above we just selected this code and selected ''Debug it''
- 
- 1 to: 100 do: [:i | Transcript show: i asString].
- Transcript show: ''done''
- 
- While in the outer content evaluating the loop, select i change the value to 100 hit accept and ''bobs your uncle'' the loop is done. 
- 
- Ok so a bit of a hack but this can be used it to skip over some processing, and since you are debugging and know what you are doing it should be fine.
- 
- ' asText,
- (self showForm: #Debugger2),
- '
- Proceed is just continue and stop debugging.
- 
- Restart will stop debugging at the selected method and restart that method from the beginning.
- 
- Into goes into the execution of the next method and shows you what it does.
- 
- Over executes the next message and moves over it to the next message.
- 
- Through steps you through a block of code, so if you are about to execute a block, this steps you through that block
- 
- Full Stack increases the number of levels you see in the upper panel.  That normally shows you a subset of the execution stack.  Full stack will show you the rest of the stack that called this method.
- 
- Where is useful if you click around a method during debugging. It will highlight the code at its execution point.  You can also just select the stack method again to do the same thing.
- 
- Tally is supposed to tally selected code, but may not be reliable within the debugger. If you want to tally something do it outside a debugger.' asText!

Item was removed:
- ----- Method: SqueakToolsDebuggerHelp class>>whatIsADebugger (in category 'pages') -----
- whatIsADebugger
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsDebuggerHelp edit: #whatIsADebugger"
- 	^HelpTopic 
- 		title: 'What is a Debugger.'
- 		contents: 'A debugger represents the machine state at the time of an interrupted process. It also represent a query path into the state of the process.
- 
- The debugger is typically viewed through a window that views the stack of suspended contexts, the code for, and execution point in, the currently selected message, and inspectors on both the receiver of the currently selected message, and the variables in the current context.'!

Item was removed:
- SqueakHelp subclass: #SqueakToolsHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsHelp class>>basicDevelopmentTools (in category 'pages') -----
- basicDevelopmentTools
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsHelp edit: #basicDevelopmentTools"
- 	^(HelpTopic
- 		title: 'Basic Development Tools'
- 		contents: 
- 'Smalltalk environments have some of the best user interfaces for programmers ever devised. Those who have programmed in Lisp under Emacs have some idea, but Smalltalk is even better.
- 		
- You should learn these basic tools thoroughly:
- - Workspace
- - Transcript (do it: Transcript showln: ''Hello Squeak!!!!'')
- - Browser
- - Inspector
- - File List
- - Change Sorter (and also the Dual Change Sorter)
- - Debugger
- - Method Finder	
- !!
- ]style[(235 9 3 10 9 34 4 7 3 9 3 9 3 13 15 18 4 8 3 14 1),Rcode://Workspace open;,,Rcode://Transcript open;,,Rcode://Transcript showln: ''Hello Squeak!!!!'';,,Rcode://Browser open;,,Rcode://#(S Q U E A K) inspect;,,Rcode://FileList open;,,Rcode://ChangeSorter new open;,,Rcode://DualChangeSorter new open;,,Rcode://7/0;,,Rcode://SelectorBrowser new open;,!!' readStream nextChunkText)
- 			key: #basicDevelopmentTools!

Item was removed:
- ----- Method: SqueakToolsHelp class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Tools'!

Item was removed:
- ----- Method: SqueakToolsHelp class>>fontSizeSummary (in category 'pages') -----
- fontSizeSummary
- 	^HelpTopic 
- 		title: 'Font Size Summary'
- 		readOnlyContents: TextStyle fontSizeSummaryContents!

Item was removed:
- ----- Method: SqueakToolsHelp class>>pages (in category 'accessing') -----
- pages
- 	^#(basicDevelopmentTools fontSizeSummary)!

Item was removed:
- SqueakToolsHelp subclass: #SqueakToolsPreferenceBrowserHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>bookName (in category 'accessing') -----
- bookName
- 	<generated>
- 	^'Preference Browser'!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>defaultPage (in category 'accessing') -----
- defaultPage
- 
- 	^ #preferenceBrowser!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>localAndGlobal (in category 'pages') -----
- localAndGlobal
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsPreferenceBrowserHelp edit: #localAndGlobal"
- 	^(HelpTopic
- 		title: 'Local and global preferences'
- 		contents: 
- 'Some preferences can be local instead of global. When a preference is set as global, its value will apply to whatever project you are in. A local preference will only be valid in the project that you set it in.!!
- ]style[(24 5 181),b,!!' readStream nextChunkText)
- 			key: #localAndGlobal;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>pages (in category 'accessing') -----
- pages
- 	<generated>
- 	^ #(preferenceBrowser localAndGlobal savingAndLoading)!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>preferenceBrowser (in category 'pages') -----
- preferenceBrowser
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsPreferenceBrowserHelp edit: #preferenceBrowser"
- 	^(HelpTopic
- 		title: 'What is the Preference Browser'
- 		contents: 
- 'Many aspects of the system are governed by the settings of various preferences. The Preference Browser lists all of them and allows you to adjust them.
- 
- Click on any of the categories shown in the list on the left to see all the preferences in that category. Alternatively, type into the search box at the top of the window and all preferences matching whatever you typed will appear in the category "search results".
- 
- To find out more about any a particular preference, just select it and its help text will appear. The "more" button at the end of the help text opens up a menu with some more expert-oriented options.!!
- ]style[(84 18 186 10 121 16 183),Rcode://PreferenceBrowser open;b,,b,,b,!!' readStream nextChunkText)
- 			key: #preferenceBrowser;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsPreferenceBrowserHelp class>>savingAndLoading (in category 'pages') -----
- savingAndLoading
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsPreferenceBrowserHelp edit: #savingAndLoading"
- 	^(HelpTopic
- 		title: 'Saving and loading'
- 		contents: 
- 'The Save button allows you to quickly save your current settings in your image so they can be restored later using the Load button. This is useful to make some experiments and revert them later.
- 
- To carry your settings to another Squeak image, you might want to use the Save to disk and Load from disk buttons. The former option will store all your settings in a file named ''my.prefs'' in your Squeak''s current directory.!!
- ]style[(4 4 111 4 147 12 5 14 92 26 1),b,,b,,b,,b,,Rcode://FileList open;,!!' readStream nextChunkText)
- 			key: #savingAndLoading;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- SqueakToolsHelp subclass: #SqueakToolsTranscriptHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsTranscriptHelp class>>bookName (in category 'accessing') -----
- bookName
- 	^'Transcript'!

Item was removed:
- ----- Method: SqueakToolsTranscriptHelp class>>pages (in category 'accessing') -----
- pages
- 	^# (transcript)!

Item was removed:
- ----- Method: SqueakToolsTranscriptHelp class>>priority (in category 'pages') -----
- priority
- 
- 	^ 20!

Item was removed:
- ----- Method: SqueakToolsTranscriptHelp class>>transcript (in category 'pages') -----
- transcript
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsTranscriptHelp edit: #transcript"
- 	<generated>
- 	^(HelpTopic
- 		title: 'The Transcript window'
- 		contents: 
- 'The Transcript window is often used for logging or printing results from text only code. 
- To open the Transcript use TheWorldMenu and choose ''open...''. Then choose ''Transcript''.
- You can also type
- 
- Transcript open
- 
- in a Workspace and doIt.
- 
- To write anything into the Transcript, send it #show: or #showln::
- 
- Transcript showln: ''Hello world!!!!''.
- Transcript show: '' :-)''.!!
- ]style[(197 16 6 9 59 6 4 8 3 59),I1,,Rcode://Workspace open;,,LTranscriptStream show:;,,LTranscriptStream showln:;,,I1!!' readStream nextChunkText)
- 			key: #transcript;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- SqueakToolsHelp subclass: #SqueakToolsVersionsBrowserHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>bookName (in category 'accessing') -----
- bookName
- 	<generated>
- 	^'Versions Browser'!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>comparingVersions (in category 'pages') -----
- comparingVersions
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsVersionsBrowserHelp edit: #comparingVersions"
- 	^(HelpTopic
- 		title: 'Comparing versions'
- 		contents: 
- 'The code pane shows the source for the selected version. If "diffing" is in effect, then differences betwen the selected version and the version before it are pointed out in the pane. Turn diffing on and off by choosing "toggle diffing" from the list pane menu, or hitting the "diffs" button, or hitting cmd-D when the cursor is over the list pane.
- 
- To get a comparison between the selected version and the current version, choose "compare to current" from the list pane menu or hit the "compare to current" button. (This is meaningless if the current version is selected, and is unnecessary if you''''re interested in diffs from between the current version and the next-most-recent version, since the standard in-pane "diff" feature will give you that.)
- 
- You can also compare the selected version with any other version using the "compare to version..." menu choice.!!
- ]style[(13 337 19 496)b,,b,!!' readStream nextChunkText)
- 			key: #comparingVersions;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>defaultPage (in category 'accessing') -----
- defaultPage
- 
- 	^ #versionsBrowser!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>notes (in category 'pages') -----
- notes
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsVersionsBrowserHelp edit: #notes"
- 	^(HelpTopic
- 		title: 'Notes'
- 		contents: 
- 'If further versions of the method in question have been submitted elsewhere since you launched a particular Versions Browser, it will still stay nicely up-to-date if you''re in Morphic and have asked that smart updating be maintained; if you''re in mvc or in morphic but with smart-updating turned off, a versions browser is only brought up to date when you activate its window (and when you issue "revert" from within it, of course,) and you can also use the "update list" command to make certain the versions list is up to date.
- 
- The annotation pane in versions browsers shows information about the current version of the method in the image, not about the selected version.!!
- ]style[(530 19 50 7 68),b,,i,!!' readStream nextChunkText)
- 			key: #notes;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>pages (in category 'accessing') -----
- pages
- 	<generated>
- 	^ #(versionsBrowser comparingVersions revertVersion privacyFeatures notes)!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>privacyFeatures (in category 'pages') -----
- privacyFeatures
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsVersionsBrowserHelp edit: #privacyFeatures"
- 	^(HelpTopic
- 		title: 'Privacy features'
- 		contents: 
- 'To have the selected method deleted from the current change set permanently, hit the "remove from changes" button, or choose the corresponding command in the list pane menu. This is useful if you''ve put debugging code into a method, and now want to strip it out and cleanse your current change set of all memory of the excursion.!!
- ]style[(35 294)b,!!' readStream nextChunkText)
- 			key: #privacyFeatures;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>revertVersion (in category 'pages') -----
- revertVersion
- 	<generated>
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsVersionsBrowserHelp edit: #revertVersion"
- 	^(HelpTopic
- 		title: 'Reverting versions'
- 		contents: 
- 'To revert to an earlier version, select it (in the list pane) and then do any of the following:
- * Choose "revert to this version" from the list pane menu;
- * Hit the "revert" button;
- * Type ENTER in the code pane;
- * Type cmd-s (alt-s) in the code pane.!!
- ]style[(32 64 155)b,,I1!!' readStream nextChunkText)
- 			key: #revertVersion;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakToolsVersionsBrowserHelp class>>versionsBrowser (in category 'pages') -----
- versionsBrowser
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsVersionsBrowserHelp edit: #versionsBrowser"
- 	<generated>
- 	^(HelpTopic
- 		title: 'What is a Versions Browser'
- 		contents: 
- 'The VersionsBrowser is a window that shows all implementations of a method or a class comment that have been ever installed in past or present. Inter alia, it allows you to compare certain versions or revert earlier versions.
- 
- Each entry in the list pane represents a version of the source code for the same method; the topmost entry is the current version, the next entry is the next most recent, etc.!!
- ]style[(4 15 383)b,Rcode:// VersionsBrowser browseMethod: VersionsBrowser >> #compareToOtherVersion;b,!!' readStream nextChunkText)
- 			key: #versionsBrowser;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- SqueakToolsHelp subclass: #SqueakToolsWorkspaceHelp
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Workspace'!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>openWorkspace (in category 'pages') -----
- openWorkspace
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakToolsWorkspaceHelp edit: #openWorkspace"
- 	^(HelpTopic
- 		title: 'Open a Workspace'
- 		contents: 
- 'You can open a Workspace window in any of the following ways:
- 		
- - Keyboard Shortcut: while pointing at an empty part of the Squeak window, press alt-k (in Windows) or cmd-k (on a Mac) or ctrl-k (in Linux)
- - World Menu: select "Workspace"
- - Tools Flap: click on the Tools Flap. When it comes out, drag the Workspace icon out.
- - Doit: select inside the following quote and doit: "Workspace open"!!
- ]style[(15 9 184 10 176),Rcode://Workspace open;,,Rcode://ActiveWorld openWorldMenu;,!!' readStream nextChunkText)
- 			key: #openWorkspace!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>pages (in category 'accessing') -----
- pages
- 	^#(workspace openWorkspace saveWorkspace)!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>priority (in category 'pages') -----
- priority
- 
- 	^ 10!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>saveWorkspace (in category 'pages') -----
- saveWorkspace
- 	^HelpTopic 
- 		title: 'Saving Workspace to a File'
- 		contents: 'You can save the text content of a Workspace to a file by choosing the workspace menu (from within the workspace), then ''more...'', then ''save contents to file...''.'!

Item was removed:
- ----- Method: SqueakToolsWorkspaceHelp class>>workspace (in category 'pages') -----
- workspace
- 	^HelpTopic 
- 		title: 'What is a Workspace'
- 		contents: 'A Workspace is a window used as a scratchpad area where fragments of Smalltalk code can be entered, stored, edited, and evaluated.'!

Item was removed:
- SqueakHelp subclass: #SqueakTutorials
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakTutorials class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Tutorials'!

Item was removed:
- ----- Method: SqueakTutorials class>>introduction (in category 'pages') -----
- introduction
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakTutorials edit: #introduction"
- 	^(HelpTopic
- 		title: 'Introduction'
- 		contents: 
- 'Here you will some short tutorials on how to use Squeak for daily tasks. Feel free to add your own.!!' readStream nextChunkText)
- 			key: #introduction;
- 			shouldStyle: false;
- 			yourself!

Item was removed:
- ----- Method: SqueakTutorials class>>pages (in category 'accessing') -----
- pages
- 	^#(introduction usefulExpressions)!

Item was removed:
- ----- Method: SqueakTutorials class>>usefulExpressions (in category 'pages') -----
- usefulExpressions
- 
- 	^ (HelpTopic
- 		title: 'Useful Expressions'
- 		readOnlyContents: Utilities standardWorkspaceContents)
- 		shouldStyle: true!

Item was removed:
- ----- Method: SqueakTutorials class>>usesCodeStyling (in category 'testing') -----
- usesCodeStyling
- 	"I want the help browser to use code based styling on my content"
- 	^true!

Item was removed:
- SqueakTutorials subclass: #SqueakTutorialsCommandKey
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakTutorialsCommandKey class>>bookName (in category 'accessing') -----
- bookName 
- 	^'Command Key Mappings'!

Item was removed:
- ----- 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
- (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!

Item was removed:
- ----- Method: SqueakTutorialsCommandKey class>>pages (in category 'accessing') -----
- pages
- 	^# (commandKeyMappings)!

Item was removed:
- ----- Method: SqueakTutorialsCommandKey class>>usesCodeStyling (in category 'testing') -----
- usesCodeStyling
- 	"I don't want the help browser to use code based styling on my content - I show a simep llist of key mappings which really don't need it"
- 	^false!

Item was removed:
- SqueakTutorials subclass: #SqueakTutorialsOnImage
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakTutorialsOnImage class>>bookName (in category 'accessing') -----
- bookName 
- 	^'The Squeak Image'!

Item was removed:
- ----- Method: SqueakTutorialsOnImage class>>pages (in category 'accessing') -----
- pages
- 	^# (theImage)!

Item was removed:
- ----- Method: SqueakTutorialsOnImage class>>theImage (in category 'pages') -----
- theImage
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakTutorialsOnImage edit: #theImage"
- 	^(HelpTopic
- 		title: 'Working with the Squeak Image'
- 		contents: 
- 'Working with the ecosystem of objects in a Smalltalk image.
- 		
- The basic tool for this is called an Inspector. Whenever you have an expression, like "3 + 4", you press cmd-i to "inspect it", which opens an inspector on the result. This works in any text area. Try for example inspecting "self" in a class browser, and you will inspect the underlying class object (which the browser shows a high-level view of).
- 
- In the Inspector you see the objects referenced by this object (via instance variables or indexed fields) in the left panel. Select any of them and choose "inspect" from the context menu (or press cmd-i again). This way you can inspect all the objects in the system.
- 
- A more modern tool than the Inspector (which was around 40 years ago already) is the Object Explorer. It presents you a tree view of an object and its "children", which again are the instance variables and indexed fields of the object. Open it with cmd-shift-i (or "explore" in the context menu).
- 
- You can also do the reverse. If you choose "objects pointing to this value" you get an inspector showing all the objects that directly point to this object. Similarly there is a "reverse explorer", which you can open by selecting "explore pointers".
- 
- There are two roots to all the objects in the system:
- 
-         Smalltalk specialObjectsArray
- 
- which basically holds everything the Virtual Machine needs to know about, and in turn almost every object in the whole image, and
- 
-         thisContext
- 
- which is the current execution context, holding onto temporary objects. When a garbage collection is performed, any object not reachable form either of these two roots is removed from memory.
- 
- An "interesting" global object to explore is
- 
-         Project current
- 
- which holds your current workspace, in particular
- 
-         Project current world
- 
- , the root of all morphs in the world. And of course
- 
-         Smalltalk
- 
- itself is the dictionary that holds all global objects, including all classes (unless they are defined in a non-global environment).
- 
- There is also a low-level way to enumerate all objects in memory. "self someObject" will return the very first object in memory (which happens to be the nil object), and "anObject nextObject" will return the next one:
- 
-         | object count |
-         count := 0.
-         object := self someObject.
-         [0 == object]
-                 whileFalse: [count := count + 1.
-                         object := object nextObject].
-         count
- 
- Interestingly, this also finds objects that are due to be garbage-collected. For example, if you accidentally closed a text window, there is a good chance its contents will still be in memory, and can be retrieved using an expression like
- 
-         ByteString allInstances last: 10
- 
- This makes use of the someInstance/nextInstance methods, which are similar to someObject/nextObject, but restricted to instances of one class only.
- !!
- ]style[(59 2838)bi,!!' readStream nextChunkText)
- 			key: #theImage;
- 			shouldStyle: false!

Item was removed:
- ----- Method: SqueakTutorialsOnImage class>>usesCodeStyling (in category 'testing') -----
- usesCodeStyling
- 	^ false!

Item was removed:
- SqueakTutorials subclass: #SqueakTutorialsOnXML
- 	instanceVariableNames: ''
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'Help-Squeak-Project'!

Item was removed:
- ----- Method: SqueakTutorialsOnXML class>>bookName (in category 'accessing') -----
- bookName 
- 	^'XML'!

Item was removed:
- ----- Method: SqueakTutorialsOnXML class>>dataRetrieval (in category 'pages') -----
- dataRetrieval
- 	"This method was automatically generated. Edit it using:"
- 	"SqueakTutorialsOnXML edit: #dataRetrieval"
- 	^HelpTopic 
- 		title: 'Retrieving XML data'
- 		contents: 
- 'Retrieving data from XML documents is simple and easy in Squeak Smalltalk. This tutorial demonstrates the fundamentals with a straightforward approach where code can be tested right away either here or in a Workspace window. The beauty of Squeak Smalltalk resides in the possibility to evaluate, inspect, print and debug code anywhere and this window is no different. 
- 
- This tutorial demonstrates how to...
- 
- 	* retrieve an XML document from the World Wide Web
- 	* instantiate an XML document class
- 	* inspect and understand the content of an XML document
- 	* retrieve and display values from specific XML tags
- 
- Retrieve an XML document from the World Wide Web
- 
- There are many manners to retrieve data from the World Wide Web in Squeak Smalltalk. HTTPClient is among them and allows to download files in all simplicity. Select the following code snippet and inspect it (press alt-i). An Inspect window will open with the document loaded in memory. The result is a MIMEDocument object.
- 
- 	HTTPClient httpGetDocument: ''http://source.squeak.org/trunk/feed.rss''.
- 
- TIP: Select HTTPClient and browse it (press alt-b) to open a System Browser window on its class. HTTPClient does not have instance methods but it has class methods. Click on class to see class methods.
- 
- Instantiate an XML Document
- 
- An instance of MIMEDocument will not allow to retrieve XML data in a comprehensive manner because it does not understand the nature of XML. For this reason, it is necessary to parse the content of MIMEDocument using XMLDOMParser. XMLDOMParser>>parseDocumentFrom: requires a stream as a parameter and ReadStream will be used for this purpose. The following code snippet instantiates an XMLDocument using the content of the downloaded file.
- 
- 	| doc |
- 	doc := HTTPClient httpGetDocument: ''http://source.squeak.org/trunk/feed.rss''.
- 	XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
- 
- Inspect and understand the content of an XML document
- 
- XML is a flexible document format and it is necessary to understand how each given XML file is structured in order to properly search, retrieve and manipulate data. Inspecting values is critical in a dynamic programming language and environment, such as Squeak Smalltalk. Select the previous code snippet and inspect it (press alt-i).
- 
- Unfortunately, the Inspect window does not reveal a lot about the XML structure of the downloaded file. Select the previous code snippet once again and explore it (press alt and the capital letter i). An Explorer window will open with a tree outline on the instance of XMLDocument.
- 
- The Inspect and Explorer windows tell a lot about an XMLDocument. The sections are instance variables and their values are displayed aside. In the Explorer window, unfold elementsAndContents. Unfold other sections as deemed necessary to understand the XML format and the data available.
- 
- The gibberish coding is about to become clear. Open a Browser window from the world menu and right click in the first pane, select find class (press alt-f) and type XMLDocument to search for its class, or select the class name and browse it (press alt-b). However, it is suggested to read more about XMLParser and XMLParserTest first. 
- 
- Retrieve and display values from specific XML tags
- 
- The downloaded XML file contains a list of items which are denoted by the tag name "item". The Explorer window revealed the content of interest is located at the array index 1 of the elementsAndContents, which can be accessed through XMLDocument>>root.
- 
- TIP: Some XML documents have additional components contained within its file, such as XMLPI (XML Processing Instructions). For this reason, the root may lead to this rather than the data which will be indexed at 2 or more. It is necessary to use XMLNodeWithElements>>elements, e.g. (xml elements at: 2), in order to access subsequent data.
- 
- The following code snippet will display items in a Transcript window. Open a Transcript window using the world menu before selecting and executing the code. Select the code snippet and execute it (press alt-d).
- 
- 	| doc xml |
- 	doc := HTTPClient httpGetDocument: ''http://source.squeak.org/trunk/feed.rss''.
- 	xml := XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
- 	xml root tagsNamed: #item do: [:e |
- 		Transcript show: (e asString); cr.
- 		].
- 
- An XML item looks like this:
- 
- 	<item>
- 	<title>HelpSystem-Core-tbn.46.mcz</title>
- 	<link>http://source.squeak.org/trunk.html</link>
- 	<description>throw out pharo specific stuff since we are now integrated in squeak (and pharo too where squeak specific stuff was removed)</description>
- 	<pubDate>Sun, 02 May 2010 20:23:49 +0000</pubDate>
- 	<author>Torsten Bergmann <Torsten.Bergmann at astares.de></author>
- 	<category>The Trunk</category>
- 	<enclosure length="27288" type="application/x-monticello" url="http://source.squeak.org/trunk/HelpSystem-Core-tbn.46.mcz"/> 
- 	<guid isPermaLink="false"/> </item>
- 
- The following code snippet uses information learned, retrieves each comment and displays them in a Transcript window. Notice an author can have a nil value and is handled accordingly.
- 
- 	| doc xml |
- 	doc := HTTPClient httpGetDocument: ''http://source.squeak.org/trunk/feed.rss''.
- 	xml := XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).
- 	xml root tagsNamed: #item do: [:e |
- 		Transcript 
- 			show: ''Date: '', ((e firstTagNamed: #pubDate) contentString); cr;
- 			show: ''Title: '', ((e firstTagNamed: #title) contentString); cr;
- 			show: ''Author: '', 
- 				(((e firstTagNamed: #author) notNil)
- 					ifTrue: [(e firstTagNamed: #author) contentString]
- 					ifFalse: ['''']); cr;
- 			show: ''Description: '', ((e firstTagNamed: #description) contentString); cr; cr.
- 			].
- 
- An item will now look like:
- 
- 	Date: Sun, 02 May 2010 20:23:49 +0000
- 	Title: HelpSystem-Core-tbn.46.mcz
- 	Author: Torsten Bergmann <Torsten.Bergmann at astares.de>
- 	Description: throw out pharo specific stuff since we are now integrated in squeak (and pharo too where squeak specific stuff was removed)
- '!

Item was removed:
- ----- Method: SqueakTutorialsOnXML class>>pages (in category 'accessing') -----
- pages
- 	^# (dataRetrieval)!

Item was removed:
- ----- Method: SqueakTutorialsOnXML class>>usesCodeStyling (in category 'testing') -----
- usesCodeStyling
- 	^ false!

Item was removed:
- ----- Method: Utilities class>>openCommandKeyHelp (in category '*Help-Squeak-Project-support windows') -----
- openCommandKeyHelp
- 	"Open a window giving command key help."
- 	"Utilities openCommandKeyHelp"
- 
- 	(HelpBrowser openOn: SqueakTutorialsCommandKey)
- 		model showFirstTopic!

Item was removed:
- ----- Method: VersionsBrowser>>offerVersionsHelp (in category '*Help-Squeak-Project') -----
- offerVersionsHelp
- 
- 	^ HelpBrowser openOn: SqueakToolsVersionsBrowserHelp!

Item was removed:
- (PackageInfo named: 'Help-Squeak-Project') postscript: 'Project current isMorphic ifTrue:
(excessive size, no diff calculated)




More information about the Squeak-dev mailing list