Next steps for MCP?
Lic. Edgar J. De Cleene
edgardec2001 at yahoo.com.ar
Sun May 25 11:10:22 UTC 2003
On 25/05/03 08:19, "Daniel Vainsencher" <danielv at netvision.net.il> wrote:
> I wonder if you find this interesting - the class category
> Morphic-Experimental sounds to me unessential to Morphic. But looking at
> the reference graph using SpT, I see that actually, Morphic-Kernel does
> depend on it in a few ways. The *PropertiesMorph classes are referenced
> by Morph. This requires some sleuthing as to whether the *PropertyMorphs
> should actually be in the Squeak core (in which case, they should be
> moved out of the category *Experimental), or that they should be made
> somehow optional extensions, which would require some design solution.
Daniel:
Here is what I do for removing Morphic-Experimental from image.
If any could say this is correct, or test, could send more of this.
Smalltalk organization addCategory: 'Morphic-AlignmentMorphBob1'.
SystemOrganization classifyAll: #(AlignmentMorphBob1) under:
'Morphic-AlignmentMorphBob1'.
InformAbout removeSuspectMethods: 'Morphic-Experimental*'.
toRemove _ SystemOrganization categoriesMatching: 'Morphic-Experimental*'.
toRemove do: [:each | SystemOrganization removeSystemCategory: each].
Smalltalk garbageCollect.
Edgar
-------------- next part --------------
Object subclass: #InformAbout
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'RemovalThings'!
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!
InformAbout class
instanceVariableNames: ''!
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 3/29/2003 07:41'!
classInThisCategorie: aCategory
| newBrowser catList |
newBrowser _ Browser new.
catList _ newBrowser systemCategoryList.
newBrowser systemCategoryListIndex:
(catList indexOf: aCategory asSymbol ifAbsent: [^ self inform: 'No such category']).
^ newBrowser classList.! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 3/30/2003 07:18'!
informCategories: aString
| categorieList classList aStream associationList actualClass |
aStream _ WriteStream on: String new.
categorieList _ SystemOrganization categoriesMatching: aString.
categorieList
do: [:aCategorie | aStream print: aCategorie;
cr].
aStream print: 'This are the categories matching ' , aString;
cr.
categorieList
do: [:aCategorie |
classList _ self classInThisCategorie: aCategorie.
aStream tab; tab; print: '=== Class ========= Method ==='; cr.
classList
do: [:aClass |
aStream tab; print: aClass; cr.
actualClass _ Smalltalk
atOrBelow: aClass
ifAbsent: [^ nil].
associationList _ Smalltalk
allCallsOn: (Smalltalk associationAt: actualClass theNonMetaClass name).
associationList
do: [:aAssociation |
aStream tab; tab; print: aAssociation classSymbol asString.
aStream tab; tab; print: aAssociation methodSymbol asString; cr].
aStream print: 'This are the associations in class '.
aStream print: aClass asString;
cr].aStream print: 'This are the classes in ' , aCategorie asString;
cr.].
StringHolder new contents: aStream contents;
openLabel: aString , ' Use in this image '! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/16/2003 07:12'!
limpieza0
"NOTE: This method assumes that
* ALL WINDOWS HAVE BEEN CLOSED (most importantly all project windows)
* ALL GLOBAL FLAPS HAVE BEEN DESTROYED (not just disabled)
This method may needs to be run twice - upon the first run you will probably receive an error message saying 'still have obsolete behaviors'. Close the notifier and try again. If there are still obsolete behaviors then go looking for them.
Last update: ar 8/18/2001 01:14 for Squeak 3.1"
| ss |
"Delete all projects"
Project allSubInstancesDo:[:p|
(p == Project current) ifFalse:[Project deletingProject: p].
].
"Fix up for some historical problem"
Smalltalk allObjectsDo:[:o|
o isMorph ifTrue:[o removeProperty: #undoGrabCommand].
].
"Hm ... how did this come in?!!"
Smalltalk keys do:[:x|
(x class == String and:[(Smalltalk at: x) isBehavior]) ifTrue:[Smalltalk removeKey: x].
].
"Remove stuff from References"
References keys do:[:k| References removeKey: k].
"Reset command history"
CommandHistory resetAllHistory.
"Clean out Undeclared"
Undeclared removeUnreferencedKeys.
"Reset scripting system"
StandardScriptingSystem initialize.
"Reset preferences"
Preferences
chooseInitialSettings;
installBrightWindowColors.
"Do a nice fat GC"
Smalltalk garbageCollect.
"Dependents mean that we're holding onto stuff"
(Object classPool at: #DependentsFields) size > 1
ifTrue: [self error:'Still have dependents'].
"Initialize Browser (e.g., reset recent classes etc)"
Browser initialize.
"Check for Undeclared"
Undeclared isEmpty
ifFalse: [self error:'Please clean out Undeclared'].
"Remove graphics we don't want"
ScriptingSystem deletePrivateGraphics.
"Remove a few text styles"
#(Helvetica Palatino Courier) do:
[:n | TextConstants removeKey: n ifAbsent: []].
"Dump all player uniclasses"
Smalltalk at: #Player ifPresent:[:player|
player allSubclassesDo:[:cls|
cls isSystemDefined ifFalse:[cls removeFromSystem]]].
"Dump all Wonderland uniclasses"
Smalltalk at: #WonderlandActor ifPresent:[:wnldActor|
wnldActor allSubclassesDo:[:cls|
cls isSystemDefined ifFalse:[cls removeFromSystem]]].
"Attempt to get rid of them"
Smalltalk garbageCollect.
"Dump change sets"
ChangeSorter removeChangeSetsNamedSuchThat:
[:cs| cs name ~= Smalltalk changes name].
"Clear current change set"
Smalltalk changes clear.
Smalltalk changes name: 'Unnamed1'.
Smalltalk garbageCollect.
"Reinitialize DataStream; it may hold on to some zapped entitities"
DataStream initialize.
"Remove refs to old ControlManager"
ScheduledControllers _ nil.
"Flush obsolete subclasses"
Behavior flushObsoleteSubclasses.
Smalltalk garbageCollect.
"Clear all server entries"
ServerDirectory serverNames do: [:each | ServerDirectory removeServerNamed: each].
SystemVersion current resetHighestUpdate.
ss _ Set allSubInstances.
'Rehashing all sets' displayProgressAt: Sensor cursorPoint from: 1 to: ss size during:[:bar|
1 to: ss size do:[:i|
bar value: i.
(ss at: i) rehash.
].
].
SystemDictionary removeSelector: #makeSqueaklandRelease.
! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/16/2003 10:06'!
moreSuspectMethods: aSymbol
| categorieList aStream tokens moreSuspects |
aStream _ WriteStream on: String new.
categorieList _ (Smalltalk allMethodsInCategory: aSymbol)
collect: [:each |
tokens _ each findTokens: ' '.
tokens].
categorieList
do: [:each | each
pairsDo: [:aClass :aMethod |
aStream print: aClass;
tab.
aStream print: aMethod;
cr.
aStream print: 'Otros sospechosos ';
cr.
moreSuspects _ Smalltalk allCallsOn: aMethod asSymbol.
moreSuspects
do: [:ms | aStream print: ms;
cr].
aStream print: ' <====== ====>']].
StringHolder new contents: aStream contents;
openLabel: 'This are the usual suspect in ' , aSymbol! !
!InformAbout class methodsFor: 'as yet unclassified'!
removeClassCategories: t1
| t2 t3 t4 |
t2 _ (Smalltalk allMethodsInCategory: t1)
collect: [:t5 |
t3 _ t5 findTokens: ' '.
t3 _ t3 copyWithoutIndex: 2].
t2
do: [:t5 | t5
pairsDo: [:t6 :t7 |
t4 _ Smalltalk
atOrBelow: t6 asSymbol
ifAbsent: [].
t4 class removeSelector: t7 asSymbol]].
Smalltalk removeEmptyMessageCategories.
Smalltalk garbageCollect! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/16/2003 09:42'!
removeClassCategoriesContaining: aString
| listaClasesYmetodos tokens actualClass aList |
aList _ Symbol selectorsContaining:aString.
aList do: [ :aSymbol |
listaClasesYmetodos _ (Smalltalk allMethodsInCategory: #aSymbol)
collect: [:each |
tokens _ each findTokens: ' '.
tokens _ tokens copyWithoutIndex: 2].
listaClasesYmetodos
do: [:each | each
pairsDo: [:aClass :methodo |
actualClass _ Smalltalk
atOrBelow: aClass asSymbol
ifAbsent: [].
actualClass class removeSelector: methodo asSymbol]]].
Smalltalk removeEmptyMessageCategories.
Smalltalk garbageCollect! !
!InformAbout class methodsFor: 'as yet unclassified'!
removeMethodsInCategory: t1
| t2 t3 t4 |
t2 _ (Smalltalk allMethodsInCategory: t1)
collect: [:t5 |
t3 _ t5 findTokens: ' '.
t3 _ t3 copyWithoutIndex: 2].
t2
do: [:t5 | t5
pairsDo: [:t6 :t7 |
t4 _ Smalltalk
atOrBelow: t6 asSymbol
ifAbsent: [].
t4 removeSelector: t7 asSymbol]]! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/20/2003 08:47'!
removeMoreSuspectMethods: aString
| categorieList tokens actualClass |
categorieList _ (Smalltalk allMethodsInCategory: aString asSymbol)
collect: [:each |
tokens _ each findTokens: ' '.
tokens
remove: 'class'
ifAbsent: [].
tokens].
categorieList
do: [:each | each
pairsDo: [:aClass :aMethod |
actualClass _ Smalltalk
atOrBelow: aClass asSymbol
ifAbsent: [].
actualClass removeSelector: aMethod asSymbol]].
Smalltalk removeEmptyMessageCategories.
Smalltalk garbageCollect! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/20/2003 17:05'!
removeOtherSuspectMethods: aSymbol
| associationList actualClass |
associationList _ Smalltalk allImplementorsOf: aSymbol.
associationList
do: [:aAssociation | aAssociation classSymbol isLiteral
ifTrue: [actualClass _ Smalltalk
atOrBelow: aAssociation classSymbol
ifAbsent: [^ nil].
(actualClass methodDict includesKey: aAssociation methodSymbol asSymbol) ifTrue: [
actualClass removeSelector: aAssociation methodSymbol asSymbol]
ifFalse: [
actualClass class removeSelector: aAssociation methodSymbol asSymbol]
]
ifFalse: [aAssociation classSymbol removeSelector: aAssociation methodSymbol asSymbol]]! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 4/22/2003 05:40'!
removeSuspectMethods: aString
| categorieList classList associationList actualClass t7 |
categorieList _ SystemOrganization categoriesMatching: aString.
categorieList
do: [:aCategorie |
classList _ self classInThisCategorie: aCategorie].
classList
do: [:aClass |
actualClass _ Smalltalk
atOrBelow: aClass
ifAbsent: [^ nil].
associationList _ Smalltalk
allCallsOn: (Smalltalk associationAt: actualClass theNonMetaClass name).
associationList
do: [:aAssociation |
t7 _ classList
detect: [:t11 | t11 = aAssociation classSymbol]
ifNone: [aAssociation classSymbol isLiteral ifTrue:[
actualClass _ Smalltalk
atOrBelow: aAssociation classSymbol
ifAbsent: [^ nil].
actualClass removeSelector: aAssociation methodSymbol asSymbol] ifFalse: [aAssociation classSymbol removeSelector: aAssociation methodSymbol asSymbol].
].
]].
! !
!InformAbout class methodsFor: 'as yet unclassified' stamp: 'edc 5/21/2003 08:54'!
suspectMethods: aString
| categorieList classList aStream associationList actualClass t7 |
aStream _ WriteStream on: String new.
categorieList _ SystemOrganization categoriesMatching: aString.
categorieList
do: [:aCategorie |
classList _ self classInThisCategorie: aCategorie].
classList ifNil: [ ^0].
classList
do: [:aClass |
self halt.
actualClass _ Smalltalk
atOrBelow: aClass
ifAbsent: [^ nil].
associationList _ Smalltalk
allCallsOn: (Smalltalk associationAt: actualClass theNonMetaClass name).
associationList
do: [:aAssociation |
t7 _ classList
detect: [:t11 | t11 = aAssociation classSymbol]
ifNone: [aStream print: aAssociation classSymbol asString.
aStream tab; tab; print: aAssociation methodSymbol asString; cr].
].
].
StringHolder new contents: aStream contents;
openLabel: 'This are the usual suspect in ', aString.
! !
More information about the Squeak-dev
mailing list
|