Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-core / trunk / src / synfig / module.cpp
index 2bef9aa..5d64003 100644 (file)
@@ -1,20 +1,21 @@
 /* === 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 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+**     General Public License for more details.
 **     \endlegal
 */
 /* ========================================================================= */
 
 #include "module.h"
 #include "general.h"
-#include <ltdl.h>
 #include <ETL/stringf>
+
+#ifndef USE_CF_BUNDLES
+#include <ltdl.h>
+#endif
+
 #endif
 
 /* === M A C R O S ========================================================= */
@@ -51,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()"));
@@ -63,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");
@@ -73,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;
 }
@@ -82,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&
@@ -108,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;
 
@@ -147,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()));
@@ -173,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;
 }