Hello people

If you want that Pharo just do not endlessly stay with such a crappy UI we all 
know,
please consider joining the effort.

We should make sure that as a general principle, a model MUST not refer to a 
UI. 
So that we can change the UI. We are working on it. But we need help.

We should 
        (1) Migrate last cool Morphic-based tools such as Finder, Settings to 
Spec2, FileList to Spec

        (2) Remove dependencies from Domain objects to Morphic (obviously)
                - remove to UIManager first from code outside Morphic. 

        As a general principle please watch
                
http://rmod-pharo-mooc.lille.inria.fr/AdvancedDesignMooc/Videos/M03_S5.mp4
                
http://rmod-pharo-mooc.lille.inria.fr/AdvancedDesignMooc/Videos/M09_S4.mp4
        It looks basic but it is so true. 


Current status 
        (1) 
                Hernan started to work on the Setting Browser
                I know someone started to work on Finder but I think the effort 
was stalled.
                We need help there.             
        
        (2) 
                We started to clean the refactorings and we are making progress 
but this is slow. 
                I started to remove references to UIManager because it should 
go away. 

                In Spec we introduced dialog, check the examples in subclasses 
of SpDialogPresenter
                        In addition, an application is able to create some 
default dialog
                        check ui - dialogs in SpApplication
                        I introduced a simple notification center that should 
play a kind of growl. 
                        The inform: calls should be redirected to notify: 
because inform: was in P11 not blocking and now in P12 there are. 

        I created special issues about the references to UIManager
        I opened issues with a special tag
                
https://github.com/pharo-project/pharo/issues?q=is%3Aissue+is%3Aopen+label%3A%22Project%3A+RemoveUIManager+BAD+dependencies%22

The analysis is here 

        https://github.com/pharo-project/pharo/issues/14174 
<https://github.com/pharo-project/pharo/issues/14174>       

Here are some scripts. 

# Here we see the dependencies from Spec to UIManager
| allSpec results |
results := Dictionary new. 
allSpec := SpPresenter withAllSubclasses.

UIManager selectors do: 
        [ :sel | 
                | size |
        size := ((SystemNavigation default allCallsOn: sel )
                select: [ :mth | allSpec includes: mth methodClass ]) size.
        size isZero ifFalse: [          
        results at: sel put:  size]].
String streamContents: [ :s | 
results keys sorted do: [ :k | 
        s nextPutAll: k , ' -> ', (results at: k) asString. s cr. ]]
# The following script shows the callers that are not in Spec nor in Morphic 
| allSpec results allMorphs |
results := Dictionary new. 
allSpec := SpPresenter withAllSubclasses.
allMorphs := Morph withAllSubclasses.
allClasses := Smalltalk allClasses.
allClasses := allClasses reject: [ :c | allSpec includes: c ].
allClasses := allClasses reject: [ :c | allMorphs includes: c ].

UIManager selectors sorted do: 
        [ :sel | 
                | size |
        size := ((SystemNavigation default allCallsOn: sel )
                select: [ :mth | allClasses includes: mth methodClass ]) size.
        size isZero ifFalse: [          
        results at: sel put:  size]].
String streamContents: [ :s | 
results keys sorted do: [ :k | 
        s nextPutAll: k , ' -> ', (results at: k) asString. s cr. ]]

abort: -> 1
abort:title: -> 5
activate -> 15
alert: -> 4
alert:title: -> 4
alert:title:configure: -> 2
beDefault -> 2
chooseDirectory -> 1
chooseDirectory: -> 1
chooseDirectory:from: -> 2
chooseDirectoryFrom: -> 1
chooseFrom: -> 2
chooseFrom:lines: -> 2
chooseFrom:lines:message: -> 1
chooseFrom:lines:message:title: -> 2
chooseFrom:lines:title: -> 8
chooseFrom:title: -> 5
chooseFrom:values: -> 5
chooseFrom:values:lines: -> 1
chooseFrom:values:lines:message: -> 1
chooseFrom:values:lines:message:title: -> 3
chooseFrom:values:lines:title: -> 4
chooseFrom:values:message:title: -> 4
chooseFrom:values:title: -> 8
chooseFullFileNameMatching: -> 1
chooseFullFileNameMatching:label: -> 1
chooseOrRequestFrom:values:lines:title: -> 3
confirm: -> 47
confirm:label: -> 5
confirm:label:trueChoice:falseChoice:cancelChoice:default: -> 1
confirm:orCancel: -> 1
confirm:trueChoice:falseChoice: -> 2
confirm:trueChoice:falseChoice:cancelChoice:default: -> 6
deactivate -> 5
debugProcess:context:label:fullView:notification: -> 1
defer: -> 24
deny: -> 2565
deny:title: -> 2
displayProgress:from:to:during: -> 4
edit:label: -> 4
edit:label:accept: -> 3
fileExistsDefaultAction: -> 1
handleDebugRequest:fromDebuggerSystem: -> 1
handleError: -> 2
handleError:log: -> 2
handleWarningDebugRequest:fromDebuggerSystem: -> 1
inform: -> 98
inform:actionOnClick: -> 1
informUser:during: -> 13
informUserDuring: -> 5
logError: -> 2
lowSpaceWatcherDefaultAction: -> 1
merge:informing: -> 2
multiLineRequest:initialAnswer:answerHeight: -> 5
newDisplayDepthNoRestore: -> 1
newMenuIn:for: -> 15
onPrimitiveError: -> 1
proceed:title: -> 2
question:title: -> 2
questionWithoutCancel: -> 1
questionWithoutCancel:title: -> 2
request: -> 13
request:initialAnswer: -> 19
request:initialAnswer:entryCompletion: -> 1
request:initialAnswer:title: -> 13
request:initialAnswer:title:entryCompletion: -> 6
requestDebuggerOpeningFor: -> 1
requestDebuggerOpeningForProcess:named:inContext: -> 1
requestDebuggerOpeningForWarning: -> 1
requestDebuggerOpeningNamed:inContext: -> 1
requestPassword: -> 3
restoreDisplay -> 3
restoreDisplayAfter: -> 1
spawnNewProcess -> 4
systemNotificationDefaultAction: -> 1
terminateUIProcess -> 1
textEntry: -> 2
textEntry:title: -> 2
textEntry:title:entryText: -> 2
unhandledErrorDefaultAction: -> 3
warningDefaultAction: -> 1



--------------------------------------------
Stéphane Ducasse
http://stephane.ducasse.free.fr / http://www.pharo.org 
03 59 35 87 52
Assistant: Aurore Dalle 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France



Reply via email to