Published project release Cambalache 0.8.0, which develops a rapid interface development tool for GTK 3 and GTK 4, using the MVC paradigm and philosophy of paramount importance of the data model. Unlike Glade, Cambalache provides support for maintaining multiple user interfaces in a single project. In terms of functionality, the Cambalache 0.8.0 release is marked close to parity with Glade. The code is written in Python and supplied licensed under GPLv2.
Cambalache is independent of GtkBuilder and GObject, but provides a data model that conforms to the GObject type system. The data model can import and export multiple interfaces at once, supports GtkBuilder objects, properties and signals, provides a Undo / Redo stack, and the ability to compress command history. The cambalache-db utility is provided to generate the data model from gir files, and the db-codegen utility is provided to generate GObject classes from the data model tables.
The interface can be generated based on GTK 3 and GTK 4, depending on the version defined in the project. To provide support for different GTK branches, the workspace is formed using the Broadway backend, which allows you to draw the output of the GTK library in a web browser window. The main Cambalache process provides a WebKit-based WebView binding that uses Broadway to broadcast output from the Merengue process, which is directly involved in rendering the user-generated interface.
In the new release:
- Added a panel for interactive selection of objects, which categorizes the classes of objects and makes it easier to find the necessary information.
- Workspace placeholders have been implemented to make it easier to add children to given positions. You can add a widget instead of a placeholder by double-clicking on it.
- Provided support for translatable properties and implemented the ability to leave comments for translators.
- Added support for clipboard operations (Copy, Paste, Cut and Delete).
- Improved display of information about unsupported features when importing UI files and when exporting to another file.