diff --git a/src/interface.cpp b/src/interface.cpp
index 83f4ac3c8ffdc6708a4deb26e44a06be23fcebd0..fa41e5898bbe81268ce036ee0cab0ab34b375bfb 100644 (file)
--- a/src/interface.cpp
+++ b/src/interface.cpp
}
if (( group && group != dt->currentLayer() ) ||
- ( dt->currentLayer() != dt->currentRoot() ) ) {
+ ( dt->currentLayer() != dt->currentRoot() && SP_OBJECT_PARENT(dt->currentLayer()) != dt->currentRoot() ) ) {
+ /* Separator */
sp_ui_menu_append_item(GTK_MENU(m), NULL, NULL, NULL, NULL, NULL, NULL);
}
guint event_time,
gpointer user_data)
{
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
+ SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+
switch (info) {
#if ENABLE_MAGIC_COLORS
case APP_X_INKY_COLOR:
{
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
int destX = 0;
int destY = 0;
gtk_widget_translate_coordinates( widget, &(desktop->canvas->widget), x, y, &destX, &destY );
sp_desktop_apply_css_recursive( item, css, true );
item->updateRepr();
- SPDocument *doc = SP_ACTIVE_DOCUMENT;
sp_document_done( doc , SP_VERB_NONE,
_("Drop color"));
case APP_X_COLOR:
{
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
int destX = 0;
int destY = 0;
gtk_widget_translate_coordinates( widget, &(desktop->canvas->widget), x, y, &destX, &destY );
sp_desktop_apply_css_recursive( item, css, true );
item->updateRepr();
- SPDocument *doc = SP_ACTIVE_DOCUMENT;
sp_document_done( doc , SP_VERB_NONE,
_("Drop color"));
}
case SVG_XML_DATA: {
gchar *svgdata = (gchar *)data->data;
- SPDocument *doc = SP_ACTIVE_DOCUMENT;
-
Inkscape::XML::Document *rnewdoc = sp_repr_read_mem(svgdata, data->length, SP_SVG_NS_URI);
if (rnewdoc == NULL) {
Inkscape::XML::Node *newgroup = rnewdoc->createElement("svg:g");
newgroup->setAttribute("style", style);
+ Inkscape::XML::Document * xml_doc = sp_document_repr_doc(doc);
for (Inkscape::XML::Node *child = repr->firstChild(); child != NULL; child = child->next()) {
- Inkscape::XML::Node *newchild = child->duplicate();
+ Inkscape::XML::Node *newchild = child->duplicate(xml_doc);
newgroup->appendChild(newchild);
}
Inkscape::GC::release(rnewdoc);
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
// Add it to the current layer
// Greg's edits to add intelligent positioning of svg drops
int const saved_pref = prefs_get_int_attribute("options.transform", "pattern", 1);
prefs_set_int_attribute("options.transform", "pattern", 1);
sp_document_ensure_up_to_date(sp_desktop_document(desktop));
- NR::Point m( desktop->point() - selection->bounds().midpoint() );
- sp_selection_move_relative(selection, m);
+ NR::Maybe<NR::Rect> sel_bbox = selection->bounds();
+ if (sel_bbox) {
+ NR::Point m( desktop->point() - sel_bbox->midpoint() );
+ sp_selection_move_relative(selection, m);
+ }
prefs_set_int_attribute("options.transform", "pattern", saved_pref);
}
Base64OutputStream b64out(outs);
b64out.setColumnWidth(0);
- SPDocument *doc = SP_ACTIVE_DOCUMENT;
Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc);
Inkscape::XML::Node *newImage = xml_doc->createElement("svg:image");
}
}
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
-
// Add it to the current layer
desktop->currentLayer()->appendChildRepr(newImage);
gchar *safeMsg = Inkscape::IO::sanitizeString(message);
dlg = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE, safeMsg);
+ GTK_BUTTONS_CLOSE, "%s", safeMsg);
sp_transientize(dlg);
gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE);
gtk_dialog_run(GTK_DIALOG(dlg));
sp_ui_overwrite_file(gchar const *filename)
{
bool return_value = FALSE;
- GtkWidget *dialog;
- GtkWidget *hbox;
- GtkWidget *boxdata;
- gchar *title;
- gchar *text;
if (Inkscape::IO::file_test(filename, G_FILE_TEST_EXISTS)) {
-
- title = g_strdup_printf(_("Overwrite %s"), filename);
- dialog = gtk_dialog_new_with_buttons(title,
- NULL,
- (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
- GTK_STOCK_NO,
- GTK_RESPONSE_NO,
- GTK_STOCK_YES,
- GTK_RESPONSE_YES,
- NULL);
- gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);
-
- sp_transientize(dialog);
- gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
-
- hbox = gtk_hbox_new(FALSE, 5);
-
- // TODO - replace with Inkscape-specific call
- boxdata = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
-
- gtk_widget_show(boxdata);
- gtk_box_pack_start(GTK_BOX(hbox), boxdata, TRUE, TRUE, 5);
- text = g_strdup_printf(_("The file %s already exists. Do you want to overwrite that file with the current document?"), filename);
- boxdata = gtk_label_new(text);
- gtk_label_set_line_wrap(GTK_LABEL(boxdata), TRUE);
- gtk_widget_show(boxdata);
- gtk_box_pack_start(GTK_BOX(hbox), boxdata, FALSE, FALSE, 5);
- gtk_widget_show(hbox);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, TRUE, TRUE, 5);
-
- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {
+ GtkWidget* ancestor = 0;
+ SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if ( desktop ) {
+ desktop->getToplevel( ancestor );
+ }
+ GtkWindow *window = GTK_WIDGET_TOPLEVEL(ancestor) ? GTK_WINDOW( ancestor ) : 0;
+ gchar* baseName = g_path_get_basename( filename );
+ gchar* dirName = g_path_get_dirname( filename );
+ GtkWidget* dialog = gtk_message_dialog_new_with_markup( window,
+ (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_NONE,
+ _( "<span weight=\"bold\" size=\"larger\">A file named \"%s\" already exists. Do you want to replace it?</span>\n\n"
+ "The file already exists in \"%s\". Replacing it will overwrite its contents." ),
+ baseName,
+ dirName
+ );
+ gtk_dialog_add_buttons( GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_NO,
+ _("Replace"), GTK_RESPONSE_YES,
+ NULL );
+ gtk_dialog_set_default_response( GTK_DIALOG(dialog), GTK_RESPONSE_YES );
+
+ if ( gtk_dialog_run( GTK_DIALOG(dialog) ) == GTK_RESPONSE_YES ) {
return_value = TRUE;
} else {
return_value = FALSE;
}
-
gtk_widget_destroy(dialog);
- g_free(title);
- g_free(text);
+ g_free( baseName );
+ g_free( dirName );
} else {
return_value = TRUE;
}