X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fformulabase.h;h=a91eed0b38d80c09e101176f92d2e6920096ca2d;hb=e093e5e80c334995a77445c8e66a9f3c9594dda1;hp=c04fa737a578e5173c79aa33eccebb2fecb79e29;hpb=54e7ddb5d9a348ae9cfc60f399e9c0c2658ab4c5;p=lyx.git diff --git a/src/mathed/formulabase.h b/src/mathed/formulabase.h index c04fa737a5..a91eed0b38 100644 --- a/src/mathed/formulabase.h +++ b/src/mathed/formulabase.h @@ -4,7 +4,7 @@ * Purpose: Common parts of the math LyX insets * Author: André Pönitz * Created: May 2001 - * Description: Allows the edition of math paragraphs inside Lyx. + * Description: Allows the edition of math paragraphs inside Lyx. * * Copyright: 2001, The LyX Project * @@ -12,24 +12,27 @@ * the GNU General Public Licence version 2 or later. */ -#ifndef INSET_FORMULABASE_H +#ifndef INSET_FORMULABASE_H #define INSET_FORMULABASE_H #ifdef __GNUG__ #pragma interface #endif -#include #include "insets/inset.h" +#include "frontends/mouse_state.h" +#include "lyxfont.h" // only for getType(): #include "math_defs.h" +#include + class Buffer; class BufferView; -class MathInset; +class MathAtom; -/// +/// An abstract base class for all math related LyX insets class InsetFormulaBase : public UpdatableInset { public: /// @@ -42,38 +45,16 @@ public: virtual int width(BufferView *, LyXFont const &) const = 0; /// virtual void draw(BufferView *,LyXFont const &, int, float &, bool) const = 0; - - /// These are just wrappers taking the unused Buffer * dummy parameter - /// - virtual void write(Buffer const *, std::ostream &) const; - /// - virtual void read(Buffer const *, LyXLex & lex); - /// - virtual int latex(Buffer const *, std::ostream &, - bool fragile, bool free_spc) const; - /// - virtual int ascii(Buffer const *, std::ostream &, int linelen) const; - /// - virtual int linuxdoc(Buffer const *, std::ostream &) const; - /// - virtual int docBook(Buffer const *, std::ostream &) const; /// virtual MathInsetTypes getType() const = 0; - -protected: - /// the actual functions don't use the Buffer * parameter - /// - virtual void write(std::ostream &) const = 0; - /// - virtual void read(LyXLex & lex) = 0; - /// - virtual int latex(std::ostream &, bool fragile, bool free_spc) const = 0; - /// - virtual int ascii(std::ostream &, int linelen) const = 0; - /// - virtual int linuxdoc(std::ostream &) const = 0; - /// - virtual int docBook(std::ostream &) const = 0; + /// lowest x coordinate + virtual int xlow() const; + /// highest x coordinate + virtual int xhigh() const; + /// lowest y coordinate + virtual int ylow() const; + /// highest y coordinate + virtual int yhigh() const; public: /// @@ -82,14 +63,11 @@ public: virtual Inset * clone(Buffer const &, bool same_id = false) const = 0; /// virtual Inset::Code lyxCode() const; -#if 0 - /// - virtual LyXFont const convertFont(LyXFont const & f) const; -#endif /// what appears in the minibuffer when opening virtual string const editMessage() const; /// - virtual void edit(BufferView *, int x, int y, unsigned int button); + virtual void edit(BufferView *, int x, int y, mouse_button::state button); + /// virtual void edit(BufferView *, bool front = true); /// virtual void toggleInsetCursor(BufferView *); @@ -102,31 +80,67 @@ public: /// virtual void toggleInsetSelection(BufferView * bv); /// - virtual void insetButtonPress(BufferView *, int x, int y, int button); - /// - virtual void insetButtonRelease(BufferView *, int x, int y, int button); + virtual void insetButtonPress(BufferView *, int x, int y, mouse_button::state button); /// - virtual void insetKeyPress(XKeyEvent * ev); + virtual bool insetButtonRelease(BufferView *, int x, int y, mouse_button::state button); /// - virtual void insetMotionNotify(BufferView *, int x, int y, int state); + virtual void insetMotionNotify(BufferView *, int x, int y, mouse_button::state state); /// virtual void insetUnlock(BufferView *); - + /// To allow transparent use of math editing functions virtual RESULT localDispatch(BufferView *, kb_action, string const &); - + /// virtual std::vector const getLabelList() const; /// - virtual MathInset * par() const = 0; + virtual MathAtom const & par() const = 0; /// - virtual void metrics() const = 0; -protected: + virtual MathAtom & par() = 0; /// virtual void updateLocal(BufferView * bv, bool mark_dirty); + /// + BufferView * view() const { return view_; } + + /// + virtual bool searchForward(BufferView *, string const &, + bool = true, bool = false); + /// + virtual bool searchBackward(BufferView *, string const &, + bool = true, bool = false); + /// + virtual bool isTextInset() const { return true; } + /// + virtual void mutateToText(); + /// + virtual void revealCodes(BufferView *) const; + /// + virtual Inset::EDITABLE editable() const { return HIGHLY_EDITABLE; } + + private: /// unimplemented void operator=(const InsetFormulaBase &); + /// common base for handling accents + void handleAccent(BufferView * bv, string const & arg, string const & name); + + /// + mutable BufferView * view_; + /// + mutable LyXFont font_; + +protected: + /// + void metrics(BufferView * bv, LyXFont const & font) const; + /// + void metrics(BufferView * bv = 0) const; + /// + void handleFont(BufferView * bv, string const & arg, string const & font); + + /// + mutable int xo_; + /// + mutable int yo_; }; // We don't really mess want around with mathed stuff outside mathed. @@ -146,6 +160,10 @@ void mathDispatchInsertMath(BufferView *, string const &); // void mathDispatchInsertMatrix(BufferView *, string const &); // +void mathDispatchGreek(BufferView *, string const &); +// void mathDispatchMathImportSelection(BufferView *, string const &); +// +void mathDispatch(BufferView *, kb_action, string const &); #endif