Die Klasse DBusVariant (gb.dbus) ermöglicht es, einen D-Bus-Variant-Wert zu einer vorgegebenen D-Bus-Signatur zu definieren. Die Klasse DBusValues (gb.dbus) erbt von DBusVariant und stellt Ihnen eine Liste mit mehreren D-Bus-Werten zur Verfügung. Die beiden Klassen besitzen jeweils nur die Eigenschaft DBusValues.Value und jeweils eine Konstante.
Der Grund dafür, dass es zwei Klassen gibt liegt darin, dass nur so zum Beispiel ein Unterschied zwischen zwei Methoden gemacht werden kann, von denen die eine Methode ein Array mit drei Werten vom Typ Variant zurück gibt und die andere drei Werte zurück gibt, von denen jeder Wert vom Typ Variant ist. In beiden Fällen sind es aber genau drei D-Bus-Werte!
Bei einer Signatur wie zum Beispiel „(ia{sv}av)“ werden Sie deshalb die Klasse DBusVariant einsetzen und bei einer Signatur wie „u(ia{sv}av)“ die Klasse DBusValues.
Die Klasse DBusVariant (gb.dbus) ermöglicht es Ihnen, einen D-Bus-Variant-Wert mit einer vorgegebenen D-Bus-Signatur zu definieren. In der Komponente gb.dbus.trayicon erfolgt zum Beispiel die Festlegung einer bestimmten Signatur in der Klasse _DBusMenuItem.class. Es wird die Klasse DBusVariant verwendet, weil ein Array von Werten zurückgegeben wird:
' Gambas class file Export Inherits DBusVariant Public Const Signature As String = "(ia{sv}av)"
Gut zu wissen: Die Klasse DBusValues (gb.dbus) erbt von DBusVariant und stellt Ihnen eine Liste mit mehreren D-Bus-Werten zur Verfügung.
Verwendung findet die Klasse DBusValues zum Beispiel in der Klasse _DBusMenuLayout.class der Komponente gb.dbus.trayicon:
' Gambas class file Export Inherits DBusValues Public Const Signature As String = "u(ia{sv}av)"
Hinweis: Nutzen Sie die Tabelle unter http://gambaswiki.org/wiki/doc/dbus#t10 um zu erfahren, wie Gambas-Datentypen in D-Bus-Datentypen konvertiert werden und umgekehrt.
In den folgenden 2 Kapiteln mit 4 Gambas-Projekten erfahren Sie, wie Sie für einen Daten-Server D-Bus-Objekte definieren, zum D-Bus exportieren und wie Sie mit einem d-bus-fähigen Client die angebotenen Dienste nutzen können. In den verwendeten Methoden werden auch komplexe Daten-Typen als Rückgabewert verwendet.