Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaEndre Farkas Megváltozta több, mint 10 éve
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.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.