summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ui/tools/measure-tool.cpp10
-rw-r--r--src/ui/tools/measure-tool.h1
-rw-r--r--src/widgets/measure-toolbar.cpp17
-rw-r--r--src/widgets/toolbox.cpp1
4 files changed, 28 insertions, 1 deletions
diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp
index c275a6d79..8d838fc06 100644
--- a/src/ui/tools/measure-tool.cpp
+++ b/src/ui/tools/measure-tool.cpp
@@ -280,6 +280,16 @@ MeasureTool::~MeasureTool() {
measure_tmp_items.clear();
}
+void MeasureTool::reverseKnots(){
+ Geom::Point start = start_p;
+ Geom::Point end = end_p;
+ this->knot_start->setPosition(end, SP_KNOT_STATE_NORMAL);
+ this->knot_start->show();
+ this->knot_end->setPosition(start, SP_KNOT_STATE_NORMAL);
+ this->knot_end->show();
+ this->showCanvasItems(end, start);
+}
+
void MeasureTool::knotMovedHandler(SPKnot */*knot*/, Geom::Point const /*&ppointer*/, guint /*state*/){
showCanvasItems(this->knot_start->position(), this->knot_end->position());
}
diff --git a/src/ui/tools/measure-tool.h b/src/ui/tools/measure-tool.h
index 412de8b72..944b14ed8 100644
--- a/src/ui/tools/measure-tool.h
+++ b/src/ui/tools/measure-tool.h
@@ -37,6 +37,7 @@ public:
virtual bool root_handler(GdkEvent* event);
virtual void showCanvasItems();
virtual void showCanvasItems(Geom::Point start_point, Geom::Point end_point);
+ virtual void reverseKnots();
virtual const std::string& getPrefsPath();
void knotMovedHandler(SPKnot */*knot*/, Geom::Point const /*&ppointer*/, guint /*state*/);
void knotUngrabbedHandler(SPKnot */*knot*/, unsigned int /*state*/);
diff --git a/src/widgets/measure-toolbar.cpp b/src/widgets/measure-toolbar.cpp
index e3536b6a7..5abd099d6 100644
--- a/src/widgets/measure-toolbar.cpp
+++ b/src/widgets/measure-toolbar.cpp
@@ -148,7 +148,12 @@ static void toggle_show_in_between( GtkToggleAction* act, gpointer data )
mt->showCanvasItems();
}
}
-
+static void sp_reverse_knots(void){
+ MeasureTool *mt = get_measure_tool();
+ if (mt) {
+ mt->reverseKnots();
+ }
+}
void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, GObject* holder)
{
UnitTracker* tracker = new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR);
@@ -221,6 +226,16 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_all_layers), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
+ //toogle start end
+ {
+ InkAction* act = ink_action_new( "MeasureReverse",
+ _("Reverse measure"),
+ _("Reverse measure"),
+ INKSCAPE_ICON("draw-geometry-mirror"),
+ secondarySize );
+ g_signal_connect_after( G_OBJECT(act), "activate", G_CALLBACK(sp_reverse_knots), 0 );
+ gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
+ }
} // end of sp_measure_toolbox_prep()
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index ba02adb92..769829313 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -344,6 +344,7 @@ static gchar const * ui_descr =
" <toolitem action='MeasureIgnore1stAndLast' />"
" <toolitem action='MeasureInBettween' />"
" <toolitem action='MeasureAllLayers' />"
+ " <toolitem action='MeasureReverse' />"
" </toolbar>"
" <toolbar name='StarToolbar'>"