X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=8f18a25a38b6da3f16a651f17c84278ef7eb7a6b;hb=701b99ecd70ac472aa53c8b2317af44def4f9670;hp=fe00dc967238f3ba4a18c9413ff22b59a3c23809;hpb=3e2abfdd78214ccf674665e197fa948b12ba1d1e;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index fe00dc9672..8f18a25a38 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,33 +1,39 @@ // -*- C++ -*- /** * \file BufferView.h - * Copyright 2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes -*/ + * \author Alfredo Braustein + * \author Lars Gullik Bjønnes + * \author John Levon + * \author Jürgen Vigna + * + * Full author contact details are available in file CREDITS. + */ #ifndef BUFFER_VIEW_H #define BUFFER_VIEW_H -#include "LString.h" -#include "undo.h" - -#include "insets/inset.h" +#include "support/types.h" #include +#include + +class Buffer; class Change; -class LyXView; +class DocIterator; +class ErrorList; +class FuncRequest; +class FuncStatus; +class Language; +class LCursor; class LyXText; -class TeXErrors; -class Buffer; class LyXScreen; -class Language; +class LyXView; class Painter; -class UpdatableInset; -class WordLangTuple; -class Encoding; +class ParIterator; /** * A buffer view encapsulates a view onto a particular @@ -39,25 +45,16 @@ class Encoding; */ class BufferView : boost::noncopyable { public: - /** - * Codes to store necessary pending updates - * of the document rendering. - */ - enum UpdateCodes { - UPDATE = 0, //< repaint - SELECT = 1 //< reset selection to current cursor pos - }; - /** * 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; @@ -70,37 +67,30 @@ public: /// resize event has happened 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(); /// reload the contained buffer void reload(); - - /// fit the user cursor within the visible view + /// create a new buffer based on template + 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); + + /** 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 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(); - /// perform pending painting updates - void update(); - // update for a particular lyxtext - void update(LyXText *, UpdateCodes uc); - /// update for the top-level lyxtext - void update(UpdateCodes uc); - /// update for a particular inset - void updateInset(Inset * inset); /// 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 @@ -111,71 +101,22 @@ 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(Inset * inset) const; - - /// Select the "current" word - void selectLastWord(); - /// replace the currently selected word - void replaceWord(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(string const & label); - - /// undo last action - void undo(); - /// redo last action - void redo(); + void gotoLabel(std::string const & label); - /// removes all autodeletable insets - bool removeAutoInsets(); + /// get the stored error list + ErrorList const & getErrorList() const; /// show the error list to the user - void showErrorList(); + void showErrorList(std::string const &) const; /// 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(Inset * inset, string const & lout = string()); - - /// Inserts a lyx file at cursor position. return false if it fails - bool insertLyXFile(string const & file); - - /// FIXME - bool fitLockedInsetCursor(int x, int y, int asc, int desc); - /// FIXME - void lockedInsetStoreUndo(Undo::undo_kind kind); - /// FIXME - void toggleSelection(bool = true); - /// FIXME: my word ! - void toggleToggle(); - /// hide the cursor if it is visible void hideCursor(); @@ -184,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; @@ -194,45 +135,50 @@ public: /// switch between primary and secondary keymaps for RTL entry void switchKeyMap(); - /// FIXME - bool ChangeRefsIfUnique(string const & from, string const & to); - /// FIXME - bool ChangeCitationsIfUnique(string const & from, string const & to); - /// get the contents of the window system clipboard - string const getClipboard() const; + std::string const getClipboard() const; /// fill the window system clipboard - void stuffClipboard(string const &) const; + void stuffClipboard(std::string const &) const; /// 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); -private: - /// Set the current locking inset - void theLockingInset(UpdatableInset * inset); - - /// return the lyxtext containing this inset - LyXText * getParentText(Inset * inset) const; - - /** - * Change all insets with the given code's contents to a new - * string. May only be used with InsetCommand-derived insets - * Returns true if a screen update is needed. + /// clear the X selection + void unsetXSel(); + + /// access to offset + int offset_ref() const; + /// access to anchor + lyx::pit_type anchor_ref() 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. */ - bool ChangeInsets(Inset::Code code, string const & from, - string const & to); + void putSelectionAt(DocIterator const & cur, + int length, bool backwards); +private: + /// struct Pimpl; + /// friend struct BufferView::Pimpl; - + /// Pimpl * pimpl_; }; - -BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, - BufferView::UpdateCodes uc2); - #endif // BUFFERVIEW_H