[Gambas-user] More DBus queries - signals

Tony Morehen tmorehen at ...3602...
Sun Aug 20 17:52:38 CEST 2017


I see nothing amiss in your code.

This is the code I use for a DbusObject.  It is used to control a 
desktop menu application.  Note the event declaration.  DbusObject is 
missing, but implicit to the class.  I raise the event the same way you do:

   DBus.Raise(hDbusObj, 
"org.ajmconsulting.gbmenu.App.StartupNotification", [$key, pid])

$key is a AppName.desktop file, pid is the id/handle of the process just 
launched.

' Gambas class file
' hDbusObj


Inherits DBusObject
Private ClientCount As Integer = -1

Event org_ajmconsulting_gbmenu_App_StartupNotification(sName As String, 
pid As Integer)

Public Function org_ajmconsulting_gbmenu_App_show() As Boolean

   FMain.Show
   '   Debug "show"
   Desktop.ActiveWindow = FMain.Id
   Return FMain.Visible

End

Public Function org_ajmconsulting_gbmenu_App_showAt(Optional X As 
Integer, Y As Integer, Gravity As String) As Boolean
   '   Debug "showat", X, Y, Gravity

   If X < 10 Then X = 0
   Select Case String.LCase(Gravity)
     Case "northwest"
       FMain.x = X
       FMain.y = Y
     Case "west"
       FMain.x = X
       FMain.y = Y - FMain.Height / 2
     Case "southwest"
       FMain.x = X
       FMain.y = Y - FMain.Height
     Case "north"
       FMain.x = X - FMain.Width / 2
       FMain.y = Y
     Case "center", "centre"
       FMain.x = X - FMain.Width / 2
       FMain.y = Y - FMain.Height / 2
     Case "south"
       FMain.x = X - FMain.Width / 2
       FMain.y = Y - FMain.Height
     Case "northeast"
       FMain.x = X - FMain.Width
       FMain.y = Y
     Case "east"
       FMain.x = X - FMain.Width
       FMain.y = Y - FMain.Height / 2
     Case "southeast"
       FMain.x = X - FMain.Width
       FMain.y = Y - FMain.Height
   End Select
   Return org_ajmconsulting_gbmenu_App_show()

End

Public Function org_ajmconsulting_gbmenu_App_showToggle() As Boolean

   '   Debug "showtoggle"
   If FMain.Visible Then
     Return org_ajmconsulting_gbmenu_App_hide()
   Else
     Return org_ajmconsulting_gbmenu_App_show()
   Endif

End

Public Function org_ajmconsulting_gbmenu_App_showPreferences() As Boolean

   FSetup.Run
   '   Debug "setup"
   Return True

End

Public Function org_ajmconsulting_gbmenu_App_showCentered() As Boolean
   '   Debug "showCentered"

   FMain.X = (Screen.W - FMain.W) / 2
   FMain.Y = (Screen.H - FMain.H) / 2
   Return org_ajmconsulting_gbmenu_App_show()

End

Public Function org_ajmconsulting_gbmenu_App_hide() As Boolean
   '   Debug "hide"

   FMain.Visible = False
   Return Not FMain.Visible

End

Public Function org_ajmconsulting_gbmenu_App_isShowing() As Boolean
   '   Debug "isShowing"

   Return FMain.Visible

End

Public Function org_ajmconsulting_gbmenu_App_addClient() As Integer
   '   Debug "addClient"

   Inc ClientCount
   Return ClientCount

End

Public Function org_ajmconsulting_gbmenu_App_removeClient(arg1 As 
Integer) As Boolean
   '   Debug "removeClient", arg1

   Return True

End

Public Function org_ajmconsulting_gbmenu_App_getDesktopFilePath(arg1 As 
String) As String
   '   Debug "removeClient", arg1

   Return FMain.$DesktopFiles[arg1].Location

End

Public Function org_ajmconsulting_gbmenu_App_getIconPath(arg1 As 
String[], sz As Integer) As String
   '   Debug "removeClient", arg1

   Return Icons.GetIconPath(arg1, sz)

End


On 2017-08-20 10:38 AM, adamnt42 at ...626... wrote:
> The wiki @ http://gambaswiki.org/wiki/doc/dbus#t9 says
> "...
> The name of the event must be the normalized name of the interface, followed by an underscore and the normalized name of the signal.
> The signal is emitted to the D-Bus bus by using the DBusApplication.Raise method.
> ..."
>
> for the last few days I've been raising DBus signals simply by calling something like:
>
>    Event Message(text As String, origin As String)
> ...
>    DBus.Raise(Me, "Message", [msg.Text, "Self"])
>
> <Me> being a DBusObject child object
> <"Message"> being the signal name as registered on the bus
> <msg.Text> being the text parameter for the event as it is known inside the gambas code
> <"Self"> being the origin parameter
>
> This seems to be working fine. Am I doing something unsupported that is likely to disappear?
>
> tia
> b






More information about the User mailing list