Úvod do Tcl/Tk, časť 1, alebo ako rýchlo programovať GUI (nielen) pod Linuxom

V programátorskej praxi sa mnohokrát stretnete s problémom ako a v čom, rýchlo a efektívne napísať aplikáciu, resp. j...


V programátorskej praxi sa mnohokrát stretnete s problémom ako a v čom, rýchlo
a efektívne napísať aplikáciu, resp. jej rozhranie v prívetivom a uživateísky
jednoduchom grafickom prostredí. Rýchlosť vývoja nám pomÖžu vyriešiť
skriptovacie jazyky, ktoré však väčšinou nemajú vlastne grafické objekty. Tento
problém veími pekne rieši skriptovací jazyk Tcl/Tk (Tool Command Language/Tool
Kit), ktorý používa vyše pol milióna vývojárov vo svete.
Nebudeme teraz rozoberat výhody a nevýhody používania skriptovacích jazykov vs.
systémové programovanie v klasických jazykoch ako C++, Java atď. Je jasné, že v
prípade vývoja veími rýchlej, maximálne optimalizovanej tkz. "perfektnej"
systémovej aplikácie zvolíme pravdepodobne C++ spolu s výbornými objektovými
knižnicami ako sú Qt alebo GTK. (Nech mi priaznivci iných jazykov a objektových
knižníc odpustia, že som ich nespomenul.)
V tomto seriáli však chceme ukázať, že Tcl/Tk umožňuje veími rýchly a
produktívny vývoj GUI aplikácií, použiteíných na rÖznych platformách. Rýchlosť
vývoja je pri väčšine aplikácií 5 až 10násobne vyššia ako pri iných jazykoch.
Tcl/Tk má jednoduchú programovaciu syntax a mÖžete ho používať aj spolu s
daíšími jazykmi, resp. využívať jeho objekty. Bonusy Tcl/Tk
K bonusom Tcl/Tk patrí tiež použiteínosť na platformách Linux, Solaris, IRIX,
AIX, BSD, Windows, Macintosh a hlavne open source a dostupnosť bez akýchkoívek
poplatkov.
Rozšírenosť Tcl/Tk dokumentuje aj fakt, že je súčasťou všetkých veíkých
distribúcií a mnohé z nich ho používajú vo vlastných aplikáciách, napríklad v
distribúciách Red Hatu, dobre známy control-panel je typickou ukážkou Tcl/Tk a
jeho použitia spolu s inými skriptovacími jazykmi.
Samotný jazyk Tcl je jednoduchý interpretovaný jazyk v istom zmysle podobný
príkazovému interpreteru Bourne shell alebo jazyku Perl. Pre aplikácie, ktoré
používajú len interné funkcie Tcl je k dispozícii interpret tclsh. Avšak
výhodnejšie je používať interpreter wish, ktorý umožňuje realizovať aj príkazy
Tk grafického rozšírenia Tcl pre systém X Window (v našom prípade). Tento
interpreter spolu s príslušnými knižnicami Tcl/Tk je ako balík voíne k
dispozícii pre rÖzne systémové prostredia na štandartne sa ako bolo spomínané,
vyskytuje vo všetkých väčších distribúciách Linuxov, takže sťahovať ho
pravdepodobne budete len pre MS Windows.

Grafické objekty
Tk obsahuje sadu kompletných, veími sofistikovaných, "widgets", čiže grafických
objektov, ktoré poskytujú programátorovi množstvo objektov na vytváranie
príjemných užívateíkých rozhraní. V tomto seriáli sa ich pokúsime všetky
predstaviť a tak vám umožniť sa presvedčiť o elegancii a efektívnosti Tcl/Tk.
Začneme chronicky známym príkladom "Ahoj svet!". Otvoríme si obíúbený editor
(uprednostňujem Vim) a napíšeme tento krátky kód:
#!/usr/bin/wish f
button .b text "Ahoj svet!" command {exit}
pack .b Súbor uložíme, z konvenčných dÖvodov s koncovkou .tcl, nastavíme práva
na spustenie a spustíme. Výsledkom by malo byť to, čo vidíte na prvom obrázku.
Ako vidíte, je to veími jednoduchý kód a poskytuje rýchle a sympaticky
vyzerajúce riešenie GUI. Objasnime si teraz význam jednotlivých riadkov. Prvý
riadok spúšťa interpreter wish, po inštalácii sa implicitne nachádza v
adresári /usr/bin/(Red Hat). Parameter f znamená, jednoducho povedané, že
skript mÖžete spustiť ako shellovský skript. Ak sa tento riadok v skripte
nenachádza, je potrebné aplikáciu spúšťať z príkazového riadku povelom wish
Aplikácia.tcl.
Druhý riadok deklaruje objekt tlačidlo s názvom .b a parametrom text a command.
DÖležité je si všimnúť bodku pred názvom. Deklaruje odvodený resp. podriadený
objekt. Meno pred bodkou (teraz sa nevyskytuje) znamená objekt vyššej úrovne. V
tomto prípade je to základné okno generované interpreterom. Parametrom text
určujeme nápis na tlačidle a command obsahuje príkaz, ktorý sa spustí po
stlačení tlačidla, tu je to povel exit, ktorý ukončí danú aplikáciu.
Posledný riadok, príkaz pack umiestni objekt do aplikačného okna alebo iného
objektu. Umožňuje špecifikovať, ako má byť objekt relatívne uložený vo vnútri
druhého objektu bez nutnosti špecifikovať absolútne súradnice. Tcl/Tk pozná
ešte daíšie dva príkazy grid a place, ktoré slúžia na umiestnenie objektov.
Každý z nich má svoje výhody, my budeme vzhíadom na dostatočnú univerzálnosť
používať príkaz pack.

Editor
Venujme sa teraz druhému príkladu, trošku bohatšej aplikácii, ktorá nám umožní
po zadaní názvu súboru editovať prostredníctvom externého editora (opäť Vim)
daný súbor.
Zdrojový skript vyzerá takto:
#!/usr/bin/wish f
# toto je deklaracia premennej
global meno
#toto je hore
frame .hore -bd 1 -relief groove label .hore.nadpis -text "Zadaj meno:"
entry .hore.entry -textvariable meno -relief sunken -width 20
-background #FFFFFFFFFFFF pack .hore -side top -expand yes -fill x
pack .hore.nadpis .hore.entry -side left -expand yes -fill both
#toto je dolna cast frame .dole
button .dole.but1 -text "Edituj" -command {edit}
button .dole.but2 -text "Koniec" -command {exit}
pack .dole -side bottom -expand yes -fill x
pack .dole.but1 -side left
pack .dole.but2 -side right
proc edit {} {
global meno
exec xterm -e vi $meno}
A výsledok by mal byť taký, ako vidíte na tretom obrázku.
Obsah prvého riadku tohto skriptu je jasný z predchádzajúceho príkladu. Za ním
nasleduje komentár označený krížikom (#) na začiatku. V tejto časti deklarujeme
premenné, prívlastok global znamená, ako názov naznačuje, premennú spoločnú pre
všetky procedúry v skripte. Samozrejme deklarovať premenné mÖžete v íubovolnej
časti skriptu za predpokladu, že ju nepoužívate skÖr ako je definovaná. Bez
tohto prívlastku sa daná premenná chápe ako interná pre danú procedúru. V bloku
označenom za komentárom máme nový príkaz frame. Ten vytvára grafický objekt,
rám, do ktorého mÖžeme osadzovať daíšie objekty. Parameter bd vytvára hrúbku
hranice, relief dáva widgetom 3D vzhíad. Vyskúšajte namiesto groove napríklad
sunken, raised alebo flat a uvidíte zaujímavé modifikácie. Label je názov
príkazu pre objekt popisového štítku. Spravidla obsahuje text, mÖže však aj
obrázok vo forme bitmapy alebo gif. Názov tohto konkrétneho štítku .hore.nadpis
určuje, že daný štítok je vsadený do frame s menom .hore Ďaíším objektom je
entry, čo je vlastne textbox, do ktorého mÖžete písať. Jeho vlastnosti sme
nastavili s parametrami textvariable, názov premennej, kde sa ukladá vpísaný
text, relief, ktorý sme už popísali, width, čo je dížka textboxu a background,
ten zodpovedá za farbu pozadia objektu. Tón a druh farby sa udáva v
hexadecimálnom kóde v RGB palete.
Pre každú základnú farbu je štvormiestny kód, teda ak chcete bielu farbu, je to
#FFFFFFFFFFFF, ak modrú, je to #00000000FFFF. Lomítko dozadu v tomto riadku
prekladaču oznamuje, že nasledujúci riadok je súčasťou predchádzajúceho a nemá
sa chápať ako samostatný príkaz. Štvrtý riadok tohto bloku je nám už tiež
známy, umiestnime frame .hore v základnom okne s nastavením side top, určuje
relatívnu polohu hore, expand yes špecifikuje, že sa objekt má vždy zväčšovať
tak, aby po zväčšení hlavného aplikačného okna vyplnila celú jeho šírku, fill x
zaistí vytvorenie objektu po celej šírke aplikačného okna. Ďalší blok príkazov
už asi nepotrebuje komentár, zastavíme sa len pri nastavení vlastnosti command,
tlačidla .dole.but1, ktoré po inicializácii volá procedúru edit. V Tcl/Tk sa
procedúry deklarujú výrazom proc Názov_procedúry {} {}. V prvých zložených
zátvorkách sa nachádzajú argumenty predávané medzi procedúrami a v druhých sa
umiestni telo procedúry. Naša obsahuje príkaz exec, ktorý spustí v tomto
prípade terminálové okno s editorom Vim obsahujúcim zadaný súbor na editovanie.
Takže, ako vidíte, programovanie v Tcl/Tk je naozaj zaujímavé a jednoduché.
V pokračovaniach tohto seriálu sa zoznámime s dalšími možnosťami Tcl/Tk. Úplne
na záver mám pre vás jeden tip. Ak patríte k programátorom, ktorý uprednostňujú
visual nástroje, Tcl/Tk v ničom nezaostáva. K tomuto účelu slúži výborne
napísaná a voíne dostupná aplikácia VisualTcl (viz 2. obrázok), mimochodom,
celá je napísaná v Tcl/Tk, ktorá vám umožní programovať rovnako pohodlne ako
ste zvyknutí z komerčných visual nástrojov.
1 0139 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.