tim Rowledge uploaded a new version of HelpSystem-Core to project The Trunk:
http://source.squeak.org/trunk/HelpSystem-Core-tpr.106.mcz
==================== Summary ====================
Name: HelpSystem-Core-tpr.106
Author: tpr
Time: 24 June 2018, 6:48:57.953018 pm
UUID: 885548ab-d5f5-46cd-8dd7-3e73095ac536
Ancestors: HelpSystem-Core-tpr.105
Start process of moving responsibilty for deciding on Help content code styling or not from TheWorldMainDock to the actual content.
The overall effect of these groups of changes is to make no visual difference. Yet.
=============== Diff against HelpSystem-Core-tpr.105 ===============
Item was added:
+ ----- Method: AbstractHelpTopic>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "do I need a styled (ie with Shout) browser page?"
+ ^false!
Item was added:
+ ----- Method: ClassBasedHelpTopic>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "ask my helpClass if it wants pages styled for code; at some point it should be made possible for individual topics to make this choice and the help browser will do The Right Thing for each one"
+ ^helpClass ifNil:[false] ifNotNil:[:hC| hC usesCodeStyling]!
Item was added:
+ HelpTopic subclass: #CodeStyledHelpTopic
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'HelpSystem-Core-Model'!
+
+ !CodeStyledHelpTopic commentStamp: 'tpr 6/19/2018 19:27' prior: 0!
+ A CodeStyledHelpTopic is a simple way to make sure a help topic gets styled for code in a help browser. Once the help browser is able to code-style individual chunks instead of having to brute-force entire pages we can remove this class and simplify thngs!
Item was added:
+ ----- Method: CodeStyledHelpTopic>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "do I need a styled (ie with Shout) browser page?"
+ ^true!
Item was added:
+ ----- Method: CustomHelp class>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "do I want pages styled for code; at some point it should be made possible for individual topics to make this choice and the help browser will do The Right Thing for each one"
+ ^false!
Item was changed:
----- Method: HelpBrowser>>buildWith: (in category 'toolbuilder') -----
buildWith: builder
| windowSpec |
windowSpec := self buildWindowWith: builder.
windowSpec children
add: (self buildSearchWith: builder);
add: (self buildTreeWith: builder);
+ add: ( (rootTopic notNil and:[
+ rootTopic usesCodeStyling])
+ ifTrue:[self buildCodeContentsWith: builder]
+ ifFalse:[self buildContentsWith: builder]).
- add: (self buildContentsWith: builder).
^ builder build: windowSpec!
Item was changed:
----- Method: HelpBrowser>>rootTopic: (in category 'accessing') -----
rootTopic: aHelpTopic
+ "set the root topic and work out the top level sub-topics that it implies. Add the search topic at the end of the list"
-
rootTopic := aHelpTopic asHelpTopic.
+ self toplevelTopics: ((rootTopic ifNil: [#()] ifNotNil: [rootTopic subtopics]) sorted, {self searchTopic}).
- self toplevelTopics: ((self rootTopic ifNil: [#()] ifNotNil: #subtopics) sorted, {self searchTopic}).
self changed: #windowTitle.!
tim Rowledge uploaded a new version of Help-Squeak-TerseGuide to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-TerseGuide-tpr.11.mcz
==================== Summary ====================
Name: Help-Squeak-TerseGuide-tpr.11
Author: tpr
Time: 24 June 2018, 6:46:23.408958 pm
UUID: 30561c22-03c0-43c0-97b5-2b38cd726334
Ancestors: Help-Squeak-TerseGuide-tpr.10
Start process of moving responsibilty for deciding on Help content code styling or not from TheWorldMainDock to the actual content.
The overall effect of these groups of changes is to make no visual difference. Yet.
=============== Diff against Help-Squeak-TerseGuide-tpr.10 ===============
Item was added:
+ ----- Method: TerseGuideHelp class>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "I want the help browser to use code based styling on my content"
+ ^true!
tim Rowledge uploaded a new version of Help-Squeak-Project to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-Project-tpr.54.mcz
==================== Summary ====================
Name: Help-Squeak-Project-tpr.54
Author: tpr
Time: 24 June 2018, 6:45:17.430564 pm
UUID: ba33b657-b321-43ae-8485-f38afd39a3b5
Ancestors: Help-Squeak-Project-cmm.53
Start process of moving responsibilty for deciding on Help content code styling or not from TheWorldMainDock to the actual content.
The overall effect of these groups of changes is to make no visual difference. Yet.
=============== Diff against Help-Squeak-Project-cmm.53 ===============
Item was changed:
----- Method: SqueakTutorials class>>usefulExpressions (in category 'pages') -----
usefulExpressions
+ ^ CodeStyledHelpTopic
- ^ HelpTopic
title: 'Useful Expressions'
readOnlyContents: Utilities standardWorkspaceContents!
Item was added:
+ ----- Method: SqueakTutorials class>>usesCodeStyling (in category 'testing') -----
+ usesCodeStyling
+ "I want the help browser to use code based styling on my content"
+ ^true!
Item was added:
+ ----- 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 changed:
----- Method: SqueakTutorialsOnImage class>>theImage (in category 'as yet unclassified') -----
theImage
"This method was automatically generated. Edit it using:"
"SqueakTutorialsOnImage edit: #theImage"
+ ^(HelpTopic
- ^HelpTopic
title: 'Working with the Squeak Image'
+ contents:
+ 'Working with the ecosystem of objects in a Smalltalk 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!
- '!
Chris Muller uploaded a new version of Protocols to project The Trunk:
http://source.squeak.org/trunk/Protocols-cmm.61.mcz
==================== Summary ====================
Name: Protocols-cmm.61
Author: cmm
Time: 23 June 2018, 6:08:39.824925 pm
UUID: 5fa22d46-016a-47b0-b872-e546943b444b
Ancestors: Protocols-cmm.60
Further improvement to the toggling between showing all methods or the category of the selected method in the Protocols browser.
=============== Diff against Protocols-cmm.60 ===============
Item was changed:
----- Method: Lexicon>>showHomeCategory (in category 'menu commands') -----
showHomeCategory
"Toggle the selection of the category of the currently-selected method or category."
self selectedMessageName
+ ifNil: [ self selectCategoryAll ]
- ifNil:
- [ self selectedCategoryName ifNotNil: [ self selectCategoryAll ] ]
ifNotNil:
[ : selector | self selectedCategoryName = self class allCategoryName
ifTrue:
[ self preserveSelectorIfPossibleSurrounding:
[ self
setToShowSelector: selector
selectCategory: true ] ]
ifFalse:
[ self
setToShowSelector: selector
selectCategory: false ] ]!
David T. Lewis uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-kfr.1036.mcz
==================== Summary ====================
Name: System-kfr.1036
Author: kfr
Time: 21 June 2018, 8:49:18.217801 pm
UUID: 4150334e-4f5f-744c-b5b7-814cef973cc0
Ancestors: System-kfr.1035
Remove classes from SmartRefStream instanceVariable renamed that not are in structures so we avoid false positives
=============== Diff against System-ul.1034 ===============
Item was changed:
----- Method: SmartRefStream>>reshapedClassesIn: (in category 'import image segment') -----
reshapedClassesIn: outPointers
"Look for classes in the outPointer array that have changed shape. Make a fake class for the old shape. Return a dictionary mapping Fake classes to Real classes. Substitute fake classes for real ones in outPointers."
| mapFakeClassesToReal |
self flag: #bobconv.
+ "make sure we don't try to convert classes not in structures to renamed classes"
+ renamed keysDo:[ :renamedClass | structures at: renamedClass ifAbsent:[ renamed removeKey: renamedClass]].
-
mapFakeClassesToReal := IdentityDictionary new.
outPointers withIndexDo: [:outp :ind | | originalName fakeCls |
outp isBehavior ifTrue: [
originalName := renamed keyAtValue: outp name
ifAbsent: [renamedConv at: ind ifAbsent: [outp name]].
+ "in DiskProxy>>comeFullyUpOnReload: we saved the name at the index"
- "in DiskProxy>>comeFullyUpOnReload: we saved the name at the index"
fakeCls := self mapClass: outp origName: originalName.
fakeCls == outp ifFalse: [
mapFakeClassesToReal at: fakeCls put: outp.
outPointers at: ind put: fakeCls]]].
^ mapFakeClassesToReal!
David T. Lewis uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-hjh.1453.mcz
==================== Summary ====================
Name: Morphic-hjh.1453
Author: hjh
Time: 14 June 2018, 8:47:23.595445 am
UUID: 709cc547-ea46-426f-86a7-e014af1a5f6b
Ancestors: Morphic-cbc.1452
Moved Morph>>beTransparent to 'accessing'
Added guard in MorphicProject>>updateLocaleDependents to check for the presence of Etoys
Fix comment in Morph>>saveOnFile (SmartRefStream)
This change makes 'New MorphicProject' work after unloading Etoys (Preference okToReinitializeFlaps not enabled )
=============== Diff against Morphic-cbc.1452 ===============
Item was added:
+ ----- Method: Morph>>beTransparent (in category 'accessing') -----
+ beTransparent
+ self color: Color transparent!
Item was changed:
----- Method: Morph>>saveOnFile (in category 'fileIn/out') -----
saveOnFile
+ "Ask the user for a filename and save myself on a SmartRefStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out."
- "Ask the user for a filename and save myself on a SmartReferenceStream file. Writes out the version and class structure. The file is fileIn-able. UniClasses will be filed out."
| aFileName |
aFileName := ('my {1}.morph' translated format: {self class name}) asFileName. "do better?"
aFileName := UIManager default saveFilenameRequest: 'File name?' translated
initialAnswer: aFileName.
aFileName ifNil: [^ Beeper beep].
self allMorphsDo: [:m | m prepareToBeSaved].
self saveOnFileNamed: aFileName!
Item was changed:
----- Method: MorphicProject>>updateLocaleDependents (in category 'language') -----
updateLocaleDependents
"Set the project's natural language as indicated"
+ (self world respondsTo: #isTileScriptingElement) ifTrue: "Etoys present" [
ActiveWorld allTileScriptingElements do: [:viewerOrScriptor |
+ viewerOrScriptor localeChanged]].
- viewerOrScriptor localeChanged].
Flaps disableGlobalFlaps: false.
(Preferences eToyFriendly or: [
(Smalltalk classNamed: 'SugarNavigatorBar') ifNotNil: [:c | c showSugarNavigator] ifNil: [false]])
ifTrue: [
Flaps addAndEnableEToyFlaps.
ActiveWorld addGlobalFlaps]
ifFalse: [Flaps enableGlobalFlaps].
(Project current isFlapIDEnabled: 'Navigator' translated)
ifFalse: [Flaps enableDisableGlobalFlapWithID: 'Navigator' translated].
ScrapBook default emptyScrapBook.
MenuIcons initializeTranslations.
super updateLocaleDependents.
"self setFlaps.
self setPaletteFor: aLanguageSymbol."
!
David T. Lewis uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-hjh.336.mcz
==================== Summary ====================
Name: EToys-hjh.336
Author: hjh
Time: 14 June 2018, 8:41:47.833795 am
UUID: 6d2d8e79-98ae-4b95-9f0f-be30225c988d
Ancestors: EToys-cbc.335
Move Morph>>beTransparent from '*Etoys-geometry' to 'accessing' category.
=============== Diff against EToys-cbc.335 ===============
Item was removed:
- ----- Method: Morph>>beTransparent (in category '*Etoys-geometry') -----
- beTransparent
- self color: Color transparent!
Levente Uzonyi uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-ul.422.mcz
==================== Summary ====================
Name: Installer-Core-ul.422
Author: ul
Time: 18 June 2018, 10:43:46.226618 pm
UUID: 418fafe0-8243-4179-b2b3-ca7691208a9b
Ancestors: Installer-Core-ul.421
Do not load MetacelloPreview in Installer class >> #ensureRecentMetacello, because it'll render SqueakSSL unusable by loading an older version of WebClient and SqueakSSL. The method still loads Metacello.
=============== Diff against Installer-Core-ul.421 ===============
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 ].
metacello := (Smalltalk classNamed: #Metacello) ifNil: [
"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.
-
- "Load the Preview version of Metacello from GitHub"
- (Smalltalk classNamed: #Metacello) new
- configuration: 'MetacelloPreview';
- version: #stable;
- repository: 'github://Metacello/metacello:configuration';
- load.
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.!