' Gambas class file

Private $sDBusName As String
Private $hDBusObject As NameVersion
Private $sDBusObjectPath As String
Private $sDBusInterface As String

Private $hDBusSignal As DBusSignal

Public Sub Form_Open()

  FMain.Resizable = False
  DBus.Unique = True
  DBus.Debug = True

  $sDBusName = DBus.Name
  $hDBusObject = New NameVersion ' oder SignalVersion oder nur OVersion oder was Passendes?
  $sDBusObjectPath = "/NameVersion"
  $sDBusInterface = "org.gambas.SignalTX.NameVersion"

  DBus.Session.Register($hDBusObject, $sDBusObjectPath) ' o.k.

  $hDBusSignal = New DBusSignal(DBus.Session, $sDBusInterface, True) As "VersionSignal"

End

Public Sub VersionSignal_Signal(Signal As String, Arguments As Variant[])

' For control: Print Signal; " : "; Arguments[0]
' Display of the signal in the program 'dbus-monitor' :
' signal sender=:1.392 -> dest=(null destination) serial=6 path=/NameVersion; interface=org.gambas.SignalTX.NameVersion; member=GetGBVersion

End

Public Sub btnSend_Click()

  lblCaption.Foreground = Color.Red
  DBus[$sDBusName].Raise($hDBusObject, "org.gambas.SignalTX.NameVersion.GetGBVersion", [System.FullVersion])
' DBus.Raise($hDBusObject, "org.gambas.SignalTX.NameVersion.GetGBVersion", [System.FullVersion])  ' ... ist das auch OK?
  Wait 0.1
  lblCaption.Foreground = Color.Black

End

Public Sub Form_Close()

  If DBus.IsRegistered($hDBusObject) Then DBus.Session.Unregister($hDBusObject)
  Try Shell "kill " & Application.Id
  FMain.Close()

End