Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Grafikus tervezőrendszerek programozása 10. előadás.

Hasonló előadás


Az előadások a következő témára: "Grafikus tervezőrendszerek programozása 10. előadás."— Előadás másolata:

1 Grafikus tervezőrendszerek programozása 10. előadás

2 DCL bevezetés •DCL = Dialog Control Language •Párbeszédablakok programozási nyelve •AutoCAD ablakai is DCL-ben vannak írva •Például az acad.dcl file •Hierarchikus felépítésű nyelv

3 DCL példa

4 DCL alapok •A programozható párbeszédpanelek téglalap alakú részekre (zónákra, tile) tagolódnak. •A zónák önállóan programozhatók, és mozaikszerűen összeépíthetők. •Vannak passzív zónák, melyek csak megjelenítésre szolgálnak, és vannak aktív zónák is, melyek interaktív adatbevitelre szolgálnak

5 Hierarchikus fa

6 Jelkészlet •A DCL nyelv jelkészlete –Az abécé betűi és a számjegyek –Speciális jelek: { } = _. : ; " / * •Sztringen belül bármilyen jel előfordulhat •Megjegyzések (C típusúak): –// - egy sornyi megjegyzés –/* */ - jelek közötti megjegyzés

7 Szintakszis 1. •Fejléc dcl_settings : default_dcl_settings { audit = n; } •Ellenőrzi a DCL file szemantikáját •n értéke: –0 : Nincs ellenőrzés –1 : Hibákat ellenőrzi –2 : Figyelmeztetéseket ad –3 : Javaslatokat ad

8 Szintakszis 2. •Zóna definíciója name : item1 [ : item2 : item3... ] { attribute1 = value1; attribute2 = value2;... } •Ahol item már elözőleg definiált zóna •A name zóna örökli az összes item zóna attribútumát (balról – jobbra) •A {} zárójelek közötti rész az attribútumokat írhatja felül

9 Szintakszis 3. •Egy zóna neve csak betűket, számokat és az aláhúzás jelet tartalmazhatja •Például egy gomb definíciója: button : tile { fixed_height = true; is_tab_stop = true; }

10 Szintakszis 4. •Például az alapesetben kiválasztott gomb definíciója: default_button : button { is_default = true; } •Örökli az előző gomb definícióját és kiegészíti egy új attribútummal

11 Szintakszis 5. •Egy definiált zónára hivatkozni is lehet name; ill. : name { attribute = value; }

12 Szintakszis 6. •Attribútumok definiálása attribute = value; •Ahol: –attribute – egy érvényes kulcsszó –value – egy érték ami szöveg vagy kulcsszó •A sort a pontosvessző ( ; ) zárja!

13 Definiált zóna típusok

14 Egyszerű példa, DCL hello : dialog { label = ”Hello World Példa”; : text { label = ”Hello World!”; } : button { key = ”accept”; label = ”Rendben”; is_default = true; }

15 Egyszerű példa, AutoLisp (defun hello ( / dcl_id ) (setq dcl_id (load_dialog ”hello.dcl”)) (if (not (new_dialog ”hello” dcl_id)) (exit) ) (action_tile ”accept” ”(done_dialog)”) (start_dialog) (unload_dialog dcl_id) )

16 Általános LISP program DCL-el •DCL file betöltése: load_dialog •A dialógus definíciójának betöltése: new_dialog •A dialógus zónáinak beállítása ill. a zónák call-back függvények definíciója: Pl. action_tile •A dialógus ablak megjelenítése: start_dialog •A dialógus ablak kitöltése

17 Név és kor lekérdezése DCL dialógus ablak Érvénytelen kor megadása Végső dilógus ablak

18 DCL ablak szerkezete 1. nev_dcl : dialog { label = "Személyes adatok"; : edit_box { label = "Mi a neved: "; mnemonic = "N"; key = "nev"; alignment = centered; edit_limit = 30; edit_width = 30; }

19 DCL ablak szerkezete 2. : edit_box { label = "Hány éves vagy: "; mnemonic = "H"; key = "kor"; alignment = centered; edit_limit = 3; edit_width = 3; value = ""; }

20 DCL ablak szerkezete 3. : button { key = "accept"; label = "Rendben"; is_default = true; fixed_width = true; alignment = centered; } : errtile { width = 34; }

21 Név és kor lekérdezése (AutoLisp) (defun c:nev ( / dcl_id name age ) ; ellenörző függvények ide jönnek (setq dcl_id (load_dialog "name.dcl")) (if (not (new_dialog "nev_dcl" dcl_id)) (exit) ) (set_tile "nev" "Ird ide a neved") (action_tile "nev" "(setq name $value)") (action_tile "kor" "(setq age $value)") (action_tile "accept" "(nev_ell)") (start_dialog) (unload_dialog dcl_id) (alert (strcat "Az Ön neve " name "\nés kora " age)) )

22 Név ellenőrző függvény (defun nev_ell () (if (or (= (get_tile ”nev”) ”Ird ide a neved”) (= (get_tile ”nev”) ””) ) (set_tile ”error” ”Nem adtad meg a neved!”) (kor_ell) )

23 Kor ellenőrző függvény (defun kor_ell () (if (< (atoi (get_tile "kor")) 1) (set_tile "error" "Nem érvényes kor!") (done_dialog) )

24 DCG = DCL code generator

25 DCG 1.

26 DCG 2.

27 DCG 3.

28 DCG 4.

29 DCG 5.

30 DCG 6.

31 DCG 7.

32 DCG 8.

33 DCG 9.


Letölteni ppt "Grafikus tervezőrendszerek programozása 10. előadás."