diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2018-06-17 16:00:04 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2018-06-17 16:00:04 +0000 |
| commit | 039408dbad2877c3b75d08f66dddaff17fe3dcf3 (patch) | |
| tree | 5f6072daaa0f4a406b3b0e2f04f81f3c4140f51e /src/widgets/pencil-toolbar.cpp | |
| parent | Minor documentation changes. (diff) | |
| download | inkscape-039408dbad2877c3b75d08f66dddaff17fe3dcf3.tar.gz inkscape-039408dbad2877c3b75d08f66dddaff17fe3dcf3.zip | |
Move toolbars to ui/toolbar
Diffstat (limited to 'src/widgets/pencil-toolbar.cpp')
| -rw-r--r-- | src/widgets/pencil-toolbar.cpp | 640 |
1 files changed, 0 insertions, 640 deletions
diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp deleted file mode 100644 index d2939c720..000000000 --- a/src/widgets/pencil-toolbar.cpp +++ /dev/null @@ -1,640 +0,0 @@ -/** - * @file - * Pencil aux toolbar - */ -/* Authors: - * MenTaLguY <mental@rydia.net> - * Lauris Kaplinski <lauris@kaplinski.com> - * bulia byak <buliabyak@users.sf.net> - * Frank Felfe <innerspace@iname.com> - * John Cliff <simarilius@yahoo.com> - * David Turner <novalis@gnu.org> - * Josh Andler <scislac@scislac.com> - * Jon A. Cruz <jon@joncruz.org> - * Maximilian Albert <maximilian.albert@gmail.com> - * Tavmjong Bah <tavmjong@free.fr> - * Abhishek Sharma - * Kris De Gussem <Kris.DeGussem@gmail.com> - * - * Copyright (C) 2004 David Turner - * Copyright (C) 2003 MenTaLguY - * Copyright (C) 1999-2011 authors - * Copyright (C) 2001-2002 Ximian, Inc. - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <gtkmm.h> -#include <glibmm/i18n.h> - -#include "pencil-toolbar.h" - -#include "desktop.h" -#include "selection.h" -#include "toolbox.h" - -#include "ink-action.h" -#include "ink-radio-action.h" -#include "ink-toggle-action.h" - -#include "live_effects/lpe-bspline.h" -#include "live_effects/lpe-powerstroke.h" -#include "live_effects/lpe-simplify.h" -#include "live_effects/lpe-spiro.h" -#include "live_effects/lpeobject-reference.h" -#include "live_effects/lpeobject.h" - -#include "display/curve.h" - -#include "object/sp-shape.h" - -#include "ui/icon-names.h" -#include "ui/tools-switch.h" -#include "ui/tools/pen-tool.h" -#include "ui/uxmanager.h" -#include "ui/widget/ink-select-one-action.h" - -#include "widgets/ege-adjustment-action.h" -#include "widgets/spinbutton-events.h" - - -using Inkscape::UI::UXManager; -using Inkscape::UI::ToolboxFactory; -using Inkscape::UI::PrefPusher; - -//######################## -//## Pen/Pencil ## -//######################## -static void sp_flatten_spiro_bspline(GtkWidget * /*widget*/, GObject *obj); -/* This is used in generic functions below to share large portions of code between pen and pencil tool */ -static Glib::ustring const freehand_tool_name(GObject *dataKludge) -{ - SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data(dataKludge, "desktop")); - return ( tools_isactive(desktop, TOOLS_FREEHAND_PEN) - ? "/tools/freehand/pen" - : "/tools/freehand/pencil" ); -} - -static void freehand_mode_changed(GObject* tbl, int mode) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setInt(freehand_tool_name(tbl) + "/freehand-mode", mode); - - if (mode == 1 || mode == 2) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "flatten_spiro_bspline") ), true ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "flatten_spiro_bspline") ), false ); - } - if (mode == 2) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "flatten_simplify") ), false ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "simplify") ), false ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "flatten_simplify") ), true ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "simplify") ), true ); - } -} - -static void use_pencil_pressure(InkToggleAction* itact, GObject *dataKludge) { - bool pressure = gtk_toggle_action_get_active( GTK_TOGGLE_ACTION(itact) ); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setBool(freehand_tool_name(dataKludge) + "/pressure", pressure); - if (pressure) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "minpressure") ), true ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "maxpressure") ), true ); - InkSelectOneAction* act = - static_cast<InkSelectOneAction*>( g_object_get_data( dataKludge, "shape_action" ) ); - act->set_visible (false); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "minpressure") ), false ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "maxpressure") ), false ); - InkSelectOneAction* act = - static_cast<InkSelectOneAction*>( g_object_get_data( dataKludge, "shape_action" ) ); - act->set_visible (true); - } -} - -static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* holder, bool tool_is_pencil) -{ - /* Freehand mode toggle buttons */ - - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - guint freehandMode = prefs->getInt(( tool_is_pencil ? - "/tools/freehand/pencil/freehand-mode" : - "/tools/freehand/pen/freehand-mode" ), 0); - GtkIconSize secondarySize = ToolboxFactory::prefToSize("/toolbox/secondary", 1); - - InkSelectOneActionColumns columns; - - Glib::RefPtr<Gtk::ListStore> store = Gtk::ListStore::create(columns); - - Gtk::TreeModel::Row row; - - row = *(store->append()); - row[columns.col_label ] = _("Bezier"); - row[columns.col_tooltip ] = _("Create regular Bezier path"); - row[columns.col_icon ] = INKSCAPE_ICON("path-mode-bezier"); - row[columns.col_sensitive] = true; - - row = *(store->append()); - row[columns.col_label ] = _("Spiro"); - row[columns.col_tooltip ] = _("Create Spiro path"); - row[columns.col_icon ] = INKSCAPE_ICON("path-mode-spiro"); - row[columns.col_sensitive] = true; - - row = *(store->append()); - row[columns.col_label ] = _("BSpline"); - row[columns.col_tooltip ] = _("Create BSpline path"); - row[columns.col_icon ] = INKSCAPE_ICON("path-mode-bspline"); - row[columns.col_sensitive] = true; - - if (!tool_is_pencil) { - row = *(store->append()); - row[columns.col_label ] = _("Zigzag"); - row[columns.col_tooltip ] = _("Create a sequence of straight line segments"); - row[columns.col_icon ] = INKSCAPE_ICON("path-mode-polyline"); - row[columns.col_sensitive] = true; - - row = *(store->append()); - row[columns.col_label ] = _("Paraxial"); - row[columns.col_tooltip ] = _("Create a sequence of paraxial line segments"); - row[columns.col_icon ] = INKSCAPE_ICON("path-mode-polyline-paraxial"); - row[columns.col_sensitive] = true; - } - - InkSelectOneAction* act = - InkSelectOneAction::create( tool_is_pencil ? - "FreehandModeActionPencil" : - "FreehandModeActionPen", - _("Mode"), // Label - _("Mode of new lines drawn by this tool"), // Tooltip - "Not Used", // Icon - store ); // Tree store - act->use_radio( true ); - act->use_label( true ); - act->set_active( freehandMode ); - - gtk_action_group_add_action( mainActions, GTK_ACTION( act->gobj() )); - // g_object_set_data( dataKludge, "flat_action", act ); - - act->signal_changed().connect(sigc::bind<0>(sigc::ptr_fun(&freehand_mode_changed), holder)); - - /* LPE bspline spiro flatten */ - InkAction* inky = ink_action_new( tool_is_pencil ? "FlattenSpiroBsplinePencil" : - "FlattenSpiroBsplinePen", - _("LPE spiro or bspline flatten"), - _("LPE spiro or bspline flatten"), - INKSCAPE_ICON("flatten"), - GTK_ICON_SIZE_SMALL_TOOLBAR ); - g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_flatten_spiro_bspline), holder ); - gtk_action_group_add_action( mainActions, GTK_ACTION(inky) ); - g_object_set_data( holder, "flatten_spiro_bspline", inky ); - if (freehandMode == 1 || freehandMode == 2) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "flatten_spiro_bspline") ), true ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "flatten_spiro_bspline") ), false ); - } -} - -static void freehand_change_shape(GObject *dataKludge, int shape) { - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setInt(freehand_tool_name(dataKludge) + "/shape", shape); -} - -static void freehand_simplify_lpe(InkToggleAction* itact, GObject *dataKludge) { - bool simplify = gtk_toggle_action_get_active( GTK_TOGGLE_ACTION(itact) ); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setBool(freehand_tool_name(dataKludge) + "/simplify", simplify); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "flatten_simplify") ), simplify ); - if (simplify) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "flatten_simplify") ), true ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(dataKludge, "flatten_simplify") ), false ); - } -} - -static void freehand_add_advanced_shape_options(GtkActionGroup* mainActions, GObject* holder, bool tool_is_pencil) -{ - /*advanced shape options */ - - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - - std::vector<gchar*> freehand_shape_dropdown_items_list = { - const_cast<gchar *>(C_("Freehand shape", "None")), - _("Triangle in"), - _("Triangle out"), - _("Ellipse"), - _("From clipboard"), - _("Bend from clipboard"), - _("Last applied") - }; - - InkSelectOneActionColumns columns; - - Glib::RefPtr<Gtk::ListStore> store = Gtk::ListStore::create(columns); - - Gtk::TreeModel::Row row; - - for (auto item:freehand_shape_dropdown_items_list) { - - row = *(store->append()); - row[columns.col_label ] = item; - row[columns.col_tooltip ] = (""); - row[columns.col_icon ] = "NotUsed"; - row[columns.col_sensitive] = true; - } - - InkSelectOneAction* act = - InkSelectOneAction::create( tool_is_pencil ? - "SetPencilShapeAction" : - "SetPenShapeAction", // Name - _("Shape"), // Label - _("Shape of new paths drawn by this tool"), // Tooltip - "Not Used", // Icon - store ); // Tree store - - act->use_radio( false ); - act->use_icon( false ); - act->use_label( true ); - act->use_group_label( true ); - int shape = prefs->getInt( (tool_is_pencil ? - "/tools/freehand/pencil/shape" : - "/tools/freehand/pen/shape" ), 0); - act->set_active( shape ); - - gtk_action_group_add_action( mainActions, GTK_ACTION( act->gobj() )); - g_object_set_data( holder, "shape_action", act ); - - bool hide = prefs->getInt("/tools/freehand/pencil/freehand-mode", 0) == 3 || - (tool_is_pencil && prefs->getBool("/tools/freehand/pencil/pressure", false)); - act->set_visible( !hide ); - - act->signal_changed().connect(sigc::bind<0>(sigc::ptr_fun(&freehand_change_shape), holder)); -} - -void sp_pen_toolbox_prep(SPDesktop * /*desktop*/, GtkActionGroup* mainActions, GObject* holder) -{ - sp_add_freehand_mode_toggle(mainActions, holder, false); - freehand_add_advanced_shape_options(mainActions, holder, false); -} - - -static void sp_pencil_tb_defaults(GtkWidget * /*widget*/, GObject *obj) -{ - GtkWidget *tbl = GTK_WIDGET(obj); - - GtkAdjustment *adj; - - // fixme: make settable - gdouble tolerance = 4; - - adj = GTK_ADJUSTMENT(g_object_get_data(obj, "tolerance")); - gtk_adjustment_set_value(adj, tolerance); - -#if !GTK_CHECK_VERSION(3,18,0) - gtk_adjustment_value_changed(adj); -#endif - - spinbutton_defocus(tbl); -} - -static void sp_flatten_spiro_bspline(GtkWidget * /*widget*/, GObject *obj) -{ - SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data(obj, "desktop")); - auto selected = desktop->getSelection()->items(); - SPLPEItem* lpeitem = NULL; - for (auto it(selected.begin()); it != selected.end(); ++it){ - lpeitem = dynamic_cast<SPLPEItem*>(*it); - if (lpeitem && lpeitem->hasPathEffect()){ - PathEffectList lpelist = lpeitem->getEffectList(); - PathEffectList::iterator i; - for (i = lpelist.begin(); i != lpelist.end(); ++i) { - LivePathEffectObject *lpeobj = (*i)->lpeobject; - if (lpeobj) { - Inkscape::LivePathEffect::Effect *lpe = lpeobj->get_lpe(); - if (dynamic_cast<Inkscape::LivePathEffect::LPEBSpline *>(lpe) || - dynamic_cast<Inkscape::LivePathEffect::LPESpiro *>(lpe)) - { - SPShape * shape = dynamic_cast<SPShape *>(lpeitem); - if(shape){ - SPCurve * c = shape->getCurveForEdit(); - lpe->doEffect(c); - lpeitem->setCurrentPathEffect(*i); - if (lpelist.size() > 1){ - lpeitem->removeCurrentPathEffect(true); - shape->setCurveBeforeLPE(c); - } else { - lpeitem->removeCurrentPathEffect(false); - shape->setCurve(c, false); - } - break; - } - } - } - } - } - } - if (lpeitem) { - desktop->getSelection()->remove(lpeitem->getRepr()); - desktop->getSelection()->add(lpeitem->getRepr()); - sp_lpe_item_update_patheffect(lpeitem, false, false); - } -} - -static void sp_simplify_flatten(GtkWidget * /*widget*/, GObject *obj) -{ - SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data(obj, "desktop")); - auto selected = desktop->getSelection()->items(); - SPLPEItem* lpeitem = NULL; - for (auto it(selected.begin()); it != selected.end(); ++it){ - lpeitem = dynamic_cast<SPLPEItem*>(*it); - if (lpeitem && lpeitem->hasPathEffect()){ - PathEffectList lpelist = lpeitem->getEffectList(); - PathEffectList::iterator i; - for (i = lpelist.begin(); i != lpelist.end(); ++i) { - LivePathEffectObject *lpeobj = (*i)->lpeobject; - if (lpeobj) { - Inkscape::LivePathEffect::Effect *lpe = lpeobj->get_lpe(); - if (dynamic_cast<Inkscape::LivePathEffect::LPESimplify *>(lpe)) { - SPShape * shape = dynamic_cast<SPShape *>(lpeitem); - if(shape){ - SPCurve * c = shape->getCurveForEdit(); - lpe->doEffect(c); - lpeitem->setCurrentPathEffect(*i); - if (lpelist.size() > 1){ - lpeitem->removeCurrentPathEffect(true); - shape->setCurveBeforeLPE(c); - } else { - lpeitem->removeCurrentPathEffect(false); - shape->setCurve(c, false); - } - break; - } - } - } - } - } - } - if (lpeitem) { - desktop->getSelection()->remove(lpeitem->getRepr()); - desktop->getSelection()->add(lpeitem->getRepr()); - sp_lpe_item_update_patheffect(lpeitem, false, false); - } -} - -static void sp_minpressure_value_changed(GtkAdjustment *adj, GObject *tbl) -{ - // quit if run by the attr_changed listener - if (g_object_get_data( tbl, "freeze" )) { - return; - } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble( "/tools/freehand/pencil/minpressure", gtk_adjustment_get_value(adj)); -} - -static void sp_maxpressure_value_changed(GtkAdjustment *adj, GObject *tbl) -{ - // quit if run by the attr_changed listener - if (g_object_get_data( tbl, "freeze" )) { - return; - } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble( "/tools/freehand/pencil/maxpressure", gtk_adjustment_get_value(adj)); -} - -static void sp_pencil_tb_tolerance_value_changed(GtkAdjustment *adj, GObject *tbl) -{ - // quit if run by the attr_changed listener - if (g_object_get_data( tbl, "freeze" )) { - return; - } - // in turn, prevent listener from responding - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) ); - prefs->setDouble("/tools/freehand/pencil/tolerance", - gtk_adjustment_get_value(adj)); - g_object_set_data( tbl, "freeze", GINT_TO_POINTER(FALSE) ); - SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data(tbl, "desktop")); - auto selected = desktop->getSelection()->items(); - for (auto it(selected.begin()); it != selected.end(); ++it){ - SPLPEItem* lpeitem = dynamic_cast<SPLPEItem*>(*it); - if (lpeitem && lpeitem->hasPathEffect()){ - Inkscape::LivePathEffect::Effect* simplify = lpeitem->getPathEffectOfType(Inkscape::LivePathEffect::SIMPLIFY); - if(simplify){ - Inkscape::LivePathEffect::LPESimplify *lpe_simplify = dynamic_cast<Inkscape::LivePathEffect::LPESimplify*>(simplify->getLPEObj()->get_lpe()); - if (lpe_simplify) { - double tol = prefs->getDoubleLimited("/tools/freehand/pencil/tolerance", 10.0, 1.0, 100.0); - tol = tol/(100.0*(102.0-tol)); - std::ostringstream ss; - ss << tol; - Inkscape::LivePathEffect::Effect* powerstroke = lpeitem->getPathEffectOfType(Inkscape::LivePathEffect::POWERSTROKE); - bool simplified = false; - if(powerstroke){ - Inkscape::LivePathEffect::LPEPowerStroke *lpe_powerstroke = dynamic_cast<Inkscape::LivePathEffect::LPEPowerStroke*>(powerstroke->getLPEObj()->get_lpe()); - if(lpe_powerstroke){ - lpe_powerstroke->getRepr()->setAttribute("is_visible", "false"); - sp_lpe_item_update_patheffect(lpeitem, false, false); - SPShape *sp_shape = dynamic_cast<SPShape *>(lpeitem); - if (sp_shape) { - guint previous_curve_length = sp_shape->getCurve()->get_segment_count(); - lpe_simplify->getRepr()->setAttribute("threshold", ss.str()); - sp_lpe_item_update_patheffect(lpeitem, false, false); - simplified = true; - guint curve_length = sp_shape->getCurve()->get_segment_count(); - std::vector<Geom::Point> ts = lpe_powerstroke->offset_points.data(); - double factor = (double)curve_length/ (double)previous_curve_length; - for (size_t i = 0; i < ts.size(); i++) { - ts[i][Geom::X] = ts[i][Geom::X] * factor; - } - lpe_powerstroke->offset_points.param_setValue(ts); - } - lpe_powerstroke->getRepr()->setAttribute("is_visible", "true"); - sp_lpe_item_update_patheffect(lpeitem, false, false); - } - } - if(!simplified){ - lpe_simplify->getRepr()->setAttribute("threshold", ss.str()); - } - } - } - } - } -} - -/* -class PencilToleranceObserver : public Inkscape::Preferences::Observer { -public: - PencilToleranceObserver(Glib::ustring const &path, GObject *x) : Observer(path), _obj(x) - { - g_object_set_data(_obj, "prefobserver", this); - } - virtual ~PencilToleranceObserver() { - if (g_object_get_data(_obj, "prefobserver") == this) { - g_object_set_data(_obj, "prefobserver", NULL); - } - } - virtual void notify(Inkscape::Preferences::Entry const &val) { - GObject* tbl = _obj; - if (g_object_get_data( tbl, "freeze" )) { - return; - } - g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) ); - - GtkAdjustment * adj = GTK_ADJUSTMENT(g_object_get_data(tbl, "tolerance")); - - double v = val.getDouble(adj->value); - gtk_adjustment_set_value(adj, v); - g_object_set_data( tbl, "freeze", GINT_TO_POINTER(FALSE) ); - } -private: - GObject *_obj; -}; -*/ - -void sp_pencil_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder) -{ - sp_add_freehand_mode_toggle(mainActions, holder, true); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - EgeAdjustmentAction* eact = 0; - - - /* min pressure */ - { - eact = create_adjustment_action( "MinPressureAction", - _("Min pressure"), _("Min:"), _("Min percent of pressure"), - "/tools/freehand/pencil/minpressure", 0, - GTK_WIDGET(desktop->canvas), holder, FALSE, NULL, - 0, 100, 1, 0, - 0, 0, 0, - sp_minpressure_value_changed, NULL, 0 ,0); - - gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); - g_object_set_data( holder, "minpressure", eact ); - if (prefs->getInt("/tools/freehand/pencil/freehand-mode", 0) == 3) { - gtk_action_set_visible( GTK_ACTION(eact), true ); - } else { - gtk_action_set_visible( GTK_ACTION(eact), false ); - } - } - /* max pressure */ - { - eact = create_adjustment_action( "MaxPressureAction", - _("Max pressure"), _("Max:"), _("Max percent of pressure"), - "/tools/freehand/pencil/maxpressure", 100, - GTK_WIDGET(desktop->canvas), holder, FALSE, NULL, - 0, 100, 1, 0, - 0, 0, 0, - sp_maxpressure_value_changed, NULL, 0 ,0); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); - g_object_set_data( holder, "maxpressure", eact ); - if (prefs->getInt("/tools/freehand/pencil/freehand-mode", 0) == 3) { - gtk_action_set_visible( GTK_ACTION(eact), true ); - } else { - gtk_action_set_visible( GTK_ACTION(eact), false ); - } - } - /* Use pressure */ - { - InkToggleAction* itact = ink_toggle_action_new( "PencilPressureAction", - _("Use pressure input"), - _("Use pressure input"), - INKSCAPE_ICON("draw-use-pressure"), - GTK_ICON_SIZE_SMALL_TOOLBAR ); - bool pressure = prefs->getBool(freehand_tool_name(holder) + "/pressure", false); - gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(itact), pressure ); - g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(use_pencil_pressure), holder) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(itact) ); - if (pressure) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "minpressure") ), true ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "maxpressure") ), true ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "minpressure") ), false ); - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "maxpressure") ), false ); - } - } - /* Tolerance */ - { - gchar const* labels[] = {_("(many nodes, rough)"), _("(default)"), 0, 0, 0, 0, _("(few nodes, smooth)")}; - gdouble values[] = {1, 10, 20, 30, 50, 75, 100}; - eact = create_adjustment_action( "PencilToleranceAction", - _("Smoothing:"), _("Smoothing: "), - _("How much smoothing (simplifying) is applied to the line"), - "/tools/freehand/pencil/tolerance", - 3.0, - GTK_WIDGET(desktop->canvas), - holder, TRUE, "altx-pencil", - 1, 100.0, 0.5, 1.0, - labels, values, G_N_ELEMENTS(labels), - sp_pencil_tb_tolerance_value_changed, - NULL /*unit tracker*/, - 1, 2); - ege_adjustment_action_set_appearance( eact, TOOLBAR_SLIDER_HINT ); - gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); - } - - /* advanced shape options */ - freehand_add_advanced_shape_options(mainActions, holder, true); - - /* Reset */ - { - InkAction* inky = ink_action_new( "PencilResetAction", - _("Defaults"), - _("Reset pencil parameters to defaults (use Inkscape Preferences > Tools to change defaults)"), - INKSCAPE_ICON("edit-clear"), - GTK_ICON_SIZE_SMALL_TOOLBAR ); - g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_pencil_tb_defaults), holder ); - gtk_action_group_add_action( mainActions, GTK_ACTION(inky) ); - } - /* LPE simplify based tolerance */ - { - InkToggleAction* itact = ink_toggle_action_new( "PencilLpeSimplify", - _("LPE based interactive simplify"), - _("LPE based interactive simplify"), - INKSCAPE_ICON("interactive_simplify"), - GTK_ICON_SIZE_SMALL_TOOLBAR ); - gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(itact), prefs->getInt("/tools/freehand/pencil/simplify", 0) ); - g_object_set_data( holder, "simplify", itact ); - g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(freehand_simplify_lpe), holder) ; - gtk_action_group_add_action( mainActions, GTK_ACTION(itact) ); - guint freehandMode = prefs->getInt("/tools/freehand/pencil/freehand-mode", 0); - if (freehandMode == 2) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "simplify") ), false ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "simplify") ), true ); - } - } - /* LPE simplify flatten */ - { - InkAction* inky = ink_action_new( "PencilLpeSimplifyFlatten", - _("LPE simplify flatten"), - _("LPE simplify flatten"), - INKSCAPE_ICON("flatten"), - GTK_ICON_SIZE_SMALL_TOOLBAR ); - g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_simplify_flatten), holder ); - gtk_action_group_add_action( mainActions, GTK_ACTION(inky) ); - g_object_set_data( holder, "flatten_simplify", inky ); - guint freehandMode = prefs->getInt("/tools/freehand/pencil/freehand-mode", 0); - if (freehandMode == 2 || !prefs->getInt("/tools/freehand/pencil/simplify", 0)) { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "flatten_simplify") ), false ); - } else { - gtk_action_set_visible( GTK_ACTION( g_object_get_data(holder, "flatten_simplify") ), true ); - } - } - - g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder ); - -} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |
