X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fmodule.cpp;h=5d6400399013eb9a425524b73d508e540804fcfe;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=8e3046d6ebad61338d76f6c8c6ed1481bd513f0b;hpb=c330cbb315df4b609c494e324b9b248a4e5f3598;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/module.cpp b/synfig-core/trunk/src/synfig/module.cpp index 8e3046d..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 @@ -60,7 +60,7 @@ Module::subsys_init(const String &prefix) #ifndef SYNFIG_LTDL_NO_STATIC //LTDL_SET_PRELOADED_SYMBOLS(); #endif - + if(lt_dlinit()) { error(_("Errors on lt_dlinit()")); @@ -69,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"); @@ -79,7 +80,7 @@ Module::subsys_init(const String &prefix) #endif lt_dladdsearchdir("/usr/local/lib/synfig/modules"); lt_dladdsearchdir("."); -#endif +#endif book_=new Book; return true; } @@ -88,17 +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& @@ -123,7 +129,7 @@ synfig::Module::Register(const String &module_name, ProgressCallback *callback) module=lt_dlopenext((string("lib")+module_name).c_str()); if(!module)module=lt_dlopenext(module_name.c_str()); - + if(!module) { if(callback)callback->warning(strprintf(_("Unable to find module \"%s\" (%s)"),module_name.c_str(),lt_dlerror())); @@ -131,7 +137,7 @@ synfig::Module::Register(const String &module_name, ProgressCallback *callback) } if(callback)callback->task(strprintf(_("Found module \"%s\""),module_name.c_str())); - + Module::constructor_type constructor=NULL; Handle mod; @@ -156,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())); @@ -182,7 +188,7 @@ synfig::Module::Register(const String &module_name, ProgressCallback *callback) } if(callback)callback->task(strprintf(_("Success for \"%s\""),module_name.c_str())); - + #endif - return false; + return true; }