]> git.lyx.org Git - lyx.git/blob - src/LaTeXPackages.cpp
Enable OK/Apply buttons when resetting to class defaults.
[lyx.git] / src / LaTeXPackages.cpp
1 /**
2  * \file LaTeXPackages.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author José Matos
7  * \author Lars Gullik Bjønnes
8  * \author Jean-Marc Lasgouttes
9  * \author Jürgen Vigna
10  * \author André Pönitz
11  *
12  * Full author contact details are available in file CREDITS.
13  */
14
15 #include <config.h>
16
17 #include "LaTeXPackages.h"
18
19 #include "Lexer.h"
20
21 #include "support/FileName.h"
22 #include "support/filetools.h"
23 #include "support/lstrings.h"
24
25
26 using namespace std;
27 using namespace lyx::support;
28
29
30 namespace lyx {
31
32 LaTeXPackages::Packages LaTeXPackages::packages_;
33
34
35 void LaTeXPackages::getAvailable()
36 {
37         Lexer lex;
38         support::FileName const real_file = libFileSearch("", "packages.lst");
39
40         if (real_file.empty())
41                 return;
42
43         lex.setFile(real_file);
44
45         if (!lex.isOK())
46                 return;
47
48         // Make sure that we are clean
49         packages_.clear();
50
51         bool finished = false;
52         // Parse config-file
53         while (lex.isOK() && !finished) {
54                 switch (lex.lex()) {
55                 case Lexer::LEX_FEOF:
56                         finished = true;
57                         break;
58                 default:
59                         packages_.insert(lex.getString());
60                 }
61         }
62 }
63
64
65 bool LaTeXPackages::isAvailable(string const & name)
66 {
67         if (packages_.empty())
68                 getAvailable();
69         string n = name;
70         if (suffixIs(n, ".sty"))
71                 n.erase(name.length() - 4);
72         return packages_.find(n) != packages_.end();
73 }
74
75 } // namespace lyx