Code

added variable tremor
[inkscape.git] / src / widgets / toolbox.cpp
index 0e3bf206a8575270d1ff748ec85f521e607f92a9..6a3a331835dd314f7b7d9958001bf0ad4009fd6a 100644 (file)
@@ -756,7 +756,9 @@ sp_tb_spinbutton(
     gtk_tooltips_set_tip(tt, sb, tooltip, NULL);
     if (altx)
         gtk_object_set_data(GTK_OBJECT(sb), altx_mark, sb);
-    gtk_widget_set_size_request(sb, AUX_SPINBUTTON_WIDTH_SMALL, AUX_SPINBUTTON_HEIGHT);
+    gtk_widget_set_size_request(sb, 
+                                (upper <= 1.0 || digits == 0)? AUX_SPINBUTTON_WIDTH_SMALL - 10: AUX_SPINBUTTON_WIDTH_SMALL,
+                                AUX_SPINBUTTON_HEIGHT);
     gtk_widget_show(sb);
     gtk_signal_connect(GTK_OBJECT(sb), "focus-in-event", GTK_SIGNAL_FUNC(spinbutton_focus_in), tbl);
     gtk_signal_connect(GTK_OBJECT(sb), "key-press-event", GTK_SIGNAL_FUNC(spinbutton_keypress), tbl);
@@ -1869,6 +1871,13 @@ sp_ddc_flatness_value_changed(GtkAdjustment *adj, GtkWidget *tbl)
     spinbutton_defocus(GTK_OBJECT(tbl));
 }
 
+static void
+sp_ddc_tremor_value_changed(GtkAdjustment *adj, GtkWidget *tbl)
+{
+    prefs_set_double_attribute("tools.calligraphic", "tremor", adj->value);
+    spinbutton_defocus(GTK_OBJECT(tbl));
+}
+
 static void
 sp_ddc_pressure_state_changed(GtkWidget *button, gpointer data)
 {
@@ -1895,6 +1904,7 @@ static void sp_ddc_defaults(GtkWidget *, GtkWidget *tbl)
         {"angle", 30.0},
         {"width", 0.15},
         {"thinning", 0.1},
+        {"tremor", 0.0},
         {"flatness", 0.9}
     };
 
@@ -1966,6 +1976,15 @@ sp_calligraphy_toolbox_new(SPDesktop *desktop)
     //  interval
     gtk_box_pack_start(GTK_BOX(tbl), gtk_hbox_new(FALSE, 0), FALSE, FALSE, AUX_BETWEEN_BUTTON_GROUPS);
 
+    /* Tremor */
+    {
+        GtkWidget *hb = sp_tb_spinbutton(_("Tremor:"), _("How uneven or trembling is the pen stroke"),
+                                         "tools.calligraphic", "tremor", 0.0,
+                                         NULL, tbl, FALSE, NULL,
+                                         0.0, 1.0, 0.01, 0.1,
+                                         sp_ddc_tremor_value_changed, 0.01, 2);
+        gtk_box_pack_start(GTK_BOX(tbl), hb, FALSE, FALSE, AUX_SPACING);
+    }
     /* Mass */
     {
         GtkWidget *hb = sp_tb_spinbutton(_("Mass:"), _("How much inertia affects the movement of the pen"),
@@ -3012,8 +3031,6 @@ static void connector_spacing_changed(GtkAdjustment *adj, GtkWidget *tbl)
     // in turn, prevent callbacks from responding
     g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(TRUE));
     
-    double old_spacing = desktop->namedview->connector_spacing;
-        
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(desktop->namedview);
     
     sp_repr_set_css_double(repr, "inkscape:connector-spacing", adj->value);
@@ -3022,7 +3039,8 @@ static void connector_spacing_changed(GtkAdjustment *adj, GtkWidget *tbl)
     GSList *items = get_avoided_items(NULL, desktop->currentRoot(), desktop);
     for ( GSList const *iter = items ; iter != NULL ; iter = iter->next ) {
         SPItem *item = reinterpret_cast<SPItem *>(iter->data);
-        avoid_item_move(&NR::identity(), item);
+        NR::Matrix m = NR::identity();
+        avoid_item_move(&m, item);
     }
 
     if (items) {