X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FBufferView.h;h=8f18a25a38b6da3f16a651f17c84278ef7eb7a6b;hb=701b99ecd70ac472aa53c8b2317af44def4f9670;hp=0e33c43e7b7d1fd5a55b6e09469a3d1c361c0c09;hpb=64488b06afe0db0f6d598e5b54505413b33b0855;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 0e33c43e7b..8f18a25a38 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,207 +1,177 @@ // -*- C++ -*- -/** \file - * Copyright 2002 the LyX Team - * Read the file COPYING +/** + * \file BufferView.h + * 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 -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" -#include "undo.h" -#include "commandtags.h" - -#include "insets/inset.h" +#include "support/types.h" #include -class LyXView; -class LyXText; -class TeXErrors; +#include + class Buffer; -class LyXScreen; +class Change; +class DocIterator; +class ErrorList; +class FuncRequest; +class FuncStatus; class Language; +class LCursor; +class LyXText; +class LyXScreen; +class LyXView; class Painter; -class UpdatableInset; +class ParIterator; -/// +/** + * A buffer view encapsulates a view onto a particular + * buffer, and allows access to operate upon it. A view + * is a sliding window of the entire document rendering. + * + * Eventually we will allow several views onto a single + * buffer, but not yet. + */ class BufferView : boost::noncopyable { public: - /// - enum UpdateCodes { - /// - UPDATE = 0, - /// - SELECT = 1, - /// - FITCUR = 2, - /// - CHANGE = 4 - }; + /** + * Create a view with the given owner main window, + * of the given dimensions. + */ + BufferView(LyXView * owner, int w, int h); - /// - BufferView(LyXView * owner, int , int , int, int); - /// ~BufferView(); - /// + + /// set the buffer we are viewing + void setBuffer(Buffer * b); + /// return the buffer being viewed Buffer * buffer() const; - /// + + /// return the painter object for drawing onto the view Painter & painter() const; - /// + /// return the screen object for handling re-drawing LyXScreen & screen() const; - /// - void buffer(Buffer * b); - /// - void resize(int, int, int, int); - /// + /// return the owning main view + LyXView * owner() const; + + /// resize event has happened void resize(); - /// - void redraw(); - /// + + /// reload the contained buffer + void reload(); + /// 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(); - /// - void update(); - // - void update(LyXText *, UpdateCodes uc); - /// + /// reset the scrollbar to reflect current view position void updateScrollbar(); - /// - Inset * checkInsetHit(LyXText *, int & x, int & y); - /// - void redoCurrentBuffer(); - /// - int resizeCurrentBuffer(); - /// - void cursorPrevious(LyXText *); - /// - void cursorNext(LyXText *); - /// + + /// FIXME bool available() const; - /// - LyXView * owner() const; - /// - void beforeChange(LyXText *); - /// + + /// Save the current position as bookmark i void savePosition(unsigned int i); - /// + /// Restore the position from bookmark i void restorePosition(unsigned int i); - /// + /// does the given bookmark have a saved position ? 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; - /// + + /// return the current change at the cursor + Change const getCurrentChange(); + + /// return the lyxtext we are using 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); - /// - int slx; - /// - int sly; - /// - void insetUnlock(); - /// - void replaceWord(string const & replacestring); - /// - void endOfSpellCheck(); - /// - void selectLastWord(); - /// - string const nextWord(float & value); - /// - bool gotoLabel(string const & label); - /// - void paste(); - /// - void cut(bool realcut = true); - /// - void copy(); - /// - void pasteEnvironment(); - /// - void copyEnvironment(); - /// - void menuUndo(); - /// - void menuRedo(); - /// removes all autodeletable insets - bool removeAutoInsets(); - /// - void insertErrors(TeXErrors & terr); - /// + + /// 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); + + /// get the stored error list + ErrorList const & getErrorList() const; + /// show the error list to the user + 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. - 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); - 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); - /// - bool lockInset(UpdatableInset * inset); - /// - void showLockedInsetCursor(int x, int y, int asc, int desc); - /// - void hideLockedInsetCursor(); - /// - bool fitLockedInsetCursor(int x, int y, int asc, int desc); - /// - int unlockInset(UpdatableInset * inset); - /// - void lockedInsetStoreUndo(Undo::undo_kind kind); - /// - void showCursor(); - /// + + /// hide the cursor if it is visible void hideCursor(); - /// - void toggleSelection(bool = true); - /// - void toggleToggle(); - /// - void center(); + /// center the document view around the cursor + void center(); + /// 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; + /// return the pixel height of the document view + int workHeight() const; + + /// switch between primary and secondary keymaps for RTL entry + void switchKeyMap(); + + /// get the contents of the window system clipboard + std::string const getClipboard() const; + /// fill the window system clipboard + 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); + + /// 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. + */ + void putSelectionAt(DocIterator const & cur, + int length, bool backwards); - /// - void setState(); - /// - bool ChangeInsets(Inset::Code code, string const & from, - string const & to); - /// - bool ChangeRefsIfUnique(string const & from, string const & to); - /// - bool ChangeCitationsIfUnique(string const & from, string const & to); - /// - string const getClipboard() const; - /// - void pasteClipboard(bool asPara); - /// - void stuffClipboard(string const &) const; - /// - bool Dispatch(kb_action action, string const & argument); private: /// struct Pimpl; @@ -211,9 +181,4 @@ private: Pimpl * pimpl_; }; - -/// -BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, - BufferView::UpdateCodes uc2); - -#endif +#endif // BUFFERVIEW_H