Re: New export plugin : export using a remote filters server : source code

From: Michel Strasser <michel.strasser_at_free.fr>
Date: Wed Dec 01 2004 - 12:04:12 CET

Hi,

On Wed, Dec 01, 2004 at 03:38:35PM +1100, Martin Sevior wrote:
> I gather that
> what you have already is a frame work for converting AbiWord documents
> to a variety of CSS-HTML templates. This is very interesting in itself.

Yes. It is a general framework which allows any application (not only
abiword) to use a remote machine for appying a filter.

Then I wrote a export plugin for abiword and
a filter `ports` which is a structured directory which contains filters.

I started to work on HTML / CSS because it is simplest, but we can do
PDF/PostScripts with cool styles later.

> Please point us to the source code for your plugin and I'll take a look.
The plugin can be found here :
http://thebirdslake.free.fr/Abiword/AbiwordTblPlugin/Download/bz2abw-20041125_jeu_2109.tgz

It seems to be the bz2abw plugin but it is not !!! I have to rename it.
I used the bz2abw plugin for the ground of the birdslake plugin.

The initial filters ports can be found here :
http://thebirdslake.free.fr/Abiword/AbiwordTblLioubovnikPythonPorts/Download/AbiwordPythonTblPorts-20041125_jeu_2106.tgz
The filters are written in python. You can use the package system of
python, and the root of the ports directory will be (one of) the root of the
packages base.

But you have to install a full set of libraries and programs before to make it
works since I've tried to create a general implementation not only for
abiword (I would really like if they will be in gnome-libs).
Most of them are written in C ANSI using the GObjects paradigm.

Install the following libraries and program before the plugins and ports,
in this order :

LsmLib-2.0
It is a library for archiving a directory into xml.
L : Classic C ANSI
http://m.strasser.lsmlib.free.fr/download/LsmLib-20040522_2209.tgz

LibIGen-2.0
A library that produces GUI from an xml description
L : C ANSI with GObject
http://m.strasser.libigen.free.fr/Download/LibIGen-20041130_mar_1956.tgz

Jentchina-2.0
A library that contacts the filters server and maintain the filters tree
L : C ANSI with GObject
http://thebirdslake.free.fr/Jentchina/Download/Jentchina-20041130_mar_1911.tgz

GtkJentchina-2.0
A library that creates a GTK/GNOME front-end for Jentchina (it shows the
filters tree with GTK, the forms with GTK)
L : C ANSI with GObject
http://thebirdslake.free.fr/GtkJentchina/GtkJentchina-20041130_mar_1907.tgz

Lioubliou-2.0
The server side core library, answers to client requests, manage filters
session.
L : C ANSI with GObject
http://thebirdslake.free.fr/Lioubliou/download/Lioubliou-20041130_mar_2004.tgz

LioubovnikPython-2.0
A backend program that uses Lioubliou, provides a server for filter
written in Python.
http://thebirdslake.free.fr/LioubovnikPython/download/LioubovnikPython-20041130_mar_2001.tgz

There are some docs online, see
http://thebirdslake.free.fr

> I'm not sure about using the a peer-to-peer network though. Many people
> have the appropriate ports blocked.

While I designed it I thought about this problem.
We get reference to server by exchanging servers lists :
<?xml version="1.0"?>
<TblSl>
  <TblSlServer strategy="CORBA">IOR:010000001900000049444c3a4c6[.....]</TblSlServer>
</TblSl>

The code has been written so that we do not need to use absolutly CORBA.
The protocol of com between client and server has been written with in
mind a future implementation using HTTP.

So when it will be ready we will have :
<?xml version="1.0"?>
<TblSl>
  <TblSlServer strategy="HTTP">abisource.com/TBL</TblSlServer>
  <TblSlServer strategy="CORBA">IOR:010000001900000049444c3a4c6[.....]</TblSlServer>
  <TblSlServer strategy="HTTP">gnome.org/TBL</TblSlServer>
</TblSl>

And all servers that uses HTTP will then pass the firewalls without any
problem. Jentchina uses an abstract GObject class that allows it to
choose which strategy to use.
See the UML diagrams :
http://thebirdslake.free.fr/Jentchina/InnerWorking/Com/

Regards,
        Michel.
Received on Wed Dec 1 12:04:56 2004

This archive was generated by hypermail 2.1.8 : Wed Dec 01 2004 - 12:04:56 CET