Hi Stef, 

> De: "Stephane Ducasse" <[email protected]>
> Para: "rmod" <[email protected]>, [email protected],
> [email protected]
> Enviados: Jueves, 23 de Noviembre 2023 11:28:15
> Asunto: [rmod] Pharo needs you! Call to save the Pharo UI

> 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/M03_S5.mp4 ]
> [ http://rmod-pharo-mooc.lille.inria.fr/AdvancedDesignMooc/Videos/M09_S4.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.

As a reference so that anyone can check the new Settings current status, this 
is the repository I'm working on: 
https://github.com/hernanmd/new-settings-browser 

Regarding the FileList, I'm afraid we duplicate efforts unnecessarily: I worked 
some time ago on https://github.com/hernanmd/file-dialog and then I saw that 
https://github.com/pharo-spec/NewTools appeared, it's a pity to have such a bad 
communication. 

The issue to close is the following: 
https://github.com/pharo-project/pharo/issues/15455 

Cheers, 

Hernán 

> (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
> |
> 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