I'm trying to write a PyQt4-based mock object for a C++ app exposed over D-Bus with the following interface:
Q_CLASSINFO("D-Bus Interface", "com.acme.Audio.Control") Q_CLASSINFO("D-Bus Introspection", ' <interface name="com.acme.Audio.Control">\n' ' <method name="echo">\n' ' <arg direction="in" type="s" name="phrase"/>\n' ' <arg direction="out" type="s" name="echoed"/>\n' ' </method>\n' ' <method name="setParams">\n' ' <arg direction="out" type="(i)" name="error"/>\n' ' <arg direction="in" type="a(iiiii)" name="audioSourceParameter"/>\n' ' <annotation value="QVector<AudioSourceParameters>" name="com.trolltech.QtDBus.QtTypeName.In0"/>\n' ' <annotation value="Errors::ErrorCode" name="com.trolltech.QtDBus.QtTypeName.Out0"/>\n' ' </method>\n' ' </interface>\n') It's unclear to me how how the setParams() function should be decorated. For the echo() function, I have: @pyqtSlot(str, result=str) def echo(self, phrase): return self.parent().echo(phrase) But what should I put for setParams()? I was tempted to write: @pyqtSlot('a(iiiii)', result='(i)') def setParams(self, volume): return self.parent().echo(phrase) But this results in: TypeError: C++ type 'a(iiiii)' is not supported as a pyqtSlot type argument type So... how does one expose a function to D-Bus that accepts an array of structs, each containing 5 ints? _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt