X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fmodule.cpp;h=5d6400399013eb9a425524b73d508e540804fcfe;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=8016a9bb20775d25f89c015b6d54e02d23f9307f;hpb=e8a065f2385c219c511b57dac52786120bfa097d;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/module.cpp b/synfig-core/trunk/src/synfig/module.cpp index 8016a9b..5d64003 100644 --- a/synfig-core/trunk/src/synfig/module.cpp +++ b/synfig-core/trunk/src/synfig/module.cpp @@ -1,8 +1,8 @@ /* === S Y N F I G ========================================================= */ -/*! \file module.cpp +/*! \file synfig/module.cpp ** \brief writeme ** -** $Id: module.cpp,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -33,8 +33,12 @@ #include "module.h" #include "general.h" -#include #include + +#ifndef USE_CF_BUNDLES +#include +#endif + #endif /* === M A C R O S ========================================================= */ @@ -52,10 +56,11 @@ Module::Book *synfig::Module::book_; bool Module::subsys_init(const String &prefix) { +#ifndef USE_CF_BUNDLES #ifndef SYNFIG_LTDL_NO_STATIC //LTDL_SET_PRELOADED_SYMBOLS(); #endif - + if(lt_dlinit()) { error(_("Errors on lt_dlinit()")); @@ -64,7 +69,8 @@ Module::subsys_init(const String &prefix) } lt_dladdsearchdir("."); - lt_dladdsearchdir("~/.synfig/modules"); + if(getenv("HOME")) + lt_dladdsearchdir(strprintf("%s/.synfig/modules", getenv("HOME")).c_str()); lt_dladdsearchdir((prefix+"/lib/synfig/modules").c_str()); #ifdef LIBDIR lt_dladdsearchdir(LIBDIR"/synfig/modules"); @@ -74,7 +80,7 @@ Module::subsys_init(const String &prefix) #endif lt_dladdsearchdir("/usr/local/lib/synfig/modules"); lt_dladdsearchdir("."); - +#endif book_=new Book; return true; } @@ -83,15 +89,22 @@ bool Module::subsys_stop() { delete book_; - + +#ifndef USE_CF_BUNDLES lt_dlexit(); +#endif return true; } -bool -register_default_modules() +void +Module::register_default_modules(ProgressCallback *callback) { - return true; + #define REGISTER_MODULE(module) if (!Register(module, callback)) \ + throw std::runtime_error(strprintf(_("Unable to load module '%s'"), module)) + REGISTER_MODULE("lyr_freetype"); + REGISTER_MODULE("mod_geometry"); + REGISTER_MODULE("mod_gradient"); + REGISTER_MODULE("mod_particle"); } Module::Book& @@ -109,21 +122,22 @@ synfig::Module::Register(Module::Handle mod) bool synfig::Module::Register(const String &module_name, ProgressCallback *callback) { +#ifndef USE_CF_BUNDLES lt_dlhandle module; if(callback)callback->task(strprintf(_("Attempting to register \"%s\""),module_name.c_str())); module=lt_dlopenext((string("lib")+module_name).c_str()); if(!module)module=lt_dlopenext(module_name.c_str()); - + if(!module) { - if(callback)callback->error(strprintf(_("Unable to find module \"%s\" (%s)"),module_name.c_str(),lt_dlerror())); + if(callback)callback->warning(strprintf(_("Unable to find module \"%s\" (%s)"),module_name.c_str(),lt_dlerror())); return false; } if(callback)callback->task(strprintf(_("Found module \"%s\""),module_name.c_str())); - + Module::constructor_type constructor=NULL; Handle mod; @@ -148,7 +162,7 @@ synfig::Module::Register(const String &module_name, ProgressCallback *callback) // if(callback)callback->task(string("looking for -> lib")+module_name+"_LTX_new_instance()"); constructor=(Module::constructor_type )lt_dlsym(module,(string("_")+module_name+"_LTX_new_instance").c_str()); } - + if(constructor) { // if(callback)callback->task(strprintf("Executing callback for \"%s\"",module_name.c_str())); @@ -174,6 +188,7 @@ synfig::Module::Register(const String &module_name, ProgressCallback *callback) } if(callback)callback->task(strprintf(_("Success for \"%s\""),module_name.c_str())); - - return false; + +#endif + return true; }