Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-04-08 Thread Adeodato Simó
I'm happy to share that PyKDE4 + dbus-python seems to work without
problems with Qt 4.4-rc1. Thanks to  Jonathan Riddell for the heads up.

Cheers,

-- 
Adeodato Simó dato at net.com.org.es
Debian Developer  adeodato at debian.org
 
The surest way to corrupt a youth is to instruct him to hold in higher
esteem those who think alike than those who think differently.
-- F. Nietzsche

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


no cookie :-( (Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs))

2008-03-17 Thread Adeodato Simó
* Adeodato Simó [Fri, 14 Mar 2008 10:55:15 +0100]:

 * Jim Bublitz [Thu, 13 Mar 2008 15:41:30 -0800]:

  Setting some of the fields in KAboutData also sets some info that DBus uses 
  (name, domain info?) - setting it incorrectly (like putting the .py 
  extension 
  on the name) also causes problems. I'd also try changing QMainWindow to 
  KMainWindow or KXmlGuiWindow.

 Right, using KMainwindow or KXmlGuiWindow in the provided example does
 not work.

  Other than that (actually including that), I have no clue. Haven't seen any 
  KDE docs on it either, although you could try kde.org.

 Grumble grumble. I'll poke at it a bit more, but I'm mostly blind on
 this. :-(

Ok, after spending a long time messing with this and trying all the
combinations I could think of, I haven't arrived anywhere: either I get
the QMutex deadlock, or invoking the remote method hangs.

If somebody with the knowledge to debug this could assist, I would be
very very grateful.

Thanks,

-- 
Adeodato Simó dato at net.com.org.es
Debian Developer  adeodato at debian.org
 
One of my most productive days was throwing away 1000 lines of code.
-- Ken Thompson

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-03-14 Thread Adeodato Simó
* Jim Bublitz [Thu, 13 Mar 2008 15:41:30 -0800]:

 On Thursday 13 March 2008 15:50, Adeodato Simó wrote:
  * Phil Thompson [Thu, 13 Mar 2008 22:03:08 +]:
   You need to create the QApplication before the main loop.

  Oh, changing that makes the example work, thank you.
  However, if I change QApplication to KApplication, I get this error:

  QMutex::lock: Deadlock detected in thread -1210529600

  And the application hangs. Any ideas?

 Setting some of the fields in KAboutData also sets some info that DBus uses 
 (name, domain info?) - setting it incorrectly (like putting the .py extension 
 on the name) also causes problems. I'd also try changing QMainWindow to 
 KMainWindow or KXmlGuiWindow.

Right, using KMainwindow or KXmlGuiWindow in the provided example does
not work.

 Other than that (actually including that), I have no clue. Haven't seen any 
 KDE docs on it either, although you could try kde.org.

Grumble grumble. I'll poke at it a bit more, but I'm mostly blind on
this. :-(

Thanks,

-- 
Adeodato Simó dato at net.com.org.es
Debian Developer  adeodato at debian.org
 
I promise you. Once I enter into an exclusive relationship, I sleep with
very few people.
-- Denny Crane

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


[PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-03-13 Thread Adeodato Simó
Hello.

I've read in the list archives that QtDBus is not wrapped because there
would be severe limitations in the bindings, and a more pythonic version
of the bindings exists (dbus-python).

However, I'm having trouble with exporting an interface using those
bindings. I've started with the example-service.py file that comes with
dbus-python, and I've changed it to be a Qt mini-app with the following
diff (full file attached):

--- example-service.py~
+++ example-service.py
@@ -30,11 +30,13 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.

-import gobject
+import sys

 import dbus
 import dbus.service
-import dbus.mainloop.glib
+import dbus.mainloop.qt
+
+from PyQt4 import QtGui

 class DemoException(dbus.DBusException):
 _dbus_error_name = 'com.example.DemoException'
@@ -71,13 +73,13 @@


 if __name__ == '__main__':
-dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)

 session_bus = dbus.SessionBus()
 name = dbus.service.BusName(com.example.SampleService, session_bus)
 object = SomeObject(session_bus, '/SomeObject')

-mainloop = gobject.MainLoop()
-print Running example service.
-print usage
-mainloop.run()
+app = QtGui.QApplication(sys.argv)
+mw = QtGui.QMainWindow()
+mw.show()
+app.exec_()

The application starts, with this warning:

  QSocketNotifier: Can only be used with threads started with QThread
  QSocketNotifier: Can only be used with threads started with QThread

qdbus lists the service, but trying to lists its objects hangs, and
sending a message does not work either:

% qdbus | grep example
 com.example.SampleService

% qdbus com.example.SampleService
/
Cannot introspect object / at com.example.SampleService:
org.freedesktop.DBus.Error.NoReply (Did not receive a reply. Possible causes
include: the remote application did not send a reply, the message bus security
policy blocked the reply, the reply timeout expired, or the network connection
was broken.)

% qdbus com.example.SampleService /SomeObject 
com.example.SampleInterface.HelloWorld hello
Interface 'com.example.SampleInterface' not available in object /SomeObject at 
com.example.SampleService:
org.freedesktop.DBus.Error.NoReply (...)

Any ideas?

-- 
Adeodato Simó dato at net.com.org.es
Debian Developer  adeodato at debian.org
 
People are more violently opposed to fur than leather because it's safer to
harass rich women than motorcycle gangs.
#!/usr/bin/env python

usage = Usage:
python example-service.py 
python example-client.py
python example-async-client.py
python example-client.py --exit-service


# Copyright (C) 2004-2006 Red Hat Inc. http://www.redhat.com/
# Copyright (C) 2005-2007 Collabora Ltd. http://www.collabora.co.uk/
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the Software), to deal in the Software without
# restriction, including without limitation the rights to use, copy,
# modify, merge, publish, distribute, sublicense, and/or sell copies
# of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

import sys

import dbus
import dbus.service
import dbus.mainloop.qt

from PyQt4 import QtGui

class DemoException(dbus.DBusException):
_dbus_error_name = 'com.example.DemoException'

class SomeObject(dbus.service.Object):

@dbus.service.method(com.example.SampleInterface,
 in_signature='s', out_signature='as')
def HelloWorld(self, hello_message):
print (str(hello_message))
return [Hello,  from example-service.py, with unique name,
session_bus.get_unique_name()]

@dbus.service.method(com.example.SampleInterface,
 in_signature='', out_signature='')
def RaiseException(self):
raise DemoException('The RaiseException method does what you might '
'expect')

@dbus.service.method(com.example.SampleInterface,
 in_signature='', out_signature='(ss)')
def GetTuple(self):
return (Hello Tuple,  from example-service.py)

@dbus.service.method(com.example.SampleInterface,
 

Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-03-13 Thread Phil Thompson
On Thursday 13 March 2008, Adeodato Simó wrote:
 Hello.

 I've read in the list archives that QtDBus is not wrapped because there
 would be severe limitations in the bindings, and a more pythonic version
 of the bindings exists (dbus-python).

 However, I'm having trouble with exporting an interface using those
 bindings. I've started with the example-service.py file that comes with
 dbus-python, and I've changed it to be a Qt mini-app with the following
 diff (full file attached):

 --- example-service.py~
 +++ example-service.py
 @@ -30,11 +30,13 @@
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  # DEALINGS IN THE SOFTWARE.

 -import gobject
 +import sys

  import dbus
  import dbus.service
 -import dbus.mainloop.glib
 +import dbus.mainloop.qt
 +
 +from PyQt4 import QtGui

  class DemoException(dbus.DBusException):
  _dbus_error_name = 'com.example.DemoException'
 @@ -71,13 +73,13 @@


  if __name__ == '__main__':
 -dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 +dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)

  session_bus = dbus.SessionBus()
  name = dbus.service.BusName(com.example.SampleService, session_bus)
  object = SomeObject(session_bus, '/SomeObject')

 -mainloop = gobject.MainLoop()
 -print Running example service.
 -print usage
 -mainloop.run()
 +app = QtGui.QApplication(sys.argv)
 +mw = QtGui.QMainWindow()
 +mw.show()
 +app.exec_()

 The application starts, with this warning:

   QSocketNotifier: Can only be used with threads started with QThread
   QSocketNotifier: Can only be used with threads started with QThread

 qdbus lists the service, but trying to lists its objects hangs, and
 sending a message does not work either:

 % qdbus | grep example
  com.example.SampleService

 % qdbus com.example.SampleService
 /
 Cannot introspect object / at com.example.SampleService:
 org.freedesktop.DBus.Error.NoReply (Did not receive a reply. Possible
 causes include: the remote application did not send a reply, the message
 bus security policy blocked the reply, the reply timeout expired, or the
 network connection was broken.)

 % qdbus com.example.SampleService /SomeObject
 com.example.SampleInterface.HelloWorld hello Interface
 'com.example.SampleInterface' not available in object /SomeObject at
 com.example.SampleService: org.freedesktop.DBus.Error.NoReply (...)

 Any ideas?

You need to create the QApplication before the main loop.

Phil

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-03-13 Thread Adeodato Simó
* Phil Thompson [Thu, 13 Mar 2008 22:03:08 +]:

 You need to create the QApplication before the main loop.

Oh, changing that makes the example work, thank you.
However, if I change QApplication to KApplication, I get this error:

QMutex::lock: Deadlock detected in thread -1210529600

And the application hangs. Any ideas?

Thanks,

-- 
Adeodato Simó dato at net.com.org.es
Debian Developer  adeodato at debian.org
 
I went to the race track once and bet on a horse that was so good that
it took seven others to beat him!

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] QtDBus not wrapped, trouble using dbus-python (communication hangs)

2008-03-13 Thread Jim Bublitz
On Thursday 13 March 2008 15:50, Adeodato Simó wrote:
 * Phil Thompson [Thu, 13 Mar 2008 22:03:08 +]:
  You need to create the QApplication before the main loop.

 Oh, changing that makes the example work, thank you.
 However, if I change QApplication to KApplication, I get this error:

 QMutex::lock: Deadlock detected in thread -1210529600

 And the application hangs. Any ideas?

Setting some of the fields in KAboutData also sets some info that DBus uses 
(name, domain info?) - setting it incorrectly (like putting the .py extension 
on the name) also causes problems. I'd also try changing QMainWindow to 
KMainWindow or KXmlGuiWindow.

Other than that (actually including that), I have no clue. Haven't seen any 
KDE docs on it either, although you could try kde.org.

Jim

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt