X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fdialogs%2Fexport.cpp;h=720cebbedc0efbba201efc66060ec85a54dd2eab;hb=b53b8aff0aa55c2349ea10992daac23a929ae19f;hp=5438dfdc55306dd645185e036f8c099ca3a598cd;hpb=6129af7cc5b723223e9617614c931936e5190421;p=inkscape.git diff --git a/src/dialogs/export.cpp b/src/dialogs/export.cpp index 5438dfdc5..720cebbed 100644 --- a/src/dialogs/export.cpp +++ b/src/dialogs/export.cpp @@ -20,6 +20,15 @@ #endif #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include "helper/unit-menu.h" @@ -45,6 +54,8 @@ #include "io/sys.h" +#include "helper/png-write.h" + #define SP_EXPORT_MIN_SIZE 1.0 @@ -55,8 +66,6 @@ static void sp_export_area_toggled ( GtkToggleButton *tb, GtkObject *base ); static void sp_export_export_clicked ( GtkButton *button, GtkObject *base ); static void sp_export_browse_clicked ( GtkButton *button, gpointer userdata ); -static void sp_export_browse_store ( GtkButton *button, gpointer userdata ); - static void sp_export_area_x_value_changed ( GtkAdjustment *adj, GtkObject *base); @@ -242,40 +251,38 @@ sp_export_spinbutton_new ( gchar *key, float val, float min, float max, } // end of sp_export_spinbutton_new() -static GtkWidget * -sp_export_dialog_area_frame (GtkWidget * dlg) +static Gtk::VBox * +sp_export_dialog_area_box (GtkWidget * dlg) { - GtkWidget * f, * t, * hb, * b, * us, * l, * vb, * unitbox; + Gtk::VBox* vb = new Gtk::VBox(false, 3); - f = gtk_frame_new (_("Export area")); - vb = gtk_vbox_new (FALSE, 2); - gtk_container_add (GTK_CONTAINER (f), vb); + Gtk::Label* lbl = new Gtk::Label(_("Export area"), Gtk::ALIGN_LEFT); + lbl->set_use_markup(true); + vb->pack_start(*lbl); /* Units box */ - unitbox = gtk_hbox_new (FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (unitbox), 4); + Gtk::HBox* unitbox = new Gtk::HBox(false, 0); /* gets added to the vbox later, but the unit selector is needed earlier than that */ - us = sp_unit_selector_new (SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE); + Gtk::Widget* us = Glib::wrap(sp_unit_selector_new (SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE)); SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop) - sp_unit_selector_set_unit (SP_UNIT_SELECTOR(us), sp_desktop_namedview(desktop)->doc_units); - gtk_box_pack_end (GTK_BOX (unitbox), us, FALSE, FALSE, 0); - l = gtk_label_new (_("Units:")); - gtk_box_pack_end (GTK_BOX (unitbox), l, FALSE, FALSE, 3); - gtk_object_set_data (GTK_OBJECT (dlg), "units", us); + sp_unit_selector_set_unit (SP_UNIT_SELECTOR(us->gobj()), sp_desktop_namedview(desktop)->doc_units); + unitbox->pack_end(*us, false, false, 0); + Gtk::Label* l = new Gtk::Label(_("Units:")); + unitbox->pack_end(*l, false, false, 3); + gtk_object_set_data (GTK_OBJECT (dlg), "units", us->gobj()); - hb = gtk_hbox_new (TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hb), 4); - gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 3); + Gtk::HBox* togglebox = new Gtk::HBox(true, 0); + Gtk::ToggleButton* b; for (int i = 0; i < SELECTION_NUMBER_OF; i++) { - b = gtk_toggle_button_new_with_mnemonic (_(selection_labels[i])); - gtk_object_set_data (GTK_OBJECT (b), "key", GINT_TO_POINTER(i)); - gtk_object_set_data (GTK_OBJECT (dlg), selection_names[i], b); - gtk_box_pack_start (GTK_BOX (hb), b, FALSE, TRUE, 0); - gtk_signal_connect ( GTK_OBJECT (b), "clicked", + b = new Gtk::ToggleButton(_(selection_labels[i]), true); + b->set_data("key", GINT_TO_POINTER(i)); + gtk_object_set_data (GTK_OBJECT (dlg), selection_names[i], b->gobj()); + togglebox->pack_start(*b, false, true, 0); + gtk_signal_connect ( GTK_OBJECT (b->gobj()), "clicked", GTK_SIGNAL_FUNC (sp_export_area_toggled), dlg ); } @@ -286,55 +293,55 @@ sp_export_dialog_area_frame (GtkWidget * dlg) g_signal_connect ( G_OBJECT (INKSCAPE), "activate_desktop", G_CALLBACK (sp_export_selection_changed), dlg ); - t = gtk_table_new (2, 6, FALSE); - gtk_box_pack_start(GTK_BOX(vb), t, FALSE, FALSE, 0); - gtk_table_set_row_spacings (GTK_TABLE (t), 4); - gtk_table_set_col_spacings (GTK_TABLE (t), 4); - gtk_container_set_border_width (GTK_CONTAINER (t), 4); - - sp_export_spinbutton_new ( "x0", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us, - t, 0, 0, _("_x0:"), NULL, EXPORT_COORD_PRECISION, 1, + Gtk::Table* t = new Gtk::Table(2, 6, FALSE); + t->set_row_spacings (4); + t->set_col_spacings (4); + + sp_export_spinbutton_new ( "x0", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us->gobj(), + GTK_WIDGET(t->gobj()), 0, 0, _("_x0:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK ( sp_export_area_x_value_changed), dlg ); - sp_export_spinbutton_new ( "x1", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us, - t, 2, 0, _("x_1:"), NULL, EXPORT_COORD_PRECISION, 1, + sp_export_spinbutton_new ( "x1", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us->gobj(), + GTK_WIDGET(t->gobj()), 2, 0, _("x_1:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_x_value_changed), dlg ); sp_export_spinbutton_new ( "width", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, - us, t, 4, 0, _("Width:"), NULL, EXPORT_COORD_PRECISION, 1, + us->gobj(), GTK_WIDGET(t->gobj()), 4, 0, _("Width:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_width_value_changed), dlg ); - sp_export_spinbutton_new ( "y0", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us, - t, 0, 1, _("_y0:"), NULL, EXPORT_COORD_PRECISION, 1, + sp_export_spinbutton_new ( "y0", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us->gobj(), + GTK_WIDGET(t->gobj()), 0, 1, _("_y0:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_y_value_changed), dlg ); - sp_export_spinbutton_new ( "y1", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us, - t, 2, 1, _("y_1:"), NULL, EXPORT_COORD_PRECISION, 1, + sp_export_spinbutton_new ( "y1", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, us->gobj(), + GTK_WIDGET(t->gobj()), 2, 1, _("y_1:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_y_value_changed), dlg ); sp_export_spinbutton_new ( "height", 0.0, -1000000.0, 1000000.0, 0.1, 1.0, - us, t, 4, 1, _("Height:"), NULL, EXPORT_COORD_PRECISION, 1, + us->gobj(), GTK_WIDGET(t->gobj()), 4, 1, _("Height:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_height_value_changed), dlg ); - /* Adding in the unit box */ - gtk_box_pack_start(GTK_BOX(vb), unitbox, FALSE, FALSE, 0); + vb->pack_start(*togglebox, false, false, 3); + vb->pack_start(*t, false, false, 0); + vb->pack_start(*unitbox, false, false, 0); - return f; -} // end of sp_export_dialog_area_frame + return vb; +} // end of sp_export_dialog_area_box void sp_export_dialog (void) { if (!dlg) { - GtkWidget *vb, *hb; + Gtk::VBox* vb; + Gtk::HBox* hb; gchar title[500]; sp_ui_dialog_title_string (Inkscape::Verb::get(SP_VERB_FILE_EXPORT), title); @@ -390,28 +397,35 @@ sp_export_dialog (void) GtkTooltips *tt = gtk_tooltips_new(); - vb = gtk_vbox_new (FALSE, 4); - gtk_container_set_border_width (GTK_CONTAINER (vb), 0); - gtk_container_add (GTK_CONTAINER (dlg), vb); + vb = new Gtk::VBox(false, 3); + vb->set_border_width(3); + gtk_container_add (GTK_CONTAINER (dlg), GTK_WIDGET(vb->gobj())); /* Export area frame */ { - GtkWidget *f = sp_export_dialog_area_frame(dlg); - gtk_box_pack_start (GTK_BOX (vb), f, FALSE, FALSE, 0); + Gtk::VBox *area_box = sp_export_dialog_area_box(dlg); + area_box->set_border_width(3); + vb->pack_start(*area_box, false, false, 0); } /* Bitmap size frame */ { - GtkWidget *f = gtk_frame_new (_("Bitmap size")); - gtk_box_pack_start (GTK_BOX (vb), f, FALSE, FALSE, 0); - GtkWidget *t = gtk_table_new (2, 5, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (t), 4); - gtk_table_set_col_spacings (GTK_TABLE (t), 4); - gtk_container_set_border_width (GTK_CONTAINER (t), 4); - gtk_container_add (GTK_CONTAINER (f), t); + Gtk::VBox *size_box = new Gtk::VBox(false, 3); + size_box->set_border_width(3); + + Gtk::Label* lbl = new Gtk::Label(_("Bitmap size"), Gtk::ALIGN_LEFT); + lbl->set_use_markup(true); + size_box->pack_start(*lbl, false, false, 0); + const int rows = 2; + const int cols = 5; + const bool homogeneous = false; + Gtk::Table *t = new Gtk::Table(rows, cols, homogeneous); + t->set_row_spacings (4); + t->set_col_spacings (4); + size_box->pack_start(*t); sp_export_spinbutton_new ( "bmwidth", 16.0, 1.0, 1000000.0, 1.0, 10.0, - NULL, t, 0, 0, + NULL, GTK_WIDGET(t->gobj()), 0, 0, _("_Width:"), _("pixels at"), 0, 1, G_CALLBACK (sp_export_bitmap_width_value_changed), @@ -421,13 +435,13 @@ sp_export_dialog (void) prefs_get_double_attribute ( "dialogs.export.defaultxdpi", "value", DPI_BASE), - 1.0, 9600.0, 0.1, 1.0, NULL, t, 3, 0, + 0.01, 100000.0, 0.1, 1.0, NULL, GTK_WIDGET(t->gobj()), 3, 0, NULL, _("dp_i"), 2, 1, G_CALLBACK (sp_export_xdpi_value_changed), dlg ); sp_export_spinbutton_new ( "bmheight", 16.0, 1.0, 1000000.0, 1.0, 10.0, - NULL, t, 0, 1, + NULL, GTK_WIDGET(t->gobj()), 0, 1, _("Height:"), _("pixels at"), 0, 1, G_CALLBACK (sp_export_bitmap_height_value_changed), @@ -440,18 +454,23 @@ sp_export_dialog (void) sp_export_spinbutton_new ( "ydpi", prefs_get_double_attribute ( "dialogs.export.defaultxdpi", "value", DPI_BASE), - 1.0, 9600.0, 0.1, 1.0, NULL, t, 3, 1, + 0.01, 100000.0, 0.1, 1.0, NULL, GTK_WIDGET(t->gobj()), 3, 1, NULL, _("dpi"), 2, 0, NULL, dlg ); + + vb->pack_start(*size_box); } /* File entry */ { - GtkWidget *frame = gtk_frame_new (""); - GtkWidget *flabel = gtk_label_new_with_mnemonic (_("_Filename")); - gtk_frame_set_label_widget (GTK_FRAME(frame), flabel); - gtk_box_pack_start (GTK_BOX (vb), frame, FALSE, FALSE, 0); + Gtk::VBox* file_box = new Gtk::VBox(false, 3); + file_box->set_border_width(3); - GtkWidget *fe = gtk_entry_new (); + // true = has mnemonic + Gtk::Label *flabel = new Gtk::Label(_("_Filename"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, true); + flabel->set_use_markup(true); + file_box->pack_start(*flabel, false, false, 0); + + Gtk::Entry *fe = new Gtk::Entry(); /* * set the default filename to be that of the current path + document @@ -490,63 +509,85 @@ sp_export_dialog (void) extension_point[0] = '\0'; final_name = g_strconcat(uri_copy, ".png", NULL); - gtk_entry_set_text (GTK_ENTRY (fe), final_name); + fe->set_text(final_name); g_free(final_name); g_free(uri_copy); } } else { name = g_strconcat(uri, ".png", NULL); - gtk_entry_set_text (GTK_ENTRY (fe), name); + fe->set_text(name); g_free(name); } - doc_export_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(fe))); + doc_export_name = g_strdup(fe->get_text().c_str()); } - g_signal_connect ( G_OBJECT (fe), "changed", + g_signal_connect ( G_OBJECT (fe->gobj()), "changed", G_CALLBACK (sp_export_filename_modified), dlg); - hb = gtk_hbox_new (FALSE, 5); - gtk_container_add (GTK_CONTAINER (frame), hb); - gtk_container_set_border_width (GTK_CONTAINER (hb), 4); + hb = new Gtk::HBox(FALSE, 5); { - GtkWidget *b = gtk_button_new_with_mnemonic (_("_Browse...")); - gtk_box_pack_end (GTK_BOX (hb), b, FALSE, FALSE, 4); - g_signal_connect ( G_OBJECT (b), "clicked", + // true = has mnemonic + Gtk::Button *b = new Gtk::Button(); + + Gtk::HBox* pixlabel = new Gtk::HBox(false, 3); + Gtk::Image *im = new Gtk::Image(Gtk::StockID(Gtk::Stock::INDEX), + Gtk::ICON_SIZE_BUTTON); + pixlabel->pack_start(*im); + + Gtk::Label *l = new Gtk::Label(); + l->set_markup_with_mnemonic(_("_Browse...")); + pixlabel->pack_start(*l); + + b->add(*pixlabel); + + hb->pack_end (*b, false, false, 4); + g_signal_connect ( G_OBJECT (b->gobj()), "clicked", G_CALLBACK (sp_export_browse_clicked), NULL ); } - gtk_box_pack_start (GTK_BOX (hb), fe, TRUE, TRUE, 0); - gtk_object_set_data (GTK_OBJECT (dlg), "filename", fe); + hb->pack_start (*fe, true, true, 0); + file_box->add(*hb); + gtk_object_set_data (GTK_OBJECT (dlg), "filename", fe->gobj()); gtk_object_set_data (GTK_OBJECT (dlg), "filename-modified", (gpointer)FALSE); - original_name = g_strdup(gtk_entry_get_text (GTK_ENTRY (fe))); + original_name = g_strdup(fe->get_text().c_str()); // pressing enter in the filename field is the same as clicking export: - g_signal_connect ( G_OBJECT (fe), "activate", + g_signal_connect ( G_OBJECT (fe->gobj()), "activate", G_CALLBACK (sp_export_export_clicked), dlg ); // focus is in the filename initially: - gtk_widget_grab_focus (GTK_WIDGET (fe)); + fe->grab_focus(); // mnemonic in frame label moves focus to filename: - gtk_label_set_mnemonic_widget (GTK_LABEL(flabel), fe); + flabel->set_mnemonic_widget(*fe); + + vb->pack_start(*file_box); } /* Buttons */ - hb = gtk_hbox_new (FALSE, 0); - gtk_box_pack_end (GTK_BOX (vb), hb, FALSE, FALSE, 0); + Gtk::HButtonBox* bb = new Gtk::HButtonBox(Gtk::BUTTONBOX_END); + bb->set_border_width(3); { - GtkWidget *b = gtk_button_new (); - GtkWidget *l = gtk_label_new (""); - gtk_label_set_markup_with_mnemonic (GTK_LABEL(l), _(" _Export ")); - gtk_container_add (GTK_CONTAINER(b), l); - gtk_tooltips_set_tip (tt, b, _("Export the bitmap file with these settings"), NULL); - gtk_signal_connect ( GTK_OBJECT (b), "clicked", + Gtk::Button *b = new Gtk::Button(); + Gtk::HBox* image_label = new Gtk::HBox(false, 3); + Gtk::Image *im = new Gtk::Image(Gtk::StockID(Gtk::Stock::APPLY), + Gtk::ICON_SIZE_BUTTON); + image_label->pack_start(*im); + + Gtk::Label *l = new Gtk::Label(); + l->set_markup_with_mnemonic(_("_Export")); + image_label->pack_start(*l); + + b->add(*image_label); + gtk_tooltips_set_tip (tt, GTK_WIDGET(b->gobj()), _("Export the bitmap file with these settings"), NULL); + gtk_signal_connect ( GTK_OBJECT (b->gobj()), "clicked", GTK_SIGNAL_FUNC (sp_export_export_clicked), dlg ); - gtk_box_pack_end (GTK_BOX (hb), b, FALSE, FALSE, 0); + bb->pack_end(*b, false, false, 0); } - gtk_widget_show_all (vb); + vb->pack_end(*bb, false, false, 0); + vb->show_all(); } // end of if (!dlg) @@ -645,12 +686,15 @@ sp_export_selection_modified ( Inkscape::Application *inkscape, case SELECTION_DRAWING: if ( SP_ACTIVE_DESKTOP ) { SPDocument *doc; - NRRect bbox; doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc)), &bbox); + NR::Rect bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); - if (!(bbox.x0 > bbox.x1 && bbox.y0 > bbox.y1)) { - sp_export_set_area (base, bbox.x0, bbox.y0, bbox.x1, bbox.y1); + if (!(bbox.min()[NR::X] > bbox.max()[NR::X] && + bbox.min()[NR::Y] > bbox.max()[NR::Y])) { + sp_export_set_area (base, bbox.min()[NR::X], + bbox.min()[NR::Y], + bbox.max()[NR::X], + bbox.max()[NR::Y]); } } break; @@ -704,7 +748,7 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) if ( SP_ACTIVE_DESKTOP ) { SPDocument *doc; - NRRect bbox; + NR::Rect bbox; doc = sp_desktop_document (SP_ACTIVE_DESKTOP); /* Notice how the switch is used to 'fall through' here to get @@ -714,7 +758,7 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) case SELECTION_SELECTION: if ((sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false) { - (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(&bbox); + bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(); /* Only if there is a selection that we can set do we break, otherwise we fall through to the drawing */ @@ -726,20 +770,21 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) /** \todo * This returns wrong values if the document has a viewBox. */ - sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc)), &bbox); + bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); /* If the drawing is valid, then we'll use it and break otherwise we drop through to the page settings */ - if (!(bbox.x0 > bbox.x1 && bbox.y0 > bbox.y1)) { + if (!(bbox.min()[NR::X] > bbox.max()[NR::X] && + bbox.min()[NR::Y] > bbox.max()[NR::Y])) { // std::cout << "Using selection: DRAWING" << std::endl; key = SELECTION_DRAWING; break; } case SELECTION_PAGE: - bbox.x0 = 0.0; - bbox.y0 = 0.0; - bbox.x1 = sp_document_width (doc); - bbox.y1 = sp_document_height (doc); + bbox = NR::Rect(NR::Point(0.0, 0.0), + NR::Point(sp_document_width(doc), sp_document_height(doc)) + ); + // std::cout << "Using selection: PAGE" << std::endl; key = SELECTION_PAGE; break; @@ -753,7 +798,10 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) "value", selection_names[key]); if (key != SELECTION_CUSTOM) { - sp_export_set_area (base, bbox.x0, bbox.y0, bbox.x1, bbox.y1); + sp_export_set_area (base, bbox.min()[NR::X], + bbox.min()[NR::Y], + bbox.max()[NR::X], + bbox.max()[NR::Y]); } } // end of if ( SP_ACTIVE_DESKTOP ) @@ -794,7 +842,6 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) filename = g_strdup(""); } } - break; } case SELECTION_SELECTION: @@ -1025,7 +1072,7 @@ sp_export_export_clicked (GtkButton *button, GtkObject *base) /* Do export */ if (!sp_export_png_file (sp_desktop_document (SP_ACTIVE_DESKTOP), filename, - x0, y0, x1, y1, width, height, + x0, y0, x1, y1, width, height, xdpi, ydpi, nv->pagecolor, sp_export_progress_callback, base)) { gchar * error; @@ -1051,26 +1098,26 @@ sp_export_export_clicked (GtkButton *button, GtkObject *base) case SELECTION_DRAWING: { SPDocument * doc = SP_ACTIVE_DOCUMENT; Inkscape::XML::Node * repr = sp_document_repr_root(doc); - bool modified = FALSE; + bool modified = false; const gchar * temp_string; bool saved = sp_document_get_undo_sensitive(doc); - sp_document_set_undo_sensitive(doc, FALSE); + sp_document_set_undo_sensitive(doc, false); temp_string = repr->attribute("inkscape:export-filename"); if (temp_string == NULL || strcmp(temp_string, filename)) { repr->setAttribute("inkscape:export-filename", filename); - modified = TRUE; + modified = true; } temp_string = repr->attribute("inkscape:export-xdpi"); if (temp_string == NULL || xdpi != atof(temp_string)) { sp_repr_set_svg_double(repr, "inkscape:export-xdpi", xdpi); - modified = TRUE; + modified = true; } temp_string = repr->attribute("inkscape:export-ydpi"); if (temp_string == NULL || xdpi != atof(temp_string)) { sp_repr_set_svg_double(repr, "inkscape:export-ydpi", ydpi); - modified = TRUE; + modified = true; } if (modified) @@ -1081,10 +1128,10 @@ sp_export_export_clicked (GtkButton *button, GtkObject *base) case SELECTION_SELECTION: { const GSList * reprlst; SPDocument * doc = SP_ACTIVE_DOCUMENT; - bool modified = FALSE; + bool modified = false; bool saved = sp_document_get_undo_sensitive(doc); - sp_document_set_undo_sensitive(doc, FALSE); + sp_document_set_undo_sensitive(doc, false); reprlst = sp_desktop_selection(SP_ACTIVE_DESKTOP)->reprList(); for(; reprlst != NULL; reprlst = reprlst->next) { @@ -1098,18 +1145,18 @@ sp_export_export_clicked (GtkButton *button, GtkObject *base) temp_string = repr->attribute("inkscape:export-filename"); if (temp_string == NULL || strcmp(temp_string, filename)) { repr->setAttribute("inkscape:export-filename", filename); - modified = TRUE; + modified = true; } } temp_string = repr->attribute("inkscape:export-xdpi"); if (temp_string == NULL || xdpi != atof(temp_string)) { sp_repr_set_svg_double(repr, "inkscape:export-xdpi", xdpi); - modified = TRUE; + modified = true; } temp_string = repr->attribute("inkscape:export-ydpi"); if (temp_string == NULL || xdpi != atof(temp_string)) { sp_repr_set_svg_double(repr, "inkscape:export-ydpi", ydpi); - modified = TRUE; + modified = true; } } @@ -1136,7 +1183,13 @@ sp_export_browse_clicked (GtkButton *button, gpointer userdata) GtkWidget *fs, *fe; const gchar *filename; - fs = gtk_file_selection_new (_("Select a filename for exporting")); + fs = gtk_file_chooser_dialog_new (_("Select a filename for exporting"), + NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL ); + fe = (GtkWidget *)g_object_get_data (G_OBJECT (dlg), "filename"); sp_transientize (fs); @@ -1149,48 +1202,26 @@ sp_export_browse_clicked (GtkButton *button, gpointer userdata) filename = homedir_path(NULL); } - gtk_file_selection_set_filename (GTK_FILE_SELECTION (fs), filename); + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (fs), filename); - g_signal_connect ( GTK_OBJECT (GTK_FILE_SELECTION (fs)->ok_button), - "clicked", - G_CALLBACK (sp_export_browse_store), - (gpointer) fs ); + if (gtk_dialog_run (GTK_DIALOG (fs)) == GTK_RESPONSE_ACCEPT) + { + gchar *file; - g_signal_connect_swapped ( GTK_OBJECT (GTK_FILE_SELECTION (fs)->ok_button), - "clicked", - G_CALLBACK (gtk_widget_destroy), - (gpointer) fs ); + file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fs)); + gchar * utf8file = g_filename_to_utf8( file, -1, NULL, NULL, NULL ); + gtk_entry_set_text (GTK_ENTRY (fe), utf8file); + g_free(utf8file); - g_signal_connect_swapped ( GTK_OBJECT - (GTK_FILE_SELECTION (fs)->cancel_button), - "clicked", - G_CALLBACK (gtk_widget_destroy), - (gpointer) fs ); + g_object_set_data (G_OBJECT (dlg), "filename", fe); + g_free(file); + } - gtk_widget_show (fs); + gtk_widget_destroy (fs); return; } // end of sp_export_browse_clicked() -/// Called when OK clicked in file dialog -static void -sp_export_browse_store (GtkButton *button, gpointer userdata) -{ - GtkWidget *fs = (GtkWidget *)userdata, *fe; - const gchar *file; - - fe = (GtkWidget *)g_object_get_data (G_OBJECT (dlg), "filename"); - - file = gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)); - gchar * utf8file = g_filename_to_utf8( file, -1, NULL, NULL, NULL ); - gtk_entry_set_text (GTK_ENTRY (fe), utf8file); - g_free(utf8file); - - g_object_set_data (G_OBJECT (dlg), "filename", fe); - - return; -} // end of sp_export_browse_store() - // TODO: Move this to nr-rect-fns.h. static bool sp_export_bbox_equal(NR::Rect const &one, NR::Rect const &two) @@ -1758,7 +1789,7 @@ sp_export_value_get ( GtkObject *base, const gchar *key ) adj = (GtkAdjustment *)gtk_object_get_data (base, key); return adj->value; -} // end of sp_export_value_get() +} /** \brief Grabs a value in the export dialog and converts the unit