X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=e13893664aa5b8b7e1d1c411a4e983c8aa932d96;hb=2b300d130c21037e9ae9cb547024be53111d2014;hp=0f43d9fa1416630da974624ed265f7c0617b094c;hpb=b92c96554385bcbc91262cd9a83766f422552564;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 0f43d9fa14..e13893664a 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -17,30 +17,44 @@ #endif #include FORMS_H_LOCATION -#include "BackStack.h" -#include "LaTeX.h" #include "undo.h" -#include "UpdateInset.h" +#include 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(); /// + LyXScreen * screen() const; + /// + WorkArea * workarea() const; + /// void buffer(Buffer * b); /// void resize(int, int, int, int); @@ -49,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(); @@ -71,20 +86,26 @@ 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; /// + int workWidth() const; + /// UpdatableInset * the_locking_inset; /// + void updateInset(Inset * inset, bool mark_dirty); + /// bool inset_slept; /// int slx; @@ -103,7 +124,7 @@ public: /// void selectLastWord(); /// - char * nextWord(float & value); + string const nextWord(float & value); /// void insertCorrectQuote(); /// @@ -138,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); /// @@ -184,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); - /// - int scrollUp(long time); - /// - int scrollDown(long time); - -public: /// bool focus() const; /// @@ -213,63 +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 trippleClick(int x, int y, unsigned int button); - /// - LyXView * owner_; + void tripleClick(int x, int y, unsigned int button); /// - 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; - /// - UpdateInset updatelist; -public: + void stuffClipboard(string const &) const; +private: + struct Pimpl; /// - void updateInset(Inset *, bool); + friend struct BufferView::Pimpl; /// - void pushIntoUpdateList(Inset * i) { - updatelist.push(i); - } + Pimpl * pimpl_; }; + +/// +BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, + BufferView::UpdateCodes uc2); + #endif