RE: [PyKDE] about DCOP, QDataStream, , and

2002-11-30 Thread Jim Bublitz
On 30-Nov-02 Me wrote:
 Hi, I'm trying to figure out how to use the DCOP interface. The
 KDE C++ 
 examples make use of  and , but how to do it with python? Is
 there a work 
 around for this?
 
 The example I'm working from has a part like so:
 
 void MainWindow::bookLocation()
 {
 DCOPClient *client=kapp-dcopClient();
 QByteArray params;
 QDataStream stream(params, IO_WriteOnly);
 stream  location-text();
 if (!client-send(p6-*, bookmarkList, add(QString),
 params))
kdDebug()  Error with DCOP\n;
 } 
 
 How would I do that with python? Thanks for any help.

The short, quick, and unsatisfying answer is I don't know. I've
been aware that the DCOP interface in PyKDE *might* be incomplete,
but haven't looked much farther than that. I seem to recall that I
did see a way around this, but I'm not sure what it might be at the
moment. I'll look into it and try to have an answer in the next day
or two. Please post again if I don't get you an answer in that
timeframe.

Jim


___
PyKDE mailing list[EMAIL PROTECTED]
http://mats.gmd.de/mailman/listinfo/pykde



RE: [PyKDE] about DCOP, QDataStream, , and

2002-11-30 Thread Jim Bublitz
On 30-Nov-02 Jim Bublitz wrote:
 On 30-Nov-02 Me wrote:
 Hi, I'm trying to figure out how to use the DCOP interface. The
 KDE C++ 
 examples make use of  and , but how to do it with python? Is
 there a work 
 around for this?
  
 The example I'm working from has a part like so:
  
 void MainWindow::bookLocation()
 {
 DCOPClient *client=kapp-dcopClient();
 QByteArray params;
 QDataStream stream(params, IO_WriteOnly);
 stream  location-text();
 if (!client-send(p6-*, bookmarkList, add(QString),
 params))
kdDebug()  Error with DCOP\n;
 } 
 
 How would I do that with python? Thanks for any help.
 
 The short, quick, and unsatisfying answer is I don't know. I've
 been aware that the DCOP interface in PyKDE *might* be
 incomplete, but haven't looked much farther than that. I seem to
 recall that I did see a way around this, but I'm not sure what
 it might be at the moment. I'll look into it and try to have an
 answer in the next day or two. Please post again if I don't get
 you an answer in that timeframe.

It looks like you should be able to use QDataStream.writeBytes
or QDataStream.writeRawBytes to put data on the stream. These
are declared in qdatastream.sip as:

QDataStream writeBytes(const char * /Array/,uint /ArraySize/);
QDataStream writeRawBytes(const char * /Array/,uint /ArraySize/);

I'm assuming the /.../ stuff (Phil ??) means that from Python you
only need to supply the char string and sip will compute the length
and pass it to Qt for you, eg:

stream.writeBytes (location.text())

(assuming location.text() returns a Python string or char * and NOT
a QString - you'll have to do conversion otherwise).

If that doesn't seem to work, then try adding the uint length
argument as well - just len(location.text()).

The kdDebug stream doesn't exist in PyKDE - you'll have to provide
your own error handling. Obviously I haven't tried any of this, so
let me know what fails if it doesn't work.

The other missing parts in DCOP will relate to IceConn messaging
stuff - off the top of my head, there didn't seem to be a good way
to extend the bindings to cover that as it's tied into X-Windows,
but I can look at it again if there's a need.

Jim

___
PyKDE mailing list[EMAIL PROTECTED]
http://mats.gmd.de/mailman/listinfo/pykde