class BiblioInfo;
class Buffer;
-class BufferParams;
class BufferView;
class Change;
class CompletionList;
class FuncRequest;
class FuncStatus;
class InsetCollapsable;
+class InsetCommand;
class InsetIterator;
class InsetLayout;
class InsetList;
class ParIterator;
class Text;
class TocList;
+class XHTMLStream;
namespace graphics { class PreviewLoader; }
virtual ~Inset() {}
/// change associated Buffer
- /// FIXME this should go.
virtual void setBuffer(Buffer & buffer);
+ /// remove the buffer reference
+ void resetBuffer() { setBuffer( *static_cast<Buffer *>(0)); }
/// retrieve associated Buffer
virtual Buffer & buffer();
virtual Buffer const & buffer() const;
/**
* This is typically used after this inset is created interactively.
* Intented purpose is to sanitize internal state with regard to current
- * Buffer. The default implementation calls updateLabels(buffer()) is
+ * Buffer. The default implementation calls buffer().updateLabels() if
* the inset is labeled.
*
* \sa isLabeled()
/// identification as math inset
virtual InsetMath * asInsetMath() { return 0; }
+ /// identification as math inset
+ virtual InsetMath const * asInsetMath() const { 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 InsetText class?
virtual InsetTabular * asInsetTabular() { return 0; }
/// is this inset based on the InsetTabular class?
virtual InsetTabular const * asInsetTabular() const { return 0; }
+ /// is this inset based on the InsetCommand class?
+ virtual InsetCommand * asInsetCommand() { return 0; }
+ /// is this inset based on the InsetCommand class?
+ virtual InsetCommand const * asInsetCommand() const { return 0; }
/// the real dispatcher
void dispatch(Cursor & cur, FuncRequest & cmd);
virtual void cursorPos(BufferView const & bv,
CursorSlice const & sl, bool boundary, int & x, int & y) const;
- ///
- virtual bool isFreeSpacing() const { return false; }
- ///
- virtual bool allowEmpty() const { return false; }
+ /// Allow multiple blanks
+ virtual bool isFreeSpacing() const;
+ /// Don't eliminate empty paragraphs
+ virtual bool allowEmpty() const;
/// Force inset into LTR environment if surroundings are RTL?
- virtual bool forceLTR() const { return false; }
+ virtual bool forceLTR() const;
/// Where should we go when we press the up or down cursor key?
virtual bool idxUpDown(Cursor & cur, bool up) const;
virtual int plaintext(odocstream &, OutputParams const &) const = 0;
/// docbook output
virtual int docbook(odocstream & os, OutputParams const &) const;
- /// LyX HTML output
- virtual int xhtml(odocstream & os, OutputParams const &) const;
+ /// XHTML output
+ /// the inset is expected to write XHTML to the XHTMLStream
+ /// \return any "deferred" material that should be written outside the
+ /// normal stream, and which will in fact be written after the current
+ /// paragraph closes. this is appropriate e.g. for floats.
+ virtual docstring xhtml(XHTMLStream & xs, OutputParams const &) const;
/// the string that is passed to the TOC
virtual void tocString(odocstream &) const {}
- /// what appears in the minibuffer when opening
- virtual docstring editMessage() const;
/// can the contents of the inset be edited on screen ?
// true for InsetCollapsables (not ButtonOnly) (not InsetInfo), InsetText
virtual bool editable() const;
virtual bool hasSettings() const;
/// can we go further down on mouse click?
// true for InsetCaption, InsetCollapsables (not ButtonOnly), InsetTabular
- virtual bool descendable() const { return false; }
+ virtual bool descendable(BufferView const &) const { return false; }
/// is this an inset that can be moved into?
/// FIXME: merge with editable()
// true for InsetTabular & InsetText
///
virtual docstring name() const;
///
- virtual InsetLayout const & getLayout(BufferParams const & bp) const;
+ virtual InsetLayout const & getLayout() const;
+ /// Is this inset's layout defined in the document's textclass?
+ bool undefined() const;
/// used to toggle insets
/// is the inset open?
/// should this inset be handled like a normal charater
* Most insets have no interest in this capability, so the method
* defaults to empty.
*/
- virtual void addPreview(graphics::PreviewLoader &) const {}
+ virtual void addPreview(DocIterator const &,
+ graphics::PreviewLoader &) const {}
/** Classifies the unicode characters appearing in a math inset
* depending on whether they are to be translated as latex
virtual void addToToc(DocIterator const &) {}
/// Fill keys with BibTeX information
virtual void fillWithBibKeys(BiblioInfo &, InsetIterator const &) const {}
- /// Update the counters of this inset and of its contents
- virtual void updateLabels(ParIterator const &) {}
+ /// Update the counters of this inset and of its contents.
+ /// The boolean indicates whether we are preparing for output, e.g.,
+ /// of XHTML.
+ virtual void updateLabels(ParIterator const &, bool) {}
/// Updates the inset's dialog
virtual Buffer const * updateFrontend() const;
enum mode_type {UNDECIDED_MODE, TEXT_MODE, MATH_MODE};
/// return text or mathmode if that is possible to determine
virtual mode_type currentMode() const { return UNDECIDED_MODE; }
+ /// returns whether changing mode during latex export is forbidden
+ virtual bool lockedMode() const { return false; }
/// returns whether this inset is allowed in other insets of given mode
virtual bool allowedIn(mode_type) const { return true; }
/**
/// set the change for the entire inset
virtual void setChange(Change const &) {}
/// accept the changes within the inset
- virtual void acceptChanges(BufferParams const &) {};
+ virtual void acceptChanges() {}
/// reject the changes within the inset
- virtual void rejectChanges(BufferParams const &) {};
+ virtual void rejectChanges() {}
///
virtual Dimension const dimension(BufferView const &) const;
///
int scroll() const { return 0; }
///
- virtual ColorCode backgroundColor() const;
- ///
- enum CollapseStatus {
- Collapsed,
- Open
- };
+ virtual ColorCode backgroundColor(PainterInfo const &) const;
///
- virtual void setStatus(Cursor &, CollapseStatus) {}
+ virtual ColorCode labelColor() const;
//
enum { TEXT_TO_INSET_OFFSET = 4 };
protected:
/// Constructors
- Inset() : buffer_(0) {}
+ Inset(Buffer * buf) : buffer_(buf) {}
Inset(Inset const &) : buffer_(0) {}
/// replicate ourselves