Code

fix range, make integer, remove unnecessary document_done, fix 1635388
[inkscape.git] / src / dialogs / rdf.cpp
index 4f86264c4e55cc4373bf4cba257a670489e6ece0..b123abe829336ec10f7bb53e46e50a8d66a15c6f 100644 (file)
@@ -5,8 +5,10 @@
  *
  * Authors:
  *   Kees Cook <kees@outflux.net>
+ *   Jon Phillips <jon@rejon.org>
  *
  * Copyright (C) 2004 Kees Cook <kees@outflux.net>
+ * Copyright (C) 2006 Jon Phillips <jon@rejon.org>
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  *
@@ -173,52 +175,52 @@ struct rdf_double_t rdf_license_freeart [] = {
 };
 
 struct rdf_license_t rdf_licenses [] = {
-    { _("CC Attribution"), 
-      "http://creativecommons.org/licenses/by/2.0/",
+    { N_("CC Attribution"), 
+      "http://creativecommons.org/licenses/by/3.0/",
       rdf_license_cc_a,
     },
 
-    { _("CC Attribution-ShareAlike"), 
-      "http://creativecommons.org/licenses/by-sa/2.0/",
+    { N_("CC Attribution-ShareAlike"), 
+      "http://creativecommons.org/licenses/by-sa/3.0/",
       rdf_license_cc_a_sa,
     },
 
-    { _("CC Attribution-NoDerivs"), 
-      "http://creativecommons.org/licenses/by-nd/2.0/",
+    { N_("CC Attribution-NoDerivs"), 
+      "http://creativecommons.org/licenses/by-nd/3.0/",
       rdf_license_cc_a_nd,
     },
 
-    { _("CC Attribution-NonCommercial"), 
-      "http://creativecommons.org/licenses/by-nc/2.0/",
+    { N_("CC Attribution-NonCommercial"), 
+      "http://creativecommons.org/licenses/by-nc/3.0/",
       rdf_license_cc_a_nc,
     },
 
-    { _("CC Attribution-NonCommercial-ShareAlike"), 
-      "http://creativecommons.org/licenses/by-nc-sa/2.0/",
+    { N_("CC Attribution-NonCommercial-ShareAlike"), 
+      "http://creativecommons.org/licenses/by-nc-sa/3.0/",
       rdf_license_cc_a_nc_sa,
     },
 
-    { _("CC Attribution-NonCommercial-NoDerivs"), 
-      "http://creativecommons.org/licenses/by-nc-nd/2.0/",
+    { N_("CC Attribution-NonCommercial-NoDerivs"), 
+      "http://creativecommons.org/licenses/by-nc-nd/3.0/",
       rdf_license_cc_a_nc_nd,
     },
 
-    { _("GNU General Public License"), 
+    { N_("GNU General Public License"), 
       "http://creativecommons.org/licenses/GPL/2.0/",
       rdf_license_gpl,
     },
 
-    { _("GNU Lesser General Public License"), 
+    { N_("GNU Lesser General Public License"), 
       "http://creativecommons.org/licenses/LGPL/2.1/",
       rdf_license_gpl,
     },
 
-    { _("Public Domain"),
-      "http://web.resource.org/cc/PublicDomain",
+    { N_("Public Domain"),
+      "http://creativecommons.org/licenses/publicdomain/",
       rdf_license_pd,
     },
 
-    { _("FreeArt"),
+    { N_("FreeArt"),
       "http://artlibre.org/licence.php/lalgb.html",
       rdf_license_freeart,
     },
@@ -534,12 +536,16 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
     Inkscape::XML::Node * temp=NULL;
     Inkscape::XML::Node * child=NULL;
     Inkscape::XML::Node * parent=repr;
+
+    Inkscape::XML::Document * xmldoc = parent->document();
+    g_return_val_if_fail (xmldoc != NULL, FALSE);
+
     switch (entity->datatype) {
         case RDF_CONTENT:
             temp = sp_repr_children(parent);
             if ( temp == NULL ) {
-                temp = sp_repr_new_text( text );
-                g_return_val_if_fail (temp != NULL, 0);
+                temp = xmldoc->createTextNode( text );
+                g_return_val_if_fail (temp != NULL, FALSE);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
@@ -548,14 +554,14 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
             }
             else {
                 temp->setContent(text);
-                               return TRUE;
+                return TRUE;
             }
 
         case RDF_AGENT:
             temp = sp_repr_lookup_name ( parent, "cc:Agent", 1 );
             if ( temp == NULL ) {
-                temp = sp_repr_new ( "cc:Agent" );
-                g_return_val_if_fail (temp != NULL, 0);
+                temp = xmldoc->createElement ( "cc:Agent" );
+                g_return_val_if_fail (temp != NULL, FALSE);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
@@ -564,8 +570,8 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
 
             temp = sp_repr_lookup_name ( parent, "dc:title", 1 );
             if ( temp == NULL ) {
-                temp = sp_repr_new ( "dc:title" );
-                g_return_val_if_fail (temp != NULL, 0);
+                temp = xmldoc->createElement ( "dc:title" );
+                g_return_val_if_fail (temp != NULL, FALSE);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
@@ -574,8 +580,8 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
 
             temp = sp_repr_children(parent);
             if ( temp == NULL ) {
-                temp = sp_repr_new_text( text );
-                g_return_val_if_fail (temp != NULL, 0);
+                temp = xmldoc->createTextNode( text );
+                g_return_val_if_fail (temp != NULL, FALSE);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
@@ -603,8 +609,8 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
                     parent->removeChild(temp);
                 }
 
-                temp = sp_repr_new ( "rdf:Bag" );
-                g_return_val_if_fail (temp != NULL, 0);
+                temp = xmldoc->createElement ( "rdf:Bag" );
+                g_return_val_if_fail (temp != NULL, FALSE);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
@@ -620,13 +626,13 @@ rdf_set_repr_text ( Inkscape::XML::Node * repr,
             strlist = g_strsplit( text, ",", 0);
 
             for (i = 0; (str = strlist[i]); i++) {
-                temp = sp_repr_new ( "rdf:li" );
+                temp = xmldoc->createElement ( "rdf:li" );
                 g_return_val_if_fail (temp != NULL, 0);
 
                 parent->appendChild(temp);
                 Inkscape::GC::release(temp);
 
-                child = sp_repr_new_text( g_strstrip(str) );
+                child = xmldoc->createTextNode( g_strstrip(str) );
                 g_return_val_if_fail (child != NULL, 0);
 
                 temp->appendChild(child);
@@ -648,6 +654,9 @@ rdf_get_rdf_root_repr ( SPDocument * doc, bool build )
     g_return_val_if_fail (doc        != NULL, NULL);
     g_return_val_if_fail (doc->rroot != NULL, NULL);
 
+    Inkscape::XML::Document * xmldoc = sp_document_repr_doc(doc);
+    g_return_val_if_fail (xmldoc != NULL, NULL);
+
     Inkscape::XML::Node * rdf = sp_repr_lookup_name ( doc->rroot, XML_TAG_NAME_RDF );
 
     if (rdf == NULL) {
@@ -659,14 +668,17 @@ rdf_get_rdf_root_repr ( SPDocument * doc, bool build )
 
         Inkscape::XML::Node * parent = sp_repr_lookup_name ( svg, XML_TAG_NAME_METADATA );
         if ( parent == NULL ) {
-            parent = sp_repr_new( XML_TAG_NAME_METADATA );
+            parent = xmldoc->createElement( XML_TAG_NAME_METADATA );
             g_return_val_if_fail ( parent != NULL, NULL);
 
             svg->appendChild(parent);
             Inkscape::GC::release(parent);
         }
 
-        rdf = sp_repr_new( XML_TAG_NAME_RDF );
+        Inkscape::XML::Document * xmldoc = parent->document();
+        g_return_val_if_fail (xmldoc != NULL, FALSE);
+
+        rdf = xmldoc->createElement( XML_TAG_NAME_RDF );
         g_return_val_if_fail (rdf != NULL, NULL);
 
         parent->appendChild(rdf);
@@ -680,7 +692,7 @@ rdf_get_rdf_root_repr ( SPDocument * doc, bool build )
     Inkscape::XML::Node * want_metadata = sp_repr_parent ( rdf );
     g_return_val_if_fail (want_metadata != NULL, NULL);
     if (strcmp( want_metadata->name(), XML_TAG_NAME_METADATA )) {
-            Inkscape::XML::Node * metadata = sp_repr_new( XML_TAG_NAME_METADATA );
+            Inkscape::XML::Node * metadata = xmldoc->createElement( XML_TAG_NAME_METADATA );
             g_return_val_if_fail (metadata != NULL, NULL);
 
             /* attach the metadata node */
@@ -712,7 +724,10 @@ rdf_get_xml_repr( SPDocument * doc, gchar const * name, bool build )
         //printf("missing XML '%s'\n",name);
         if (!build) return NULL;
 
-        xml = sp_repr_new( name );
+        Inkscape::XML::Document * xmldoc = sp_document_repr_doc(doc);
+        g_return_val_if_fail (xmldoc != NULL, NULL);
+
+        xml = xmldoc->createElement( name );
         g_return_val_if_fail (xml != NULL, NULL);
 
         xml->setAttribute("rdf:about", "" );
@@ -739,7 +754,10 @@ rdf_get_work_repr( SPDocument * doc, gchar const * name, bool build )
         //printf("missing XML '%s'\n",name);
         if (!build) return NULL;
 
-        item = sp_repr_new( name );
+        Inkscape::XML::Document * xmldoc = sp_document_repr_doc(doc);
+        g_return_val_if_fail (xmldoc != NULL, NULL);
+
+        item = xmldoc->createElement( name );
         g_return_val_if_fail (item != NULL, NULL);
 
         work->appendChild(item);
@@ -925,23 +943,26 @@ rdf_get_license(SPDocument * document)
  *  
  */
 void
-rdf_set_license(SPDocument * document, struct rdf_license_t const * license)
+rdf_set_license(SPDocument * doc, struct rdf_license_t const * license)
 {
     // drop old license section
-    Inkscape::XML::Node * repr = rdf_get_xml_repr ( document, XML_TAG_NAME_LICENSE, FALSE );
+    Inkscape::XML::Node * repr = rdf_get_xml_repr ( doc, XML_TAG_NAME_LICENSE, FALSE );
     if (repr) sp_repr_unparent(repr);
 
     if (!license) return;
 
     // build new license section
-    repr = rdf_get_xml_repr ( document, XML_TAG_NAME_LICENSE, TRUE );
+    repr = rdf_get_xml_repr ( doc, XML_TAG_NAME_LICENSE, TRUE );
     g_assert ( repr );
 
     repr->setAttribute("rdf:about", license->uri );
 
+    Inkscape::XML::Document * xmldoc = sp_document_repr_doc(doc);
+    g_return_if_fail (xmldoc != NULL);
+
     for (struct rdf_double_t * detail = license->details;
          detail->name; detail++) {
-        Inkscape::XML::Node * child = sp_repr_new( detail->name );
+        Inkscape::XML::Node * child = xmldoc->createElement( detail->name );
         g_assert ( child != NULL );
 
         child->setAttribute("rdf:resource", detail->resource );
@@ -961,17 +982,19 @@ struct rdf_entity_default_t rdf_defaults[] = {
 };
 
 void
-rdf_set_defaults ( SPDocument * document )
+rdf_set_defaults ( SPDocument * doc )
 {
-    g_assert ( document != NULL );
+    g_assert ( doc != NULL );
 
     // Create metadata node if it doesn't already exist
-    if (!sp_item_group_get_child_by_name ((SPGroup *) document->root, NULL,
+    if (!sp_item_group_get_child_by_name ((SPGroup *) doc->root, NULL,
                                           XML_TAG_NAME_METADATA)) {
         // create repr
-        Inkscape::XML::Node * rnew = sp_repr_new (XML_TAG_NAME_METADATA);
+        Inkscape::XML::Document * xmldoc = sp_document_repr_doc(doc);
+        g_return_if_fail (xmldoc != NULL);
+        Inkscape::XML::Node * rnew = xmldoc->createElement (XML_TAG_NAME_METADATA);
         // insert into the document
-        document->rroot->addChild(rnew, NULL);
+        doc->rroot->addChild(rnew, NULL);
         // clean up
         Inkscape::GC::release(rnew);
     }
@@ -983,8 +1006,8 @@ rdf_set_defaults ( SPDocument * document )
         struct rdf_work_entity_t * entity = rdf_find_entity ( rdf_default->name );
         g_assert ( entity != NULL );
 
-        if ( rdf_get_work_entity ( document, entity ) == NULL ) {
-            rdf_set_work_entity ( document, entity, rdf_default->text );
+        if ( rdf_get_work_entity ( doc, entity ) == NULL ) {
+            rdf_set_work_entity ( doc, entity, rdf_default->text );
         }
     }
 }