diff --git a/src/file.cpp b/src/file.cpp
index d38efb3046cd20f16990adef47864758f7d43770..5c729eeeb65b1032a8c61cb0ca255d6bdbcad34a 100644 (file)
--- a/src/file.cpp
+++ b/src/file.cpp
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-/**
- * Note: This file needs to be cleaned up extensively.
+/** @file
+ * @note This file needs to be cleaned up extensively.
* What it probably needs is to have one .h file for
* the API, and two or more .cpp files for the implementations.
*/
# include "config.h"
#endif
+#include <gtk/gtk.h>
#include <glib/gmem.h>
#include <libnr/nr-pixops.h>
void dump_str(gchar const *str, gchar const *prefix);
void dump_ustr(Glib::ustring const &ustr);
+// what gets passed here is not actually an URI... it is an UTF-8 encoded filename (!)
+static void sp_file_add_recent(gchar const *uri)
+{
+ GtkRecentManager *recent = gtk_recent_manager_get_default();
+ gchar *fn = g_filename_from_utf8(uri, -1, NULL, NULL, NULL);
+ if (fn) {
+ gchar *uri_to_add = g_filename_to_uri(fn, NULL, NULL);
+ if (uri_to_add) {
+ gtk_recent_manager_add_item(recent, uri_to_add);
+ g_free(uri_to_add);
+ }
+ g_free(fn);
+ }
+}
+
/*######################
## N E W
Inkscape::Extension::Extension *key,
bool add_to_recent, bool replace_empty)
{
+ SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if (desktop)
+ desktop->setWaitingCursor();
+
SPDocument *doc = NULL;
try {
doc = Inkscape::Extension::open(key, uri.c_str());
doc = NULL;
}
+ if (desktop)
+ desktop->clearWaitingCursor();
+
if (doc) {
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
SPDocument *existing = desktop ? sp_desktop_document(desktop) : NULL;
if (existing && existing->virgin && replace_empty) {
sp_namedview_update_layers_from_document(desktop);
if (add_to_recent) {
- prefs_set_recent_file(SP_DOCUMENT_URI(doc), SP_DOCUMENT_NAME(doc));
+ sp_file_add_recent(SP_DOCUMENT_URI(doc));
}
return TRUE;
@@ -386,7 +408,7 @@ sp_file_open_dialog(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
if(open_path.empty())
{
- Glib::ustring attr = prefs->getString("dialogs.open", "path");
+ Glib::ustring attr = prefs->getString("/dialogs/open/path");
if (!attr.empty()) open_path = attr;
}
@@ -498,7 +520,7 @@ sp_file_open_dialog(Gtk::Window &parentWindow, gpointer /*object*/, gpointer /*d
open_path = Glib::path_get_dirname (fileName);
open_path.append(G_DIR_SEPARATOR_S);
- prefs->setString("dialogs.open", "path", open_path);
+ prefs->setString("/dialogs/open/path", open_path);
sp_file_open(fileName, selection);
}
g_free(text);
g_free(safeUri);
return FALSE;
+ } catch (Inkscape::Extension::Output::save_cancelled &e) {
+ 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);
}
Glib::ustring default_extension;
char *attr = (char *)repr->attribute("inkscape:output_extension");
if (!attr) {
- Glib::ustring attr2 = prefs->getString("dialogs.save_as", "default");
+ Glib::ustring attr2 = prefs->getString("/dialogs/save_as/default");
if(!attr2.empty()) default_extension = attr2;
} else {
default_extension = attr;
if (extension)
filename_extension = extension->get_extension();
- Glib::ustring attr3 = prefs->getString("dialogs.save_as", "path");
+ Glib::ustring attr3 = prefs->getString("/dialogs/save_as/path");
if (!attr3.empty())
save_path = attr3;
success = file_save(parentWindow, doc, fileName, selectionType, TRUE, !is_copy);
- if (success)
- prefs_set_recent_file(SP_DOCUMENT_URI(doc), SP_DOCUMENT_NAME(doc));
+ if (success) {
+ 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);
+ prefs->setString("/dialogs/save_as/path", save_path);
return success;
}
// object" option.
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- bool const saved_pref = prefs->getBool("options.transform", "pattern", true);
- prefs->setBool("options.transform", "pattern", true);
+ bool const saved_pref = prefs->getBool("/options/transform/pattern", true);
+ prefs->setBool("/options/transform/pattern", true);
sp_document_ensure_up_to_date(sp_desktop_document(desktop));
- boost::optional<Geom::Rect> sel_bbox = selection->bounds_2geom();
+ Geom::OptRect sel_bbox = selection->bounds();
if (sel_bbox) {
Geom::Point m( desktop->point() - sel_bbox->midpoint() );
sp_selection_move_relative(selection, m);
}
- prefs->setBool("options.transform", "pattern", saved_pref);
+ prefs->setBool("/options/transform/pattern", saved_pref);
}
}
Glib::ustring default_extension;
char *attr = (char *)repr->attribute("inkscape:output_extension");
if (!attr) {
- Glib::ustring attr2 = prefs->getString("dialogs.save_as", "default");
+ Glib::ustring attr2 = prefs->getString("/dialogs/save_as/default");
if(!attr2.empty()) default_extension = attr2;
} else {
default_extension = attr;
if (extension)
filename_extension = extension->get_extension();
- Glib::ustring attr3 = prefs->getString("dialogs.save_as", "path");
+ Glib::ustring attr3 = prefs->getString("/dialogs/save_as/path");
if (!attr3.empty())
export_path = attr3;
success = file_save(doc, fileName, selectionType, TRUE, FALSE);
- if (success)
- prefs_set_recent_file(SP_DOCUMENT_URI(doc), SP_DOCUMENT_NAME(doc));
+ if (success) {
+ Glib::RefPtr<Gtk::RecentManager> recent = Gtk::RecentManager::get_default();
+ recent->add_item(SP_DOCUMENT_URI(doc));
+ }
export_path = fileName;
- prefs->setString("dialogs.save_as", "path", export_path);
+ prefs->setString("/dialogs/save_as/path", export_path);
return success;
}
// Create the uri
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring uri = "dav://";
- Glib::ustring username = prefs->getString("options.ocalusername", "str");
- Glib::ustring password = prefs->getString("options.ocalpassword", "str");
+ Glib::ustring username = prefs->getString("/options/ocalusername/str");
+ Glib::ustring password = prefs->getString("/options/ocalpassword/str");
if (username.empty() || password.empty())
{
if(!gotSuccess)
uri.append(":");
uri.append(password);
uri.append("@");
- uri.append(prefs->getString("options.ocalurl", "str"));
+ uri.append(prefs->getString("/options/ocalurl/str"));
uri.append("/dav.php/");
uri.append(Glib::path_get_basename(fileName));