X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetNewline.h;h=c85a97df66ef6aea50add00f377a843f6ff32634;hb=8124e6c02ea1fd6779bb6c47ffe2bca2c8bd2d97;hp=04c2e241e2a24ff76633d1b1e2bca157c161cf29;hpb=0cb39e6f8b5f48a2da892f0f515e8ccfd7aa5921;p=lyx.git diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h index 04c2e241e2..c85a97df66 100644 --- a/src/insets/InsetNewline.h +++ b/src/insets/InsetNewline.h @@ -14,70 +14,80 @@ #include "Inset.h" -#include "support/docstring.h" -#include "support/gettext.h" - namespace lyx { +class InsetNewlineParams +{ +public: + /// The different kinds of spaces we support + enum Kind { + /// + NEWLINE, + /// + LINEBREAK + }; + /// + InsetNewlineParams() : kind(NEWLINE) {} + /// + void write(std::ostream & os) const; + /// + void read(Lexer & lex); + /// + Kind kind; +}; + + class InsetNewline : public Inset { public: /// - InsetNewline() {} + InsetNewline(); /// - InsetCode lyxCode() const { return NEWLINE_CODE; } + explicit InsetNewline(InsetNewlineParams par) : Inset(0) + { params_.kind = par.kind; } /// - void metrics(MetricsInfo &, Dimension &) const; + int rowFlags() const override; /// - void draw(PainterInfo & pi, int x, int y) const; + static void string2params(std::string const &, InsetNewlineParams &); /// - int latex(odocstream &, OutputParams const &) const; + static std::string params2string(InsetNewlineParams const &); +private: /// - int plaintext(odocstream &, OutputParams const &) const; + InsetCode lyxCode() const override { return NEWLINE_CODE; } /// - int docbook(odocstream &, OutputParams const &) const; + void metrics(MetricsInfo &, Dimension &) const override; /// - void read(Lexer & lex); + void draw(PainterInfo & pi, int x, int y) const override; /// - void write(std::ostream & os) const; - /// We don't need \begin_inset and \end_inset - bool directWrite() const { return true; } - /// is this equivalent to a space (which is BTW different from - /// a line separator)? - bool isSpace() const; + void latex(otexstream &, OutputParams const &) const override; /// - docstring insetLabel() const { return docstring(); } + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const override; /// - std::string getLyXName() const { return "\\newline"; } + void docbook(XMLStream &, OutputParams const &) const override; /// - std::string getCmdName() const { return "\\\\"; } + docstring xhtml(XMLStream &, OutputParams const &) const override; /// - ColorCode ColorName() const { return Color_eolmarker; } - -private: + void read(Lexer & lex) override; /// - Inset * clone() const { return new InsetNewline(*this); } -}; - - -class InsetLinebreak : public InsetNewline -{ -public: + void write(std::ostream & os) const override; + /// is this equivalent to a space (which is BTW different from + /// a line separator)? + bool isSpace() const override { return true; } /// - InsetLinebreak() {} + ColorCode ColorName() const; /// - docstring insetLabel() const { return _("line break"); } + std::string contextMenuName() const override; /// - std::string getLyXName() const { return "\\linebreak"; } + Inset * clone() const override { return new InsetNewline(*this); } /// - std::string getCmdName() const { return "\\linebreak{}"; } + void doDispatch(Cursor & cur, FuncRequest & cmd) override; /// - ColorCode ColorName() const { return Color_pagebreak; } + bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const override; -private: /// - Inset * clone() const { return new InsetLinebreak(*this); } + InsetNewlineParams params_; };