]> git.lyx.org Git - lyx.git/blobdiff - src/lyxtext.h
Added new FINISED states FINISHED_RIGHT, FINISHED_UP, FINISHED_DOWN.
[lyx.git] / src / lyxtext.h
index 0b2b54525532ccc8eec1ce235488b122da5d752e..a3d5f0930be39ae043e86f882994df7a4af64585 100644 (file)
 #endif
 
 #include "lyxfont.h"
-#include "undo.h"
 #include "lyxcursor.h"
 #include "paragraph.h"
 #include "layout.h"
 #include "lyxrow.h"
 #include "vspace.h"
+#include "LColor.h"
 
 class Buffer;
 class BufferParams;
@@ -38,20 +38,25 @@ public:
        ///
        enum text_status {
                ///
-               UNCHANGED,
+               UNCHANGED = 0,
                ///
-               NEED_MORE_REFRESH,
+               CHANGED_IN_DRAW = 1,
                ///
-               NEED_VERY_LITTLE_REFRESH,
+               NEED_VERY_LITTLE_REFRESH = 2,
                ///
-               CHANGED_IN_DRAW
+               NEED_MORE_REFRESH = 3
        };
        ///
        enum word_location {
-               /// the word around the cursor
+               // the word around the cursor, only if the cursor is
+               //not at a boundary
+               WHOLE_WORD_STRICT,
+               // the word around the cursor
                WHOLE_WORD,
                /// the word begining from the cursor position
                PARTIAL_WORD,
+               /// the word around the cursor or before the cursor
+               PREVIOUS_WORD,
                /// the next word (not yet used)
                NEXT_WORD
        };
@@ -64,7 +69,7 @@ public:
        /// Destructor
        ~LyXText();
 
-       void init(BufferView *);
+       void init(BufferView *, bool reinit = false);
        ///
        mutable int number_of_rows;
        ///
@@ -91,6 +96,10 @@ public:
        LyXFont const getFont(Buffer const *, Paragraph * par,
                        Paragraph::size_type pos) const;
        ///
+       LyXFont const getLayoutFont(Buffer const *, Paragraph * par) const;
+       ///
+       LyXFont const getLabelFont(Buffer const *, Paragraph * par) const;
+       ///
        void setCharFont(Buffer const *, Paragraph * par,
                         Paragraph::size_type pos, LyXFont const & font);
        void setCharFont(BufferView *, Paragraph * par,
@@ -145,6 +154,9 @@ public:
        
        ///
        void toggleFree(BufferView *, LyXFont const &, bool toggleall = false);
+
+       ///
+       string getStringToIndex(BufferView *);
        
        /** recalculates the heights of all previous rows of the
            specified paragraph.  needed, if the last characters font
@@ -166,10 +178,10 @@ public:
    
        /** Completes the insertion with a full rebreak.
            Returns true if something was broken. */
-        bool fullRebreak(BufferView *);
+       bool fullRebreak(BufferView *);
 
        ///
-       Row * need_break_row;
+       mutable Row * need_break_row;
        ///
        mutable int refresh_y;
        ///
@@ -182,12 +194,19 @@ public:
        mutable Row * refresh_row;
        ///
        int refresh_pos;
-       
+
+       /// give and set the LyXText status
+       text_status status() const;
+       ///
+       void status(BufferView *, text_status) const;
+
+private:       
        /** wether the screen needs a refresh,
           starting with refresh_y
           */
-       mutable text_status status;
+       mutable text_status status_;
        
+public:
        /** returns a pointer to the row near the specified y-coordinate
          (relative to the whole text). y is set to the real beginning
          of this row
@@ -223,6 +242,9 @@ public:
 
        /** The structrue that keeps track of the selections set. */
        struct Selection {
+               Selection() 
+                       : set_(false), mark_(false)
+                       {}
                bool set() const {
                        return set_;
                }
@@ -255,14 +277,17 @@ public:
        /// need the selection cursor:
        void setSelection(BufferView *);
        ///
-       void clearSelection(BufferView *) const;
+       void clearSelection() const;
        ///
        string const selectionAsString(Buffer const *) const;
        
        /// select the word we need depending on word_location
-       void getWord(LyXCursor & from, LyXCursor & to, word_location) const;
+       void getWord(LyXCursor & from, LyXCursor & to, 
+                    word_location const) const;
        /// just selects the word the cursor is in
-       void selectWord(BufferView *);
+       void selectWord(BufferView *, word_location const);
+       /// returns the inset at cursor (if it exists), 0 otherwise
+       Inset * getInset() const;
 
        /** 'selects" the next word, where the cursor is not in 
         and returns this word as string. THe cursor will be moved 
@@ -341,7 +366,8 @@ public:
        ///
        void deleteLineForward(BufferView *);
        ///
-       bool selectWordWhenUnderCursor(BufferView *);
+       bool selectWordWhenUnderCursor(BufferView *, 
+                                      word_location const);
        ///
        enum TextCase {
                ///
@@ -359,7 +385,7 @@ public:
                                       LyXCursor const & to,
                                       LyXText::TextCase action);
        ///
-       void transposeChars(BufferView const &);
+       void transposeChars(BufferView &);
        
        /** returns a printed row in a pixmap. The y value is needed to
          decide, wether it is selected text or not. This is a strange
@@ -368,8 +394,10 @@ public:
        void getVisibleRow(BufferView *, int y_offset, int x_offset,
                           Row * row_ptr, int y, bool cleared=false);
 
+       /// 
+       void toggleInset(BufferView *);
        ///
-       void cutSelection(BufferView *, bool = true);
+       void cutSelection(BufferView *, bool doclear = true, bool realcut = true);
        ///
        void copySelection(BufferView *);
        ///
@@ -378,14 +406,6 @@ public:
        void copyEnvironmentType();
        ///
        void pasteEnvironmentType(BufferView *);
-       ///
-       void insertFootnote();
-       ///
-       void insertMarginpar();
-       ///
-       void insertFigure();
-       ///
-       void insertTabular();
 
        /** the DTP switches for paragraphs. LyX will store the top settings
         always in the first physical paragraph, the bottom settings in the
@@ -435,40 +455,6 @@ public:
        int numberOfCell(Paragraph * par,
                         Paragraph::size_type pos) const;
        ///
-       Paragraph * getParFromID(int id);
-
-       // undo functions
-       /// returns false if no undo possible
-       bool textUndo(BufferView *);
-       /// returns false if no redo possible
-       bool textRedo(BufferView *);
-       /// used by TextUndo/TextRedo
-       bool textHandleUndo(BufferView *, Undo * undo);
-       /// makes sure the next operation will be stored
-       void finishUndo();
-       /// this is dangerous and for internal use only
-       void freezeUndo();
-       /// this is dangerous and for internal use only
-       void unFreezeUndo();
-       /// the flag used by FinishUndo();
-       mutable bool undo_finished;
-       /// a flag
-       bool undo_frozen;
-       ///
-       void setUndo(Buffer *, Undo::undo_kind kind,
-                    Paragraph const * before,
-                    Paragraph const * end) const;
-       ///
-       void setRedo(Buffer *, Undo::undo_kind kind,
-                    Paragraph const * before,
-                    Paragraph const * end);
-       ///
-       Undo * createUndo(Buffer *, Undo::undo_kind kind,
-                         Paragraph const * before,
-                         Paragraph const * end) const;
-       /// for external use in lyx_cb.C
-       void setCursorParUndo(Buffer *);
-       ///
        void removeTableRow(LyXCursor & cursor) const;
        ///
        bool isEmptyTableCell() const;
@@ -511,8 +497,6 @@ public:
                        (bidi_start <= pos && pos <= bidi_end);
        }
 private:
-       ///
-       void init();
        ///
        mutable Row * firstrow;
        ///
@@ -561,9 +545,11 @@ private:
        void deleteEmptyParagraphMechanism(BufferView *,
                                           LyXCursor const & old_cursor) const;
 
+public:
        /** Updates all counters starting BEHIND the row. Changed paragraphs
         * with a dynamic left margin will be rebroken. */ 
        void updateCounters(BufferView *, Row * row) const;
+private:
        ///
        void setCounter(Buffer const *, Paragraph * par) const;
    
@@ -626,6 +612,8 @@ private:
          */
        bool hfillExpansion(Buffer const *, Row const * row_ptr,
                            Paragraph::size_type pos) const;
+       /// 
+       LColor::color backgroundColor();
 
 
        ///
@@ -659,12 +647,15 @@ private:
 
        ///
        void charInserted();
+public:
        //
        // special owner functions
        ///
        Paragraph * ownerParagraph() const;
        //
        Paragraph * ownerParagraph(Paragraph *) const;
+       // set it searching first for the right owner using the paragraph id
+       Paragraph * ownerParagraph(int id, Paragraph *) const;
 };