? src/algorithms/makefile ? src/traits/makefile ? src/util/makefile Index: ChangeLog =================================================================== RCS file: /cvsroot/inkscape/inkscape/ChangeLog,v retrieving revision 1.922 diff -u -r1.922 ChangeLog --- ChangeLog 2 Aug 2004 02:20:33 -0000 1.922 +++ ChangeLog 3 Aug 2004 07:16:30 -0000 @@ -1,9 +1,15 @@ +2004-07-31 David Turner + + * file.cpp, file.h, interface.cpp, toolbox.cpp, verbs.cpp, verbs.h: + + Added vacuum command to remove unused defs. + 2004-08-02 Peter Moulder * src/display/curve.cpp, src/display/curve.h: Greater conformance with CodingStyle. -2004-07-31 David Turner +2004-07-31 David Turner * dialogs/xml-tree.cpp: Improved focus, added keystroke for attr commit. @@ -29,7 +35,7 @@ anymore - this was flaky. Also added a document to the prototype so that document specific parameters can be supported in the future. -2004-07-28 David Turner +2004-07-28 David Turner * sp-gradient.cpp, widgets/gradient-vector.cpp: fixed gradient handling to properly render gradients with sharp color boundaries Index: src/file.cpp =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/file.cpp,v retrieving revision 1.73 diff -u -r1.73 file.cpp --- src/file.cpp 27 Jul 2004 06:48:56 -0000 1.73 +++ src/file.cpp 3 Aug 2004 07:16:32 -0000 @@ -9,6 +9,7 @@ * * Copyright (C) 1999-2002 Authors * Copyright (C) 2001-2002 Ximian, Inc. + * Copyright (C) 2004 David Turner * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -294,6 +295,56 @@ } +/*###################### +## V A C U U M +######################*/ + +static SPObject* +sp_object_get_child_by_tagName (SPObject *obj, gchar* tagName) { + + for ( SPObject* child = obj->firstChild () ; + child ; child = SP_OBJECT_NEXT (child) ) + { + if (!strcmp (sp_object_tagName_get (child, NULL), tagName)) { + return child; + } + } + + return NULL; +} + + + +/** + * Remove unreferenced defs from the defs section of the document. + */ + + +void +sp_file_vacuum() +{ + + SPObject *doc = SP_ACTIVE_DOCUMENT->root; + SPObject *defs = sp_object_get_child_by_tagName (doc, "defs"); + /*fixme: are multiple defs sections allowed? */ + + SPObject* next; + for ( SPObject* def = defs->firstChild () ; + def ; def = next ) + { + + next = SP_OBJECT_NEXT (def); + const gchar* tagName = sp_object_tagName_get (def, NULL); + + if (strncmp (tagName, "inkscape:", 9)) { + /*don't collect inkscape's special nodes*/ + def->collectOrphan (); + } + } + + sp_document_done (SP_ACTIVE_DOCUMENT); +} + /*###################### Index: src/file.h =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/file.h,v retrieving revision 1.13 diff -u -r1.13 file.h --- src/file.h 15 Apr 2004 00:52:37 -0000 1.13 +++ src/file.h 3 Aug 2004 07:16:32 -0000 @@ -136,5 +136,14 @@ */ void sp_file_print_preview (gpointer object, gpointer data); +/*##################### +## U T I L I T Y +#####################*/ + +/** + * clean unused defs out of file + */ +void sp_file_vacuum (); + #endif Index: src/interface.cpp =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/interface.cpp,v retrieving revision 1.95 diff -u -r1.95 interface.cpp --- src/interface.cpp 29 Jul 2004 05:48:24 -0000 1.95 +++ src/interface.cpp 3 Aug 2004 07:16:33 -0000 @@ -9,6 +9,7 @@ * * Copyright (C) 1999-2002 authors * Copyright (C) 2001-2002 Ximian, Inc. + * Copyright (C) 2004 David Turner * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -601,6 +602,7 @@ SP_VERB_NONE, SP_VERB_DIALOG_NAMEDVIEW, SP_VERB_DIALOG_DISPLAY, + SP_VERB_FILE_VACUUM, SP_VERB_NONE, SP_VERB_FILE_CLOSE_VIEW, Index: src/toolbox.cpp =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/toolbox.cpp,v retrieving revision 1.67 diff -u -r1.67 toolbox.cpp --- src/toolbox.cpp 29 Jul 2004 05:48:24 -0000 1.67 +++ src/toolbox.cpp 3 Aug 2004 07:16:37 -0000 @@ -7,8 +7,10 @@ * MenTaLguY * Lauris Kaplinski * Frank Felfe - * John Cliff +* John Cliff +* David Turner * +* Copyright (C) 2004 David Turner * Copyright (C) 2003 MenTaLguY * Copyright (C) 1999-2002 authors * Copyright (C) 2001-2002 Ximian, Inc. @@ -619,6 +621,7 @@ sp_toolbox_button_new_from_verb(tb, AUX_BUTTON_SIZE, SP_BUTTON_TYPE_NORMAL, SP_VERB_FILE_IMPORT, view, tt); sp_toolbox_button_new_from_verb(tb, AUX_BUTTON_SIZE, SP_BUTTON_TYPE_NORMAL, SP_VERB_FILE_EXPORT, view, tt); + sp_toolbox_button_new_from_verb(tb, AUX_BUTTON_SIZE, SP_BUTTON_TYPE_NORMAL, SP_VERB_FILE_VACUUM, view, tt); aux_toolbox_space(tb, AUX_BETWEEN_BUTTON_GROUPS); Index: src/verbs.cpp =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/verbs.cpp,v retrieving revision 1.94 diff -u -r1.94 verbs.cpp --- src/verbs.cpp 2 Aug 2004 17:33:38 -0000 1.94 +++ src/verbs.cpp 3 Aug 2004 07:16:38 -0000 @@ -12,6 +12,7 @@ * Lauris Kaplinski * Ted Gould * MenTaLguY + * David Turner * * This code is in public domain. * @@ -200,6 +201,9 @@ case SP_VERB_FILE_PRINT: sp_file_print (); break; + case SP_VERB_FILE_VACUUM: + sp_file_vacuum (); + break; case SP_VERB_FILE_PRINT_DIRECT: sp_file_print_direct (); break; @@ -813,6 +817,8 @@ N_("Save document under new name"), GTK_STOCK_SAVE_AS }, {SP_VERB_FILE_PRINT, "FilePrint", N_("_Print..."), N_("Print document"), GTK_STOCK_PRINT }, + {SP_VERB_FILE_VACUUM, "FileVacuum", N_("Vacuum _unused defs"), N_("Vacuum document"), + NULL }, {SP_VERB_FILE_PRINT_DIRECT, "FilePrintDirect", N_("Print _Direct"), N_("Print directly to file or pipe"), NULL }, {SP_VERB_FILE_PRINT_PREVIEW, "FilePrintPreview", N_("Print Previe_w"), Index: src/verbs.h =================================================================== RCS file: /cvsroot/inkscape/inkscape/src/verbs.h,v retrieving revision 1.43 diff -u -r1.43 verbs.h --- src/verbs.h 2 Aug 2004 17:33:38 -0000 1.43 +++ src/verbs.h 3 Aug 2004 07:16:38 -0000 @@ -25,6 +25,7 @@ SP_VERB_FILE_SAVE, SP_VERB_FILE_SAVE_AS, SP_VERB_FILE_PRINT, + SP_VERB_FILE_VACUUM, SP_VERB_FILE_PRINT_DIRECT, SP_VERB_FILE_PRINT_PREVIEW, SP_VERB_FILE_IMPORT,