diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/object/sp-guide.cpp | 4 | ||||
| -rw-r--r-- | src/object/sp-guide.h | 1 | ||||
| -rw-r--r-- | src/ui/dialog/guides.cpp | 10 | ||||
| -rw-r--r-- | src/ui/dialog/guides.h | 1 |
4 files changed, 16 insertions, 0 deletions
diff --git a/src/object/sp-guide.cpp b/src/object/sp-guide.cpp index 8dbc68f09..4fe73ca4e 100644 --- a/src/object/sp-guide.cpp +++ b/src/object/sp-guide.cpp @@ -248,6 +248,10 @@ SPGuide *SPGuide::createSPGuide(SPDocument *doc, Geom::Point const &pt1, Geom::P return guide; } +SPGuide *SPGuide::duplicate(){ + return SPGuide::createSPGuide(document, point_on_line, Geom::Point(point_on_line[Geom::X] + normal_to_line[Geom::Y],point_on_line[Geom::Y] - normal_to_line[Geom::X])); +} + void sp_guide_pt_pairs_to_guides(SPDocument *doc, std::list<std::pair<Geom::Point, Geom::Point> > &pts) { for (auto & pt : pts) { diff --git a/src/object/sp-guide.h b/src/object/sp-guide.h index 57a52e627..4ecd62d17 100644 --- a/src/object/sp-guide.h +++ b/src/object/sp-guide.h @@ -57,6 +57,7 @@ public: bool getLocked() const { return locked; } static SPGuide *createSPGuide(SPDocument *doc, Geom::Point const &pt1, Geom::Point const &pt2); + SPGuide *duplicate(); void showSPGuide(SPCanvasGroup *group, GCallback handler); void hideSPGuide(SPCanvas *canvas); diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp index 3b72f1feb..cef214f5a 100644 --- a/src/ui/dialog/guides.cpp +++ b/src/ui/dialog/guides.cpp @@ -142,6 +142,12 @@ void GuidelinePropertiesDialog::_onDelete() _("Delete guide")); } +void GuidelinePropertiesDialog::_onDuplicate() +{ + _guide->duplicate(); + DocumentUndo::done(_guide->document, SP_VERB_NONE, _("Duplicate guide")); +} + void GuidelinePropertiesDialog::_response(gint response) { switch (response) { @@ -151,6 +157,9 @@ void GuidelinePropertiesDialog::_response(gint response) case -12: _onDelete(); break; + case -13: + _onDuplicate(); + break; case Gtk::RESPONSE_CANCEL: break; case Gtk::RESPONSE_DELETE_EVENT: @@ -164,6 +173,7 @@ void GuidelinePropertiesDialog::_setup() { set_title(_("Guideline")); add_button(_("_OK"), Gtk::RESPONSE_OK); add_button(_("_Delete"), -12); + add_button(_("_Duplicate"), -13); add_button(_("_Cancel"), Gtk::RESPONSE_CANCEL); auto mainVBox = get_content_area(); diff --git a/src/ui/dialog/guides.h b/src/ui/dialog/guides.h index 637eb4d0e..abfc7d348 100644 --- a/src/ui/dialog/guides.h +++ b/src/ui/dialog/guides.h @@ -52,6 +52,7 @@ protected: void _onOK(); void _onDelete(); + void _onDuplicate(); void _response(gint response); void _modeChanged(); |
