Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:prolog:prolog_lab:prolog_lab_xpce [2008/04/20 00:11]
wojnicki
pl:prolog:prolog_lab:prolog_lab_xpce [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Prolog, graficzny interfejs użytkownika XPCE ====== 
  
-XPCE jest zorientowanym obiektowo podsystemem wizualizacji dla środowiska SWI-Prolog. 
-Pełna dokumentacja XPCE znajduje się pod adresem: http://​hcs.science.uva.nl/​projects/​xpce/​UserGuide/​ 
- 
-===== Wprowadzenie ===== 
- 
- 
-==== Tworzenie obiektów ==== 
- 
-new/2 (new(?​Reference,​ +NewTerm)) ​ umożliwia tworzenie obiektów graficznych,​ pierwszy argument zwraca referencje do utworzonego obieku (unikalny identyfikator) z użyciem @/1, drugi argument jest rodzajem obiektu (klasą) do utworzenia. 
- 
-<code prolog> 
-?- new(P, point(10,​20)). 
-P = @772024 
- 
-?- new(@demo, dialog('​Demo Window'​)). 
-</​code>​ 
- 
-free/1 (free(+Reference)) niszczy obiekty, argumentem jest identyfikator obiektu (pierwszy argument new/2). 
- 
-<code prolog> 
-?- free(@demo). 
-</​code>​ 
- 
-**Uwaga:** Wszystkie obiekty utworzone z wykorzysaniem //named reference// (@demo w powyższym przykładzie) muszą być usunięte za pomocą free/2 w celu uniknięcia wycieków pamięci. 
- 
-==== Modyfikacja stanu obiektów ==== 
- 
-Stan obiektu można zmodyfikować korzystając z predykatu: send/2. 
-Pierwszym argumentem jest referencja obiektu, drugim metoda do wykonania. 
-Poniższy przykład dodaje pole tekstowe do utworzonego wcześniej okna dialogowego. 
- 
-  ?- send(@demo, append(text_item(nazwa))). 
- 
-Aby wyświetlic tak utworzony obiekt należy użyc metody ''​open'':​ 
- 
-  ?- send(@demo, open). 
- 
-send można również dekomponując term, zatem powyższy przykład można zapisać jako: 
- 
-  ?- send(@demo, append, text_item(nazwa)). 
- 
-zatem kolejne argumenty send licząc od 3-go będą argumentami metody append. 
- 
-XPCE definiuje kilka standardowych obiektów m.in. @display oraz @prolog. 
-@display reprezentuje ekran. 
-@prolog jest obiektem reprezentującym maszynę wnioskującą. 
-Dowolny predykat zdefiniowany w Prologu jest metodą, w nomenkleaturze XPCE. 
-Zatem za pomocą send można uruchomic np. write/1: 
- 
-  ?- send(@prolog,​ write('​hello'​)). 
- 
- 
-==== Odpytywanie obiektów ==== 
- 
-get/3 (get(+Receiver,​ +Selector(+Argument...),​ -Result)) umożliwia uzyskanie informacji o stanie obiektu. 
-Np. aby dowiedzieć się jaka jest szerokość obiektu: 
- 
-  ?- get(@demo,​width,​X) 
- 
-albo o wartości wpisanej do pola tekstowego (metoda ''​member''​ wyszuka wlaściwy obiekt, po nazwie, jaka była uzyta do jego utworzenia w tym przypadku ''​nazwa''​):​ 
- 
-  ?- get(@demo, member(nazwa),​ ObiektTekstowy),​ get(ObiektTekstowy,​ selection, ToCoUzytkownikWpisal). 
- 
-Biorąc pod uwagę poniższy program: 
-<code prolog> 
-:- new(@demo, dialog('​Okno Testowe'​)),​ 
-   ​new(@txt,​text_item('​to Jest tekst:'​)),​ 
-   ​send(@demo,​append(@txt)),​ 
-   ​send(@demo,​open). 
-</​code>​ 
- 
-Zapytanie: 
- 
-  ?- get(@txt,​selection,​X). 
- 
-uzgodni z szukaną ''​X''​ wartość wprowadzoną przez użytkownika. 
- 
-  ?- get(@display,​width,​X). 
- 
- 
-==== Akcje ==== 
- 
-Aby zaprogramować zdarzenie związane z akcją użytkownika nalezy skorzystać z //​uśpionego//​ send. 
- 
-Poniższy kod utworzy okno o nazwie '​dialogowe'​ oraz przycisk '​nacisnij'​. 
-Po nacisnięciu przycisku na standardowym wyjściu pojawi się napiś 'au! nie naciskaj'​. 
- 
-<code prolog> 
-?- new(@okno,​dialog(dialogowe)),​ 
-   ​new(@but,​button(nacisnij,​message(@prolog,​write,'​au! nie naciskaj!\n'​))),​ 
-   ​send(@okno,​append,​@but),​ 
-   ​send(@okno,​open). 
-</​code>​ 
- 
-albo w krótszej wersji: 
- 
-<code prolog> 
-?- new(@okno,​dialog(dialogowe)),​ 
-   ​send(@okno,​append(button(nacisnij,​message(@prolog,​write,'​au! nie naciskaj!\n'​)))),​ 
-   ​send(@okno,​open). 
-</​code>​ 
- 
-=== Selektor === 
- 
-<code prolog> 
-wypisz(X):- 
-  new(Okno,​dialog(wpisales)),​ 
-  send(Okno,​append(text(X))),​ 
-  send(Okno,​open). 
-  ​ 
-ui:- 
-  new(Okno,​dialog(dialogowe)),​ 
-  send(Okno,​append(new(Txt,​text_item(pole_tekstowe)))),​ 
-  send(Okno,​append(button(nacisnij,​message(@prolog,​wypisz,​Txt?​selection)))),​ 
-  send(Okno,​open). 
- 
-:- ui. 
-</​code>​ 
- 
-W 9 lini występuje tzw. selektor. Pozwala on na wybranie określonej własności obiektu, która ma być przekazana. 
-W tym przypadku jest to wartość ''​selection''​ pola tekstowego (szukana ''​Txt''​),​ czyli tekst wpisany w pole przez użytkownika. 
pl/prolog/prolog_lab/prolog_lab_xpce.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0