* Licence details can be found in the file COPYING.
*
* \author Alejandro Aguilar Sierra
- * \author Jürgen Vigna
- * \author Lars Gullik Bjønnes
+ * \author Jürgen Vigna
+ * \author Lars Gullik Bjønnes
* \author Matthias Ettrich
*
* Full author contact details are available in file CREDITS.
#ifndef INSETBASE_H
#define INSETBASE_H
-#include "Changes.h"
#include "Dimension.h"
#include "support/docstream.h"
namespace lyx {
+class BiblioInfo;
class Buffer;
class BufferParams;
class BufferView;
+class Change;
+class Color_color;
+class Cursor;
class CursorSlice;
class FuncRequest;
class FuncStatus;
+class InsetIterator;
+class InsetLayout;
class InsetMath;
class InsetText;
class LaTeXFeatures;
-class Color_color;
-class Cursor;
class Lexer;
-class Text;
+class MathAtom;
class MetricsInfo;
-class Dimension;
-class PainterInfo;
class OutputParams;
+class PainterInfo;
+class Paragraph;
+class ParConstIterator;
+class ParIterator;
+class Text;
class TocList;
+class EmbeddedFiles;
namespace graphics { class PreviewLoader; }
/// virtual base class destructor
virtual ~Inset() {}
- /// replicate ourselves
- std::auto_ptr<Inset> clone() const;
/// identification as math inset
virtual InsetMath * asInsetMath() { return 0; }
/// true for 'math' math inset, but not for e.g. mbox
virtual bool inMathed() const { return false; }
-
+ /// is this inset based on the TextInset class?
+ virtual InsetText * asTextInset() { return 0; }
+ /// is this inset based on the TextInset class?
+ virtual InsetText const * asTextInset() const { return 0; }
+
/// the real dispatcher
void dispatch(Cursor & cur, FuncRequest & cmd);
/**
CursorSlice const & sl, bool boundary, int & x, int & y) const;
/// is this an inset that can be moved into?
+ /// FIXME: merge with editable()
virtual bool isActive() const { return nargs() > 0; }
/// Where should we go when we press the up or down cursor key?
virtual bool idxUpDown(Cursor & cur, bool up) const;
/// is called when the mouse enter or leave this inset
/// return true if this inset needs repaint
virtual bool setMouseHover(bool) { return false; }
- /// tells an inset to redraw background
- virtual void setRedrawBackground(bool rd) const { redraw_background_ = rd; }
- bool redrawBackground() const { return redraw_background_; }
+ /// return true if this inset is hovered (under mouse)
+ /// This is by now only used by mathed to draw corners
+ /// (Inset::drawMarkers() and Inset::drawMarkers2()).
+ /// Other insets do not have to redefine this function to
+ /// return the correct status of mouseHovered.
+ virtual bool mouseHovered() const { return false; }
/// request "external features"
virtual void validate(LaTeXFeatures &) const {}
/// return the number of characters; in case of multiple lines of
/// output, add PLAINTEXT_NEWLINE to the number of chars in the last line
virtual int plaintext(Buffer const &, odocstream &,
- OutputParams const &) const = 0;
+ OutputParams const &) const = 0;
/// docbook output
virtual int docbook(Buffer const &, odocstream & os,
- OutputParams const &) const;
+ OutputParams const &) const;
/// the string that is passed to the TOC
virtual void textString(Buffer const &, odocstream &) const {}
virtual bool descendable() const { return false; }
/// does this contain text that can be change track marked in DVI?
virtual bool canTrackChanges() const { return false; }
- /// is this inset based on the TextInset class?
- virtual InsetText const * asTextInset() const { return 0; }
/// return true if the inset should be removed automatically
virtual bool autoDelete() const;
///
virtual docstring name() const { return from_ascii("unknown"); }
+ ///
+ virtual InsetLayout const & getLayout(BufferParams const & bp) const;
/// used to toggle insets
/// is the inset open?
/// should this inset be handled like a normal charater
/// is this equivalent to a space (which is BTW different from
/// a line separator)?
virtual bool isSpace() const { return false; }
+
+ enum DisplayType {
+ Inline = 0,
+ AlignLeft,
+ AlignCenter,
+ AlignRight
+ };
+
/// should we have a non-filled line before this inset?
- virtual bool display() const { return false; }
+ virtual DisplayType display() const { return Inline; }
/// should we break lines after this inset?
virtual bool isLineSeparator() const { return false; }
/// should paragraph indendation be ommitted in any case?
*/
virtual void addPreview(graphics::PreviewLoader &) const {}
/// Add an entry to the TocList
- virtual void addToToc(TocList &, Buffer const &) const {}
+ /// pit is the ParConstIterator of the paragraph containing the inset
+ virtual void addToToc(TocList &, Buffer const &, ParConstIterator const &) const {}
+ /// report files that can be embedded with the lyx file
+ virtual void registerEmbeddedFiles(Buffer const &, EmbeddedFiles &,
+ ParConstIterator const &) const {};
+ /// Fill keys with BibTeX information
+ virtual void fillWithBibKeys(Buffer const &,
+ BiblioInfo &, InsetIterator const &) const { return; }
+ /// Update the counters of this inset and of its contents
+ virtual void updateLabels(Buffer const &, ParIterator const &) {}
+
public:
/// returns LyX code associated with the inset. Used for TOC, ...)
/// reject the changes within the inset
virtual void rejectChanges(BufferParams const &) {};
+ /// FIXME: move dim_ out of Inset!
+ Dimension const & dimension() { return dim_; }
/// inset width.
int width() const { return dim_.wid; }
/// inset ascent.
///
int scroll() const { return 0; }
///
- void setBackgroundColor(Color_color);
- ///
- Color_color backgroundColor() const;
+ virtual Color_color backgroundColor() const;
///
enum CollapseStatus {
Collapsed,
- Inlined,
Open
};
///
protected:
Inset();
- Inset(Inset const & i);
+
+ /// replicate ourselves
+ friend class Paragraph;
+ friend class MathAtom;
+ virtual Inset * clone() const = 0;
+
/** The real dispatcher.
* Gets normally called from Cursor::dispatch(). Cursor::dispatch()
* assumes the common case of 'LFUN handled, need update'.
/// Cached dimensions of the inset.
mutable Dimension dim_;
-private:
- virtual std::auto_ptr<Inset> doClone() const = 0;
- /** We store the Color::color value as an int to get Color.h out
- * of the header file.
- */
- int background_color_;
-
- mutable bool redraw_background_;
};
* It can be forward-declared and passed as a function argument without
* having to expose Inset.h.
*/
-
class Inset_code {
Inset::Code val_;
public: