]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
Fixes to insettabular/text.
[lyx.git] / src / BufferView.h
index 4f3d352723a649502d185d5cd2ae6cc273cb7ed5..e13893664aa5b8b7e1d1c411a4e983c8aa932d96 100644 (file)
 #endif
 
 #include FORMS_H_LOCATION
-#include "BackStack.h"
-#include "LaTeX.h"
 #include "undo.h"
-#include "UpdateInset.h"
+#include <boost/utility.hpp>
 
 class LyXView;
+class LyXText;
+class TeXErrors;
 class Buffer;
 class LyXScreen;
-class Inset;
-class LyXText;
 class WorkArea;
 
 ///
-class BufferView {
+class BufferView : public noncopyable {
 public:
+       ///
+       enum UpdateCodes {
+               ///
+               UPDATE = 0,
+               ///
+               SELECT = 1,
+               ///
+               FITCUR = 2,
+               ///
+               CHANGE = 4
+       };
+                                           
        ///
        BufferView(LyXView * owner, int , int , int, int);
        ///
        ~BufferView();
        ///
-       Buffer * buffer() const { return buffer_; }
+       Buffer * buffer() const;
        ///
        Painter & painter();
        ///
-       Painter & getPainter() const;
+       LyXScreen * screen() const;
+       ///
+       WorkArea * workarea() const;
        ///
        void buffer(Buffer * b);
        ///
@@ -51,16 +63,17 @@ public:
        ///
        void redraw();
        ///
-       void fitCursor();
+       void fitCursor(LyXText *);
        ///
        void update();
-       ///
-       void update(signed char f);
-       ///
-       void smallUpdate(signed char f);
+       //
+       void update(UpdateCodes uc);
        ///
        void updateScrollbar();
        ///
+       Inset * checkInsetHit(LyXText *, int & x, int & y,
+                             unsigned int button);
+       /// 
        void redoCurrentBuffer();
        ///
        int resizeCurrentBuffer();
@@ -73,19 +86,21 @@ public:
        /// 
        bool available() const;
        ///
-       LyXView * owner() const { return owner_; }
+       LyXView * owner() const;
        ///
        void beforeChange();
         ///
         void savePosition();
         ///
         void restorePosition();
+       ///
+       bool NoSavedPositions();
        /** This holds the mapping between buffer paragraphs and screen rows.
            This should be private...but not yet. (Lgb)
        */
        LyXText * text;
        ///
-       unsigned short paperWidth() const;
+       int workWidth() const;
        ///
        UpdatableInset * the_locking_inset;
        ///
@@ -109,7 +124,7 @@ public:
        ///
        void selectLastWord();
        ///
-       char * nextWord(float & value);
+       string const nextWord(float & value);
        ///
        void insertCorrectQuote();
        ///
@@ -144,37 +159,44 @@ public:
        void menuUndo();
        ///
        void menuRedo();
+#ifndef NEW_INSETS
        ///
        void toggleFloat();
        ///
        void openStuff();
+#endif
        ///
        void insertNote();
+#ifndef NEW_INSETS
        ///
        void allFloats(char flag, char figmar);
+#endif
        /// removes all autodeletable insets
        bool removeAutoInsets();
        ///
        void insertErrors(TeXErrors & terr);
        ///
        void setCursorFromRow(int row);
-       /** Insert an inset into the buffer
-           Insert inset into buffer, placing it in a layout of lout,
-           if no_table make sure that it doesn't end up in a table. */
-       void insertInset(Inset * inset, string const & lout = string(),
+       /** Insert an inset into the buffer.
+           Placie it in a layout of lout,
+           if no_table make sure that it doesn't end up in a table.
+       */
+       bool insertInset(Inset * inset, string const & lout = string(),
                         bool no_table = false);
        /// open and lock an updatable inset
-       void open_new_inset(UpdatableInset * new_inset);
-       /// Inserts a lyx file at cursor position. Returns false if it fails.
+       bool open_new_inset(UpdatableInset * new_inset);
+       /** Inserts a lyx file at cursor position.
+           @return #false# if it fails.
+       */
        bool insertLyXFile(string const & file);
        ///
-       int lockInset(UpdatableInset * inset);
+       bool lockInset(UpdatableInset * inset);
        ///
-       void showLockedInsetCursor(long x, long y, int asc, int desc);
+       void showLockedInsetCursor(int x, int y, int asc, int desc);
        ///
        void hideLockedInsetCursor();
        ///
-       void fitLockedInsetCursor(long x, long y, int asc, int desc);
+       void fitLockedInsetCursor(int x, int y, int asc, int desc);
        ///
        int unlockInset(UpdatableInset * inset);
        ///
@@ -190,27 +212,6 @@ public:
        ///
        void center();
        
-private:
-       friend class WorkArea;
-       
-       /// Update pixmap of screen
-       void updateScreen();
-       ///
-       void workAreaExpose();
-       ///
-       void scrollUpOnePage();
-       ///
-       void scrollDownOnePage();
-       ///
-       void create_view();
-       ///
-       Inset * checkInsetHit(int & x, int & y, unsigned int button);
-       /// 
-       int scrollUp(long time);
-       ///
-       int scrollDown(long time);
-
-public:
        ///
        bool focus() const;
        ///
@@ -219,61 +220,47 @@ public:
        bool active() const;
        ///
        bool belowMouse() const;
-       /// A callback for the up arrow in the scrollbar.
-       void upCB(long time, int button);
        /// A callback for the slider in the scrollbar.
        void scrollCB(double);
-       /// A callback for the down arrow in the scrollbar.
-       void downCB(long time, int button);
-
-       ///
-       static void cursorToggleCB(FL_OBJECT * ob, long);
 
        ///
        void setState();
 
-private:
        ///
-       void workAreaMotionNotify(int x, int y, unsigned int state);
+       void pushIntoUpdateList(Inset * i);
+       ///
+       void workAreaExpose();
        ///
        void workAreaButtonPress(int x, int y, unsigned int button);
        ///
        void workAreaButtonRelease(int x, int y, unsigned int button);
        ///
-       void workAreaSelectionNotify(Window win, XEvent * event);
+       void workAreaMotionNotify(int x, int y, unsigned int state);
        ///
        void doubleClick(int x, int y, unsigned int button);
        ///
        void tripleClick(int x, int y, unsigned int button);
        ///
-       LyXView * owner_;
-       ///
-       Buffer * buffer_;
+       void enterView();
        ///
-       LyXScreen * screen;
+       void leaveView();
        ///
-       long current_scrollbar_value;
+       bool ChangeRefs(string const & from, string const & to);
        ///
-       bool lyx_focus;
+       void pasteClipboard(bool asPara);
        ///
-       bool work_area_focus;
-       ///
-       FL_OBJECT * figinset_canvas;
-       ///
-       FL_OBJECT * timer_cursor;
-        ///
-        BackStack backstack;
-       ///
-       int last_click_x, last_click_y;
-       ///
-       WorkArea * workarea;
+       void stuffClipboard(string const &) const;
+private:
+       struct Pimpl;
        ///
-       UpdateInset updatelist;
-public:
+       friend struct BufferView::Pimpl;
        ///
-       void pushIntoUpdateList(Inset * i) {
-               updatelist.push(i);
-       }
+       Pimpl * pimpl_;
 };
 
+
+///
+BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1,
+                                 BufferView::UpdateCodes uc2);
+
 #endif