Merge branch 'DBusExplorerUpdate' into 'master'
Updated DBus Explorer to work with Latest XML returned by introspect call See merge request gambas/gambas!257
This commit is contained in:
commit
e4dcb05c53
3 changed files with 76 additions and 35 deletions
Binary file not shown.
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 17 KiB |
|
@ -1,19 +1,19 @@
|
|||
# Gambas Project File 3.0
|
||||
# Compiled with Gambas 3.10.90
|
||||
Title=Gambas DBus Explorer
|
||||
Startup=FVersiongbXML
|
||||
Icon=dbus64.png
|
||||
Version=1.0.0
|
||||
Version=1.0.1
|
||||
Component=gb.image
|
||||
Component=gb.gui
|
||||
Component=gb.dbus
|
||||
Component=gb.settings
|
||||
Component=gb.libxml
|
||||
Description="DBus explorer.\n\nThis example allows to explore all applications connected to both DBus system and application buses. You can see all exported interfaces, methods, properties and events, with their signature. But you cannot use them."
|
||||
Description="DBus explorer.\n\nThis example allows to explore all applications connected to both DBus system and application buses. You can see all exported interfaces, methods, properties and events, with their signature. But you cannot use them.\n\nUpdated to Correctly report property Names, Looks for Name attribute now \n Was expecting to be first in List, but now randomly located\nUpdated to display Property direction read or read/write\nUpdated to correctly report full details of signal handling"
|
||||
Authors="Fabien Bodard\nBenoît Minisini"
|
||||
TabSize=2
|
||||
Translate=1
|
||||
Language=en_US
|
||||
Vendor=Example
|
||||
Packager=1
|
||||
Tags=Example,Utility
|
||||
CreateMenu=1
|
||||
Translate=1
|
||||
|
|
|
@ -61,28 +61,42 @@ Public Sub ShowPathContent(sPath As String, sBus As String, sApplication As Stri
|
|||
hNode2 = hNode.Children[j]
|
||||
If hNode2.Name = "method" Or hNode2.Name = "property" Or hNode2.Name = "signal" Then
|
||||
For Each hattr In hNode2.Attributes
|
||||
Break
|
||||
If hattr.name = "name" Then Break
|
||||
Next
|
||||
|
||||
Try tvDbus.Add(sFullDbusPath & "|" & hattr.Value, hattr.Value, Picture[hNode2.Name & ".png"], sFullDbusPath)
|
||||
If Error Then Continue
|
||||
For k = 0 To hNode2.Children.Count - 1
|
||||
If hNode2.Children[k].Name = "arg" Then
|
||||
$cArgs[sFullDbusPath & "|" & hattr.Value] &= "ref=" & hNode2.Name
|
||||
|
||||
For Each hattr2 In hNode2.Children[k].Attributes
|
||||
If hNode2.name = "property" Then
|
||||
|
||||
aArgs.Add(hattr2.Name & "=" & hattr2.Value)
|
||||
For Each hattr2 In hNode2.Attributes
|
||||
If hattr2.name = "name" Then Continue
|
||||
aArgs.Add(hattr2.Name & "=" & hattr2.Value)
|
||||
Next
|
||||
|
||||
Next
|
||||
$cArgs[sFullDbusPath & "|" & hattr.Value] &= "|" & aArgs.Join()
|
||||
aArgs.Clear
|
||||
|
||||
$cArgs[sFullDbusPath & "|" & hattr.Value] &= aArgs.Join()
|
||||
Else
|
||||
|
||||
If k < hNode2.Children.Count - 2 Then $cArgs[sFullDbusPath & "|" & hattr.Value] &= "|"
|
||||
aArgs.Clear
|
||||
Endif
|
||||
Next
|
||||
For k = 0 To hNode2.Children.Count - 1
|
||||
If hNode2.Children[k].Name = "arg" Then
|
||||
|
||||
For Each hattr2 In hNode2.Children[k].Attributes
|
||||
|
||||
aArgs.Add(hattr2.Name & "=" & hattr2.Value)
|
||||
|
||||
Next
|
||||
|
||||
$cArgs[sFullDbusPath & "|" & hattr.Value] &= "|" & aArgs.Join()
|
||||
|
||||
'If k < hNode2.Children.Count - 2 Then $cArgs[sFullDbusPath & "|" & hattr.Value] &= "|"
|
||||
aArgs.Clear
|
||||
Endif
|
||||
Next
|
||||
Endif
|
||||
Endif
|
||||
|
||||
Next
|
||||
Next
|
||||
Endif
|
||||
|
@ -180,8 +194,12 @@ Public Function MakeSignature(sKey As String) As String
|
|||
Dim s, t As String
|
||||
Dim aArg As String[]
|
||||
Dim sName, sType As String
|
||||
Dim iArg As Integer
|
||||
Dim sDirection As String
|
||||
Dim sRef As String
|
||||
Dim iArg As Integer = 1
|
||||
Dim aOut As New String[]
|
||||
Dim sAccess As String = ""
|
||||
Dim bHasAccess As Boolean = False
|
||||
|
||||
ars = Split(skey, "|")
|
||||
If Not $cArgs.Exist(skey) Then
|
||||
|
@ -192,40 +210,63 @@ Public Function MakeSignature(sKey As String) As String
|
|||
Endif
|
||||
Endif
|
||||
|
||||
For Each s In Split($cArgs[sKey], "|")
|
||||
Dim sParameters As String[] = Split($cArgs[sKey], "|")
|
||||
For Each s In sParameters
|
||||
|
||||
Inc iArg
|
||||
|
||||
sName = "Arg" & CStr(iArg)
|
||||
sName = "Arg" '
|
||||
sDirection = ""
|
||||
sType = ""
|
||||
For Each t In Split(s)
|
||||
aArg = Scan(t, "*=*")
|
||||
|
||||
Select Case aArg[0]
|
||||
Case "ref"
|
||||
sRef = aArg[1]
|
||||
Case "direction"
|
||||
sDirection = aArg[1]
|
||||
Case "type"
|
||||
sType = GetType(aArg[1])
|
||||
Case "name"
|
||||
sName = aArg[1]
|
||||
Case "access"
|
||||
sAccess = aArg[1]
|
||||
bHasAccess = True
|
||||
End Select
|
||||
Next
|
||||
|
||||
If InStr(s, "=out") Then
|
||||
|
||||
aOut.Add(sName & " As " & sType)
|
||||
|
||||
Else
|
||||
|
||||
If sDirection == "in" Then
|
||||
If sName = "Arg" Then
|
||||
sName &= CStr(iArg)
|
||||
Inc iArg
|
||||
Endif
|
||||
aIn.Add(sName & " As " & sType)
|
||||
|
||||
Else
|
||||
If sName = "Arg" Then
|
||||
If stype <> "" Then aOut.Add(sType)
|
||||
Else
|
||||
aOut.Add(sName & " As " & sType)
|
||||
Endif
|
||||
Endif
|
||||
|
||||
Next
|
||||
|
||||
s = ars[ars.Max] & "(" & aIn.Join(", ") & ")"
|
||||
If aOut.Count Then
|
||||
s &= " As "
|
||||
If aOut.Count = 1 Then
|
||||
s &= Scan(aOut[0], "* As *")[1]
|
||||
If sRef = "property" Then
|
||||
s = ars[ars.max] & " AS " & aOut.last & " For " & sAccess
|
||||
Else
|
||||
If sRef = "method" Then
|
||||
s = ars[ars.Max] & "(" & aIn.Join(", ") & ")"
|
||||
Else If sRef = "signal" Then
|
||||
s = ars[ars.Max]
|
||||
Endif
|
||||
If aOut.Count Then
|
||||
s &= IIf(sRef = "signal", " Sends ", " As ")
|
||||
If aOut.Count = 1 Then
|
||||
s &= aOut.last
|
||||
Else
|
||||
s &= "[" & aOut.Join(", ") & "] as variant[]"
|
||||
Endif
|
||||
Else
|
||||
s &= "[" & aOut.Join(", ") & "]"
|
||||
If sRef = "signal" Then s &= " Sends Nothing"
|
||||
Endif
|
||||
Endif
|
||||
|
||||
|
@ -248,7 +289,7 @@ Public Sub tvDbus_MouseMove()
|
|||
If Not tvDbus.FindAt(Mouse.x, Mouse.y) Then
|
||||
|
||||
s = MakeSignature(tvDbus.item.key)
|
||||
|
||||
|
||||
hcont = tvDbus.Parent
|
||||
ix = tvDbus.Item.X + tvDbus.Item.w / 2
|
||||
iy = tvDbus.Item.Y
|
||||
|
|
Loading…
Reference in a new issue