]> git.lyx.org Git - lyx.git/blobdiff - src/lyxtextclasslist.C
add config.h
[lyx.git] / src / lyxtextclasslist.C
index 0b845e4c9b2aa0289826f62ad737b90da1ca60ff..d9048a75be9dd4d603f7e6c7730c52729ce3d33e 100644 (file)
 #include <boost/regex.hpp>
 #include <boost/filesystem/operations.hpp>
 #include <fstream>
-namespace fs = boost::filesystem;
 
-using lyx::textclass_type;
 
-using lyx::support::libFileSearch;
-using lyx::support::makeDisplayPath;
+namespace lyx {
+namespace fs = boost::filesystem;
+
+using support::FileName;
+using support::addName;
+using support::libFileSearch;
+using support::makeDisplayPath;
 
 using boost::bind;
 using boost::regex;
 using boost::smatch;
 
-#ifndef CXX_GLOBAL_CSTD
-using std::exit;
-#endif
-
 using std::endl;
 using std::equal_to;
 using std::find_if;
@@ -98,13 +97,14 @@ public:
 bool LyXTextClassList::read()
 {
        LyXLex lex(0, 0);
-       string real_file = libFileSearch("", "textclass.lst");
+       support::FileName const real_file = libFileSearch("", "textclass.lst");
        lyxerr[Debug::TCLASS] << "Reading textclasses from `"
                              << real_file << '\'' << endl;
 
        if (real_file.empty()) {
                lyxerr << "LyXTextClassList::Read: unable to find "
-                       "textclass file  `" << makeDisplayPath(real_file, 1000)
+                         "textclass file  `"
+                      << to_utf8(makeDisplayPath(real_file.absFilename(), 1000))
                       << "'. Exiting." << endl;
                return false;
                // This causes LyX to end... Not a desirable behaviour. Lgb
@@ -122,7 +122,8 @@ bool LyXTextClassList::read()
 
        if (!lex.isOK()) {
                lyxerr << "LyXTextClassList::Read: unable to open "
-                       "textclass file  `" << makeDisplayPath(real_file, 1000)
+                         "textclass file  `"
+                      << to_utf8(makeDisplayPath(real_file.absFilename(), 1000))
                       << "'\nCheck your installation. LyX can't continue."
                       << endl;
                return false;
@@ -174,21 +175,21 @@ bool LyXTextClassList::read()
 }
 
 
-std::pair<bool, lyx::textclass_type> const
+std::pair<bool, textclass_type> const
 LyXTextClassList::addTextClass(std::string const & textclass, std::string const & path)
 {
        // only check for textclass.layout file, .cls can be anywhere in $TEXINPUTS
        // NOTE: latex class name is defined in textclass.layout, which can be different from textclass
-       string layout_file = path + "/" + textclass + ".layout";
-       if (fs::exists(layout_file)) {
+       FileName const layout_file(addName(path, textclass + ".layout"));
+       if (fs::exists(layout_file.toFilesystemEncoding())) {
                lyxerr[Debug::TCLASS] << "Adding class " << textclass << " from directory " << path << endl;
                // Read .layout file and get description, real latex classname etc
                //
                // This is a C++ version of function processLayoutFile in configure.py,
                // which uses the following regex
-               //     \Declare(LaTeX|DocBook|LinuxDoc)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}
-               ifstream ifs(layout_file.c_str());
-               static regex const reg("^#\\s*\\\\Declare(LaTeX|DocBook|LinuxDoc)Class\\s*"
+               //     \Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}
+               ifstream ifs(layout_file.toFilesystemEncoding().c_str());
+               static regex const reg("^#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*"
                        "(?:\\[([^,]*)(?:,.*)*\\])*\\s*\\{(.*)\\}\\s*");
                string line;
                while (getline(ifs, line)) {
@@ -230,3 +231,6 @@ bool LyXSetStyle()
        lyxerr[Debug::TCLASS] << "LyXSetStyle: configuration parsed." << endl;
        return true;
 }
+
+
+} // namespace lyx