summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-10-25 01:55:48 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-10-25 01:55:48 +0000
commit7f606e3eb5e38a645c4dc5e0c22bbe1136a1f674 (patch)
tree6b56989933ebd5651779d7c67e775854c406eb87 /src
parentupdate to branch (diff)
downloadinkscape-7f606e3eb5e38a645c4dc5e0c22bbe1136a1f674.tar.gz
inkscape-7f606e3eb5e38a645c4dc5e0c22bbe1136a1f674.zip
Fixed some toolbox definition and minor tweaks
(bzr r14393.1.30)
Diffstat (limited to 'src')
-rw-r--r--src/ui/tools/measure-tool.cpp23
-rw-r--r--src/widgets/measure-toolbar.cpp51
2 files changed, 49 insertions, 25 deletions
diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp
index 87e8d5804..e6f56674a 100644
--- a/src/ui/tools/measure-tool.cpp
+++ b/src/ui/tools/measure-tool.cpp
@@ -347,14 +347,20 @@ MeasureTool::MeasureTool()
this->knot_end->setStroke(0x0000007f, 0x0000007f, 0x0000007f);
this->knot_end->setShape(SP_KNOT_SHAPE_CIRCLE);
this->knot_end->updateCtrl();
- Geom::Rect display_area = desktop->get_display_area () ;
+ Geom::Rect display_area = desktop->get_display_area();
if(display_area.interiorContains(start_p) && display_area.interiorContains(end_p) && end_p != Geom::Point()) {
this->knot_start->moveto(start_p);
this->knot_start->show();
this->knot_end->moveto(end_p);
this->knot_end->show();
showCanvasItems();
+ } else {
+ start_p = Geom::Point(0,0);
+ end_p = Geom::Point(0,0);
+ writeMeasurePoint(start_p, true);
+ writeMeasurePoint(end_p, false);
}
+
this->_knot_start_moved_connection = this->knot_start->moved_signal.connect(sigc::mem_fun(*this, &MeasureTool::knotStartMovedHandler));
this->_knot_start_ungrabbed_connection = this->knot_start->ungrabbed_signal.connect(sigc::mem_fun(*this, &MeasureTool::knotUngrabbedHandler));
this->_knot_end_moved_connection = this->knot_end->moved_signal.connect(sigc::mem_fun(*this, &MeasureTool::knotEndMovedHandler));
@@ -612,7 +618,6 @@ bool MeasureTool::root_handler(GdkEvent* event)
case GDK_BUTTON_RELEASE: {
this->knot_start->moveto(start_p);
this->knot_start->show();
- end_p = end_p;
if(last_end) {
end_p = desktop->w2d(*last_end);
if (event->button.state & GDK_CONTROL_MASK) {
@@ -630,6 +635,7 @@ bool MeasureTool::root_handler(GdkEvent* event)
this->knot_end->moveto(end_p);
this->knot_end->show();
showCanvasItems();
+
if (this->grabbed) {
sp_canvas_item_ungrab(this->grabbed, event->button.time);
this->grabbed = NULL;
@@ -698,6 +704,9 @@ void MeasureTool::setMarker(bool isStart)
void MeasureTool::toGuides()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if(!desktop || !start_p.isFinite() || !end_p.isFinite() || start_p == end_p) {
+ return;
+ }
SPDocument *doc = desktop->getDocument();
Geom::Point start = desktop->doc2dt(start_p) * desktop->doc2dt();
Geom::Point end = desktop->doc2dt(end_p) * desktop->doc2dt();
@@ -726,12 +735,15 @@ void MeasureTool::toGuides()
void MeasureTool::toItem()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if(!desktop || !start_p.isFinite() || !end_p.isFinite() || start_p == end_p) {
+ return;
+ }
SPDocument *doc = desktop->getDocument();
Geom::Ray ray(start_p,end_p);
guint32 line_color_primary = 0x0000ff7f;
Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
Inkscape::XML::Node *rgroup = xml_doc->createElement("svg:g");
- showCanvasItems(false, true,rgroup);
+ showCanvasItems(false, true, rgroup);
setLine(start_p,end_p, false, line_color_primary, rgroup);
SPItem *measure_item = SP_ITEM(desktop->currentLayer()->appendChildRepr(rgroup));
Inkscape::GC::release(rgroup);
@@ -744,6 +756,9 @@ void MeasureTool::toItem()
void MeasureTool::toMarkDimension()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if(!desktop || !start_p.isFinite() || !end_p.isFinite() || start_p == end_p) {
+ return;
+ }
SPDocument *doc = desktop->getDocument();
setMarkers();
Geom::Ray ray(start_p,end_p);
@@ -1218,7 +1233,7 @@ void MeasureTool::showCanvasItems(bool to_guides, bool to_item, Inkscape::XML::N
// draw main control line
{
- setMeasureCanvasControlLine(start_p, end_p, false, CTLINE_SECONDARY, measure_repr);
+ setMeasureCanvasControlLine(start_p, end_p, false, CTLINE_PRIMARY, measure_repr);
double length = std::abs((end_p - start_p).length());
Geom::Point anchorEnd = start_p;
anchorEnd[Geom::X] += length;
diff --git a/src/widgets/measure-toolbar.cpp b/src/widgets/measure-toolbar.cpp
index 0e083924e..67c128dd2 100644
--- a/src/widgets/measure-toolbar.cpp
+++ b/src/widgets/measure-toolbar.cpp
@@ -77,7 +77,7 @@ sp_measure_fontsize_value_changed(GtkAdjustment *adj, GObject *tbl)
if (DocumentUndo::getUndoSensitive(desktop->getDocument())) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(Glib::ustring("/tools/measure/fontsize"),
+ prefs->setDouble(Glib::ustring("/tools/measure/fontsize"),
gtk_adjustment_get_value(adj));
MeasureTool *mt = get_measure_tool();
if (mt) {
@@ -93,7 +93,7 @@ sp_measure_offset_value_changed(GtkAdjustment *adj, GObject *tbl)
if (DocumentUndo::getUndoSensitive(desktop->getDocument())) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(Glib::ustring("/tools/measure/offset"),
+ prefs->setDouble(Glib::ustring("/tools/measure/offset"),
gtk_adjustment_get_value(adj));
MeasureTool *mt = get_measure_tool();
if (mt) {
@@ -108,7 +108,7 @@ static void sp_measure_scale_value_changed(GtkAdjustment *adj, GObject *tbl)
if (DocumentUndo::getUndoSensitive(desktop->getDocument())) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(Glib::ustring("/tools/measure/scale"),
+ prefs->setDouble(Glib::ustring("/tools/measure/scale"),
gtk_adjustment_get_value(adj));
MeasureTool *mt = get_measure_tool();
if (mt) {
@@ -133,7 +133,8 @@ sp_measure_precision_value_changed(GtkAdjustment *adj, GObject *tbl)
}
}
-static void measure_unit_changed(GtkAction* /*act*/, GObject* tbl)
+static void
+sp_measure_unit_changed(GtkAction* /*act*/, GObject* tbl)
{
UnitTracker* tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(tbl, "tracker"));
Glib::ustring const unit = tracker->getActiveUnit()->abbr;
@@ -145,11 +146,12 @@ static void measure_unit_changed(GtkAction* /*act*/, GObject* tbl)
}
}
-static void toggle_ignore_1st_and_last( GtkToggleAction* act, gpointer data )
+static void
+sp_toggle_ignore_1st_and_last( GtkToggleAction* act, gpointer data )
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gboolean active = gtk_toggle_action_get_active(act);
- prefs->setInt("/tools/measure/ignore_1st_and_last", active);
+ prefs->setBool("/tools/measure/ignore_1st_and_last", active);
SPDesktop *desktop = static_cast<SPDesktop *>(data);
if ( active ) {
desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Start and end measures inactive."));
@@ -162,11 +164,12 @@ static void toggle_ignore_1st_and_last( GtkToggleAction* act, gpointer data )
}
}
-static void toggle_only_visible( GtkToggleAction* act, gpointer data )
+static void
+sp_toggle_only_visible( GtkToggleAction* act, gpointer data )
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gboolean active = gtk_toggle_action_get_active(act);
- prefs->setInt("/tools/measure/only_visible", active);
+ prefs->setBool("/tools/measure/only_visible", active);
SPDesktop *desktop = static_cast<SPDesktop *>(data);
if ( active ) {
desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Show only visible crossings."));
@@ -179,11 +182,12 @@ static void toggle_only_visible( GtkToggleAction* act, gpointer data )
}
}
-static void toggle_all_layers( GtkToggleAction* act, gpointer data )
+static void
+sp_toggle_all_layers( GtkToggleAction* act, gpointer data )
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gboolean active = gtk_toggle_action_get_active(act);
- prefs->setInt("/tools/measure/all_layers", active);
+ prefs->setBool("/tools/measure/all_layers", active);
SPDesktop *desktop = static_cast<SPDesktop *>(data);
if ( active ) {
desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Use all layers in the measure."));
@@ -196,11 +200,12 @@ static void toggle_all_layers( GtkToggleAction* act, gpointer data )
}
}
-static void toggle_show_in_between( GtkToggleAction* act, gpointer data )
+static void
+sp_toggle_show_in_between( GtkToggleAction* act, gpointer data )
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gboolean active = gtk_toggle_action_get_active(act);
- prefs->setInt("/tools/measure/show_in_between", active);
+ prefs->setBool("/tools/measure/show_in_between", active);
SPDesktop *desktop = static_cast<SPDesktop *>(data);
if ( active ) {
desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Compute all elements."));
@@ -212,28 +217,32 @@ static void toggle_show_in_between( GtkToggleAction* act, gpointer data )
mt->showCanvasItems();
}
}
-static void sp_reverse_knots(void){
+static void
+sp_reverse_knots(void){
MeasureTool *mt = get_measure_tool();
if (mt) {
mt->reverseKnots();
}
}
-static void sp_to_mark_dimension(void){
+static void
+sp_to_mark_dimension(void){
MeasureTool *mt = get_measure_tool();
if (mt) {
mt->toMarkDimension();
}
}
-static void sp_to_guides(void){
+static void
+sp_to_guides(void){
MeasureTool *mt = get_measure_tool();
if (mt) {
mt->toGuides();
}
}
-static void sp_to_item(void){
+static void
+sp_to_item(void){
MeasureTool *mt = get_measure_tool();
if (mt) {
mt->toItem();
@@ -275,7 +284,7 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
/* units menu */
{
GtkAction* act = tracker->createAction( "MeasureUnitsAction", _("Units:"), _("The units to be used for the measurements") );
- g_signal_connect_after( G_OBJECT(act), "changed", G_CALLBACK(measure_unit_changed), holder );
+ g_signal_connect_after( G_OBJECT(act), "changed", G_CALLBACK(sp_measure_unit_changed), holder );
gtk_action_group_add_action( mainActions, act );
}
@@ -326,7 +335,7 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
INKSCAPE_ICON("draw-geometry-line-segment"),
secondarySize );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/ignore_1st_and_last", true) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_ignore_1st_and_last), desktop) ;
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_ignore_1st_and_last), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
/* only visible */
@@ -337,7 +346,7 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
INKSCAPE_ICON("zoom"),
secondarySize );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/only_visible", true) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_only_visible), desktop) ;
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_only_visible), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
/* measure imbetweens */
@@ -348,7 +357,7 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
INKSCAPE_ICON("distribute-randomize"),
secondarySize );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/show_in_between", true) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_show_in_between), desktop) ;
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_show_in_between), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
/* measure only current layer */
@@ -359,7 +368,7 @@ void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, G
INKSCAPE_ICON("dialog-layers"),
secondarySize );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/all_layers", true) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_all_layers), desktop) ;
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_all_layers), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
/* toogle start end */