summaryrefslogtreecommitdiffstats
path: root/src/widgets/pencil-toolbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/pencil-toolbar.cpp')
-rw-r--r--src/widgets/pencil-toolbar.cpp99
1 files changed, 57 insertions, 42 deletions
diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp
index f33a33ecd..d86203ff8 100644
--- a/src/widgets/pencil-toolbar.cpp
+++ b/src/widgets/pencil-toolbar.cpp
@@ -78,22 +78,6 @@ static void freehand_mode_changed(EgeSelectOneAction* act, GObject* tbl)
prefs->setInt(freehand_tool_name(tbl) + "/freehand-mode", mode);
SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data(tbl, "desktop"));
- // in pen tool we have more options than in pencil tool; if one of them was chosen, we do any
- // preparatory work here
- if (SP_IS_PEN_CONTEXT(desktop->event_context)) {
- Inkscape::UI::Tools::PenTool *pc = SP_PEN_CONTEXT(desktop->event_context);
- pc->setPolylineMode();
- } else {
- if (mode == 3) {
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "shape_action") ), false );
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "minpressure") ), true );
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "maxpressure") ), true );
- } else {
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "shape_action") ), true );
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "minpressure") ), false );
- gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "maxpressure") ), false );
- }
- }
if (mode == 1 || mode == 2) {
gtk_action_set_visible( GTK_ACTION( g_object_get_data(tbl, "flatten_spiro_bspline") ), true );
} else {
@@ -101,6 +85,19 @@ static void freehand_mode_changed(EgeSelectOneAction* act, GObject* tbl)
}
}
+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 );
+ } 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 );
+ }
+}
+
static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* holder, bool tool_is_pencil)
{
/* Freehand mode toggle buttons */
@@ -146,15 +143,7 @@ static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* ho
1, _("Create a sequence of paraxial line segments"),
2, INKSCAPE_ICON("path-mode-polyline-paraxial"),
-1 );
- } else {
- gtk_list_store_append( model, &iter );
- gtk_list_store_set( model, &iter,
- 0, _("PowerStroke"),
- 1, _("Create a variable with with power stroke"),
- 2, INKSCAPE_ICON("draw-use-pressure"),
- -1 );
- }
-
+ }
EgeSelectOneAction* act = ege_select_one_action_new(tool_is_pencil ?
"FreehandModeActionPencil" :
"FreehandModeActionPen",
@@ -171,20 +160,46 @@ static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* ho
ege_select_one_action_set_active( act, freehandMode);
g_signal_connect_after( G_OBJECT(act), "changed", G_CALLBACK(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 );
+ {
+ if (tool_is_pencil) {
+ /* Use pressure */
+ {
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ 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", true);
+ 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 );
+ }
+ }
+ }
+ }
+ {
+ /* 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 );
+ }
}
}
}
@@ -196,9 +211,9 @@ static void freehand_change_shape(EgeSelectOneAction* act, GObject *dataKludge)
}
static void freehand_simplify_lpe(InkToggleAction* itact, GObject *dataKludge) {
- gint simplify = gtk_toggle_action_get_active( GTK_TOGGLE_ACTION(itact) );
+ bool simplify = gtk_toggle_action_get_active( GTK_TOGGLE_ACTION(itact) );
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(freehand_tool_name(dataKludge) + "/simplify", simplify);
+ 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 );
@@ -556,7 +571,7 @@ void sp_pencil_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
_("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) );
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(itact), prefs->getBool("/tools/freehand/pencil/simplify", false) );
g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(freehand_simplify_lpe), holder) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(itact) );
}