54
1 Tööjaamade tarkvara Tcl - Tool Command Language John Ousterhout University of California, Berkeley 1980ndate keskpaik tõsisem kasutuspind tekkis 90ndate alguses tänapäevane kuju: 1997-1999... siiani aktiivses arenduses

Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

1Tööjaamade tarkvara

Tcl - Tool Command Language● John Ousterhout● University of California, Berkeley● 1980ndate keskpaik● tõsisem kasutuspind tekkis 90ndate

alguses● tänapäevane kuju: 1997-1999...● siiani aktiivses arenduses

Page 2: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

2Tööjaamade tarkvara

Tcl - Tool Command Language● skriptimiskeel / interpretaator

● algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks

– tegelikult on ka suuri, iseseisvaid Tcl/Tk rakendusi

● liidesed erinevate keeltega (C, C++, Java)

– Tcl interpretaatori saab lihtsal viisil oma rakenduse sisse ehitada

● laiendatav

● hääldatakse nagu „tickle

Page 3: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

3Tööjaamade tarkvara

Tk - Tcl toolkit● Tcl tähtsaim laiendus

● graafiliste liideste loomiseks

● koos kasutades nimetatakse Tcl/Tk

● mitmed head küljed:

– arendustöö kiirus (interpreteeritav keel, pole vaja kompileerida)

– lihtsate kasutajaliideste defineerimine ongi lihtne

– kasutajaliides ja sisuline osa võivad olla üsnagi lahus

– mõistlikud vaikeväärtused Tk's

Page 4: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

4Tööjaamade tarkvara

Tcl - põhialused● sõnepõhine keel

– on ainult üks andmetüüp: sõne– ka käsud ise on sõned

● lihtne süntaks● suhteliselt vähe juhtkonstruktsioone● kõik on käsud, ka juhtkonstruktsioonid

on lihtsalt käsud

Page 5: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

5Tööjaamade tarkvara

Tcl - põhialused● käsu süntaks

käsk arg1 arg2 arg3● kaks käsku samal real:

käsk1; käsk2● käsu täitmine:

– argumentide grupeerimine (vajadusel)– väärtuste asendamine (käsu-

asendused,muutujate väärtused, varjestatud märgid)

– käsu väljakutsumine

Page 6: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

6Tööjaamade tarkvara

Tcl - esimene katseputs stdout {Hello, World!}

puts - käsk väljastamiseks

stdout - väljundkanali nimi

{} - stringi grupeerimseks, võiks kasutada ka ““

Page 7: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

7Tööjaamade tarkvara

Tcl - muutujad● sõnetüüpi muutujad● väärtustamine:

set muutuja väärtus● kasutamine

set teinemuutuja $muutuja● muutuja kaotamine

unset muutujaunset -nocomplain muutuja

Page 8: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

8Tööjaamade tarkvara

Tcl – eeldefineeritud muutujad

argc – käsureaargumentide arv

argv – käsureaargumentide massiiv

argv0 – käivitatud skripti nimi

env – keskkonnamuutujate massiiv

Page 9: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

9Tööjaamade tarkvara

Tcl - käsu asendamine● käsu väljund asendatakse teise käsu

sisse:set pikkus [string length minusõne]● sarnane konstruktsioon teistes shellides `käsk`

● ühel real saab olla mitu käsuasendamist, täidetakse vasakult paremale

● ühe käsuasendamise sees võib olla teisi, täidetakse seest väljapoole

Page 10: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

10Tööjaamade tarkvara

Tcl - juhtstruktuure

while {loog-avaldis} { käsud}

while {loog-avaldis} \{ käsud}

Page 11: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

11Tööjaamade tarkvara

Tcl - juhtstruktuureif {loog-avaldis} { käsud} elseif { käsud} else { käsud}

Page 12: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

12Tööjaamade tarkvara

Tcl - juhtstruktuurefor {algkäsk} {tingimus} {tsüklikäsk} { käsud}

for {set i 0} {$i < 10} {incr i} { set value [expr $value*$i]}

Page 13: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

13Tööjaamade tarkvara

Tcl - juhtstruktuureforeach muutuja {list} { käsud}

foreach {muut1 muut2} {l1 u1 l2 u2 l3 u3} { käsud}

Page 14: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

14Tööjaamade tarkvara

Tcl - juhtstruktuure● foreach üle mitme listi paralleelselt:foreach jrk {1 2 3} nimi {"Ülo" "Mart"\ "Kadri"} {

puts "Jrk: $jrk Nimi: $nimi"}

break - katkestab korduse

continue - alustab uut kordust

Page 15: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

15Tööjaamade tarkvara

Tcl - juhtstruktuureswitch -omadused -- $muutuja { väärtus1 {käsud} väärtus2 {käsud}}

● -omadused:– -exact– -glob– -regexp

Page 16: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

16Tööjaamade tarkvara

Tcl - juhtstruktuure● catch - vigade "püüdmine"

catch {käsk}

if {[catch {käsk} tulemus]} { veatöötluskäsud} else { eduka-tulemuse-käsud}

Page 17: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

17Tööjaamade tarkvara

Tcl - matemaatilised avaldised● Tcl matemaatilisi avaldisi ei arvuta● avaldiste väärtuste leidmiseks expr● expr avaldise süntaks sarnane C

avaldiste süntaksile

expr 1+2expr $x + $yset pi [expr 2*asin(1.0)]set pi [expr {2*asin(1.0)}]

Page 18: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

18Tööjaamade tarkvara

Tcl – varjestamine● varjestamiseks kasutatakse \set dollarigasõne \$10set teinesõne $dollarigasõneset unicode \u001bset hex \0x1bset oct \033

Page 19: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

19Tööjaamade tarkvara

Tcl – grupeerimine● grupeerimine "" abil

– asendused viiakse läbiset s Tereputs stdout "Sõne $s pikkus on [string length $s]."

Sõne Tere pikkus on 4.● grupeerimine {} abil

– asendusi ei tehtaputs stdout {Sõne $s pikkus on [string length $s].}

Sõne $s pikkus on [string length $s].

Page 20: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

20Tööjaamade tarkvara

Tcl – protseduurid● defineerimine:

proc nimi argumendid käsud

proc liitmine {a b} { return [expr {$a+$b}]}● väljakutsumine

liitmine 10 23

Page 21: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

21Tööjaamade tarkvara

Tcl - käivitamine UNIX'is

● interaktiivne käivitamine

> tclsh> wish (Koos Tk'ga)

● käivitamine käsufailina

#!/usr/bin/tclsh#!/usr/bin/wish

Page 22: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

22Tööjaamade tarkvara

Tcl: sõnetöötlus● funktsioon string

– esimene argument määrab operatsiooni, mida teostatakse

N.

string length "Tere"4● üle 20 võimaliku operatsiooni● operatsioonide nimekirja näeb, kui anda vale

argument:

string valeargument

Page 23: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

23Tööjaamade tarkvara

Tcl: sõnetöötlusfunktsioon string operatsioone:

length, bytelength - pikkus märkides, baitides

compare, equal - võrdlemine

match - pattern matching

tolower, toupper - suur/väiketähtede teisendamine

trimleft, trimright - sümbolite eemaldamine sõnest

Page 24: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

24Tööjaamade tarkvara

Tcl: sõnetöötlus● sõned ja expr:● sõnede võrdlemiseks saab kasutada eq, ne, ==, !=, < , >

● kõik peale eq, ne üritavad tõlgendada sõne arvuna

if {"0xa" == "10"} {puts stdout "võrdsed!"}

võrdsed!● sõnede puhul ohutum kasutada string compare, eq, ne

Page 25: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

25Tööjaamade tarkvara

Tcl: sõnetöötlus● märgiklassid, string is

– saab kontrollida, kas sõne märgid kuuluvad mingisse klassi või mitte

string is digit 101string is digit sõna0string is alnum sõna101

Page 26: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

26Tööjaamade tarkvara

Tcl: sõnetöötlus● väljastamine käsuga format

– printf analoog

format vormindus väärtus1 väärtus2 ...

format "%1\$d on hex: %1\$x" 46

Page 27: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

27Tööjaamade tarkvara

Tcl: grupeerimine● grupeerimine ({}, "")

– kaitseb ebasoovitavate asenduste eest– hoiab ära tarbetuid edasi-tagasi teisendusi– aitab koodi struktureerida

set x [expr {sqrt(2.0)}]set y [expr $x * $x]vs.

set y [expr {$x * $x}]

Page 28: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

28Tööjaamade tarkvara

Tcl: kommentaarid● # peab olema käsu alguses

# korrektne kommentaarset x 10 #ebakorrektne kommentaarset x 10;#korrektne kommentaar

Page 29: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

29Tööjaamade tarkvara

Tcl: kommentaarid● sulgude ja jutumärkide tasakaalu

arvestuses on kommentaarid kaasa arvatud!!

# if {avaldis1} {if {avaldis2} {käsud}● ülalolev kood põhjustab veateate

Page 30: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

30Tööjaamade tarkvara

Tcl: eval● sõne käsitlemine käsuna

set string "Hello Eval!"set cmd {puts stdout $string}eval $cmd

set cmd "puts stdout $string"eval $cmd

Page 31: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

31Tööjaamade tarkvara

Tcl: eval, koodi genereerimine● koodi käigu pealt genereerimine

– võimas vahend– ohtlik vahend– kergem vigu teha, raskem vigu leida

● käsud on tegelikult listid● keerulisemaid liste on raskem "käsitsi"

luua● kasutada saab protseduuri list

Page 32: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

32Tööjaamade tarkvara

Tcl: sh koodi peitmine Tcl koodi● Tcl ja sh käsitlevad kommentaare

erinevalt

#!/bin/sh#\sh-käsk#\sh-käsk#\exec wish -f "$0" "$@"

Page 33: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

33Tööjaamade tarkvara

Tk - Tcl Toolkit● Tcl laiendus graafiliste liideste

programmeerimiseks● loodud X Window Systemi jaoks

– porditud ka Mac ja Windowsi platvormidele

● dünaamiline side alloleva Tcl programmiga

● algajale lihtne● sobib prototüüpimiseks

Page 34: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

34Tööjaamade tarkvara

Tk - aknad, aknaelemendid● liides koosneb aknaelementidest

(widget)/akendest (window)● aknaelement - mingi omase käitumise

ja väljanägemisega objekt/aken– nupp– kerimisriba– menüü– tekstiaken– ...

Page 35: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

35Tööjaamade tarkvara

Tk - aknad, aknaelemendid● kasutajaliides luuakse elemente

kombineerides

● aknaelemendid on hierarhias

– peaaken (primary, main)– alamaknad

● alamakende alamaknad jne jne

– iseseisvad aknad● hierarhia kajastub ka aknaelementide

nimedes

● hierarhia on kasulik elementide paigutamisel (peaakna piires)

Page 36: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

36Tööjaamade tarkvara

Tk - paigutushaldurid● paigutushaldur otsustab elementide

mõõtmete ja paiknemise üle

● seni, kuni aknaelement pole esitatud paigutushaldurile, seda ekraanil näha pole

● Tk paigutushaldurid on suurte võimalustega, kuid siiski lihtsad õppida

● keerulisemaid paigutusi luuakse frame elementide (konteinerelemendid) abil

● Tk kolm paigutushaldurit: pack, grid, place

Page 37: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

37Tööjaamade tarkvara

Tk - sündmused● Tk rakendusi juhivad sündmused

(event)● aknaelementide vaikekäitumine

erinevate sündmuste puhul on Tk's mõistlik– tavaliselt tulebki seadistada vaid käitumine

eriliste, spetsiifiliste sündmuste puhul

● sündmuste sidumiseks täidetava koodiga on käsk bind

● virtuaalsed sündmused

Page 38: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

38Tööjaamade tarkvara

Tk - sündmused● sündmuste seoste klassid - bindtags

– kogum sündmuste seoseid– elemendi, nimega, ülemaknaga seotud– aknaelementi võib ümber häälestada

teistele klassidele, muuta järjekorda– klasse võib muuta

● fookus (sisendfookus)– hiirega juhitav– otse juhitav– fookuse „haaramine“ (grab)

Page 39: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

39Tööjaamade tarkvara

Tk - programmi struktuur● aknaelementide loomine● aknaelementide paigutamine● aknaelementide sidumine koodiga● sündmuste sidumine koodiga● algab „event loop“

Page 40: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

40Tööjaamade tarkvara

Tk - programmi käivitamine● interaktiivselt (koheselt luuakse

„tööaken“)

wish

● skriptina

#!/usr/bin/wish

Page 41: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

41Tööjaamade tarkvara

Tk - esimene näide

#!/usr/bin/wishbutton .hello -text Hello \ -command {puts stdout "Hello World!"}pack .hello -padx 20 -pady 10

● pole küll päris puhas graafiline liides, väljastab standardväljundisse

Page 42: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

42Tööjaamade tarkvara

Tk - aknaelemendikäsk● pärast elemendi loomist luuakse

"elemendikäsk", mis töötab konkreetse isendi peal

button .nupp -text "Flash!!".nupp flash.nupp configure -text "Muudetud!"

Page 43: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

43Tööjaamade tarkvara

Tk - elementide nimetamine● nimetamine käib hierarhia järgi:

– ülemaken .

– ülemakna järglane .frame1– .frame1 alam: .frame1.button1– jne

● elemendi nime esitäht peab olema väike

Page 44: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

44Tööjaamade tarkvara

Tk – elementide nimetamine● aknaelemendi nime tasub hoida

muutujas:– kasutajaliidese muutumisel võivad

muutuda alluvusvahekorrad - kõik elemendiga seotu tuleks sel juhul ümber kirjutada

Page 45: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

45Tööjaamade tarkvara

Tk - elementide konfigureerimine● konfigureerimine:

– välimus– seotud kood– suhted ümbritsevaga

.element -parameeter väärtus● parameetreid saab määrata

– elementi luues– aknaelemendi nimelise käsu kaudu .element configure -parameeter väärtus

Page 46: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

46Tööjaamade tarkvara

Tk - elementide konfigureerimine● sõltuvalt aknaelemendist kümneid

parameetreid● parameetri peab andma vaid siis, kui

vaikeväärtus ei sobi● parameetrite väärtuseid saab ka

päringuga küsida

.element cget -parameeter

.element configure -parameeter

Page 47: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

47Tööjaamade tarkvara

Tk - ressursside andmebaas● kõiki elementide parameetreid on

võimalik esitada ka ressursiandmebaasi kaudu

● ressursiandmebaas kirjeldab sarnaste elemendiklasside välimuse

● lihtne teha liidest läbivaid muutuseid● kood vabaneb välimust puudutavatest

parameetritest● lihtne teha mitmele rakendusele läbivat

stiili

Page 48: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

48Tööjaamade tarkvara

Tk - paigutushaldur pack● programmeerija määrab igale elemendile

"kitsendused", mille piires pack tohib paigutada

● ülejäänud otsused teeb pack

● pack juures on oluline tunda tema tööpõhimõtteid, algoritmi

● pack'i põhiline mõiste on järelejäänud tühi ruum, cavity, seda jaotatakse paigutusjärjekorra alusel aknaelementide vahel

● paiguta ülemelemendid enne järglasi

Page 49: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

49Tööjaamade tarkvara

Tk - paigutushaldur pack● pack parameetreid:

-before/after win (pakkimisjärjekord)

-anchor anchor (asetus vaba ruumi piires)

-expand boolean (kas kastutada kogu vaba ruum)

-fill style (milline osa vabast ruumist kasutada)

Page 50: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

50Tööjaamade tarkvara

Tk - paigutushaldur pack-in win (millise akna sisse asetada)

-ipadx/ipady amount-padx/pady amount (padding

parameetrid)

-side side (millisele vaba ruumi osale pretendeerida)

Page 51: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

51Tööjaamade tarkvara

Tk - paigutushaldur grid● paigutab aknaelemendid ridadesse ja

veergudesse● programmeerija määrab, mitmendas

reas/veerus element asub, mitu rida ja veergu ta enda alla võtab

● ridasid ja veerge tehakse vastavalt vajadusele dünaamiliselt juurde

Page 52: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

52Tööjaamade tarkvara

Tk - paigutushaldur grid● grid parameetreid

-column col (veerg)

-row row (rida)

-columnspan n (mitu veergu enda alla võtta)

-rowspan n (mitu rida enda alla võtta)

-sticky how (kuidas paigutada element välja piires)

Page 53: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

53Tööjaamade tarkvara

Tk - paigutushaldur place● programmeerija ütleb täpselt, kuhu

element paigutada● parim kontroll paigutuse üle● suurte liideste puhul liiga palju tööd● tekivad ülekattumised

-x coord-y coord-relx coord-rely coord

Page 54: Tcl - Tool Command LanguageTööjaamade tarkvara 2Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks – tegelikult

54Tööjaamade tarkvara

Tk - paigutushaldurite kombineerimine● pack ja grid kombineerimine tavaline● ei tohi tekkida seisu, kus haldurid

võistlevad sama ruumi pärast● nt: kaks alamakent frame, ühte haldab

pack, teist grid: OK● nt: alamaken frame, tema sees kaks

elementi label, ühte haldab pack, teist grid: NOT OK