X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetSpace.h;h=e401d6d9ae7586624cfbd1abe910d239a8aa519b;hb=997f0621c5346bb623cf86713c4fe1be0c941104;hp=5e1638e2129a3805e5c1e603776bfa14c19f0cef;hpb=80228965b1d6be9dbc8afb10578f71fec671af37;p=lyx.git diff --git a/src/insets/InsetSpace.h b/src/insets/InsetSpace.h index 5e1638e212..e401d6d9ae 100644 --- a/src/insets/InsetSpace.h +++ b/src/insets/InsetSpace.h @@ -16,21 +16,23 @@ #define INSET_SPACE_H #include "Inset.h" -#include "Length.h" + +#include "support/Length.h" namespace lyx { class LaTeXFeatures; -class InsetSpaceParams { -public: +struct InsetSpaceParams { /// The different kinds of spaces we support enum Kind { /// Normal space ('\ ') NORMAL, /// Protected (no break) space ('~') PROTECTED, + /// Visible ("open box") space ('\textvisiblespace') + VISIBLE, /// Thin space ('\,') THIN, /// Medium space ('\:') @@ -41,9 +43,9 @@ public: QUAD, /// \qquad (2em) QQUAD, - /// \enskip (0.5em unbreakable) + /// \enspace (0.5em unbreakable) ENSPACE, - /// \enspace (0.5em breakable) + /// \enskip (0.5em breakable) ENSKIP, /// Negative thin space ('\negthinspace') NEGTHIN, @@ -73,7 +75,7 @@ public: CUSTOM_PROTECTED }; /// - InsetSpaceParams(bool m = false) : kind(NORMAL), math(m) {} + explicit InsetSpaceParams(bool m = false) : kind(NORMAL), math(m) {} /// void write(std::ostream & os) const; /// @@ -81,7 +83,7 @@ public: /// Kind kind; /// - Length length; + GlueLength length; /** * Whether these params are to be used in mathed. * This determines the set of valid kinds. @@ -95,71 +97,75 @@ class InsetSpace : public Inset { public: /// - InsetSpace() {} + InsetSpace() : Inset(0) {} /// - explicit InsetSpace(InsetSpaceParams const & par); + explicit InsetSpace(InsetSpaceParams const & params); /// - InsetSpaceParams params() const { return params_; } + InsetSpaceParams const & params() const { return params_; } /// InsetSpaceParams::Kind kind() const; - /// - ~InsetSpace(); /// static void string2params(std::string const &, InsetSpaceParams &); /// static std::string params2string(InsetSpaceParams const &); /// - Length length() const; + GlueLength length() const; /// - docstring toolTip(BufferView const & bv, int x, int y) const; + docstring toolTip(BufferView const & bv, int x, int y) const override; + /// unprotected spaces allow line breaking after them + int rowFlags() const override; /// - void metrics(MetricsInfo &, Dimension &) const; + void metrics(MetricsInfo &, Dimension &) const override; /// - void draw(PainterInfo & pi, int x, int y) const; + void draw(PainterInfo & pi, int x, int y) const override; /// - void write(std::ostream &) const; + void write(std::ostream &) const override; /// Will not be used when lyxf3 - void read(Lexer & lex); + void read(Lexer & lex) override; /// - int latex(odocstream &, OutputParams const &) const; + void latex(otexstream &, OutputParams const &) const override; /// - int plaintext(odocstream &, OutputParams const &) const; + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const override; /// - int docbook(odocstream &, OutputParams const &) const; + void docbook(XMLStream &, OutputParams const &) const override; /// - void validate(LaTeXFeatures & features) const; - /// the string that is passed to the TOC - void tocString(odocstream &) const; + docstring xhtml(XMLStream &, OutputParams const &) const override; /// - EDITABLE editable() const { return IS_EDITABLE; } + void validate(LaTeXFeatures & features) const override; /// - InsetCode lyxCode() const { return SPACE_CODE; } - /// is this an expandible space (rubber length)? - bool isStretchableSpace() const; - - // should this inset be handled like a normal charater - bool isChar() const { return true; } + void toString(odocstream &) const override; + /// + void forOutliner(docstring &, size_t const, bool const) const override; + /// + bool hasSettings() const override { return true; } + /// + bool clickable(BufferView const &, int, int) const override { return true; } + /// + InsetCode lyxCode() const override { return SPACE_CODE; } + /// does this inset try to use all available space (like \\hfill does)? + bool isHfill() const override; + /// should this inset be handled like a normal character? + bool isChar() const override { return true; } /// is this equivalent to a letter? - bool isLetter() const { return false; } + bool isLetter() const override { return false; } /// is this equivalent to a space (which is BTW different from // a line separator)? - bool isSpace() const { return true; } + bool isSpace() const override { return true; } /// - docstring contextMenu(BufferView const & bv, int x, int y) const; + std::string contextMenuName() const override; protected: /// - Inset * clone() const { return new InsetSpace(*this); } + Inset * clone() const override { return new InsetSpace(*this); } /// - void doDispatch(Cursor & cur, FuncRequest & cmd); + void doDispatch(Cursor & cur, FuncRequest & cmd) override; public: /// - bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; + bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const override; private: - /// - bool showInsetDialog(BufferView * bv) const; /// InsetSpaceParams params_; };