X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.h;h=af7333364b3b1aee59131990541d925acf0bc8b4;hb=5e45cd4c44d0cb122243234d336f478fa2f5b3c1;hp=dae8c4e3b2a086149e513f1cdef6bfd13685d69b;hpb=3e28f0fc57ebd067c514f4d82fc8e1530ecc6424;p=lyx.git diff --git a/src/BufferParams.h b/src/BufferParams.h index dae8c4e3b2..af7333364b 100644 --- a/src/BufferParams.h +++ b/src/BufferParams.h @@ -23,6 +23,8 @@ #include "support/copied_ptr.h" +#include +#include #include namespace lyx { @@ -51,6 +53,8 @@ class VSpace; */ class BufferParams { public: + /// + typedef std::list LayoutModuleList; /// enum ParagraphSeparation { /// @@ -124,16 +128,26 @@ public: /// but it seems to be needed by CutAndPaste::putClipboard(). void setDocumentClass(DocumentClass const * const); /// List of modules in use - std::vector const & getModules() const; - /// Add a module to the list of modules in use. - /// Returns true if module was successfully added. - /// The makeClass variable signals whether to call makeDocumentClass. This - /// need not be done if we know this isn't the final time through, or if - /// the BufferParams do not represent the parameters for an actual buffer - /// (as in GuiDocument). + LayoutModuleList const & getModules() const { return layoutModules_; } + /// List of default modules the user has removed + std::set const & getRemovedModules() const + { return removedModules_; } + /// + /// Add a module to the list of modules in use. This checks only that the + /// module is not already in the list, so use moduleIsCompatible first if + /// you want to check for compatibility. + /// \return true if module was successfully added. bool addLayoutModule(std::string const & modName); + /// checks to make sure module's requriements are satisfied, that it does + /// not conflict with already-present modules, isn't already loaded, etc. + bool moduleCanBeAdded(std::string const & modName) const; + /// + void addRemovedModule(std::string const & modName) + { removedModules_.insert(modName); } /// Clear the list - void clearLayoutModules(); + void clearLayoutModules() { layoutModules_.clear(); } + /// Clear the removed module list + void clearRemovedModules() { removedModules_.clear(); } /// returns the main font for the buffer (document) Font const getFont() const; @@ -185,6 +199,8 @@ public: int fontsSansScale; /// the scale factor of the tt font int fontsTypewriterScale; + /// the font used by the CJK command + std::string fontsCJK; /// Spacing & spacing(); Spacing const & spacing() const; @@ -222,6 +238,8 @@ public: std::string local_layout; /// std::string options; + /// use the class options defined in the layout? + bool use_default_options; /// std::string master; /// @@ -325,15 +343,26 @@ private: void readBulletsLaTeX(Lexer &); /// void readModules(Lexer &); + /// + void readRemovedModules(Lexer &); + /// + void addDefaultModules(); + /// checks for consistency among modules: makes sure requirements + /// are met, no modules exclude one another, etc, and resolves any + /// such conflicts, leaving us with a consistent collection. + /// \return true if modules were consistent, false if changes had + /// to be made. + bool checkModuleConsistency(); /// for use with natbib CiteEngine cite_engine_; /// DocumentClass * doc_class_; - /// - typedef std::vector LayoutModuleList; /// LayoutModuleList layoutModules_; + /// this is for modules that are required by the document class but that + /// the user has chosen not to use + std::set removedModules_; /** Use the Pimpl idiom to hide those member variables that would otherwise * drag in other header files.