X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FLayout.h;h=0f5ebbf86b43a20cd6eb8d8be73c8462406c4987;hb=158b9a0e551144ca357d6635af9cddcc446bb91f;hp=c115c549a8b569b4fe8667bddcde694e86b41dba;hpb=7538c953a4dce785c2a62526baf75f2bdfcf7b79;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index c115c549a8..0f5ebbf86b 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -75,6 +75,8 @@ public: void readSpacing(Lexer &); /// void readArgument(Lexer &); + /// Write a layout definition in utf8 encoding + void write(std::ostream &) const; /// docstring const & name() const { return name_; } /// @@ -86,22 +88,39 @@ public: /// std::string const & latexname() const { return latexname_; } /// - void setLatexName(std::string const & n) { latexname_ = n; } + std::string const & itemcommand() const { return itemcommand_; } /// The arguments of this layout struct latexarg { docstring labelstring; + docstring menustring; bool mandatory; docstring ldelim; docstring rdelim; + docstring defaultarg; + docstring presetarg; docstring tooltip; - std::string shortcut; std::string requires; + std::string decoration; + FontInfo font; + FontInfo labelfont; + bool autoinsert; }; /// - typedef std::map LaTeXArgMap; + typedef std::map LaTeXArgMap; /// LaTeXArgMap const & latexargs() const { return latexargs_; } /// + LaTeXArgMap const & postcommandargs() const { return postcommandargs_; } + /// + LaTeXArgMap const & itemargs() const { return itemargs_; } + /// Returns latexargs() + postcommandargs() + itemargs(). + /// But note that it returns a *copy*, not a reference, so do not do + /// anything like: + /// Layout::LaTeXArgMap::iterator it = args().begin(); + /// Layout::LaTeXArgMap::iterator en = args().end(); + /// Those are iterators for different containers. + LaTeXArgMap args() const; + /// int optArgs() const; /// int requiredArgs() const; @@ -125,6 +144,10 @@ public: /// std::string const & latexparam() const { return latexparam_; } /// + docstring leftdelim() const { return leftdelim_; } + /// + docstring rightdelim() const { return rightdelim_; } + /// std::string const & innertag() const { return innertag_; } /// std::string const & labeltag() const { return labeltag_; } @@ -163,6 +186,24 @@ public: || latextype == LATEX_ITEM_ENVIRONMENT || latextype == LATEX_LIST_ENVIRONMENT; } + /// Is this the kind of layout in which adjacent paragraphs + /// are handled as one group? + bool isParagraphGroup() const { + return latextype == LATEX_ENVIRONMENT + || latextype == LATEX_BIB_ENVIRONMENT; + } + /// + bool labelIsInline() const { + return labeltype == LABEL_STATIC + || labeltype == LABEL_SENSITIVE + || labeltype == LABEL_ENUMERATE + || labeltype == LABEL_ITEMIZE; + } + bool labelIsAbove() const { + return labeltype == LABEL_ABOVE + || labeltype == LABEL_CENTERED + || labeltype == LABEL_BIBLIO; + } /// bool operator==(Layout const &) const; @@ -239,6 +280,8 @@ public: /// bool nextnoindent; /// + ToggleIndentation toggle_indent; + /// bool free_spacing; /// bool pass_thru; @@ -274,9 +317,23 @@ public: /// Is this spellchecked? bool spellcheck; + /** + * Should this layout definition always be written to the document preamble? + * Possible values are: + * 0: Do not enforce local layout + * >=1: Enforce local layout with version forcelocal + * -1: Enforce local layout with infinite version + * On reading, the forced local layout is only used if its version + * number is greater than the version number of the same layout in the + * document class. Otherwise, it is ignored. + */ + int forcelocal; private: + /// Reads a layout definition from file + /// \return true on success. + bool readIgnoreForcelocal(Lexer &, TextClass const &); /// generates the default CSS for this layout void makeDefaultCSS() const; /// @@ -315,6 +372,12 @@ private: docstring labelstring_appendix_; /// LaTeX parameter for environment std::string latexparam_; + /// Item command in lists + std::string itemcommand_; + /// Left delimiter of the content + docstring leftdelim_; + /// Right delimiter of the content + docstring rightdelim_; /// Internal tag to use (e.g., for sect header) std::string innertag_; /// Internal tag to use (e.g. to surround varentrylist label) @@ -389,6 +452,10 @@ private: std::set requires_; /// LaTeXArgMap latexargs_; + /// + LaTeXArgMap postcommandargs_; + /// + LaTeXArgMap itemargs_; }; } // namespace lyx