Code

Disable the page selector when there's only one page
[inkscape.git] / src / widgets / gradient-vector.cpp
index 78ae4213d157a48fb55a7d511c855580d49f9f2c..f1c4e3500437665d8ccc1013367ee5997119fe61 100644 (file)
@@ -358,6 +358,7 @@ sp_gvs_gradient_activate (GtkMenuItem *mi, SPGradientVectorSelector *gvs)
        if (norm != gr) {
                /* We do extra undo push here */
                /* If handler has already done it, it is just NOP */
+               // FIXME: looks like this is never a valid undo step, consider removing this
            sp_document_done (SP_OBJECT_DOCUMENT (norm), SP_VERB_CONTEXT_GRADIENT,
                              /* TODO: annotate */ "gradient-vector.cpp:350");
        }
@@ -463,6 +464,9 @@ verify_grad(SPGradient *gradient)
                }
        }
 
+        Inkscape::XML::Document *xml_doc;
+        xml_doc = SP_OBJECT_REPR(gradient)->document();
+
        if (i < 1) {
                gchar c[64];
                sp_svg_write_color (c, 64, 0x00000000);
@@ -472,19 +476,19 @@ verify_grad(SPGradient *gradient)
 
                Inkscape::XML::Node *child;
 
-               child = sp_repr_new ("svg:stop");
+               child = xml_doc->createElement("svg:stop");
                sp_repr_set_css_double(child, "offset", 0.0);
                child->setAttribute("style", os.str().c_str());
                SP_OBJECT_REPR (gradient)->addChild(child, NULL);
 
-               child = sp_repr_new ("svg:stop");
+               child = xml_doc->createElement("svg:stop");
                sp_repr_set_css_double(child, "offset", 1.0);
                child->setAttribute("style", os.str().c_str());
                SP_OBJECT_REPR (gradient)->addChild(child, NULL);
        }
        if (i < 2) {
                sp_repr_set_css_double(SP_OBJECT_REPR(stop), "offset", 0.0);
-               Inkscape::XML::Node *child = SP_OBJECT_REPR(stop)->duplicate();
+               Inkscape::XML::Node *child = SP_OBJECT_REPR(stop)->duplicate(SP_OBJECT_REPR(gradient)->document());
                sp_repr_set_css_double(child, "offset", 1.0);
                SP_OBJECT_REPR(gradient)->addChild(child, SP_OBJECT_REPR (stop));
        }
@@ -655,7 +659,7 @@ offadjustmentChanged( GtkAdjustment *adjustment, GtkWidget *vb)
     sp_repr_set_css_double(SP_OBJECT_REPR(stop), "offset", stop->offset);
 
     sp_document_done (SP_OBJECT_DOCUMENT (stop), SP_VERB_CONTEXT_GRADIENT,
-                     /* TODO: annotate */ "gradient-vector.cpp:642");
+                                                       _("Change gradient stop offset"));
 
        blocked = FALSE;
 }
@@ -697,11 +701,11 @@ sp_grd_ed_add_stop (GtkWidget *widget,  GtkWidget *vb)
        }
 
        if (next != NULL) {
-               new_stop_repr = SP_OBJECT_REPR(stop)->duplicate();
+               new_stop_repr = SP_OBJECT_REPR(stop)->duplicate(SP_OBJECT_REPR(gradient)->document());
                SP_OBJECT_REPR(gradient)->addChild(new_stop_repr, SP_OBJECT_REPR(stop));
        } else {
                next = stop;
-               new_stop_repr = SP_OBJECT_REPR(sp_prev_stop(stop, gradient))->duplicate();
+               new_stop_repr = SP_OBJECT_REPR(sp_prev_stop(stop, gradient))->duplicate(SP_OBJECT_REPR(gradient)->document());
                SP_OBJECT_REPR(gradient)->addChild(new_stop_repr, SP_OBJECT_REPR(sp_prev_stop(stop, gradient)));
        }
 
@@ -719,6 +723,7 @@ sp_grd_ed_add_stop (GtkWidget *widget,  GtkWidget *vb)
        gdouble opacity = (gdouble) SP_RGBA32_A_F (cnew);
        os << "stop-color:" << c << ";stop-opacity:" << opacity <<";";
        SP_OBJECT_REPR (newstop)->setAttribute("style", os.str().c_str());
+    sp_repr_set_css_double( SP_OBJECT_REPR(newstop), "offset", (double)newstop->offset);
 
        sp_gradient_vector_widget_load_gradient (vb, gradient);
        Inkscape::GC::release(new_stop_repr);
@@ -728,7 +733,7 @@ sp_grd_ed_add_stop (GtkWidget *widget,  GtkWidget *vb)
        gtk_widget_set_sensitive (offslide, TRUE);
        gtk_widget_set_sensitive (GTK_WIDGET (offspin), TRUE);
        sp_document_done (SP_OBJECT_DOCUMENT (gradient), SP_VERB_CONTEXT_GRADIENT, 
-                         /* TODO: annotate */ "gradient-vector.cpp:715");
+                         _("Add gradient stop"));
 }
 
 static void
@@ -760,7 +765,7 @@ sp_grd_ed_del_stop (GtkWidget *widget,  GtkWidget *vb)
                sp_gradient_vector_widget_load_gradient (vb, gradient);
                update_stop_list(GTK_WIDGET(mnu), gradient, NULL);
                sp_document_done (SP_OBJECT_DOCUMENT (gradient), SP_VERB_CONTEXT_GRADIENT, 
-                                 /* TODO: annotate */ "gradient-vector.cpp:747");
+                                 _("Delete gradient stop"));
        }
 
 }
@@ -852,8 +857,8 @@ sp_gradient_vector_widget_new (SPGradient *gradient, SPStop *select_stop)
 
 
        /* Signals */
-       gtk_signal_connect (GTK_OBJECT (Offset_adj), "value_changed",
-                                                                                       GTK_SIGNAL_FUNC (offadjustmentChanged), vb);
+       gtk_signal_connect (GTK_OBJECT (Offset_adj), "value_changed", 
+                           GTK_SIGNAL_FUNC (offadjustmentChanged), vb);
 
        // gtk_signal_connect (GTK_OBJECT (slider), "changed",  GTK_SIGNAL_FUNC (offsliderChanged), vb);
        gtk_widget_show (hb);
@@ -1025,8 +1030,8 @@ sp_gradient_vector_widget_load_gradient (GtkWidget *widget, SPGradient *gradient
        // Once the user edits a gradient, it stops being auto-collectable
        if (SP_OBJECT_REPR(gradient)->attribute("inkscape:collect")) {
                SPDocument *document = SP_OBJECT_DOCUMENT (gradient);
-               gboolean saved = sp_document_get_undo_sensitive(document);
-               sp_document_set_undo_sensitive (document, FALSE);
+               bool saved = sp_document_get_undo_sensitive(document);
+               sp_document_set_undo_sensitive (document, false);
                SP_OBJECT_REPR(gradient)->setAttribute("inkscape:collect", NULL);
                sp_document_set_undo_sensitive (document, saved);
        }
@@ -1119,10 +1124,7 @@ static void sp_gradient_vector_color_dragged(SPColorSelector *csel, GtkObject *o
     csel->base->getColorAlpha(stop->specified_color, &stop->opacity);
     stop->currentColor = false;
 
-       blocked = FALSE;
-    SPColorPreview *cpv = (SPColorPreview *)g_object_get_data (G_OBJECT(gtk_menu_get_active (GTK_MENU(gtk_option_menu_get_menu (mnu)))), "preview");
-    sp_color_preview_set_rgba32(cpv, sp_stop_get_rgba32(stop));
-
+    blocked = FALSE;
 }
 
 static void
@@ -1168,7 +1170,21 @@ sp_gradient_vector_color_changed (SPColorSelector *csel, GtkObject *object)
                //SP_OBJECT_REPR (stop)->setAttribute("style", c);
 
        sp_document_done (SP_OBJECT_DOCUMENT (ngr), SP_VERB_CONTEXT_GRADIENT,
-                         /* TODO: annotate */ "gradient-vector.cpp:1124");
+                         _("Change gradient stop color"));
 
        blocked = FALSE;
+
+       SPColorPreview *cpv = (SPColorPreview *)g_object_get_data (G_OBJECT(gtk_menu_get_active (GTK_MENU(gtk_option_menu_get_menu (mnu)))), "preview");
+       sp_color_preview_set_rgba32(cpv, sp_stop_get_rgba32(stop));
 }
+
+/*
+  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:encoding=utf-8:textwidth=99 :