[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: KPlugins - summary
From: weis () stud ! uni-frankfurt ! de
Date: 1997-05-13 8:20:41
[Download RAW message or body]
Hi,
On Tue, 13 May 1997, Vladimir Lobak wrote:
>
> I've been away for a couple of days, so i couldn't reply to all the mail
> about plugins immediately. I'll try to combine all the ideas i got from you
> guys in this mail.
>
>
> Summary
> -------
>
> * Runtime creation of plugin chains will be implemented, but i'll put it
> on low priority right now.
>
> * Ability for application to provide data for first filter in chain (working
> as input plugin) and receive data from last filter (output plugin). It
> doesn't look like the right thing to me though. IMO it would be better if
> app programmer created input and output plugins and distributed them with
> application.
>
> * Mime type is used to identify data type passed between two plugins. We
> must use as much standard mime types as possible. All other mime types
> should be created using the form '<type>/x-kde-<subtype>'. E.g.
> 'text/x-kde-directory'.
> Association between mime type and file type (should be needed only by
> input or output plugin, filters don't deal with files) must be global.
> I.e. kfm may want to know about those association even if it doesn't use
> plugins for some specific tasks.
>
> * Two ways to 'execute' plugins in chain:
>
> a) Blocking - all plugins reside in one process and pass pointer
> on data to each other. I leave this approach in hope that some day
> we will have threads in Qt (Arnt !!! :)
>
> b) Non-blocking - every plugin resides in it's own process. IPC is
> used to pass data between plugins. IMO this will slow down processing
> when you have huge amounts of data to be passed through all the
> chain (e.g. video). But this way has many advantages compared to
> the previous.
>
> Both approaches use the dl* functions to load/unload plugins.
>
> * Plugin may be configured in three ways:
>
> a) Using get/set methods with option name and option value. App
> programmer has to create his own config dialog for plugin parameters.
> This may be useful if app programmer wants to provide some fancy
> dialog with animated icons for e.g. some graphics filter.
>
> b) Calling the 'showConfigDialog' method of this plugin. It's not
> required (IMHO) to implement this method in each plugin.
>
> c) Using the recent idea for automatic config dialogs. This way
> plugin manager may automaticly create dialog for plugin that doesn't
> provide it's own.
>
> * Plugins report errors/warnings/notifications to manager which decides what
> to do next (may be user configurable) - e.g. abort chain, report to
> application, show message box, etc.. Manager should also abort chain if
> some plugin crashed during processing.
>
> * API should allow filter to accept/produce more then one stream (have to
> think about implementation). This is required for e.g. MPEG video stream -
> somewhere in the chain (before decoding) you have to break this stream in
> two parts - video and audio - and continue processing each part
> in it's own node of chain. Similarly when you encode MPEG stream you
> receive audio and video and after encoding each you have to interleave them
> into one stream.
>
>
> Release date :)
> ---------------
>
> Plugins will not be released in the first alpha because there will be nothing
> to release actually :) I don't think we'll be able to release something until
> basic plugins (url input, audio output etc.) are finished.
>
>
> Some notes about kmodules (proposed by Christian Czezatke):
> -----------------------------------------------------------
>
> I still prefer to think of plugins as of 'data processing code'. They may
> have some limited GUI for presenting configuration dialogs or showing the data
> (output plugin), but please don't mix them with things like addressbook.
> I do think the modular design is the Right Thing. But for things like
> addressbook we can't use plugins. We need a completely different approach here.
>
>
> The name of the project:
> ------------------------
>
> I'm not sure it ML is the right place to vote, maybe it would be better if
> everyone who is interested in changing the name from KPlugins to something
> else will mail to me and i will post the results to ML.
> Here are the nominees: :)
>
> 1. KPlugins (no change)
> 2. MediaChain
> 3. DocChain
> 4. You name it :)
>
>
> Comments are very welcome.
>
>
> P.S.:
> Could someone please post a short overview of kparts and kioslaves (other
> similar projects) ?
>
kioslave is the IO process of KFM. KFM may run many of them. They
are connected using my special IPC to a server port in KFM.
KFM uses RPC ( remote procedure call ) to tell kioslave what to do
(copy files, delete files, etc. ).
Problem here: For every protocol ( ftp, http, tar... ) I get tons
of new code right now, since I have to write file->ftp, ftp->file,
http->file, ...
That is no fun. In the future we would like to use plugins like this
( if this is possible )
I get the command: copy http://www.kde.org/index.html to file:/test
Now I start a HTTP input plugin and pipe it to FILE output plugin.
Right now it is not possible to copy from http to ftp direct
for example.
KPARTS
------
KParts are used to get something like openDoc/OLE. Every part is
a dynamic library.
You need one KPartShell that provides a main window. All parts
share the main window, the menubar, the toolbar etc. KPartShell
cares about this. If the user clicks on a spreadsheet part then
the toolbar/menubar etc. of the spread sheet appear. Pressing on
a chart part will popup the chart programs GUI and so on.
It is possible that a KPart owns other parts. For example the
spreadsheet part may own a chart part that is placed inside
the table.
All parts have common functions not only for sharing window
ressources. They can print/load/save. I am using a Bento like
library that allows storing of any kind of KParts in one file.
You may have a look at koffice-0.0.1.tgz. There you can ( perhaps )
get an idea of how things work together.
KParts are the choice if you want several parts to share one GUI
and to load/save/print into one file.
Bye
Torben
> --
> #include <disclaimer.h>
> html *address(void)
> { return Vels == (mailto:vels@vdo.net | http://aldan.ml.org:7000/vels); }
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic