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.
| 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. ]]
| 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
Hi Stef,
De: "Stephane Ducasse" stephane.ducasse@inria.fr
Para: "rmod" rmod@inria.fr, pharo-dev@lists.pharo.org,
pharo-users@lists.pharo.org
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)
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.
| 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. ]]
| 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
Thanks hernan.
I do not think that there is a fileList in newTools.
I will check your file dialog.
S
On 23 Nov 2023, at 20:43, Hernán Morales hernan-federico.morales@inria.fr wrote:
Hi Stef,
De: "Stephane Ducasse" <stephane.ducasse@inria.fr mailto:stephane.ducasse@inria.fr>
Para: "rmod" <rmod@inria.fr mailto:rmod@inria.fr>, pharo-dev@lists.pharo.org mailto:pharo-dev@lists.pharo.org, pharo-users@lists.pharo.org mailto:pharo-users@lists.pharo.org
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)
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.
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
The analysis is here
https://github.com/pharo-project/pharo/issues/14174
Here are some scripts.
| 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. ]]
| 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
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