summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShlomi Fish <shlomif@shlomifish.org>2017-01-04 01:32:40 +0000
committerShlomi Fish <shlomif@shlomifish.org>2017-01-04 01:32:40 +0000
commitbfcc1fb5a5142a71469834cac2d507f15626a8b5 (patch)
treed18131ceb84bddf14eb6011dd3ae16e560af04e3 /src
parentRename id in comment to make it more according to the code. (diff)
downloadinkscape-bfcc1fb5a5142a71469834cac2d507f15626a8b5.tar.gz
inkscape-bfcc1fb5a5142a71469834cac2d507f15626a8b5.zip
Extract some common code into a routine.
(bzr r15369.1.8)
Diffstat (limited to 'src')
-rw-r--r--src/extension/find_extension_by_mime.h36
-rw-r--r--src/ui/clipboard.cpp11
-rw-r--r--src/ui/interface.cpp11
3 files changed, 40 insertions, 18 deletions
diff --git a/src/extension/find_extension_by_mime.h b/src/extension/find_extension_by_mime.h
new file mode 100644
index 000000000..1686c62e4
--- /dev/null
+++ b/src/extension/find_extension_by_mime.h
@@ -0,0 +1,36 @@
+/**
+ * @file
+ * Find an extension by its mime type.
+ */
+/* Authors:
+ * Lauris Kaplinski <lauris@kaplinski.com>
+ * Frank Felfe <innerspace@iname.com>
+ * bulia byak <buliabyak@users.sf.net>
+ * Jon A. Cruz <jon@joncruz.org>
+ * Abhishek Sharma
+ * Kris De Gussem <Kris.DeGussem@gmail.com>
+ *
+ * Copyright (C) 2012 Kris De Gussem
+ * Copyright (C) 2010 authors
+ * Copyright (C) 1999-2005 authors
+ * Copyright (C) 2004 David Turner
+ * Copyright (C) 2001-2002 Ximian, Inc.
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+namespace Inkscape {
+namespace Extension {
+static inline Inkscape::Extension::Extension *find_by_mime(const char *const mime)
+{
+
+ Inkscape::Extension::DB::InputList o;
+ Inkscape::Extension::db.get_input_list(o);
+ Inkscape::Extension::DB::InputList::const_iterator i = o.begin();
+ while (i != o.end() && strcmp((*i)->get_mimetype(), mime) != 0) {
+ ++i;
+ }
+ return *i;
+}
+}
+}
diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp
index a8e708597..73b632a2c 100644
--- a/src/ui/clipboard.cpp
+++ b/src/ui/clipboard.cpp
@@ -76,6 +76,7 @@
#include "sp-namedview.h"
#include "persp3d.h"
#include "object-set.h"
+#include "extension/find_extension_by_mime.h"
/// Made up mimetype to represent Gdk::Pixbuf clipboard contents.
#define CLIPBOARD_GDK_PIXBUF_TARGET "image/x-gdk-pixbuf"
@@ -945,15 +946,7 @@ bool ClipboardManagerImpl::_pasteImage(SPDocument *doc)
return false;
}
- // TODO unify with interface.cpp's sp_ui_drag_data_received()
- // AARGH stupid
- Inkscape::Extension::DB::InputList o;
- Inkscape::Extension::db.get_input_list(o);
- Inkscape::Extension::DB::InputList::const_iterator i = o.begin();
- while (i != o.end() && strcmp( (*i)->get_mimetype(), "image/png" ) != 0) {
- ++i;
- }
- Inkscape::Extension::Extension *png = *i;
+ Inkscape::Extension::Extension *png = Inkscape::Extension::find_by_mime("image/png");
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring attr_saved = prefs->getString("/dialogs/import/link");
bool ask_saved = prefs->getBool("/dialogs/import/ask");
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index d50c56b76..5e85065d1 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -72,6 +72,7 @@
#include "sp-mask.h"
#include "message-stack.h"
#include "ui/dialog/layer-properties.h"
+#include "extension/find_extension_by_mime.h"
using Inkscape::DocumentUndo;
@@ -1234,15 +1235,7 @@ sp_ui_drag_data_received(GtkWidget *widget,
case PNG_DATA:
case JPEG_DATA:
case IMAGE_DATA: {
- const char *mime = (info == JPEG_DATA ? "image/jpeg" : "image/png");
-
- Inkscape::Extension::DB::InputList o;
- Inkscape::Extension::db.get_input_list(o);
- Inkscape::Extension::DB::InputList::const_iterator i = o.begin();
- while (i != o.end() && strcmp( (*i)->get_mimetype(), mime ) != 0) {
- ++i;
- }
- Inkscape::Extension::Extension *ext = *i;
+ Inkscape::Extension::Extension *ext = Inkscape::Extension::find_by_mime((info == JPEG_DATA ? "image/jpeg" : "image/png"));
bool save = (strcmp(ext->get_param_optiongroup("link"), "embed") == 0);
ext->set_param_optiongroup("link", "embed");
ext->set_gui(false);