While we're on the subject, when one does get a debugger How is a
beginner supposed to share the error information with the folks on this
list?
I have a debugger open on the stack after executing:
Metacello new
configuration: 'GitFileTree';
version: #stable;
repository: 'http://smalltalkhub.com/mc/Pharo/MetaRepoForPharo50/main';
load
which was my guess for the load expression and I'm getting a walkback
that I assume is the same as that produced by the Catalog Browser, but
there is apparently no way of really knowing ...
Anyway, I've got a very nice debugger with a nice stack and nice error
message in the title bar, but I don't see any way of actually being able
to share a simple stack trace and error message with the mailing list
other than to produce a screenshot which will not show the whole stack ..
I happen to know that the PharoDebug.log contains a stack trace (and
I've attached it to this email), but I don't know how a beginner would
know to do this, either.
Of course, I think that the stack dump in the PharoDebug.log is
unreadable, but at least it is a sharable stack.
Finally to summarize, the actual message error is: 'invalid version
number: normal version component must be integer v0' and this error is
very likely consequence of a proposed bugfix for a Metacello bug that
was reported a month or so ago [1], as I'm using a version of Metacello
with the proposed bugfix present ... so at the end of the day, this is a
problem with my code ...
But I do think the two questions that came from this exercise are still
relevant:
How does a beginner report/debug a Catalog Browser error?
How does a beginner produce a sharable stack trace?
Dale
[1] https://github.com/dalehenrich/metacello-work/issues/392
On 07/05/2016 11:13 AM, Dale Henrichs wrote:
Using a freshly downloaded Pharo5.0 and the Catalog Browser, I'm
getting a Notification with the message in the subject line while
installing GitFileTree, but I get a notification with no indication of
why or what the error is ... how am I supposed to debug this?
I mean I can guess what load expression is being used, but for a
beginner, this is not a pleasant introduction ...
There is no Pharo debug log either, so I will have to splash around
and try to load GitFileTree, in the meantime...
Dale
THERE_BE_DRAGONS_HERE
Error: invalid version number: normal version component must be integer v0
5 July 2016 11:18:06.227447 am
VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.1855 uuid: d8e4a3c2-a3bf-4adc-b224-8012903a1ef4 May 4 2016
StackToRegisterMappingCogit VMMaker.oscog-eem.1855 uuid: d8e4a3c2-a3bf-4adc-b224-8012903a1ef4 May 4 2016
https://github.com/pharo-project/pharo-vm.git Commit: b8ec25a570d7539653e1d793e97609adb509aaed Date: 2016-05-04 11:14:22 +0200 By: Esteban Lorenzano <esteba...@gmail.com> Jenkins build #589
Image: Pharo5.0 [Latest update: #50760]
MetacelloSemanticVersionNumber class(Object)>>error:
Receiver: MetacelloSemanticVersionNumber
Arguments and temporary variables:
aString: 'invalid version number: normal version component must be integer v0'
Receiver's instance variables:
superclass: Magnitude
methodDict: a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
format: 65539
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: {MetacelloOldSemanticVersionNumber}
name: #MetacelloSemanticVersionNumber
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Model'
traitComposition: {}
localSelectors: nil
MetacelloSemanticVersionNumber class>>integerFromString:
Receiver: MetacelloSemanticVersionNumber
Arguments and temporary variables:
aString: 'v0'
Receiver's instance variables:
superclass: Magnitude
methodDict: a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
format: 65539
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: {MetacelloOldSemanticVersionNumber}
name: #MetacelloSemanticVersionNumber
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Model'
traitComposition: {}
localSelectors: nil
[ :subString |
| integer |
forPattern
ifTrue: [ integer := subString ]
ifFalse: [ integer := self integerFromString: subString.
integer < 0
ifTrue: [ self
error:
'invalid version number: normal version component must be integer '
, subString printString ] ].
normalComponents add: integer.
identifierCount := identifierCount + 1 ] in MetacelloSemanticVersionNumber class>>fromString:forPattern:
Receiver: MetacelloSemanticVersionNumber
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
superclass: Magnitude
methodDict: a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
format: 65539
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: {MetacelloOldSemanticVersionNumber}
name: #MetacelloSemanticVersionNumber
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Model'
traitComposition: {}
localSelectors: nil
OrderedCollection>>do:
Receiver: an OrderedCollection('v0' '2' '0')
Arguments and temporary variables:
aBlock: [ :subString |
| integer |
forPattern
ifTrue: [ integer := subString ...etc...
index: 1
Receiver's instance variables:
array: #('v0' '2' '0' nil nil nil nil nil nil nil)
firstIndex: 1
lastIndex: 3
MetacelloSemanticVersionNumber class>>fromString:forPattern:
Receiver: MetacelloSemanticVersionNumber
Arguments and temporary variables:
identifierCount: 0
aString: 'v0.2.0'
forPattern: false
new: nil
tokens: nil
preRelease: 0
build: 0
versionString: 'v0.2.0'
normalEnd: 6
preReleaseEnd: nil
normalComponents: an OrderedCollection()
preReleaseComponents: an OrderedCollection()
buildComponents: an OrderedCollection()
Receiver's instance variables:
superclass: Magnitude
methodDict: a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
format: 65539
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: {MetacelloOldSemanticVersionNumber}
name: #MetacelloSemanticVersionNumber
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Model'
traitComposition: {}
localSelectors: nil
MetacelloSemanticVersionNumber class>>fromString:
Receiver: MetacelloSemanticVersionNumber
Arguments and temporary variables:
aString: 'v0.2.0'
svn: nil
Receiver's instance variables:
superclass: Magnitude
methodDict: a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
format: 65539
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: {MetacelloOldSemanticVersionNumber}
name: #MetacelloSemanticVersionNumber
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Model'
traitComposition: {}
localSelectors: nil
MetacelloMCVersionSpec(MetacelloVersionSpec)>>versionNumber
Receiver: spec import: 'OSSubprocess'.
spec baseline: 'OSSubprocess' with: [
spec repository: 'git...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: MetacelloMCProject()
loader: nil
mutable: nil
versionString: 'v0.2.0'
blessing: nil
description: nil
author: nil
timestamp: nil
preLoadDoIt: nil
postLoadDoIt: nil
packageList: spec add: [
spec
name: 'OSSubprocess';
projectReference: [
...etc...
importName: 'OSSubprocess'
importArray: nil
repositories: spec
packages: nil
MetacelloMCVersion class(MetacelloVersion class)>>fromSpec:
Receiver: MetacelloMCVersion
Arguments and temporary variables:
aMetacelloVersionSpec: spec import: 'OSSubprocess'.
spec baseline: 'OSSubproces...etc...
Receiver's instance variables:
superclass: MetacelloVersion
methodDict: a MethodDictionary(#allPackagesForSpecNamed:->MetacelloMCVersion>>#...etc...
format: 65541
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: nil
name: #MetacelloMCVersion
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-MC-Model'
traitComposition: {}
localSelectors: nil
MetacelloMCVersionSpec(MetacelloVersionSpec)>>createVersion
Receiver: spec import: 'OSSubprocess'.
spec baseline: 'OSSubprocess' with: [
spec repository: 'git...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: MetacelloMCProject()
loader: nil
mutable: nil
versionString: 'v0.2.0'
blessing: nil
description: nil
author: nil
timestamp: nil
preLoadDoIt: nil
postLoadDoIt: nil
packageList: spec add: [
spec
name: 'OSSubprocess';
projectReference: [
...etc...
importName: 'OSSubprocess'
importArray: nil
repositories: spec
packages: nil
[ :versionString :pragmaColl |
| versionSpec |
versionSpec := self project versionSpec.
versionSpec versionString: versionString.
defined := false.
[ pragmaColl
do: [ :pragma |
executionBlock value: versionSpec value: pragma.
defined := true ] ]
on: Error
do: [ :ex |
(MetacelloErrorInProjectConstructionNotification
versionString: versionSpec versionString
exception: ex)
ifTrue: [ ^ ex pass ]
ifFalse: [ self errorMap at: versionSpec versionString put: ex.
defined := false ] ].
defined
ifTrue: [ self validateVersionString: versionString againstSpec: versionSpec.
versionMap
at: versionSpec versionString
put: versionSpec createVersion ].
self reset ] in MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
Receiver: a MetacelloVersionConstructor
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
root: nil
configuration: a ConfigurationOfOSSubprocess
project: MetacelloMCProject()
attributeMap: a Dictionary(#common->an OrderedCollection([ spec
baseline: 'OSS...etc...
attributeOrder: an OrderedCollection(#common)
symbolicVersion: nil
currentContext: nil
errorMap: nil
[ :assoc | aBlock value: assoc key value: assoc value ] in Dictionary>>keysAndValuesDo:
Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
Arguments and temporary variables:
aBlock: [ :versionString :pragmaColl |
| versionSpec |
versionSpec := self pro...etc...
assoc: 'v0.2.0'->an OrderedCollection(<version: 'v0.2.0'>)
Receiver's instance variables:
tally: 6
array: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...
[ :each | each ifNotNil: [ aBlock value: each ] ] in Dictionary>>associationsDo:
Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
Arguments and temporary variables:
aBlock: [ :assoc | aBlock value: assoc key value: assoc value ]
each: 'v0.2.0'->an OrderedCollection(<version: 'v0.2.0'>)
Receiver's instance variables:
tally: 6
array: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...
Array(SequenceableCollection)>>do:
Receiver: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'->an OrderedCollect...etc...
Arguments and temporary variables:
aBlock: [ :each | each ifNotNil: [ aBlock value: each ] ]
index: 3
Receiver's instance variables:
an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'->an OrderedCollect...etc...
Dictionary>>associationsDo:
Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
Arguments and temporary variables:
aBlock: [ :assoc | aBlock value: assoc key value: assoc value ]
Receiver's instance variables:
tally: 6
array: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...
Dictionary>>keysAndValuesDo:
Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
Arguments and temporary variables:
aBlock: [ :versionString :pragmaColl |
| versionSpec |
versionSpec := self pro...etc...
Receiver's instance variables:
tally: 6
array: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...
MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
Receiver: a MetacelloVersionConstructor
Arguments and temporary variables:
defined: true
versionMap: a Dictionary('0.2.2'->0.2.2 [MetacelloMCProject] )
executionBlock: [ :versionSpec :pragma |
(pragma argumentAt: 1) = versionSpec ...etc...
versionPragmaDict: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'...etc...
Receiver's instance variables:
root: nil
configuration: a ConfigurationOfOSSubprocess
project: MetacelloMCProject()
attributeMap: a Dictionary(#common->an OrderedCollection([ spec
baseline: 'OSS...etc...
attributeOrder: an OrderedCollection(#common)
symbolicVersion: nil
currentContext: nil
errorMap: nil
MetacelloVersionConstructor>>calculate:project:
Receiver: a MetacelloVersionConstructor
Arguments and temporary variables:
aConfig: a ConfigurationOfOSSubprocess
aProject: MetacelloMCProject()
versionMap: a Dictionary('0.2.2'->0.2.2 [MetacelloMCProject] )
symbolicVersionMap: a Dictionary()
executionBlock: [ :versionSpec :pragma |
(pragma argumentAt: 1) = versionSpec ...etc...
pragmaDict: nil
Receiver's instance variables:
root: nil
configuration: a ConfigurationOfOSSubprocess
project: MetacelloMCProject()
attributeMap: a Dictionary(#common->an OrderedCollection([ spec
baseline: 'OSS...etc...
attributeOrder: an OrderedCollection(#common)
symbolicVersion: nil
currentContext: nil
errorMap: nil
[ :cache |
self calculate: aConfig project: aProject.
cache at: cacheKey put: self project.
^ self ] in MetacelloVersionConstructor>>on:project:
Receiver: a MetacelloVersionConstructor
Arguments and temporary variables:
aConfig: a ConfigurationOfOSSubprocess
aProject: MetacelloMCProject()
cacheKey: ConfigurationOfOSSubprocess
cachedProject: nil
cache: a Dictionary()
Receiver's instance variables:
root: nil
configuration: a ConfigurationOfOSSubprocess
project: MetacelloMCProject()
attributeMap: a Dictionary(#common->an OrderedCollection([ spec
baseline: 'OSS...etc...
attributeOrder: an OrderedCollection(#common)
symbolicVersion: nil
currentContext: nil
errorMap: nil
[ :dict |
| cache |
cache := dict at: cacheName ifAbsent: [ ].
cache ~~ nil
ifTrue: [ | value hasEntry |
hasEntry := true.
value := cache at: key ifAbsent: [ hasEntry := false ].
hasEntry
ifTrue: [ ^ value ] ]
ifFalse: [ cache := cacheClass new.
dict at: cacheName put: cache ].
^ aBlock value: cache ] in MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
Receiver: a MetacelloPharo30Platform
Arguments and temporary variables:
cacheName: #versionConstructor
cacheClass: Dictionary
key: ConfigurationOfOSSubprocess
aBlock: [ :cache |
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
dict: a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
cache: a Dictionary()
Receiver's instance variables:
bypassProgressBars: false
bypassGoferLoadUpdateCategories: false
[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
Receiver: a MetacelloPharo30Platform
Arguments and temporary variables:
aBlock: [ :dict |
| cache |
cache := dict at: cacheName ifAbsent: [ ].
cache ...etc...
defaultDictionary: nil
dict: a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
Receiver's instance variables:
bypassProgressBars: false
bypassGoferLoadUpdateCategories: false
BlockClosure>>on:do:
Receiver: [ ^ aBlock value: dict ]
Arguments and temporary variables:
exception: an ExceptionSet
handlerAction: [ :ex |
(ex isKindOf: MetacelloStackCacheNotification)
ifTrue:...etc...
Receiver's instance variables:
outerContext: MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:...etc...
startpc: 100
numArgs: 0
MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
Receiver: a MetacelloPharo30Platform
Arguments and temporary variables:
aBlock: [ :dict |
| cache |
cache := dict at: cacheName ifAbsent: [ ].
cache ...etc...
defaultDictionary: nil
dict: a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
Receiver's instance variables:
bypassProgressBars: false
bypassGoferLoadUpdateCategories: false
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
Receiver: a MetacelloPharo30Platform
Arguments and temporary variables:
cacheName: #versionConstructor
cacheClass: Dictionary
key: ConfigurationOfOSSubprocess
aBlock: [ :cache |
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
Receiver's instance variables:
bypassProgressBars: false
bypassGoferLoadUpdateCategories: false
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:at:doing:
Receiver: a MetacelloPharo30Platform
Arguments and temporary variables:
cacheName: #versionConstructor
key: ConfigurationOfOSSubprocess
aBlock: [ :cache |
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
Receiver's instance variables:
bypassProgressBars: false
bypassGoferLoadUpdateCategories: false
MetacelloVersionConstructor>>on:project:
Receiver: a MetacelloVersionConstructor
Arguments and temporary variables:
aConfig: a ConfigurationOfOSSubprocess
aProject: MetacelloMCProject()
cacheKey: ConfigurationOfOSSubprocess
cachedProject: nil
Receiver's instance variables:
root: nil
configuration: a ConfigurationOfOSSubprocess
project: MetacelloMCProject()
attributeMap: a Dictionary(#common->an OrderedCollection([ spec
baseline: 'OSS...etc...
attributeOrder: an OrderedCollection(#common)
symbolicVersion: nil
currentContext: nil
errorMap: nil
MetacelloVersionConstructor class>>on:project:
Receiver: MetacelloVersionConstructor
Arguments and temporary variables:
aConfig: a ConfigurationOfOSSubprocess
aProject: MetacelloMCProject()
Receiver's instance variables:
superclass: MetacelloAbstractVersionConstructor
methodDict: a MethodDictionary(#calculate:project:->MetacelloVersionConstructor...etc...
format: 65544
layout: a FixedLayout
instanceVariables: nil
organization: a ClassOrganization
subclasses: nil
name: #MetacelloVersionConstructor
classPool: a Dictionary()
sharedPools: an OrderedCollection()
environment: a SystemDictionary(lots of globals)
category: #'Metacello-Core-Constructors'
traitComposition: {}
localSelectors: nil
ConfigurationOfOSSubprocess(ConfigurationOf)>>project
Receiver: a ConfigurationOfOSSubprocess
Arguments and temporary variables:
Receiver's instance variables:
project: MetacelloMCProject()
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>projectClassProject
Receiver: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'github://marianopeck...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
loader: nil
mutable: nil
name: 'OSSubprocess'
className: 'ConfigurationOfOSSubprocess'
versionString: #stable
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'github://marianopeck/OSSubprocess/repository'
file: nil
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>version
Receiver: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'github://marianopeck...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
loader: nil
mutable: nil
name: 'OSSubprocess'
className: 'ConfigurationOfOSSubprocess'
versionString: #stable
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'github://marianopeck/OSSubprocess/repository'
file: nil
[ self version ] in MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
Receiver: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'github://marianopeck...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
loader: nil
mutable: nil
name: 'OSSubprocess'
className: 'ConfigurationOfOSSubprocess'
versionString: #stable
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'github://marianopeck/OSSubprocess/repository'
file: nil
BlockClosure>>on:do:
Receiver: [ self version ]
Arguments and temporary variables:
exception: MetacelloVersionDoesNotExistError
handlerAction: [ :ex | ^ nil ]
Receiver's instance variables:
outerContext: MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>vers...etc...
startpc: 29
numArgs: 0
MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
Receiver: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'github://marianopeck...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
loader: nil
mutable: nil
name: 'OSSubprocess'
className: 'ConfigurationOfOSSubprocess'
versionString: #stable
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'github://marianopeck/OSSubprocess/repository'
file: nil
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>loadedPackageNames:
Receiver: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'github://marianopeck...etc...
Arguments and temporary variables:
aLoader: a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
vrsn: nil
pkgs: nil
Receiver's instance variables:
project: BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
loader: nil
mutable: nil
name: 'OSSubprocess'
className: 'ConfigurationOfOSSubprocess'
versionString: #stable
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'github://marianopeck/OSSubprocess/repository'
file: nil
[ :prj |
prj className ~~ nil
ifTrue: [ | coll loaded |
coll := projectMap
at: prj className
ifAbsent: [ coll := OrderedCollection new.
projectMap at: prj className put: coll.
coll ].
(loaded := prj loadedPackageNames: aLoader) isEmpty
ifFalse: [ coll add: prj -> (loaded -> prj loadPackageList) ] ] ] in MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
Receiver: <<error during printing>>
Arguments and temporary variables:
defaultList: #('default')
aLoader: a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
loadedPackageNames: a Set('default')
projectMap: a Dictionary('ConfigurationOfOSSubprocess'->an OrderedCollection() ...etc...
loadedProjectNames: nil
list: nil
prj: spec
name: 'OSSubprocess';
versionString: #'stable';
repository: 'gith...etc...
coll: an OrderedCollection()
loaded: nil
Receiver's instance variables:
spec: spec repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFileTreePh...etc...
versionNumber: baseline
importedVersions: nil
versionStatus: nil
loaderPolicy: nil
OrderedCollection>>do:
Receiver: an OrderedCollection(spec
name: 'OSSubprocess';
versionString: #'stable';
repository: ...etc...
Arguments and temporary variables:
aBlock: [ :prj |
prj className ~~ nil
ifTrue: [ | coll loaded |
coll := pro...etc...
index: 1
Receiver's instance variables:
array: an Array(spec
name: 'OSSubprocess';
versionString: #'stable';
reposi...etc...
firstIndex: 1
lastIndex: 2
MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
Receiver: <<error during printing>>
Arguments and temporary variables:
defaultList: #('default')
aLoader: a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
loadedPackageNames: a Set('default')
projectMap: a Dictionary('ConfigurationOfOSSubprocess'->an OrderedCollection() ...etc...
loadedProjectNames: nil
list: nil
Receiver's instance variables:
spec: spec repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFileTreePh...etc...
versionNumber: baseline
importedVersions: nil
versionStatus: nil
loaderPolicy: nil
MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>>loadVersion:
Receiver: spec
name: 'GitFileTree';
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFil...etc...
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
project: ConfigurationOfGitFileTree(0.7 [ConfigurationOfGitFileTree], 0.8 [Conf...etc...
loader: a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitFi...etc...
mutable: nil
name: 'GitFileTree'
className: 'BaselineOfGitFileTree'
versionString: nil
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFi...etc...
file: nil
MetacelloProjectSpecForLoad>>performLoad
Receiver: a MetacelloProjectSpecForLoad
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
projectSpec: spec
name: 'GitFileTree';
repository: 'http://smalltalkhub.com/...etc...
useDetermineVersionForLoad: false
overrideProjectSpec: nil
MetacelloMCBaselineOfProjectSpec(MetacelloGenericProjectSpec)>>load
Receiver: spec
name: 'GitFileTree';
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFil...etc...
Arguments and temporary variables:
Receiver's instance variables:
project: ConfigurationOfGitFileTree(0.7 [ConfigurationOfGitFileTree], 0.8 [Conf...etc...
loader: a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitFi...etc...
mutable: nil
name: 'GitFileTree'
className: 'BaselineOfGitFileTree'
versionString: nil
operator: nil
loads: nil
preLoadDoIt: nil
postLoadDoIt: nil
projectPackage: nil
repositories: spec
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFi...etc...
file: nil
--- The full stack ---
MetacelloSemanticVersionNumber class(Object)>>error:
MetacelloSemanticVersionNumber class>>integerFromString:
[ :subString |
| integer |
forPattern
ifTrue: [ integer := subString ]
ifFalse: [ integer := self integerFromString: subString.
integer < 0
ifTrue: [ self
error:
'invalid version number: normal version component must be integer '
, subString printString ] ].
normalComponents add: integer.
identifierCount := identifierCount + 1 ] in MetacelloSemanticVersionNumber class>>fromString:forPattern:
OrderedCollection>>do:
MetacelloSemanticVersionNumber class>>fromString:forPattern:
MetacelloSemanticVersionNumber class>>fromString:
MetacelloMCVersionSpec(MetacelloVersionSpec)>>versionNumber
MetacelloMCVersion class(MetacelloVersion class)>>fromSpec:
MetacelloMCVersionSpec(MetacelloVersionSpec)>>createVersion
[ :versionString :pragmaColl |
| versionSpec |
versionSpec := self project versionSpec.
versionSpec versionString: versionString.
defined := false.
[ pragmaColl
do: [ :pragma |
executionBlock value: versionSpec value: pragma.
defined := true ] ]
on: Error
do: [ :ex |
(MetacelloErrorInProjectConstructionNotification
versionString: versionSpec versionString
exception: ex)
ifTrue: [ ^ ex pass ]
ifFalse: [ self errorMap at: versionSpec versionString put: ex.
defined := false ] ].
defined
ifTrue: [ self validateVersionString: versionString againstSpec: versionSpec.
versionMap
at: versionSpec versionString
put: versionSpec createVersion ].
self reset ] in MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
[ :assoc | aBlock value: assoc key value: assoc value ] in Dictionary>>keysAndValuesDo:
[ :each | each ifNotNil: [ aBlock value: each ] ] in Dictionary>>associationsDo:
Array(SequenceableCollection)>>do:
Dictionary>>associationsDo:
Dictionary>>keysAndValuesDo:
MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
MetacelloVersionConstructor>>calculate:project:
[ :cache |
self calculate: aConfig project: aProject.
cache at: cacheKey put: self project.
^ self ] in MetacelloVersionConstructor>>on:project:
[ :dict |
| cache |
cache := dict at: cacheName ifAbsent: [ ].
cache ~~ nil
ifTrue: [ | value hasEntry |
hasEntry := true.
value := cache at: key ifAbsent: [ hasEntry := false ].
hasEntry
ifTrue: [ ^ value ] ]
ifFalse: [ cache := cacheClass new.
dict at: cacheName put: cache ].
^ aBlock value: cache ] in MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
BlockClosure>>on:do:
MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:at:doing:
MetacelloVersionConstructor>>on:project:
MetacelloVersionConstructor class>>on:project:
ConfigurationOfOSSubprocess(ConfigurationOf)>>project
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>projectClassProject
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>version
[ self version ] in MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
BlockClosure>>on:do:
MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>loadedPackageNames:
[ :prj |
prj className ~~ nil
ifTrue: [ | coll loaded |
coll := projectMap
at: prj className
ifAbsent: [ coll := OrderedCollection new.
projectMap at: prj className put: coll.
coll ].
(loaded := prj loadedPackageNames: aLoader) isEmpty
ifFalse: [ coll add: prj -> (loaded -> prj loadPackageList) ] ] ] in MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
OrderedCollection>>do:
MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>>loadVersion:
MetacelloProjectSpecForLoad>>performLoad
MetacelloMCBaselineOfProjectSpec(MetacelloGenericProjectSpec)>>load
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
MetacelloProjectReferenceSpec>>loadUsing:gofer:
[ :pkg | pkg loadUsing: self gofer: gofer ] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
OrderedCollection>>do:
MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
[ super
linearLoadPackageSpecs: packageSpecs
repositories: repositories ] in MetacelloFetchingMCSpecLoader>>linearLoadPackageSpecs:repositories:
BlockClosure>>ensure:
MetacelloLoaderPolicy>>pushLoadDirective:during:
MetacelloLoaderPolicy>>pushLinearLoadDirectivesDuring:for:
MetacelloFetchingMCSpecLoader>>linearLoadPackageSpecs:repositories:
MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>load
MetacelloMCVersionSpecLoader>>load
MetacelloMCVersion>>executeLoadFromArray:
[ :dict | ^ self executeLoadFromArray: anArray ] in [ self versionSpec loader: newLoader.
MetacelloPlatform current
useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
defaultDictionary: Dictionary new ] in [ [ self versionSpec loader: newLoader.
MetacelloPlatform current
useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
defaultDictionary: Dictionary new ]
ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
BlockClosure>>on:do:
MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
[ self versionSpec loader: newLoader.
MetacelloPlatform current
useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
defaultDictionary: Dictionary new ] in [ [ self versionSpec loader: newLoader.
MetacelloPlatform current
useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
defaultDictionary: Dictionary new ]
ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
BlockClosure>>ensure:
[ [ self versionSpec loader: newLoader.
MetacelloPlatform current
useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
defaultDictionary: Dictionary new ]
ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
MetacelloPharo30Platform(MetacelloPlatform)>>do:displaying:
MetacelloMCVersion>>fetchRequiredFromArray:
[ | fetchLoader |
fetchLoader := self
fetchRequiredFromArray: (self defaultPackageNamesToLoad: anArray).
MetacelloPlatform current
do: [ fetchLoader doLoad ]
displaying: 'Loading ' , displayString.
Transcript
cr;
show: '...finished ' , self versionNumber printString.
^ fetchLoader ] in MetacelloMCVersion>>doLoadRequiredFromArray:
BlockClosure>>ensure:
MetacelloMCVersion>>doLoadRequiredFromArray:
MetacelloMCVersion>>load
[ | version loadedSpec |
self setDefaultsAndValidateProjectSpec.
[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
do:
[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
version := loadedSpec versionForScriptEngine: self.
self
root:
(required isEmpty
ifTrue: [ version load ]
ifFalse: [ version load: required ]) loadDirective.
loadedSpec loads: required.
MetacelloProjectRegistration
registrationForProjectSpec: loadedSpec
ifAbsent: [ :new |
new
loadedInImage: true;
registerProject ]
ifPresent: [ :existing :new |
existing
copyOnWrite: [ :existingCopy |
existingCopy
loadedInImage: true;
merge: new ] ] ] in [ self
handleNotificationsForAction: [ | version loadedSpec |
self setDefaultsAndValidateProjectSpec.
[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
do:
[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
version := loadedSpec versionForScriptEngine: self.
self
root:
(required isEmpty
ifTrue: [ version load ]
ifFalse: [ version load: required ]) loadDirective.
loadedSpec loads: required.
MetacelloProjectRegistration
registrationForProjectSpec: loadedSpec
ifAbsent: [ :new |
new
loadedInImage: true;
registerProject ]
ifPresent: [ :existing :new |
existing
copyOnWrite: [ :existingCopy |
existingCopy
loadedInImage: true;
merge: new ] ] ] ] in MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
BlockClosure>>on:do:
[ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ] in [ [ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
on:
MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
, MetacelloAllowConflictingProjectUpgrade
do:
[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ] in [ [ [ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
on:
MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
, MetacelloAllowConflictingProjectUpgrade
do:
[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
on: MetacelloAllowLockedProjectChange
do:
[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
[ [ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
on:
MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
, MetacelloAllowConflictingProjectUpgrade
do:
[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ] in [ [ [ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
on:
MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
, MetacelloAllowConflictingProjectUpgrade
do:
[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
on: MetacelloAllowLockedProjectChange
do:
[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
[ [ [ actionBlock
on:
MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
, MetacelloProjectSpecLoadedNotification
, MetacelloScriptEnsureProjectLoadedForDevelopment
, MetacelloLookupBaselineSpecForEnsureLoad
do:
[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
on:
MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
, MetacelloAllowConflictingProjectUpgrade
do:
[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
on: MetacelloAllowLockedProjectChange
do:
[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
MetacelloScriptEngine>>handleNotificationsForAction:
[ self
handleNotificationsForAction: [ | version loadedSpec |
self setDefaultsAndValidateProjectSpec.
[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
do:
[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
version := loadedSpec versionForScriptEngine: self.
self
root:
(required isEmpty
ifTrue: [ version load ]
ifFalse: [ version load: required ]) loadDirective.
loadedSpec loads: required.
MetacelloProjectRegistration
registrationForProjectSpec: loadedSpec
ifAbsent: [ :new |
new
loadedInImage: true;
registerProject ]
ifPresent: [ :existing :new |
existing
copyOnWrite: [ :existingCopy |
existingCopy
loadedInImage: true;
merge: new ] ] ] ] in MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
BlockClosure>>ensure:
MetacelloProjectRegistration class>>copyRegistryRestoreOnErrorWhile:
MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
MetacelloScriptEngine>>load:
[ :projectSpec |
| engine |
engine := MetacelloScriptEngine new
options: self options copy;
projectSpec: projectSpec;
yourself.
engine perform: actionArg key withArguments: actionArg value.
engine root ifNotNil: [ :root | self roots add: root ] ] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute:
[ :projectSpec |
projectSpec
ifNotNil: [ projectSpecBlock
value: (self applyArgsToProjectSpec: projectSpec copy) ] ] in MetacelloScriptApiExecutor>>executeString:do:
Array(SequenceableCollection)>>do:
MetacelloScriptApiExecutor>>executeString:do:
ByteString(String)>>execute:against:
MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute:
Metacello>>execute:args:
Metacello>>load
UndefinedObject>>DoIt
OpalCompiler>>evaluate
RubSmalltalkEditor>>evaluate:andDo:
RubSmalltalkEditor>>highlightEvaluateAndDo:
[ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] in [ textMorph textArea
handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate:
RubEditingArea(RubAbstractTextArea)>>handleEdit:
[ textMorph textArea
handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
[ | aWidget |
aWidget := aSystemWindow openAsIs.
self activeHand mouseFocus: aWidget.
[ aWidget world notNil ]
whileTrue: [ aWidget outermostWorldMorph doOneCycle ] ] in SystemWindow(Morph)>>openModal:
BlockClosure>>ensure:
SystemWindow(Morph)>>openModal:
SystemWindow>>openModal:
Pharo3Theme(UITheme)>>textEditorIn:text:title:entryText:entryHeight:
MorphicUIManager>>multiLineRequest:initialAnswer:answerHeight:
MCSmalltalkhubRepository class(MCRepository class)>>fillInTheBlankConfigure:
MCSmalltalkhubRepository(MCRepository)>>openAndEditTemplateCopy
MCWorkingCopyBrowser>>editRepository
MCWorkingCopyBrowser(Object)>>perform:orSendTo:
[ | selArgCount |
"show cursor in case item opens a new MVC window"
(selArgCount := selector numArgs) = 0
ifTrue: [ target perform: selector ]
ifFalse: [ selArgCount = arguments size
ifTrue: [ target perform: selector withArguments: arguments ]
ifFalse: [ target perform: selector withArguments: (arguments copyWith: evt) ].
self showShortcut ].
self changed ] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
BlockClosure>>ensure:
CursorWithMask(Cursor)>>showWhile:
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
ToggleMenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>handleMouseUp:
MouseButtonEvent>>sentTo:
[ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with:
BlockClosure>>ensure:
MorphicEventDispatcher>>dispatchEvent:with:
ToggleMenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>handleMouseUp:
MouseButtonEvent>>sentTo:
[ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with:
BlockClosure>>ensure:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>handleFocusEvent:
[ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ] in HandMorph>>sendFocusEvent:to:clear:
BlockClosure>>on:do:
WorldMorph(PasteUpMorph)>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[ :h |
ActiveHand := h.
h processEvents.
ActiveHand := nil ] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
[ [ World doOneCycle.
Processor yield.
false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess
[ self value.
Processor terminateActive ] in BlockClosure>>newProcess
-------------------------------------------------------------------------------