diff --git a/src/file.cpp b/src/file.cpp
index afca379ca58e0b024e6fa5cee6d34591a9398c77..f7cd6a09afb06e30f1811cd91eb8e23422171eb2 100644 (file)
--- a/src/file.cpp
+++ b/src/file.cpp
-
/** @file
* @brief File/Print operations
*/
#include <glibmm/i18n.h>
#include <libnr/nr-pixops.h>
-#include "application/application.h"
-#include "application/editor.h"
#include "desktop.h"
#include "desktop-handles.h"
#include "dialogs/export.h"
#include "selection.h"
#include "sp-namedview.h"
#include "style.h"
-#include "ui/dialog/filedialog.h"
#include "ui/dialog/ocaldialogs.h"
#include "ui/view/view-widget.h"
#include "uri.h"
#include "xml/rebase-hrefs.h"
-#include "streams-handles.h"
-#include "streams-webdav.h"
-#include "streams-ftp.h"
-#include "streams-http.h"
-
-//#include "buffersystem.h"
-#include <cstring>
-
#ifdef WITH_GNOME_VFS
# include <libgnomevfs/gnome-vfs.h>
#endif
-#ifdef WITH_INKBOARD
-#include "jabber_whiteboard/session-manager.h"
+#ifdef WITH_DBUS
+#include "extension/dbus/dbus-init.h"
#endif
+//#ifdef WITH_INKBOARD
+//#include "jabber_whiteboard/session-manager.h"
+//#endif
+
#ifdef WIN32
#include <windows.h>
#endif
char *templName = NULL;
if (templ.size()>0)
templName = (char *)templ.c_str();
- Document *doc = sp_document_new(templName, TRUE, true);
+ SPDocument *doc = sp_document_new(templName, TRUE, true);
g_return_val_if_fail(doc != NULL, NULL);
SPDesktop *dt;
- if (Inkscape::NSApplication::Application::getNewGui())
- {
- dt = Inkscape::NSApplication::Editor::createDesktop (doc);
- } else {
- SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL));
- g_return_val_if_fail(dtw != NULL, NULL);
- sp_document_unref(doc);
+ SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL));
+ g_return_val_if_fail(dtw != NULL, NULL);
+ sp_document_unref(doc);
+
+ sp_create_window(dtw, TRUE);
+ dt = static_cast<SPDesktop*>(dtw->view);
+ sp_namedview_window_from_document(dt);
+ sp_namedview_update_layers_from_document(dt);
+
+#ifdef WITH_DBUS
+ Inkscape::Extension::Dbus::dbus_init_desktop_interface(dt);
+#endif
- sp_create_window(dtw, TRUE);
- dt = static_cast<SPDesktop*>(dtw->view);
- sp_namedview_window_from_document(dt);
- sp_namedview_update_layers_from_document(dt);
- }
return dt;
}
-SPDesktop*
-sp_file_new_default()
+SPDesktop* sp_file_new_default()
{
std::list<gchar *> sources;
sources.push_back( profile_path("templates") ); // first try user's local dir
sources.push_back( g_strdup(INKSCAPE_TEMPLATESDIR) ); // then the system templates dir
-
- while (!sources.empty()) {
- gchar *dirname = sources.front();
- if ( Inkscape::IO::file_test( dirname, (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) ) ) {
-
- // TRANSLATORS: default.svg is localizable - this is the name of the default document
- // template. This way you can localize the default pagesize, translate the name of
- // the default layer, etc. If you wish to localize this file, please create a
- // localized share/templates/default.xx.svg file, where xx is your language code.
- char *default_template = g_build_filename(dirname, _("default.svg"), NULL);
- if (Inkscape::IO::file_test(default_template, G_FILE_TEST_IS_REGULAR)) {
- return sp_file_new(default_template);
+ std::list<gchar const*> baseNames;
+ gchar const* localized = _("default.svg");
+ if (strcmp("default.svg", localized) != 0) {
+ baseNames.push_back(localized);
+ }
+ baseNames.push_back("default.svg");
+ gchar *foundTemplate = 0;
+
+ for (std::list<gchar const*>::iterator nameIt = baseNames.begin(); (nameIt != baseNames.end()) && !foundTemplate; ++nameIt) {
+ for (std::list<gchar *>::iterator it = sources.begin(); (it != sources.end()) && !foundTemplate; ++it) {
+ gchar *dirname = *it;
+ if ( Inkscape::IO::file_test( dirname, (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) ) ) {
+
+ // TRANSLATORS: default.svg is localizable - this is the name of the default document
+ // template. This way you can localize the default pagesize, translate the name of
+ // the default layer, etc. If you wish to localize this file, please create a
+ // localized share/templates/default.xx.svg file, where xx is your language code.
+ char *tmp = g_build_filename(dirname, *nameIt, NULL);
+ if (Inkscape::IO::file_test(tmp, G_FILE_TEST_IS_REGULAR)) {
+ foundTemplate = tmp;
+ } else {
+ g_free(tmp);
+ }
}
}
- g_free(dirname);
- sources.pop_front();
}
- return sp_file_new("");
+ for (std::list<gchar *>::iterator it = sources.begin(); it != sources.end(); ++it) {
+ g_free(*it);
+ }
+
+ SPDesktop* desk = sp_file_new(foundTemplate ? foundTemplate : "");
+ if (foundTemplate) {
+ g_free(foundTemplate);
+ foundTemplate = 0;
+ }
+ return desk;
}
if (desktop)
desktop->setWaitingCursor();
- Document *doc = NULL;
+ SPDocument *doc = NULL;
try {
doc = Inkscape::Extension::open(key, uri.c_str());
} catch (Inkscape::Extension::Input::no_extension_found &e) {
desktop->clearWaitingCursor();
if (doc) {
- Document *existing = desktop ? sp_desktop_document(desktop) : NULL;
+ SPDocument *existing = desktop ? sp_desktop_document(desktop) : NULL;
if (existing && existing->virgin && replace_empty) {
// If the current desktop is empty, open the document there
desktop->change_document(doc);
sp_document_resized_signal_emit (doc, sp_document_width(doc), sp_document_height(doc));
} else {
- if (!Inkscape::NSApplication::Application::getNewGui()) {
- // create a whole new desktop and window
- SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL));
- sp_create_window(dtw, TRUE);
- desktop = static_cast<SPDesktop*>(dtw->view);
- } else {
- desktop = Inkscape::NSApplication::Editor::createDesktop (doc);
- }
+ // create a whole new desktop and window
+ SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL));
+ sp_create_window(dtw, TRUE);
+ desktop = static_cast<SPDesktop*>(dtw->view);
}
doc->virgin = FALSE;
}
}
-
-
-
-//NOTE1
-bool
-sp_file_open_uri(const Inkscape::URI &uri,
- Inkscape::Extension::Extension *key,
- bool add_to_recent, bool replace_empty)
-{
- Document *doc = NULL;
- try {
- doc = Inkscape::Extension::open(key, uri.toNativeFilename());
- } catch (Inkscape::Extension::Input::no_extension_found &e) {
- doc = NULL;
- } catch (Inkscape::Extension::Input::open_failed &e) {
- doc = NULL;
- }
-
- //FIXME1 KLUDGE switch
-
- //WebDAV
- /*
- if (std::strstr(uri.toString(), "http") != NULL)
- {
- if (strcmp(uri.toString(), "/http") >= 5//FIXME3 skip begining '/'
- ||
- strcmp(uri.toString(), "http") >= 4
- )
- {
-
- std::cout<<"+++ 'http' uri.toString->"<<uri.toString()<<std::endl;
-
- Inkscape::WebDAVBuffer wbuf;
- Inkscape::iwebdavstream *iws = new Inkscape::iwebdavstream(wbuf);
- Inkscape::BufferSystem bs(iws);
- bs.onInputStream();
- }
-
- } else*/
- std::cout<<"--> FTP , HTTP etc."<<std::endl;
-
- //FTP
- if (std::strstr(uri.toString(), "ftp") != NULL)
- {
- if (strcmp(uri.toString(), "/ftp") >= 4//FIXME3 skip begining '/'
- ||
- strcmp(uri.toString(), "ftp") >= 3
- )
- {
- std::cout<<"+++ 'ftp' uri.toString->"<<uri.toString()<<std::endl;
-
- Inkscape::FTPBuffer wbuf;
- Inkscape::iftpstream *iws = new Inkscape::iftpstream(wbuf);
- char *buf = new char[8192];
- *iws >> buf;
- std::cout<<"buf->"<<buf<<std::endl;
-
- //Inkscape::BufferSystem bs(iws);
- //bs.onInputStream();
- }
- //HTTP
- } else if (std::strstr(uri.toString(), "http") != NULL)
- {
- if (strcmp(uri.toString(), "/http") >= 5//FIXME3 skip begining '/'
- ||
- strcmp(uri.toString(), "http") >= 4
- )
- {
- std::cout<<"+++ 'http' uri.toString->"<<uri.toString()<<std::endl;
-
-/* Inkscape::HTTPBuffer wbuf;
- Inkscape::ihttpstream *iws = new Inkscape::ihttpstream(wbuf);
- char *buf = new char[8192];
- *iws >> buf;
- std::cout<<"buf->"<<buf<<std::endl;
-*/
- //Inkscape::BufferSystem bs(iws);
- //bs.onInputStream();
- }
-
- } /*else if ()
- {
-
- } */
-
-
-
- if (doc) {
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
- Document *existing = desktop ? sp_desktop_document(desktop) : NULL;
-
- if (existing && existing->virgin && replace_empty) {
- // If the current desktop is empty, open the document there
- sp_document_ensure_up_to_date (doc);
- desktop->change_document(doc);
- sp_document_resized_signal_emit (doc, sp_document_width(doc), sp_document_height(doc));
- } else {
- if (!Inkscape::NSApplication::Application::getNewGui()) {
- // create a whole new desktop and window
- SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL));
- sp_create_window(dtw, TRUE);
- desktop = static_cast<SPDesktop*>(dtw->view);
- } else {
- desktop = Inkscape::NSApplication::Editor::createDesktop (doc);
- }
- }
-
- doc->virgin = FALSE;
- // everyone who cares now has a reference, get rid of ours
- sp_document_unref(doc);
- // resize the window to match the document properties
- sp_namedview_window_from_document(desktop);
- sp_namedview_update_layers_from_document(desktop);
-
- if (add_to_recent) {
-//--tullarisc prefs_set_recent_file(SP_DOCUMENT_URI(doc), SP_DOCUMENT_NAME(doc));
- }
-
- return TRUE;
- } else {
- //FIXME 1
- //gchar *safeUri = Inkscape::IO::sanitizeString(uri.toNativeFilename());
- //gchar *text = g_strdup_printf(_("Failed to load the requested file %s"), safeUri);
- //sp_ui_error_dialog(text);
- //g_free(text);
- //g_free(safeUri);
- return FALSE;
- }
-}
-
-
/**
* Handle prompting user for "do you want to revert"? Revert on "OK"
*/
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
g_assert(desktop != NULL);
- Document *doc = sp_desktop_document(desktop);
+ SPDocument *doc = sp_desktop_document(desktop);
g_assert(doc != NULL);
Inkscape::XML::Node *repr = sp_document_repr_root(doc);
/**
* Display an file Open selector. Open a document if OK is pressed.
* Can select single or multiple files for opening.
- * NOTE1
*/
void
sp_file_open_dialog(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*data*/)
@@ -662,7 +535,7 @@ sp_file_open_dialog(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
open_path.append(G_DIR_SEPARATOR_S);
prefs->setString("/dialogs/open/path", open_path);
- sp_file_open_uri(Inkscape::URI(fileName.c_str()), selection);
+ sp_file_open(fileName, selection);
}
return;
@@ -681,7 +554,7 @@ sp_file_open_dialog(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
void
sp_file_vacuum()
{
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
unsigned int diff = vacuum_document (doc);
* document; is true for normal save, false for temporary saves
*/
static bool
-file_save(Gtk::Window &parentWindow, Document *doc, const Glib::ustring &uri,
- Inkscape::Extension::Extension *key, bool saveas, bool official)
+file_save(Gtk::Window &parentWindow, SPDocument *doc, const Glib::ustring &uri,
+ Inkscape::Extension::Extension *key, bool checkoverwrite, bool official,
+ Inkscape::Extension::FileSaveMethod save_method)
{
if (!doc || uri.size()<1) //Safety check
return false;
try {
Inkscape::Extension::save(key, doc, uri.c_str(),
- false,
- saveas, official);
+ false,
+ checkoverwrite, official,
+ save_method);
} catch (Inkscape::Extension::Output::no_extension_found &e) {
gchar *safeUri = Inkscape::IO::sanitizeString(uri.c_str());
gchar *text = g_strdup_printf(_("No Inkscape extension found to save document (%s). This may have been caused by an unknown filename extension."), safeUri);
g_free(text);
g_free(safeUri);
return FALSE;
+ } catch (Inkscape::Extension::Output::file_read_only &e) {
+ gchar *safeUri = Inkscape::IO::sanitizeString(uri.c_str());
+ gchar *text = g_strdup_printf(_("File %s is write protected. Please remove write protection and try again."), safeUri);
+ SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("Document not saved."));
+ sp_ui_error_dialog(text);
+ g_free(text);
+ g_free(safeUri);
+ return FALSE;
} catch (Inkscape::Extension::Output::save_failed &e) {
gchar *safeUri = Inkscape::IO::sanitizeString(uri.c_str());
gchar *text = g_strdup_printf(_("File %s could not be saved."), safeUri);
SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("Document not saved."));
return FALSE;
} catch (Inkscape::Extension::Output::no_overwrite &e) {
- return sp_file_save_dialog(parentWindow, doc);
+ return sp_file_save_dialog(parentWindow, doc, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_AS);
+ } catch (...) {
+ SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("Document not saved."));
+ return FALSE;
}
SP_ACTIVE_DESKTOP->event_log->rememberFileSave();
* Used only for remote saving using VFS and a specific uri. Gets the file at the /tmp.
*/
bool
-file_save_remote(Document */*doc*/,
+file_save_remote(SPDocument */*doc*/,
#ifdef WITH_GNOME_VFS
const Glib::ustring &uri,
#else
/**
* Display a SaveAs dialog. Save the document if OK pressed.
- *
- * \param ascopy (optional) wether to set the documents->uri to the new filename or not
*/
bool
-sp_file_save_dialog(Gtk::Window &parentWindow, Document *doc, bool is_copy)
+sp_file_save_dialog(Gtk::Window &parentWindow, SPDocument *doc, Inkscape::Extension::FileSaveMethod save_method)
{
-
- Inkscape::XML::Node *repr = sp_document_repr_root(doc);
Inkscape::Extension::Output *extension = 0;
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool is_copy = (save_method == Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY);
- //# Get the default extension name
+ // Note: default_extension has the format "org.inkscape.output.svg.inkscape", whereas
+ // filename_extension only uses ".svg"
Glib::ustring default_extension;
- char *attr = (char *)repr->attribute("inkscape:output_extension");
- if (!attr) {
- Glib::ustring attr2 = prefs->getString("/dialogs/save_as/default");
- if(!attr2.empty()) default_extension = attr2;
- } else {
- default_extension = attr;
- }
+ Glib::ustring filename_extension = ".svg";
+
+ default_extension= Inkscape::Extension::get_file_save_extension(save_method);
//g_message("%s: extension name: '%s'", __FUNCTION__, default_extension);
+ extension = dynamic_cast<Inkscape::Extension::Output *>
+ (Inkscape::Extension::db.get(default_extension.c_str()));
+
+ if (extension)
+ filename_extension = extension->get_extension();
+
Glib::ustring save_path;
Glib::ustring save_loc;
- if (doc->uri == NULL) {
- char formatBuf[256];
- int i = 1;
-
- Glib::ustring filename_extension = ".svg";
- extension = dynamic_cast<Inkscape::Extension::Output *>
- (Inkscape::Extension::db.get(default_extension.c_str()));
- //g_warning("%s: extension ptr: 0x%x", __FUNCTION__, (unsigned int)extension);
- if (extension)
- filename_extension = extension->get_extension();
+ save_path = Inkscape::Extension::get_file_save_path(doc, save_method);
- Glib::ustring attr3 = prefs->getString("/dialogs/save_as/path");
- if (!attr3.empty())
- save_path = attr3;
+ if (!Inkscape::IO::file_test(save_path.c_str(),
+ (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
+ save_path = "";
- if (!Inkscape::IO::file_test(save_path.c_str(),
- (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
- save_path = "";
+ if (save_path.size()<1)
+ save_path = g_get_home_dir();
- if (save_path.size()<1)
- save_path = g_get_home_dir();
+ save_loc = save_path;
+ save_loc.append(G_DIR_SEPARATOR_S);
- save_loc = save_path;
- save_loc.append(G_DIR_SEPARATOR_S);
+ char formatBuf[256];
+ int i = 1;
+ if (!doc->uri) {
+ // We are saving for the first time; create a unique default filename
snprintf(formatBuf, 255, _("drawing%s"), filename_extension.c_str());
save_loc.append(formatBuf);
save_loc.append(formatBuf);
}
} else {
- save_loc = Glib::build_filename(Glib::path_get_dirname(doc->uri),
- Glib::path_get_basename(doc->uri));
+ snprintf(formatBuf, 255, _("%s"), Glib::path_get_basename(doc->uri).c_str());
+ save_loc.append(formatBuf);
}
// convert save_loc from utf-8 to locale
Inkscape::UI::Dialog::SVG_TYPES,
dialog_title,
default_extension,
- doc_title ? doc_title : ""
+ doc_title ? doc_title : "",
+ save_method
);
saveDialog->setSelectionType(extension);
else
g_warning( "Error converting save filename to UTF-8." );
- success = file_save(parentWindow, doc, fileName, selectionType, TRUE, !is_copy);
+ // FIXME: does the argument !is_copy really convey the correct meaning here?
+ success = file_save(parentWindow, doc, fileName, selectionType, TRUE, !is_copy, save_method);
if (success && SP_DOCUMENT_URI(doc)) {
sp_file_add_recent(SP_DOCUMENT_URI(doc));
}
save_path = Glib::path_get_dirname(fileName);
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setString("/dialogs/save_as/path", save_path);
+ Inkscape::Extension::store_save_path_in_prefs(save_path, save_method);
return success;
}
* Save a document, displaying a SaveAs dialog if necessary.
*/
bool
-sp_file_save_document(Gtk::Window &parentWindow, Document *doc)
+sp_file_save_document(Gtk::Window &parentWindow, SPDocument *doc)
{
bool success = true;
if (doc->isModifiedSinceSave()) {
- Inkscape::XML::Node *repr = sp_document_repr_root(doc);
- if ( doc->uri == NULL
- || repr->attribute("inkscape:output_extension") == NULL )
+ if ( doc->uri == NULL )
{
- return sp_file_save_dialog(parentWindow, doc, FALSE);
+ // Hier sollte in Argument mitgegeben werden, das anzeigt, da� das Dokument das erste
+ // Mal gespeichert wird, so da� als default .svg ausgew�hlt wird und nicht die zuletzt
+ // benutzte "Save as ..."-Endung
+ return sp_file_save_dialog(parentWindow, doc, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG);
} else {
- gchar const *fn = g_strdup(doc->uri);
- gchar const *ext = repr->attribute("inkscape:output_extension");
- success = file_save(parentWindow, doc, fn, Inkscape::Extension::db.get(ext), FALSE, TRUE);
- g_free((void *) fn);
+ Glib::ustring extension = Inkscape::Extension::get_file_save_extension(Inkscape::Extension::FILE_SAVE_METHOD_SAVE_AS);
+ Glib::ustring fn = g_strdup(doc->uri);
+ // Try to determine the extension from the uri; this may not lead to a valid extension,
+ // but this case is caught in the file_save method below (or rather in Extension::save()
+ // further down the line).
+ Glib::ustring ext = "";
+ Glib::ustring::size_type pos = fn.rfind('.');
+ if (pos != Glib::ustring::npos) {
+ // FIXME: this could/should be more sophisticated (see FileSaveDialog::appendExtension()),
+ // but hopefully it's a reasonable workaround for now
+ ext = fn.substr( pos );
+ }
+ success = file_save(parentWindow, doc, fn, Inkscape::Extension::db.get(ext.c_str()), FALSE, TRUE, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_AS);
+ if (success == false) {
+ // give the user the chance to change filename or extension
+ return sp_file_save_dialog(parentWindow, doc, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG);
+ }
}
} else {
SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("No changes need to be saved."));
@@ -1028,7 +920,7 @@ sp_file_save_as(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*data*
if (!SP_ACTIVE_DOCUMENT)
return false;
sp_namedview_document_from_window(SP_ACTIVE_DESKTOP);
- return sp_file_save_dialog(parentWindow, SP_ACTIVE_DOCUMENT, FALSE);
+ return sp_file_save_dialog(parentWindow, SP_ACTIVE_DOCUMENT, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_AS);
}
@@ -1042,7 +934,7 @@ sp_file_save_a_copy(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
if (!SP_ACTIVE_DOCUMENT)
return false;
sp_namedview_document_from_window(SP_ACTIVE_DESKTOP);
- return sp_file_save_dialog(parentWindow, SP_ACTIVE_DOCUMENT, TRUE);
+ return sp_file_save_dialog(parentWindow, SP_ACTIVE_DOCUMENT, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY);
}
@@ -1054,13 +946,13 @@ sp_file_save_a_copy(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
* Import a resource. Called by sp_file_import()
*/
void
-file_import(Document *in_doc, const Glib::ustring &uri,
+file_import(SPDocument *in_doc, const Glib::ustring &uri,
Inkscape::Extension::Extension *key)
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
//DEBUG_MESSAGE( fileImport, "file_import( in_doc:%p uri:[%s], key:%p", in_doc, uri, key );
- Document *doc;
+ SPDocument *doc;
try {
doc = Inkscape::Extension::open(key, uri.c_str());
} catch (Inkscape::Extension::Input::no_extension_found &e) {
{
static Glib::ustring import_path;
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
if (!doc)
return;
## E X P O R T
######################*/
-//#define NEW_EXPORT_DIALOG
-
-
#ifdef NEW_EXPORT_DIALOG
* Display an Export dialog, export as the selected type if OK pressed
*/
bool
-sp_file_export_dialog(void *widget)
+sp_file_export_dialog(Gtk::Window &parentWindow)
{
//# temp hack for 'doc' until we can switch to this dialog
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
Glib::ustring export_path;
Glib::ustring export_loc;
- Inkscape::XML::Node *repr = sp_document_repr_root(doc);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Inkscape::Extension::Output *extension;
//# Get the default extension name
- Glib::ustring default_extension;
- char *attr = (char *)repr->attribute("inkscape:output_extension");
- if (!attr) {
- Glib::ustring attr2 = prefs->getString("/dialogs/save_as/default");
- if(!attr2.empty()) default_extension = attr2;
- } else {
- default_extension = attr;
+ Glib::ustring default_extension = prefs->getString("/dialogs/save_export/default");
+ if(default_extension.empty()) {
+ // FIXME: Is this a good default? Should there be a macro for the string?
+ default_extension = "org.inkscape.output.png.cairo";
}
//g_message("%s: extension name: '%s'", __FUNCTION__, default_extension);
if (extension)
filename_extension = extension->get_extension();
- Glib::ustring attr3 = prefs->getString("/dialogs/save_as/path");
+ Glib::ustring attr3 = prefs->getString("/dialogs/save_export/path");
if (!attr3.empty())
export_path = attr3;
if ( export_path_local.size() > 0)
export_path = export_path_local;
- //# Show the SaveAs dialog
+ //# Show the Export dialog
Inkscape::UI::Dialog::FileExportDialog *exportDialogInstance =
Inkscape::UI::Dialog::FileExportDialog::create(
+ parentWindow,
export_path,
Inkscape::UI::Dialog::EXPORT_TYPES,
(char const *) _("Select file to export to"),
else
g_warning( "Error converting save filename to UTF-8." );
- success = file_save(doc, fileName, selectionType, TRUE, FALSE);
+ success = file_save(parentWindow, doc, fileName, selectionType, TRUE, FALSE, Inkscape::Extension::FILE_SAVE_METHOD_EXPORT);
if (success) {
Glib::RefPtr<Gtk::RecentManager> recent = Gtk::RecentManager::get_default();
}
export_path = fileName;
- prefs->setString("/dialogs/save_as/path", export_path);
+ prefs->setString("/dialogs/save_export/path", export_path);
return success;
}
*
*/
bool
-sp_file_export_dialog(void */*widget*/)
+sp_file_export_dialog(Gtk::Window &/*parentWindow*/)
{
sp_export_dialog();
return true;
/**
* Display an Export dialog, export as the selected type if OK pressed
*/
+/*
bool
sp_file_export_to_ocal_dialog(Gtk::Window &parentWindow)
{
if (!SP_ACTIVE_DOCUMENT)
return false;
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
Glib::ustring export_path;
Glib::ustring export_loc;
fileName = filePath;
- success = file_save(parentWindow, doc, filePath, selectionType, FALSE, FALSE);
+ success = file_save(parentWindow, doc, filePath, selectionType, FALSE, FALSE, Inkscape::Extension::FILE_SAVE_METHOD_EXPORT);
if (!success){
gchar *text = g_strdup_printf(_("Error saving a temporary copy"));
return success;
}
-
+*/
/**
* Export the current document to OCAL
*/
+/*
void
sp_file_export_to_ocal(Gtk::Window &parentWindow)
{
if (success)
SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Document exported..."));
}
-
+*/
/*######################
## I M P O R T F R O M O C A L
{
static Glib::ustring import_path;
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
if (!doc)
return;
void
sp_file_print(Gtk::Window& parentWindow)
{
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
if (doc)
sp_print_document(parentWindow, doc);
}
sp_file_print_preview(gpointer /*object*/, gpointer /*data*/)
{
- Document *doc = SP_ACTIVE_DOCUMENT;
+ SPDocument *doc = SP_ACTIVE_DOCUMENT;
if (doc)
sp_print_preview_document(doc);