]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
don't copy if a reference is fine
[lyx.git] / src / BufferView.h
index 766f48f737c083e7e5c614d179f4232be68611d1..50518247c4c9f8ddf5349aae9e13fe08f894e5b9 100644 (file)
@@ -5,7 +5,7 @@
  *           LyX, The Document Processor
  *        
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+ *           Copyright 1995-2001 The LyX Team.
  *
  * ====================================================== */
 
 #pragma interface
 #endif
 
-#include FORMS_H_LOCATION
+#include "LString.h"
 #include "undo.h"
+#include "commandtags.h"
+#include "insets/inset.h"
+#include <boost/utility.hpp>
 
 class LyXView;
 class LyXText;
 class TeXErrors;
 class Buffer;
+class LyXScreen;
+class Language;
+class Painter;
+class UpdatableInset;
 
 ///
-class BufferView {
+class BufferView : boost::noncopyable {
 public:
+       ///
+       enum UpdateCodes {
+               ///
+               UPDATE = 0,
+               ///
+               SELECT = 1,
+               ///
+               FITCUR = 2,
+               ///
+               CHANGE = 4
+       };
+                                           
        ///
        BufferView(LyXView * owner, int , int , int, int);
        ///
@@ -36,6 +55,8 @@ public:
        ///
        Painter & painter();
        ///
+       LyXScreen * screen() const;
+       ///
        void buffer(Buffer * b);
        ///
        void resize(int, int, int, int);
@@ -47,42 +68,50 @@ public:
        void fitCursor();
        ///
        void update();
-       ///
-       void update(signed char f);
+       //
+       void update(LyXText *, UpdateCodes uc);
        ///
        void updateScrollbar();
        ///
+       Inset * checkInsetHit(LyXText *, int & x, int & y);
+       /// 
        void redoCurrentBuffer();
        ///
        int resizeCurrentBuffer();
        ///
-       void gotoError();
-       ///
-       void cursorPrevious();
+       void cursorPrevious(LyXText *);
        ///
-       void cursorNext();
+       void cursorNext(LyXText *);
        /// 
        bool available() const;
        ///
        LyXView * owner() const;
        ///
-       void beforeChange();
+       void beforeChange(LyXText *);
         ///
-        void savePosition();
+        void savePosition(unsigned int i);
         ///
-        void restorePosition();
+        void restorePosition(unsigned int i);
+       ///
+       bool isSavedPosition(unsigned int i);
        /** This holds the mapping between buffer paragraphs and screen rows.
            This should be private...but not yet. (Lgb)
        */
        LyXText * text;
        ///
-       unsigned short paperWidth() const;
+       LyXText * getLyXText() const;
        ///
-       UpdatableInset * the_locking_inset;
+       LyXText * getParentText(Inset * inset) const;
        ///
-       void updateInset(Inset * inset, bool mark_dirty);
+       Language const * getParentLanguage(Inset * inset) const;
+       ///
+       int workWidth() const;
+       ///
+       UpdatableInset * theLockingInset() const;
        ///
-       bool inset_slept;
+       void theLockingInset(UpdatableInset * inset); 
+       ///
+       void updateInset(Inset * inset, bool mark_dirty);
        ///
        int slx;
        ///
@@ -100,17 +129,13 @@ public:
        ///
        void selectLastWord();
        ///
-       char * nextWord(float & value);
-       ///
-       void insertCorrectQuote();
-       ///
-       void gotoNote();
+       string const nextWord(float & value);
        ///
        bool gotoLabel(string const & label);
        ///
        void paste();
        ///
-       void cut();
+       void cut(bool realcut = true);
        ///
        void copy();
        ///
@@ -118,54 +143,34 @@ public:
        ///
        void copyEnvironment();
        ///
-       void hfill();
-       ///
-       void protectedBlank();
-       ///
-       void newline();
-       ///
-       void menuSeparator();
-       ///
-       void endOfSentenceDot();
-       ///
-       void ldots();
-       ///
-       void hyphenationPoint();
-       ///
        void menuUndo();
        ///
        void menuRedo();
-       ///
-       void toggleFloat();
-       ///
-       void openStuff();
-       ///
-       void insertNote();
-       ///
-       void allFloats(char flag, char figmar);
        /// 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. */
-       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.
+       /** 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);
+       bool insertInset(Inset * inset, string const & lout = string());
+       /** Inserts a lyx file at cursor position.
+           @return #false# if it fails.
+       */
        bool insertLyXFile(string const & file);
        ///
        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);
        ///
@@ -192,35 +197,37 @@ public:
        /// A callback for the slider in the scrollbar.
        void scrollCB(double);
 
-       ///
-       static void cursorToggleCB(FL_OBJECT * ob, long);
-
        ///
        void setState();
 
        ///
        void pushIntoUpdateList(Inset * i);
        ///
-       void workAreaExpose();
-       ///
-       void workAreaButtonPress(int x, int y, unsigned int button);
+       bool ChangeInsets(Inset::Code code, string const & from, 
+                         string const & to);
        ///
-       void workAreaButtonRelease(int x, int y, unsigned int button);
+       bool ChangeRefsIfUnique(string const & from, string const & to);
        ///
-       void workAreaMotionNotify(int x, int y, unsigned int state);
+       bool ChangeCitationsIfUnique(string const & from, string const & to);
        ///
-       void doubleClick(int x, int y, unsigned int button);
+       string const getClipboard() const;
        ///
-       void tripleClick(int x, int y, unsigned int button);
+       void pasteClipboard(bool asPara);
        ///
-       void enterView();
+       void stuffClipboard(string const &) const;
        ///
-       void leaveView();
-       ///
-       void workAreaSelectionNotify(Window win, XEvent * event);
+       bool Dispatch(kb_action action, string const & argument);
 private:
        struct Pimpl;
+       ///
+       friend struct BufferView::Pimpl;
+       ///
        Pimpl * pimpl_;
 };
 
+
+///
+BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1,
+                                 BufferView::UpdateCodes uc2);
+
 #endif