X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FBufferView.h;h=ef0a4c90edefd6ef70010928de0f9a20c623e84e;hb=e7ae04343eeb55d92b52c979c2fd5f5ea54ccf38;hp=abbc288d0d8d99e828d4e1adf1ca1f461db71647;hpb=cfdd73ea94c3cc0058459d67b1c62fabd31fbeb1;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index abbc288d0d..ef0a4c90ed 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -16,91 +16,108 @@ #pragma interface #endif -#include FORMS_H_LOCATION -#include "BackStack.h" -#include "LaTeX.h" +#include "LString.h" #include "undo.h" - -#define NEW_WA 1 +#include "commandtags.h" +#include class LyXView; +class LyXText; +class TeXErrors; class Buffer; class LyXScreen; -class Inset; -class LyXText; class WorkArea; +class Language; /// -class BufferView { +class BufferView : boost::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_; } -#ifdef USE_PAINTER + Buffer * buffer() const; /// Painter & painter(); -#endif -#ifdef NEW_WA /// - WorkArea * getWorkArea() { return workarea; } -#else + LyXScreen * screen() const; /// - FL_OBJECT * getWorkArea() { return work_area; } -#endif + WorkArea * workarea() const; /// void buffer(Buffer * b); -#ifdef NEW_WA /// void resize(int, int, int, int); -#endif /// void resize(); /// void redraw(); /// - void fitCursor(); + void fitCursor(LyXText *); /// void update(); - /// - void update(signed char f); - /// - void smallUpdate(signed char f); + // + void update(LyXText *, UpdateCodes uc); /// void updateScrollbar(); /// + Inset * checkInsetHit(LyXText *, int & x, int & y, + unsigned int button); + /// void redoCurrentBuffer(); /// int resizeCurrentBuffer(); /// - void gotoError(); + void gotoInset(std::vector const & codes, + bool same_content); /// - void cursorPrevious(); + void gotoInset(Inset::Code codes, bool same_content); /// - void cursorNext(); + void cursorPrevious(LyXText *); + /// + void cursorNext(LyXText *); /// bool available() const; /// - LyXView * owner() const { return owner_; } - /// - LyXScreen * getScreen() { - fl_set_timer(timer_cursor, 0.4); - return screen; - } + 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; /// - UpdatableInset * the_locking_inset; + LyXText * getLyXText() const; + /// + LyXText * getParentText(Inset * inset) const; + /// + Language const * getParentLanguage(Inset * inset) const; + /// + int workWidth() const; + /// + UpdatableInset * theLockingInset() const; + /// + void theLockingInset(UpdatableInset * inset); + /// + void updateInset(Inset * inset, bool mark_dirty); /// bool inset_slept; /// @@ -120,12 +137,10 @@ public: /// void selectLastWord(); /// - char * nextWord(float & value); + string const nextWord(float & value); /// void insertCorrectQuote(); /// - void gotoNote(); - /// bool gotoLabel(string const & label); /// void paste(); @@ -140,7 +155,7 @@ public: /// void hfill(); /// - void protectedBlank(); + void protectedBlank(LyXText *); /// void newline(); /// @@ -155,170 +170,99 @@ 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, bool behind = false); + /** 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(long x, long 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); /// void lockedInsetStoreUndo(Undo::undo_kind kind); -private: - friend class WorkArea; - - /// Update pixmap of screen - void updateScreen(); -#ifdef NEW_WA - /// - void workAreaExpose(); - /// - void ScrollUpOnePage(); /// - void ScrollDownOnePage(); -#else + void showCursor(); /// - int workAreaExpose(); + void hideCursor(); /// - void ScrollUpOnePage(long /*time*/); + void toggleSelection(bool = true); /// - void ScrollDownOnePage(long /*time*/); -#endif - /// - void create_view(int, int, int, int); - /// - Inset * checkInsetHit(int & x, int & y); - /// - int ScrollUp(long time); + void toggleToggle(); /// - int ScrollDown(long time); - -public: - -#ifdef NEW_WA + void center(); + /// bool focus() const; /// void focus(bool); /// bool active() 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); -#else - /// 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); -#endif - /// - 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); + bool belowMouse() const; + /// A callback for the slider in the scrollbar. + void scrollCB(double); /// - void SetState(); + void setState(); -private: -#ifdef NEW_WA - /// - void WorkAreaMotionNotify(int x, int y, unsigned int state); - /// - void WorkAreaButtonPress(int x, int y, unsigned int button); - /// - void WorkAreaButtonRelease(int x, int y, unsigned int button); - /// - void WorkAreaSelectionNotify(Window win, XEvent * event); -#else - /// - int WorkAreaMotionNotify(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); /// - int WorkAreaButtonPress(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); + void pushIntoUpdateList(Inset * i); /// - int WorkAreaButtonRelease(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); + bool ChangeInsets(Inset::Code code, string const & from, + string const & to); /// - int WorkAreaSelectionNotify(FL_OBJECT *, Window win, - int /*w*/, int /*h*/, - XEvent * event, void * /*d*/); -#endif - /// - LyXView * owner_; - /// - Buffer * buffer_; - /// - LyXScreen * screen; - /// - long current_scrollbar_value; - /// - bool lyx_focus; - /// - bool work_area_focus; -#ifndef NEW_WA - /// - FL_OBJECT * work_area; + bool ChangeRefsIfUnique(string const & from, string const & to); /// - FL_OBJECT * scrollbar; + bool ChangeCitationsIfUnique(string const & from, string const & to); /// - FL_OBJECT * button_down; + void pasteClipboard(bool asPara); /// - FL_OBJECT * button_up; -#endif - /// - FL_OBJECT * figinset_canvas; + void stuffClipboard(string const &) const; /// - FL_OBJECT * timer_cursor; - /// - BackStack backstack; + bool Dispatch(kb_action action, string const & argument); +private: + struct Pimpl; /// - int last_click_x, last_click_y; -#ifdef NEW_WA + friend struct BufferView::Pimpl; /// - WorkArea * workarea; -#endif + Pimpl * pimpl_; }; + +/// +BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, + BufferView::UpdateCodes uc2); + #endif