Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-core / trunk / src / synfig / module.cpp
index 8e3046d..5d64003 100644 (file)
@@ -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;
 }