Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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
-
Definuj metodu #handleListenEvent:
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)!
| handler |
handler := MyHandler new.
World activeHand addEventListener: handler.
World activeHand removeEventListener: handler.
Toto půjde také, ale to je spíš low-level:
Sensor
waitButtonOrKeyboard;
nextEvent.
viz též:
#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ě.
-
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?
-
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)
-
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.
-
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".
-
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ř.:
| 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.