]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetArgument.h
DocBook, InsetFloat: avoid a potential nullptr dereference when detecting the type...
[features.git] / src / insets / InsetArgument.h
index f45c0ea0ad06200b8450a9be0a955ec744fa6e83..34f4309cb0c5fefa842fe4033442a25d4a7817f1 100644 (file)
@@ -9,11 +9,11 @@
  * Full author contact details are available in file CREDITS.
  */
 
-#ifndef INSETOPTARG_H
-#define INSETOPTARG_H
+#ifndef INSETARGUMENT_H
+#define INSETARGUMENT_H
 
-
-#include "InsetCollapsable.h"
+#include "FontInfo.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -23,40 +23,141 @@ namespace lyx {
  * InsetArgument. Used to insert a short version of sectioning header etc.
  * automatically, or other optional LaTeX arguments
  */
-class InsetArgument : public InsetCollapsable
+class InsetArgument : public InsetCollapsible
 {
 public:
        ///
-       InsetArgument(Buffer *);
+       InsetArgument(Buffer *, std::string const &);
+
+       ///
+       InsetArgument const * asInsetArgument() const override { return this; }
 
        /// Outputting the parameter of a LaTeX command
-       void latexArgument(otexstream &, OutputParams const &,
-                       bool optional) const;
+       void latexArgument(otexstream & os, OutputParams const & runparams_in,
+                          docstring const & ldelim, docstring const & rdelim,
+                          docstring const & presetarg) const;
+
+       std::string name() const { return name_; }
+
+       bool docbookargumentbeforemaintag() const { return docbookargumentbeforemaintag_; }
+
+       bool docbookargumentaftermaintag() const { return docbookargumentaftermaintag_; }
+
+       /// \name Public functions inherited from Inset class
+       //@{
+       ///
+       bool hasSettings() const override { return false; }
+       ///
+       InsetCode lyxCode() const override { return ARG_CODE; }
+       ///
+       docstring layoutName() const override { return from_ascii("Argument"); }
+
+       /// Initialize the members of this inset when inserted in \c par.
+       void init(Paragraph const & par);
+       /// Update the label string of this inset
+       void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override;
+       ///
+       void latex(otexstream &, OutputParams const &) const override { }
+       ///
+       int plaintext(odocstringstream &, OutputParams const &, size_t) const override { return 0; }
+       ///
+       void docbook(XMLStream & xs, OutputParams const &) const override;
+       ///
+       docstring xhtml(XMLStream &, OutputParams const &) const override
+               { return docstring(); }
+       ///
+       void write(std::ostream & os) const override;
+       ///
+       void read(Lexer & lex) override;
+       ///
+       bool neverIndent() const override { return true; }
+       ///
+       std::string contextMenuName() const override;
+       ///
+       bool isPassThru() const override { return pass_thru_; }
+       ///
+       bool isFreeSpacing() const override { return free_spacing_; }
+       ///
+       bool isTocCaption() const { return is_toc_caption_; }
        ///
-       bool hasSettings() const { return false; }
+       bool resetFontEdit() const override { return false; }
+       //@}
+       /// \name Public functions inherited from InsetCollapsible class
+       //@{
+       ///
+       InsetDecoration decoration() const override;
+       ///
+       FontInfo getFont() const override;
+       ///
+       FontInfo getLabelfont() const override;
+       ///
+       ColorCode labelColor() const override;
+       ///
+       void setButtonLabel() override;
+       //@}
+       ///
+       void addToToc(DocIterator const & dit, bool output_active,
+                     UpdateType utype, TocBackend & backend) const override;
 
 private:
-       /// code of the inset
-       InsetCode lyxCode() const { return ARG_CODE; }
-       ///
-       docstring name() const { return from_ascii("Argument"); }
-       /// Standard LaTeX output -- short-circuited
-       void latex(otexstream &, OutputParams const &) const;
-       /// Standard plain text output -- short-circuited
-       int plaintext(odocstream &, OutputParams const &) const;
-       /// Standard DocBook output -- short-circuited
-       int docbook(odocstream &, OutputParams const &) const;
-       /// Standard XHTML output -- short-circuited
-       docstring xhtml(XHTMLStream &, OutputParams const &) const;
-       /// Write out to the .lyx file
-       void write(std::ostream & os) const;
-       /// should paragraph indendation be ommitted in any case?
-       bool neverIndent() const { return true; }
-       ///
-       Inset * clone() const { return new InsetArgument(*this); }
+       ///
+       docstring toolTip(BufferView const & bv, int, int) const override;
+       ///
+       void fixParagraphLanguage(Language const *);
+       ///
+       std::string name_;
+       ///
+       docstring labelstring_;
+       ///
+       docstring tooltip_;
+       ///
+       FontInfo font_;
+       ///
+       FontInfo labelfont_;
+       ///
+       std::string decoration_;
+       /// Are we in a pass-thru context?
+       bool pass_thru_context_;
+       /// Is the argument itself have an explicitly pass-thru?
+       bool pass_thru_local_;
+       /// Effective pass-thru setting (inherited or local)
+       bool pass_thru_;
+       ///
+       bool free_spacing_;
+       ///
+       docstring pass_thru_chars_;
+       /// Does this argument provide content for the TOC?
+       bool is_toc_caption_;
+       /// The type of Toc this is the caption of, empty otherwise.
+       std::string caption_of_toc_;
+       /// Specific line break macro
+       std::string newline_cmd_;
+       /// DocBook tag for this argument, if any (otherwise, NONE).
+       docstring docbooktag_;
+       /// Type of DocBook tag (controls how new lines are inserted around this argument).
+       docstring docbooktagtype_;
+       /// DocBook attributes.
+       docstring docbookattr_;
+       ///
+       bool docbookargumentbeforemaintag_ = false;
+       ///
+       bool docbookargumentaftermaintag_ = false;
+
+protected:
+       /// \name Protected functions inherited from Inset class
+       //@{
+       ///
+       bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const override;
+       ///
+       void doDispatch(Cursor & cur, FuncRequest & cmd) override;
+       ///
+       Inset * clone() const override { return new InsetArgument(*this); }
+       /// Is the content of this inset part of the immediate (visible) text sequence?
+       bool isPartOfTextSequence() const override { return false; }
+       //@}
 };
 
 
 } // namespace lyx
 
-#endif // INSETOPTARG_H
+#endif // INSETARGUMENT_H