]> git.lyx.org Git - lyx.git/blobdiff - src/lyxtext.h
fix compilation bug
[lyx.git] / src / lyxtext.h
index 7a42c27739931696ccfd2d4fd3bc2aaeefba357b..ff3a73257b4070f7ef0464195f5e0370786bbb8a 100644 (file)
 #ifndef LYXTEXT_H
 #define LYXTEXT_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
 #include "lyxfont.h"
 #include "lyxcursor.h"
 #include "layout.h"
@@ -67,7 +63,7 @@ public:
 
        /// Constructor
        LyXText(BufferView *);
-       ///
+       /// sets inset as owner
        LyXText(InsetText *);
 
        /// Destructor
@@ -75,8 +71,6 @@ public:
 
        void init(BufferView *, bool reinit = false);
        ///
-       mutable int number_of_rows;
-       ///
        mutable int height;
        ///
        mutable unsigned int width;
@@ -88,8 +82,6 @@ public:
        // unsigned is wrong here for text-insets!
        int first_y;
        ///
-       BufferView * bv_owner;
-       ///
        InsetText * inset_owner;
        ///
        UpdatableInset * the_locking_inset;
@@ -177,13 +169,7 @@ public:
        ///
        mutable int refresh_y;
        ///
-       int refresh_width;
-       ///
-       int refresh_x;
-       ///
        mutable Row * refresh_row;
-       ///
-       lyx::pos_type refresh_pos;
 
        /// give and set the LyXText status
        text_status status() const;
@@ -194,6 +180,9 @@ public:
        Inset::RESULT dispatch(FuncRequest const & cmd);
 
 private:
+       /// only the top-level LyXText has this non-zero
+       BufferView * bv_owner;
+
        /** wether the screen needs a refresh,
           starting with refresh_y
           */
@@ -215,18 +204,13 @@ public:
        /** returns a pointer to a specified row. y is set to the beginning
         of the row
         */
-       Row * getRow(Paragraph * par,
-                    lyx::pos_type pos, int & y) const;
+       Row * getRow(Paragraph * par, lyx::pos_type pos, int & y) const;
        /** returns the firstrow, this could be done with the above too but
            IMO it's stupid to have to allocate a dummy y all the time I need
            the first row
        */
        Row * firstRow() { return firstrow; }
 
-       /** returns the height of a default row, needed  for scrollbar
-        */
-       int defaultHeight() const;
-
        /** The cursor.
          Later this variable has to be removed. There should be now internal
          cursor in a text (and thus not in a buffer). By keeping this it is
@@ -290,6 +274,12 @@ public:
        /// returns the inset at cursor (if it exists), 0 otherwise
        Inset * getInset() const;
 
+       /// accept selected change
+       void acceptChange(BufferView * bv);
+
+       /// reject selected change 
+       void rejectChange(BufferView * bv);
        /** 'selects" the next word, where the cursor is not in
         and returns this word as string. THe cursor will be moved
         to the beginning of this word.
@@ -349,6 +339,10 @@ public:
        ///
        void cursorEnd(BufferView *) const;
        ///
+       void cursorPrevious(BufferView * bv);
+       ///
+       void cursorNext(BufferView * bv);
+       ///
        void cursorTab(BufferView *) const;
        ///
        void cursorTop(BufferView *) const;
@@ -413,10 +407,11 @@ public:
 
        /* these things are for search and replace */
 
-       /** sets the selection over the number of characters of string,
-         no check!!
-         */
-       void setSelectionOverString(BufferView *, string const & str);
+       /**
+        * Sets the selection from the current cursor position to length
+        * characters to the right. No safety checks.
+        */
+       void setSelectionRange(BufferView *, lyx::pos_type length);
 
        /** simple replacing. The font of the first selected character
          is used
@@ -432,6 +427,11 @@ public:
        bool gotoNextInset(BufferView *, std::vector<Inset::Code> const & codes,
                           string const & contents = string()) const;
        ///
+       void gotoInset(BufferView * bv, std::vector<Inset::Code> const & codes,
+                                               bool same_content);
+       ///
+       void gotoInset(BufferView * bv, Inset::Code code, bool same_content);
+       ///
 
        /* for the greater insets */
 
@@ -480,18 +480,17 @@ public:
 private:
        ///
        mutable Row * firstrow;
-
        ///
        mutable Row * lastrow;
 
        ///
        void cursorLeftOneWord(LyXCursor &) const;
+
        ///
        float getCursorX(BufferView *, Row *, lyx::pos_type pos,
                                         lyx::pos_type last, bool boundary) const;
        ///
-       void changeRegionCase(BufferView * bview,
+       void changeRegionCase(BufferView * bv,
                                       LyXCursor const & from,
                                       LyXCursor const & to,
                                       LyXText::TextCase action);
@@ -512,13 +511,13 @@ private:
        /** inserts a new row behind the specified row, increments
            the touched counters */
        void insertRow(Row * row, Paragraph * par, lyx::pos_type pos) const;
-       /// removes the row and reset the touched counters 
+       /// removes the row and reset the touched counters
        void removeRow(Row * row) const;
 
        /// remove all following rows of the paragraph of the specified row.
        void removeParagraph(Row * row) const;
 
-       /// insert the specified paragraph behind the specified row 
+       /// insert the specified paragraph behind the specified row
        void insertParagraph(BufferView *,
                             Paragraph * par, Row * row) const;
 
@@ -575,12 +574,15 @@ private:
        /// paint the selection background
        void paintRowSelection(DrawRowParams & p);
 
+       /// paint change bar
+       void paintChangeBar(DrawRowParams & p);
        /// paint appendix marker
        void paintRowAppendix(DrawRowParams & p);
 
        /// paint page break marker. Returns its height.
        int paintPageBreak(string const & label, int y, DrawRowParams & p);
+
        /// paint env depth bar
        void paintRowDepthBar(DrawRowParams & p);
 
@@ -602,7 +604,7 @@ private:
 
        // fix the cursor `cur' after a characters has been deleted at `where'
        // position. Called by deleteEmptyParagraphMechanism
-       void fixCursorAfterDelete(BufferView * bview,
+       void fixCursorAfterDelete(BufferView * bv,
                                  LyXCursor & cur,
                                  LyXCursor const & where) const;
 
@@ -614,8 +616,14 @@ public:
        /** Updates all counters starting BEHIND the row. Changed paragraphs
         * with a dynamic left margin will be rebroken. */
        void updateCounters(BufferView *) const;
-       /// 
+       ///
        void update(BufferView * bv, bool changed = true);
+       /**
+        * Returns an inset if inset was hit, or 0 if not.
+        * If hit, the coordinates are changed relative to the inset.
+        */
+       Inset * checkInsetHit(BufferView * bv, int & x, int & y) const;
+
 private:
        ///
        void setCounter(Buffer const *, Paragraph * par) const;
@@ -663,10 +671,7 @@ private:
          screen in pixel */
        int labelFill(BufferView *, Row const * row) const;
 
-       ///
-       lyx::pos_type beginningOfMainBody(Buffer const *, Paragraph const * par) const;
-
-       /** 
+       /**
         * Returns the left beginning of the text.
         * This information cannot be taken from the layout object, because
         * in LaTeX the beginning of the text fits in some cases
@@ -678,25 +683,6 @@ private:
        ///
        int labelEnd (BufferView *, Row const * row) const;
 
-       /** returns the number of separators in the specified row.
-         The separator on the very last column doesnt count
-         */
-       int numberOfSeparators(Buffer const *, Row const * row) const;
-
-       /** returns the number of hfills in the specified row. The
-         LyX-Hfill is a LaTeX \hfill so that the hfills at the
-         beginning and at the end were ignored. This is {\em MUCH}
-         more usefull than not to ignore!
-         */
-       int numberOfHfills(Buffer const *, Row const * row) const;
-
-       /// like NumberOfHfills, but only those in the manual label!
-       int numberOfLabelHfills(Buffer const *, Row const * row) const;
-       /** returns true, if a expansion is needed. Rules are given by
-         LaTeX
-         */
-       bool hfillExpansion(Buffer const *, Row const * row_ptr,
-                           lyx::pos_type pos) const;
        ///
        LColor::color backgroundColor();
 
@@ -723,13 +709,6 @@ private:
        unsigned char transformChar(unsigned char c, Paragraph * par,
                                    lyx::pos_type pos) const;
 
-       /** returns the paragraph position of the last character in the
-         specified row
-         */
-       lyx::pos_type rowLast(Row const * row) const;
-       ///
-       lyx::pos_type rowLastPrintable(Row const * row) const;
-
        ///
        void charInserted();
 public:
@@ -741,6 +720,12 @@ public:
        void ownerParagraph(Paragraph *) const;
        // set it searching first for the right owner using the paragraph id
        void ownerParagraph(int id, Paragraph *) const;
+
+       /// return true if this is the outer-most lyxtext
+       bool isTopLevel() const;
 };
 
-#endif
+/// return the default height of a row in pixels, considering font zoom
+extern int defaultRowHeight();
+
+#endif // LYXTEXT_H