Interaktivita ve Smalltalku

Interaktivita ve Smalltalku
« kdy: 30. 06. 2020, 00:38:53 »
Pokouším se udělat jednoduché rozhraní ve Smalltalku (konkrétně implementace Pharo) a zajímalo by mě jak získat od uživatele vstup z klávesnice bez použití dotazového dialogu. Vím že text se dá vypisovat na Transcript. Je něco jako transcript (nebo dokonce transcript) pro vstup? Myslím něco jako konzole (vstup i výstup).

Děkuji
« Poslední změna: 30. 06. 2020, 15:45:39 od Petr Krčmář »


Re:Interaktivita se Smalltalku
« Odpověď #1 kdy: 30. 06. 2020, 03:32:02 »
Definuj metodu #handleListenEvent:
Kód: (Smalltalk) [Vybrat]
MyHandler>>handleListenEvent: anEvent
Transcript crShow: anEvent
Pozor: tady se raději nespoléhej na to, že si tu metodu vytvoříš v Debuggeru, protože se bude volat pro každou událost (pohyb myši)!
Kód: (Smalltalk) [Vybrat]
| handler |
handler := MyHandler new.
World activeHand addEventListener: handler.
World activeHand removeEventListener: handler.
Toto půjde také, ale to je spíš low-level:
Kód: (Smalltalk) [Vybrat]
Sensor
waitButtonOrKeyboard;
nextEvent.

viz též:
Kód: (Smalltalk) [Vybrat]
#handleListenEvent: implementors.
#on:send:to: senders.

Tímto získáš údaje z myši a klávesnice globálně, ve vlastním okně to pak můžeš použít podobně.

Re:Interaktivita se Smalltalku
« Odpověď #2 kdy: 30. 06. 2020, 07:26:52 »
Děkuji. Divím se že v tom Smalltalku někdo umí. Nevypadá to na zrovna rozšířený jazyk. Pracujete v něm, nebo jste se ho naučil jen tak?
« Poslední změna: 30. 06. 2020, 07:29:22 od okalousek »

Re:Interaktivita se Smalltalku
« Odpověď #3 kdy: 30. 06. 2020, 12:37:23 »
Smalltalk - je to minorita, ale používá se v akademické sféře a existují v něm i velké projekty. Jako jazyk je hodně zajímavý, zejména ve variantách které přimíchávají některé další vlastnosti.

Kvalitní literatury je celkem dost, mimo VŠ skript třeba https://squeak.org/documentation/  https://pharo.org/documentation https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/index.html

Re:Interaktivita se Smalltalku
« Odpověď #4 kdy: 30. 06. 2020, 12:49:39 »
Kvalitní literatury je celkem dost, mimo VŠ skript třeba
Pharo MOOC je teď nově na youtube https://www.youtube.com/playlist?list=PL2okA_2qDJ-kCHVcNXdO5wsUZJCY31zwf
A Pharo books jako podpora https://books.pharo.org
A když člověk lauter neví, tak Pharo má Discord channel.


Re:Interaktivita se Smalltalku
« Odpověď #5 kdy: 30. 06. 2020, 14:12:03 »
Děkuji. Divím se že v tom Smalltalku někdo umí. Nevypadá to na zrovna rozšířený jazyk. Pracujete v něm, nebo jste se ho naučil jen tak?
Dostal jsem se k němu na akademické půdě, ještě předtím, než vzniklo Pharo. Ve Squeaku byl tou dobou docela chaos pro praktické využití, nyní je to už docela jiná káva. Pracuji v něm pro bussiness i pro zábavu. Především proto, že mi Smalltalk dává daleko větší smysl než "ten zbytek".

Re:Interaktivita ve Smalltalku
« Odpověď #6 kdy: 01. 07. 2020, 16:02:30 »
Pokud to jde vyhnul, bych se Morphicu nebo globálnímu odchytávání událostí z klávesnice a použil Spec 2. Např.:

Kód: [Vybrat]
| presenter |
presenter := SpButtonPresenter new.
presenter bindKeyCombination: $a asKeyCombination toAction: [ self inform: 'pressed' ].
presenter bindKeyCombination: $a shift asKeyCombination toAction: [ self inform: 'pressed with shift' ].
presenter openWithSpec.