Cambalache 1.0 est désormais disponible. Cet outil de développement rapide d'interfaces pour GTK 3 et GTK 4 utilise une conception visuelle (WYSIWYG), le paradigme MVC et une approche centrée sur les données. La version 1.0 marque l'avènement d'une utilisation à grande échelle. Le code est écrit en Python et distribué sous licence LGPLv2.1. Un paquet Flatpak est disponible pour l'installation.
Contrairement à Glade, Cambalache permet de gérer plusieurs interfaces utilisateur au sein d'un même projet. Cambalache ne dépend ni de GtkBuilder ni de GObject, mais propose un modèle de données conforme au système de types GObject. Il prend en charge l'édition, la visualisation et la création de styles GTK au format CSS, l'édition de fichiers XML avec GResources, la création de modèles et de widgets, ainsi que l'utilisation de fichiers XML GtkBuilder et du balisage Blueprint.
Le modèle de données permet d'importer et d'exporter simultanément plusieurs interfaces, prend en charge les objets, propriétés et signaux GtkBuilder, offre une pile d'annulation/rétablissement et la possibilité de compresser l'historique des commandes. L'utilitaire cambalache-db permet de générer le modèle de données à partir de fichiers gir, et l'utilitaire db-codegen sert à générer les classes GObject à partir des tables du modèle de données.
L'interface peut être générée à l'aide de GTK 3 ou GTK 4, selon la version spécifiée dans le projet. Afin de prendre en charge différentes versions de GTK, l'espace de travail est généré dans un processus distinct grâce au widget Casilda, qui permet d'intégrer des fenêtres d'autres processus dans des applications GTK 4 et est implémenté comme un composite spécialisé. serveurCasilda utilise le protocole Wayland et la bibliothèque wlroots. Elle crée des périphériques d'entrée virtuels auxquels sont diffusés les événements depuis le GtkEventController, ainsi qu'un périphérique de sortie virtuel de la taille du widget intégré de l'application. Grâce à wlroots, le contenu de prévisualisation est dessiné dans un tampon de pixels et chargé comme une surface Cairo (cairo.Surface) pour le rendu dans GTK.

Source: opennet.ru
