From cf457eea72b81850da5503d0091952871135c1fd Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Wed, 28 Jun 2017 09:04:16 +0200 Subject: Refactor profile directory use and promote IO::Resource get_path and get_filename methods --- src/extension/init.cpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'src/extension/init.cpp') diff --git a/src/extension/init.cpp b/src/extension/init.cpp index af7af2cb1..f2e74377d 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -60,6 +60,7 @@ #endif #include "preferences.h" #include "io/sys.h" +#include "io/resource.h" #ifdef WITH_DBUS #include "dbus/dbus-init.h" #endif @@ -106,6 +107,8 @@ #include "init.h" +using namespace Inkscape::IO::Resource; + namespace Inkscape { namespace Extension { @@ -113,7 +116,7 @@ namespace Extension { the extension directory and parsed */ #define SP_MODULE_EXTENSION "inx" -static void build_module_from_dir(gchar const *dirname); +static void build_module_from_domain(Domain domain); static void check_extensions(); /** @@ -150,7 +153,7 @@ update_pref(Glib::ustring const &pref_path, * Invokes the init routines for internal modules. * * This should be a list of all the internal modules that need to initialized. This is just a - * convinent place to put them. Also, this function calls build_module_from_dir to parse the + * convinent place to put them. Also, this function calls build_module_from_domain to parse the * Inkscape extensions directory. */ void @@ -240,18 +243,8 @@ init() Internal::Filter::Filter::filters_all(); - /* Load search path for extensions */ - if (Inkscape::Extension::Extension::search_path.size() == 0) - { - Inkscape::Extension::Extension::search_path.push_back(Inkscape::Application::profile_path("extensions")); - - Inkscape::Extension::Extension::search_path.push_back(g_strdup(INKSCAPE_EXTENSIONDIR)); - - } - - for (unsigned int i=0; i Date: Fri, 30 Jun 2017 15:02:50 +0200 Subject: Replace ImageMagic with GraphicsMagic ... just a matter of taste. But both wanna be initialized: fixed. --- src/extension/init.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/extension/init.cpp') diff --git a/src/extension/init.cpp b/src/extension/init.cpp index f2e74377d..a40196a74 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -66,6 +66,7 @@ #endif #ifdef WITH_IMAGE_MAGICK +#include #include "internal/bitmap/adaptiveThreshold.h" #include "internal/bitmap/addNoise.h" #include "internal/bitmap/blur.h" @@ -204,6 +205,8 @@ init() /* Raster Effects */ #ifdef WITH_IMAGE_MAGICK + Magick::InitializeMagick(NULL); + Internal::Bitmap::AdaptiveThreshold::init(); Internal::Bitmap::AddNoise::init(); Internal::Bitmap::Blur::init(); -- cgit v1.2.3 From 7dc5626af3eb924fa381c46491cd49178a78cd73 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Sun, 2 Jul 2017 16:47:03 +0200 Subject: Move directory scanners to new get_filenames(...) calls --- src/extension/init.cpp | 66 +++----------------------------------------------- 1 file changed, 4 insertions(+), 62 deletions(-) (limited to 'src/extension/init.cpp') diff --git a/src/extension/init.cpp b/src/extension/init.cpp index a40196a74..9830b0176 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -117,7 +117,6 @@ namespace Extension { the extension directory and parsed */ #define SP_MODULE_EXTENSION "inx" -static void build_module_from_domain(Domain domain); static void check_extensions(); /** @@ -154,8 +153,7 @@ update_pref(Glib::ustring const &pref_path, * Invokes the init routines for internal modules. * * This should be a list of all the internal modules that need to initialized. This is just a - * convinent place to put them. Also, this function calls build_module_from_domain to parse the - * Inkscape extensions directory. + * convinent place to put them. */ void init() @@ -246,8 +244,9 @@ init() Internal::Filter::Filter::filters_all(); - build_module_from_domain(USER); - build_module_from_domain(SYSTEM); + for(auto &filename: get_filenames(EXTENSIONS, {SP_MODULE_EXTENSION})) { + build_from_file(filename.c_str()); + } /* this is at the very end because it has several catch-alls * that are possibly over-ridden by other extensions (such as @@ -267,63 +266,6 @@ init() ); } -/** - * \return none - * \brief This function parses a directory for files of SP_MODULE_EXTENSION - * type and loads them. - * \param dirname The directory that should be searched for modules - * - * Here is just a basic function that moves through a directory. It looks at every entry, and - * compares its filename with SP_MODULE_EXTENSION. Of those that pass, build_from_file is called - * with their filenames. - */ -static void -build_module_from_domain(Domain domain) -{ - char const *dirname = get_path(domain, EXTENSIONS); - - if (!dirname) { - g_warning("%s", _("Null external module directory name. Modules will not be loaded.")); - return; - } - - if (!Glib::file_test(std::string(dirname), Glib::FILE_TEST_EXISTS | Glib::FILE_TEST_IS_DIR)) { - return; - } - - // TODO: We may have to get to why this is needed, since it seems redundent. - Inkscape::Extension::Extension::search_path.push_back(dirname); - - GError *err; - GDir *directory = g_dir_open(dirname, 0, &err); - if (!directory) { - gchar *safeDir = Inkscape::IO::sanitizeString(dirname); - g_warning(_("Modules directory (%s) is unavailable. External modules in that directory will not be loaded."), safeDir); - g_free(safeDir); - return; - } - - gchar *filename; - while ((filename = (gchar *)g_dir_read_name(directory)) != NULL) { - if (strlen(filename) < strlen(SP_MODULE_EXTENSION)) { - continue; - } - - if (strcmp(SP_MODULE_EXTENSION, filename + (strlen(filename) - strlen(SP_MODULE_EXTENSION)))) { - continue; - } - - gchar *pathname = g_build_filename(dirname, filename, (char *) NULL); - build_from_file(pathname); - g_free(pathname); - } - - g_dir_close(directory); - - return; -} - - static void check_extensions_internal(Extension *in_plug, gpointer in_data) { -- cgit v1.2.3