X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=8d72e59c0c50569ef4bd798a69763499a30f5cb0;hb=eb395d9d313c1bc07ff48b47e080442f095dc97a;hp=ba4b2f573335560170648007089b12adbfa1cf4d;hpb=8dccec5c46a1689fe3ea37144252e952771e1e1c;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index ba4b2f5733..8d72e59c0c 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,13 +1,11 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright (C) 1995 Matthias Ettrich - * Copyright (C) 1995-1998 The LyX Team. +/** + * \file BufferView.h + * Copyright 2002 the LyX Team + * Read the file COPYING * - * ====================================================== */ + * \author Lars Gullik Bjønnes +*/ #ifndef BUFFER_VIEW_H #define BUFFER_VIEW_H @@ -16,152 +14,197 @@ #pragma interface #endif -#include FORMS_H_LOCATION -#include "BackStack.h" -#include "lyxtext.h" +#include "LString.h" +#include "undo.h" +#include "insets/inset.h" + +#include class LyXView; +class LyXText; +class TeXErrors; class Buffer; class LyXScreen; -class Inset; +class Language; +class Painter; +class UpdatableInset; +class WordLangTuple; +class WorkArea; /// -class BufferView { +class BufferView : boost::noncopyable { public: + /// + enum UpdateCodes { + /// + UPDATE = 0, + /// + SELECT = 1, + /// + FITCUR = 2, + /// + CHANGE = 4 + }; + /// BufferView(LyXView * owner, int , int , int, int); /// ~BufferView(); /// - Buffer * buffer() const { return buffer_; } + Buffer * buffer() const; /// - FL_OBJECT * getWorkArea() { return work_area; } + Painter & painter() const; + /// + LyXScreen & screen() const; + /// return the work area for this bview + WorkArea & workarea() const; /// void buffer(Buffer * b); /// 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(); /// - void redraw(); - /// - void fitCursor(); + bool fitCursor(); /// void update(); - /// - void update(signed char f); - /// - void smallUpdate(signed char f); + // + void update(LyXText *, UpdateCodes uc); /// void updateScrollbar(); /// + Inset * checkInsetHit(LyXText *, int & x, int & y); + /// void redoCurrentBuffer(); /// - int resizeCurrentBuffer(); + bool available() const; /// - void gotoError(); + LyXView * owner() const; /// - void cursorPrevious(); + void beforeChange(LyXText *); /// - void cursorNext(); - /// - bool available() const; + void savePosition(unsigned int i); /// - LyXView * owner() const { return owner_; } + void restorePosition(unsigned int i); /// - LyXScreen * getScreen() { - fl_set_timer(timer_cursor, 0.4); - return screen; - } - /// - void savePosition(); - /// - void restorePosition(); + 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; -private: - /// Update pixmap of screen - void updateScreen(); /// - int workAreaExpose(); + LyXText * getLyXText() const; /// - void create_view(int, int, int, int); + LyXText * getParentText(Inset * inset) const; /// - Inset * checkInsetHit(int & x, int & y); - /// - int ScrollUp(long time); + Language const * getParentLanguage(Inset * inset) const; /// - int ScrollDown(long time); + int workWidth() const; /// - void ScrollUpOnePage(long /*time*/); + UpdatableInset * theLockingInset() const; /// - void ScrollDownOnePage(long /*time*/); - -public: - /// A callback for the up arrow in the scrollbar. - static void UpCB(FL_OBJECT * ob, long); - - /// A callback for the slider in the scrollbar. - static void ScrollCB(FL_OBJECT * ob, long); - - /// A callback for the down arrow in the scrollbar. - static void DownCB(FL_OBJECT * ob, long); - + void theLockingInset(UpdatableInset * inset); /// - static void CursorToggleCB(FL_OBJECT * ob, long); - /** Work area free object handler - */ - static int work_area_handler(FL_OBJECT *, int event, - FL_Coord, FL_Coord, int key, void *xev); -private: + void updateInset(Inset * inset, bool mark_dirty); + /// + int slx; + /// + int sly; + /// + void insetUnlock(); + /// + void replaceWord(string const & replacestring); /// - int WorkAreaMotionNotify(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); + void endOfSpellCheck(); /// - int WorkAreaSelectionNotify(FL_OBJECT *, Window win, - int /*w*/, int /*h*/, - XEvent * event, void * /*d*/); + void selectLastWord(); + /// return the next word + WordLangTuple const nextWord(float & value); /// - int WorkAreaButtonPress(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); + bool gotoLabel(string const & label); /// - int WorkAreaButtonRelease(FL_OBJECT * ob, - Window win, - int w, int h, - XEvent * ev, void * d); + void pasteEnvironment(); /// - LyXView * owner_; + void copyEnvironment(); /// - Buffer * buffer_; + void menuUndo(); /// - LyXScreen * screen; + void menuRedo(); + /// removes all autodeletable insets + bool removeAutoInsets(); /// - long current_scrollbar_value; + void insertErrors(TeXErrors & terr); /// - bool lyx_focus; + void setCursorFromRow(int row); + /** Insert an inset into the buffer. + Place 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()); + /// 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); /// - bool work_area_focus; + void lockedInsetStoreUndo(Undo::undo_kind kind); /// - FL_OBJECT * work_area; + void showCursor(); /// - FL_OBJECT * figinset_canvas; + void hideCursor(); /// - FL_OBJECT * scrollbar; + void toggleSelection(bool = true); /// - FL_OBJECT * button_down; + void toggleToggle(); + /// + void center(); + /// + int scroll(long time); + + /// Scroll the view by a number of pixels + void scrollDocView(int); + + /// + void switchKeyMap(); + /// - FL_OBJECT * button_up; + bool ChangeInsets(Inset::Code code, string const & from, + string const & to); /// - FL_OBJECT * timer_cursor; - /// - BackStack backstack; + bool ChangeRefsIfUnique(string const & from, string const & to); /// - int last_click_x, last_click_y; + bool ChangeCitationsIfUnique(string const & from, string const & to); + /// + string const getClipboard() const; + /// + void stuffClipboard(string const &) const; + /// + bool dispatch(FuncRequest const & argument); + +private: + /// + struct Pimpl; + /// + friend struct BufferView::Pimpl; + /// + Pimpl * pimpl_; }; + +/// +BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, + BufferView::UpdateCodes uc2); + #endif