Re: [PATCH] GNOME VFS support for dia
- From: "W. Michael Petullo" <mike flyn org>
- To: dia-list gnome org
- Subject: Re: [PATCH] GNOME VFS support for dia
- Date: Mon, 24 Nov 2003 13:35:21 -0600
I wrote a quick patch for dia (CVS tree as of Nov 23) that adds support
for opening and manipulating GNOME VFS URIs. I did this using
libgnomevfs, libgsf and the gsf_xml_parser_context function. The new
code is enabled as long as the GNOME preprocessor variable is #define'd
(--enable-gnome).
So now "dia file:///path/to/diagram.dia" should work, with the following
caveats:
1. For some reason compression is not working (it only works with
uncompressed files). If anyone has experience with gsf_input_gzip_new,
I could use your help!
2. I have not yet looked at the import and export filters, but I suspect
they may need modification too.
Two so far: Shouldn't Gnome fall back on normal file opening if VFS fails?
I'm of the opinion that it should not. GNOME's VFS is a pretty
fundamental module within the desktop. If file:///foo.dia can't be opened
then I think it should be assumed that it doesn't exist. Falling back
to stdio seems like it would just add complexity.
And the bit about creating a tmp file is the way it is for Win32
compatibility.
The new code will have to be used when GNOME is #define'd until I find
a gsf/gnomevfs-happy mkstemp. I'll put the Win32 code back in as the
default, though.
The import and export filters ought to be redone to call just one file
opening function, then. We don't want to have this complexity in 15
different places.
Right. I did a quick analysis of dia's plugins and this is what I discovered:
Type File Import/Export Interface
==== ==== ============= =========
png export_png.c export libpng
(need to use png_set_read_fn)
ps diapsrenderer.c export fprintf
cgm plugins/cgm export putc
dxf plugins/dxf both fprintf/fgets
hpgl plugins/hpgl export fprintf
metapost plugins/metapost export fprintf
pixbuf plugins/pixbuf both gdk_pixbuf_save/
gdk_pixbuf_new_from_file
pstricks plugins/pstricks export fprintf
shape plugins/svg export libxml2?
svg plugins/svg both libxml2?
wpg plugins/wpg export fwrite
xfig plugins/xfig both fprintf/fscanf
xslt plugins/xslt both libxml2?
Since most plugins use stdio, I think I should write a #ifdef'ed
mini-library that provides GNOME VFS if available but falls back on
direct stdio. All of these modules could then cleanly use that code.
And the exceptions (like export_png.c/libpng and pixbuf/gdk_pixbuf_save)
could be provided a couple of lines of wrapper to glue them in.
The result should be little or no #ifdef's in plugin code.
--
Mike
:wq
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]