[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: dcop interfaces, standard ?
From:       Simon Hausmann <shaus () helios ! med ! Uni-Magdeburg ! DE>
Date:       1999-12-08 10:23:36
[Download RAW message or body]



On Wed, 8 Dec 1999, Waldo Bastian wrote:

> On Tue, 07 Dec 1999, Antonio Larrosa wrote:
> > Hi,
> > 
> > I've been thinking about how fast and easy it is to write a DCOP \
> > interface for any application and all that. But before everyone starts \
> > doing so, I think we should write a standard.
> 
> Yes.
> 
> > For example, each application should have an "Open(QString)" method \
> > that opens the given file (just as they are 'forced' to have an "Open \
> > ..." item in the "File"
> > menu). And a "Save(QString)" which saves the current file in that url \
> > (although that would be trickier as sometimes 'current file' is not \
> > well defined, but I suppose you get my line of thinking).
> 
> Yes.
> 
> > I've come to this because I thought of adding a DCOP interface to KMid, \
> > and Greg Lee, has already added one to KMidi which is different to the \
> > one I thought to implement. With an standard we could be sure that any \
> > application will be able to use any of them independently and people \
> > will write scripts much more easily.
> 
> Yes.
> 
> > Another problem is the name of the DCOPObject that receives the DCOP \
> > calls, I suppose there should be also an standard on this.
> 
> Yes. We need the service/servicetype/trader stuff for this. So that you
> can say something like: Give me an application who can play midi's and
> supports interface "XYZ".

I'm neither Torben nor Mr. Trader ;-) but I can try to answer :-)

I like the idea of creating/defining some generic DCOP interfaces, and
IMHO we already have a place for that: kdelibs/interfaces .

Just create your FooInterface (as .h file ) and put it in there, together
with a servicetype .desktop file.

Example:
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=FooService
Name=Antonio's Service for Foo Interface

Install this .desktop file in $kde_servictypesdir .
(this will make ksycoca recognize it as service and make it available
through KServiceType/KTrader)


If an application implements your FooInterface, then it can add a line
like
ServiceTypes=FooService
to its (application) .desktop file.

This will make it possible to let

KTrader::OfferList offers = KTrader::self()->query( "audio/midi", \
"`FooService` in ServiceTypes" );

return you a list of services being able to play midi and supporting your
given interface :-)

(what's left is starting and contacting your service/server/application :)

(note that the ServiceTypes field is a list -> you can let a service/app
implement mulitple servicetypes (which can be indirectly bound to an
interfaces) .

Is that what you are looking for, Antonio? :)

Ciao,
 Simon

> > Also, is there any _simple_ way to know which apps are installed on the \
> > system that implement a given interface or a superset of it ? ( \
> > "superset" = "which includes the given one as a subset" :) ) 
> > I suppose KTrader in kio has something to do with it, but it doesn't \
> > have any docs, so it seems it's just for specific uses.
> 
> See above. Torben is Mr. Trader. I am sure he has a good solution for
> this.
> 
> > Anyone is doing something like that ? I have very little time and \
> > already promised to do other things which aren't so urgent, but I think \
> > I should do before this.
> > 
> > The basic idea would be to have something like a MidiPlayerIFace \
> > definition distributed with KDE (along with a GraphicViewerIFace \
> > definition, a GraphicEditorIFace definition, a TextEditorIFace \
> > definition, etc.) with "Load(QString)", "Play(void)", "Stop(void)", \
> > "Pause(void)", and that any application can use this interface to play \
> > midi files, be it with KMidi or KMid.
> > 
> > It's somehow similar to mimetypes (the user should also have a \
> > preference list), but not exactly the same.
> > 
> > Opinions ? Is this too crazy ?
> 
> No. This is what we need. 
> 
> A good start would be to write IFace files for a broad range of
> applications. E.g. MidiPlayerIFace, GraphicViewerIFace,
> GrpahicEditorIFace, TextEditorIFace. With perhaps two superclasses like
> "MimetypeViewerIFace" and "MimetypeEditorIFace". All the viewers and
> players would inherit from MimetypeViewerIFace and all the editors
> would inherit from MimetypeEditorIFace.
> 
> That allows you to start a program for a certain mimetype even if you
> have no clue what the mimetype is about or without knowing whether
> there is a special IFace for that mimetype.
> 
> Cheers,
> Waldo
> 
> 
> 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic