Das Ende von Glade
Di, 8. März 2022, Ralf Hersel
Wenn es um den Entwurf von GTK-Fenstern ging, war bisher das Rapid-Application-Development-Tool Glade die erste Wahl. Viele Entwickler fragen sich nun, ob es eine GTK4-Version geben wird. Die Antwort lautet: Nein.
Glade ist ein RAD-Tool, das die schnelle und einfache Entwicklung von Benutzeroberflächen für das GTK-Toolkit und die GNOME-Desktopumgebung ermöglicht. Die in Glade entworfenen Benutzeroberflächen werden als XML gespeichert und können mithilfe des GTK-Objekts GtkBuilder bei Bedarf dynamisch von Anwendungen geladen werden. Durch die Verwendung von GtkBuilder können Glade-XML-Dateien in zahlreichen Programmiersprachen wie C, C++, C#, Vala, Java, Perl, Python und anderen verwendet werden.
Welche Optionen gibt es nun, um die Oberfläche von GTK4-Applikationen zu gestalten? Leider kann ich auf diese Frage keine befriedigende Antwort geben. Viele Leser würden sagen: Vergesst GTK und entwerft eure Anwendungen besser auf der Basis von Qt. Kann man machen, muss man aber nicht; insbesondere wenn Anwendungen für den GNOME-Desktop entworfen werden sollen.
Anfängern würde ich sowieso nicht empfehlen, ein grafisches Entwurfswerkzeug zu verwenden, weil man damit nicht lernt, wie eine Gtk-Oberfläche funktioniert. Es ist viel lehrreicher, eine einfache GUI-Anwendung zu schreiben und die Gtk-Widgets selbst zu programmieren. Hier sind ein paar Tipps dazu:
- https://gnulinux.ch/ein-kleines-gtk4-programm-in-python
- https://gnulinux.ch/programmiervorlage-gtk4-python
- https://github.com/timlau/adw_pydemo
Es hilft im Quelltext die Widget-Hierarchie aufzuführen, um den Überblick zu behalten; zum Beispiel so:
# === Widgets ==========================================================
# Window
# Box (vertical)
# Entry
# ScrolledWindow
# TreeView
# TreeViewColumn
# Box (horizontal)
# Buttons
# StatusBar
# ProgressBar
Wer das GUI unbedingt ausserhalb des Programmcodes schreiben möchte, kann auch den Weg über eine XML-Datei gehen, um diese dann mit GtkBuilder in das Projekt einzubinden. Von diesem Ansatz rate ich ab, weil die GUI-Definition im XML-Format sehr mühsam ist. Eine solche Datei ist der Output von Glade; das möchte man nicht selbst schreiben. Hier ist ein Beispiel, um euch einen Eindruck zu vermitteln:
<interface>
<object class="GtkDialog" id="dialog1">
<child internal-child="content_area">
<object class="GtkBox" id="vbox1">
<child internal-child="action_area">
<object class="GtkBox" id="hbuttonbox1">
<child>
<object class="GtkButton" id="ok_button">
<property name="label" translatable="yes">_Ok</property>
<property name="use-underline">True</property>
<signal name="clicked" handler="ok_button_clicked"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
Ein Ansatz, um Glade zu ersetzen, ist Juan Pablo Ugartes Werkzeug Cambalache; sozusagen der Nachfolger von Glade. Dieses Rapid-Application-Development-Tool werde ich mir in einem eigenen Artikel ansehen.
Ihr ahnt es; an der Gtk4-Front gibt es viele Fragezeichen und viel Neues zu entdecken. Ich warte auf neue Werkzeuge, gute Dokumentation und Beispiele, insbesondere im Umfeld von Gtk4 für Python.
Quellen:
https://discourse.gnome.org/t/plan-about-gtk4-support-of-glade/5965