Christoph Thiede uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-ct.94.mcz
==================== Summary ====================
Name: Help-Squeak-Project-ct.94
Author: ct
Time: 21 June 2022, 10:59:45.096176 pm
UUID: e922e850-4074-764e-bb2d-a7754075a639
Ancestors: Help-Squeak-Project-ct.93
Proposal: Adds help on how to contribute to Squeak. Short description of the community model, the development process, and some required/recommended tools. Updates the URLs in the page 'Squeak Resources Online' and adds a link to the new tutorial. Reorders project pages. Adds a very simple way to include figures to the new help book.
=============== Diff against Help-Squeak-Project-ct.93 ===============
Item was added:
+ SqueakProjectHelp subclass: #SqueakContributionHelp
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Help-Squeak-Project'!
Item was added:
+ ----- Method: SqueakContributionHelp class>>bookBlurb (in category 'accessing') -----
+ bookBlurb
+
+ self flag: #moveUpstream.
+ ^ (self perform: self defaultPage) contents!
Item was added:
+ ----- Method: SqueakContributionHelp class>>bookName (in category 'accessing') -----
+ bookName
+
+ ^ 'Contributing to Squeak'!
Item was added:
+ ----- Method: SqueakContributionHelp class>>communityModel (in category 'pages') -----
(excessive size, no diff calculated)
Item was added:
+ ----- Method: SqueakContributionHelp class>>contributingToSqueak (in category 'pages') -----
+ contributingToSqueak
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #contributingToSqueak"
+ <generated>
+ ^(HelpTopic
+ title: 'Contributing'
+ contents:
+ 'Contributing To Squeak
+
+ As you might have noticed, Squeak is a completely open system, which makes it very easy not only to explore every interesting detail in the image but also to customize everything at your will. Whether you would like to adjust some colors, fix a bug you have stumbled upon, or add a new feature, everything is flexible and under your control.
+
+ Squeak lives from your contributions!!!! Squeak is powered to 100% by volunteer open-source contributions. Whenever you make an adjustment to the base system, you might ask yourself: could others benefit from this change, too?, and if the answer is yes, we invite you to consider contributing back to the community. Also, if you just discovered a bug, have a question, or would like to discuss an idea, our forums are open!!!!!!
+ ]style[(24 39 22 158 18 8 3 28 17 50 37 143 43 197)a0b,a0,a0i,a0,Rcode:// SqueakTheme class>>#addSyntaxHighlighting:;,a0,Rcode://
+ self systemNavigation browseAllImplementorsOf: #expectedFailures;,a0,,a0,a0i,a0,a0i,a0!!' readStream nextChunkText)
+ key: #contributingToSqueak;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>defaultPage (in category 'accessing') -----
+ defaultPage
+
+ ^ #contributingToSqueak!
Item was added:
+ ----- Method: SqueakContributionHelp class>>firstContribution (in category 'pages') -----
+ firstContribution
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #firstContribution"
+ <generated>
+ ^(HelpTopic
+ title: 'First Contribution'
+ contents:
+ 'Making your first contribution
+
+ * Install the latest Trunk updates
+ * Make your change, preferably from a clean image (to avoid configuration drift)
+ * Open the Monticello Browser:
+ * On the left, select the package you have changed (denoted with a *star).
+ * On the right, select the inbox repository.
+ * On the top, press save.
+ * Review your changes, enter a meaningful version message, and accept the new version to upload it.
+ * That''s it!!!! Your contribution has arrived in the inbox and soon you will receive feedback from the community through the mailing list. Keep an eye on your mailbox!!!!!!
+ ]style[(30 4 32 84 27 5 12 12 7 34 5 6 13 12 5 34 5 64 6 33 10 152)a0b,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | (m owner submorphIndexOf: m) = 1]
+ filterItem: ''Update'';,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Monticello Browser'';,,a0b,a0,a0b,a0,a0i,a0,a0b,a0,a0b,a0,a0b,a0,a0b,a0,a0i,a0!!' readStream nextChunkText)
+ key: #firstContribution;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>furtherConcepts (in category 'pages') -----
+ furtherConcepts
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #furtherConcepts"
+ <generated>
+ ^(HelpTopic
+ title: 'Further Concepts'
+ contents:
+ 'Further Concepts
+
+ * Change sets: Usually, new proposals are best exchanged through an inbox version. However, some ideas consist of changes to multiple packages, when it becomes tricky to work with multiple inbox versions. In this case, a change set is a good alternative. You can open a dual change sorter from the Tools and Changes menus in the docking bar and make a yellow click on the change set list on the left to bring up some options. Create a new change set and copy or move all relevant changes to it. Add a preamble to the change set to add an explaining message and finally file out or mail to list it directly. To install a change set, you can file in it from the file list or by dragging it into the image.
+ * Preambles and postscripts: Some changes make it necessary to run some scripts before or after loading the new code to perform any migrations or changes to the object graph. This is possible through preambles and postscripts. To add or edit a script for a Monticello package, select it in the Monticello browser and press the Scripts button. Add your logic to the code, test it, accept it, and include it in your next inbox version. Note that preambles and postscripts in Trunk packages are required to be idempotent and may be evaluated multiple times. For changesets, you can add a preamble and a postscript as well from the yellow-button menu of the change set list in the change sorter.
+ * If you identify any other contribution-related concepts that should be mentioned or explained in greater detail here, please feel free to add them here. This would make an ideal first contribution. :-)!!
+ ]style[(16 4 12 256 18 10 5 5 7 111 23 5 4 4 4 29 14 60 8 4 12 47 7 13 9 37 26 266 18 15 7 561)a0b,a0,a0b,a0,a0i,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Dual Change Sorter'';,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:item | (item respondsTo: #updateContents) and: [(item instVarNamed: ''wordingSelector'') = #browseChangesLabel]]
+ filterItem: ''Dual Change Sorter'';,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''File List'';,a0,a0b,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Monticello Browser'';,a0,a0i,a0!!' readStream nextChunkText)
+ key: #furtherConcepts;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>openDockingBarMenuThat:filterItem: (in category 'support') -----
+ openDockingBarMenuThat: menuBlock filterItem: filterString
+
+ | dockingBar menu |
+ dockingBar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first.
+ menu := (dockingBar submorphs select: #isMenuItemMorph) detect: menuBlock ifNone: [^ self].
+ dockingBar selectItem: menu event: self currentEvent.
+ menu subMenu setProperty: #matchString toValue: filterString.
+ menu subMenu displayFiltered: self currentEvent.
+ ^ nil "do not answer a Behavior here, which would trigger another browser when sending this message from a TextURL"!
Item was added:
+ ----- Method: SqueakContributionHelp class>>pages (in category 'accessing') -----
+ pages
+
+ ^ #(contributingToSqueak communityModel firstContribution squeakInboxTalk furtherConcepts)!
Item was added:
+ ----- Method: SqueakContributionHelp class>>squeakInboxTalk (in category 'pages') -----
(excessive size, no diff calculated)
Item was added:
+ TextAnchor subclass: #SqueakHelpTextImage
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Help-Squeak-Project'!
+
+ !SqueakHelpTextImage commentStamp: 'ct 6/21/2022 22:54' prior: 0!
+ I embed a form into a text as a text anchor. I add support for fileIn/fileOut by storing the form as a base64 string. In the future, I'd like to make a great carrier and be moved "upstream" to a real Trunk package. For now, I still provide my humble service to some pages in the Squeak help.!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>forForm: (in category 'instance creation') -----
+ forForm: aForm
+
+ ^ self new
+ form: aForm;
+ yourself!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>scanCharacter (in category 'fileIn/Out') -----
+ scanCharacter
+
+ ^ $m!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>scanFrom: (in category 'fileIn/Out') -----
+ scanFrom: aStream
+
+ | base64 data form |
+ base64 := aStream upTo: $;.
+ data := Base64MimeConverter mimeDecodeToBytes: base64 readStream.
+ form := ImageReadWriter formFromStream: data.
+ ^ self forForm: form!
Item was added:
+ ----- Method: SqueakHelpTextImage>>exportBase64 (in category 'fileIn/fileOut') -----
+ exportBase64
+
+ ^ (ByteArray streamContents: [:stream |
+ PNGReadWriter putForm: self form onStream: stream])
+ base64Encoded
+ !
Item was added:
+ ----- Method: SqueakHelpTextImage>>form (in category 'accessing') -----
+ form
+
+ ^ self anchoredMorph image!
Item was added:
+ ----- Method: SqueakHelpTextImage>>form: (in category 'accessing') -----
+ form: aForm
+
+ self anchoredMorph: aForm asMorph.!
Item was added:
+ ----- Method: SqueakHelpTextImage>>writeScanOn: (in category 'fileIn/fileOut') -----
+ writeScanOn: aStream
+
+ aStream
+ nextPut: self class scanCharacter;
+ nextPutAll: self exportBase64;
+ nextPut: $;.!
Item was changed:
----- Method: SqueakProjectHelp class>>pages (in category 'accessing') -----
pages
+ ^#(workingWithSqueak squeakUserInterface extendingTheSystem squeakResourcesOnline)!
- ^#(extendingTheSystem squeakResourcesOnline squeakUserInterface workingWithSqueak)!
Item was changed:
----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in category 'pages') -----
squeakResourcesOnline
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #squeakResourcesOnline"
+ <generated>
^(HelpTopic
title: 'Squeak Resources Online'
contents:
'Web sites
Main site of Squeak
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
+ GitHub Issue Tracker
+ https://github.com/squeak-smalltalk/squeak-object-memory/issues
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 (currently defect)
- 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.
+ For more information on the community and the contribution process, check out the tutorial Contributing to Squeak in the following pages.
http://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
+ http://forum.world.st/Squeak-Dev-f45488.html (currently defect)
- 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 (currently defect)
- 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 (currently defect)
- 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…
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 1 29 2 49 1 20 2 63 2 13 1 1 11 135 2 60 2 51 21 10 2 223 22 26 61 2 44 21 14 145 63 2 58 21 6 134 57 2 44 21 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,… HelpBrowser openOn: SqueakContributionHelp;,,Rhttp://lists.squeakfoundation.org/mailman/listinf…
://github.com/SquareBracketAssociates/SqueakByExample-english;I1,,Rhttps://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac;I1,,i,,Rhttp://stephane.ducasse.free.fr/FreeBooks.html;I1!!' readStream nextChunkText)
- ]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,…
tp://stephane.ducasse.free.fr/FreeBooks.html;I1!!' readStream nextChunkText)
key: #squeakResourcesOnline;
shouldStyle: false;
yourself!
Christoph Thiede uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ct.2046.mcz
==================== Summary ====================
Name: Morphic-ct.2046
Author: ct
Time: 27 September 2022, 11:40:56.192156 am
UUID: 379a8f96-7a4b-4a49-8bf2-da3a785d58ad
Ancestors: Morphic-ct.2045
Complements Help-Squeak-Project-ct.96. Reorder items in help menu in the docking bar, adds link to new help on how to contribute to Squeak, adds missing help icons. Adds accessors on UpdatingMenuItemMorph et al. that are required by senders of SqueakContributionHelp class>>#openDockingBarMenuThat:filterItem:.
=============== Diff against Morphic-ct.2045 ===============
Item was added:
+ ----- Method: TheWorldMainDockingBar>>contributingToSqueak (in category 'submenu - help') -----
+ contributingToSqueak
+
+ self
+ openHelp: #SqueakProjectHelp
+ topic: #SqueakContributionHelp!
Item was changed:
----- Method: TheWorldMainDockingBar>>helpMenuOn: (in category 'submenu - help') -----
helpMenuOn: aDockingBar
aDockingBar addItem: [ :it |
it contents: 'Help' translated;
addSubMenu: [ :menu |
menu addItem: [:item |
item
contents: 'Squeak Help' translated;
help: 'Integrated Help System' translated;
target: self;
selector: #squeakHelp].
self feedbackMenuItemOn: menu.
menu addLine.
menu addItem:[:item|
item
contents: 'Online Resources' translated;
help: 'Online resources for Squeak' translated;
target: self;
icon: MenuIcons smallHelpIcon;
selector: #squeakOnlineResources].
menu addItem:[:item|
item
contents: 'Squeak Swiki' translated;
help: 'A very simple way to access Squeak Swiki resources in the image' translated;
target: self;
+ icon: MenuIcons smallHelpIcon;
selector: #swiki].
menu addItem:[:item|
item
contents: 'Keyboard Shortcuts' translated;
help: 'Keyboard bindings used in Squeak' translated;
target: self;
+ icon: MenuIcons smallHelpIcon;
selector: #commandKeyHelp ].
menu addItem:[:item|
item
contents: 'Font Size Summary' translated;
help: 'Font size summary.' translated;
target: self;
+ icon: MenuIcons smallHelpIcon;
selector: #fontSizeSummary ].
menu addItem:[:item|
item
contents: 'Useful Expressions' translated;
help: 'Useful expressions' translated;
target: self;
+ icon: MenuIcons smallHelpIcon;
selector: #usefulExpressions ].
menu addLine.
menu addItem:[:item|
item
contents: 'Terse Guide to Squeak' translated;
help: 'Concise information about language and environment' translated;
target: self;
+ icon: MenuIcons smallHelpIcon;
selector: #terseGuideToSqueak].
menu addItem:[:item|
item
+ contents: 'Working With Squeak' translated;
+ help: 'Information for new users' ;
+ target: self;
+ icon: MenuIcons smallHelpIcon;
+ selector: #workingWithSqueak].
+ menu addItem:[:item|
+ item
+ contents: 'The Squeak User Interface' translated;
+ help: 'Descriptions of some of the more-unusual UI elements in Squeak' ;
+ target: self;
+ icon: MenuIcons smallHelpIcon;
+ selector: #squeakUserInterface].
+ menu addItem:[:item|
+ item
+ contents: 'Extending The System' translated;
- contents: 'Extending the system' translated;
help: 'Includes code snippets to evaluate for extending the system' translated;
target: self;
icon: MenuIcons smallHelpIcon;
selector: #extendingTheSystem].
+ menu addItem: [:item|
+ item
+ contents: 'Contributing to Squeak' translated;
+ help: 'Some information and a short tutorial on how you can participate in the community' translated;
+ target: self;
+ icon: MenuIcons smallHelpIcon;
+ selector: #contributingToSqueak].
menu addLine.
menu addItem:[:item|
item
contents: 'Release Notes' translated;
help: 'Changes in this release' translated ;
target: self;
selector: #releaseNotes].
menu addItem:[:item|
item
- contents: 'Working With Squeak' translated;
- help: 'Information for new users' ;
- target: self;
- selector: #workingWithSqueak].
- menu addItem:[:item|
- item
- contents: 'The Squeak User Interface' translated;
- help: 'Descriptions of some of the more-unusual UI elements in Squeak' ;
- target: self;
- selector: #squeakUserInterface].
- menu addItem:[:item|
- item
contents: 'License Information' translated;
help: String empty ;
target: self;
selector: #licenseInformation].
menu addLine.
self aboutMenuItemOn: menu.
]]!
Item was added:
+ ----- Method: UpdatingMenuItemMorph>>wordingArgument (in category 'wording') -----
+ wordingArgument
+
+ ^ wordingArgument!
Item was added:
+ ----- Method: UpdatingMenuItemMorph>>wordingProvider (in category 'wording') -----
+ wordingProvider
+
+ ^ wordingProvider!
Item was added:
+ ----- Method: UpdatingMenuItemMorph>>wordingSelector (in category 'wording') -----
+ wordingSelector
+
+ ^ wordingSelector!
Item was added:
+ ----- Method: UpdatingSimpleButtonMorph>>wordingSelector (in category 'accessing') -----
+ wordingSelector
+
+ ^ wordingSelector!
Item was changed:
+ (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances. "Updates menu for Help > Contributing to Squeak"'!
- (PackageInfo named: 'Morphic') postscript: 'TheWorldMainDockingBar updateInstances. "Updates menu for Windows > Find Workspace ..."'!
Christoph Thiede uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-ct.96.mcz
==================== Summary ====================
Name: Help-Squeak-Project-ct.96
Author: ct
Time: 27 September 2022, 11:33:17.408156 am
UUID: 1a0702c7-7a57-894a-9e75-e62599ca7b9b
Ancestors: Help-Squeak-Project-ct.95, Help-Squeak-Project-ct.94
Adds help on how to contribute to Squeak. Short description of the community model, the development process, and some required/recommended tools. Reformats the page 'Squeak Resources Online' and adds a link to the new tutorial. Reorders project pages. Adds a very simple way to include figures to the new help book.
Revised version. Thanks to Robert (rhi), Jakob (jr), Tim (tpr), and Jaromir (jar) for their reviews and edits!
=============== Diff against Help-Squeak-Project-ct.95 ===============
Item was added:
+ SqueakProjectHelp subclass: #SqueakContributionHelp
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Help-Squeak-Project'!
Item was added:
+ ----- Method: SqueakContributionHelp class>>advanced (in category 'pages') -----
+ advanced
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #advanced"
+ <generated>
+ ^(HelpTopic
+ title: 'Advanced'
+ contents:
+ 'Advanced Concepts
+
+ Change sets: Usually, new proposals are best submitted to the inbox as a new package version. However, when some ideas consist of changes to multiple packages, it becomes tricky to work with multiple versions from the inbox. In this case, a change set is a good alternative. Change sets are collections of methods and class definitions, plus some extras. You can open a dual change sorter from the Tools and Changes menus in the docking bar and open a menu on the change set list on the left. Create a new change set and copy or move all relevant changes to it. Add a preamble to the change set to add an explaining message and finally file out or mail to list it directly. To install a change set, you can file in it from the file list, or you can drag and drop it into Squeak from the outside.
+
+ Preambles and postscripts: Some changes make it necessary to run some scripts before or after loading the new code to perform any migrations or changes to the global object graph. This is possible through preambles and postscripts. To add or edit a script for a Monticello package, select it in the Monticello browser and press the Scripts button. Add your logic to the code, test it, save it, and include it in your next inbox version. Note that preambles and postscripts in Trunk packages are required to be idempotent and may be evaluated multiple times. For change sets, you can add a preamble and a postscript as well from the context menu of the change set list in the change sorter.
+
+ ---
+ If you identify any other contribution-related concepts that should be mentioned or explained in greater detail here, please feel free to add them here. This could even be your first contribution!!!! :-)!!
+ ]style[(17 2 12 263 80 15 18 10 5 5 7 78 23 5 4 4 4 29 14 60 8 4 12 47 7 13 9 1 60 26 273 18 15 7 556)a0b,a0,a0b,a0,,a0,a0i,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Dual Change Sorter'';,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | (m respondsTo: #wordingSelector) and: [m wordingSelector = #browseChangesLabel]]
+ filterItem: ''Dual Change Sorter'';,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,a0i,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''File List'';,,a0,a0b,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Monticello Browser'';,a0,a0i,a0!!' readStream nextChunkText)
+ key: #advanced;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>bookBlurb (in category 'accessing') -----
+ bookBlurb
+
+ self flag: #moveUpstream.
+ ^ (self perform: self defaultPage) contents!
Item was added:
+ ----- Method: SqueakContributionHelp class>>bookName (in category 'accessing') -----
+ bookName
+
+ ^ 'Contributing to Squeak'!
Item was added:
+ ----- Method: SqueakContributionHelp class>>communityModel (in category 'pages') -----
(excessive size, no diff calculated)
Item was added:
+ ----- Method: SqueakContributionHelp class>>contributingToSqueak (in category 'pages') -----
+ contributingToSqueak
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #contributingToSqueak"
+ <generated>
+ ^(HelpTopic
+ title: 'Contributing'
+ contents:
+ 'Contributing to Squeak
+
+ Squeak is a highly open system, which makes it very easy not only to explore every interesting detail in the image but also to customize everything at your will. Whether you would like to adjust some colors, fix a bug you have stumbled upon, or add a new feature, (almost) everything is flexible and under your control.
+
+ Squeak lives from your contributions!!!! Squeak is powered by volunteer open-source contributions. Whenever you make an adjustment to the base system, you might ask yourself: "could others benefit from this change, too?". If the answer is yes, we invite you to consider contributing back to the community. Or if you just discovered a bug, have a question, or would like to discuss an idea, our forums are open!!!!!!
+ ]style[(24 12 18 158 18 8 3 28 17 59 37 136 43 191)a0b,a0,a0i,a0,Rcode:// SqueakTheme class>>#addSyntaxHighlighting:;,a0,Rcode://
+ self systemNavigation browseAllImplementorsOf: #expectedFailures;,a0,,a0,a0i,a0,a0i,a0!!' readStream nextChunkText)
+ key: #contributingToSqueak;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>defaultPage (in category 'accessing') -----
+ defaultPage
+
+ ^ #contributingToSqueak!
Item was added:
+ ----- Method: SqueakContributionHelp class>>firstContribution (in category 'pages') -----
+ firstContribution
+ "This method was automatically generated. Edit it using:"
+ "SqueakContributionHelp edit: #firstContribution"
+ <generated>
+ ^(HelpTopic
+ title: 'First Contribution'
+ contents:
+ 'Making Your First Contribution
+
+ * Install the latest Trunk updates.
+ * Make your change, preferably starting from a clean image (to avoid configuration drift).
+ * Open the Monticello Browser:
+ * On the left, select the package you have changed (changed packages are marked with an *asterisk).
+ * On the right, select the inbox repository.
+ * On the top, press save.
+ * Review your changes, enter a meaningful version message that explains what the changes are for (e.g., which bug they address, what they are aimed at improving), and accept the new version to upload it.
+ * That''s it!!!! Your contribution has arrived in the Inbox and soon you will receive feedback from the community through the mailing list. Keep an eye on your mailbox!!!!!!
+ ]style[(30 4 33 94 27 5 12 12 7 19 27 9 9 6 13 12 5 34 5 59 103 6 6 33 10 152)a0b,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | (m owner submorphIndexOf: m) = 1]
+ filterItem: ''Update'';,a0,Rcode://
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = ''Tools'']
+ filterItem: ''Monticello Browser'';,,a0b,a0,a0b,a0,,a0,a0i,a0,a0b,a0,a0b,a0,a0b,a0,,a0,a0b,a0,a0i,a0!!' readStream nextChunkText)
+ key: #firstContribution;
+ shouldStyle: false;
+ yourself!
Item was added:
+ ----- Method: SqueakContributionHelp class>>openDockingBarMenuThat:filterItem: (in category 'support') -----
+ openDockingBarMenuThat: menuBlock filterItem: filterString
+ "Example:
+ SqueakContributionHelp
+ openDockingBarMenuThat: [:m | m contents = 'Tools']
+ filterItem: 'Squeak Inbox Talk'
+ Don't delete, this has indeed senders in some TextURL attributes within the pages of this help.
+ "
+
+ | dockingBar menu |
+ dockingBar := (self currentWorld mainDockingBars ifEmpty: [^ self]) first.
+ menu := (dockingBar submorphs select: #isMenuItemMorph) detect: menuBlock ifNone: [^ self].
+ dockingBar selectItem: menu event: self currentEvent.
+ menu subMenu setProperty: #matchString toValue: filterString.
+ menu subMenu displayFiltered: self currentEvent.
+ ^ nil "do not answer a Behavior here, which would trigger another browser when sending this message from a TextURL"!
Item was added:
+ ----- Method: SqueakContributionHelp class>>pages (in category 'accessing') -----
+ pages
+
+ ^ #(contributingToSqueak communityModel firstContribution squeakInboxTalk advanced)!
Item was added:
+ ----- Method: SqueakContributionHelp class>>squeakInboxTalk (in category 'pages') -----
(excessive size, no diff calculated)
Item was added:
+ TextAnchor subclass: #SqueakHelpTextImage
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Help-Squeak-Project'!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>forForm: (in category 'instance creation') -----
+ forForm: aForm
+
+ ^ self new
+ form: aForm;
+ yourself!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>scanCharacter (in category 'fileIn/Out') -----
+ scanCharacter
+
+ ^ $m!
Item was added:
+ ----- Method: SqueakHelpTextImage class>>scanFrom: (in category 'fileIn/Out') -----
+ scanFrom: aStream
+
+ | base64 data form |
+ base64 := aStream upTo: $;.
+ data := Base64MimeConverter mimeDecodeToBytes: base64 readStream.
+ form := ImageReadWriter formFromStream: data.
+ ^ self forForm: form!
Item was added:
+ ----- Method: SqueakHelpTextImage>>exportBase64 (in category 'fileIn/fileOut') -----
+ exportBase64
+
+ ^ (ByteArray streamContents: [:stream |
+ PNGReadWriter putForm: self form onStream: stream])
+ base64Encoded
+ !
Item was added:
+ ----- Method: SqueakHelpTextImage>>form (in category 'accessing') -----
+ form
+
+ ^ self anchoredMorph image!
Item was added:
+ ----- Method: SqueakHelpTextImage>>form: (in category 'accessing') -----
+ form: aForm
+
+ self anchoredMorph: aForm asMorph.!
Item was added:
+ ----- Method: SqueakHelpTextImage>>writeScanOn: (in category 'fileIn/fileOut') -----
+ writeScanOn: aStream
+
+ aStream
+ nextPut: self class scanCharacter;
+ nextPutAll: self exportBase64;
+ nextPut: $;.!
Item was changed:
----- Method: SqueakProjectHelp class>>pages (in category 'accessing') -----
pages
+ ^#(workingWithSqueak squeakUserInterface extendingTheSystem squeakResourcesOnline)!
- ^#(extendingTheSystem squeakResourcesOnline squeakUserInterface workingWithSqueak)!
Item was changed:
----- Method: SqueakProjectHelp class>>squeakResourcesOnline (in category 'pages') -----
squeakResourcesOnline
"This method was automatically generated. Edit it using:"
"SqueakProjectHelp edit: #squeakResourcesOnline"
<generated>
^(HelpTopic
title: 'Squeak Resources Online'
contents:
'Web sites
Main site of Squeak
+ https://www.squeak.org
- https://www.squeak.org
Issue Tracker for bug reports and other feedback
+ https://bugs.squeak.org
- https://bugs.squeak.org
Weekly Squeak
+ https://news.squeak.org
- https://news.squeak.org
Downloads for many versions
+ https://www.squeak.org/downloads
- https://www.squeak.org/downloads
Main site of OpenSmalltalk VM
+ https://github.com/OpenSmalltalk/opensmalltalk-vm
- https://github.com/OpenSmalltalk/opensmalltalk-vm
Mailing lists
beginners
+ This is the place to ask even the most basic questions. Don''t be afraid. Just ask. The community will help you get started with Squeak.
+ https://lists.squeakfoundation.org/mailman/listinfo/beginners
- This is the place to ask even the most basic questions. Don''t be afraid. Just ask. The community will help you get started with Squeak.
- https://lists.squeakfoundation.org/mailman/listinfo/beginners
squeak-dev
+ This is the main Squeak mailing list. Join that list to be part in the community. Subscribe to the mail server or read on a forum.
+ https://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
+ For more information on the community and the contribution process, check out the tutorial Contributing to Squeak in the following pages.
- This is the main Squeak mailing list. Join that list to be part in the community. Subscribe to the mail server or read on a forum.
- https://lists.squeakfoundation.org/mailman/listinfo/squeak-dev
vm-beginners
+ This is the entry point for people who want to learn more about how Squeak runs on your operating system. You may ask even basic questions. :-)
+ https://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
- This is the entry point for people who want to learn more about how Squeak runs on your operating system. You may ask even basic questions. :-)
- https://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
vm-dev
+ This is the place where discussions about the OpenSmalltalk virtual machine happen. Join that list the be a part of the community.
+ https://lists.squeakfoundation.org/mailman/listinfo/vm-dev
- This is the place where discussions about the OpenSmalltalk virtual machine happen. Join that list the be a part of the community.
- https://lists.squeakfoundation.org/mailman/listinfo/vm-dev
Books
Squeak By Example
+ A beginners textbook, currently based on Squeak 5.3 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/hpi-swa-lab/SqueakByExample-english
- A beginners textbook, currently based on Squeak 5.3 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/hpi-swa-lab/SqueakByExample-english
but a prepared and ready to read pdf version can be found at
+ https://github.com/hpi-swa-lab/SqueakByExample-english/releases
- https://github.com/hpi-swa-lab/SqueakByExample-english/releases
Other books
+ Many books about Squeak and Smalltalk in general have been made available:
+ https://squeak.org/documentation/#books!!
+ ]style[(11 19 1 23 48 1 23 1 14 23 1 27 1 32 1 29 1 49 1 1 13 1 1 10 135 1 61 1 1 10 1 131 62 92 22 25 1 13 144 64 1 1 6 1 131 58 1 1 5 2 17 1 187 54 62 63 1 1 11 1 75 39)b,I0i,I0,Rhttps://www.squeak.org;I1,I0i,I0,Rhttps://bugs.squeak.org;I1,I…!!' readStream nextChunkText)
- Many books about Squeak and Smalltalk in general have been made available:
- https://squeak.org/documentation/#books!!
- ]style[(11 19 2 23 50 23 1 15 23 1 27 2 32 32 49 2 13 1 1 11 135 2 61 2 10 2 132 62 2 14 145 64 2 6 134 58 2 5 2 17 2 188 54 63 63 2 11 78 39)b,I0i,I0,Rhttps://www.squeak.org;,I0,Rhttps://bugs.squeak.org;,I0,I0i,Rh…;!!' readStream nextChunkText)
key: #squeakResourcesOnline;
shouldStyle: false;
yourself!
Item was changed:
----- 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 #show: or #showln: to it:
- To write anything into the Transcript, send it #show: or #showln::
Transcript showln: ''Hello world!!!!''.
Transcript show: '' :-)''.!!
+ ]style[(197 16 6 9 56 6 4 8 9 59),I1,,Rcode://Workspace open;,,LTranscriptStream show:;,,LTranscriptStream showln:;,,I1!!' readStream nextChunkText)
- ]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!
Christoph Thiede uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ct.2045.mcz
==================== Summary ====================
Name: Morphic-ct.2045
Author: ct
Time: 20 September 2022, 6:57:11.442179 pm
UUID: 6377fe4c-8683-8042-8430-904dd1403b2a
Ancestors: Morphic-ct.2043
Fixes bindings access during accept-it in PluggableTextMorph. Analogously to #correctFrom:to:with:, the morph which presents itself as the requestor to the model needs to forward this request to the original requestor, its editor. Note that print-it et al. were not affected because they pass the editor itself to the model or the compiler, resp.
=============== Diff against Morphic-ct.2043 ===============
Item was added:
+ ----- Method: PluggableTextMorph>>bindingOf: (in category 'binding') -----
+ bindingOf: aString
+
+ ^ textMorph editor bindingOf: aString!
Christoph Thiede uploaded a new version of Morphic to project The Treated Inbox:
http://source.squeak.org/treated/Morphic-tcj.2000.mcz
==================== Summary ====================
Name: Morphic-tcj.2000
Author: tcj
Time: 5 June 2022, 11:27:16.56143 pm
UUID: c9b2a85f-cde3-453b-9cb9-898c3420bc07
Ancestors: Morphic-mt.1999
Optimize dragging into SystemWindows by not performing a complete 'activate' on mouse enter (which includes waking up the model and redrawing all submorphs & text). Also, fix typo in another method comment.
=============== Diff against Morphic-mt.1999 ===============
Item was changed:
----- Method: SystemWindow>>mouseEnterDragging: (in category 'events') -----
mouseEnterDragging: evt
"unlock children for drop operations"
self flag: #performance. "mt: There may be no need to change appearance if no widget wants the drop."
self isActive ifTrue: [self lookFocused].
(self isActive not and: [evt hand hasSubmorphs]) ifTrue: [
+ self submorphsDo: [:morph | morph unlock]. "unlock contents for drop"
- self activate. "unlock contents for drop"
evt hand addMouseListener: self. "for drop completion on submorph"
].!
Item was changed:
----- Method: SystemWindow>>startDragFromLabel: (in category 'events') -----
startDragFromLabel: evt
+ "When label events are active, we need to pass dragging to the window explicitly.
- "When label events are active, we need to pass dragging to the window explicitely
The window only recognizes a drag with an offset of more than 3 pixels"
self isSticky ifTrue: [^ self].
self fastFramingOn
ifTrue: [self doFastFrameDrag: evt cursorPoint]
ifFalse: [
self hasDropShadow: false.
evt hand grabMorph: self topRendererOrSelf]
!
Christoph Thiede uploaded a new version of Kernel to project The Treated Inbox:
http://source.squeak.org/treated/Kernel-jar.1474.mcz
==================== Summary ====================
Name: Kernel-jar.1474
Author: jar
Time: 1 June 2022, 4:40:04.621161 pm
UUID: 5610d4f5-4e77-034a-bdc8-df674ef49b60
Ancestors: Kernel-jar.1473
Fix a bug: assigning suspendedContext := nil to a runnable but not active process would freeze the image when self is awakened. This can easily happen when a process gets preempted between the assignment and the next send.
Try to execute this:
p := [] newProcess resume. "p placed in run queue"
p suspendedContext: nil. "image freezes"
=============== Diff against Kernel-jar.1473 ===============
Item was changed:
----- Method: Process>>suspendedContext: (in category 'private') -----
suspendedContext: aContext
+ "Note: assigning nil to a runnable but not active process would freeze the image when self is scheduled to run."
+ suspendedContext := aContext ifNil: [self suspend. nil]!
- suspendedContext := aContext!
Christoph Thiede uploaded a new version of Installer-Core to project The Treated Inbox:
http://source.squeak.org/treated/Installer-Core-tcj.440.mcz
==================== Summary ====================
Name: Installer-Core-tcj.440
Author: tcj
Time: 5 August 2020, 10:21:54.954624 pm
UUID: b6ac0eda-4db6-4313-b760-50dcdd1dc584
Ancestors: Installer-Core-mt.439
Be more tolerant of a partially-installed or mis-installed Metacello.
=============== Diff against Installer-Core-mt.439 ===============
Item was changed:
----- Method: Installer class>>ensureRecentMetacello (in category 'scripts') -----
ensureRecentMetacello
"Copied and adapted from https://github.com/Metacello/metacello/blob/master/README.md"
| metacello |
((Smalltalk classNamed: #WebClient)
ifNil: [ false ]
ifNotNil: [ :webClient |
[ (webClient httpHead: 'https://github.com') isSuccess ]
on: Error
do: [ false ] ])
ifFalse: [ ^self inform: 'Could not connect to "https://github.com".\\You need an internet connection and SSL support\to install (or update) Metacello.\\Please fix those issues and try again.' translated withCRs ].
self isMetacelloInstalled ifFalse: [
"Prepare a clean environment for it."
+ Smalltalk globals removeKey: #Metacello ifAbsent: [].
- Smalltalk globals removeKey: #Metacello.
"Get the Metacello configuration (for Squeak users)"
Installer gemsource
project: 'metacello';
addPackage: 'ConfigurationOfMetacello';
install.
"Bootstrap Metacello Preview, using mcz files (#'previewBootstrap' symbolic version"
((Smalltalk classNamed: #ConfigurationOfMetacello) project
version: #'previewBootstrap') load].
metacello := Smalltalk classNamed: #Metacello.
"Now load latest version of Metacello"
metacello new
baseline: 'Metacello';
repository: 'github://Metacello/metacello:master/repository';
get.
metacello new
baseline: 'Metacello';
repository: 'github://Metacello/metacello:master/repository';
load: #('default' 'Metacello-Help').
!
Item was changed:
----- Method: Installer class>>isMetacelloInstalled (in category 'scripts') -----
isMetacelloInstalled
+ "Squeak is shipped with the global #Metacello referring to lightweight MetacelloStub. After the first message is sent, the latest Metacello is installed, replacing the stub.
+ Be tolerant of a partially-installed Metacello."
+ ^ (Smalltalk includesKey: #Metacello)
+ and: [(Smalltalk at: #Metacello) ~= MetacelloStub]!
- "Squeak is shipped with the global #Metacello referring to lightweight MetacelloStub. After the first message is sent, the latest Metacello is installed, replacing the stub."
- ^ (Smalltalk at: #Metacello) ~= MetacelloStub!
Christoph Thiede uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ct.2043.mcz
==================== Summary ====================
Name: Morphic-ct.2043
Author: ct
Time: 13 September 2022, 7:54:00.818738 pm
UUID: e022b4f2-ce6b-584a-b084-1ce60b8cefeb
Ancestors: Morphic-ct.2042
Fixes yellow-button menu invocation for pluggable lists that are not inside a system window. For instance, pluggable lists with in a dialog could not bring up their own menu previously but their containing dialog window's yellow-button menu was shown instead. See also Morphic-ct.1789.
=============== Diff against Morphic-ct.2042 ===============
Item was changed:
----- Method: PluggableListMorph>>createListMorph (in category 'initialization') -----
createListMorph
^ self listMorphClass new
listSource: self;
cellInset: self class listMargins;
hResizing: #spaceFill;
vResizing: #shrinkWrap;
cellPositioning: #leftCenter;
setProperty: #indicateKeyboardFocus toValue: #never;
+ wantsYellowButtonMenu: false;
yourself.!
Item was changed:
----- Method: PluggableListMorph>>initialize (in category 'initialization') -----
initialize
listMorph := self createListMorph.
super initialize.
self scroller
layoutPolicy: TableLayout new;
+ wantsYellowButtonMenu: false;
+ addMorph: listMorph.
- addMorph: listMorph.
self
minimumWidth: (self font widthOf: $m) * 5 ;
minimumHeight: self font height
!