]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insettext.h
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / insets / insettext.h
index 11cd54be750a9da92150cb9863a35af9b1f200d4..a2dd9f98a993545f27db2a944adb93e8df52160f 100644 (file)
 #include "RowList_fwd.h"
 #include "lyxfont.h"
 #include "lyxtext.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/types.h"
 
 #include "frontends/mouse_state.h"
 
+
+namespace lyx {
+
 class Buffer;
 class BufferParams;
 class BufferView;
 class CursorSlice;
 class Dimension;
 class LColor_color;
-class ParagraphList;
 
 
 /**
@@ -47,42 +50,37 @@ public:
        ///
        void write(Buffer const & buf, std::ostream & os) const;
        ///
-       void metrics(MetricsInfo & mi, Dimension & dim) const;
+       bool metrics(MetricsInfo & mi, Dimension & dim) const;
        ///
        void draw(PainterInfo & pi, int x, int y) const;
        /// draw inset selection
        void drawSelection(PainterInfo & pi, int x, int y) const;
+       /// are we inside the area covered by the inset?
+       virtual bool covers(BufferView const & bv, int x, int y) const;
        ///
-       std::string const editMessage() const;
+       virtual docstring const editMessage() const;
        ///
        EDITABLE editable() const { return HIGHLY_EDITABLE; }
        ///
-       bool isTextInset() const { return true; }
+       bool canTrackChanges() const { return true; }
        ///
-       int latex(Buffer const &, std::ostream &,
-                 OutputParams const &) const;
+       InsetText const * asTextInset() const { return this; }
        ///
-       int plaintext(Buffer const &, std::ostream &,
-                 OutputParams const &) const;
+       int latex(Buffer const &, odocstream &, OutputParams const &) const;
        ///
-       int linuxdoc(Buffer const &, std::ostream &,
-                    OutputParams const &) const;
+       int plaintext(Buffer const &, odocstream &, OutputParams const &) const;
        ///
-       int docbook(Buffer const &, std::ostream &,
-                   OutputParams const &) const;
+       int docbook(Buffer const &, odocstream &, OutputParams const &) const;
        ///
        void validate(LaTeXFeatures & features) const;
 
        /// return x,y of given position relative to the inset's baseline
-       void cursorPos(CursorSlice const & sl, bool boundary, int & x, int & y) const;
+       void cursorPos(BufferView const & bv, CursorSlice const & sl,
+               bool boundary, int & x, int & y) const;
        ///
        Code lyxCode() const { return TEXT_CODE; }
        ///
-       void setFont(BufferView *, LyXFont const &,
-                    bool toggleall = false,
-                    bool selectall = false);
-       ///
-       void setText(std::string const &, LyXFont const &);
+       void setText(docstring const &, LyXFont const &, bool trackChanges);
        ///
        void setAutoBreakRows(bool);
        ///
@@ -94,11 +92,7 @@ public:
        ///
        void setFrameColor(LColor_color);
        ///
-       void setViewCache(BufferView const * bv) const;
-       ///
        bool showInsetDialog(BufferView *) const;
-       /// Appends \c list with all labels found within this inset.
-       void getLabelList(Buffer const &, std::vector<std::string> & list) const;
        ///
        LyXText * getText(int i) const {
                return (i == 0) ? const_cast<LyXText*>(&text_) : 0;
@@ -106,23 +100,18 @@ public:
        ///
        bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const;
 
-       /// mark as erased for change tracking
-       void markErased(bool erased);
-
-       /**
-        * Mark as new. Used when pasting in tabular, and adding rows
-        * or columns. Note that pasting will ensure that tracking already
-        * happens, and this just resets the changes for the copied text,
-        * whereas for row/col add, we need to start tracking changes
-        * for the (empty) paragraph contained.
-        */
-       void markNew(bool track_changes = false);
+       /// set the change for the entire inset
+       void setChange(Change const & change);
+       /// accept the changes within the inset
+       void acceptChanges();
+       /// reject the changes within the inset
+       void rejectChanges();
 
        /// append text onto the existing text
        void appendParagraphs(Buffer * bp, ParagraphList &);
 
        ///
-       void addPreview(lyx::graphics::PreviewLoader &) const;
+       void addPreview(graphics::PreviewLoader &) const;
 
        ///
        void edit(LCursor & cur, bool left);
@@ -140,9 +129,13 @@ public:
        ///
        bool allowSpellCheck() const { return true; }
        /// should paragraph indendation be ommitted in any case?
-       bool neverIndent() const;
+       bool neverIndent(Buffer const &) const;
        ///
        InsetText(InsetText const &);
+       ///
+       bool wide() const { return wide_inset_; }
+       ///
+       void setWide(bool wide_inset) { wide_inset_ = wide_inset; }
 
 protected:
        ///
@@ -161,13 +154,18 @@ private:
         */
        int frame_color_;
        ///
-       mutable lyx::pit_type old_pit;
+       mutable pit_type old_pit;
        ///
        static int border_;
+       ///
+       bool wide_inset_;
 public:
        ///
        mutable LyXText text_;
        ///
        mutable LyXFont font_;
 };
+
+} // namespace lyx
+
 #endif