]> git.lyx.org Git - lyx.git/blobdiff - src/insets/Inset.h
revert r30531, which causes a crash when copying an inset.
[lyx.git] / src / insets / Inset.h
index afde5d3d1cf370e8c50ffa5b08cea134d9d01abc..3e2cc24314d486945e774ec83e87cdd178820fad 100644 (file)
@@ -206,16 +206,13 @@ public:
        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;
 
-       /// 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;
        /// Move one cell backwards
@@ -261,10 +258,17 @@ public:
        /// Returns true if cursor is now invalid, e.g. if former 
        /// insets in higher cursor slices of \c old do not exist 
        /// anymore.
-       /// \c old is the old cursor, i.e. there is a slice pointing to this.
+       /// \c old is the old cursor, the last slice points to this.
        /// \c cur is the new cursor. Use the update flags to cause a redraw.
        virtual bool notifyCursorLeaves(Cursor const & /*old*/, Cursor & /*cur*/)
                { return false; }
+       /// Is called when the cursor enters this inset.
+       /// Returns true if cursor is now invalid, e.g. if former 
+       /// insets in higher cursor slices of \c old do not exist 
+       /// anymore.
+       /// \c cur is the new cursor, some slice points to this. Use the update flags to cause a redraw.
+       virtual bool notifyCursorEnters(Cursor & /*cur*/)
+               { 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; }
@@ -291,30 +295,24 @@ public:
        virtual int plaintext(odocstream &, OutputParams const &) const = 0;
        /// docbook output
        virtual int docbook(odocstream & os, OutputParams const &) const;
+       /// LyX HTML output
+       virtual docstring xhtml(odocstream & os, OutputParams const &) const;
        /// the string that is passed to the TOC
        virtual void tocString(odocstream &) const {}
 
-       /** This enum indicates by which means the inset can be modified:
-       - 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, href)
-       - HIGHLY_EDITABLE: content can be edited on screen (normally means that
-         insettext is contained, e.g. collapsables, tabular) */
-       // FIXME: This has not yet been fully implemented to math insets
-       enum EDITABLE {
-               ///
-               NOT_EDITABLE = 0,
-               ///
-               IS_EDITABLE,
-               ///
-               HIGHLY_EDITABLE
-       };
-       /// what appears in the minibuffer when opening
-       virtual docstring editMessage() const;
-       ///
-       virtual EDITABLE editable() const;
+       /// can the contents of the inset be edited on screen ?
+       // true for InsetCollapsables (not ButtonOnly) (not InsetInfo), InsetText
+       virtual bool editable() const;
+       /// has the Inset settings that can be modified in a dialog ?
+       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; }
+       /// is this an inset that can be moved into?
+       /// FIXME: merge with editable()
+       // true for InsetTabular & InsetText
+       virtual bool isActive() const { return nargs() > 0; }
+
        /// does this contain text that can be change track marked in DVI?
        virtual bool canTrackChanges() const { return false; }
        /// return true if the inset should be removed automatically
@@ -385,7 +383,9 @@ public:
        ///
        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
@@ -470,6 +470,8 @@ public:
        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; }
        /**
@@ -496,6 +498,8 @@ public:
        ///
        virtual ColorCode backgroundColor() const;
        ///
+       virtual ColorCode labelColor() const;
+       ///
        enum CollapseStatus {
                Collapsed,
                Open