X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSession.cpp;h=9291ef1c2213bfcd974a4a992544446915bee8fe;hb=e01e14872d60935908ad42bc164bff1342277b22;hp=8abc70051e1c921b9110fd613fd4f705447afd9a;hpb=897436efbb9bd641b61467d185a2dfae9839e575;p=lyx.git diff --git a/src/Session.cpp b/src/Session.cpp index 8abc70051e..9291ef1c22 100644 --- a/src/Session.cpp +++ b/src/Session.cpp @@ -12,36 +12,18 @@ #include #include "Session.h" -#include "debug.h" -#include "support/Package.h" -#include "support/filetools.h" -#include +#include "support/debug.h" +#include "support/filetools.h" +#include "support/Package.h" #include #include #include #include -using lyx::support::absolutePath; -using lyx::support::addName; -using lyx::support::FileName; -using lyx::support::package; - -namespace fs = boost::filesystem; - -using std::vector; -using std::getline; -using std::string; -using std::ifstream; -using std::ofstream; -using std::istream; -using std::ostream; -using std::endl; -using std::istringstream; -using std::copy; -using std::find; -using std::ostream_iterator; +using namespace std; +using namespace lyx::support; namespace { @@ -57,6 +39,7 @@ string const sec_toolbars = "[toolbars]"; namespace lyx { + LastFilesSection::LastFilesSection(unsigned int num) : default_num_last_files(4), absolute_max_last_files(100) @@ -73,17 +56,16 @@ void LastFilesSection::read(istream & is) if (c == '[') break; getline(is, tmp); - if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ' || !absolutePath(tmp)) + FileName const file(tmp); + if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ' || !file.isAbsolute()) continue; // read lastfiles - FileName const file(tmp); - if (fs::exists(file.toFilesystemEncoding()) && - !fs::is_directory(file.toFilesystemEncoding()) && - lastfiles.size() < num_lastfiles) + if (file.exists() && !file.isDirectory() + && lastfiles.size() < num_lastfiles) lastfiles.push_back(file); else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore last file: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore last file: " << tmp); } while (is.good()); } @@ -113,9 +95,8 @@ void LastFilesSection::setNumberOfLastFiles(unsigned int no) if (0 < no && no <= absolute_max_last_files) num_lastfiles = no; else { - LYXERR(Debug::INIT) << "LyX: session: too many last files\n" - << "\tdefault (=" << default_num_last_files - << ") used." << endl; + LYXERR(Debug::INIT, "LyX: session: too many last files\n" + << "\tdefault (=" << default_num_last_files << ") used."); num_lastfiles = default_num_last_files; } } @@ -129,15 +110,14 @@ void LastOpenedSection::read(istream & is) if (c == '[') break; getline(is, tmp); - if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ' || !absolutePath(tmp)) + FileName const file(tmp); + if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ' || !file.isAbsolute()) continue; - FileName const file(tmp); - if (fs::exists(file.toFilesystemEncoding()) && - !fs::is_directory(file.toFilesystemEncoding())) + if (file.exists() && !file.isDirectory()) lastopened.push_back(file); else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore last opened file: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore last opened file: " << tmp); } while (is.good()); } @@ -176,26 +156,24 @@ void LastFilePosSection::read(istream & is) try { // read lastfilepos // pos, file\n - pit_type pit; - pos_type pos; + FilePos filepos; string fname; istringstream itmp(tmp); - itmp >> pit; + itmp >> filepos.pit; itmp.ignore(2); // ignore ", " - itmp >> pos; + itmp >> filepos.pos; itmp.ignore(2); // ignore ", " getline(itmp, fname); - if (!absolutePath(fname)) - continue; FileName const file(fname); - if (fs::exists(file.toFilesystemEncoding()) && - !fs::is_directory(file.toFilesystemEncoding()) && - lastfilepos.size() < num_lastfilepos) - lastfilepos[file] = boost::tie(pit, pos); + if (!file.isAbsolute()) + continue; + if (file.exists() && !file.isDirectory() + && lastfilepos.size() < num_lastfilepos) + lastfilepos[file] = filepos; else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore pos of last file: " << fname << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore pos of last file: " << fname); } catch (...) { - LYXERR(Debug::INIT) << "LyX: Warning: unknown pos of last file: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: unknown pos of last file: " << tmp); } } while (is.good()); } @@ -206,14 +184,13 @@ void LastFilePosSection::write(ostream & os) const os << '\n' << sec_lastfilepos << '\n'; for (FilePosMap::const_iterator file = lastfilepos.begin(); file != lastfilepos.end(); ++file) { - os << file->second.get<0>() << ", " - << file->second.get<1>() << ", " - << file->first << '\n'; + os << file->second.pit << ", " << file->second.pos << ", " + << file->first << '\n'; } } -void LastFilePosSection::save(FileName const & fname, FilePos pos) +void LastFilePosSection::save(FileName const & fname, FilePos const & pos) { lastfilepos[fname] = pos; } @@ -226,8 +203,7 @@ LastFilePosSection::FilePos LastFilePosSection::load(FileName const & fname) con if (entry != lastfilepos.end()) return entry->second; // Not found, return the first paragraph - else - return 0; + return FilePos(); } @@ -265,18 +241,16 @@ void BookmarksSection::read(istream & is) itmp >> pos; itmp.ignore(2); // ignore ", " getline(itmp, fname); - if (!absolutePath(fname)) - continue; FileName const file(fname); + if (!file.isAbsolute()) + continue; // only load valid bookmarks - if (fs::exists(file.toFilesystemEncoding()) && - !fs::is_directory(file.toFilesystemEncoding()) && - idx <= max_bookmarks) + if (file.exists() && !file.isDirectory() && idx <= max_bookmarks) bookmarks[idx] = Bookmark(file, pit, pos, 0, 0); else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore bookmark of file: " << fname << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore bookmark of file: " << fname); } catch (...) { - LYXERR(Debug::INIT) << "LyX: Warning: unknown Bookmark info: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: unknown Bookmark info: " << tmp); } } while (is.good()); } @@ -295,7 +269,8 @@ void BookmarksSection::write(ostream & os) const } -void BookmarksSection::save(FileName const & fname, pit_type bottom_pit, pos_type bottom_pos, +void BookmarksSection::save(FileName const & fname, + pit_type bottom_pit, pos_type bottom_pos, int top_id, pos_type top_pos, unsigned int idx) { // silently ignore bookmarks when idx is out of range @@ -330,28 +305,29 @@ void ToolbarSection::read(istream & is) try { // Read session info, saved as key/value pairs // would better yell if pos returns npos - string::size_type pos = tmp.find_first_of(" = "); + size_t pos = tmp.find_first_of(" = "); // silently ignore lines without " = " if (pos != string::npos) { - string key = tmp.substr(0, pos); + ToolbarItem item; + item.key = tmp.substr(0, pos); int state; int location; - int posx; - int posy; istringstream value(tmp.substr(pos + 3)); value >> state; value >> location; - value >> posx; - value >> posy; - toolbars.push_back(boost::make_tuple(key, ToolbarInfo(state, location, posx, posy))); + value >> item.info.posx; + value >> item.info.posy; + item.info.state = ToolbarInfo::State(state); + item.info.location = ToolbarInfo::Location(location); + toolbars.push_back(item); } else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore toolbar info: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore toolbar info: " << tmp); } catch (...) { - LYXERR(Debug::INIT) << "LyX: Warning: unknown Toolbar info: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: unknown Toolbar info: " << tmp); } } while (is.good()); // sort the toolbars by location, line and position - std::sort(toolbars.begin(), toolbars.end()); + sort(toolbars.begin(), toolbars.end()); } @@ -360,11 +336,11 @@ void ToolbarSection::write(ostream & os) const os << '\n' << sec_toolbars << '\n'; for (ToolbarList::const_iterator tb = toolbars.begin(); tb != toolbars.end(); ++tb) { - os << tb->get<0>() << " = " - << static_cast(tb->get<1>().state) << " " - << static_cast(tb->get<1>().location) << " " - << tb->get<1>().posx << " " - << tb->get<1>().posy << '\n'; + os << tb->key << " = " + << static_cast(tb->info.state) << " " + << static_cast(tb->info.location) << " " + << tb->info.posx << " " + << tb->info.posy << '\n'; } } @@ -373,18 +349,21 @@ ToolbarSection::ToolbarInfo & ToolbarSection::load(string const & name) { for (ToolbarList::iterator tb = toolbars.begin(); tb != toolbars.end(); ++tb) - if (tb->get<0>() == name) - return tb->get<1>(); + if (tb->key == name) + return tb->info; + // add a new item - toolbars.push_back(boost::make_tuple(name, ToolbarSection::ToolbarInfo())); - return toolbars.back().get<1>(); + ToolbarItem item; + item.key = name; + toolbars.push_back(item); + return toolbars.back().info; } bool operator<(ToolbarSection::ToolbarItem const & a, ToolbarSection::ToolbarItem const & b) { - ToolbarSection::ToolbarInfo lhs = a.get<1>(); - ToolbarSection::ToolbarInfo rhs = b.get<1>(); + ToolbarSection::ToolbarInfo lhs = a.info; + ToolbarSection::ToolbarInfo rhs = b.info; // on if before off if (lhs.state != rhs.state) return static_cast(lhs.state) < static_cast(rhs.state); @@ -398,8 +377,7 @@ bool operator<(ToolbarSection::ToolbarItem const & a, ToolbarSection::ToolbarIte else if (lhs.location == ToolbarSection::ToolbarInfo::LEFT || lhs.location == ToolbarSection::ToolbarInfo::RIGHT) return lhs.posx < rhs.posx || (lhs.posx == rhs.posx && lhs.posy < rhs.posy); - else - return true; + return true; } @@ -424,9 +402,9 @@ void SessionInfoSection::read(istream & is) string value = tmp.substr(pos + 3); sessioninfo[key] = value; } else - LYXERR(Debug::INIT) << "LyX: Warning: Ignore session info: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: Ignore session info: " << tmp); } catch (...) { - LYXERR(Debug::INIT) << "LyX: Warning: unknown Session info: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: unknown Session info: " << tmp); } } while (is.good()); } @@ -497,7 +475,7 @@ void Session::readFile() else if (tmp == sec_session) sessionInfo().read(is); else - LYXERR(Debug::INIT) << "LyX: Warning: unknown Session section: " << tmp << endl; + LYXERR(Debug::INIT, "LyX: Warning: unknown Session section: " << tmp); } } @@ -516,8 +494,8 @@ void Session::writeFile() const toolbars().write(os); sessionInfo().write(os); } else - LYXERR(Debug::INIT) << "LyX: Warning: unable to save Session: " - << session_file << endl; + LYXERR(Debug::INIT, "LyX: Warning: unable to save Session: " + << session_file); } }