From: Diane Trout Date: Fri, 17 Nov 2006 23:19:49 +0000 (+0000) Subject: more fs::native for user supplied paths X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=1c6bc3823f973cee4880ee2ef87d0598567da73f more fs::native for user supplied paths ticket:237 Give boost::filesystem more hints about what filenames were entered by the user and thus conforming to native file conventions. --- diff --git a/alg/mussa.cpp b/alg/mussa.cpp index 58558ff..f205fe4 100644 --- a/alg/mussa.cpp +++ b/alg/mussa.cpp @@ -635,8 +635,8 @@ Mussa::load(fs::path ana_file) analysis_path = ana_file; analysis_name = ana_path.leaf(); - file_path_base = ana_path.branch_path() / analysis_name; - a_file_path = file_path_base / (analysis_name + ".muway"); + fs::path muway(analysis_name+".muway", fs::native); + a_file_path = analysis_path / muway; the_paths.load(a_file_path); // perhaps this could be more elegent, but at least this'll let // us know what our threshold and window sizes were when we load a muway @@ -646,7 +646,8 @@ Mussa::load(fs::path ana_file) int seq_num = the_paths.sequence_count(); - a_file_path = file_path_base / (analysis_name + ".museq"); + fs::path museq(analysis_name + ".museq", fs::native); + a_file_path = analysis_path / museq; // this is a bit of a hack due to C++ not acting like it should with files for (i = 1; i <= seq_num; i++) @@ -656,7 +657,8 @@ Mussa::load(fs::path ana_file) the_seqs.push_back(tmp_seq); } - fs::path motif_file = file_path_base / (analysis_name + ".mtl"); + fs::path mtl(analysis_name + ".mtl", fs::native); + fs::path motif_file = analysis_path / mtl; if (fs::exists(motif_file)) { load_motifs(motif_file); } @@ -675,15 +677,13 @@ Mussa::load(fs::path ana_file) append_info.str(""); append_info << analysis_name << "_sp_" << i << "v" << i2 << ".flp"; //clog << append_info.str() << endl; - a_file_path = file_path_base / append_info.str(); - //clog << "path " << a_file_path.string() << endl; + fs::path flp(append_info.str(), fs::native); + a_file_path = analysis_path / flp; all_comps[i][i2].load(a_file_path); - //clog << "real size = " << all_comps[i][i2].size() << endl; } } } - void Mussa::save_old() { diff --git a/alg/parse_options.cpp b/alg/parse_options.cpp index b0d1062..b911bbc 100644 --- a/alg/parse_options.cpp +++ b/alg/parse_options.cpp @@ -1,5 +1,7 @@ #include namespace po = boost::program_options; +#include +namespace fs = boost::filesystem; #include #include @@ -46,7 +48,8 @@ void initialize_mussa(MussaOptions& opts, int argc, char **argv) // currently we can only have one analysis loaded, so // running trumps viewing. if (vm.count("run-analysis")) { - opts.analysis->load_mupa_file( vm["run-analysis"].as< std::string >() ); + fs::path analysis_path(vm["run-analysis"].as< std::string >(), fs::native); + opts.analysis->load_mupa_file( analysis_path ); std::cout << "I apologize for blocking the gui while running the analysis" << std::endl; opts.analysis->analyze(); @@ -54,10 +57,12 @@ void initialize_mussa(MussaOptions& opts, int argc, char **argv) opts.analysis->save(); } else if (vm.count("view-analysis")) { - opts.analysis->load( vm["view-analysis"].as< std::string >() ); + fs::path analysis_path(vm["view-analysis"].as< std::string >(), fs::native); + opts.analysis->load( analysis_path ); } if (vm.count("motifs") and opts.analysis) { - opts.analysis->load_motifs( vm["motifs"].as< std::string >() ); + fs::path motif_path(vm["motifs"].as< std::string >(), fs::native); + opts.analysis->load_motifs( motif_path ); } if (vm.count("no-gui")) { opts.useGUI=false; diff --git a/qui/MussaWindow.cpp b/qui/MussaWindow.cpp index 58fea50..768d244 100644 --- a/qui/MussaWindow.cpp +++ b/qui/MussaWindow.cpp @@ -583,6 +583,12 @@ void MussaWindow::loadSavedAnalysis() win->default_dir->setPath(converted_path.branch_path().native_directory_string().c_str()); win->show(); } + } catch (boost::filesystem::filesystem_error e) { + QString msg("Unable to load "); + msg += muway_dir; + msg += "\n"; + msg += e.what(); + QMessageBox::warning(this, "Load Parameter", msg); } catch (mussa_load_error e) { QString msg("Unable to load "); msg += muway_dir;