Megjelent a Cambalache 1.0 projekt kiadása, amely a GTK 3 és GTK 4 felhasználói felületek gyors fejlesztéséhez használt eszközt fejleszti, vizuális tervezést (WYSIWYG), MVC paradigmát és adatminta prioritásának filozófiáját alkalmazva. Az 1.0 verziószámot a projekt széleskörű felhasználásra való alkalmas állapotának elismeréseként adják meg. A kód Python nyelven készült és LGPLv2.1 licensz alatt érhető el. Telepítéskor flatpak formátumú csomag érhető el.
A Glade-dal ellentétben a Cambalache támogatja több felhasználói felület kezelését egyetlen projekt keretein belül. A Cambalache nem függ a GtkBuilder-től és a GObject-től, azonban adatmodellt biztosít, amely megfelel a GObject típusának. Támogatja a GTK-stílusok CSS formátumban való szerkesztését, a GResources erőforrást tartalmazó XML-fájlok szerkesztését, sablonok és widgetek létrehozását, GtkBuilder XML-fájlok és Blueprint markup használatát.
Az adatmodell egyszerre több interfész importálását és exportálását is támogatja, kezeli a GtkBuilder objektumait, tulajdonságait és jeleit, visszalépési (Undo / Redo) műveleteket biztosít, valamint lehetőséget ad a parancsok történetének összenyomására. A gir-fájlokból való adatmodell generálásához elérhető a cambalache-db eszköz, míg a GObject osztályok adatmodellek tábláiból történő generálásához a db-codegen eszköz.
A felhasználói felület a GTK 3 és GTK 4 alapján generálható, a projektben meghatározott verziótól függően. A különböző GTK ágak támogatásának biztosítása érdekében a munkaterület egy külön folyamatban készül, amelyhez a Casilda widgetet alkalmazzák, lehetővé téve más folyamatok ablakainak beágyazását GTK4-alkalmazásokba, amely egy speciális kompozit formájában valósult meg. a szerver, amely a Wayland protokollt és a wlroots könyvtárat használja. A Casilda virtuális bemeneti eszközöket hoz létre, amelyek eseményei a GtkEventController-ből kerülnek továbbításra, valamint egy virtuális kimeneti eszközt, amely méretében megegyezik az alkalmazásba ágyazott widget méretével. A wlroots segítségével a megjelenítési tartalom pixelek tömbjébe kerül rajzolásra és cairo.Surface alakjában töltődik be a GTK-tól való rajzoláshoz.

Forrás: opennet.ru
