1 / 33

Grafikus tervezőrendszerek programozása

Grafikus tervezőrendszerek programozása. 10. előadás. 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. DCL példa. DCL alapok.

cara-jacobs
Download Presentation

Grafikus tervezőrendszerek programozása

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ényeskor!") (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.

More Related