Grafikus tervezőrendszerek programozása

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

description

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. - PowerPoint PPT Presentation

Transcript of Grafikus tervezőrendszerek programozása

Page 1: Grafikus tervezőrendszerek programozása

Grafikus tervezőrendszerek programozása

10. előadás

Page 2: Grafikus tervezőrendszerek programozása

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

Page 3: Grafikus tervezőrendszerek programozása

DCL példa

Page 4: Grafikus tervezőrendszerek programozása

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

Page 5: Grafikus tervezőrendszerek programozása

Hierarchikus fa

Page 6: Grafikus tervezőrendszerek programozása

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

Page 7: Grafikus tervezőrendszerek programozása

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

Page 8: Grafikus tervezőrendszerek programozása

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

Page 9: Grafikus tervezőrendszerek programozása

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;

}

Page 10: Grafikus tervezőrendszerek programozása

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

Page 11: Grafikus tervezőrendszerek programozása

Szintakszis 5.

• Egy definiált zónára hivatkozni is lehet name;

ill. : name {

attribute = value;

}

Page 12: Grafikus tervezőrendszerek programozása

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!

Page 13: Grafikus tervezőrendszerek programozása

Definiált zóna típusok

Page 14: Grafikus tervezőrendszerek programozása

Egyszerű példa, DCLhello : dialog {

label = ”Hello World Példa”;

: text {

label = ”Hello World!”;

}

: button {

key = ”accept”;

label = ”Rendben”;

is_default = true;

}

}

Page 15: Grafikus tervezőrendszerek programozása

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)

)

Page 16: Grafikus tervezőrendszerek programozása

Á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

Page 17: Grafikus tervezőrendszerek programozása

Név és kor lekérdezése

DCL dialógus ablak

Érvénytelen kor megadása

Végső dilógus ablak

Page 18: Grafikus tervezőrendszerek programozása

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;

}

Page 19: Grafikus tervezőrendszerek programozása

DCL ablak szerkezete 2. : edit_box {

label = "Hány éves vagy: ";

mnemonic = "H";

key = "kor";

alignment = centered;

edit_limit = 3;

edit_width = 3;

value = "";

}

Page 20: Grafikus tervezőrendszerek programozása

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

: errtile { width = 34; }}

Page 21: Grafikus tervezőrendszerek programozása

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)))

Page 22: Grafikus tervezőrendszerek programozása

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)

)

)

Page 23: Grafikus tervezőrendszerek programozása

Kor ellenőrző függvény

(defun kor_ell ()

(if (< (atoi (get_tile "kor")) 1)

(set_tile "error" "Nem érvényes kor!")

(done_dialog)

)

)

Page 24: Grafikus tervezőrendszerek programozása

DCG = DCL code generator

Page 25: Grafikus tervezőrendszerek programozása

DCG 1.

Page 26: Grafikus tervezőrendszerek programozása

DCG 2.

Page 27: Grafikus tervezőrendszerek programozása

DCG 3.

Page 28: Grafikus tervezőrendszerek programozása

DCG 4.

Page 29: Grafikus tervezőrendszerek programozása

DCG 5.

Page 30: Grafikus tervezőrendszerek programozása

DCG 6.

Page 31: Grafikus tervezőrendszerek programozása

DCG 7.

Page 32: Grafikus tervezőrendszerek programozása

DCG 8.

Page 33: Grafikus tervezőrendszerek programozása

DCG 9.