X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetbase.h;h=540f117e3ad10ec6c2f173ec5c9a03d514953c4a;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=68395470640de172ce1fa6d62985754dee5c90a5;hpb=e35725d5c0bfef496ebdb18b23539f7f78a336ff;p=lyx.git diff --git a/src/insets/insetbase.h b/src/insets/insetbase.h index 6839547064..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 @@ -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 @@ -337,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; } /// @@ -363,7 +372,12 @@ public: 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 @@ -381,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, ...) @@ -440,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; };