Object>> someConfirm:aString place:place fNotNil:a2inputValua"<---[ [ :p :answer | ^answer ]<---[ [_]-- self's caller returns ? ] ]" ^(( KEGNotificationSomething place:place if_placeMatches:( a2InputValua ifNil:[ [ :place :answer | ^answer ] ] )"<---[ [_]-- refactor ifNil: into Class ? ]" )signal:'NotifySomething Object>>someConfirm:place:ifNotNil:' with:[ :answer | ^answer ]"<---[ [_x ]-- a default ?^:( yes no place check ) [_x ]-- delete this line ?^:( no ) ]" ) ifNil:[ self confirmSomething:aStringOrSomething ]"<---[ [_]-- ^ here just looks messy to me? ]" ifNotNil:[ :x | x ]"<--------------------------------------------------[ [_]-- ^ here just looks messy to me? ]" BlockClosure>> on:notification_seq doPlaceCheckSeq:placeReturnvalue_seq ^( self on:( self classForKEG:( notification_seq next )at:#( BlockClosure on:doPlaceCheckSeq: ) ) do:[ :e | ( ( e place )=( placeReturnvalue_seq next ) ) ifTrue:[ e if_placeMatches value:place
value:( placeReturnvalue_seq next ) ]"<---[ [_]-- transpose? ]" ifFalse:[ self errorKEG:'( callerError:--( TestCase>>test )test place mis match )' ] ]"<---[ yes i think that this is better . i kept on balking at all those throw:at:s . too complicated too much repetition too many fiddley bits ]" [_x ]-- this is better than that throw thing?^:( yes i think so ) test ( self throw:returnVal at:#message ).( test )"<---[ is proliferation of throwing yuk Yuk ko ]"
test [ test-1 ]on:KEGNotificationSomething do:[ :e | e tag value:returnVal ]"<---[ the no place check default ]"
test #( ( NotifiClassName1 place1 false )( NotifiClassName2 place2 returnBool2 ) ( NotifiClassName3 place3 true )( NotifiClassName4 place4 true ) ( NotifiClassName5 place5 false )( NotifiClassName6 place6 true ) ( NotifiClassName7 place7 false )( NotifiClassName8 place8 true )... etc )orSomething asGen transpose reset ifNotNil:[ :notificationPlaceReturn_gen | "<------------------------------------[
on:doPlaceCheckSeq: does no initial reset ]"
[ test-1.notificationPlaceReturn_gen reset ."<---[ reuse the test array for each test ][ or don't ]" test-2.notificationPlaceReturn_gen reset . ... test-N ]on: notificationPlaceReturn_gen"<---[ or ( #Notification asGen repeatInfinite ) ]" doPlaceCheckSeq:notificationPlaceReturn_gen
ClassName>>someMethod"<---[ called by test-i ]" ... ( self someConfirm:'Please Confirm blablabla' place:#( ClassName someMethod 1 ) ifNotNil:nil )"<---[ nil --> [:p :a | ^a ] is the default or [ :place :answer | something ] is notNil and could be used for _? ]"
[ x ]-- if you do not have the latest KEGGenerator giant Package cluster _ then you could rig up some Stream hack job also or if there is some alternative or just whip out a to:by:do: and be done with it in two seconds flat why worry why should you have to learn this f yet another thing and it's large it's large it is large it's mostly comments but just go to implementorsOf: test_transepose or something he doesn't know i didn't know and BAM you know everything no you don't that's false advertising maybe some what false i forget i have not been wwwaaaasting my time again since then enough
the whole thing shoulda been written in CommonLisp et all much faster or lambdaOOP just forget about it
but i will use this Notify idea because why because it's better as in way better better enough to rip out the old thing ? yes i think so instead of all that throwing at: that i was doing mostly not doing and always going no don't do that again upon doing
sorry for wasting your time i know how you feel do i f do i know anything probably not so
ignore ignore ignore
everybody
ok
enough
On Thu, May 18, 2023 at 4:27 AM christoph.thiede@student.hpi.uni-potsdam.de wrote:
Seems to me an UI interaction is an event, not an exception. I’m all about making first class objects spit events so the container he’s in responds appropriately.
Sure, but something like an "information" or a "request to choose a folder" is not necessarily answered by the user but might be handled by an automator or a test instead. Exceptions are also first-class objects. But it might be another interesting to think about a UI system where all events (every mouse movement, click, keyboard press, etc.) are modeled through exceptions ... How could such a system look like? :D
Best, Christoph
On 2023-05-17T23:22:10+00:00, rabbit@callistohouse.org wrote:
Heh. I meant to type: “I “do not understand Exceptions (or Continuations) (or stacks)…”
❤️🔥🐰
On Wed, May 17, 2023 at 19:20, rabbit <[rabbit(a)callistohouse.org](mailto:On Wed, May 17, 2023 at 19:20, rabbit <<a href=)> wrote:
Also an interesting idea. I like to use events.I do not underestimate Exceptions, except basic use. Seems to me an UI interaction is an event, not an exception. I’m all about making first class objects spit events so the container he’s in responds appropriately.
What I really want is an eventual UI, along with the ability to have more than one instance of a VatProcessScheduler operating on a particular core.
❤️🔥🐰
On Wed, May 17, 2023 at 17:57, <[christoph.thiede(a)student.hpi.uni-potsdam.de](mailto:On Wed, May 17, 2023 at 17:57, <<a href=)> wrote:
Interesting idea ... and you could mock/override that user for tests. On the other hand, I was planning to implement all UIManager requests as Exceptions/Notifications (pluggable, nestable, catchable, etc.) ...
Best, Christoph
On 2023-05-17T19:46:17+00:00, rabbit(a)callistohouse.org wrote:
Cool beans. Got me thinking about Croquet. Would it provide more congruity to have a User object, with multiple views of a space (audio, video,text msg, LinkedIn feed) and be able to send #inform: and #confirm: to theUser?
❤️🔥🐰
On Wed, May 17, 2023 at 14:38, <[christoph.thiede(a)student.hpi.uni-potsdam.de](mailto:On Wed, May 17, 2023 at 14:38, <<a href=)> wrote:
=============== Summary ===============
Change Set: UIManagerInformTitle Date: 17 May 2023 Author: Christoph Thiede
Adds UIManager>>#inform:title:, analogously to existing #confirm:title.
Project uiManager inform: 'Squeak is great!' title: 'Important Note'
=============== Diff ===============
DummyUIManager>>inform:title: {ui requests} · ct 5/14/2023 21:27
- inform: aString title: titleString
- "Nothing to be done here"
- self askForProvidedAnswerTo: aString ifSupplied: [:answer |
- ^ answer].
MVCUIManager>>inform:title: {ui requests} · ct 5/14/2023 21:27
- inform: aString title: titleString
- "Display a message for the user to read and then dismiss"
- self askForProvidedAnswerTo: aString ifSupplied: [:answer |
- ^ answer].
- ^ PopUpMenu inform: (self dialogStringFromQuery: aString withTitle: titleString)
MorphicUIManager>>inform:title: {ui requests} · ct 5/14/2023 21:26
- inform: aString title: titleString
- "Display a message for the user to read and then dismiss"
- self askForProvidedAnswerTo: aString ifSupplied: [:answer |
- ^ answer].
- ^ UserDialogBoxMorph inform: aString title: titleString
UIManager>>inform:title: {ui requests} · ct 5/14/2023 21:27
- inform: aString title: titleString
- "Display a message for the user to read and then dismiss"
- ^self subclassResponsibility
---Sent from [Squeak Inbox Talk](https://github.com/hpi-swa-lab/squeak-inbox-talk) ["UIManagerInformTitle.1.cs"]