summaryrefslogtreecommitdiffstats
path: root/src/widgets/spray-toolbar.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-10-27 19:10:06 +0000
committerjabiertxof <jabier.arraiza@marker.es>2015-10-27 19:10:06 +0000
commitb0de24888aea4410596e237f947a201b349b0097 (patch)
tree9b0e11063b9d255d44deaccdcb8897ea06b272a1 /src/widgets/spray-toolbar.cpp
parentFixed some typos pointed by Mc (diff)
downloadinkscape-b0de24888aea4410596e237f947a201b349b0097.tar.gz
inkscape-b0de24888aea4410596e237f947a201b349b0097.zip
Now the picker work with alphas and also in no overlap mode
Offset dropdown disabled if no overlap Changed offset to percent based (bzr r14422.1.18)
Diffstat (limited to 'src/widgets/spray-toolbar.cpp')
-rw-r--r--src/widgets/spray-toolbar.cpp70
1 files changed, 37 insertions, 33 deletions
diff --git a/src/widgets/spray-toolbar.cpp b/src/widgets/spray-toolbar.cpp
index 57b582903..9f7a7cb1d 100644
--- a/src/widgets/spray-toolbar.cpp
+++ b/src/widgets/spray-toolbar.cpp
@@ -54,6 +54,17 @@ using Inkscape::UI::PrefPusher;
//## Spray ##
//########################
+static void sp_stb_sensitivize( GObject *tbl )
+{
+ GtkAction* offset = GTK_ACTION( g_object_get_data(tbl, "offset") );
+ GtkToggleAction *overlap = GTK_TOGGLE_ACTION( g_object_get_data(tbl, "overlap") );
+ if (gtk_toggle_action_get_active(overlap)) {
+ gtk_action_set_sensitive( offset, TRUE );
+ } else {
+ gtk_action_set_sensitive( offset, FALSE );
+ }
+}
+
static void sp_spray_width_value_changed( GtkAdjustment *adj, GObject * /*tbl*/ )
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -110,11 +121,14 @@ static void sp_spray_offset_value_changed( GtkAdjustment *adj, GObject * /*tbl*/
gtk_adjustment_get_value(adj));
}
-static void sp_toggle_not_overlap( GtkToggleAction* act, gpointer data )
+static void sp_toggle_not_overlap( GtkToggleAction* act, gpointer data)
{
+
+ GObject *tbl = G_OBJECT(data);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gboolean active = gtk_toggle_action_get_active(act);
prefs->setBool("/tools/spray/overlap", active);
+ sp_stb_sensitivize(tbl);
}
static void sp_toggle_picker( GtkToggleAction* act, gpointer data )
@@ -128,9 +142,6 @@ void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj
{
Inkscape::IconSize secondarySize = ToolboxFactory::prefToSize("/toolbox/secondary", 1);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- bool overlap = prefs->getBool("/tools/spray/overlap", false);
-
{
/* Width */
gchar const* labels[] = {_("(narrow spray)"), 0, 0, 0, _("(default)"), 0, 0, 0, 0, _("(broad spray)")};
@@ -290,18 +301,6 @@ void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj
g_object_set_data( holder, "spray_scale", eact );
}
- /* Overlap */
- {
- InkToggleAction* act = ink_toggle_action_new( "SprayNotOverlapAction",
- _("Prevent overlapping objects"),
- _("Prevent overlapping objects"),
- INKSCAPE_ICON("distribute-randomize"),
- secondarySize );
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/spray/overlap", false) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_not_overlap), desktop) ;
- gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
- }
-
/* Picker */
{
InkToggleAction* act = ink_toggle_action_new( "SprayPickColorAction",
@@ -310,35 +309,40 @@ void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj
INKSCAPE_ICON("color-picker"),
secondarySize );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/spray/picker", false) );
+ g_object_set_data( holder, "picker", act );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_picker), desktop) ;
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
+ }
- //if ( offset ) {
- // gtk_action_set_sensitive( GTK_ACTION(eact), TRUE );
- //} else {
- // gtk_action_set_sensitive( GTK_ACTION(eact), FALSE );
- //}
+ /* Overlap */
+ {
+ InkToggleAction* act = ink_toggle_action_new( "SprayNotOverlapAction",
+ _("Prevent overlapping objects"),
+ _("Prevent overlapping objects"),
+ INKSCAPE_ICON("distribute-randomize"),
+ secondarySize );
+ gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/spray/overlap", false) );
+ g_object_set_data( holder, "overlap", act );
+ //g_object_set_data (context_object, "holder", holder);
+ //g_object_set_data (context_object, "desktop", desktop);
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_toggle_not_overlap), holder) ;
+ gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
}
/* Offset */
{
EgeAdjustmentAction *eact = create_adjustment_action( "SprayToolOffsetAction",
- _("Offset"), _("Offset:"),
- _("Increase to segregate objects more (value in px)"),
- "/tools/spray/offset", 0.0,
+ _("Offset precent"), _("Offset percent:"),
+ _("Increase to segregate objects more (value in percent)"),
+ "/tools/spray/offset", 100,
GTK_WIDGET(desktop->canvas), holder, FALSE, NULL,
- -1000.0, 1000.0, 1.0, 4.0,
+ 0, 10000, 1, 4,
0, 0, 0,
- sp_spray_offset_value_changed, NULL, 0 , 2);
+ sp_spray_offset_value_changed, NULL, 0 , 0);
+ g_object_set_data( holder, "offset", eact );
gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
-
- //if ( offset ) {
- // gtk_action_set_sensitive( GTK_ACTION(eact), TRUE );
- //} else {
- // gtk_action_set_sensitive( GTK_ACTION(eact), FALSE );
- //}
}
-
+ sp_stb_sensitivize(holder);
}