Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: okalousek 30. 06. 2020, 00:38:53

Název: Interaktivita ve Smalltalku
Přispěvatel: okalousek 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
Název: Re:Interaktivita se Smalltalku
Přispěvatel: Johnny 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ě.
Název: Re:Interaktivita se Smalltalku
Přispěvatel: okalousek 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?
Název: Re:Interaktivita se Smalltalku
Přispěvatel: Ondrej Nemecek 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://squeak.org/documentation/)  https://pharo.org/documentation (https://pharo.org/documentation) https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/index.html (https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/index.html)
Název: Re:Interaktivita se Smalltalku
Přispěvatel: jb101 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 (https://www.youtube.com/playlist?list=PL2okA_2qDJ-kCHVcNXdO5wsUZJCY31zwf)
A Pharo books jako podpora https://books.pharo.org (https://books.pharo.org)
A když člověk lauter neví, tak Pharo má Discord channel.
Název: Re:Interaktivita se Smalltalku
Přispěvatel: Johnny 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".
Název: Re:Interaktivita ve Smalltalku
Přispěvatel: Pavel Křivánek 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.