diff options
Diffstat (limited to 'src/sp-guide.cpp')
| -rw-r--r-- | src/sp-guide.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index aa365eb99..f71bc1762 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -163,6 +163,9 @@ static void sp_guide_build(SPObject *object, SPDocument *document, Inkscape::XML object->readAttr( "inkscape:label" ); object->readAttr( "orientation" ); object->readAttr( "position" ); + + /* Register */ + document->addResource("guide", object); } static void sp_guide_release(SPObject *object) @@ -174,6 +177,11 @@ static void sp_guide_release(SPObject *object) guide->views = g_slist_remove(guide->views, guide->views->data); } + if (object->document) { + // Unregister ourselves + object->document->removeResource("guide", object); + } + if (((SPObjectClass *) parent_class)->release) { ((SPObjectClass *) parent_class)->release(object); } @@ -299,6 +307,18 @@ sp_guide_create_guides_around_page(SPDesktop *dt) { DocumentUndo::done(doc, SP_VERB_NONE, _("Create Guides Around the Page")); } +void +sp_guide_delete_all_guides(SPDesktop *dt) { + SPDocument *doc=sp_desktop_document(dt); + const GSList *current; + while ( (current = doc->getResourceList("guide")) ) { + SPGuide* guide = SP_GUIDE(current->data); + sp_guide_remove(guide); + } + + DocumentUndo::done(doc, SP_VERB_NONE, _("Delete All Guides")); +} + void SPGuide::showSPGuide(SPCanvasGroup *group, GCallback handler) { SPCanvasItem *item = sp_guideline_new(group, label, point_on_line, normal_to_line); |
