home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / formula.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  128 lines

  1. // -*- C++ -*-
  2. /*
  3.  *  File:        formula.h
  4.  *  Purpose:     Declaration of formula inset
  5.  *  Author:      Alejandro Aguilar Sierra <asierra@servidor.unam.mx> 
  6.  *  Created:     January 1996
  7.  *  Description: Allows the edition of math paragraphs inside Lyx. 
  8.  *
  9.  *  Copyright: (c) 1996, Alejandro Aguilar Sierra
  10.  *
  11.  *  Version: 0.4, Lyx project.
  12.  *
  13.  *   You are free to use and modify this code under the terms of
  14.  *   the GNU General Public Licence version 2 or later.
  15.  */
  16.  
  17. #ifndef _INSET_FORMULA_H 
  18. #define _INSET_FORMULA_H
  19.  
  20. #ifdef __GNUG__
  21. #pragma interface
  22. #endif
  23.  
  24. #include "definitions.h"
  25. #include "lyxinset.h"
  26.  
  27.  
  28. class MathParInset;
  29. class MathedCursor;
  30.  
  31. ///
  32. class InsetFormula: public UpdatableInset {
  33. public:
  34.     ///
  35.     InsetFormula(bool display=false);
  36.     ///
  37.     InsetFormula(MathParInset*);
  38.     ///
  39.     ~InsetFormula();
  40.     ///
  41.     int Ascent(LyXFont const &font) const;
  42.     ///
  43.     int Descent(LyXFont const &font) const;
  44.     ///
  45.     int Width(LyXFont const &font) const;
  46.     ///
  47.     void Draw(LyXFont font, LyXScreen &scr, int baseline, float &x);
  48.     ///
  49.     void Write(FILE *file);
  50.     ///
  51.     void Read(LyXLex &lex);
  52.     ///
  53.     int Latex(FILE *file, signed char fragile);
  54.     ///
  55.     int Latex(LString &file, signed char fragile);
  56.     ///
  57.     void Validate(LaTeXFeatures &) const;
  58.     ///
  59.     Inset* Clone();
  60.     ///
  61.     Inset::Code LyxCode() const { return Inset::MATH_CODE; }
  62.     ///
  63.     LyXFont ConvertFont(LyXFont font) {
  64.         // We have already discussed what was here
  65.             font.setLatex(LyXFont::OFF);
  66.             return font;
  67.     }
  68.  
  69.     /// what appears in the minibuffer when opening
  70.     LString EditMessage() {return _("Math editor mode");}
  71.     ///
  72.     void Edit(int x, int y);
  73.     ///
  74.     bool Display() const { return (disp_flag) ? true: false; }
  75.     ///
  76.     void SetDisplay(bool);
  77.     ///
  78.     void ToggleInsetCursor();
  79.     ///
  80.     void ShowInsetCursor();
  81.     ///
  82.     void HideInsetCursor();
  83.     ///
  84.     void GetCursorPos(int&, int&);
  85.     ///
  86.     void ToggleInsetSelection();
  87.     ///
  88.     void InsetButtonPress(int x, int y, int button);
  89.     ///
  90.     void InsetButtonRelease(int x, int y, int button);
  91.     ///
  92.     void InsetKeyPress(XKeyEvent *ev);
  93.     ///
  94.     void InsetMotionNotify(int x, int y, int state);
  95.     ///
  96.     void InsetUnlock();
  97.    
  98.     ///  To allow transparent use of math editing functions
  99.     virtual bool LocalDispatch(int, char const*);
  100.     
  101.     ///
  102.     void InsertSymbol(char const*);
  103.     ///
  104.     bool SetNumber(bool);
  105.     ///
  106.     int GetNumberOfLabels() const;
  107.     ///
  108.     LString getLabel(int) const;
  109.    
  110. protected:
  111.     void UpdateLocal();
  112.         MathParInset* par;
  113.     static MathedCursor* mathcursor;
  114.     
  115. private:
  116.     bool disp_flag;
  117.     //char *label;
  118.     LString label;
  119. };
  120.  
  121.  
  122. // If a mathinset exist at cursor pos, just lock it.
  123. // Otherwise create a new one, and lock it.
  124. bool OpenMathInset(Buffer *);
  125.  
  126. #endif
  127.  
  128.