Code

implement GEOMETRIC_BBOX
[inkscape.git] / src / file.cpp
index c5347a66e5f2eecae8b35dcdb5e9f12e6b459de3..0a81069d94f1e193cb8106c26b4a58cdade9d91b 100644 (file)
@@ -388,8 +388,11 @@ sp_file_open_dialog(gpointer object, gpointer data)
                  open_path,
                  Inkscape::UI::Dialog::SVG_TYPES,
                  (char const *)_("Select file to open"));
+        // allow easy access to our examples folder             
+        dynamic_cast<Gtk::FileChooser *>(openDialogInstance)->add_shortcut_folder(INKSCAPE_EXAMPLESDIR);
     }
 
+
     //# Show the dialog
     bool const success = openDialogInstance->show();
     if (!success)
@@ -618,6 +621,11 @@ sp_file_save_dialog(SPDocument *doc, bool is_copy)
     saveDialog->change_title(dialog_title);
     saveDialog->setSelectionType(extension);
 
+    // allow easy access to the user's own templates folder             
+    gchar *templates = profile_path ("templates");
+    dynamic_cast<Gtk::FileChooser *>(saveDialog)->add_shortcut_folder(templates);
+    g_free (templates);
+
     bool success = saveDialog->show();
     if (!success) {
         delete saveDialog;
@@ -757,13 +765,14 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri,
         SPObject *defs = SP_DOCUMENT_DEFS(doc);
 
         Inkscape::IO::fixupHrefs(doc, in_doc->base, true);
+        Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc);
 
         Inkscape::XML::Node *last_def = SP_OBJECT_REPR(in_defs)->lastChild();
         for (SPObject *child = sp_object_first_child(defs);
              child != NULL; child = SP_OBJECT_NEXT(child))
         {
             // FIXME: in case of id conflict, newly added thing will be re-ided and thus likely break a reference to it from imported stuff
-            SP_OBJECT_REPR(in_defs)->addChild(SP_OBJECT_REPR(child)->duplicate(), last_def);
+            SP_OBJECT_REPR(in_defs)->addChild(SP_OBJECT_REPR(child)->duplicate(xml_doc), last_def);
         }
 
         guint items_count = 0;
@@ -784,7 +793,7 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri,
 
             for (SPObject *child = sp_object_first_child(SP_DOCUMENT_ROOT(doc)); child != NULL; child = SP_OBJECT_NEXT(child) ) {
                 if (SP_IS_ITEM(child)) {
-                    Inkscape::XML::Node *newchild = SP_OBJECT_REPR(child)->duplicate();
+                    Inkscape::XML::Node *newchild = SP_OBJECT_REPR(child)->duplicate(xml_doc);
 
                     // convert layers to groups; FIXME: add "preserve layers" mode where each layer
                     // from impot is copied to the same-named layer in host
@@ -808,7 +817,7 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri,
             // just add one item
             for (SPObject *child = sp_object_first_child(SP_DOCUMENT_ROOT(doc)); child != NULL; child = SP_OBJECT_NEXT(child) ) {
                 if (SP_IS_ITEM(child)) {
-                    Inkscape::XML::Node *newitem = SP_OBJECT_REPR(child)->duplicate();
+                    Inkscape::XML::Node *newitem = SP_OBJECT_REPR(child)->duplicate(xml_doc);
                     newitem->setAttribute("inkscape:groupmode", NULL);
 
                     if (desktop) {