diff options
Diffstat (limited to 'src/ui/toolbar/measure-toolbar.cpp')
| -rw-r--r-- | src/ui/toolbar/measure-toolbar.cpp | 547 |
1 files changed, 253 insertions, 294 deletions
diff --git a/src/ui/toolbar/measure-toolbar.cpp b/src/ui/toolbar/measure-toolbar.cpp index 9fb2c4d7c..9e04a4dc7 100644 --- a/src/ui/toolbar/measure-toolbar.cpp +++ b/src/ui/toolbar/measure-toolbar.cpp @@ -29,32 +29,25 @@ #include <glibmm/i18n.h> +#include <gtkmm/separatortoolitem.h> + #include "desktop.h" #include "document-undo.h" -#include "widgets/ink-action.h" -#include "widgets/ink-toggle-action.h" -#include "widgets/toolbox.h" #include "inkscape.h" #include "message-stack.h" #include "ui/icon-names.h" #include "ui/tools/measure-tool.h" #include "ui/widget/ink-select-one-action.h" +#include "ui/widget/label-tool-item.h" +#include "ui/widget/spin-button-tool-item.h" #include "ui/widget/unit-tracker.h" -#include "widgets/ege-adjustment-action.h" -#include "widgets/ege-output-action.h" - using Inkscape::UI::Widget::UnitTracker; using Inkscape::Util::Unit; using Inkscape::DocumentUndo; -using Inkscape::UI::ToolboxFactory; using Inkscape::UI::Tools::MeasureTool; -//######################## -//## Measure Toolbox ## -//######################## - /** Temporary hack: Returns the node tool in the active desktop. * Will go away during tool refactoring. */ static MeasureTool *get_measure_tool() @@ -71,342 +64,178 @@ static MeasureTool *get_measure_tool() - -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->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.")); - } else { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Start and end measures active.")); - } - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->showCanvasItems(); - } -} - -static void -sp_toggle_only_selected( GtkToggleAction* act, gpointer data ) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - gboolean active = gtk_toggle_action_get_active(act); - prefs->setBool("/tools/measure/only_selected", active); - SPDesktop *desktop = static_cast<SPDesktop *>(data); - if ( active ) { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Measures only selected.")); - } else { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Measure all.")); - } - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->showCanvasItems(); - } -} - -static void -sp_toggle_show_hidden( GtkToggleAction* act, gpointer data ) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - gboolean active = gtk_toggle_action_get_active(act); - prefs->setBool("/tools/measure/show_hidden", active); - SPDesktop *desktop = static_cast<SPDesktop *>(data); - if ( active ) { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Show all crossings.")); - } else { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Show visible crossings.")); - } - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->showCanvasItems(); - } -} - -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->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.")); - } else { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Use current layer in the measure.")); - } - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->showCanvasItems(); - } -} - -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->setBool("/tools/measure/show_in_between", active); - SPDesktop *desktop = static_cast<SPDesktop *>(data); - if ( active ) { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Compute all elements.")); - } else { - desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Compute max length.")); - } - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->showCanvasItems(); - } -} -static void -sp_reverse_knots(){ - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->reverseKnots(); - } -} - -static void -sp_to_mark_dimension(){ - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->toMarkDimension(); - } -} - -static void -sp_to_guides(){ - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->toGuides(); - } -} - -static void -sp_to_phantom(){ - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->toPhantom(); - } -} - -static void -sp_to_item(){ - MeasureTool *mt = get_measure_tool(); - if (mt) { - mt->toItem(); - } -} - namespace Inkscape { namespace UI { namespace Toolbar { MeasureToolbar::MeasureToolbar(SPDesktop *desktop) : Toolbar(desktop), _tracker(new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR)) -{} - -GtkWidget * -MeasureToolbar::prep(SPDesktop * desktop, GtkActionGroup* mainActions) { - auto holder = new MeasureToolbar(desktop); - - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - holder->_tracker->setActiveUnitByAbbr(prefs->getString("/tools/measure/unit").c_str()); - - EgeAdjustmentAction *eact = nullptr; - GtkIconSize secondarySize = ToolboxFactory::prefToSize("/toolbox/secondary", 1); + auto prefs = Inkscape::Preferences::get(); + _tracker->setActiveUnitByAbbr(prefs->getString("/tools/measure/unit").c_str()); /* Font Size */ { - eact = create_adjustment_action( "MeasureFontSizeAction", - _("Font Size"), _("Font Size:"), - _("The font size to be used in the measurement labels"), - "/tools/measure/fontsize", 10.0, - FALSE, nullptr, - 1.0, 36.0, 1.0, 4.0, - nullptr, nullptr, 0, - nullptr, 0 , 2); - ege_adjustment_action_set_focuswidget(eact, GTK_WIDGET(desktop->canvas)); - holder->_font_size_adj = Glib::wrap(ege_adjustment_action_get_adjustment(eact)); - holder->_font_size_adj->signal_value_changed().connect(sigc::mem_fun(*holder, &MeasureToolbar::fontsize_value_changed)); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact)); + auto font_size_val = prefs->getDouble("/tools/measure/fontsize", 10.0); + _font_size_adj = Gtk::Adjustment::create(font_size_val, 1.0, 36.0, 1.0, 4.0); + auto font_size_item = Gtk::manage(new UI::Widget::SpinButtonToolItem("measure-fontsize", _("Font Size:"), _font_size_adj, 0, 2)); + font_size_item->set_tooltip_text(_("The font size to be used in the measurement labels")); + font_size_item->set_focus_widget(Glib::wrap(GTK_WIDGET(desktop->canvas))); + _font_size_adj->signal_value_changed().connect(sigc::mem_fun(*this, &MeasureToolbar::fontsize_value_changed)); + add(*font_size_item); } - /* units label */ + /* Precision */ { - EgeOutputAction* act = ege_output_action_new( "measure_units_label", _("Units:"), _("The units to be used for the measurements"), nullptr ); - ege_output_action_set_use_markup( act, TRUE ); - g_object_set( act, "visible-overflown", FALSE, NULL ); - gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); + auto precision_val = prefs->getDouble("/tools/measure/precision", 2); + _precision_adj = Gtk::Adjustment::create(precision_val, 0, 10, 1, 0); + auto precision_item = Gtk::manage(new UI::Widget::SpinButtonToolItem("measure-precision", _("Precision:"), _precision_adj, 0, 0)); + precision_item->set_tooltip_text(_("Decimal precision of measure")); + precision_item->set_focus_widget(Glib::wrap(GTK_WIDGET(desktop->canvas))); + _precision_adj->signal_value_changed().connect(sigc::mem_fun(*this, &MeasureToolbar::precision_value_changed)); + add(*precision_item); } - /* units menu */ + /* Scale */ { - InkSelectOneAction* act = holder->_tracker->createAction( "MeasureUnitsAction", _("Units:"), _("The units to be used for the measurements") ); - act->signal_changed_after().connect(sigc::mem_fun(*holder, &MeasureToolbar::unit_changed)); - gtk_action_group_add_action( mainActions, act->gobj() ); + auto scale_val = prefs->getDouble("/tools/measure/scale", 100.0); + _scale_adj = Gtk::Adjustment::create(scale_val, 0.0, 90000.0, 1.0, 4.0); + auto scale_item = Gtk::manage(new UI::Widget::SpinButtonToolItem("measure-scale", _("Scale %:"), _scale_adj, 0, 3)); + scale_item->set_tooltip_text(_("Scale the results")); + scale_item->set_focus_widget(Glib::wrap(GTK_WIDGET(desktop->canvas))); + _scale_adj->signal_value_changed().connect(sigc::mem_fun(*this, &MeasureToolbar::scale_value_changed)); + add(*scale_item); } - /* Precision */ + /* units label */ { - eact = create_adjustment_action( "MeasurePrecisionAction", - _("Precision"), _("Precision:"), - _("Decimal precision of measure"), - "/tools/measure/precision", 2, - FALSE, nullptr, - 0, 10, 1, 0, - nullptr, nullptr, 0, - nullptr, 0 ,0); - ege_adjustment_action_set_focuswidget(eact, GTK_WIDGET(desktop->canvas)); - holder->_precision_adj = Glib::wrap(ege_adjustment_action_get_adjustment(eact)); - holder->_precision_adj->signal_value_changed().connect(sigc::mem_fun(*holder, &MeasureToolbar::precision_value_changed)); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact)); + auto unit_label = Gtk::manage(new UI::Widget::LabelToolItem(_("Units:"))); + unit_label->set_tooltip_text(_("The units to be used for the measurements")); + unit_label->set_use_markup(true); + add(*unit_label); } - /* Scale */ + /* units menu */ { - eact = create_adjustment_action( "MeasureScaleAction", - _("Scale %"), _("Scale %:"), - _("Scale the results"), - "/tools/measure/scale", 100.0, - FALSE, nullptr, - 0.0, 90000.0, 1.0, 4.0, - nullptr, nullptr, 0, - nullptr, 0 , 3); - ege_adjustment_action_set_focuswidget(eact, GTK_WIDGET(desktop->canvas)); - holder->_scale_adj = Glib::wrap(ege_adjustment_action_get_adjustment(eact)); - holder->_scale_adj->signal_value_changed().connect(sigc::mem_fun(*holder, &MeasureToolbar::scale_value_changed)); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); + auto act = _tracker->createAction( "MeasureUnitsAction", _("Units:"), _("The units to be used for the measurements") ); + act->signal_changed_after().connect(sigc::mem_fun(*this, &MeasureToolbar::unit_changed)); + auto ti = act->create_tool_item(); + add(*ti); } - /* Offset */ - { - eact = create_adjustment_action( "MeasureOffsetAction", - _("Offset"), _("Offset:"), - _("Mark dimension offset"), - "/tools/measure/offset", 5.0, - FALSE, nullptr, - 0.0, 90000.0, 1.0, 4.0, - nullptr, nullptr, 0, - nullptr, 0 , 2); - ege_adjustment_action_set_focuswidget(eact, GTK_WIDGET(desktop->canvas)); - holder->_offset_adj = Glib::wrap(ege_adjustment_action_get_adjustment(eact)); - holder->_offset_adj->signal_value_changed().connect(sigc::mem_fun(*holder, &MeasureToolbar::offset_value_changed)); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); - } + add(*Gtk::manage(new Gtk::SeparatorToolItem())); /* measure only selected */ { - InkToggleAction* act = ink_toggle_action_new( "MeasureOnlySelected", - _("Measure only selected"), - _("Measure only selected"), - INKSCAPE_ICON("snap-bounding-box-center"), - secondarySize ); - gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/only_selected", false) ); - g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_only_selected), desktop) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _only_selected_item = add_toggle_button(_("Measure only selected"), + _("Measure only selected")); + _only_selected_item->set_icon_name(INKSCAPE_ICON("snap-bounding-box-center")); + _only_selected_item->set_active(prefs->getBool("/tools/measure/only_selected", false)); + _only_selected_item->signal_toggled().connect(sigc::mem_fun(*this, &MeasureToolbar::toggle_only_selected)); } /* ignore_1st_and_last */ { - InkToggleAction* act = ink_toggle_action_new( "MeasureIgnore1stAndLast", - _("Ignore first and last"), - _("Ignore first and last"), - 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(sp_toggle_ignore_1st_and_last), desktop) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _ignore_1st_and_last_item = add_toggle_button(_("Ignore first and last"), + _("Ignore first and last")); + _ignore_1st_and_last_item->set_icon_name(INKSCAPE_ICON("draw-geometry-line-segment")); + _ignore_1st_and_last_item->set_active(prefs->getBool("/tools/measure/ignore_1st_and_last", true)); + _ignore_1st_and_last_item->signal_toggled().connect(sigc::mem_fun(*this, &MeasureToolbar::toggle_ignore_1st_and_last)); } - /* only visible */ + + /* measure in betweens */ { - InkToggleAction* act = ink_toggle_action_new( "MeasureShowHidden", - _("Show hidden intersections"), - _("Show hidden intersections"), - INKSCAPE_ICON("object-hidden"), - secondarySize ); - gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/measure/show_hidden", true) ); - g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_show_hidden), desktop) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); - } - /* measure imbetweens */ + _inbetween_item = add_toggle_button(_("Show measures between items"), + _("Show measures between items")); + _inbetween_item->set_icon_name(INKSCAPE_ICON("distribute-randomize")); + _inbetween_item->set_active(prefs->getBool("/tools/measure/show_in_between", true)); + _inbetween_item->signal_toggled().connect(sigc::mem_fun(*this, &MeasureToolbar::toggle_show_in_between)); + } + + /* only visible */ { - InkToggleAction* act = ink_toggle_action_new( "MeasureInBettween", - _("Show measures between items"), - _("Show measures between items"), - 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(sp_toggle_show_in_between), desktop) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _show_hidden_item = add_toggle_button(_("Show hidden intersections"), + _("Show hidden intersections")); + _show_hidden_item->set_icon_name(INKSCAPE_ICON("object-hidden")); + _show_hidden_item->set_active(prefs->getBool("/tools/measure/show_hidden", true)); + _show_hidden_item->signal_toggled().connect(sigc::mem_fun(*this, &MeasureToolbar::toggle_show_hidden)) ; } + /* measure only current layer */ { - InkToggleAction* act = ink_toggle_action_new( "MeasureAllLayers", - _("Measure all layers"), - _("Measure all layers"), - 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(sp_toggle_all_layers), desktop) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _all_layers_item = add_toggle_button(_("Measure all layers"), + _("Measure all layers")); + _all_layers_item->set_icon_name(INKSCAPE_ICON("dialog-layers")); + _all_layers_item->set_active(prefs->getBool("/tools/measure/all_layers", true)); + _all_layers_item->signal_toggled().connect(sigc::mem_fun(*this, &MeasureToolbar::toggle_all_layers)); } + + add(* Gtk::manage(new Gtk::SeparatorToolItem())); + /* toggle 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) ); + _reverse_item = Gtk::manage(new Gtk::ToolButton(_("Reverse measure"))); + _reverse_item->set_tooltip_text(_("Reverse measure")); + _reverse_item->set_icon_name(INKSCAPE_ICON("draw-geometry-mirror")); + _reverse_item->signal_clicked().connect(sigc::mem_fun(*this, &MeasureToolbar::reverse_knots)); + add(*_reverse_item); } + /* phantom measure */ { - InkAction* act = ink_action_new( "MeasureToPhantom", - _("Phantom measure"), - _("Phantom measure"), - INKSCAPE_ICON("selection-make-bitmap-copy"), - secondarySize ); - g_signal_connect_after( G_OBJECT(act), "activate", G_CALLBACK(sp_to_phantom), 0 ); - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _to_phantom_item = Gtk::manage(new Gtk::ToolButton(_("Phantom measure"))); + _to_phantom_item->set_tooltip_text(_("Phantom measure")); + _to_phantom_item->set_icon_name(INKSCAPE_ICON("selection-make-bitmap-copy")); + _to_phantom_item->signal_clicked().connect(sigc::mem_fun(*this, &MeasureToolbar::to_phantom)); + add(*_to_phantom_item); } + /* to guides */ { - InkAction* act = ink_action_new( "MeasureToGuides", - _("To guides"), - _("To guides"), - INKSCAPE_ICON("guides"), - secondarySize ); - g_signal_connect_after( G_OBJECT(act), "activate", G_CALLBACK(sp_to_guides), 0 ); - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _to_guides_item = Gtk::manage(new Gtk::ToolButton(_("To guides"))); + _to_guides_item->set_tooltip_text(_("To guides")); + _to_guides_item->set_icon_name(INKSCAPE_ICON("guides")); + _to_guides_item->signal_clicked().connect(sigc::mem_fun(*this, &MeasureToolbar::to_guides)); + add(*_to_guides_item); + } + + /* to item */ + { + _to_item_item = Gtk::manage(new Gtk::ToolButton(_("Convert to item"))); + _to_item_item->set_tooltip_text(_("Convert to item")); + _to_item_item->set_icon_name(INKSCAPE_ICON("path-reverse")); + _to_item_item->signal_clicked().connect(sigc::mem_fun(*this, &MeasureToolbar::to_item)); + add(*_to_item_item); } + /* to mark dimensions */ { - InkAction* act = ink_action_new( "MeasureMarkDimension", - _("Mark Dimension"), - _("Mark Dimension"), - INKSCAPE_ICON("tool-pointer"), - secondarySize ); - g_signal_connect_after( G_OBJECT(act), "activate", G_CALLBACK(sp_to_mark_dimension), 0 ); - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + _mark_dimension_item = Gtk::manage(new Gtk::ToolButton(_("Mark Dimension"))); + _mark_dimension_item->set_tooltip_text(_("Mark Dimension")); + _mark_dimension_item->set_icon_name(INKSCAPE_ICON("tool-pointer")); + _mark_dimension_item->signal_clicked().connect(sigc::mem_fun(*this, &MeasureToolbar::to_mark_dimension)); + add(*_mark_dimension_item); } - /* to item */ + + /* Offset */ { - InkAction* act = ink_action_new( "MeasureToItem", - _("Convert to item"), - _("Convert to item"), - INKSCAPE_ICON("path-reverse"), - secondarySize ); - g_signal_connect_after( G_OBJECT(act), "activate", G_CALLBACK(sp_to_item), 0 ); - gtk_action_group_add_action( mainActions, GTK_ACTION(act) ); + auto offset_val = prefs->getDouble("/tools/measure/offset", 5.0); + _offset_adj = Gtk::Adjustment::create(offset_val, 0.0, 90000.0, 1.0, 4.0); + auto offset_item = Gtk::manage(new UI::Widget::SpinButtonToolItem("measure-offset", _("Offset:"), _offset_adj, 0, 2)); + offset_item->set_tooltip_text(_("Mark dimension offset")); + offset_item->set_focus_widget(Glib::wrap(GTK_WIDGET(desktop->canvas))); + _offset_adj->signal_value_changed().connect(sigc::mem_fun(*this, &MeasureToolbar::offset_value_changed)); + add(*offset_item); } - return GTK_WIDGET(holder->gobj()); + show_all(); +} + +GtkWidget * +MeasureToolbar::create(SPDesktop * desktop) +{ + auto toolbar = new MeasureToolbar(desktop); + return GTK_WIDGET(toolbar->gobj()); } // MeasureToolbar::prep() void @@ -477,6 +306,136 @@ MeasureToolbar::offset_value_changed() } } +void +MeasureToolbar::toggle_only_selected() +{ + auto prefs = Inkscape::Preferences::get(); + bool active = _only_selected_item->get_active(); + prefs->setBool("/tools/measure/only_selected", active); + if ( active ) { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Measures only selected.")); + } else { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Measure all.")); + } + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->showCanvasItems(); + } +} + +void +MeasureToolbar::toggle_ignore_1st_and_last() +{ + auto prefs = Inkscape::Preferences::get(); + bool active = _ignore_1st_and_last_item->get_active(); + prefs->setBool("/tools/measure/ignore_1st_and_last", active); + if ( active ) { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Start and end measures inactive.")); + } else { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Start and end measures active.")); + } + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->showCanvasItems(); + } +} + +void +MeasureToolbar::toggle_show_in_between() +{ + auto prefs = Inkscape::Preferences::get(); + bool active = _inbetween_item->get_active(); + prefs->setBool("/tools/measure/show_in_between", active); + if ( active ) { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Compute all elements.")); + } else { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Compute max length.")); + } + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->showCanvasItems(); + } +} + +void +MeasureToolbar::toggle_show_hidden() +{ + auto prefs = Inkscape::Preferences::get(); + bool active = _show_hidden_item->get_active(); + prefs->setBool("/tools/measure/show_hidden", active); + if ( active ) { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Show all crossings.")); + } else { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Show visible crossings.")); + } + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->showCanvasItems(); + } +} + +void +MeasureToolbar::toggle_all_layers() +{ + auto prefs = Inkscape::Preferences::get(); + bool active = _all_layers_item->get_active(); + prefs->setBool("/tools/measure/all_layers", active); + if ( active ) { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Use all layers in the measure.")); + } else { + _desktop->messageStack()->flash(Inkscape::INFORMATION_MESSAGE, _("Use current layer in the measure.")); + } + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->showCanvasItems(); + } +} + +void +MeasureToolbar::reverse_knots() +{ + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->reverseKnots(); + } +} + +void +MeasureToolbar::to_phantom() +{ + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->toPhantom(); + } +} + +void +MeasureToolbar::to_guides() +{ + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->toGuides(); + } +} + +void +MeasureToolbar::to_item() +{ + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->toItem(); + } +} + +void +MeasureToolbar::to_mark_dimension() +{ + MeasureTool *mt = get_measure_tool(); + if (mt) { + mt->toMarkDimension(); + } +} + } } } |
