summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/object/sp-guide.cpp4
-rw-r--r--src/object/sp-guide.h1
-rw-r--r--src/ui/dialog/guides.cpp10
-rw-r--r--src/ui/dialog/guides.h1
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();