From 10bcdd3003029b5936c08b4205d763e3f6a92677 Mon Sep 17 00:00:00 2001 From: Yuriy Skalko Date: Mon, 21 Dec 2020 23:57:13 +0200 Subject: [PATCH] Implement `InsetVSpaceParams` --- src/frontends/qt/GuiVSpace.cpp | 5 +++-- src/insets/InsetCommand.cpp | 3 +-- src/insets/InsetVSpace.cpp | 18 ++++++++++++++++-- src/insets/InsetVSpace.h | 17 +++++++++++++++-- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/frontends/qt/GuiVSpace.cpp b/src/frontends/qt/GuiVSpace.cpp index 7163634441..49e49893a1 100644 --- a/src/frontends/qt/GuiVSpace.cpp +++ b/src/frontends/qt/GuiVSpace.cpp @@ -171,9 +171,10 @@ docstring GuiVSpace::dialogToParams() const if (spacingCO->currentIndex() == 7 && valueLE->text().isEmpty()) return docstring(); - VSpace const params = setVSpaceFromWidgets(spacingCO->currentIndex(), + VSpace const space = setVSpaceFromWidgets(spacingCO->currentIndex(), valueLE, unitCO, keepCB->isChecked()); - return from_ascii(InsetVSpace::params2string(params)); + InsetVSpaceParams params(space); + return from_ascii(params.toString()); } diff --git a/src/insets/InsetCommand.cpp b/src/insets/InsetCommand.cpp index b8ffd2ce43..ca79797e96 100644 --- a/src/insets/InsetCommand.cpp +++ b/src/insets/InsetCommand.cpp @@ -404,8 +404,7 @@ bool decodeInsetParam(string const & name, string & data, break; } case VSPACE_CODE: { - VSpace space; - data = InsetVSpace::params2string(space); + data = InsetVSpaceParams().toString(); break; } case WRAP_CODE: { diff --git a/src/insets/InsetVSpace.cpp b/src/insets/InsetVSpace.cpp index c774e98b85..a96a83c501 100644 --- a/src/insets/InsetVSpace.cpp +++ b/src/insets/InsetVSpace.cpp @@ -258,10 +258,24 @@ void InsetVSpace::string2params(string const & in, VSpace & vspace) } -string InsetVSpace::params2string(VSpace const & vspace) +void InsetVSpaceParams::write(ostream & os) const +{ + os << space_.asLyXCommand(); +} + + +void InsetVSpaceParams::read(Lexer & lex) +{ + lex.setContext("InsetVSpaceParams::read"); + lex >> space_; +} + + +string InsetVSpaceParams::toString() const { ostringstream data; - data << "vspace" << ' ' << vspace.asLyXCommand(); + data << "vspace" << ' '; + write(data); return data.str(); } diff --git a/src/insets/InsetVSpace.h b/src/insets/InsetVSpace.h index 9b95f00ff0..0022d224d8 100644 --- a/src/insets/InsetVSpace.h +++ b/src/insets/InsetVSpace.h @@ -18,6 +18,21 @@ namespace lyx { +struct InsetVSpaceParams : public InsetParams { + + explicit InsetVSpaceParams(VSpace const & space = VSpace()) + : space_(space) {} + /// + void write(std::ostream & os) const override; + /// + void read(Lexer & lex) override; + /// + std::string toString() const override; + /// + VSpace space_; +}; + + class InsetVSpace : public Inset { public: @@ -37,8 +52,6 @@ public: std::string contextMenuName() const override; /// static void string2params(std::string const &, VSpace &); - /// - static std::string params2string(VSpace const &); private: /// void metrics(MetricsInfo & mi, Dimension & dim) const override; -- 2.39.5