#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_;
};