]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.h
Fixes to insettabular/text.
[lyx.git] / src / BufferView.h
index 07bc95f88a3d72b922443318d0108614bfa20b7c..e13893664aa5b8b7e1d1c411a4e983c8aa932d96 100644 (file)
@@ -1,13 +1,13 @@
 // -*- C++ -*-
 /* This file is part of
- * ======================================================
+ * ====================================================== 
  * 
  *           LyX, The Document Processor
  *        
- *           Copyright (C) 1995 Matthias Ettrich
- *           Copyright (C) 1995-1998 The LyX Team.
+ *           Copyright 1995 Matthias Ettrich
+ *           Copyright 1995-2000 The LyX Team.
  *
- * ======================================================*/
+ * ====================================================== */
 
 #ifndef BUFFER_VIEW_H
 #define BUFFER_VIEW_H
 #endif
 
 #include FORMS_H_LOCATION
-#include "BackStack.h"
+#include "undo.h"
+#include <boost/utility.hpp>
 
 class LyXView;
+class LyXText;
+class TeXErrors;
 class Buffer;
 class LyXScreen;
-class Inset;
+class WorkArea;
 
 ///
-class BufferView {
+class BufferView : public noncopyable {
 public:
        ///
-       BufferView(LyXView *owner, int ,int ,int, int);
+       enum UpdateCodes {
+               ///
+               UPDATE = 0,
+               ///
+               SELECT = 1,
+               ///
+               FITCUR = 2,
+               ///
+               CHANGE = 4
+       };
+                                           
        ///
-       Buffer *currentBuffer() { return _buffer; }
+       BufferView(LyXView * owner, int , int , int, int);
        ///
-       FL_OBJECT *getWorkArea() { return work_area; }
+       ~BufferView();
        ///
-       void setBuffer(Buffer *b);
+       Buffer * buffer() const;
+       ///
+       Painter & painter();
+       ///
+       LyXScreen * screen() const;
+       ///
+       WorkArea * workarea() const;
+       ///
+       void buffer(Buffer * b);
+       ///
+       void resize(int, int, int, int);
        ///
        void resize();
        ///
        void redraw();
        ///
-       void fitCursor();
+       void fitCursor(LyXText *);
        ///
        void update();
+       //
+       void update(UpdateCodes uc);
        ///
        void updateScrollbar();
        ///
+       Inset * checkInsetHit(LyXText *, int & x, int & y,
+                             unsigned int button);
+       /// 
        void redoCurrentBuffer();
        ///
        int resizeCurrentBuffer();
@@ -58,101 +86,181 @@ public:
        /// 
        bool available() const;
        ///
-       LyXView *getOwner() { return _owner; }
+       LyXView * owner() const;
        ///
-       LyXScreen *getScreen()
-       {
-               fl_set_timer(timer_cursor, 0.4);
-               return screen;
-       }
+       void beforeChange();
         ///
         void savePosition();
         ///
         void restorePosition();
-private:
-       /// Update pixmap of screen
-       void updateScreen();
        ///
-       int workAreaExpose();
+       bool NoSavedPositions();
+       /** This holds the mapping between buffer paragraphs and screen rows.
+           This should be private...but not yet. (Lgb)
+       */
+       LyXText * text;
        ///
-       void create_view(int, int, int, int);
+       int workWidth() const;
        ///
-       Inset * checkInsetHit(int &x, int &y);
-       /// 
-       int ScrollUp(long time);
+       UpdatableInset * the_locking_inset;
        ///
-       int ScrollDown(long time);
+       void updateInset(Inset * inset, bool mark_dirty);
        ///
-       void ScrollUpOnePage(long /*time*/);
+       bool inset_slept;
        ///
-       void ScrollDownOnePage(long /*time*/);
-
-public:
-       /// A callback for the up arrow in the scrollbar.
-       static void UpCB(FL_OBJECT *ob, long);
-
-       /// A callback for the slider in the scrollbar.
-       static void ScrollCB(FL_OBJECT *ob, long);
-
-       /// A callback for the down arrow in the scrollbar.
-       static void DownCB(FL_OBJECT *ob, long);
-
+       int slx;
        ///
-       static void CursorToggleCB(FL_OBJECT *ob, long);
-       /** Work area free object handler
-        */
-       static int work_area_handler(FL_OBJECT *, int event,
-                                    FL_Coord, FL_Coord, int key, void *xev);
-private:
+       int sly;
        ///
-       int WorkAreaMotionNotify(FL_OBJECT *ob,
-                                Window win,
-                                int w, int h,
-                                XEvent *ev, void *d);
+       void insetUnlock();
        ///
-       int WorkAreaSelectionNotify(FL_OBJECT *, Window win,
-                                   int /*w*/, int /*h*/,
-                                   XEvent *event, void */*d*/);
+       void insetSleep();
        ///
-       int WorkAreaButtonPress(FL_OBJECT *ob,
-                               Window win,
-                               int w, int h,
-                               XEvent *ev, void *d);
+       void insetWakeup();
        ///
-       int WorkAreaButtonRelease(FL_OBJECT *ob,
-                                 Window win,
-                                 int w, int h,
-                                 XEvent *ev, void *d);
+       void replaceWord(string const & replacestring);
        ///
-       LyXView *_owner;
+       void endOfSpellCheck();
        ///
-       Buffer *_buffer;
+       void selectLastWord();
        ///
-       LyXScreen *screen;
+       string const nextWord(float & value);
        ///
-       long current_scrollbar_value;
+       void insertCorrectQuote();
        ///
-       int work_area_width;
+       void gotoNote();
        ///
-       bool lyx_focus;
+       bool gotoLabel(string const & label);
        ///
-       bool work_area_focus;
+       void paste();
        ///
-       FL_OBJECT *work_area;
+       void cut();
        ///
-       FL_OBJECT *figinset_canvas;
+       void copy();
        ///
-       FL_OBJECT *scrollbar;
+       void pasteEnvironment();
        ///
-       FL_OBJECT *button_down;
+       void copyEnvironment();
        ///
-       FL_OBJECT *button_up;
+       void hfill();
        ///
-       FL_OBJECT *timer_cursor;
-        ///
-        BackStack backstack;
+       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();
+       ///
+       void insertErrors(TeXErrors & terr);
+       ///
+       void setCursorFromRow(int row);
+       /** 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
+       bool open_new_inset(UpdatableInset * new_inset);
+       /** Inserts a lyx file at cursor position.
+           @return #false# if it fails.
+       */
+       bool insertLyXFile(string const & file);
+       ///
+       bool lockInset(UpdatableInset * inset);
+       ///
+       void showLockedInsetCursor(int x, int y, int asc, int desc);
+       ///
+       void hideLockedInsetCursor();
        ///
-       int last_click_x, last_click_y;
+       void fitLockedInsetCursor(int x, int y, int asc, int desc);
+       ///
+       int unlockInset(UpdatableInset * inset);
+       ///
+       void lockedInsetStoreUndo(Undo::undo_kind kind);
+       ///
+       void showCursor();
+       ///
+       void hideCursor();
+       ///
+       void toggleSelection(bool = true);
+       ///
+       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);
+
+       ///
+       void setState();
+
+       ///
+       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 enterView();
+       ///
+       void leaveView();
+       ///
+       bool ChangeRefs(string const & from, string const & to);
+       ///
+       void pasteClipboard(bool asPara);
+       ///
+       void stuffClipboard(string const &) const;
+private:
+       struct Pimpl;
+       ///
+       friend struct BufferView::Pimpl;
+       ///
+       Pimpl * pimpl_;
 };
 
+
+///
+BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1,
+                                 BufferView::UpdateCodes uc2);
+
 #endif