X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2FBufferView.h;h=8f18a25a38b6da3f16a651f17c84278ef7eb7a6b;hb=701b99ecd70ac472aa53c8b2317af44def4f9670;hp=f05a62fd6828adb1138a50ac732ba3704855ca33;hpb=49e5945ce44bf286fae41df442410e0b5d2aa113;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index f05a62fd68..8f18a25a38 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -15,25 +15,25 @@ #ifndef BUFFER_VIEW_H #define BUFFER_VIEW_H +#include "support/types.h" + #include #include - class Buffer; class Change; -class Encoding; +class DocIterator; class ErrorList; class FuncRequest; -class InsetOld; +class FuncStatus; class Language; +class LCursor; class LyXText; class LyXScreen; class LyXView; class Painter; -class TeXErrors; -class UpdatableInset; -class WordLangTuple; +class ParIterator; /** * A buffer view encapsulates a view onto a particular @@ -49,12 +49,12 @@ public: * Create a view with the given owner main window, * of the given dimensions. */ - BufferView(LyXView * owner, int x, int y, int w, int h); + BufferView(LyXView * owner, int w, int h); ~BufferView(); /// set the buffer we are viewing - void buffer(Buffer * b); + void setBuffer(Buffer * b); /// return the buffer being viewed Buffer * buffer() const; @@ -65,43 +65,32 @@ public: /// return the owning main view LyXView * owner() const; - /// return the visible top y - int top_y() const; - - /// set the visible top y - void top_y(int); - /// resize event has happened void resize(); /// reload the contained buffer void reload(); /// create a new buffer based on template - bool newFile(std::string const & fname, std::string const & tname, + void newFile(std::string const & fname, std::string const & tname, bool named = true); /// load a buffer into the view bool loadLyXFile(std::string const & name, bool tolastfiles = true); - /// fit the user cursor within the visible view - bool fitCursor(); - /// perform pending painting updates - void update(); - /** update for a particular inset. Gets a pointer and not a - * reference because we really need the pointer information - * to find it in the buffer. + /** perform pending painting updates. \c fitcursor means first + * to do a fitcursor, and to force an update if screen + * position changes. \c forceupdate means to force an update + * in any case. */ - void updateInset(InsetOld const *); + void update(bool fitcursor = true, bool forceupdate = true); + /// move the screen to fit the cursor. Only to be called with + /// good y coordinates (after a bv::metrics) + bool fitCursor(); /// reset the scrollbar to reflect current view position void updateScrollbar(); - /// FIXME - void redoCurrentBuffer(); /// FIXME bool available() const; - /// FIXME - void beforeChange(LyXText *); - /// Save the current position as bookmark i void savePosition(unsigned int i); /// Restore the position from bookmark i @@ -112,46 +101,15 @@ public: /// return the current change at the cursor Change const getCurrentChange(); - /** - * This holds the mapping between buffer paragraphs and screen rows. - * This should be private...but not yet. (Lgb) - */ - LyXText * text; /// return the lyxtext we are using LyXText * getLyXText() const; - /// Return the current inset we are "locked" in - UpdatableInset * theLockingInset() const; - /// lock the given inset FIXME: return value ? - bool lockInset(UpdatableInset * inset); - /// unlock the given inset - int unlockInset(UpdatableInset * inset); - /// unlock the currently locked inset - void insetUnlock(); - - /// return the current encoding at the cursor - Encoding const * getEncoding() const; - - /// return the parent language of the given inset - Language const * getParentLanguage(InsetOld * inset) const; - - /// Select the "current" word - void selectLastWord(); - /// replace the currently selected word - void replaceWord(std::string const & replacestring); - /// Update after spellcheck finishes - void endOfSpellCheck(); - /// return the next word - WordLangTuple const nextWord(float & value); + /// simple replacing. Use the font of the first selected character + void replaceSelectionWithString(std::string const & str); /// move cursor to the named label void gotoLabel(std::string const & label); - /// undo last action - void undo(); - /// redo last action - void redo(); - /// get the stored error list ErrorList const & getErrorList() const; /// show the error list to the user @@ -159,18 +117,6 @@ public: /// set the cursor based on the given TeX source row void setCursorFromRow(int row); - /** - * Insert an inset into the buffer. - * Place it in a layout of lout, - */ - bool insertInset(InsetOld * inset, std::string const & lout = std::string()); - - /// Inserts a lyx file at cursor position. return false if it fails - bool insertLyXFile(std::string const & file); - - /// FIXME - bool fitLockedInsetCursor(int x, int y, int asc, int desc); - /// hide the cursor if it is visible void hideCursor(); @@ -179,7 +125,7 @@ public: /// scroll document by the given number of lines of default height void scroll(int lines); /// Scroll the view by a number of pixels - void scrollDocView(int); + void scrollDocView(int pixels); /// return the pixel width of the document view int workWidth() const; @@ -189,9 +135,6 @@ public: /// switch between primary and secondary keymaps for RTL entry void switchKeyMap(); - /// FIXME - bool ChangeRefsIfUnique(std::string const & from, std::string const & to); - /// get the contents of the window system clipboard std::string const getClipboard() const; /// fill the window system clipboard @@ -199,37 +142,43 @@ public: /// tell the window system we have a selection void haveSelection(bool sel); + /// return true for events that will handle + FuncStatus getStatus(FuncRequest const & cmd); /// execute the given function bool dispatch(FuncRequest const & argument); + + /// clear the X selection + void unsetXSel(); + + /// access to offset + int offset_ref() const; + /// access to anchor + lyx::pit_type anchor_ref() const; - /// set target x position of cursor - void BufferView::x_target(int x); - /// return target x position of cursor - int BufferView::x_target() const; + /// access to full cursor + LCursor & cursor(); + /// access to full cursor + LCursor const & cursor() const; + /// + LyXText * text() const; + /// + void setCursor(ParIterator const & par, lyx::pos_type pos); + /* Sets the selection. When \c backwards == false, set anchor + * to \c cur and cursor to \c cur + \c length. When \c + * backwards == true, set anchor to \c cur and cursor to \c + * cur + \c length. + */ + void putSelectionAt(DocIterator const & cur, + int length, bool backwards); -private: - /// Set the current locking inset - void theLockingInset(UpdatableInset * inset); +private: + /// struct Pimpl; + /// friend struct BufferView::Pimpl; - + /// Pimpl * pimpl_; - - /** - * The target x position of the cursor. This is used for when - * we have text like : - * - * blah blah blah blah| blah blah blah - * blah blah blah - * blah blah blah blah blah blah - * - * When we move onto row 3, we would like to be vertically aligned - * with where we were in row 1, despite the fact that row 2 is - * shorter than x() - */ - int x_target_; - }; #endif // BUFFERVIEW_H