Neben vielen anderen großartigen Verbesserungen, die GNOME 3.16 seinen Nutzern beschert, bringt natürlich auch GTK+ wieder Neuerungen mit. Eine davon ist die neue Gtk.StackSidebar, die als Übersicht für die schon älteren Gtk.Stacks dient und aussieht wie eine klassische Gtk.List.
Über ebendiese ließe sich auch ein ähnliches Verhalten erzeugen, wie es die Gtk.StackSidebar an den Tag legt: Bei einem Klick (oder Drücken) auf ein Item in der Liste wird das jeweilige Element des Gtk.Stacks angezeigt. Mit diesem neuen Widget nimmt man jedoch ganz klar eine Abkürzung! Denn während man sich mit einer Gtk.List mit Signalen und dergleichen rumärgern müsste, reicht es bei der Gtk.StackSidebar den Gtk.Stack anzugeben, mit dem man arbeiten will. Alles weitere wird intern geregelt und betrifft den Programmierer (also uns) nicht weiter. Das klingt doch super!
Minimalbeispiel
Wie immer bei mir folgt nun das obligatorische Minimalbeispiel. Diesmal habe ich mich wieder dazu entschlossen, ein anderes wiederzuverwenden, in diesem Fall den minimalistischen Bildbetrachter aus dem ActionBar-Tutorial. Diesem stünde doch eine Übersicht über die Bilder – vielleicht in Form von Dateinamen – nicht schlecht, oder? Da ich allerdings hier wie auch im ursprünglichen Tutorial zu Anschauungszwecken mit Stock-Icons arbeite, habe ich ihnen einfach Namen gegeben, das Vorgehen sollte aber klar sein.
Zunächst muss also ein neuer Gtk.Stack erzeugt werden. Diesem können anschließend beliebige Gtk.Widgets hinzugefügt werden. Wichtig ist bei der Benutzung der Gtk.StackSidebar nur, dass die Gtk.Widgets betitelt übergeben werden, also mit
da der String title das ist, was in der Gtk.StackSidebar angezeigt wird. Gtk.Widgets ohne Titel werden stillschweigend ignoriert.
Dies ist allerdings nicht der einzige Fallstrick, der bei der Benutzung der Gtk.StackSidebar lauert: Sie muss zwingend in einer Gtk.Box o. Ä. mit horizontaler Ausrichtung eingefügt werden, ansonsten wird sie schlicht und ergreifend nicht angezeigt (ohne Fehlermeldung). Aufgrund dessen und da sie – im Gegensatz zur Gtk.List – auch nur Strings enthalten kann, können mit ihr leider keine Slideshows unter der großen Bildansicht gebaut werden – schade!
Ansonsten ist die Benutzung wirklich mehr als einfach: Gtk.StackSidebar erzeugen und dem Gtk.Stack zuordnen, der verwendet werden soll.
Wo die Gtk.StackSidebar dann am Ende im Fenster angezeigt werden soll, ist egal. Sie muss nicht direkt neben dem Gtk.Stack auftauchen. Hauptsache, sie befindet sich in einer horizontalen Umgebung (siehe oben).
Zusammen sieht das ganze dann so aus:
Das Ganze in einer Datei namens stacksidebar.vala abspeichern und mit