Commit c4b27568 authored by Michael Meeks's avatar Michael Meeks

Excel font loading working again,

Xbase changed to be a plugin,
More Excel write work ( untested ).
parent ac3ba315
......@@ -13,7 +13,8 @@ Morten:
Sean
Michael
* Polished function wizard.
* Fixed up function wizard.
* Improved excel writing code.
Nick Lamb
......
1999-06-28 Michael Meeks <michael@edenproject.org>
* src/main.c (gnumeric_main): removed xbase_init.
* src/Makefile.am: Removed xbase static link.
1999-06-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* src/dialog-printer-setup.c (load_image): Use a constant relative
......
1999-06-28 Michael Meeks <michael@edenproject.org>
* src/main.c (gnumeric_main): removed xbase_init.
* src/Makefile.am: Removed xbase static link.
1999-06-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* src/dialog-printer-setup.c (load_image): Use a constant relative
......
1999-06-28 Michael Meeks <michael@edenproject.org>
* src/main.c (gnumeric_main): removed xbase_init.
* src/Makefile.am: Removed xbase static link.
1999-06-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* src/dialog-printer-setup.c (load_image): Use a constant relative
......
1999-06-28 Michael Meeks <michael@edenproject.org>
* src/main.c (gnumeric_main): removed xbase_init.
* src/Makefile.am: Removed xbase static link.
1999-06-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* src/dialog-printer-setup.c (load_image): Use a constant relative
......
1999-06-29 Michael Meeks <michael@edenproject.org>
* ms-excel-write.c (biff_boundsheet_write_last): Use
correct type.
* ms-excel-read.c (biff_nasty_font_check_function):
removed, wonderful !
(biff_font_data_get_style_font): Updated & cleaned.
1999-06-28 Michael Meeks <michael@edenproject.org>
* ms-excel-write.c (write_formats): Write some magic
standard number formats.
1999-06-27 Michael Meeks <michael@edenproject.org>
* ms-excel-read.c: excel_builtin_formats: Populated with
......
1999-06-28 Michael Meeks <michael@edenproject.org>
* ms-ole.c (pps_encode_tree_initial): Added different
magic numbers for small block files.
(extend_file): Culled unused variables.
(read_pps): Add clobber of duff root node name, is this
a bug in pps_get_text ?
1999-06-18 Michael Meeks <michael@edenproject.org>
* ms-ole.c (ms_ole_read_ptr_bb): Stupid bug detecting
......
......@@ -229,7 +229,6 @@ get_block_ptr (MS_OLE *f, BLP b, gboolean forwrite)
item there are no valid links. Cretins. */
#define PPS_GET_NAME_LEN(p) (GET_GUINT16(p + 0x40))
#define PPS_SET_NAME_LEN(p,i) (SET_GUINT16(p + 0x40, (i)))
#define PPS_NAME(f,n) (pps_get_text (p, PPS_GET_NAME_LEN(f,n)))
#define PPS_GET_PREV(p) ((PPS_IDX) GET_GUINT32(p + 0x44))
#define PPS_GET_NEXT(p) ((PPS_IDX) GET_GUINT32(p + 0x48))
#define PPS_GET_DIR(p) ((PPS_IDX) GET_GUINT32(p + 0x4c))
......@@ -250,7 +249,7 @@ get_block_ptr (MS_OLE *f, BLP b, gboolean forwrite)
static char *
pps_get_text (guint8 *ptr, int length)
{
int lp, skip;
int lp;
char *ans;
guint16 c;
guint8 *inb;
......@@ -284,7 +283,6 @@ pps_get_text (guint8 *ptr, int length)
static void
dump_header (MS_OLE *f)
{
int lp;
printf ("--------------------------MS_OLE HEADER-------------------------\n");
printf ("Num BBD Blocks : %d Root %%d, SB blocks %d\n",
f->bb?f->bb->len:-1,
......@@ -296,7 +294,7 @@ dump_header (MS_OLE *f)
static void
characterise_block (MS_OLE *f, BLP blk, char **ans)
{
int lp, nblk;
int nblk;
nblk = g_array_index (f->bb, BLP, blk);
if (nblk == UNUSED_BLOCK) {
......@@ -464,7 +462,6 @@ extend_file (MS_OLE *f, guint blocks)
int file;
guint8 *newptr, zero = 0;
guint32 oldlen;
guint32 blk, lp;
g_assert (f);
file = f->file_des;
......@@ -502,7 +499,6 @@ static BLP
next_free_bb (MS_OLE *f)
{
BLP blk, tblk;
guint32 idx, lp;
g_assert (f);
......@@ -526,8 +522,7 @@ static int
write_bb (MS_OLE *f)
{
guint32 numbbd;
BLP ptr, lp, lpblk;
GArray *ans;
BLP lp, lpblk;
g_return_val_if_fail (f, 0);
g_return_val_if_fail (f->mem, 0);
......@@ -568,7 +563,6 @@ static BLP
next_free_sb (MS_OLE *f)
{
BLP blk, tblk;
guint32 idx, lp;
g_assert (f);
......@@ -640,9 +634,8 @@ pps_compare_func (PPS *a, PPS *b)
static void
pps_decode_tree (MS_OLE *f, PPS_IDX p, PPS *parent)
{
PPS *pps, *tpps;
PPS *pps;
guint8 *mem;
GList *tmp;
if (p == PPS_END_OF_CHAIN)
return;
......@@ -703,8 +696,7 @@ pps_decode_tree (MS_OLE *f, PPS_IDX p, PPS *parent)
static int
read_pps (MS_OLE *f)
{
GPtrArray *ans = g_ptr_array_new ();
PPS *pps;
g_return_val_if_fail (f, 0);
f->num_pps = 0;
......@@ -719,6 +711,13 @@ read_pps (MS_OLE *f)
return 0;
}
/* Fiddle root, perhaps our get_text is broken */
/* perhaps it is just an MS oddity in coding */
pps = f->pps->data;
if (pps->name)
g_free (pps->name);
pps->name = g_strdup ("Root Entry");
{ /* Free up the root chain */
BLP blk, last;
last = blk = GET_ROOT_STARTBLOCK (f);
......@@ -775,11 +774,18 @@ pps_encode_tree_initial (MS_OLE *f, GList *list, PPS_IDX *p)
PPS_SET_NAME_LEN(mem, (max+1)*2);
/* Magic numbers */
SET_GUINT8 (mem + 0x43, 0x01); /* Or zero ? */
SET_GUINT32 (mem + 0x50, 0x00020900);
if (pps->idx == PPS_ROOT_INDEX) { /* Only Root */
SET_GUINT32 (mem + 0x50, 0x00020900);
SET_GUINT32 (mem + 0x58, 0x000000c0);
SET_GUINT32 (mem + 0x5c, 0x46000000);
SET_GUINT8 (mem + 0x43, 0x01); /* or zero ? */
} else if (pps->size >= BB_THRESHOLD) {
SET_GUINT32 (mem + 0x50, 0x00020900);
SET_GUINT8 (mem + 0x43, 0x01);
} else {
SET_GUINT32 (mem + 0x64, 0x09299c3c);
SET_GUINT32 (mem + 0x6c, 0x09299c3c);
SET_GUINT8 (mem + 0x43, 0x00);
}
PPS_SET_TYPE (mem, pps->type);
......@@ -789,6 +795,11 @@ pps_encode_tree_initial (MS_OLE *f, GList *list, PPS_IDX *p)
PPS_SET_PREV (mem, PPS_END_OF_CHAIN);
PPS_SET_DIR (mem, PPS_END_OF_CHAIN);
#if MS_OLE_DEBUG > 1
printf ("Encode '%s' as \n", pps->name);
dump (mem, PPS_BLOCK_SIZE);
#endif
if (pps->children)
pps_encode_tree_initial (f, pps->children, p);
if (g_list_next (list))
......@@ -897,7 +908,6 @@ write_pps (MS_OLE *f)
PPS_IDX idx;
BLP blk = END_OF_CHAIN;
BLP last = END_OF_CHAIN;
guint8 *mem;
/* Build the root chain */
for (lp=0;lp<(f->num_pps+(BB_BLOCK_SIZE/PPS_BLOCK_SIZE)-1)/(BB_BLOCK_SIZE/PPS_BLOCK_SIZE);lp++) {
......@@ -930,7 +940,7 @@ static int
read_sb (MS_OLE *f)
{
BLP ptr;
int lp, lastidx, idx;
int lastidx, idx;
PPS *root;
g_return_val_if_fail (f, 0);
......@@ -1131,7 +1141,6 @@ ms_ole_open (const char *name)
struct stat st;
int prot = PROT_READ | PROT_WRITE;
int file;
char mode;
MS_OLE *f;
#if OLE_DEBUG > 0
......@@ -1209,7 +1218,6 @@ ms_ole_create (const char *name)
int file, zero=0;
MS_OLE *f;
int init_blocks = 1, lp;
guint8 *mem;
if ((file = open (name, O_RDWR|O_CREAT|O_TRUNC|O_NONBLOCK,
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)) == -1)
......@@ -1311,7 +1319,9 @@ destroy_pps (GList *l)
void
ms_ole_destroy (MS_OLE *f)
{
#if !OLE_MMAP
guint32 i;
#endif
#if OLE_DEBUG > 0
printf ("FIXME: should truncate to remove unused blocks\n");
#endif
......@@ -1369,18 +1379,6 @@ dump (guint8 *ptr, guint32 len)
}
}
static void
dump_stream (MS_OLE_STREAM *s)
{
g_return_if_fail (s);
if (s->size>=BB_THRESHOLD)
printf ("Big block : ");
else
printf ("Small block : ");
printf ("position %d\n", s->position);
}
static void
check_stream (MS_OLE_STREAM *s)
{
......@@ -1400,24 +1398,20 @@ check_stream (MS_OLE_STREAM *s)
idx = 0;
if (s->strtype == MS_OLE_SMALL_BLOCK) {
while (blk != END_OF_CHAIN) {
guint8 *ptr;
g_assert (g_array_index (s->blocks, BLP, idx) ==
blk);
#if OLE_DEBUG > 2
ptr = GET_SB_R_PTR(f, blk);
dump (ptr, SB_BLOCK_SIZE);
dump (GET_SB_R_PTR(f, blk), SB_BLOCK_SIZE);
#endif
blk = NEXT_SB(f, blk);
idx++;
}
} else {
while (blk != END_OF_CHAIN) {
guint8 *ptr;
g_assert (g_array_index (s->blocks, BLP, idx) ==
blk);
#if OLE_DEBUG > 2
ptr = BB_R_PTR(f, blk);
dump (ptr, BB_BLOCK_SIZE);
dump (BB_R_PTR(f, blk), BB_BLOCK_SIZE);
#endif
blk = NEXT_BB(f, blk);
idx++;
......@@ -1757,7 +1751,6 @@ static void
ms_ole_write_bb (MS_OLE_STREAM *s, guint8 *ptr, guint32 length)
{
guint8 *dest;
int cpylen;
int offset = s->position%BB_BLOCK_SIZE;
guint32 blkidx = s->position/BB_BLOCK_SIZE;
guint32 bytes = length;
......@@ -1804,7 +1797,6 @@ static void
ms_ole_write_sb (MS_OLE_STREAM *s, guint8 *ptr, guint32 length)
{
guint8 *dest;
int cpylen;
int offset = s->position%SB_BLOCK_SIZE;
guint32 blkidx = s->position/SB_BLOCK_SIZE;
guint32 bytes = length;
......@@ -2134,10 +2126,6 @@ ms_ole_directory_create (MS_OLE_DIRECTORY *d, char *name, PPS_TYPE type)
/* Find a free PPS */
PPS *p;
PPS *dp;
MS_OLE *f = d->file;
BLP startblock;
guint8 *mem;
int lp=0;
if (!d || !d->pps || !d->pps->data ||
!d->file || d->file->mode != 'w') {
......
......@@ -424,41 +424,10 @@ biff_boundsheet_data_destroy (gpointer key, BIFF_BOUNDSHEET_DATA *d, gpointer us
return 1 ;
}
#if 0
/**
* Ug! FIXME
**/
static char *
biff_nasty_font_check_function (char *name1, char *name2, int ptsize)
{
StyleFont *font;
font = style_font_new_simple (name1, ptsize);
if (font)
{
style_font_unref (font);
if (name2)
g_free(name2) ;
return name1 ;
}
else
{
if (name1)
g_free(name1) ;
return name2 ;
}
}
#endif
static StyleFont*
biff_font_data_get_style_font (BIFF_FONT_DATA *fd)
{
int i;
char *fname1, *fname2 ;
StyleFont *ans ;
int ptsize;
ptsize = MAX (4, fd->height / 20);
if (!fd->fontname) {
#if EXCEL_DEBUG > 0
......@@ -468,48 +437,8 @@ biff_font_data_get_style_font (BIFF_FONT_DATA *fd)
return gnumeric_default_font;
}
#if 0
/*
* FIXME: instead of just copying the windows font into the cell, we
* should implement a font name mapping mechanism.
* In our first attempt to make it work, let's try to guess the
* X font name from the windows name, by letting the first word
* of the name be inserted in 0'th position of the X font name.
*/
for (i = 0; fd->fontname[i] != '\0' && fd->fontname[i] != ' '; ++i)
fd->fontname[i] = tolower (fd->fontname[i]);
fd->fontname[i] = '\x0';
fname1 = g_strdup (gnumeric_default_font->font_name);
fname2 = font_change_component (gnumeric_default_font->font_name, 1, fd->fontname);
fname1 = biff_nasty_font_check_function (fname2, fname1, ptsize);
/* printf ("FoNt [-]: %s\n", fname1) ; */
if (fd->italic) {
fname2 = font_get_italic_name (fname1, ptsize);
/* printf ("FoNt [i]: %s\n", fname2) ; */
}
else
fname2 = g_strdup (fname1) ;
fname1 = biff_nasty_font_check_function (fname2, fname1, ptsize) ;
if (fd->boldness >= 0x2bc) {
fname2 = font_get_bold_name (fname1, ptsize) ;
/* printf ("FoNt [b]: %s\n", fname1) ; */
}
else
fname2 = g_strdup (fname1) ;
fname1 = biff_nasty_font_check_function (fname2, fname1, ptsize) ;
/* What about underlining? */
#else
g_error ("Review the font loading code here, I have changed it, so\n"
"you should update those X hacks to not use X11 font names, but\n"
"gnome-print font-names.");
#endif
g_warning ("Review this font size, I used a pretty much rough guess");
ans = style_font_new (fname1, fd->height / 2, 1.0, fd->boldness >= 0x2bc, fd->italic);
g_free (fname1) ;
ans = style_font_new (fd->fontname, fd->height / 20.0, 1.0,
fd->boldness >= 0x2bc, fd->italic);
return ans ;
}
......
......@@ -43,6 +43,7 @@ typedef struct _WORKBOOK WORKBOOK;
struct _SHEET {
WORKBOOK *wb;
Sheet *gnum_sheet;
GArray *dbcells;
guint32 streamPos;
guint32 boundsheetPos;
guint32 maxx;
......@@ -417,10 +418,10 @@ biff_boundsheet_write_first (BIFF_PUT *bp, eBiff_filetype type,
**/
static void
biff_boundsheet_write_last (MS_OLE_STREAM *s, guint32 pos,
guint32 streamPos)
ms_ole_pos_t streamPos)
{
guint8 data[4];
guint32 oldpos;
ms_ole_pos_t oldpos;
g_return_if_fail (s);
oldpos = s->position;/* FIXME: tell function ? */
......@@ -552,19 +553,29 @@ static FORMATS *
write_formats (BIFF_PUT *bp, WORKBOOK *wb)
{
FORMATS *formats = g_new (FORMATS, 1);
guint magic[] = { 5, 6, 7, 8, 0x2a, 0x29, 0x2c, 0x2b };
guint8 data[64];
int lp;
for (lp=0;lp<8;lp++) { /* FIXME: Magic minimum formats */
guint fidx = magic[lp];
char *fmt;
formats->StyleFormat_to_idx = g_hash_table_new (g_direct_hash,
g_direct_equal);
/* Kludge for now ... */
ms_biff_put_var_next (bp, BIFF_FORMAT);
BIFF_SET_GUINT16 (data, 0);
g_assert (fidx < EXCEL_BUILTIN_FORMAT_LEN);
g_assert (fidx >= 0);
fmt = excel_builtin_formats[fidx];
BIFF_SET_GUINT16 (data, fidx);
ms_biff_put_var_write (bp, data, 2);
biff_put_text (bp, "0", eBiffV7, TRUE);
if (fmt)
biff_put_text (bp, fmt, eBiffV7, TRUE);
else
biff_put_text (bp, "", eBiffV7, TRUE);
ms_biff_put_commit (bp);
}
......@@ -614,7 +625,7 @@ write_xf_record (BIFF_PUT *bp, Style *style, eBiff_version ver)
BIFF_SET_GUINT16(data+2, formats_get_index (0, 0));
BIFF_SET_GUINT16(data+4, 0xfff5); /* FIXME: Magic */
BIFF_SET_GUINT16(data+6, 0xf420);
BIFF_SET_GUINT16(data+8, 0xc020); /* Color ! */
BIFF_SET_GUINT16(data+8, 0x20c0); /* Color ! */
ms_biff_put_var_write (bp, data, 16);
}
ms_biff_put_commit (bp);
......@@ -797,7 +808,7 @@ static void
write_sheet_bools (BIFF_PUT *bp, SHEET *sheet)
{
guint8 *data;
eBiff_version ver = sheet->wb->ver;
/* eBiff_version ver = sheet->wb->ver; */
/* See: S59D63.HTM */
data = ms_biff_put_len_next (bp, BIFF_CALCMODE, 2);
......@@ -962,6 +973,31 @@ write_sheet_tail (BIFF_PUT *bp, SHEET *sheet)
ms_biff_put_commit (bp);
}
static void
write_index (MS_OLE_STREAM *s, SHEET *sheet, ms_ole_pos_t pos)
{
guint8 data[4];
ms_ole_pos_t oldpos;
int lp;
g_return_if_fail (s);
g_return_if_fail (sheet);
oldpos = s->position;/* FIXME: tell function ? */
if (sheet->wb->ver >= eBiffV8)
s->lseek (s, pos+4+16, MS_OLE_SEEK_SET);
else
s->lseek (s, pos+4+12, MS_OLE_SEEK_SET);
for (lp=0;lp<sheet->dbcells->len;lp++) {
BIFF_SET_GUINT32 (data, g_array_index (sheet->dbcells, ms_ole_pos_t, lp));
s->write (s, data, 4);
}
s->lseek (s, oldpos, MS_OLE_SEEK_SET);
}
/* See: S59DDB.HTM */
static ms_ole_pos_t
write_rowinfo (BIFF_PUT *bp, guint32 row, guint32 width)
......@@ -984,27 +1020,49 @@ write_rowinfo (BIFF_PUT *bp, guint32 row, guint32 width)
}
static void
write_db_cell (BIFF_PUT *bp, ms_ole_pos_t start)
write_db_cell (BIFF_PUT *bp, SHEET *sheet, ms_ole_pos_t start)
{
/* See: 'Finding records in BIFF files': S59E28.HTM */
/* See: 'DBCELL': S59D6D.HTM */
ms_ole_pos_t pos = bp->streamPos;
guint8 *data = ms_biff_put_len_next (bp, BIFF_DBCELL, 6);
BIFF_SET_GUINT32 (data , pos - start);
BIFF_SET_GUINT16 (data + 4, 0); /* Only 1 row starts at the beggining */
ms_biff_put_commit (bp);
g_array_append_val (sheet->dbcells, pos);
}
static void
write_sheet (BIFF_PUT *bp, SHEET *sheet)
{
guint32 x, y, maxx, maxy;
ms_ole_pos_t index_off;
sheet->streamPos = bp->streamPos;
biff_bof_write (bp, sheet->wb->ver, eBiffTWorksheet);
index_off = bp->streamPos;
if (sheet->wb->ver >= eBiffV8) {
guint8 *data = ms_biff_put_len_next (bp, BIFF_INDEX,
sheet->maxy*4 + 16);
BIFF_SET_GUINT32 (data, 0);
BIFF_SET_GUINT32 (data + 4, 0);
BIFF_SET_GUINT32 (data + 8, maxy);
BIFF_SET_GUINT32 (data + 12, 0);
} else {
guint8 *data = ms_biff_put_len_next (bp, BIFF_INDEX,
sheet->maxy*4 + 12);
BIFF_SET_GUINT32 (data, 0);
BIFF_SET_GUINT16 (data + 4, 0);
BIFF_SET_GUINT16 (data + 6, maxy);
BIFF_SET_GUINT32 (data + 8, 0);
}
ms_biff_put_commit (bp);
write_sheet_bools (bp, sheet);
......@@ -1035,8 +1093,10 @@ write_sheet (BIFF_PUT *bp, SHEET *sheet)
if (run_size)
write_mulblank (bp, sheet, x, y, run_size);
write_db_cell (bp, start);
write_db_cell (bp, sheet, start);
}
write_index (bp->pos, sheet, index_off);
write_sheet_tail (bp, sheet);
biff_eof_write (bp);
......@@ -1055,6 +1115,7 @@ new_sheet (WORKBOOK *wb, Sheet *value)
sheet->wb = wb;
sheet->maxx = sheet->gnum_sheet->max_col_used+1;
sheet->maxy = sheet->gnum_sheet->max_row_used+1;
sheet->dbcells = g_array_new (FALSE, FALSE, sizeof (ms_ole_pos_t));
printf ("Workbook %d %p\n", wb->ver, wb->gnum_wb);
g_ptr_array_add (wb->sheets, sheet);
......
1999-06-23 <michael@edenproject.org>
1999-06-28 Michael Meeks <michael@edenproject.org>
* boot.c (xbase_can_unload, xbase_cleaup_plugin):
implemented.
(xbase_init): renamed to init_plugin and updated.
* Makefile.am: converted to plugin.
1999-06-23 Michael Meeks <michael@edenproject.org>
* boot.c (xbase_probe): Fix for filenames with no
extension.
......
GNUMERIC_SRC_DIR = $(top_srcdir)/src
INCLUDES = \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DGNUMERIC_VERSION=\""$(VERSION)"\" \
......@@ -5,9 +7,11 @@ INCLUDES = \
-I$(top_srcdir)/src \
$(GNOME_INCLUDEDIR)
noinst_LIBRARIES = libxbase.a
plugindir = $(libdir)/gnumeric/plugins
plugin_LTLIBRARIES = libxbase.la
libxbase_a_SOURCES = \
libxbase_la_SOURCES = \
boot.c \
boot.h \
xbase.c \
......
......@@ -23,6 +23,7 @@
#include "xbase.h"
#include "boot.h"
#include "plugin.h"
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
# define XB_GETDOUBLE(p) (*((double*)(p)))
......@@ -187,11 +188,29 @@ xbase_load (const char *filename)
return wb;
}
void
xbase_init (void)
static int
xbase_can_unload (PluginData *pd)
{
return TRUE;
}
static void
xbase_cleanup_plugin (PluginData *pd)
{
file_format_unregister_open (xbase_probe, xbase_load);
}
int
init_plugin (PluginData *pd)
{
char *descr = _("Xbase (*.dbf) file format");
/* We register XBase format with a precendence of 100 */
file_format_register_open (100, descr, xbase_probe, xbase_load);
pd->can_unload = xbase_can_unload;
pd->cleanup_plugin = xbase_cleanup_plugin;
pd->title = g_strdup (_("XBase file import/export plugin"));
return 0;
}
......@@ -215,7 +215,6 @@ gnumeric_LDADD = \
$(GNOME_PRINT_LIBS) \
../plugins/excel/libexcel.a \
../plugins/excel/libole2/libole2.a \
../plugins/xbase/libxbase.a \
../libglade/glade/libglade.a \
$(GNOME_LIBDIR) \
$(GNOMEUI_LIBS) \
......@@ -226,7 +225,6 @@ gnumeric_LDADD = \
gnumeric_bonobo_LDADD = \
../plugins/excel/libexcel.a \
../plugins/excel/libole2/libole2.a \
../plugins/xbase/libxbase.a \
../libglade/glade/libglade.a \
$(BONOBO_LIBS) \
$(GNOME_PRINT_LIBS) \
......
......@@ -66,7 +66,6 @@ gnumeric_main (void *closure, int argc, char *argv [])
/* The statically linked in file formats */
xml_init ();
excel_init ();
xbase_init ();
/* Glade */
glade_gnome_init ();
......
......@@ -66,7 +66,6 @@ gnumeric_main (void *closure, int argc, char *argv [])
/* The statically linked in file formats */
xml_init ();
excel_init ();
xbase_init ();
/* Glade */
glade_gnome_init ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment