Code

get rid of sp_repr_document_root and (commented) sp_repr_duplicate
[inkscape.git] / src / interface.cpp
index 959e231e2a52436c568da2765d89f3c0d4fce738..83f4ac3c8ffdc6708a4deb26e44a06be23fcebd0 100644 (file)
@@ -112,24 +112,26 @@ static void sp_ui_drag_data_received(GtkWidget *widget,
 static void sp_ui_menu_item_set_sensitive(SPAction *action,
                                           unsigned int sensitive,
                                           void *data);
+static void sp_ui_menu_item_set_name(SPAction *action, 
+                                     Glib::ustring name,
+                                     void *data);
 
 SPActionEventVector menu_item_event_vector = {
     {NULL},
     NULL,
     NULL, /* set_active */
     sp_ui_menu_item_set_sensitive, /* set_sensitive */
-    NULL  /* set_shortcut */
+    NULL, /* set_shortcut */
+    sp_ui_menu_item_set_name /* set_name */
 };
 
 void
 sp_create_window(SPViewWidget *vw, gboolean editable)
 {
-    GtkWidget *w, *hb;
-
     g_return_if_fail(vw != NULL);
     g_return_if_fail(SP_IS_VIEW_WIDGET(vw));
 
-    w = sp_window_new("", TRUE);
+    GtkWidget *w = sp_window_new("", TRUE);
 
     if (editable) {
       g_object_set_data(G_OBJECT(vw), "window", w);
@@ -137,13 +139,8 @@ sp_create_window(SPViewWidget *vw, gboolean editable)
         static_cast<GtkWindow*>((void*)w);
     }
 
-    hb = gtk_hbox_new(FALSE, 0);
-    gtk_widget_show(hb);
-    gtk_container_add(GTK_CONTAINER(w), hb);
-    g_object_set_data(G_OBJECT(w), "hbox", hb);
-
-    /* fixme: */
     if (editable) {
+        /* fixme: */
         gtk_window_set_default_size((GtkWindow *) w, 640, 480);
         g_object_set_data(G_OBJECT(w), "desktop", SP_DESKTOP_WIDGET(vw)->desktop);
         g_object_set_data(G_OBJECT(w), "desktopwidget", vw);
@@ -153,10 +150,9 @@ sp_create_window(SPViewWidget *vw, gboolean editable)
         gtk_window_set_policy(GTK_WINDOW(w), TRUE, TRUE, TRUE);
     }
 
-    gtk_box_pack_end(GTK_BOX(hb), GTK_WIDGET(vw), TRUE, TRUE, 0);
+    gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(vw));
     gtk_widget_show(GTK_WIDGET(vw));
 
-
     if ( completeDropTargets == 0 || completeDropTargetsCount == 0 )
     {
         std::vector<gchar*> types;
@@ -217,6 +213,7 @@ sp_ui_new_view()
 
     sp_create_window(dtw, TRUE);
     sp_namedview_window_from_document(static_cast<SPDesktop*>(dtw->view));
+    sp_namedview_update_layers_from_document(static_cast<SPDesktop*>(dtw->view));
 }
 
 /* TODO: not yet working */
@@ -695,7 +692,7 @@ sp_menu_append_new_templates(GtkWidget *menu, Inkscape::UI::View::View *view)
 
             if (dir) {
                 for (gchar const *file = g_dir_read_name(dir); file != NULL; file = g_dir_read_name(dir)) {
-                    if (!g_str_has_suffix(file, ".svg"))
+                    if (!g_str_has_suffix(file, ".svg") && !g_str_has_suffix(file, ".svgz"))
                         continue; // skip non-svg files
 
                     gchar *basename = g_path_get_basename(file);
@@ -779,10 +776,10 @@ sp_ui_checkboxes_menus(GtkMenu *m, Inkscape::UI::View::View *view)
                                            checkitem_toggled, checkitem_update, Inkscape::Verb::get(SP_VERB_TOGGLE_RULERS));
     sp_ui_menu_append_check_item_from_verb(m, view, NULL, NULL, "scrollbars",
                                            checkitem_toggled, checkitem_update, Inkscape::Verb::get(SP_VERB_TOGGLE_SCROLLBARS));
-    sp_ui_menu_append_check_item_from_verb(m, view, _("_Statusbar"), _("Show or hide the statusbar (at the bottom of the window)"), "statusbar",
-                                           checkitem_toggled, checkitem_update, 0);
     sp_ui_menu_append_check_item_from_verb(m, view, _("_Palette"), _("Show or hide the color palette"), "panels",
                                            checkitem_toggled, checkitem_update, 0);
+    sp_ui_menu_append_check_item_from_verb(m, view, _("_Statusbar"), _("Show or hide the statusbar (at the bottom of the window)"), "statusbar",
+                                           checkitem_toggled, checkitem_update, 0);
 }
 
 /** \brief  This function turns XML into a menu
@@ -1043,7 +1040,8 @@ sp_ui_drag_data_received(GtkWidget *widget,
                     item->updateRepr();
 
                     SPDocument *doc = SP_ACTIVE_DOCUMENT;
-                    sp_document_done( doc );
+                    sp_document_done( doc , SP_VERB_NONE, 
+                                      _("Drop color"));
 
                     if ( srgbProf ) {
                         cmsCloseProfile( srgbProf );
@@ -1084,7 +1082,8 @@ sp_ui_drag_data_received(GtkWidget *widget,
                     item->updateRepr();
 
                     SPDocument *doc = SP_ACTIVE_DOCUMENT;
-                    sp_document_done( doc );
+                    sp_document_done( doc , SP_VERB_NONE, 
+                                      _("Drop color"));
                 }
             }
         }
@@ -1103,10 +1102,10 @@ sp_ui_drag_data_received(GtkWidget *widget,
                 return;
             }
 
-            Inkscape::XML::Node *repr = sp_repr_document_root(rnewdoc);
+            Inkscape::XML::Node *repr = rnewdoc->root();
             gchar const *style = repr->attribute("style");
 
-            Inkscape::XML::Node *newgroup = sp_repr_new("svg:g");
+            Inkscape::XML::Node *newgroup = rnewdoc->createElement("svg:g");
             newgroup->setAttribute("style", style);
 
             for (Inkscape::XML::Node *child = repr->firstChild(); child != NULL; child = child->next()) {
@@ -1137,7 +1136,8 @@ sp_ui_drag_data_received(GtkWidget *widget,
             }
 
             Inkscape::GC::release(newgroup);
-            sp_document_done(doc);
+            sp_document_done(doc, SP_VERB_NONE, 
+                             _("Drop SVG"));
             break;
         }
 
@@ -1157,8 +1157,9 @@ sp_ui_drag_data_received(GtkWidget *widget,
             b64out.setColumnWidth(0);
 
             SPDocument *doc = SP_ACTIVE_DOCUMENT;
+            Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc);
 
-            Inkscape::XML::Node *newImage = sp_repr_new("svg:image");
+            Inkscape::XML::Node *newImage = xml_doc->createElement("svg:image");
 
             for ( int i = 0; i < data->length; i++ ) {
                 b64out.put( data->data[i] );
@@ -1196,7 +1197,8 @@ sp_ui_drag_data_received(GtkWidget *widget,
             desktop->currentLayer()->appendChildRepr(newImage);
 
             Inkscape::GC::release(newImage);
-            sp_document_done( doc );
+            sp_document_done( doc , SP_VERB_NONE, 
+                              _("Drop bitmap image"));
             break;
         }
     }
@@ -1313,6 +1315,15 @@ sp_ui_menu_item_set_sensitive(SPAction *action, unsigned int sensitive, void *da
     return gtk_widget_set_sensitive(GTK_WIDGET(data), sensitive);
 }
 
+static void
+sp_ui_menu_item_set_name(SPAction *action, Glib::ustring name, void *data)
+{
+    gtk_label_set_markup_with_mnemonic(
+        GTK_LABEL (gtk_container_get_children(GTK_CONTAINER (GTK_BIN (data)->child))->data), 
+        name.c_str());
+}
+
+
 /*
   Local Variables:
   mode:c++