La version 0.90 du projet Cambalache a été publiée, un outil de développement rapide d'interfaces pour GTK 3 et GTK 4, utilisant le modèle MVC et la philosophie de l'importance primordiale du modèle de données. Contrairement à Glade, Cambalache propose la prise en charge de plusieurs interfaces utilisateur dans un même projet. Le code est écrit en Python et est distribué sous la licence LGPLv2.1. Un paquet au format flatpak est disponible pour l'installation.
Cambalache ne dépend pas de GtkBuilder et GObject, mais fournit un modèle de données conforme au système de types GObject. Le modèle de données peut importer et exporter plusieurs interfaces simultanément, prend en charge les objets, propriétés et signaux de GtkBuilder, offre un système d'annulation/répétition (Undo / Redo) et permet de compresser l'historique des commandes. Un utilitaire, cambalache-db, est fourni pour générer un modèle de données à partir de fichiers gir, et un autre utilitaire, db-codegen, génère 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 ou GTK 4, selon la version spécifiée dans le projet. Pour assurer la prise en charge de différentes versions de GTK, la formation de l'espace de travail se fait avec l'aide du backend Broadway, qui permet de rendre la sortie de la bibliothèque GTK dans une fenêtre de navigateur web. Le processus principal de Cambalache fournit un lien basé sur WebKit WebView, dans lequel la sortie du processus Merengue, qui gère le rendu de l'interface créée par l'utilisateur, est retransmise via Broadway.
Dans cette nouvelle version, l'interface utilisateur de Cambalache a été traduite vers la bibliothèque GTK 4. Le répertoire des widgets a été mis à jour pour le GNOME SDK 46. Les fonctionnalités liées à la liaison d'actions aux éléments de menu contextuels et à la traduction des infobulles pour les boutons ont été étendues. L'attribution du numéro 0.90 après les versions 0.1x est justifiée par l'approche de la publication imminente de Cambalache 1.0.

Source : opennet.ru
