summaryrefslogtreecommitdiffstats
path: root/src/sp-guide.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp-guide.cpp')
-rw-r--r--src/sp-guide.cpp20
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);