A fost lansată versiunea proiectului Cambalache 1.0, care dezvoltă un instrument de dezvoltare rapidă a interfețelor pentru GTK 3 și GTK 4, folosind proiectarea vizuală (WYSIWYG), paradigma MVC și filozofia modelului de date ca prioritate. Atributul versiunii 1.0 este prezentat ca o realizare a pregătirii proiectului pentru utilizare pe scară largă. Codul este scris în Python și este furnizat sub licența LGPLv2.1. Un pachet în format flatpak este disponibil pentru instalare.
Spre deosebire de Glade, Cambalache oferă suport pentru gestionarea mai multor interfețe utilizator în cadrul aceluiași proiect. Cambalache nu depinde de GtkBuilder și GObject, dar oferă un model de date corespunzător sistemului de tipuri GObject. Este suportat editarea, vizualizarea și crearea stilurilor GTK în format CSS, editarea fișierelor XML cu resurse GResources, crearea de șabloane și widget-uri, utilizarea fișierelor XML GtkBuilder și a marcajului Blueprint.
Modelul de date poate importa și exporta mai multe interfețe simultan, suportând obiecte, proprietăți și semnale GtkBuilder, oferind un stivă de anulare a operațiunilor (Undo / Redo) și posibilitatea de comprimare a istoricului comenzilor. Pentru generarea modelului de date din fișierele gir, este disponibilă utilitarul cambalache-db, iar pentru generarea claselor GObject din tabelele modelului de date - utilitarul db-codegen.
Interfața poate fi generată pe baza GTK 3 sau GTK 4, în funcție de versiunea specificată în proiect. Pentru a asigura suportul pentru diferite ramuri GTK, formarea spațiului de lucru se realizează într-un proces separat, cu ajutorul widget-ului Casilda, care permite încorporarea feroneriilor din alte procese în aplicațiile GTK4 și este implementat sub formă de compozit specializat, server, folosind protocolul Wayland și biblioteca wlroots. Casilda creează dispozitive virtuale de intrare, evenimentele fiind transmise din GtkEventController, precum și un dispozitiv virtual de ieșire, având dimensiunea widget-ului încorporat în aplicație. Cu ajutorul wlroots, conținutul pentru previzualizare este redat în bufferul de pixeli și se încarcă ca o suprafață Cairo (cairo.Surface) pentru redare în GTK.

Sursa: opennet.ro
