]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
move mouse click handling to LyXText::dispatch
[lyx.git] / src / BufferView.h
index e1b3bc621812798597dc185814dfec066d444b7d..8d72e59c0c50569ef4bd798a69763499a30f5cb0 100644 (file)
@@ -1,13 +1,11 @@
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *        
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+/**
+ * \file BufferView.h
+ * Copyright 2002 the LyX Team
+ * Read the file COPYING
  *
- * ====================================================== */
+ *  \author Lars Gullik Bjønnes
+*/
 
 #ifndef BUFFER_VIEW_H
 #define BUFFER_VIEW_H
 #pragma interface
 #endif
 
-#include FORMS_H_LOCATION
+#include "LString.h"
 #include "undo.h"
-#include "support/utility.hpp"
+
+#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 WordLangTuple;
 class WorkArea;
 
 ///
-class BufferView : public noncopyable {
+class BufferView : boost::noncopyable {
 public:
        ///
        enum UpdateCodes {
@@ -41,7 +46,7 @@ public:
                ///
                CHANGE = 4
        };
-                                           
+
        ///
        BufferView(LyXView * owner, int , int , int, int);
        ///
@@ -49,64 +54,63 @@ public:
        ///
        Buffer * buffer() const;
        ///
-       Painter & painter();
-       ///
-       LyXScreen * screen() const;
+       Painter & painter() const;
        ///
-       WorkArea * workarea() const;
+       LyXScreen & screen() const;
+       /// return the work area for this bview
+       WorkArea & workarea() const;
        ///
        void buffer(Buffer * b);
        ///
-       void resize(int, int, int, int);
-       ///
        void resize();
+       /**
+        * Repaint the pixmap. Used for when we don't want
+        * to go through the full update() logic, just a simple
+        * repaint of the whole screen.
+        */
+       void repaint();
        ///
-       void redraw();
-       ///
-       void fitCursor();
+       bool fitCursor();
        ///
        void update();
        //
-       void update(UpdateCodes uc);
+       void update(LyXText *, UpdateCodes uc);
        ///
        void updateScrollbar();
        ///
-       Inset * checkInsetHit(LyXText *, int & x, int & y,
-                             unsigned int button);
-       /// 
-       void redoCurrentBuffer();
-       ///
-       int resizeCurrentBuffer();
-       ///
-       void gotoError();
+       Inset * checkInsetHit(LyXText *, int & x, int & y);
        ///
-       void cursorPrevious();
+       void redoCurrentBuffer();
        ///
-       void cursorNext();
-       /// 
        bool available() const;
        ///
        LyXView * owner() const;
        ///
-       void beforeChange();
-        ///
-        void savePosition();
-        ///
-        void restorePosition();
+       void beforeChange(LyXText *);
+       ///
+       void savePosition(unsigned int i);
        ///
-       bool NoSavedPositions();
+       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;
        ///
+       LyXText * getLyXText() const;
+       ///
+       LyXText * getParentText(Inset * inset) const;
+       ///
+       Language const * getParentLanguage(Inset * inset) const;
+       ///
        int workWidth() const;
        ///
-       UpdatableInset * the_locking_inset;
+       UpdatableInset * theLockingInset() const;
        ///
-       void updateInset(Inset * inset, bool mark_dirty);
+       void theLockingInset(UpdatableInset * inset);
        ///
-       bool inset_slept;
+       void updateInset(Inset * inset, bool mark_dirty);
        ///
        int slx;
        ///
@@ -114,63 +118,23 @@ public:
        ///
        void insetUnlock();
        ///
-       void insetSleep();
-       ///
-       void insetWakeup();
-       ///
        void replaceWord(string const & replacestring);
        ///
        void endOfSpellCheck();
        ///
        void selectLastWord();
-       ///
-       char * nextWord(float & value);
-       ///
-       void insertCorrectQuote();
-       ///
-       void gotoNote();
+       /// return the next word
+       WordLangTuple const nextWord(float & value);
        ///
        bool gotoLabel(string const & label);
        ///
-       void paste();
-       ///
-       void cut();
-       ///
-       void copy();
-       ///
        void pasteEnvironment();
        ///
        void copyEnvironment();
        ///
-       void hfill();
-       ///
-       void protectedBlank();
-       ///
-       void newline();
-       ///
-       void menuSeparator();
-       ///
-       void endOfSentenceDot();
-       ///
-       void ldots();
-       ///
-       void hyphenationPoint();
-       ///
        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();
        ///
@@ -178,25 +142,20 @@ public:
        ///
        void setCursorFromRow(int row);
        /** Insert an inset into the buffer.
-           Placie it in a layout of lout,
+           Place 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
-       bool open_new_inset(UpdatableInset * new_inset);
-       /** Inserts a lyx file at cursor position.
-           @return #false# if it fails.
-       */
+       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);
+       bool fitLockedInsetCursor(int x, int y, int asc, int desc);
        ///
        int unlockInset(UpdatableInset * inset);
        ///
@@ -211,46 +170,31 @@ public:
        void toggleToggle();
        ///
        void center();
-       
-       ///
-       bool focus() const;
        ///
-       void focus(bool);
-       ///
-       bool active() const;
-       ///
-       bool belowMouse() const;
-       /// A callback for the slider in the scrollbar.
-       void scrollCB(double);
+       int scroll(long time);
 
-       ///
-       void setState();
+       /// Scroll the view by a number of pixels
+       void scrollDocView(int);
 
        ///
-       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 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);
+       void switchKeyMap();
+
        ///
-       void enterView();
+       bool ChangeInsets(Inset::Code code, string const & from,
+                         string const & to);
        ///
-       void leaveView();
+       bool ChangeRefsIfUnique(string const & from, string const & to);
        ///
-       bool ChangeRefs(string const & from, string const & to);
+       bool ChangeCitationsIfUnique(string const & from, string const & to);
        ///
-       void pasteClipboard(bool asPara);
+       string const getClipboard() const;
        ///
        void stuffClipboard(string const &) const;
+       ///
+       bool dispatch(FuncRequest const & argument);
+
 private:
+       ///
        struct Pimpl;
        ///
        friend struct BufferView::Pimpl;