X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetbase.h;h=540f117e3ad10ec6c2f173ec5c9a03d514953c4a;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=55524e17c7c94af064212972cba6512bbd7f3bfc;hpb=d53d4a5c3528c8dfa06ec55229eacac8f5783150;p=lyx.git diff --git a/src/insets/insetbase.h b/src/insets/insetbase.h index 55524e17c7..540f117e3a 100644 --- a/src/insets/insetbase.h +++ b/src/insets/insetbase.h @@ -12,9 +12,10 @@ #ifndef INSETBASE_H #define INSETBASE_H -#include "support/docstream.h" - #include "changes.h" +#include "dimension.h" + +#include "support/docstream.h" #include #include @@ -36,6 +37,7 @@ class MetricsInfo; class Dimension; class PainterInfo; class OutputParams; +class TocList; namespace graphics { class PreviewLoader; } @@ -102,7 +104,8 @@ public: virtual InsetBase * editXY(LCursor & cur, int x, int y); /// compute the size of the object returned in dim - virtual void metrics(MetricsInfo & mi, Dimension & dim) const = 0; + /// \retval true if metrics changed. + virtual bool metrics(MetricsInfo & mi, Dimension & dim) const = 0; /// draw inset and update (xo, yo)-cache virtual void draw(PainterInfo & pi, int x, int y) const = 0; /// draw inset selection if necessary @@ -111,6 +114,10 @@ public: virtual bool editing(BufferView * bv) const; /// virtual bool showInsetDialog(BufferView *) const { return false; } + + /// draw inset decoration if necessary. + /// This can use \c drawMarkers() for example. + virtual void drawDecoration(PainterInfo &, int, int) const {} /// draw four angular markers void drawMarkers(PainterInfo & pi, int x, int y) const; /// draw two angular markers @@ -120,13 +127,13 @@ public: /// add space for markers void metricsMarkers2(Dimension & dim, int framesize = 1) const; /// last drawn position for 'important' insets - int xo(BufferView & bv) const; + int xo(BufferView const & bv) const; /// last drawn position for 'important' insets - int yo(BufferView & bv) const; + int yo(BufferView const & bv) const; /// set x/y drawing position cache if available virtual void setPosCache(PainterInfo const &, int, int) const {} /// do we cover screen position x/y? - virtual bool covers(BufferView & bv, int x, int y) const; + virtual bool covers(BufferView const & bv, int x, int y) const; /// get the screen positions of the cursor (see note in cursor.C) virtual void cursorPos(BufferView const & bv, CursorSlice const & sl, bool boundary, int & x, int & y) const; @@ -177,6 +184,9 @@ public: /// is called when the cursor leaves this inset // returns true if cursor is now invalid. virtual bool notifyCursorLeaves(LCursor &) { return false; } + /// is called when the mouse enter or leave this inset + /// return true if this inset needs repaint + virtual bool setMouseHover(bool) { return false; } /// request "external features" virtual void validate(LaTeXFeatures &) const {} @@ -196,11 +206,10 @@ public: virtual int docbook(Buffer const &, odocstream & os, OutputParams const &) const; /// the string that is passed to the TOC - virtual int textString(Buffer const &, odocstream &, - OutputParams const &) const { return 0; }; + virtual void textString(Buffer const &, odocstream &) const {} /** This enum indicates by which means the inset can be modified: - - NOT_EDITABLE: the inset's content can not be modified at all + - NOT_EDITABLE: the inset's content cannot be modified at all (e.g. printindex, insetspecialchar) - IS_EDITABLE: content can be edited via dialog (e.g. bibtex, index, url) - HIGHLY_EDITABLE: content can be edited on screen (normally means that @@ -322,7 +331,11 @@ public: /// VSPACE_CODE, /// - MATHMACROARG_CODE + MATHMACROARG_CODE, + /// + NOMENCL_CODE, // 45 + /// + NOMENCL_PRINT_CODE }; /** returns the Code corresponding to the \c name. @@ -333,7 +346,7 @@ public: /// returns true if the inset can hold an inset of given type virtual bool insetAllowed(Code) const { return false; } /// if this inset has paragraphs should they be output all as default - /// paragraphs with "Standard" layout? + /// paragraphs with the default layout of the text class? virtual bool forceDefaultParagraphs(idx_type) const { return false; } /// @@ -352,14 +365,19 @@ public: /// should we break lines after this inset? virtual bool isLineSeparator() const { return false; } /// should paragraph indendation be ommitted in any case? - virtual bool neverIndent() const { return false; } + virtual bool neverIndent(Buffer const &) const { return false; } /// dumps content to lyxerr virtual void dump() const; /// write inset in .lyx format virtual void write(Buffer const &, std::ostream &) const {} /// read inset in .lyx format virtual void read(Buffer const &, LyXLex &) {} - /// returns the number of rows (\n's) of generated tex code. + /** Export the inset to LaTeX. + * Don't use a temporary stringstream if the final output is + * supposed to go to a file. + * \sa Buffer::writeLaTeXSource for the reason. + * \return the number of rows (\n's) of generated LaTeX code. + */ virtual int latex(Buffer const &, odocstream &, OutputParams const &) const { return 0; } /// returns true to override begin and end inset in file @@ -377,6 +395,8 @@ public: * defaults to empty. */ virtual void addPreview(graphics::PreviewLoader &) const {} + /// Add an entry to the TocList + virtual void addToToc(TocList &, Buffer const &) const {} public: /// returns LyX code associated with the inset. Used for TOC, ...) @@ -436,6 +456,9 @@ protected: * \sa getStatus */ virtual void doDispatch(LCursor & cur, FuncRequest & cmd); + + /// Cached dimensions of the inset. + mutable Dimension dim_; private: virtual std::auto_ptr doClone() const = 0; };