]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.h
GTK graphics dialog: Default to scaling 100% when no scaling or size is given
[lyx.git] / src / LaTeXFeatures.h
index cfd0b18c0102bd6e3ca1c5d38c42096f40d41b1d..0b4d6cd0ec60145878e52d1ff046032d3473d7fa 100644 (file)
 // -*- C++ -*-
-/* This file is part of
-* ======================================================
-*
-*           LyX, The Document Processor
-*
-*           Copyright 1995 Matthias Ettrich
-*           Copyright 1995-2001 the LyX Team.
-*
-* ====================================================== */
+/**
+ * \file LaTeXFeatures.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LATEXFEATURES_H
 #define LATEXFEATURES_H
 
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "support/types.h"
-
-#include "LString.h"
-
 #include <set>
 #include <list>
 #include <map>
+#include <string>
 
+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(BufferParams const &);
+       LaTeXFeatures(Buffer const &, BufferParams const &, bool);
        /// The packages needed by the document
-       string const getPackages() const;
+       std::string const getPackages() const;
        /// The macros definitions needed by the document
-       string const getMacros() const;
+       std::string const getMacros() const;
        ///
-       string const getBabelOptions() const;
+       std::string const getBabelOptions() const;
        /// The definitions needed by the document's textclass
-       string const getTClassPreamble() const;
+       std::string const getTClassPreamble() const;
        /// The sgml definitions needed by the document (dobook/linuxdoc)
-       string const getLyXSGMLEntities() const;
+       std::string const getLyXSGMLEntities() const;
        /// The SGML Required to include the files added with includeFile();
-       string const getIncludedFiles(string const & fname) const;
+       std::string const getIncludedFiles(std::string const & fname) const;
        /// Include a file for use with the SGML entities
-       void includeFile(string const & key, string const & name);
+       void includeFile(std::string const & key, std::string const & name);
        /// The float definitions.
        void getFloatDefinitions(std::ostream & os) const;
        /// Print requirements to lyxerr
        void showStruct() const;
        ///
-       void addExternalPreamble(string const &);
+       void addExternalPreamble(std::string const &);
        /// Provide a string name-space to the requirements
-       void require(string const & name);
+       void require(std::string const & name);
+       /// Which of the required packages are installed?
+       static void getAvailable();
        /// Is the package required?
-       bool isRequired(string const & name) const;
+       bool isRequired(std::string const & name) const;
+       /// Is the (required) package available?
+       bool isAvailable(std::string const & name) const;
        ///
-       void useFloat(string const & name);
+       void useFloat(std::string const & name);
        ///
        void useLanguage(Language const *);
        ///
-       bool hasLanguages();
+       bool hasLanguages() const;
+       ///
+       std::string getLanguages() const;
        ///
-       string getLanguages() const;
+       std::set<std::string> getEncodingSet(std::string const & doc_encoding) const;
        ///
-       std::set<string> getEncodingSet(string const & doc_encoding);
+       void useLayout(std::string const & lyt);
        ///
-       void useLayout(string const & lyt);
+       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_; };
 
 private:
-       string externalPreambles;
-
-       std::list<string> usedLayouts;
+       std::list<std::string> usedLayouts_;
 
        /// Static preamble bits from the external material insets
-
-
-       typedef std::list<string> FeaturesList;
+       typedef std::list<std::string> FeaturesList;
        ///
-       FeaturesList features;
+       FeaturesList features_;
        ///
-       typedef std::set<Language const *> LanguageList;
+       FeaturesList preamble_snippets_;
+       /// The available (required) packages
+       typedef std::list<std::string> PackagesList;
+       ///
+       static PackagesList packages_;
        ///
-       LanguageList UsedLanguages;
+       typedef std::set<Language const *> LanguageList;
        ///
-       typedef std::set<string> UsedFloats;
+       LanguageList UsedLanguages_;
        ///
-       UsedFloats usedFloats;
+       typedef std::set<std::string> UsedFloats;
        ///
-       typedef std::map<string , string> FileMap;
+       UsedFloats usedFloats_;
        ///
-       FileMap IncludedFiles;
+       typedef std::map<std::string , std::string> FileMap;
        ///
+       FileMap IncludedFiles_;
+       /** 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;
+       BufferParams const & params_;
+       /** If we are writing a nice LaTeX file or not.
+        *  Only needed by InsetInclude::validate().
+        */
+       bool nice_;
 };
 
 #endif