X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=fa89ca527c11461e7d96e22631fd0ac5cb083d17;hb=da1f3b8ac93b75cea98091e24d994d21e3811dbc;hp=056e405dcc0bf679e554ce38b34c9d94acfa734c;hpb=2a882902eb6a2633ed419556f6a630e0a048e154;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 056e405dcc..fa89ca527c 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,35 +1,43 @@ // -*- 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 Encoding; +class ErrorList; +class FuncRequest; +class InsetBase; +class InsetOld; +class Language; +class LCursor; class LyXText; -class TeXErrors; -class Buffer; class LyXScreen; -class Language; +class LyXView; class Painter; +class ParIterator; +class PosIterator; +class TeXErrors; class UpdatableInset; -class WordLangTuple; -class Encoding; -class ErrorList; -class ErrorItem; /** * A buffer view encapsulates a view onto a particular @@ -41,15 +49,6 @@ class ErrorItem; */ 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. @@ -70,28 +69,27 @@ 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(); - /** - * 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(); - // 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 @@ -100,9 +98,6 @@ public: /// 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 @@ -113,58 +108,35 @@ 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(); + /// 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(Inset * inset) const; + Language const * getParentLanguage(InsetOld * 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); + 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(string const & label); + void gotoLabel(std::string const & label); /// undo last action void undo(); /// redo last action void redo(); - /// removes all autodeletable insets - bool removeAutoInsets(); /// get the stored error list ErrorList const & getErrorList() const; - /// clears the stored error list - void resetErrorList(); - /// stored this error list - void setErrorList(ErrorList const &); - /// adds a single error to the list - void addError(ErrorItem const &); /// show the error list to the user - void showErrorList(string const &) const; + void showErrorList(std::string const &) const; /// set the cursor based on the given TeX source row void setCursorFromRow(int row); @@ -172,19 +144,13 @@ public: * Insert an inset into the buffer. * Place it in a layout of lout, */ - bool insertInset(Inset * inset, string const & lout = string()); + bool insertInset(InsetBase * inset, std::string const & lout = std::string()); /// Inserts a lyx file at cursor position. return false if it fails - bool insertLyXFile(string const & file); + bool insertLyXFile(std::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(); @@ -205,44 +171,39 @@ public: void switchKeyMap(); /// FIXME - bool ChangeRefsIfUnique(string const & from, string const & to); - /// FIXME - bool ChangeCitationsIfUnique(string const & from, string const & to); + bool ChangeRefsIfUnique(std::string const & from, std::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); /// 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; + /// + LyXText * text() const; + /// + void setCursor(ParIterator const & par, lyx::pos_type pos); + /// + void putSelectionAt(PosIterator const & cur, int length, bool backwards); 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. - */ - bool ChangeInsets(Inset::Code code, string const & from, - string const & to); - - + /// struct Pimpl; + /// friend struct BufferView::Pimpl; - + /// Pimpl * pimpl_; }; - -BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, - BufferView::UpdateCodes uc2); - #endif // BUFFERVIEW_H