La version 1.0 du projet Cambalache a été lancée, développant un outil de développement rapide d'interfaces pour GTK 3 et GTK 4, utilisant la conception visuelle (WYSIWYG), le paradigme MVC et la philosophie de l'importance primordiale du modèle de données. L'attribution du numéro de version 1.0 est présentée comme une réalisation de la préparation du projet à une utilisation large. Le code est écrit en Python et est distribué sous la licence LGPLv2.1. Un paquet au format flatpak est disponible pour l'installation.
Contrairement à Glade, Cambalache offre le support de la gestion de plusieurs interfaces utilisateur dans un même projet. Cambalache ne dépend pas de GtkBuilder et GObject, mais fournit un modèle de données compatible avec le système de types GObject. La prise en charge de l'édition, de la visualisation et de la création de styles GTK au format CSS, de l'édition de fichiers XML contenant des ressources GResources, de la création de modèles et de widgets, ainsi que de l'utilisation de fichiers XML GtkBuilder et de la mise en page Blueprint est assurée.
Le modèle de données peut importer et exporter plusieurs interfaces simultanément, prend en charge les objets, les propriétés et les signaux de GtkBuilder, fournit une pile d'annulation des opérations (Undo / Redo) et la possibilité de compresser l'historique des commandes. L'utilitaire cambalache-db est disponible pour générer un modèle de données à partir de fichiers gir, et l'utilitaire db-codegen pour générer des classes GObject à partir des tables du modèle de données.
L'interface peut être générée sur la base de GTK 3 et GTK 4, selon la version spécifiée dans le projet. Afin de garantir le support des différentes branches de GTK, la formation de l'espace de travail est réalisée dans un processus séparé en utilisant le widget Casilda, qui permet d'intégrer des fenêtres d'autres processus dans des applications GTK4 et est réalisé sous la forme d'un composite spécialisé. de serveurs, utilisant le protocole Wayland et la bibliothèque wlroots. Casilda crée des dispositifs d'entrée virtuels, dont les événements sont transmis depuis GtkEventController, ainsi qu'un dispositif de sortie virtuel ayant la même taille que le widget intégré à l'application. Avec wlroots, le contenu à prévisualiser est dessiné dans un tampon de pixels et chargé comme une surface Cairo (cairo.Surface) pour le rendu dans GTK.

Source : opennet.ru
