*
* LyX, The Document Processor
*
- * Copyright (C) 1995 Matthias Ettrich
- * Copyright (C) 1995-1998 The LyX Team.
+ * Copyright 1995 Matthias Ettrich
+ * Copyright 1995-2000 The LyX Team.
*
* ====================================================== */
#endif
#include FORMS_H_LOCATION
-#include "BackStack.h"
-#include "lyxtext.h"
-
+#include "undo.h"
class LyXView;
+class LyXText;
+class TeXErrors;
class Buffer;
class LyXScreen;
-class Inset;
+class WorkArea;
///
class BufferView {
public:
///
- BufferView(LyXView *owner, int , int , int, int);
+ 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;
+ ///
+ Painter & painter();
+ ///
+ LyXScreen * screen() const;
///
- FL_OBJECT * getWorkArea() { return work_area; }
+ WorkArea * workarea() const;
///
void buffer(Buffer * b);
///
+ void resize(int, int, int, int);
+ ///
void resize();
///
void redraw();
///
void update();
///
- void update(signed char f);
+ void update(UpdateCodes uc);
///
void updateScrollbar();
///
+ Inset * checkInsetHit(LyXText *, int & x, int & y, unsigned int button);
+ ///
void redoCurrentBuffer();
///
int resizeCurrentBuffer();
///
bool available() const;
///
- LyXView * owner() const { return owner_; }
+ LyXView * owner() const;
///
- LyXScreen * getScreen()
- {
- fl_set_timer(timer_cursor, 0.4);
- return screen;
- }
+ void beforeChange();
///
void savePosition();
///
void restorePosition();
+ ///
+ bool NoSavedPositions();
/** 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();
+ int workWidth() const;
///
- void create_view(int, int, int, int);
+ UpdatableInset * the_locking_inset;
///
- Inset * checkInsetHit(int & x, int & y);
- ///
- int ScrollUp(long time);
+ void updateInset(Inset * inset, bool mark_dirty);
///
- int ScrollDown(long time);
+ bool inset_slept;
///
- void ScrollUpOnePage(long /*time*/);
+ int slx;
///
- 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);
-
+ int sly;
///
- 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 insetUnlock();
///
- int WorkAreaMotionNotify(FL_OBJECT * ob,
- Window win,
- int w, int h,
- XEvent * ev, void * d);
+ void insetSleep();
///
- int WorkAreaSelectionNotify(FL_OBJECT *, Window win,
- int /*w*/, int /*h*/,
- XEvent * event, void * /*d*/);
+ void insetWakeup();
///
- int WorkAreaButtonPress(FL_OBJECT * ob,
- Window win,
- int w, int h,
- XEvent * ev, void * d);
+ void replaceWord(string const & replacestring);
///
- int WorkAreaButtonRelease(FL_OBJECT * ob,
- Window win,
- int w, int h,
- XEvent * ev, void * d);
+ void endOfSpellCheck();
///
- LyXView * owner_;
+ void selectLastWord();
///
- Buffer * buffer_;
+ char * nextWord(float & value);
///
- LyXScreen * screen;
+ void insertCorrectQuote();
///
- long current_scrollbar_value;
+ void gotoNote();
///
- int work_area_width;
+ bool gotoLabel(string const & label);
///
- bool lyx_focus;
+ void paste();
///
- bool work_area_focus;
+ void cut();
///
- FL_OBJECT * work_area;
+ void copy();
///
- FL_OBJECT * figinset_canvas;
+ void pasteEnvironment();
///
- FL_OBJECT * scrollbar;
+ void copyEnvironment();
///
- FL_OBJECT * button_down;
+ void hfill();
///
- FL_OBJECT * button_up;
+ void protectedBlank();
///
- FL_OBJECT * timer_cursor;
- ///
- BackStack backstack;
+ void newline();
+ ///
+ void menuSeparator();
+ ///
+ void endOfSentenceDot();
+ ///
+ void ldots();
+ ///
+ void hyphenationPoint();
+ ///
+ void menuUndo();
+ ///
+ void menuRedo();
+ ///
+ void toggleFloat();
+ ///
+ void openStuff();
+ ///
+ void insertNote();
+ ///
+ void allFloats(char flag, char figmar);
+ /// removes all autodeletable insets
+ bool removeAutoInsets();
+ ///
+ void insertErrors(TeXErrors & terr);
+ ///
+ void setCursorFromRow(int row);
+ /** Insert an inset into the buffer
+ Insert inset into buffer, placing 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
+ void open_new_inset(UpdatableInset * new_inset);
+ /// Inserts a lyx file at cursor position. Returns false if it fails.
+ bool insertLyXFile(string const & file);
+ ///
+ bool lockInset(UpdatableInset * inset);
+ ///
+ void showLockedInsetCursor(long x, long y, int asc, int desc);
///
- int last_click_x, last_click_y;
+ void hideLockedInsetCursor();
+ ///
+ void fitLockedInsetCursor(long x, long 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