Programare în tcl. Introducere rapidă în Tcl
De fiecare dată când fac cunoștință cu vreun nou limbaj de programare, nu mă obosesc să fiu uimit de persistența autorilor (sau a autorului). Nefiind un expert în niciun domeniu al dezvoltării software, este greu să ne imaginăm ce dificultăți poți întâmpina dacă nu folosești instrumente specializate și abordări specifice pentru rezolvarea problemelor care apar pe calea dezvoltatorului. Voi vorbi pe scurt despre un limbaj precum TCLspuse pe paginile Computer News. Dar este atât de scurt încât vreau să mă întorc la acest limbaj de programare și să vorbesc despre el mai detaliat.
Puțină istorie
Autorul cărții TCL (acest nume în rusă este cel mai adesea pronunțat „Tikl”), John Osterout, a decis că lumea ar fi un loc mai bun dacă ar exista un limbaj specializat pentru încorporarea în aplicațiile de consolă. Făcut repede şi foarte bine. Așa a apărut prima versiune de TCL. Conform solicitărilor utilizatorilor, Osterout și-a extins capacitățile creației sale, construind în el instrumente pentru crearea de aplicații cu o interfață grafică pentru utilizator. Așa s-a născut TCL/TK. Fie că este lungă sau scurtă, limbajul a migrat sub aripa corporației Sun Microsystems, care a reușit să facă interpretul de limbă cât mai multiplatform posibil, deși din anumite motive era încă gratuit. Deși, în ciuda acestui din urmă fapt, TCL a fost aspru criticat de principalul ideolog al dezvoltării de software liber, Richard Stallman. Principalul argument al lui Stallman a fost performanța scăzută a interpretului de limbă.
Dar interesul lui Sun pentru TCL a dispărut curând din cauza boom-ului limbajului Java dezvoltat de aceeași companie, iar Osterout și-a fondat propria companie, Scriptics. La scurt timp după aceasta, interpretul a fost reproiectat semnificativ, care a început să compileze programul în bytecode intermediar înainte de a executa programul, drept urmare viteza programelor scrise în TCL a crescut de peste șase ori. De asemenea, a fost adăugat suport pentru Unicode și aplicații multi-threaded, permițând dezvoltatorilor să folosească TCL pentru a scrie aplicații server. Apoi Scriptics a fost redenumit Ajuba Solutions, iar apoi a fost cumpărat de Interwoven, care a transferat dezvoltarea TCL/TK către comunitatea de programare Tcl Core Team.
Totuși, toate acestea, deși informative, vor ajuta puțin la stăpânirea limbii. Deci, să aruncăm o privire la ce este TCL astăzi.
TCL astăzi
TCL este, în general, un acronim. Numele complet al acestei limbi este Tool Command Language, care în rusă înseamnă „limbaj de comandă instrument”.
Principala caracteristică a TCL clasic este că acest limbaj de programare, spre deosebire de cea mai mare parte a altor limbaje populare astăzi, nu este orientat pe obiecte. Adepții TCL explică acest lucru spunând că această abordare reflectă mai bine esența programului, deoarece procesorul funcționează nu cu obiecte, ci cu secvențe de comenzi care pot fi combinate în proceduri. Este greu de spus cât de mult corespunde această opinie cu starea reală a lucrurilor, dar aici, poate, nici măcar nu este vorba de asta. Si ce? Dar adevărul este că un limbaj care este conceput exclusiv pentru a lipi diferite părți ale sistemului într-un singur întreg, în general, nu are niciun folos pentru OOP. Cu toate acestea, deoarece TCL în sine a depășit de mult ideea pe care a fost creat, există extensii speciale de limbaj care implementează abordarea orientată pe obiecte.
Cu toate acestea, abordarea textului programului nu este mai puțin interesantă. Sunt aceleași date ca oricare din exterior și pot fi manipulate din program în același mod ca și textul introdus de utilizator. În general, orice date din TCL sunt șiruri. Neobișnuit? Pot fi. Dar nimeni nu spune că este incomod.
La fel ca și cunoscutele, dar deja uitate de masă, Lisp și Forth, TCL folosește notația de prefix atunci când scrie comenzi. Ce înseamnă? De fapt, totul este foarte simplu. Fiecare comandă constă dintr-un set de câmpuri separate prin spații. Primul câmp trebuie să fie numele comenzii, iar câmpurile rămase opționale sunt argumentele transmise comenzii. Comanda returnează o valoare, uneori goală. O comandă este aceeași cu ceea ce se numește funcție sau procedură în alte limbaje de programare. Nu există cuvinte cheie în TCL: structurile de control sunt, de asemenea, comenzi. Această abordare face ușoară extinderea limbajului în orice direcție de care are nevoie programatorul, deoarece, teoretic, extensibilitatea TCL nu este nicăieri mai bună, dacă exista dorința de a se extinde. De exemplu, toate suplimentele OO au apărut tocmai din cauza acestei proprietăți TCL.
În TCL, printre altele, există un astfel de eveniment. Înseamnă același lucru ca în orice alt limbaj de programare - o anumită acțiune a programului în sine sau, ca să spunem așa, a unui stimul extern, la care programul trebuie să reacționeze într-un anumit mod. Evenimentele din TCL pot fi generate de un cronometru și, de asemenea, apar, de exemplu, atunci când apar date într-un canal, valoarea unei variabile se modifică, când se termină un program extern sau pur și simplu când utilizatorul interacționează cu interfața. Desigur, programatorul are putere asupra evenimentelor din programul său.
La fel ca multe alte limbaje de scripting, TCL suportă foarte bine un astfel de lucru precum matricele asociative, de care mulți dezvoltatori au devenit deja pasionați.
Pentru a vă face o idee mai bună despre sintaxa TCL, care desigur nu poate fi explicată într-un singur articol, voi da un exemplu de mic program în acest limbaj. Este angajat în adăugarea cifrelor numărului introdus de utilizator.
#!/bin/tclsh set arg "" ] set result 0 foreach el $arg ( set result ) pune $result
Ce este TK?
Aceasta este exact întrebarea care poate apărea după citirea textului despre caracteristicile TCL. Da, am menționat deja că mulți oameni numesc acum Tikl TCL/TK ("Tak-Tikl") și, prin urmare, este timpul să spunem ce se ascunde în spatele încă două litere.
TK este o abreviere a cuvântului deja scurt ToolKit, care ascunde o bibliotecă puternică pentru crearea unei interfețe grafice de utilizator pentru aplicațiile TCL. Această bibliotecă, trebuie să spun, are capabilități foarte bune. TK este implementat pentru sistemele de operare Linux, Mac OS X, Unix și Windows, iar în versiunile moderne de TK interfața cu utilizatorul are un aspect „nativ” pentru un anumit sistem de operare, adică controalele arată exact la fel ca în toate. alte aplicații. Există diverse extensii pentru bibliotecă care sunt folosite pentru a crea ferestre cu formă liberă, pentru a adăuga suport pentru tehnologia drag-and-drop și alte lucruri similare.
TK se potrivește foarte bine cu conceptul bazat pe evenimente al limbajului TCL și permite dezvoltatorilor să facă multe lucruri mult mai ușor decât în alte limbaje de programare. În plus, componentele TK gestionează automat majoritatea evenimentelor, facilitând crearea de aplicații pentru dezvoltatori. Pentru TK există seturi de componente suplimentare, de exemplu, BWidget, Tix sau incr Widgets.
O altă caracteristică interesantă a bibliotecii TK este că este adaptată pentru alte limbi interpretate, nu doar TCL, cu toate acestea, interpretul TCL este încă necesar atunci când rulează aplicații, deoarece alte limbi folosesc doar o interfață externă pentru codul bibliotecii în sine. , care, ca și Se știe că este încă scris în TCL. Există biblioteci speciale Perl/Tk, Ruby/Tk, Python/Tk care implementează suport TK pentru limbajele de programare corespunzătoare.
Instrumente
În practică, bineînțeles, capabilitățile lingvistice bune nu sunt suficiente pentru a crea aplicații de înaltă calitate în ea. Nu, acum nu vorbesc despre abilitățile de programator, ci despre instrumentele pe care le va folosi programatorul. Principalul dintre aceste instrumente în programarea TCL este, desigur, interpretul acestui limbaj de scripting.
Pe Linux, interpretul TCL este încorporat în cea mai mare parte a distribuțiilor. Pentru alte sisteme de operare, lucrurile sunt puțin mai complicate. Pentru Windows, de exemplu, puteți utiliza produsul ActiveTcl oferit de ActiveState (www.activestate.com/Products/ActiveTcl). Distribuția include un interpret TCL, diverse biblioteci și extensii, precum și o bibliotecă specială pentru utilizarea TCL prin Windows Script Host. Adevărat, ActiveTCL nu are propriul IDE, dar puteți folosi Komodo, care are chiar și un designer special de formulare TK. Dar dacă nu doriți să cumpărați Komodo, puteți utiliza mediul Visual TCL (). Interpretul în sine și o mulțime de documentație în limba engleză pot fi găsite pe site-ul oficial - tcl.tk. Materialele în limba rusă de pe TCL sunt prezente și pe World Wide Web, de exemplu, la tclstudy.narod.ru.
În spatele scenelor
Cu toate acestea, indiferent cât de mult am spus despre TCL și TK, în culise au rămas multe. De exemplu, viteza programelor, pentru care încă mai are mult de străduit (programele TCL sunt încă vizibil mai lente decât cele scrise în Perl). În același timp, ceea ce aderenții TCL prezintă ca avantaje necondiționate poate provoca și o serie de dificultăți. Extensibilitatea uimitoare a limbajului face ca sarcina de standardizare să fie foarte dificilă, iar acest lucru, desigur, își lasă amprenta asupra capacității de a folosi TCL pentru a scrie aplicații cu adevărat mari.Deși TCL este adesea comparat cu Java, mi se pare că este nu fără motiv că preia conducerea în popularitate a doua dintre aceste limbi. Sintaxa particulară a TCL își face, de asemenea, treaba murdară și, prin urmare, numărul celor care doresc să o învețe nu crește exponențial, așa cum este cazul Java, dar liniar și nu foarte activ.
Deși, nu există nicio îndoială că pentru lipirea mai multor aplicații scrise în limbaje de programare compilate, conform recenziilor multora dintre cei care au încercat TCL și l-au comparat în acest domeniu cu opțiuni alternative, a fost cel mai bun. Integrarea TCL în aplicațiile aplicației este, de asemenea, o caracteristică foarte drăguță și utilă. Acest lucru este vizibil mai ales în lumea sistemelor de tip UNIX, unde TCL este al doilea cel mai venerat limbaj după C (și poate și Emacs Lisp). Deși este cu siguranță potrivit pentru Windows, un alt lucru este că acest sistem de operare are deja încorporați interpreți VBScript și Jscript și, prin urmare, TCL experimentează ceva de la aceștia care ar putea fi numit, în anumite ipoteze, competiție.
Deși, desigur, toate aceste considerente sunt greu de evaluat fără să încercați singur TCL. Așa că îmi termin povestea despre asta, vreau doar să citez în sfârșit din cuvintele autorului limbajului de programare C, Brian Kernighan: „Tcl / Tk oferă muncii productivitate magică, în câteva ore poți obține aceleași rezultate. ca în zile sau săptămâni când se dezvoltă în C sau C++... Tk este foarte eficient pentru majoritatea aplicațiilor, multe elemente de interfață (widget-uri) sunt implementate atât de bine încât nu se poate decât să se întrebe cum ar putea fi făcută atât de bine o astfel de muncă... pare norocos că împărțirea sarcinilor între Tcl și C /C++ este destul de ușoară, trebuie doar să știi care instrument face treaba mai bine... Extinderea sistemului cu cod Tcl suplimentar încărcat direct în biblioteca Tcl a aplicației, în deplin acord cu Ideea originală a lui Osterout, crește eficiența programului în ansamblu, simplifică structura acestuia și îmbunătățește portabilitatea... Nu sunt sigur că Tcl ar putea supraviețui ca produs independent - are prea mulți concurenți.Dar combinația Tcl/Tk are fără concurenți în lumea Unix... Sistemul este extrem de fiabil, foarte bine documentat... disponibil gratuit... de o calitate impecabilă."
Programare practică în Tcl și Tk EDIȚIA A PATRA Brent B. Welch Ken Jones cu Jeffrey Hobbs PRENTICE HALL PTR PRENTICE HALL PTR Upper Saddle River, NJ 07458 www.phptr.com Programare practică în Tcl și Tk EDIȚIA A PATRA Brent Welsh Ken Jones cu participarea lui Geoffrey Hobbs Moscova Sankt Petersburg Kiev 2004 BBK 32.973.26-018.2.75 U98 UDC 681.3.07 Editura Williams Sef. editat de S.N. Trigub Traducere din engleză și editare de V.V. Veishman Pentru întrebări generale, vă rugăm să contactați Editura William la: [email protected] , http://www.williamspublishing.com Welsh, Brent B., Jones, Ken, Hobbs, Jeffrey W98 Practical Tcl and Tk Programming, Ediția a 4-a. : Per. din engleza - M.: Editura „William”, 2004, - 1136 p. : bolnav. - Paral. tit. Engleză ISBN 5-8459-0661-Х (rusă) Această carte acoperă o gamă largă de probleme legate de utilizarea limbajului Tcl și a extensiei Tk. Se discută instrumentele de bază de scriere a programelor Tcl, generarea dinamică a comenzilor, utilizarea expresiilor regulate, I/O bazate pe evenimente, componentele Tk, lucrul cu imagini și culoare, maparea evenimentelor la comenzile instrumentului de configurare Tcl și alte subiecte importante. Autorii au acordat atenție programării extensiilor Tc1 în limbajul C. Această carte va fi utilă atât pentru dezvoltatorii experimentați, cât și pentru programatorii începători. BBK 32.973.26-018.2.75 Toate denumirile produselor software sunt mărci comerciale înregistrate ale companiilor respective. Nicio parte a acestei publicații nu poate fi reprodusă sub nicio formă sau prin orice mijloc, electronic sau mecanic, inclusiv fotocopiere sau înregistrare, pentru orice scop, fără permisiunea scrisă a Prentice Hall. Traducere autorizată din ediția în limba engleză publicată de Prentice Hall PTR, Copyright © 2003 de Pearson Education, Inc. Toate drepturile rezervate. Nicio parte a acestei cărți nu poate fi reprodusă, stocată în sistem de recuperare sau transmisă sub nicio formă sau prin orice mijloace, electronice, mecanice, fotocopiere, înregistrare sau altfel, fără permisiunea prealabilă scrisă a Editorului. Ediție în limba rusă publicată de Editura Williams în conformitate cu Acordul cu R&I Enterprises International, Copyright © 2004 ISBN 5-8459-0661-Х (rusă) © Williams Publishing House, 2004 ISBN 0-13-038560-3 (engleză) .) © 2003 Pearson Education, Inc. Cuprins Partea I: Noțiuni de bază Tcl 55 Capitolul 1: Înțelegerea limbajului Tcl 56 Capitolul 2: Noțiuni de bază 85 Capitolul 3: Un script CGI simplu 93 Capitolul 4: Procesarea șirurilor 114 Capitolul 5: Liste 133 Capitolul 6. Structuri de control 147 Capitolul 7. Proceduri și domeniul de aplicare 163 Capitolul 8. Matrice Tcl 172 Capitolul 9. Lucrul cu programe și fișiere 186 Partea P. Instrumente Tcl avansate 215 Capitolul 10. Cotarea și utilizarea comenzii eval 217 Capitolul 11. Expresii regulate 234 Capitolul 12. Biblioteci și pachete de scripturi 274 Capitolul 13. Informații despre interpret și instrumente de depanare 291 Capitolul 14. Spații de nume 320 Capitolul 15. Internaționalizare 337 Capitolul 16. Programe bazate pe evenimente 350 Capitolul 17. Utilizarea socket-urilor de rețea 362 Capitolul 18. TclHttpd Web Server 388 Capitolul 19. Lucrul cu mai mulți interpreți și utilizarea Safe-Tcl 432 Capitolul 20 Safe-Tk. add-on 459 Capitolul 21. Scripturi Tc1 cu mai multe fire 472 Capitolul 22. Tclkit și Starkit 508 Partea a III-a. Elementele de bază ale Tk 529 Capitolul 23. Informații generale despre Tk 530 Capitolul 24. Tk în exemple 543 Capitolul 25. Managerul de aranjare rack 566 Capitolul 26. Managerul de aranjare grilă 587 Capitolul 27. Managerul de așezare a locației 599 b Cuprins Capitolul 28. Componenta ferestrei panou 608 Capitolul 29. Conectarea comenzilor la evenimente 615 Partea IV. Componente Tk 637 Capitolul 30. Butoane și meniuri 639 Capitolul 31. Baza de date de resurse 667 Capitolul 32. Componente simple Tk 681 Capitolul 33. Bare de defilare 698 Capitolul 34. Editarea câmpurilor și glisoarelor incrementale 708 Capitolul 35. Componenta 35. Capitolul 7. Windows 724. Capitolul 37. Componenta canvas 771 Partea V. Caracteristicile Tk 813 Capitolul 38. Selectarea datelor și clipboard 815 Capitolul 39. Casete de dialog și focalizare de intrare 825 Capitolul 40. Atributele componentelor Tk 840 Capitolul 41. Culoare, imagini și cursore 850 Capitolul 42 Fonturi și atribute de text 869 Capitolul 43 Comanda Trimitere 885 Capitolul 44 Managerii de ferestre 896 Capitolul 45 Suportul preferințelor personalizate 915 Capitolul 46 Interfața pentru definirea legăturilor 929 Partea VI. Programarea în limbajul C 937 Capitolul 47. Programele C și limbajul Tcl 938 Capitolul 48. Compilarea Tcl și a extensiilor de program 985 Capitolul 49. Crearea componentelor Tk în limbajul C 1002 Capitolul 50. Biblioteci C 1033 Partea VII. Modificări în compoziția lui Tcl și Tk 1059 Capitolul 51. Tcl 7.4/Tk 4.0 1060 Capitolul 52. Tcl 7.5/Tk 4.1 1069 Capitolul 53. Tcl 7.6/Tk 4.2 1074 Capitolul 54. Ts/Tk 4.1 51. Ts/Ts. 8.1 1086 Capitolul 56. Tc1/Tk 8.2 1091 Capitolul 57. Tc1/Tk 8.3 1094 Capitolul 58. Tc1/Tk 8.4 1101 Capitolul 59. Conținutul CD-ului 1112 Indexul subiectului 1115 Unele versiuni de conținut Introducere în favoarea Tc1/Tk 38 Tcl și Tk 42 Extensii Tcl și Tk 44 Tcl pe World Wide Web 44 Arhive Ftp 45 Grupuri de știri 45 Cui este destinată această carte 45 Cum se lucrează cu această carte 46 Exemple de programe 46 Convenții de prezentare 46 Pictograme 47 Cum este organizată această carte 47 Caracteristici a patra ediție a cărții 49 Mulțumiri pentru asistență în pregătirea primei ediții a cărții 49 Mulțumiri pentru asistență în pregătirea celei de-a doua ediții a cărții 51 Mulțumiri pentru asistență în pregătirea celei de-a treia ediții a cărții 52 Mulțumiri pentru asistență în pregătirea cărții a patra ediție a cărții 52 Cum să contactați autorul cărții 53 Așteptăm feedback-ul dvs. 53 Partea I. Noțiuni de bază Tcl 55 Capitolul 1. Înțelegerea limbajului Tcl 56 Comenzi Tcl 57 Hello, World! 57 Variabile 58 8 Cuprins Înlocuirea comenzilor 59 Expresii matematice 60 Înlocuirea caracterelor reprezentate prin bare oblice inverse 61 Gruparea folosind acolade și ghilimele duble 63 Considerații pentru utilizarea parantezelor drepte 64 Gruparea înainte de înlocuire 64 Gruparea expresiilor matematice folosind acolade 66 Exemplu de înlocuire 666 Exemplu de înlocuire de calculare a unui factorial 68 Informații suplimentare despre variabile 70 Considerații pentru utilizarea diferitelor caractere în numele variabilelor 71 Comanda unset 72 Verificarea prezenței variabilelor 72 Informații suplimentare despre expresii matematice 72 Comentarii 74 Reguli pentru substituție și grupare 75 Considerații pentru grupare și substituție 77 Informații de referință 79 Secvențe de caractere care încep cu o bară oblică inversă 79 Operații aritmetice 80 Funcții matematice încorporate 80 Comenzi Tcl de bază 81 Capitolul 2. Primii pași 85 Sursa comenzii 86 Scripturi Tcl pe Unix 86 Meniul principal Windows 88 Macintosh OS 8/9 și Mac ReEdit 88 OS X 89 Comandă din consolă 90 Opțiuni pentru linia de comandă 90 Opțiuni pentru linia de comandă afișate de programul dorit 91 Variabile predefinite 92 Cuprins 9 Capitolul 3. Un script CGI simplu 93 Înțelegerea limbajului HTML 94 Crearea standardului CGI și a paginii web dinamice 96 Guestbook.cgi Script 97 Utilizare fișier bibliotecă 98 Formarea începutului unui document HTML 99 Date generate de un script CGI 101 Utilizarea unei matrice Tcl ca bază de date 103 Crearea formularelor HTML și procesarea intrărilor utilizatorului 105 Formularul newguest.html 105 Pachetele ncgi și cgi.tcl 107 Scriptul newguest.cgi 107 Salvarea datelor utilizând scripturile Tc1 109 Gestionarea erorilor în scripturile CGI Îmbunătățirea scripturilor software 113 Capitolul 4. Procesarea șirurilor 114 Comanda șirului 114 Indecși 117 Șiruri în expresii 118 Compararea șirurilor de caractere cu caractere 1191192 Convertirea unor caractere Hartă 122 Comanda append 123 Comanda format 123 Comanda scan 127 Comanda binară 127 Modele de formatare 128 Exemple 130 Date binare și schimb de fișiere 132 Surse pentru informații suplimentare 132 Capitolul 5. Liste 133 Liste în Tcl 134 Generarea listelor 1136 Comanda 1136 Comanda lappend 137 Comanda lset 138 Comanda concat 138 Preluarea elementelor din listă: comenzi llength, lindex și Irange 139 Modificarea listelor: comenzi linsert și lreplace 140 10 Cuprins Căutarea unei liste: Comanda lsearch 141 Sortarea listelor: Comanda lsort 144 join 144 join. Comanda 146 Surse pentru mai multe informații 146 Capitolul 6. Structuri de control 147 Instrucțiunea if then else 148 Comanda switch 150 Comentarii în comanda switch 152 Comanda while 152 Comanda foreach 153 Utilizarea mai multor variabile bucle 155 Lucrul cu mai multe liste 156 Comanda for 156 Comenzile break și continuare 157 Comanda catch 157 Gestionarea situațiilor fără eroare 159 Comanda de eroare 159 Comanda return 161 Capitolul 7. Proceduri și domeniul de aplicare 163 Comanda proc 163 Modificarea numelor comenzii cu comanda rename 165 Scop 166 Comanda globală 167 Transmiterea unui nume cu comanda upvar 168 Crearea alias-urilor cu comanda upvar 169 Utilizarea comenzii upvar pentru a menține starea obiectului 170 Spații de nume și comanda upvar 170 Comenzi care funcționează cu nume de variabile 171 Capitolul 8. Matrice Tcl 172 Instrumente de limbaj pentru lucrul cu tablouri 172 Indici 173 Variabile matrice 174 Comanda de conversie a matricei 175 Matrice în liste 176 Transmiterea numelor de matrice 177 Crearea structurilor de date bazate pe matrice 178 Înregistrări simple 178 Cuprins 11 Stiva 180 Lista de matrice 181 Baza de date simplă 183 Alternative la utilizarea matricelor 184 Capitolul 9. Lucrul cu programe și fișiere 186 Rularea programelor folosind comanda exec 186 variabila auto_noexec 189 Caracteristicile rulării comenzii exec pe Windows 189 AppleScript pe sistemul Macintosh 189 Comanda fișierului 190 Nume fișiere pe diverse platforme 192 Formarea unei căi: comanda file join 193 Selectarea componentelor căii: comenzi split, dirname, tail 195 Acțiuni cu fișiere și directoare 196 Copierea fișierelor 196 Crearea directoare 196 Legături fixe și simbolice 197 Ștergerea fișierelor 197 Redenumirea fișierelor și directoare 198 Atribute fișiere 198 Utilizarea comenzilor I/O 201 Deschiderea fișierelor 202 Crearea unui canal de comunicare cu un proces 204 Extinderea datelor 204 Citirea și extinderea datelor 205 205 Comenzile Puts și Gets 206 Comanda Read 206 Încheierea unei linii de caracter 207 Acces aleatoriu la date 208 Închiderea canalelor I/O 209 Director curent: comenzi cd și pwd 209 Acțiuni cu fișiere folosind comanda glob 209 Extindere caractere ~ 211 Comenzi Exit și pid 212 Variabile de mediu 212 Comanda de registry 213 Partea a II-a. Caracteristici avansate Tcl 215 Capitolul 10: Cotarea și utilizarea comenzii eval 217 Generarea codului cu comanda List 218 12 Cuprins Comanda eval 218 Comenzi care efectuează concatenarea parametrilor 220 Comenzi care oferă un apel invers 221 Prefixul comenzii 221 Generarea dinamică a procedurilor în executarea concatenării 222 Comanda eval 224 Utilizarea comenzii eval într-o procedură Shell 224 Probleme cu citarea în comanda eval 227 Comanda de nivel superior 229 Comanda subst 232 Procesarea șirurilor cu comanda subst 233 Capitolul 11. Expresii regulate 234 Când să folosiți expresiile regulate 235 Rezolvarea problemelor obișnuite 236 Reguli pentru scrierea expresiilor regulate 237 Compararea caracterelor 237 Seturi de caractere 237 Iteratoare 238 Operator de selecție 239 Utilizarea ancorelor 240 Utilizarea barelor oblice inverse 240 Utilizarea barelor oblice inverse 240 244 Extindere 2 Subslashpatter 244 Extindere 2 Ordine 2 Extindere2 2 Potrivire Compatibilitate cu modele acceptate în Tcl 8.0 243 Secvențe backslash 244 Clase de caractere 244 Potrivire parcimonioasă 245 Iteratoare cu un număr limitat de repetări 246 Referințe inverse 247 Comparație lookahead 247 Coduri de caractere 248 Elemente de înlocuire 249 Deschidere la clase de echivalență 249 opțiuni de comparație 249 sensibile 249 taxa 250 Sintaxa expresiilor regulate 251 Comanda regexp 255 Cuprins 13 Model de analiză URL 257 Probleme întâmpinate la utilizarea iteratoarelor 260 Exemple de expresii regulate 260 Comanda regsub 262 Conversia datelor într-un program folosind regsub 263 Decodarea URL-urilor 263 Analizarea parametrilor CGI 276 Decodarea HTMLi 2765 HTMLi 2765 simplă 276 Eliminarea comentariilor HTML 272 Comenzi folosind expresii obișnuite 272 Capitolul 12: Biblioteci și pachete de scripturi 274 Accesarea pachetelor: variabila auto_path 275 Utilizarea pachetelor 276 Încărcarea automată a pachetelor 277 Pachete, implementate ca programe C 278 Ordinea de încărcare a pachetelor de biblioteci de comenzi 2289 folosirea fișierului tcllndex 281 Comanda necunoscută 283 Încărcare automată 283 Interzicerea utilizării unei biblioteci: auto_noload 284 Convenții care se aplică în timpul lucrului interactiv 285 Apelarea automată a programelor 285 Istoricul apelării comenzii 285 Abrevieri de nume Comenzi 285 Tcl Shell Environment 285 Bibliotecă T285 Procedură tcl_findLibrary 287 Stil de programare 288 Prefixe de nume de procedură 288 Matrice globală și reprezentare a variabilelor de stat 289 Ghiduri oficiale 289 Capitolul 13. Informații despre interpret și instrumente de depanare 291 Comanda ceas 292 Comanda Info 296 Variabile 297 297 Proceduri 30 Comenzi 14 Execuții 30 30 Proceduri Scripturi și Biblioteci 302 Numere de versiune 303 Mediu de rulare 303 Executarea programelor pe diferite platforme 304 Monitorizarea variabilelor și comenzilor 305 Monitorizarea execuției comenzilor 306 Variabile numai în citire 307 Crearea elementelor de matrice utilizând comanda Trace 308 Comenzile de apelare în fundal 309 Istoricul de apeluri și accesarea istoricului comenzilor 309 T310 C shell 311 Depanare 312 Tcl Dev Kit 313 Depanator avansat 314 Instrument Checker 314 Instrument compilator 314 Instrument TclApp 315 Instrument Service Manager 315 Instrument Inspector 315 Alte instrumente 315 Consola Tkcon 316 Critcl 316 Monitorizare eroare 3 Comanda 316 Programul de performanță eroare 316 Programul de performanță tk 316 în fișierul jurnal 317 Compilatorul Tcl 318 Capitolul 14. Spații de nume 320 Utilizarea spațiilor de nume 321 Variabile în spațiile de nume 323 Nume compuse 324 Găsirea comenzilor 325 Spații de nume imbricate 326 Proceduri de importare și export 327 Spații de nume și apeluri inverse 329 Introspecție 330 Comanda spațiului de nume 331 Conversia Lucru cu obiectele de spațiu de nume existente Sistemul de conținut 3 3xot 3 32 eu obiect system 333 Note 334 Denumirea componentelor, imaginilor și interpreților 334 Comanda variabilă în sfera globală 334 Încărcarea automată și procedura auto_import 334 Spații de nume și comanda de nivel superior 335 Particularitățile denumirii spațiilor de nume 335 Operații suplimentare 336 Capitolul 15. Internaționalizarea 337 pi 8 Setul de caractere Codificarea 339 Codificarea fișierelor și comanda fconfigure 340 Scripturi prezentate în diverse codificări 341 Unicode și UTF-8 341 Codificare binară 342 Conversia codificărilor 343 Comanda de codificare 343 Directoare de mesaje 344 Determinarea limbii locale 345 Administrarea directorilor de mesaje și a spațiilor de nume346 Pachetul msgcat 349 Capitolul 16. Programe bazate pe evenimente 350 Bucla de evenimente Tcl 351 Comanda after 351 Comanda fileevent 352 Comanda vwait 354 Comanda fconfigure 356 Modul I/O fără blocare 357 Comanda fblocked 359 Conversia End-359 Caracterul of-Line 359 Gestionarea caracterului de la sfârșitul fișierului 360 Dispozitive secvențiale 360 Codificări 361 Configurarea canalelor I/O 361 16 Cuprins Capitolul 17. Utilizarea soclurilor de rețea 362 Extensii de rețea Tcl 363 Bibliotecă standard Scotty 363 Socket-uri Tc63 Client 363 Tc63 364 Opțiuni utilizate la crearea socket-urilor client 365 Socket-uri de server 366 Opțiuni utilizate la crearea socket-urilor serverului 367 Serviciul Echo 367 Primirea datelor prin HTTP 370 Servere proxy 371 Solicitare HEAD 373 Cereri GET și POST 375 Comanda fcopy 379 http:1 comandă http:1 config 380 Comanda ::geturl 381 Comanda http::formatQuery 385 Comenzi http::register și http::unregister 385 Comanda http::reset 385 Comanda http::cleanup 386 Autentificare de bază 386 Capitolul 18. TclHttpd Web Server 388 Integrarea cu programele de aplicație TclHttp3 388 Arhitectura TclHttpd 390 Adăugarea codului la TclHttpd 391 Modificarea programelor principale 392 Gestionarele domeniului 392 Starea conexiunii și datele cererii 393 Pachete HTML și ncgi 394 Transferarea rezultatelor procesării cererii către client 394 Application Direct 394 Prelucrarea datelor conținute într-o solicitare de tipuri 398396 Lucru cu MSE 398396 Tipuri de documente 398 Șabloane HTML + Tcl 400 Plasarea codului Tcl 401 Șabloane și structura site-ului web 402 Conținut 17 Utilizarea variabilelor pentru a stoca informații despre un site Web 406 Manipulatorii de date de formulare 407 Manipulatorii directe de aplicații 408 Șabloane pentru manipulatorii de date de formulare 411 Auto-testarea formularelor 411 Pachetul html 413 Atribuirea procedurilor 415 Module standard Application Direct 419 Despre starea serverului 420 Depanare 420 Trimiterea mesajelor de e-mail 422 Pachetul de distribuție TclHttpd 424 Pornirea serverului 424 Conținutul pachetului de distribuție 425 Configurarea serverului 426 Opțiuni de linie de comandă 426 Nume și număr de utilizator server2 7 ID grup 428 Adresa administratorului site-ului Web 428 Director rădăcină document 428 Diverse setări pentru lucrul cu documente 429 Șabloane de document 430 Fișiere protocol 430 Directoare CGI 431 Capitolul 19. Lucrul cu mai mulți interpreți și utilizarea comenzii SAFE-TCL 432 Interp 433 Crearea interpreților 435 Ierarhia interpreților 436 Numele interpretului în rolul echipei 437 Utilizarea echipei LIST ca parte a Interp Eval 437 Interpreți protejați 438 Pseudonimele pseudonimului 440 Echipe ascunse 441 Stanovka 442 Suport pentru intrarea de ieșire de către interpreți protejați 444 Bază protejată 446 Politici de securitate 448 18 Cuprins Restricționarea accesului la socket-uri 448 Restricții privind utilizarea fișierelor temporare 451 Comandă protejată după 456 Capitolul 20. Safe-Tk suplimentar și un browser suplimentar modulul 459 Tk în interprete slave 460 Ferestre Tk încorporate 460 Restricții sigure Tk 461 Plugin de browser 462 Embed_args și variabile de plugin 463 Exemplu de plugin 464 Instalarea plugin-ului 464 Politici de securitate și plugin 465 Politici de securitate 465 Pachetul de configurare/configurare 46 Configurare browser 46 fig. cfg File 469 Fișiere de configurare pentru politici 470 Seturi de capabilități 470 Crearea unei noi politici de securitate 471 Capitolul 21. Scripturi Tc1 cu mai multe fire 472 Ce este un fir de execuție 473 Suport de fire în Tcl 474 Pregătirea unui interpret Tcl cu suport pentru fire 474 Utilizarea extensiilor cu scripturi cu mai multe fire 474 475 Extensie fir de execuție 476 Crearea firelor de execuție 476 Crearea firelor de execuție care se pot asocia 478 Transmiterea mesajelor către fire 481 Transmiterea mesajelor sincrone 481 Trecerea asincronă a mesajelor 483 Stocarea și eliberarea firelor 484 Gestionarea erorilor 485 Resurse partajate 486 Gestionarea conductelor I/O din fire de execuție diferite 487 Accesarea țevilor de I/O între fire de execuție 487 488 Variabile partajate 493 mutexe și variabile de condiție 495 Mutexes 495 Variabile de condiție 496 Pool -uri de fir 499 Conținut 19 Fire de comandă 501 Spațiu de nume 501 Space TSV 504 Space TPOOL 506 Capitolul 22. forma Starki File Systems 511 Aplicare la conținut folosind VFS 512 Utilizarea sdx pentru a crea aplicații 513 Crearea unui fișier Starkit simplu 513 Vizualizarea conținutului unui fișier Starkit 514 Organizarea pachetului standard 514 Crearea unui fișier Starpack 515 Utilizarea sistemului de fișiere virtual Starkit 515 Crearea tclhttpd.kit 517 Crearea fișierelor partajate Starkit 519 Metakit 521 Model de date Metakit 522 Accesarea bazei de date Metakit 522 Crearea vizualizărilor Metakit 525 Salvarea datelor într-un fișier Starkit 526 Wikit și Wiki 527 Caracteristici de utilizare a fișierelor Starkit 527 Seturi de documente 527 Aplicații de auto-upare 527 Instalatori simpli 528 Partea III. Elementele de bază ale Tk 529 Capitolul 23. Informații generale despre programul Tk 530 Tk „Hello, World!” 532 Denumirea componentelor Tk 534 Configurarea componentelor Tk 535 Atributele componentelor Tk și a bazei de resurse 536 Informații de referință Tk 537 Comenzi Tk 538 Comenzi pentru crearea componentelor 538 Comenzi pentru efectuarea acțiunilor cu componente 539 Proceduri de suport 540 20 Cuprins Seturi de componente 541 Tix BLT 541 și 541 542 BWidget s 542 TkTable 542 Capitolul 24. Tk în exemple 543 ExecLog 543 Titlul ferestrei 546 Cadrul butonului 546 Butoanele de comandă 547 Eticheta textului și elementul de introducere 547 Manipularea tastei și focalizarea introducerii 547 Proceduri de execuție 54 Proceduri de execuție a barei de text 54 Scroll54 Proceduri54 dura Stop 550 Lucrul pe mai multe platforme 551 Browser 552 Redimensionarea Windows 556 Gestionarea stării 556 Găsirea fișierelor 556 Meniul în cascadă 558 Componenta text numai citire 559 Tc1 Wrapper 559 Marcatori de text, mânere și legături 563 Utilizarea mai multor interpreți 563 Managerul de aplicații 563 Managerul de aplicații 564. Plasarea direcțională 567 Dimensiunile ferestrelor și comanda de propagare a pachetului 568 Plasarea orizontală și verticală 568 Modelul cavității 570 Spațiu de aspect și spațiu de afișare 572 Opțiunea -fill 572 Umplutură internă, specificată folosind opțiunile -ipadx și -ipady 573 Umplutură externă, specificată folosind -padx și Opțiuni -pady 575 Redimensionarea ferestrelor și opțiunea -expand 576 Cuprins 21 Commiterea 578 Coada de aspect 580 Introspecție 581 Caracteristici de aspect pentru bara de defilare 581 Selectarea unei componente părinte la așezare 582 Eliminarea unei componente din coada de aspect 8 5 8 Pachetul de comenzi 8 Pachetul de comenzi 585 Reguli Stiva ferestre 586 Capitolul 26. Managerul de aranjare grilă 587 Dispunerea componentelor ca tabel 587 Opțiunea -sticky 588 Umplutură externă, implementată cu opțiunile -padx și -pady 590 Umplutură internă, implementată cu opțiunile -ipadx și -ipady 590 Plasarea mai multor ferestre componente într-o singură celulă 591 Combinarea rândurilor și coloanelor 592 Atributele rândurilor și coloanelor 593 Completarea rândurilor și coloanelor 593 Dimensiunea minimă a celulei 594 Suport pentru ferestre redimensionabile 594 Opțiunea -uniform 596 Comanda grilă 597 Capitolul 27. Managerul aspectului locului 599 Înțelegerea aspectului locației 599 manager 599 Gestionarea panourilor 601 Analizarea parametrilor și menținerea stării 603 Alinierea cadrelor 603 Legarea evenimentelor 604 Gestionarea plasării cadrelor 605 Comanda The place 606 Capitolul 28. Componenta fereastră panou 608 Utilizarea ferestrei panou 608 Gestionarea conținutului panourilor 609 Programarea componentei ferestrei panou 611 Atributele ferestrei panou 613 22 Cuprins Capitolul 29: Legarea comenzilor la evenimente 615 Comanda de legare 616 Comanda de legare a tastelor și de a se focaliza 619 Utilizarea tastelor și de introducere a tastelor. continua comenzi 620 Definirea noilor tag-uri de legare 620 Descrierea evenimentelor 621 Evenimente de la tastatură 623 Evenimente de mouse 624 Alte evenimente 625 Legături pentru ferestrele de nivel superior 626 Modificatori 626 Secvențe de evenimente 629 Evenimente virtuale 631 Generarea de evenimente 632 Informații despre eveniment 3 cuvinte cheie eveniment 6x363 IV. Componente TC 637 Capitolul 30. Butoanele și meniul 639 comenzi apelate prin intermediul butoanelor și zona de vizibilitate 640 butoane asociate cu TS1-cross 645 atribute ale butoanelor 650 butoane de meniu și MENUBUTON 651 Meniul linie 653 Meniurile Contriot 654 Meniul de aranjare a meniului Opțiuni 654 elemente din mai multe coloane 655 Evenimente de meniu 655 Selectarea elementelor de meniu folosind tastatura 655 Evenimente de meniu virtual 656 Efectuarea acțiunilor de meniu 656 Atribute de meniu 658 Pachet pentru lucrul cu meniuri după nume 661 Comenzi rapide de la tastatură pentru accesarea meniurilor 665 Cuprins 23 Capitolul 31. Despre baza de date de resurse 667 667 Șabloane de resurse 668 Încărcarea unui fișier de bază de date 670 Includerea înregistrărilor într-o bază de date 671 Accesarea unei baze de date 672 Butoane definite de utilizator 672 Meniuri definite de utilizator 674 Aplicații și resurse pentru utilizator 677 Caracteristici ale substituției de variabile 679 Capitolul 32. Componente de sus Cadre simple T681 și Windows 682 Atributele componentelor Frame, Labelframe și Toplevel 682 Utilizarea componentei Labelframe 684 Activarea altor aplicații 685 Stiluri de ferestre de nivel superior 686 Componenta Label 687 Atribute Width and WrapLength 688 Label Component Component Atribute 6890 Atribute mesaj Componenta text 6890 Atribuire Componenta mesaj 6890 Atribuire 6890 în componentele de etichetă și mesaj 693 Componenta de scară 693 Legături pentru componenta de scară 694 Atribute ale componentei de scară 695 Programarea controlerelor liniare 696 Comanda clopot 697 Capitolul 33. Bare de defilare 698 Utilizarea barelor de defilare 698 Protocol pentru interacțiunea cu barele de defilare 700 operarea barelor de defilare 701 Operații xview și yview 702 Componenta scrollbar 703 Legături pentru scrollbars 704 Atributele componentei Scrollbar 705 Programarea scrollbars 706 24 Cuprins Capitolul 34. Editarea câmpurilor și a glisoarelor incrementale 708 Utilizarea câmpurilor de editare 709 Verificarea conținutului câmpurilor de editare 710 Sfaturi pentru utilizarea câmpurilor de editare 712 Utilizarea componentei casete de selectare 713 Legături pentru componentele de intrare și casete de selectare 716 Atribute ale componentelor de intrare și casete de selectare 718 Programarea câmpurilor de editare și a glisoarelor incrementale 721 Capitolul 35. Ferestrele Listă 724 Utilizarea casetelor cu listă 724 Efectuarea acțiunilor asupra conținutului unei componente Listbox 724 Programarea unei componente Listbox 725 Componenta Listbox 728 Legături pentru componenta Listbox 731 Răsfoire Modul de selecție 731 Modul de selecție unică 732 Modul de selecție extinsă73 Modul 734 Legături pentru derulare 734 Evenimente virtuale pentru componenta Listbox 735 Atribute ale componentei Listbox 735 Mod grilă 737 Capitolul 36. Componenta text 738 Indecși 739 Inserarea și ștergerea textului 740 Expresii index 740 Compararea indecșilor 741 Marcatori 744 Marcatori73 Atribute 744 Marcatori de text 744 Marcatori3 Direcții3 44 Utilizarea atributelor multiple de mâner 746 Spațiere și aliniere între linii 747 Tabulator 750 Selecție 750 Legături pentru mânere 751 Găsirea textului 753 Componente în linie 754 Imagini în linie 756 Conținut 25 Citirea conținutului unei componente de text 757 Obținerea informațiilor despre componentă 95 75 Obținerea informațiilor despre componentă 95 75 Obținerea informațiilor despre componentă 95 Dumpingarea conținutului Anularea acțiunilor finalizate 760 Legături și evenimente 762 Legături pentru o componentă text 762 Evenimente virtuale 764 Operații cu text 765 Atribute componentă text 769 Capitolul 37. Componenta Canvas 771 Coordonatele Canvas 771 Bună, lume! 773 Mânere Canvas 774 Glisor liniar pentru a determina valorile minime și maxime 776 Obiecte Canvas 782 Starea pânzei și obiectelor Canvas 783 Linii întrerupte 784 Arce 785 Bitmaps 786 Imagini 787 Linii 788 Ovale 791 Poligoane 3 Obiecte ferestre 9791 Texte 9792 Canvas 9792 02 componenta Generarea descrierilor Postscript 805 Atributele componentei canvas 808 Sfaturi 810 Coordonatele ecranului și coordonatele canvasului 810 Reprezentarea coordonatelor 810 Scalare și rotație 810 Lucrul cu resurse 811 Obiecte definite de un număr mare de puncte 811 Selectarea obiectelor canvas 811 Cuprins Partea V.26 Caracteristicile Tk 813 Capitolul 38. Selecția datelor și Clipboard-ul 815 Modelul de selecție 815 Comanda de selecție 818 Comanda Clipboard 819 Manipulatorii de selecție 820 Manipulatorul de selecție Canvas 820 Capitolul 39. Casete de dialog și Focalizare de intrare 825 Casete de dialog standard 826 Casete de mesaje 826 Casete de dialog Fișier și director 827 Casete de dialog color 829 Casete de dialog definite de dezvoltator 829 Focalizare de intrare 830 Comanda de focalizare 831 Transferarea focalizării de intrare 831 Capturarea intrării 832 Componentele tkwait 834 Reducerea comenzii 8334 Partajarea comenzilor focus, grab și tkwait 834 Caseta de dialog pentru introducerea unui șir 836 Comenzi rapide de la tastatură și focalizare de intrare 838 Animație și comanda de actualizare 838 Capitolul 40. Atributele componentei Tk 840 Setarea valorii atributelor 840 Dimensiuni componente 842 Componente de încadrare și relief 845 Evidențiere , având focalizare de intrare 846 Puncte de umplutură și ancorare 847 Capitolul 41. Culoare, imagini și cursore 850 Lucrul cu culori 851 Palete de culori 853 Valori de culoare 853 Hărți de culoare și clase vizuale 856 Bitmaps și imagini 858 Comanda imagine 859 Bitmaps 860 Bitmap atribut 860 Fotografie imagini 861 Cuprins 27 Cursor text 865 Cursor mouse 866 Capitolul 42. Fonturi și atribute text 869 Denumirea fonturilor 870 Fonturi denumite 871 Fonturi de sistem 872 Fonturi Unicode 872 Nume fonturi X Window 873 Caracteristici de lucru cu fonturi Tk versiuni anterioare84 metrici 875 Comanda fontului 876 Atribute text 877 Plasare 877 Atribute care controlează textul selectat 878 Utilizarea unei grile și redimensionarea 878 Un program care implementează selecția fontului 879 Capitolul 43. Comanda de trimitere 885 Ce poate face comanda de trimitere 886 Comanda de trimitere și X Window autorizare 887 Un script care implementează transferul de date 888 Comunicarea procesului 890 Evaluarea execuției de la distanță folosind socluri de rețea 892 Capitolul 44. Manageri de ferestre 896 Comanda win 896 Dimensiunea, poziționarea și stilul ferestrelor de nivel superior 897 Pictograme 900 Alte operațiuni ale managerului de ferestre 901 90 Alte operațiuni ale managerului de ferestre 90 Comanda winfo 904 Transmiterea de comenzi între aplicații 905 Relații între componentele aceleiași familii 906 Dimensiunea componentelor 906 Locația componentelor 908 Fereastra rădăcină virtuală 909 Lucrul cu atomi și identificatori 910 Hărți de culoare și clase vizuale 911 Comanda tk 912 28 Cuprins Capitolul 45 Personalizat Preferințe 91 Suport: Fișierele implicite utilizate de o aplicație 915 Definirea preferințelor personalizate 917 Interfața de preferințe personalizate 920 Gestionarea fișierului de setări utilizator 924 Urmărirea modificărilor în variabilele setărilor utilizatorului 926 Rafinarea pachetului 927 Capitolul 46. Interfață pentru definirea legăturilor 929 Ferestre cu liste de colaborare 932 Instrumente pentru editarea legăturilor 934 Salvarea și încărcarea legăturilor 935 Partea VI. Programare în C 937 Capitolul 47. Programe C și limbajul Tcl 938 Concepte de bază 939 Abordări de bază pentru scrierea codului C pentru o aplicație Tcl 939 Proceduri de comandă C și obiecte de date 940 SWIG 940 Inițializarea Tcl 941 Apelarea scripturilor Tc1 942 Utilizarea bibliotecii C T94l2 Crearea pachetelor încărcabile 944 Comanda de încărcare 944 Procedura de inițializare a pachetului 945 Utilizarea TCL_PKGPROVIDE 946 Procedura de comandă C 947 Interfață de comandă String 948 Procedura de comandă Coduri de ieșire 950 Gestionarea Stringurilor de rezultate 950 TCL_OBJ Interfață de comandă 951 Gestionarea contorului de referință TCL_OBJ 953 Modificare TCL_OBJ Valori 955 Probleme cu probleme TCL_OBJ la utilizarea valorilor Tcl_Obj partajate 956 Comanda blob 958 Crearea și ștergerea tabelelor hash 958 Tc1_A11oc, ckalloc și malloc 961 Prelucrarea parametrilor și utilizarea Tcl_GetIndexFromObj 961 Conținut 29 Crearea și ștergerea elementelor de referință Tcl_A11oc, 96965 pentru a susține o listă de valori Tcl_GetIndexFromObj 966 Folosirea Tcl _Preserve și Tcl_ Release pentru protecția datelor 967 Macro-ul CONST în Tcl 8.4 API 969 Operații și internaționalizare cu șiruri 970 Interfața DString 970 Conversie set de caractere 971 Tcl_Main și Tcl_AppInit 972 Scripturi Variante 975 CMain 975 975 Script-uri Variante eties de Tcl_Eval 979 Abandonarea Tcl_ Eval 980 Capitolul 48. Compilarea Tcl și Plug-in-uri 985 Structura directorului standard 986 Pachetul de distribuție 986 Structura directorului de instalare 987 Construirea Tcl din sursă 988 Instrumentele de configurare și autoconf 989 Opțiuni de configurare standard 991 Instalare 993 Utilizarea bibliotecilor stub5 Fișier 999 9 Autoconf. .m4 995 Crearea șabloanelor 996 Exemplu de extensie 996 Fișier configure.in 997 Fișier Makefile.in 998 Fișiere antet standard 1000 Utilizarea extensiei 1000 Capitolul 49. Crearea componentelor Tk în limbajul C 1002 Inițializarea extensiei 1003 Comanda componentă structură de date 100105 Clasa componentelor 1001005 Comanda instanței componente 1010 Instalarea și modificarea valorilor atributelor 1014 Definirea atributelor componente 1019 Afișarea ceasului 1025 30 Cuprins Sprijinirea evenimentelor ferestrei 1029 Eliberarea resurselor 1031 Capitolul 50. Biblioteci C 1033 Informații generale despre biblioteca Tcl C 1033 Crearea4 Inițializarea unei aplicații 1033 interprete 1034 Crearea și ștergerea comenzilor 1035 Pachete și încărcare dinamică 1035 Gestionarea șirurilor de rezultate 1035 Alocarea memoriei 1035 Lucrul cu liste 1036 Analizarea comenzilor 1036 Pipeline 1037 Urmărirea acțiunilor interpretului 1037 Erorile de execuție a informațiilor cu variabile T10371 T10371 38 Procesarea expresiilor 1039 Conversia numerelor 1039 Obiecte Tcl 1039 Tipuri de obiecte de bază 1039 Obiecte șir 1040 ByteArray pentru date binare 1041 Șiruri dinamice 1041 Seturi de caractere 1041 AssocData și Structuri de date Interpreter 1042 Tabele hash 1042 Gestionarea opțiunilor 1042 Buclele de expresie și reglarea evenimentelor 104 Reglarea evenimentelor 1043 Valr 104 Implementarea evenimentelor 104 Lucrul cu fișiere 1044 Evenimente temporizatoare 1044 Reverse Time Idle Calls 1044 I/O 1044 I/O Channel Drivers 1045 Gestionarea numelor de fișiere 1046 Obținerea informațiilor despre sistemul de fișiere 1046 Implementarea unui sistem de fișiere virtual 1047 Suport pentru fluxuri 1047 Lucrul cu semnale 1048 Conținut 31 0 Închiderea normală a programelor 1048484Încărcare 10484 Închiderea programelor normale 1048 Informații generale despre biblioteca Tk C 1049 Programul principal și parametrii liniei de comandă 1049 Crearea ferestrelor 1049 Numele aplicației pentru comanda de trimitere 1050 Configurarea ferestrelor 1050 Opțiunile liniei de comandă 1050 Coordonatele ferestrei 1050 Stiva ferestrei 1051 Informații despre setarea ferestrelor și componenta de selecție 1051 atribute 1051 clipboard 1051 Interfața buclei de evenimente 1051 Gestionarea evenimentelor din fereastră 1052 Legarea evenimentelor 1052 Capturarea evenimentelor de la tastatură 1052 Gestionarea erorilor de protocol grafic 1053 Utilizarea bazei de date de resurse 1053 Gestionarea hărților de biți 1053 Crearea de noi tipuri de imagini 1053 Crearea de noi tipuri de imagini 1053 Asistență 1053 Afișarea imaginilor 145 Utilizarea imaginilor 145 Suport 1053 Afișarea imaginilor 14 Utilizarea imaginilor Atchers Layouts 1054 Identificatori de rând 1055 Hărți de culoare și clase vizuale 1055 Chenaruri cu efecte 3D simulate 1056 Cursore mouse 1056 Fonturi și afișare text 1056 Context grafic 1056 Alocarea memoriei hărții de pixeli 1057 Unități de ecran 1057 Folosirea denivelărilor 1057 Linii de conexiune 1 linii 1 liniuțe 7 1057 1057 Linii de conexiune 1 linii 7 1057 liniuțe linii 1058 Stiluri de aliniere a textului 1058 32 Cuprins Atomi 1058 Gestionarea identificatorilor de resurse 1058 Descriptori de aplicații Windows 1058 Partea VII. Modificări în compoziția Tcl și Tk 1059 Capitolul 51. Tcl 7.4/Tk 4.0 1060 Shell<<Сору» может заменить
Acest articol este dedicat unei introduceri rapide în elementele de bază ale limbajului TCL, care a devenit pentru mine primul limbaj industrial studiat independent după aceeași schemă (sub formă de lecții pe site) pe care o vor folosi cititorii noștri. Înainte de a trece la lecția în sine, să ne dăm seama ce fel de limbă este aceasta.
Limba Tcl
Tcl (din limba engleză Tool Command Language - „tool command language”, citiți „tikl” sau „ti-si-el”) este un limbaj de scripting de nivel înalt.
Tcl este adesea folosit împreună cu biblioteca grafică Tk (Tool Kit). Pachetul Tcl/Tk în rusă este uneori numit „Tak-tikl” (versiunea în engleză este „tikl-tok”).
Domeniile de aplicare ale limbajului sunt prototiparea rapidă, crearea de interfețe grafice pentru programele consolă (pachete software), integrarea în programe de aplicație, testarea. Tcl este folosit și în dezvoltarea web.
Puțină istorie Limbajul a fost dezvoltat de John Ousterhout în timp ce lucra la Universitatea din California din Berkeley. Scopul inițial a fost de a crea un limbaj universal pentru încorporarea în aplicațiile console. După aceasta, Ousterhout și-a extins limbajul cu instrumente pentru crearea de interfețe grafice - așa a apărut Tcl/Tk.
De-a lungul celor 4 ani de dezvoltare în interiorul zidurilor universității, comunitatea Tikl a crescut la câteva sute de mii de programatori. În 1993, a fost dezvoltată prima extensie orientată pe obiecte, incr Tcl.
În 1994, Ousterhout a devenit inginerul principal al proiectului SunScript. În următorii 4 ani, devenind unul dintre proiectele Sun Corporation, Tikl nu numai că a rămas un sistem distribuit gratuit, dar s-a îmbunătățit semnificativ și a devenit multi-platformă.
Richard Stallman a dat o lovitură vizibilă popularității limbii când a publicat o recomandare într-un număr de grupuri de știri în septembrie 1994, „De ce nu ar trebui să folosești Tcl”. În el, el s-a bazat pe afirmațiile că „Tcl nu este conceput ca un limbaj de programare serios” și „Tcl are o sintaxă specială care este atractivă pentru hackeri datorită simplității sale. Dar sintaxa Tcl pare ciudată pentru majoritatea utilizatorilor.” și, de asemenea, în legătură cu promovarea Emacs, Lisp a emis un verdict: „Proiectul GNU nu va folosi Tcl în software-ul GNU”. Pe lângă plângerile subiective cu privire la designul limbajului, Stallman a subliniat un dezavantaj obiectiv la acel moment - performanța scăzută.
Cu toate acestea, creșterea numărului de dezvoltatori care utilizează în mod activ tikl în această perioadă s-a ridicat la 600%.
În 1998, din cauza boom-ului Java și a concurenței intense asociate acestuia, corporația nu a mai putut acorda aceeași atenție gâdilului. John Ousterhout părăsește Sun și creează (cu sprijinul lui Sun) Scriptics, continuând dezvoltarea tehnologiei Tcl/Tk. A fost una dintre primele firme comerciale de software ale cărei activități au fost construite în jurul software-ului liber.
Schema de culori a logo-ului adoptată în anii 90. secolul XX
În martie 1998, Ousterhout a scris articolul acum clasic „Scripting: High-Level Programming for the 21st Century”, în care a numit limbaje de scripting limbaje de integrare a sistemelor, deoarece acestea sunt concentrate în primul rând pe lucrul cu obiecte din mediul de operare, mai degrabă decât cu date elementare. Acest lucru vă permite să „lipiți” astfel de obiecte într-unul singur fără a scrie mii de linii de cod folosind două sau trei comenzi.
În același an, a câștigat două premii majore pentru dezvoltarea limbajului Tcl. Primul este ACM Software System Award, acordat pentru „cel mai important software”. Acest premiu a recunoscut anterior sisteme de bază precum stiva de protocol TCP/IP, prima foaie de calcul, prima bază de date relațională, World Wide Web, Unix, PostScript și Smalltalk. Al doilea este premiul anual USENIX Software Tools User Group (STUG), care recunoaște software-ul remarcabil.
În 1999, a fost lansat Tcl 8.0 - această implementare a introdus compilarea în bytecode pentru prima dată, ceea ce a făcut posibilă creșterea performanței de 6 ori. Următoarea modificare, Tcl 8.1, a introdus suport complet pentru Unicode și a introdus multithreading pentru prima dată. În ceea ce privește această versiune, Ousterhout a declarat: „În general, 8.1 mută Tcl într-o categorie nouă, deoarece poate fi folosit acum pentru aplicații de server. C, C++ și Java pot fi încă folosite pentru a crea părți critice pentru performanță ale aplicațiilor, iar Tcl poate fi folosit în continuare pentru integrare și crearea de componente front-end.”
În 2000, Scriptics a fost redenumită Ajuba Solutions și apoi achiziționată de Interwoven, care nu era interesată să lucreze cu software liber. Din acest motiv, dezvoltarea Tcl a fost predată comunității de programare. Așa s-a format Tcl Core Team.
La cea de-a 9-a conferință Tcl/Tk, desfășurată la Vancouver, a fost prezentat sistemul de fișiere virtual StarKit, oferind o modalitate nouă, ușor de utilizat, de a distribui programe Tcl.
(Acest material este preluat de pe Wikipedia favorită a tuturor: https://ru.wikipedia.org/wiki/Tcl)
Și acum puțin din părerea mea personală. Ca atare, limbajul Tcl este un limbaj de programare excelent, care are o mulțime de biblioteci (numărul său de „baterii” este unul dintre cele mai mari astăzi), a trecut testul timpului (adică nu mai are boli ale copilăriei, ca aceleași Du-te), și, de asemenea, este foarte ușor de învățat. Îl poți stăpâni în câteva zile! Și, în același timp, limbajul va fi util atât administratorului de sistem (scripturile sunt scrise foarte convenabil), cât și programatorului.
TCL: motive pentru popularitatea scăzută Pentru început, îi voi supăra pe cei care fac spumă la gură și țipă că „Tcl nu este necesar” sau „Tcl este mort”. Pentru a respinge acest din urmă, priviți data de lansare a celei mai recente versiuni a interpretului Tcl/Tk.
Despre primul lucru - AOL, BMW nu va folosi un limbaj inutil, CPU nu va acorda un ACM Software System Award pentru crearea sa. În prezent, dezvoltarea în Tcl/Tk se realizează în principal în profunzimea companiilor care scriu software în acest limbaj pentru uz intern. Prin urmare, vorbind despre impopularitatea lui Tcl/Tk, vorbim în primul rând despre impopularitatea acestuia în rândul dezvoltatorilor de aplicații pentru utilizatori desktop.
Următorul argument care este prezentat ca nepopularitatea lui Tcl/Tk este că aspectul standard al unui set de widget-uri nu este frumos, ca exemplu - este dat clientul tkabber jabber. Este demn de remarcat despre această afirmație - setul de widget-uri standard au valori implicite ale atributelor care corespund modelului cu barbă, al cărui aspect este într-adevăr puțin cronic.
Dar de ce să folosiți valori implicite? Un dezvoltator Tcl/Tk cu experiență este capabil să creeze o interfață care nu este deloc inferioară în aspect față de majoritatea aplicațiilor.
În plus, astăzi Tk acceptă „teme” și se poate adapta extern la aspectul mediului grafic al sistemului de operare, ceea ce face ca programele Tcl/Tk să nu se distingă de analogii lor pur extern.
Un dezavantaj semnificativ pentru multe echipe comerciale de dezvoltare de software este că programele în limbaj sunt încă distribuite sub formă de cod sursă, fără traducere prealabilă în bytecode, de exemplu. software-ul scris în Tcl/Tk este open source. Și majoritatea dezvoltatorilor de software comercial evită acest lucru.
Printre dezvoltatorii de software gratuit și open source, popularitatea Tcl a scăzut datorită FSF și Richard Stallman în special. În septembrie 1994, RMS a scufundat permanent ideile productive ale lui Tcl/Tk cu recomandarea sa „De ce nu ar trebui să folosești Tcl”, care s-a concentrat pe sintaxa presupus imposibil de complexă a lui Tcl (contând ca contraargument un limbaj cu sintaxă mult mai grea, dar cu o semantică clară, - Lisp) și despre „simplitatea Tcl care captivează hackerii”. Nereușind să înțeleagă ideile de bază ale lui Tickle despre „extensibilitate” și „extensibilitate”, RMS dă lovitura finală argumentând că Tcl este potrivit doar pentru aplicații mici și dând verdictul: „Prin urmare, Proiectul GNU nu intenționează să folosească Tcl în GNU. software." Acest lucru este deosebit de ciudat având în vedere faptul că Lisp și Tcl au trăsături și idei comune, în special aceeași extensibilitate. În ciuda tuturor eforturilor lui Stallman, Tcl nu s-a scufundat niciodată, iar Lisp nu a reușit să ocupe o poziție de lider în rândul limbilor pentru dezvoltarea aplicațiilor desktop.
După cum vede o minte curioasă, nu există un motiv obiectiv pentru a nu studia și folosi Tcl. Înainte de a trece la lecție, să trecem și prin cele mai frecvente întrebări despre această limbă.
FAQÎntrebarea (B): Ce este Tcl?
Răspuns (O): Tcl este un limbaj de scripting de nivel înalt. Este considerat unul dintre cele trei limbaje de scripting clasice. Înainte de apariția PHP, a fost folosit în locul celui din urmă. Este foarte strâns interconectat cu setul de instrumente Tk, care vă permite să scrieți programe destul de funcționale cu o GUI într-un timp scurt.
ÎN: De ce să înveți Tcl când poți folosi orice limbaj de scripting legat de Tk?
DESPRE: Poate sa. Dar este mai bine să utilizați orice set de instrumente în mediul său „nativ” (codul arată mai organic). Și programele în Tcl/Tk pur funcționează mai repede decât folosind poduri pentru Ruby/Tk, Perl/Tk etc., deoarece trage cu ele ambele medii de execuție. Portabilitatea programelor și scripturilor suferă și de acest lucru - pentru a rula fișierul, veți avea nevoie de mediul instalat nu numai al limbajului de scripting în care este scris programul, ci și Tcl/Tk (primul este necesar tocmai ca „punte". ”).
ÎN: Dar există Lisp!
DESPRE: Da el este. Și unii programatori compară Tcl cu el. Îi spun chiar „Tcl - Lisp On Drugs”. Limbile sunt într-adevăr similare - lucrul cu liste, metaprogramare. Dar există și diferențe serioase. De exemplu, în Tcl totul este un șir, nu un caracter.
ÎN: Pot scrie în Tcl funcțional?
DESPRE: Puteți. Tcl vă permite să scrieți într-un stil funcțional.
ÎN: Ce paradigme acceptă Tcl/Tk?
DESPRE: Imperativ, funcțional, orientat pe obiecte. Funcționalitatea a fost foarte bine susținută începând cu versiunea 8.6, iar recursiunea cozii a fost în sfârșit implementată corect. Acesta din urmă este suportat de mult timp, una dintre cele mai cunoscute extensii OOP, XOTcl, implementează programarea orientată pe obiecte în stilul Smalltalk... În ultimul timp, am ajuns la concluzia că Tcl este deja un limbaj cu implementare ( deşi parţial) a tuturor paradigmelor deodată.
ÎN: Unde sa încep?
DESPRE: Pentru a începe, puteți citi acest articol și urmați actualizările =)
ÎN: Care sunt implementările Tcl/Tk?
DESPRE: Ca atare, Tcl/Tk este unul, dezvoltarea sa astăzi este realizată de Tcl Core Team, dar există și extensii pentru acesta: implementare standard a Tcl, XOTcl: exotic (extensie pentru OOP), iTcl (First OOP extension, Inct Tcl, iWidgets este scris pe el), SNIT (adeziv obiect pentru Tcl, inclus în biblioteca standard Tcl), STOOOP (extensia OOP scrisă în Tcl, inclusă și în biblioteca standard astăzi)
ÎN: Ce sunt „adunările”?
DESPRE: Există coduri sursă oficiale pe care oricine le poate descărca de pe site-ul oficial și le poate asambla. Există și distribuții de la echipe terțe: ActiveState Tcl (proprietar, există o versiune plătită, pentru toate sistemele de operare majore), WinTcl (mai compact, axat pe lucrul cu XOTcl, conține Tloona și XOTcllde, după cum sugerează și numele - pentru Win ), TclKit (suficient de o distribuție compactă axată pe utilizarea iTcl, este asamblată într-un singur pachet și are un sistem de gestionare a conținutului propriu, cross-platform), dqkit ("TclKit pe steroizi, există mai multe opțiuni de asamblare, cross-platform). ), Tcl/Tk Aqua (distribuția este concepută exclusiv pentru MacOS Recent a apărut o implementare Tcl pentru .Net - Eagle.
ÎN: Ce IDE ar trebui să iau?
DESPRE: Vim, Emacs sunt excelente editori personalizabili care se extind într-un IDE cu drepturi depline. Dezavantajul celui din urmă este suportul slab de sintaxă pentru cele mai recente versiuni de Tcl. (g) Vim acceptă perfect sintaxa celor mai recente versiuni fără setări suplimentare. Pentru Windows - ActiveState Komodo. Tloona - IDE pentru Tcl/Tk scris în Tcl/Tk.<Требуется подробное описание>. XOTcllde - IDE ca ClassBrowser pentru Smalltalk. Concentrat pe lucrul cu XOTcl. Visual Tcl/Tk (vtcl) este un mediu de dezvoltare puternic similar cu Delphi sau QtCreator, cu capacitatea de a edita cod.
ÎN: Ce literatură poți citi?
DESPRE: Există destul de multe tutoriale în limba engleză pe Tcl/Tk. Rusul a găsit doar unul (a subliniat el). Din cărți vă pot recomanda „Practical Programming in Tcl and Tk, 4th Edition” (B.B. Welsh, K. Jones, D. Hobbs), în limba engleză - „Tcl and Tk Programming for the Absolute Beginner” (Kurt Wall) .
Instalarea Tcl Pentru a începe programarea în Tcl, trebuie să aveți instalată o mașină virtuală care va procesa codul pe care îl scrieți. Să vedem cum se instalează:
0) Pentru Calculate Linux/Gentoo: emerge dev-lang/tcl, emerge dev-lang/tk, emerge dev-tcltk/tcllib
1) Pentru Fedora: yum install tcl tk
2) Pentru Ubuntu: sudo apt-get install tcl tk
3) Pentru Windows și MacOS: cel mai simplu mod este să utilizați distribuțiile binare. Descărcați oricare și instalați-l în două clicuri.
4) Construirea Tcl/Tk din surse. Descărcați sursele (situate separat pentru Tcl și separat pentru Tk) de pe site-ul oficial și rulați următoarele comenzi pentru fiecare arhivă: 4.1 Dezambalarea fișierelor sursă: $ tar zxf file_name.tar.gz
4.2 Accesați folderul cu comanda: $ cd file_name && cd unix
4.3. Executați: $ ./configure --prefix=/opt --enable-gcc
(pentru Tk: $ ./configure —with-tcl=../../tcl8.5a5/unix —prefix=/opt —enable-gcc)
4.4 Apoi: $ make
4.5. Apoi: $ make test
4.6. Și în sfârșit: $ make install
Pentru a porni mediul interactiv, tastați în terminal:
$tclsh
Ar trebui să apară simbolul %.
Primul program
Să scriem un program clasic „Cuvinte salutare” în Tcl. Introdu următorul cod:
pune "Bună, cuvinte!"
ca răspuns vei vedea:
Cuvinte salutare!
Felicitări! Ai scris primul tău program în Tcl. Simplu, nu-i așa? Să ne concentrăm pe comanda puts. Această comandă/funcție trimite text către orice dispozitiv standard de intrare/ieșire (în cazul nostru, un terminal). În mod implicit, după imprimarea textului, pune cursorul la începutul liniei următoare.
Observ că în această lecție sunt afișate mai multe cuvinte; în acest scop, ele sunt cuprinse între ghilimele duble ("..."). În exemplele simple din acest tutorial, ghilimele și bretele funcționează în același mod. Dar, de fapt, există o mare diferență între ele, dar despre asta vom vorbi puțin mai târziu.
Comanda puts este în esență o funcție, deoarece un anumit element al limbajului care nu numai că efectuează orice acțiune, dar ia și de la unul la un număr infinit de argumente (cel mai apropiat analog este funcțiile în matematică). Dacă șirul pe care îl imprimam pe ecran nu era cuprins între ghilimele sau acolade, interpretul Tcl ar trata fiecare cuvânt ca un argument separat și l-ar transmite separat comenzii puts. Funcția puts va presupune că există mai multe argumente și va returna un fold în majoritatea cazurilor.
În esență, linia de comandă Tcl este doar o listă de cuvinte. Se prelucrează după următorul principiu:
1. Primul cuvânt este comanda (funcția) în sine care trebuie executată.
2. Toate următoarele cuvinte sunt argumente sau parametri ai funcției.
Rețineți că, spre deosebire de majoritatea limbilor, în Tcl linia de comandă se termină la sfârșitul liniei, adică. un caracter de linie nouă sau un punct și virgulă (;). Dar ultima metodă nu este foarte bună, va reduce înțelegerea codului dvs.
Ce este simpol novostroki? Acesta este un caracter invizibil pe care computerul îl înlocuiește în codul sursă al programului atunci când apăsați tasta Enter. În limbi precum Pure C este notat cu „\n”.
Deoarece programele pot fi destul de lungi, este o formă bună și o practică utilă să lăsați comentarii în codul sursă (un fel de explicație a ceea ce face cutare sau cutare bucată de cod din programul dvs.).
Puppy este o distribuție mică, dar oferă o selecție largă de limbaje de programare. În mod implicit, Live-CD nu instalează nimic pentru compilarea programelor C sau C++, cu toate acestea, există un fișier suplimentar devx_xxx.sfs (unde xxx este numărul versiunii Puppy, de exemplu 210) care transformă Puppy într-un mediu de compilare complet C/ .C++ (de asemenea, plus compilatorul FreeBASIC). Chiar și fără fișierul devx_xxx.sfs, Live-CD-ul conține multe limbi, inclusiv procesarea scripturilor Ash/Bash, Tcl/Tk și PuppyBasic. Această pagină este dedicată unei imagini de ansamblu asupra capabilităților software Puppy...
Scripturi Ash/Bash
Un limbaj care este deja complet gata de utilizare în Puppy este scriptul coajă(scripting comandă-shell). Scriptul shell Unix/Linux a existat din timpuri imemoriale și va continua să existe atâta timp. Prin „shell shell” mă refer la interfața de utilizator pe care o utilizați când lucrați cu linia de comandă. Când rulați X (un shell de fereastră grafic), promptul de comandă este într-o fereastră de terminal; când părăsiți X, vă întoarceți la promptul de comandă.
Programul care rulează și interacționează cu tine se numește comandă-shell, care în Linux este de obicei shell-ul Bash. În Puppy ai de ales între două cochilii, Bash și Ash.
Rețineți că X într-o fereastră de terminal lansează Bash. Dacă ieșiți din X la linia de comandă, Ash va porni. Pentru a identifica în mod unic shell-ul cu care doriți să lucrați, ar trebui să puneți „#!/bin/bash” sau „#!/bin/sh” (sau „#!/bin/ash”) pe prima linie a scriptului.
Un script shell este un program real, doar că este stocat într-un fișier text și nu necesită compilare. Scripturile pot fi foarte complexe, iar Puppy are un număr mare de ele.
Această pagină nu este un tutorial despre dezvoltarea scripturilor Ash/Bash - există multe cărți pe acest subiect, precum și link-uri pe Internet. Puteți găsi câteva astfel de link-uri aici: „Ghid avansat de scriptare Bash”, „Programare Bash --- Introducere HOWTO”.
Tot ce ai nevoie pentru a scrie scripturi Ash/Bash este un editor de text, Puppy are două editoare de consolă, e2Și MP, și doi editori GUI, GeanyȘi Leafpad. Geany și MP sunt interesante pentru că pot evidenția sintaxa pentru scripturile Ash/Bash. (vezi și ML mai jos sub Tcl/Tk)
Distrează-te proiectând scenarii pentru Puppy!
Puppy are o mulțime de documente și instrumente pentru a vă ajuta să dezvoltați scripturi:
gtk-shell- o alternativă GTK foarte flexibilă, simplă și mică la xmessage și Xdialog anterioare. Poate afișa/edita fișiere, poate afișa dialogul de selecție a fișierelor, poate accepta text personalizat, poate lucra cu butoanele de selecție. Fara documentatie. Pentru ajutor, tastați (în consolă) # gtk-shell -h .
gtkdialog3- o altă alternativă pentru gtk-shell, xmessage și Xdialog. gtkdialog este o aplicație GTK2 care citește un fișier XML care descrie formatul de dialog și interacțiunea utilizatorului și poate fi folosită pentru a crea interfețe grafice (interfețe grafice de utilizator) incredibil de sofisticate. Acest program a fost introdus pentru prima dată în Puppy 0.9.7. Cred că gtkdialog este alegerea ramurii!
În prezent, există două versiuni de gtkdialog în Puppy, gtkdialog2 și gtkdialog3 - este de preferat să folosiți cea mai recentă versiune deoarece este probabil să fie singura rămasă în Puppy - cu alte cuvinte, rulați întotdeauna binarul gtkdialog3.
Iată câteva scripturi folosite în Puppy:
/usr/sbin/pmount /usr/sbin/timezone-set
Tcl/Tk
Tcl este un limbaj de scripting interpretat similar cu scripturile Ash descrise mai sus, iar un program Tcl poate fi folosit la fel de ușor ca un script shell. Totuși, locul în care Tcl iese cu adevărat în evidență este biblioteca Tk, care transformă Tcl într-un mediu software complet GUI (interfață grafică cu utilizatorul). Există multe biblioteci suplimentare pentru Tcl, Puppy are în prezent
Tk(biblioteca standard care oferă toate widget-urile de bază),
fig(Tcl/Tk funcționează numai cu fișiere gif, această bibliotecă adaugă lucru cu jpeg, png, etc.),
Combobox(element complex cu listă derulantă),
BWidget(unele controale mai complexe).
Toate acestea le veți găsi în directorul /usr/lib.
Multe aplicații în Puppy (și în pachetele PET) sunt scrise în Tcl/Tk, asta Slidedraw, TkZip, CDTAR, XS, snap, tkpppoe, phv, TkDVDȘi regexpviewer.
Deci de ce Tcl? De ce nu Perl sau Java? Pentru mine, personal, există trei motive: există un număr mare de aplicații GUI disponibile, Tcl/Tk are o dimensiune foarte mică și este o limbă foarte ușor de învățat. Ultimul motiv este extrem de important, deoarece datorită lui pot citi cu ușurință codul scris de alte persoane, ceea ce nu se poate spune despre limbaje bazate pe sintaxa C care au cod greu de înțeles (C++, Java).