X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=fa89ca527c11461e7d96e22631fd0ac5cb083d17;hb=da1f3b8ac93b75cea98091e24d994d21e3811dbc;hp=5f1f8fc25e3cdc42558a0d50c7dc01d33fe17a76;hpb=b8198905dc65d62ec43f835a42dc219455f881a0;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 5f1f8fc25e..fa89ca527c 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,208 +1,202 @@ // -*- 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 -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" -#include "undo.h" - -#include "insets/inset.h" -#include "WordLangTuple.h" +#include "support/types.h" #include -class LyXView; -class LyXText; -class TeXErrors; +#include + class Buffer; -class LyXScreen; +class Change; +class Encoding; +class ErrorList; +class FuncRequest; +class InsetBase; +class InsetOld; class Language; +class LCursor; +class LyXText; +class LyXScreen; +class LyXView; class Painter; +class ParIterator; +class PosIterator; +class TeXErrors; class UpdatableInset; -/// +/** + * 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 x, int y, int w, int h); - /// - BufferView(LyXView * owner, int , int , int, int); - /// ~BufferView(); - /// + + /// set the buffer we are viewing + void buffer(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); - /// + /// 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(); - /** - * 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(); + /// create a new buffer based on template + bool 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(); - // - void update(LyXText *, UpdateCodes uc); - /// + /// reset the scrollbar to reflect current view position void updateScrollbar(); - /// - Inset * checkInsetHit(LyXText *, int & x, int & y); - /// + /// FIXME void redoCurrentBuffer(); - /// - 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(); - /// return the next word - WordLangTuple 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); - /// + + /// update paragraph dialogs + void updateParagraphDialog(); + + /// 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; + + /// replace the currently selected word + void replaceWord(std::string const & replacestring); + /// 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 + 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(); - /// + + /** + * Insert an inset into the buffer. + * Place it in a layout of lout, + */ + bool insertInset(InsetBase * 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); - /// - 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); - /// + /// 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(); + /// 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 + void stuffClipboard(std::string const &) const; + /// tell the window system we have a selection + void haveSelection(bool sel); + + /// execute the given function + bool dispatch(FuncRequest const & argument); + + /// clear the X selection + void unsetXSel(); + + /// access to full cursor + LCursor & cursor(); + /// access to full cursor + LCursor const & cursor() const; /// - 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); + LyXText * text() const; /// - void stuffClipboard(string const &) const; + void setCursor(ParIterator const & par, lyx::pos_type pos); /// - bool dispatch(FuncRequest const & argument); + void putSelectionAt(PosIterator const & cur, int length, bool backwards); + private: /// struct Pimpl; @@ -212,9 +206,4 @@ private: Pimpl * pimpl_; }; - -/// -BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, - BufferView::UpdateCodes uc2); - -#endif +#endif // BUFFERVIEW_H