X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettabular.h;h=08cadf926b8e913292543362b582bae2a7f20393;hb=df050b76f529a29fe04cc5a980138e822705ffb1;hp=5247e0241206718f4f6d2edbaf8e2e98ac8e31c1;hpb=ccfdb2a78a11ba65262fa28f40fdf83b2f405f26;p=lyx.git diff --git a/src/insets/insettabular.h b/src/insets/insettabular.h index 5247e02412..08cadf926b 100644 --- a/src/insets/insettabular.h +++ b/src/insets/insettabular.h @@ -4,7 +4,7 @@ * * LyX, The Document Processor * - * Copyright (C) 1995-2000 The LyX Team. + * Copyright 1995-2000 The LyX Team. * *====================================================== */ @@ -53,6 +53,8 @@ #include "tabular.h" #include "LString.h" #include "lyxcursor.h" +#include "lyxfunc.h" +#include class LyXLex; class Painter; @@ -61,163 +63,222 @@ class Buffer; class InsetTabular : public UpdatableInset { public: - /// - InsetTabular(Buffer *, int rows=1, int columns=1); - /// - InsetTabular(InsetTabular const &, Buffer *); - /// - ~InsetTabular(); - /// - Inset * Clone() const; - /// - void Read(Buffer const *, LyXLex &); - /// - void Write(Buffer const *, std::ostream &) const; - /// - int ascent(Painter &, LyXFont const &) const; - /// - int descent(Painter &, LyXFont const &) const; - /// - int width(Painter &, LyXFont const & f) const; - /// - void draw(BufferView *, const LyXFont &, int , float &) const; - /// - void update(BufferView *, LyXFont const &, bool); - /// - const char * EditMessage() const; - /// - void Edit(BufferView *, int x, int y, unsigned int); - /// - bool doClearArea() const { return !locked; }; - /// - void InsetUnlock(BufferView *); - /// - void UpdateLocal(BufferView *, bool what, bool mark_dirty); - /// - bool LockInsetInInset(BufferView *, UpdatableInset *); - /// - bool UnlockInsetInInset(BufferView *, UpdatableInset *, bool lr=false); - /// - bool UpdateInsetInInset(BufferView *, Inset *); - /// - int InsetInInsetY(); - /// - UpdatableInset * GetLockingInset(); - /// - UpdatableInset * GetFirstLockingInsetOfType(Inset::Code); - /// - bool InsertInset(BufferView *, Inset *); - /// - bool display() const { return tabular->IsLongTabular(); } - /// - void InsetButtonRelease(BufferView *, int, int, int); - /// - void InsetButtonPress(BufferView *, int, int, int); - /// - void InsetMotionNotify(BufferView *, int, int, int); - /// - void InsetKeyPress(XKeyEvent *); - /// - UpdatableInset::RESULT LocalDispatch(BufferView *, int, string const &); - /// - int Latex(Buffer const *, std::ostream &, bool, bool) const; - /// - int Ascii(Buffer const *, std::ostream &) const; - /// - int Linuxdoc(Buffer const *, std::ostream &) const; - /// - int DocBook(Buffer const *, std::ostream &) const; - /// - void Validate(LaTeXFeatures & features) const; - /// - Inset::Code LyxCode() const { return Inset::TABULAR_CODE; } - /// - void GetCursorPos(int & x, int & y) const; - /// - void ToggleInsetCursor(BufferView *); - /// - void TabularFeatures(BufferView * bv, int feature, string val=""); - /// - int GetActCell() { return actcell; } - /// - void SetFont(BufferView *, LyXFont const &, bool toggleall = false); - /// - int getMaxWidth(Painter & pain, UpdatableInset const *) const; - /// - Buffer * BufferOwner() const { return buffer; } + /// + enum UpdateCodes { + NONE = 0, + CURSOR = 1, + CELL = 2, + SELECTION = 3, + FULL = 4, + INIT = 5 + }; + /// + InsetTabular(Buffer const &, int rows = 1, int columns = 1); + /// + InsetTabular(InsetTabular const &, Buffer const &); + /// + ~InsetTabular(); + /// + Inset * Clone(Buffer const &) const; + /// + void Read(Buffer const *, LyXLex &); + /// + void Write(Buffer const *, std::ostream &) const; + /// + int ascent(BufferView *, LyXFont const &) const; + /// + int descent(BufferView *, LyXFont const &) const; + /// + int width(BufferView *, LyXFont const & f) const; + /// + void draw(BufferView *, const LyXFont &, int , float &, bool) const; + /// + void update(BufferView *, LyXFont const &, bool = false); + /// + string const EditMessage() const; + /// + void Edit(BufferView *, int x, int y, unsigned int); + /// + bool doClearArea() const { return !locked; }; + /// + void InsetUnlock(BufferView *); + /// + void UpdateLocal(BufferView *, UpdateCodes, bool mark_dirty) const; + /// + bool LockInsetInInset(BufferView *, UpdatableInset *); + /// + bool UnlockInsetInInset(BufferView *, UpdatableInset *, bool lr = false); + /// + bool UpdateInsetInInset(BufferView *, Inset *); + /// + unsigned int InsetInInsetY(); + /// + UpdatableInset * GetLockingInset(); + /// + UpdatableInset * GetFirstLockingInsetOfType(Inset::Code); + /// + bool InsertInset(BufferView *, Inset *); + /// + bool IsTextInset() const { return true; } + /// + bool display() const { return tabular->IsLongTabular(); } + /// + void InsetButtonRelease(BufferView *, int, int, int); + /// + void InsetButtonPress(BufferView *, int, int, int); + /// + void InsetMotionNotify(BufferView *, int, int, int); + /// + void InsetKeyPress(XKeyEvent *); + /// + UpdatableInset::RESULT LocalDispatch(BufferView *, kb_action, + string const &); + /// + int Latex(Buffer const *, std::ostream &, bool, bool) const; + /// + int Ascii(Buffer const *, std::ostream &, int linelen) const; + /// + int Linuxdoc(Buffer const *, std::ostream &) const; + /// + int DocBook(Buffer const *, std::ostream &) const; + /// + void Validate(LaTeXFeatures & features) const; + /// + Inset::Code LyxCode() const { return Inset::TABULAR_CODE; } + /// + void GetCursorPos(BufferView *, int & x, int & y) const; + /// + void ToggleInsetCursor(BufferView *); + /// + bool TabularFeatures(BufferView * bv, string const & what); + /// + void TabularFeatures(BufferView * bv, LyXTabular::Feature feature, + string const & val = string()); + /// + int GetActCell() const { return actcell; } + /// + void SetFont(BufferView *, LyXFont const &, bool toggleall = false); + /// + int getMaxWidth(BufferView *, UpdatableInset const *) const; + /// + Buffer * BufferOwner() const { return const_cast(buffer); } + /// + LyXText * getLyXText(BufferView const *, bool const recursive = false) const; + /// + void resizeLyXText(BufferView *) const; + /// + void OpenLayoutDialog(BufferView *) const; + /// + bool ShowInsetDialog(BufferView *) const; + /// + LyXFunc::func_status getStatus(string const & argument) const; - /// - /// Public structures and variables - /// - LyXTabular * tabular; + // + // Public structures and variables + /// + LyXTabular * tabular; + /// + SigC::Signal0 hideDialog; private: - void calculate_width_of_cells(BufferView *, LyXFont const &, bool =false) const; - /// - void DrawCellLines(Painter &, int x, int baseline, int row, int cell) - const; - /// - void DrawCellSelection(Painter &, int x, int baseline, - int row, int column, int cell) const; - /// - void ShowInsetCursor(BufferView *); - /// - void HideInsetCursor(BufferView *); - /// - void setPos(Painter &, int x, int y) const; - /// - bool SetCellDimensions(Painter & pain, int cell, int row); - /// - UpdatableInset::RESULT moveRight(BufferView *, bool lock=true); - UpdatableInset::RESULT moveLeft(BufferView *, bool lock=true); - UpdatableInset::RESULT moveUp(BufferView *); - UpdatableInset::RESULT moveDown(BufferView *); - bool moveNextCell(BufferView *); - bool movePrevCell(BufferView *); - bool Delete(); - /// - int getCellXPos(int cell) const; - void resetPos(Painter &) const; - /// - void RemoveTabularRow(); - /// - bool hasSelection() const {return ((sel_pos_start != sel_pos_end) || - (sel_cell_start != sel_cell_end));} - /// - bool ActivateCellInset(BufferView *, int x=0, int y=0, int button=0, - bool behind = false); - /// - bool InsetHit(BufferView * bv, int x, int y) const; - /// - int GetMaxWidthOfCell(Painter &, int cell) const; - /// - void recomputeTextInsets(BufferView *, const LyXFont &) const; + /// + bool calculate_dimensions_of_cells(BufferView *, LyXFont const &, + bool = false) const; + /// + void DrawCellLines(Painter &, int x, int baseline, + int row, int cell) const; + /// + void DrawCellSelection(Painter &, int x, int baseline, + int row, int column, int cell) const; + /// + void ShowInsetCursor(BufferView *, bool show=true); + /// + void HideInsetCursor(BufferView *); + /// + void setPos(BufferView *, int x, int y) const; + /// + UpdatableInset::RESULT moveRight(BufferView *, bool lock = true); + /// + UpdatableInset::RESULT moveLeft(BufferView *, bool lock = true); + /// + UpdatableInset::RESULT moveUp(BufferView *, bool lock = true); + /// + UpdatableInset::RESULT moveDown(BufferView *, bool lock = true); + /// + bool moveNextCell(BufferView *, bool lock = false); + /// + bool movePrevCell(BufferView *, bool lock = false); + /// + bool Delete(); + /// + int getCellXPos(int cell) const; + /// + void resetPos(BufferView *) const; + /// + void RemoveTabularRow(); + /// + bool hasSelection() const { + return sel_cell_start != sel_cell_end; + } + /// + void clearSelection() const { + sel_cell_start = sel_cell_end = 0; + } + /// + bool ActivateCellInset(BufferView *, int x = 0, int y = 0, int button = 0, + bool behind = false); + /// + bool ActivateCellInsetAbs(BufferView *, int x = 0, int y=0, int button=0); + /// + bool InsetHit(BufferView * bv, int x, int y) const; + /// + int GetMaxWidthOfCell(BufferView * bv, int cell) const; + /// + bool hasPasteBuffer() const; + /// + bool copySelection(BufferView *); + /// + bool pasteSelection(BufferView *); + /// + bool cutSelection(); + /// + bool isRightToLeft(BufferView *); - /// - /// Private structures and variables - /// - InsetText - * the_locking_inset; - Buffer - * buffer; - mutable LyXCursor - cursor, - old_cursor; - mutable int - inset_pos, - inset_x, inset_y, - sel_pos_start, - sel_pos_end, - sel_cell_start, - sel_cell_end, - actcell, - oldcell, - actcol, - actrow; - bool - locked, - no_selection; - mutable bool - init_inset; + // + // Private structures and variables + /// + InsetText * the_locking_inset; + /// + InsetText * old_locking_inset; + /// + Buffer const * buffer; + /// + mutable LyXCursor cursor; + /// + mutable unsigned int inset_x; + /// + mutable unsigned int inset_y; + /// + mutable int sel_cell_start; + /// + mutable int sel_cell_end; + /// + mutable int actcell; + /// + mutable int oldcell; + /// + mutable int actcol; + /// + mutable int actrow; + /// + mutable int first_visible_cell; + /// + bool no_selection; + /// + bool no_draw; + /// + mutable bool locked; + /// + mutable UpdateCodes need_update; }; #endif