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:

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

https://flathub.org/apps/details/ar.xjuan.Cambalache

Tags

Glade, Rapid-Application-Development-Tool, Gtk4, GtkBuilder, Python, Anwendung, XML