[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