Caracteristici de implementare Tkabber wiki

Acest articol oferă răspunsuri detaliate la pachet diverse probleme adresate periodic de către utilizatori cu privire la limba Tkabber punerea sa în aplicare, precum și aspecte conexe - în ceea ce privește aspectul său.

Tkabber scrise în limba Tcl și utilizează biblioteca Tk pentru a crea utilizator (GUI) interfață grafică de utilizator.

În ciuda existenței unor (aproape fără precedent) widget-uri puternice (cum ar fi text (utilizat în ferestrele de chat) și pânza (pe ea a făcut rotisoare)) în Tk nici un astfel de „primitive“ cum ar fi: „ProgressBar“, „notebook-uri“ (programatori vindovyh mai mult cunoscut sub numele de „control pagina“ sau „tab-ul de control“), „repartitoare“, gata să sprijine ferestrele standard de dialogovoyh. Cu toate acestea Tk o multime de implementări de la terțe părți de a compensa această deficiență în scris; Tkabber utilizarea pe scară largă a unuia dintre aceste „seturi de widget“ - BWidget.

Nu: adăugați despre Tcllib

În general vorbind, este cel mai simplu mod de a răspunde la o întrebare cu o întrebare: „de ce nu?“ - Tcl este un sistem avansat de limbaj „scripting“; faptul că tot în jurul lui mult mai puțin decât zgomotul, care se face referire prin termenul „hype“. și el nu a fost niciodată „la moda“, la populația / .. să nu spun că nu se poate crea un proiect serios. Mai mult decât atât, unii sunt surprinși să afle că Tkabber nu numai Jabber-clienți, și cu siguranță nu numai Messenger'om Instant. scris în Tcl / Tk.

Tk este o alegere „naturală“ pentru a crea o interfață grafică într-o aplicație scrisă în Tcl, datorită faptului că ligamentul Tcl / Tk este aproape unic (cu exceptia unui foarte foarte soluții „ezoterice“), în sensul că GUI-Toolkit este foarte convenabil andocat cu limba - atât în ​​termeni de filosofie, iar în termeni utilizați atunci când se lucrează cu ea constructe lingvistice.

  • Standardul mantra: „de ce nu?“;
  • Justificare tehnică.

Și de ce nu?

99% dintre revendicările de la Tk nu privește caracteristicile sale tehnice, și cum arată (și, în general, a simțit) pe un anumit sistem, un anumit utilizator - nu este un secret faptul că 97% din „desktop“ este unul dintre sistemele de operare instalate în lumea modernă, venind în jos calei Microsoft, dar pe resturile jalnici angajate în principal soluții bazate pe Linux și * BSD, GNOME și KDE împărăți. adică există o „dominanță rezonabilă“ aplicații folosind un GTK GUI toolkit și Qt. respectiv.

Prin urmare, argumentul nostru slab: de ce, de fapt, GTK sau Qt? Deoarece domină pe sistemul dvs.? Dar, în orice caz, să nu fie în măsură să mulțumească pe toată lumea: GTK-cerere va fi străină într-un mediu Qt și vice-versa. O aplicație GTK sau Qt nu va arata destul de nativ pe Windows, chiar dacă este mai aproape de „mintea naturală“ decât Tk.

În cele din urmă, Tkabber sa născut ca aplicație „X“, ci mai degrabă o parte semnificativă a utilizatorilor X Window nu utilizează „mediile de desktop“, cum ar fi GNOME și KDE - ei folosesc conceptul „canonic“: managerul de ferestre + suita de aplicatii, ferestrele pe care le poate controla . Aplicații în același timp, poate fi orice, demonstrând în mod clar „confuzie si ezitarilor“ „toolkit X în toată urâțenia lui. Tk în acest caz, nu arată mai rău și mai bine decât celelalte.

Se înțelege de asemenea că alte toolkit lipsa lor „gândaci de bucătărie în capul meu.“ și trecerea la un alt set de instrumente poate crea cu ușurință mai multe probleme decât rezolvă.

Partea tehnică a lucrurilor

În Tk are unele caracteristici interesante care fac să iasă în evidență într-un număr de GUI toolkit:

  • dimensiuni foarte mici;
  • Extensiile de masă scrise pe Tcl „pure“;
  • Tk este o parte integrantă a dorinței coajă. adică, un program care efectuează script-urile LCT in mediile „fereastra“.

Acesta vă permite să creați distribuții "all-in-one", a cererilor scrise în Tcl / Tk - starkity și starpaki.

Cu alte cuvinte, „apropierea“ pentru setul de instrumente Tcl Tk care dă un cap de câteva puncte începe peste celălalt sau setul de instrumente, care este obligat să o efectueze:

  • legăturile speciale pentru setul de instrumente;
  • Setul de instrumente în sine ca o bibliotecă (sau un set de zece biblioteci, așa cum este cazul cu GTK2 +).

Oamenii care citesc câteva cărți despre programare, această idee pare rezonabil. În realitate, totul este mult mai complicat.

Problema principală constă în faptul că diferite GUI toolkit au diferite filozofie de programare. Aceasta conduce la faptul că diferite pachete de instrumente pentru a susține necesitatea de a: a) să scrie „miezul“ într-un mod foarte general, dezvoltarea unor interfețe abstracte pentru interacțiunea cu setul de instrumente de bază; b) să scrie încă un strat de cod pentru fiecare set de instrumente - Acest set de instrumente pentru legarea la miez. Ca urmare, codul va crește Tkabber bine dacă este dublat, iar lizibilitatea este redus, probabil, chiar mai mult decât dublu. O idee buna a ceea ce probleme conduce o abordare similară poate fi spicuite de privirea de la GiTK.

O altă problemă, insesizabil la o examinare superficială, este faptul că crearea unui cod de „pur“ aproape nevzomozhno - orice platformă are propriile sale probleme, care necesită „trucurile“ de cod, de a crea o „cârjă“ și alte deformări, în anumite cazuri. Din păcate, Tkabber forțată lipsa de astfel de locuri. În cazul abordării „Providerilor“, vom multiplica în mod automat și probleme similare.

În cele din urmă, probabil, punctul cheie: dezvoltatorii sunt destul de mulțumiți de Tcl / Tk, iar ideea de „port aflat sub Tkabber <место для тулкита>„Scoală-te în principal, de la cei care au pus munca lor în ea nu vrea.

„API extern“ (cum ar fi, de exemplu, API-ul plugin Miranda) în Tkabber acolo, deoarece este scris în TCL, și nu pe C; în consecință, se presupune că „script“ este produs cod Tkabber pe Tcl.

Taxa în absența C API-ul rezultat, de obicei, ca fiind cauza „imposibilitate Tkabber scriptat, altele decât Tcl limbi“ (mai precis - „pentru limba preferată“). Teoretic, această acuzație este justificată. Cu toate acestea, să ne uităm la problema din punct de vedere practic (ignorând faptul că crearea C API pentru codul Tcl se referă la non-science-fiction):

  • Prezența C API nu face în mod automat la dispoziția legările API pentru alte limbi - cele mai întâi pe cineva trebuie să scrie. Și sprijin. Prin urmare, afirmația „Eu nu pot scriptat / Tkabber extinde pe limba dvs. preferat“, în cele mai multe cazuri, ar trebui să fie tradus ca „Eu știu doar C ++ si Java, si Tickle dvs. nu doresc să învețe.“
  • Presupunând existența C API și legături pentru alte limbi, vom vedea oportunitățile și problemele de portabilitate: Să presupunem că ați scris un plugin pentru Tkabber, să zicem, Python. Există mulți oameni sunt dispuși să pună în runtime Python pentru a utiliza plugin-ul? Cum să se ocupe cu proliferarea versiunilor „ambalate“ plug-in Tkabber? Chiar dacă plugin-ul a fost scris direct în C, - există o problemă de cross-platform construi, care este un pachet complet de probleme de suport mai multe sisteme de compilare (având, de exemplu, în cazul de asamblare extensii Tcl scrise în C).

Pe de altă parte, scripting / extensie Tkabber limba sa „nativ“ este lipsit de toate aceste probleme, în plus față de problema de sine dopilivat.

de ce spun tkaber teribil? o_0
zayza: pentru că l-au văzut

Tkabber (sau mai degrabă - Tk) este prins în toate, fără excepție, cross-platform GUI toolkit - este imposibil să se uite "nativ", care lucrează pe o platformă non-native. Din păcate, după cum sa menționat mai sus, acest lucru se aplică nu numai la problema „Tk în Windows“, ci la „Tk în GNOME / KDE“.

Din păcate, aspectul „în curentul principal“ dintre cele mai recente tendințe de moda, și alte ferestre „mediile desktop“ Tk, cel mai probabil, nu va fi niciodată - greu stau ferm pe niște scaune de înălțimi diferite, forme și modele imediat.

Mai multe îndulci pilula poate fi oportunități suficiente pentru a schimba aspectul Tk-aplicații, care (va fi vreodată) descrise aici.

În același timp, vă spun mai multe despre una dintre tema pop-up:

Placi de ceramica în Tkabber

Tile - este un add-on Tk, concepute pentru a rezolva unele probleme cu „arc și Phil“ inerente Tk:

  • Punerea în aplicare un aspect „nativ“ în Windows XP (de exemplu, motorul să-l folosească);
  • Punerea în aplicare a mai multor widget-uri noi, remake-ul vechi.

Tile este o problemă este că nu este un „inlocuitor“ pentru Tk. Este important să se înțeleagă: Placi de conexiune simplă la un proiect existent care utilizează Tk, nu privot el „magic“ toate Tile avantaje. În special, în cazul în care widget-urile standard, Tk încă mai pot (cu unele genuflexiuni la asamblare placi de ceramica) „mutat“ la un nou motor, toate widget-uri „stânga“ (de exemplu, widget-uri din BWidget) „vâsle uscate“ - se uite și să lucreze drumul vechi.

Cu alte cuvinte, trebuie să port de sub Tkabber de placi de ceramica, deci este cu acest lucru Tile corect.

Acest lucru ridică o altă problemă. Acesta constă în faptul că Tkabber poziționat de dezvoltatori ca aplicație maximă portabilitate. Acest lucru înseamnă, printre altele, că:

  • Tkabber (formal) funcționează chiar și pe Tcl / Tk 8.3;
  • Tkabber independent (în sensul de „nu poate funcționa fără“) numai pe componentele software care au fost mult timp disponibile pe scară largă în oricare dintre platformele de cea care funcționează Tcl / Tk. Și numai unul dintre aceste componente (Tcl / Tk) este scris în C, și trebuie să fie „colectate“ de pe platforma țintă, în cazul în care nu există în formă finită; alte componente (Tcllib și BWidget) este un cod de pe TCL - destul de ei „extinde“ din arhivele - și sunt gata de plecare.

Tile nu se aplică aceste componente. Este suficient să spunem că în natură nu există nici măcar un astfel de lucru ca o „eliberare stabilă a țiglei“, ceea ce înseamnă că API-ul său se poate schimba de două ori pe zi.

Până în prezent, starea de lucruri este de așa natură încât, dacă vom arunca totul și „cravată“ Tkabber la țiglă, atunci acesta va lovi atât pentru dezvoltatori (care au nevoie să urmeze rapid schimbări în placi de ceramica), cât și pentru utilizatori (de faianță și gresie, în măsura în care știm, nu în orice distribuție Linux grave) - Tkabber pierde unul dintre principalele sale calități - capacitatea de a lucra fără mișcări prea grave, de către utilizator pe orice sistem care are un Tcl / Tk.

O altă problemă (mai puțin grave) este faptul că Tkabber depinde foarte puternic de BWidget - face cu ea: aproape toate dialogului, interfața meniului principal cu file (deși în alfa 0.10.1 implementat deja o abordare diferită), copaci, drop-down liste așa mai departe. Deoarece BWidget nu suporta placi de ceramica si, judecând totul, nu-l va sprijini, portarea Tkabber sub țiglă - acesta este un pas foarte important: înainte de a face, dezvoltatorii trebuie să fie sigur că Tile a primit același acces ca BWidget.