GUI - Introspekce událostí


Datový typ event!

Kromě názvů jednotlivých událostí (viz předchozí kapitola) existuje entita, zvaná datový typ event!, který obsahuje 13 funkcí, použitelných k introspekci prováděného kódu.

Instance datového typu event!

Název

Typ hodnoty

Vracená hodnota

type

word!

Název události

face

object!

Piškot, v němž k události došlo

window

object!

Okno, v němž k události došlo

offset

pair!

Souřadnice kurzoru myši, relativně k piškotu při výskytu události. Pro události gest vrací souřadnice středního bodu.

key

char! word!

Stlačení klávesnice

picked

integer! percent!

word!

Nová položka, vybraná v piškotu (integer! percent!). Při události myši down  v piškotu text-list vrací index položky pod kurzorem nebo none. Při události  wheel  vrací počet (+/-) otočení kolečka.  Při události  menu vrací odpovídající ID položky (word!). Při gestu zoom vrací procento relativního zvětšení/zmenšení. U jiných gest je jeho hodnota závislá na OS (Windows: pole allArguments ze struktury GESTUREINFO).

flags

block!

Vrací výpis s jedním či více flagy (away, down, mid-down, alt-down, aux-down, control, shift)

away?

logic!

Vrací true, opouští-li kurzor hranice piškotu . Platí pouze při aktivní události over.

down?

logic!

Vrací true, byla-li stisknuta levá klávesa myši

mid-down?

logic!

Vrací true, byla-li stisknuta střední klávesa myši

alt-down?

logic!

Vrací true , byla-li stisknuta pravá klávesa myši

ctrl?

logic!

Vrací true , byla-li stisknuta klávesa CTRL

shift?

logic!

Vrací true , byla-li stisknuta klávesa SHIFT


Seznam možných flagů v poli event/flags:  away, down, mid-down, alt-down, control, shift

Pokaždé, když v piškotu dojde k události typu event!, lze o ní získat informaci příkazem

>>  event/ <název typu>

Událost myši:

V níže uvedeném zjednodušeném příkladu vytiskneme typ události a souřadnice kurzoru při stisku myší klávesy (událost down)

Red [needs: view]


view [

   base 100x100

   on-down [

               print event/type

               print event/offset

       ]

]


down
39x57
down
86x43

Událost klávesnice:

Podobné informace získáme při vhodné volbě události pro klávesnici - zde například událost key:

Red [needs: view]


view [

   area 100x100

   on-key [

               print event/type

               print event/offset     ; chodí podívně

               print event/key

       ]

]


key
-59x84
r
key
-36x59
s
key
-116x79
o

Zdá se, že některé piškoty negenerují události klávesnice. Když například ve výše uvedeném příkladu zaměníme piškot area za base, nedostaneme v konzole žádný výsledek.

Velikost obrazovky:

>> print system/view/screens/1/size
1366x768

I don't have more information about system, except what you can get typing help system.