]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.h
cleanup after svn hang-up, #undef CursorShape. Should be compilable ganin now.
[lyx.git] / src / LaTeXFeatures.h
index c3d62de312b60008994785b162e7b917d799c597..927dc312e620b7f450f49931c312b01229e0dcd9 100644 (file)
@@ -14,6 +14,8 @@
 #define LATEXFEATURES_H
 
 
+#include "outputparams.h"
+
 #include <set>
 #include <list>
 #include <map>
 
 class Buffer;
 class BufferParams;
-struct Language;
+class Language;
 
 /** The packages and commands that a buffer needs. This class
   contains a list<string>.  Each of the LaTeX packages that a buffer needs
   should be added with void require(string const & name).
-
   i.e require("amssymb")
-
   To add support you should only need to require() the package name as
   packages which don't have special requirements are handled automatically.
   If your new package does need special consideration you'll need to alter
   string const getPackages() const;
   Remember to update the validate function in buffer.C and paragraph.C
   when you do so.
-*/
*  contains a list<string>.  Each of the LaTeX packages that a buffer needs
*  should be added with void require(string const & name).
+ *
*  i.e require("amssymb")
+ *
*  To add support you should only need to require() the package name as
*  packages which don't have special requirements are handled automatically.
*  If your new package does need special consideration you'll need to alter
*  string const getPackages() const;
*  Remember to update the validate function in buffer.C and paragraph.C
*  when you do so.
+ */
 class LaTeXFeatures {
 public:
        ///
-       LaTeXFeatures(Buffer const &, BufferParams const &, bool);
+       LaTeXFeatures(Buffer const &, BufferParams const &,
+                     OutputParams const &);
        /// The packages needed by the document
        std::string const getPackages() const;
        /// The macros definitions needed by the document
@@ -48,7 +51,7 @@ public:
        std::string const getBabelOptions() const;
        /// The definitions needed by the document's textclass
        std::string const getTClassPreamble() const;
-       /// The sgml definitions needed by the document (dobook/linuxdoc)
+       /// The sgml definitions needed by the document (docbook)
        std::string const getLyXSGMLEntities() const;
        /// The SGML Required to include the files added with includeFile();
        std::string const getIncludedFiles(std::string const & fname) const;
@@ -62,8 +65,12 @@ public:
        void addExternalPreamble(std::string const &);
        /// Provide a string name-space to the requirements
        void require(std::string const & name);
+       /// Which of the required packages are installed?
+       static void getAvailable();
        /// Is the package required?
        bool isRequired(std::string const & name) const;
+       /// Is the (required) package available?
+       bool isAvailable(std::string const & name) const;
        ///
        void useFloat(std::string const & name);
        ///
@@ -79,11 +86,13 @@ public:
        ///
        Buffer const & buffer() const;
        ///
+       void setBuffer(Buffer const &);
+       ///
        BufferParams const & bufferParams() const;
        /// the return value is dependent upon both LyXRC and LaTeXFeatures.
        bool useBabel() const;
-       ///
-       bool nice() const { return nice_; };
+       /// Runparams that will be used for exporting this file.
+       OutputParams const & runparams() const { return runparams_; }
 
 private:
        std::list<std::string> usedLayouts_;
@@ -94,6 +103,10 @@ private:
        FeaturesList features_;
        ///
        FeaturesList preamble_snippets_;
+       /// The available (required) packages
+       typedef std::list<std::string> PackagesList;
+       ///
+       static PackagesList packages_;
        ///
        typedef std::set<Language const *> LanguageList;
        ///
@@ -106,14 +119,18 @@ private:
        typedef std::map<std::string , std::string> FileMap;
        ///
        FileMap IncludedFiles_;
-       ///
-       Buffer const & buffer_;
+       /** Buffer of the file being processed.
+        *  This may be a child buffer of the to-be-exported file and
+        *  therefore may not be the buffer that belongs to params_.
+        *  Only needed by InsetInclude::validate().
+        */
+       Buffer const * buffer_;
        ///
        BufferParams const & params_;
-       /** If we are writing a nice LaTeX file or not.
-        *  Only needed by InsetInclude::validate().
+       /** Some insets need to know details about the to-be-produced file
+        *  in validate().
         */
-       bool nice_;
+       OutputParams const & runparams_;
 };
 
 #endif