X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.h;h=e13893664aa5b8b7e1d1c411a4e983c8aa932d96;hb=2b300d130c21037e9ae9cb547024be53111d2014;hp=64a2c0d550cc5f72540a22ae17689c85bb9e8665;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/BufferView.h b/src/BufferView.h index 64a2c0d550..e13893664a 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -1,53 +1,79 @@ // -*- C++ -*- /* This file is part of -* ====================================================== -* -* LyX, The Document Processor -* -* Copyright (C) 1995 Matthias Ettrich -* Copyright (C) 1995-1998 The LyX Team. -* -*======================================================*/ + * ====================================================== + * + * LyX, The Document Processor + * + * Copyright 1995 Matthias Ettrich + * Copyright 1995-2000 The LyX Team. + * + * ====================================================== */ -#ifndef _BUFFER_VIEW_H -#define _BUFFER_VIEW_H +#ifndef BUFFER_VIEW_H +#define BUFFER_VIEW_H #ifdef __GNUG__ #pragma interface #endif #include FORMS_H_LOCATION +#include "undo.h" +#include class LyXView; +class LyXText; +class TeXErrors; class Buffer; class LyXScreen; -class BackStack; -class Inset; +class WorkArea; /// -class BufferView { +class BufferView : public noncopyable { public: /// - BufferView(LyXView *owner, int ,int ,int, int); - /// - ~BufferView(); + enum UpdateCodes { + /// + UPDATE = 0, + /// + SELECT = 1, + /// + FITCUR = 2, + /// + CHANGE = 4 + }; + + /// + BufferView(LyXView * owner, int , int , int, int); + /// + ~BufferView(); + /// + Buffer * buffer() const; + /// + Painter & painter(); /// - Buffer *currentBuffer() { return _buffer; } + LyXScreen * screen() const; /// - FL_OBJECT *getWorkArea() { return work_area; } + WorkArea * workarea() const; /// - void setBuffer(Buffer *b); + void buffer(Buffer * b); + /// + void resize(int, int, int, int); /// void resize(); /// void redraw(); /// - void fitCursor(); + void fitCursor(LyXText *); /// void update(); + // + void update(UpdateCodes uc); /// void updateScrollbar(); /// + Inset * checkInsetHit(LyXText *, int & x, int & y, + unsigned int button); + /// void redoCurrentBuffer(); /// int resizeCurrentBuffer(); @@ -60,99 +86,181 @@ public: /// bool available() const; /// - LyXView *getOwner() { return _owner; } + LyXView * owner() const; /// - LyXScreen *getScreen() - { - fl_set_timer(timer_cursor, 0.4); - return screen; - } + void beforeChange(); /// void savePosition(); /// void restorePosition(); -private: - /// Update pixmap of screen - void updateScreen(); /// - int workAreaExpose(); + bool NoSavedPositions(); + /** This holds the mapping between buffer paragraphs and screen rows. + This should be private...but not yet. (Lgb) + */ + LyXText * text; /// - void create_view(int, int, int, int); + int workWidth() const; /// - Inset * checkInsetHit(int &x, int &y); - /// - int ScrollUp(long time); + UpdatableInset * the_locking_inset; /// - int ScrollDown(long time); + void updateInset(Inset * inset, bool mark_dirty); /// - void ScrollUpOnePage(long /*time*/); + bool inset_slept; /// - void ScrollDownOnePage(long /*time*/); - - /// 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); - - /** Work area free object handler - */ - static int work_area_handler(FL_OBJECT *, int event, - FL_Coord, FL_Coord, int key, void *xev); + int slx; /// - int WorkAreaMotionNotify(FL_OBJECT *ob, - Window win, - int w, int h, - XEvent *ev, void *d); + int sly; /// - int WorkAreaSelectionNotify(FL_OBJECT *, Window win, - int /*w*/, int /*h*/, - XEvent *event, void */*d*/); + void insetUnlock(); /// - int WorkAreaButtonPress(FL_OBJECT *ob, - Window win, - int w, int h, - XEvent *ev, void *d); + void insetSleep(); /// - int WorkAreaButtonRelease(FL_OBJECT *ob, - Window win, - int w, int h, - XEvent *ev, void *d); + void insetWakeup(); /// - static void CursorToggleCB(FL_OBJECT *ob, long); + void replaceWord(string const & replacestring); /// - LyXView *_owner; + void endOfSpellCheck(); /// - Buffer *_buffer; + void selectLastWord(); /// - LyXScreen *screen; + string const nextWord(float & value); /// - long current_scrollbar_value; + void insertCorrectQuote(); /// - int work_area_width; + void gotoNote(); /// - bool lyx_focus; + bool gotoLabel(string const & label); /// - bool work_area_focus; + void paste(); /// - FL_OBJECT *work_area; + void cut(); /// - FL_OBJECT *figinset_canvas; + void copy(); /// - FL_OBJECT *scrollbar; + void pasteEnvironment(); /// - FL_OBJECT *button_down; + void copyEnvironment(); /// - FL_OBJECT *button_up; + void hfill(); /// - FL_OBJECT *timer_cursor; - /// - BackStack *backstack; + void protectedBlank(); + /// + void newline(); + /// + void menuSeparator(); + /// + void endOfSentenceDot(); + /// + void ldots(); + /// + void hyphenationPoint(); + /// + void menuUndo(); + /// + void menuRedo(); +#ifndef NEW_INSETS + /// + void toggleFloat(); + /// + void openStuff(); +#endif + /// + void insertNote(); +#ifndef NEW_INSETS + /// + void allFloats(char flag, char figmar); +#endif + /// removes all autodeletable insets + bool removeAutoInsets(); + /// + void insertErrors(TeXErrors & terr); + /// + 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); + /// open and lock an updatable inset + bool open_new_inset(UpdatableInset * new_inset); + /** 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(); /// - int last_click_x, last_click_y; + void fitLockedInsetCursor(int x, int y, int asc, int desc); + /// + int unlockInset(UpdatableInset * inset); + /// + void lockedInsetStoreUndo(Undo::undo_kind kind); + /// + void showCursor(); + /// + void hideCursor(); + /// + void toggleSelection(bool = true); + /// + void toggleToggle(); + /// + void center(); + + /// + bool focus() const; + /// + void focus(bool); + /// + bool active() const; + /// + bool belowMouse() const; + /// A callback for the slider in the scrollbar. + void scrollCB(double); + + /// + void setState(); + + /// + void pushIntoUpdateList(Inset * i); + /// + void workAreaExpose(); + /// + void workAreaButtonPress(int x, int y, unsigned int button); + /// + void workAreaButtonRelease(int x, int y, unsigned int button); + /// + void workAreaMotionNotify(int x, int y, unsigned int state); + /// + void doubleClick(int x, int y, unsigned int button); + /// + void tripleClick(int x, int y, unsigned int button); + /// + void enterView(); + /// + void leaveView(); + /// + bool ChangeRefs(string const & from, string const & to); + /// + void pasteClipboard(bool asPara); + /// + void stuffClipboard(string const &) const; +private: + struct Pimpl; + /// + friend struct BufferView::Pimpl; + /// + Pimpl * pimpl_; }; + +/// +BufferView::UpdateCodes operator|(BufferView::UpdateCodes uc1, + BufferView::UpdateCodes uc2); + #endif