47
48
//########################
49
50
static void gr_toggle_type (GtkWidget *button, gpointer data) {
51
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
50
52
GtkWidget *linear = (GtkWidget *) g_object_get_data (G_OBJECT(data), "linear");
51
53
GtkWidget *radial = (GtkWidget *) g_object_get_data (G_OBJECT(data), "radial");
52
54
if (button == linear && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (linear))) {
53
prefs_set_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_LINEAR);
55
prefs->setInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_LINEAR);
54
56
if (radial) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radial), FALSE);
55
57
} else if (button == radial && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radial))) {
56
prefs_set_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_RADIAL);
58
prefs->setInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_RADIAL);
57
59
if (linear) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linear), FALSE);
61
63
static void gr_toggle_fillstroke (GtkWidget *button, gpointer data) {
64
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
62
65
GtkWidget *fill = (GtkWidget *) g_object_get_data (G_OBJECT(data), "fill");
63
66
GtkWidget *stroke = (GtkWidget *) g_object_get_data (G_OBJECT(data), "stroke");
64
67
if (button == fill && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fill))) {
65
prefs_set_int_attribute ("tools.gradient", "newfillorstroke", 1);
68
prefs->setBool("/tools/gradient/newfillorstroke", true);
66
69
if (stroke) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (stroke), FALSE);
67
70
} else if (button == stroke && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (stroke))) {
68
prefs_set_int_attribute ("tools.gradient", "newfillorstroke", 0);
71
prefs->setBool("/tools/gradient/newfillorstroke", false);
69
72
if (fill) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fill), FALSE);
114
117
gr_apply_gradient (Inkscape::Selection *selection, GrDrag *drag, SPGradient *gr)
116
SPGradientType new_type = (SPGradientType) prefs_get_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_LINEAR);
117
guint new_fill = prefs_get_int_attribute ("tools.gradient", "newfillorstroke", 1);
119
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
120
SPGradientType new_type = (SPGradientType) prefs->getInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_LINEAR);
121
guint new_fill = prefs->getBool("/tools/gradient/newfillorstroke", true);
120
124
// GRADIENTFIXME: make this work for multiple selected draggers.
384
gr_tb_selection_modified (Inkscape::Selection *selection, guint flags, gpointer data)
388
gr_tb_selection_modified (Inkscape::Selection *selection, guint /*flags*/, gpointer data)
386
390
gr_tb_selection_changed (selection, data);
390
gr_drag_selection_changed (gpointer dragger, gpointer data)
394
gr_drag_selection_changed (gpointer /*dragger*/, gpointer data)
392
396
gr_tb_selection_changed (NULL, data);
396
gr_defs_release (SPObject *defs, GtkWidget *widget)
400
gr_defs_release (SPObject */*defs*/, GtkWidget *widget)
398
402
gr_tb_selection_changed (NULL, (gpointer) widget);
402
gr_defs_modified (SPObject *defs, guint flags, GtkWidget *widget)
406
gr_defs_modified (SPObject */*defs*/, guint /*flags*/, GtkWidget *widget)
404
408
gr_tb_selection_changed (NULL, (gpointer) widget);
407
static void gr_disconnect_sigc (GObject *obj, sigc::connection *connection) {
411
static void gr_disconnect_sigc (GObject */*obj*/, sigc::connection *connection) {
408
412
connection->disconnect();
409
413
delete connection;
413
gr_edit (GtkWidget *button, GtkWidget *widget)
417
gr_edit (GtkWidget */*button*/, GtkWidget *widget)
415
419
GtkWidget *om = (GtkWidget *) g_object_get_data (G_OBJECT(widget), "menu");
513
517
sp_gradient_toolbox_new(SPDesktop *desktop)
515
GtkWidget *tbl = gtk_hbox_new(FALSE, 0);
519
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
520
GtkWidget *tbl = gtk_toolbar_new();
517
522
gtk_object_set_data(GTK_OBJECT(tbl), "dtw", desktop->canvas);
518
523
gtk_object_set_data(GTK_OBJECT(tbl), "desktop", desktop);
522
527
sp_toolbox_add_label(tbl, _("<b>New:</b>"));
524
aux_toolbox_space(tbl, AUX_SPACING);
529
// TODO replace aux_toolbox_space(tbl, AUX_SPACING);
527
532
GtkWidget *cvbox = gtk_vbox_new (FALSE, 0);
531
536
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
532
537
SP_BUTTON_TYPE_TOGGLE,
539
INKSCAPE_ICON_PAINT_GRADIENT_LINEAR,
535
540
_("Create linear gradient"),
537
542
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_type), tbl);
538
543
g_object_set_data(G_OBJECT(tbl), "linear", button);
539
544
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
540
prefs_get_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_LINEAR) == SP_GRADIENT_TYPE_LINEAR);
545
prefs->getInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_LINEAR) == SP_GRADIENT_TYPE_LINEAR);
541
546
gtk_box_pack_start(GTK_BOX(cbox), button, FALSE, FALSE, 0);
545
550
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
546
551
SP_BUTTON_TYPE_TOGGLE,
553
INKSCAPE_ICON_PAINT_GRADIENT_RADIAL,
549
554
_("Create radial (elliptic or circular) gradient"),
551
556
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_type), tbl);
552
557
g_object_set_data(G_OBJECT(tbl), "radial", button);
553
558
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
554
prefs_get_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_LINEAR) == SP_GRADIENT_TYPE_RADIAL);
559
prefs->getInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_LINEAR) == SP_GRADIENT_TYPE_RADIAL);
555
560
gtk_box_pack_start(GTK_BOX(cbox), button, FALSE, FALSE, 0);
558
563
gtk_box_pack_start(GTK_BOX(cvbox), cbox, TRUE, FALSE, 0);
559
gtk_box_pack_start(GTK_BOX(tbl), cvbox, FALSE, FALSE, 0);
564
gtk_toolbar_append_widget( GTK_TOOLBAR(tbl), cvbox, "", "" );
562
aux_toolbox_space(tbl, AUX_SPACING);
567
// TODO replace aux_toolbox_space(tbl, AUX_SPACING);
564
569
sp_toolbox_add_label(tbl, _("on"), false);
566
aux_toolbox_space(tbl, AUX_SPACING);
571
// TODO replace aux_toolbox_space(tbl, AUX_SPACING);
569
574
GtkWidget *cvbox = gtk_vbox_new (FALSE, 0);
573
578
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
574
579
SP_BUTTON_TYPE_TOGGLE,
581
INKSCAPE_ICON_OBJECT_FILL,
577
582
_("Create gradient in the fill"),
579
584
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_fillstroke), tbl);
580
585
g_object_set_data(G_OBJECT(tbl), "fill", button);
581
586
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
582
prefs_get_int_attribute ("tools.gradient", "newfillorstroke", 1) == 1);
587
prefs->getBool("/tools/gradient/newfillorstroke", true));
583
588
gtk_box_pack_start(GTK_BOX(cbox), button, FALSE, FALSE, 0);
587
592
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
588
593
SP_BUTTON_TYPE_TOGGLE,
595
INKSCAPE_ICON_OBJECT_STROKE,
591
596
_("Create gradient in the stroke"),
593
598
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_fillstroke), tbl);
594
599
g_object_set_data(G_OBJECT(tbl), "stroke", button);
595
600
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
596
prefs_get_int_attribute ("tools.gradient", "newfillorstroke", 1) == 0);
601
!prefs->getBool("/tools/gradient/newfillorstroke", true));
597
602
gtk_box_pack_start(GTK_BOX(cbox), button, FALSE, FALSE, 0);
600
605
gtk_box_pack_start(GTK_BOX(cvbox), cbox, TRUE, TRUE, 3);
601
gtk_box_pack_start(GTK_BOX(tbl), cvbox, FALSE, FALSE, 0);
606
gtk_toolbar_append_widget( GTK_TOOLBAR(tbl), cvbox, "", "" );
605
610
sp_toolbox_add_label(tbl, _("<b>Change:</b>"));
607
aux_toolbox_space(tbl, AUX_SPACING);
612
// TODO replace aux_toolbox_space(tbl, AUX_SPACING);
610
615
GtkWidget *vectors = gr_change_widget (desktop);
611
gtk_box_pack_start (GTK_BOX (tbl), vectors, FALSE, FALSE, 0);
616
gtk_toolbar_append_widget( GTK_TOOLBAR(tbl), vectors, "", "" );
614
619
gtk_widget_show_all(tbl);