X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fformulabase.h;h=a91eed0b38d80c09e101176f92d2e6920096ca2d;hb=e093e5e80c334995a77445c8e66a9f3c9594dda1;hp=0e82fa9227cdd3848992e1a2cf2a359d4de4bac0;hpb=d1182f17daa1a164d9527ccbe6500840d7ac6bc8;p=lyx.git diff --git a/src/mathed/formulabase.h b/src/mathed/formulabase.h index 0e82fa9227..a91eed0b38 100644 --- a/src/mathed/formulabase.h +++ b/src/mathed/formulabase.h @@ -1,43 +1,42 @@ // -*- C++ -*- /* - * File: formula.h - * Purpose: Declaration of formula inset - * Author: Alejandro Aguilar Sierra - * Created: January 1996 - * Description: Allows the edition of math paragraphs inside Lyx. + * File: formulabase.h + * Purpose: Common parts of the math LyX insets + * Author: André Pönitz + * Created: May 2001 + * Description: Allows the edition of math paragraphs inside Lyx. * - * Copyright: 1996, Alejandro Aguilar Sierra - * - * Version: 0.4, Lyx project. + * Copyright: 2001, The LyX Project * * You are free to use and modify this code under the terms of * 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 - #include "insets/inset.h" +#include "frontends/mouse_state.h" +#include "lyxfont.h" + +// only for getType(): +#include "math_defs.h" + +#include class Buffer; -class MathInset; +class BufferView; +class MathAtom; -/// +/// An abstract base class for all math related LyX insets class InsetFormulaBase : public UpdatableInset { public: - /// - InsetFormulaBase(InsetFormulaBase const & p); /// - explicit InsetFormulaBase(MathInset *); - /// - virtual ~InsetFormulaBase(); + InsetFormulaBase(); /// virtual int ascent(BufferView *, LyXFont const &) const = 0; /// @@ -47,64 +46,124 @@ public: /// virtual void draw(BufferView *,LyXFont const &, int, float &, bool) const = 0; /// - virtual void Write(Buffer const *, std::ostream &) const = 0; + virtual MathInsetTypes getType() 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: /// - virtual void Read(Buffer const *, LyXLex & lex) = 0; + virtual void validate(LaTeXFeatures &) const; /// - virtual int Latex(Buffer const *, std::ostream &, - bool fragile, bool free_spc) const = 0; + virtual Inset * clone(Buffer const &, bool same_id = false) const = 0; /// - virtual int Ascii(Buffer const *, std::ostream &, int linelen) const = 0; + virtual Inset::Code lyxCode() const; + /// what appears in the minibuffer when opening + virtual string const editMessage() const; /// - virtual int Linuxdoc(Buffer const *, std::ostream &) const = 0; + virtual void edit(BufferView *, int x, int y, mouse_button::state button); /// - virtual int DocBook(Buffer const *, std::ostream &) const = 0; + virtual void edit(BufferView *, bool front = true); /// - virtual void Validate(LaTeXFeatures &) const; + virtual void toggleInsetCursor(BufferView *); /// - virtual Inset * Clone(Buffer const &) const = 0; + virtual void showInsetCursor(BufferView *, bool show = true); /// - virtual Inset::Code LyxCode() const; + virtual void hideInsetCursor(BufferView *); /// - virtual LyXFont const ConvertFont(LyXFont const & f) const; - /// what appears in the minibuffer when opening - virtual string const EditMessage() const; + virtual void getCursorPos(BufferView *, int &, int &) const; /// - virtual void Edit(BufferView *, int x, int y, unsigned int button); + virtual void toggleInsetSelection(BufferView * bv); /// - virtual void ToggleInsetCursor(BufferView *); + virtual void insetButtonPress(BufferView *, int x, int y, mouse_button::state button); /// - virtual void ShowInsetCursor(BufferView *, bool show = true); + virtual bool insetButtonRelease(BufferView *, int x, int y, mouse_button::state button); /// - virtual void HideInsetCursor(BufferView *); + virtual void insetMotionNotify(BufferView *, int x, int y, mouse_button::state state); /// - virtual void GetCursorPos(BufferView *, int &, int &) const; + virtual void insetUnlock(BufferView *); + + /// To allow transparent use of math editing functions + virtual RESULT localDispatch(BufferView *, kb_action, string const &); + /// - virtual void ToggleInsetSelection(BufferView * bv); + virtual std::vector const getLabelList() const; /// - virtual void InsetButtonPress(BufferView *, int x, int y, int button); + virtual MathAtom const & par() const = 0; /// - virtual void InsetButtonRelease(BufferView *, int x, int y, int button); + virtual MathAtom & par() = 0; /// - virtual void InsetKeyPress(XKeyEvent * ev); + virtual void updateLocal(BufferView * bv, bool mark_dirty); /// - virtual void InsetMotionNotify(BufferView *, int x, int y, int state); + BufferView * view() const { return view_; } + /// - virtual void InsetUnlock(BufferView *); - - /// To allow transparent use of math editing functions - virtual RESULT LocalDispatch(BufferView *, kb_action, string const &); - + virtual bool searchForward(BufferView *, string const &, + bool = true, bool = false); /// - virtual std::vector const getLabelList() const; + 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_; /// - MathInset * par() const; + mutable LyXFont font_; + protected: /// - virtual void UpdateLocal(BufferView * bv); + void metrics(BufferView * bv, LyXFont const & font) const; + /// + void metrics(BufferView * bv = 0) const; + /// + void handleFont(BufferView * bv, string const & arg, string const & font); /// - MathInset * par_; + mutable int xo_; + /// + mutable int yo_; }; +// We don't really mess want around with mathed stuff outside mathed. +// So do it here. +// +void mathDispatchCreation(BufferView *, string const &, bool); +// +void mathDispatchMathDisplay(BufferView *, string const &); +// +void mathDispatchMathMode(BufferView *, string const &); +// +void mathDispatchMathMacro(BufferView *, string const &); +// +void mathDispatchMathDelim(BufferView *, string const &); +// +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