X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fmain.cpp;h=61a263b1c574f0e50140f3d1bee01491ca0ed5d3;hb=4ba22fb51d97f1ecce04dcc5e40569a4354c1bae;hp=b905c2a03aeaa58e8748553613a41119128495e0;hpb=6390167d6b2b1fdd04505017b8ec43b18ac167b8;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/main.cpp b/synfig-core/trunk/src/synfig/main.cpp index b905c2a..61a263b 100644 --- a/synfig-core/trunk/src/synfig/main.cpp +++ b/synfig-core/trunk/src/synfig/main.cpp @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -77,13 +77,6 @@ static etl::reference_counter synfig_ref_count_(0); /* === M E T H O D S ======================================================= */ - - - - - - - const char * synfig::get_version() { @@ -100,14 +93,6 @@ synfig::get_build_date() return __DATE__; } -const char * -synfig::get_build_time() -{ - return __TIME__; -} - -extern const char *get_build_time(); - bool synfig::check_version_(int version,int vec_size, int color_size,int canvas_size,int layer_size) { @@ -148,60 +133,25 @@ static void broken_pipe_signal (int /*sig*/) { bool retrieve_modules_to_load(String filename,std::list &modules_to_load) { - if(filename=="standard") + std::ifstream file(filename.c_str()); + + if(!file) { + // warning("Cannot open "+filename); return false; -/* - if(find(modules_to_load.begin(),modules_to_load.end(),"trgt_bmp")==modules_to_load.end()) - modules_to_load.push_back("trgt_bmp"); - if(find(modules_to_load.begin(),modules_to_load.end(),"trgt_gif")==modules_to_load.end()) - modules_to_load.push_back("trgt_gif"); - if(find(modules_to_load.begin(),modules_to_load.end(),"trgt_dv")==modules_to_load.end()) - modules_to_load.push_back("trgt_dv"); - if(find(modules_to_load.begin(),modules_to_load.end(),"mod_ffmpeg")==modules_to_load.end()) - modules_to_load.push_back("mod_ffmpeg"); - if(find(modules_to_load.begin(),modules_to_load.end(),"mod_imagemagick")==modules_to_load.end()) - modules_to_load.push_back("mod_imagemagick"); - if(find(modules_to_load.begin(),modules_to_load.end(),"lyr_std")==modules_to_load.end()) - modules_to_load.push_back("lyr_std"); - if(find(modules_to_load.begin(),modules_to_load.end(),"lyr_freetype")==modules_to_load.end()) - modules_to_load.push_back("lyr_freetype"); -#ifdef HAVE_LIBPNG - if(find(modules_to_load.begin(),modules_to_load.end(),"trgt_png")==modules_to_load.end()) - modules_to_load.push_back("trgt_png"); -#endif -#ifdef HAVE_OPENEXR - if(find(modules_to_load.begin(),modules_to_load.end(),"mod_openexr")==modules_to_load.end()) - modules_to_load.push_back("mod_openexr"); -#endif -*/ } - else + + while(file) { - std::ifstream file(filename.c_str()); - if(!file) - { - // warning("Cannot open "+filename); - return false; - } - while(file) - { - String modulename; - getline(file,modulename); - if(!modulename.empty() && find(modules_to_load.begin(),modules_to_load.end(),modulename)==modules_to_load.end()) - modules_to_load.push_back(modulename); - } + String modulename; + getline(file,modulename); + if(!modulename.empty() && find(modules_to_load.begin(),modules_to_load.end(),modulename)==modules_to_load.end()) + modules_to_load.push_back(modulename); } - - return true; } - - - - synfig::Main::Main(const synfig::String& basepath,ProgressCallback *cb): ref_count_(synfig_ref_count_) { @@ -272,74 +222,61 @@ synfig::Main::Main(const synfig::String& basepath,ProgressCallback *cb): // Load up the list importer Importer::book()[String("lst")]=ListImporter::create; - - // Load up the modules std::list modules_to_load; std::vector locations; - if(!getenv("SYNFIG_MODULE_LIST")) + if(getenv("SYNFIG_MODULE_LIST")) + locations.push_back(getenv("SYNFIG_MODULE_LIST")); + else { - locations.push_back("standard"); - locations.push_back("./"MODULE_LIST_FILENAME); //1 - locations.push_back("../etc/"MODULE_LIST_FILENAME); //1 - locations.push_back("~/.synfig/"MODULE_LIST_FILENAME); //2 - locations.push_back(prefix+"/etc/"+MODULE_LIST_FILENAME); //3 - locations.push_back("/usr/local/etc/"MODULE_LIST_FILENAME); + locations.push_back("./"MODULE_LIST_FILENAME); + locations.push_back("../etc/"MODULE_LIST_FILENAME); + if(getenv("HOME")) + locations.push_back(strprintf("%s/.synfig/%s", getenv("HOME"), MODULE_LIST_FILENAME)); #ifdef SYSCONFDIR locations.push_back(SYSCONFDIR"/"MODULE_LIST_FILENAME); #endif + locations.push_back(prefix+"/etc/"+MODULE_LIST_FILENAME); + locations.push_back("/usr/local/etc/"MODULE_LIST_FILENAME); #ifdef __APPLE__ locations.push_back("/Library/Frameworks/synfig.framework/Resources/"MODULE_LIST_FILENAME); locations.push_back("/Library/Synfig/"MODULE_LIST_FILENAME); - locations.push_back("~/Library/Synfig/"MODULE_LIST_FILENAME); + if(getenv("HOME")) + locations.push_back(strprintf("%s/Library/Synfig/%s", getenv("HOME"), MODULE_LIST_FILENAME)); #endif #ifdef WIN32 locations.push_back("C:\\Program Files\\Synfig\\etc\\"MODULE_LIST_FILENAME); #endif } - else - { - locations.push_back(getenv("SYNFIG_MODULE_LIST")); - } -/* - const char *locations[]= - { - "standard", //0 - "./"MODULE_LIST_FILENAME, //1 - "../etc/"MODULE_LIST_FILENAME, //1 - "~/.synfig/"MODULE_LIST_FILENAME, //2 - "/usr/local/lib/synfig/modules/"MODULE_LIST_FILENAME, //3 - "/usr/local/etc/"MODULE_LIST_FILENAME, -#ifdef SYSCONFDIR - SYSCONFDIR"/"MODULE_LIST_FILENAME, -#endif -#ifdef __APPLE__ - "/Library/Frameworks/synfig.framework/Resources/"MODULE_LIST_FILENAME, - "/Library/SYNFIG/"MODULE_LIST_FILENAME, - "~/Library/SYNFIG/"MODULE_LIST_FILENAME, -#endif -#ifdef WIN32 - "C:\\Program Files\\SYNFIG\\etc\\"MODULE_LIST_FILENAME, -#endif - }; -*/ for(i=0;itask(strprintf(_("Loading modules from %s"),locations[i].c_str())); + break; + } + + if (i == locations.size()) + { + Importer::subsys_stop(); + Target::subsys_stop(); + Layer::subsys_stop(); + Module::subsys_stop(); + throw std::runtime_error(strprintf(_("Unable to open module list file '%s'"), MODULE_LIST_FILENAME)); + } std::list::iterator iter; + Module::register_default_modules(cb); + for(i=0,iter=modules_to_load.begin();iter!=modules_to_load.end();++iter,i++) { Module::Register(*iter,cb); if(cb)cb->amount_complete((i+1)*100,modules_to_load.size()*100); } -// load_modules(cb); - - if(cb)cb->amount_complete(100, 100); if(cb)cb->task(_("DONE")); } @@ -376,7 +313,7 @@ synfig::Main::~Main() // synfig::info("Module::subsys_stop()"); // Module::subsys_stop(); // synfig::info("Exiting"); - + #if defined(HAVE_SIGNAL_H) && defined(SIGPIPE) signal(SIGPIPE, SIG_DFL); #endif