X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetSpace.h;h=a4fd6151f90a458c9a8429573e6d0cdc735f03a1;hb=00e00b32fd1df4e3c90a63ff067400f0f7153dee;hp=7af58d38e16412401849f0fa5e2af35540ada3d9;hpb=e1ac6d411850c934dfc582795bc1ed1570a381c5;p=lyx.git diff --git a/src/insets/InsetSpace.h b/src/insets/InsetSpace.h index 7af58d38e1..a4fd6151f9 100644 --- a/src/insets/InsetSpace.h +++ b/src/insets/InsetSpace.h @@ -6,8 +6,8 @@ * * \author Asger Alstrup Nielsen * \author Jean-Marc Lasgouttes - * \author Lars Gullik Bjønnes - * \author Jürgen Spitzmüller + * \author Lars Gullik Bjønnes + * \author Jürgen Spitzmüller * * Full author contact details are available in file CREDITS. */ @@ -15,36 +15,43 @@ #ifndef INSET_SPACE_H #define INSET_SPACE_H - #include "Inset.h" #include "Length.h" -#include "MailInset.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 ('\:') + MEDIUM, + /// Thick space ('\;') + THICK, /// \quad (1em) QUAD, /// \qquad (2em) QQUAD, - /// \enspace (0.5em unbreakable) + /// \enskip (0.5em unbreakable) ENSPACE, /// \enspace (0.5em breakable) ENSKIP, /// Negative thin space ('\negthinspace') NEGTHIN, + /// Negative medium space ('\negmedspace') + NEGMEDIUM, + /// Negative thick space ('\negthickspace') + NEGTHICK, /// rubber length HFILL, /// \hspace*{\fill} @@ -53,13 +60,21 @@ public: DOTFILL, /// rubber length, filled with a rule HRULEFILL, + /// rubber length, filled with a left arrow + LEFTARROWFILL, + /// rubber length, filled with a right arrow + RIGHTARROWFILL, + // rubber length, filled with an up brace + UPBRACEFILL, + // rubber length, filled with a down brace + DOWNBRACEFILL, /// \hspace{length} CUSTOM, /// \hspace*{length} CUSTOM_PROTECTED }; /// - InsetSpaceParams() : kind(NORMAL), length(Length()) {} + InsetSpaceParams(bool m = false) : kind(NORMAL), math(m) {} /// void write(std::ostream & os) const; /// @@ -67,26 +82,35 @@ public: /// Kind kind; /// - Length length; + GlueLength length; + /** + * Whether these params are to be used in mathed. + * This determines the set of valid kinds. + */ + bool math; }; + /// Used to insert different kinds of spaces -class InsetSpace : public Inset { +class InsetSpace : public Inset +{ public: /// - InsetSpace(); - /// - ~InsetSpace(); - + InsetSpace() : Inset(0) {} /// - explicit - InsetSpace(InsetSpaceParams par); + explicit InsetSpace(InsetSpaceParams const & par); /// - InsetSpaceParams params() const { return params_; } + InsetSpaceParams const & params() const { return params_; } /// InsetSpaceParams::Kind kind() const; + + /// + static void string2params(std::string const &, InsetSpaceParams &); /// - Length length() const; + static std::string params2string(InsetSpaceParams const &); + /// + GlueLength length() const; + /// docstring toolTip(BufferView const & bv, int x, int y) const; /// @@ -98,24 +122,29 @@ public: /// Will not be used when lyxf3 void read(Lexer & lex); /// - int latex(odocstream &, OutputParams const &) const; + void latex(otexstream &, OutputParams const &) const; /// - int plaintext(odocstream &, OutputParams const &) const; + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const; /// int docbook(odocstream &, OutputParams const &) const; - /// the string that is passed to the TOC - void textString(odocstream &) const; /// - void edit(Cursor & cur, bool front, - EntryDirection entry_from = ENTRY_DIRECTION_IGNORE); + docstring xhtml(XHTMLStream &, OutputParams const &) const; + /// + void validate(LaTeXFeatures & features) const; + /// + void toString(odocstream &) const; + /// + void forOutliner(docstring &, size_t const, bool const) const; /// - EDITABLE editable() const { return IS_EDITABLE; } + bool hasSettings() const { return true; } + /// + bool clickable(BufferView const &, int, int) const { return true; } /// 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 + /// does this inset try to use all available space (like \\hfill does)? + bool isHfill() const; + /// should this inset be handled like a normal character? bool isChar() const { return true; } /// is this equivalent to a letter? bool isLetter() const { return false; } @@ -123,38 +152,19 @@ public: // a line separator)? bool isSpace() const { return true; } /// - virtual docstring contextMenu(BufferView const & bv, int x, int y) const; -private: - virtual Inset * clone() const { return new InsetSpace(*this); } + std::string contextMenuName() const; +protected: + /// + Inset * clone() const { return new InsetSpace(*this); } /// void doDispatch(Cursor & cur, FuncRequest & cmd); +public: /// bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const; - /// - InsetSpaceParams params_; -}; - - -class InsetSpaceMailer : public MailInset { -public: - /// - InsetSpaceMailer(InsetSpace & inset); - /// - virtual Inset & inset() const { return inset_; } - /// - virtual std::string const & name() const { return name_; } - /// - virtual std::string const inset2string(Buffer const &) const; - /// - static void string2params(std::string const &, InsetSpaceParams &); - /// - static std::string const params2string(InsetSpaceParams const &); private: /// - static std::string const name_; - /// - InsetSpace & inset_; + InsetSpaceParams params_; };