// -*- C++ -*- /** * \file ControlMath.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Angus Leeming * * Full author contact details are available in file CREDITS. */ #ifndef CONTROLMATH_H #define CONTROLMATH_H #include "frontends/Dialog.h" #include "lfuns.h" // for kb_action #include "Font.h" #include namespace lyx { namespace frontend { struct MathSymbol { MathSymbol(char_type uc = '?', unsigned char fc = 0, Font::FONT_FAMILY ff = Font::SYMBOL_FAMILY) : unicode(uc), fontcode(fc), fontfamily(ff) {} char_type unicode; unsigned char fontcode; Font::FONT_FAMILY fontfamily; }; class ControlMath : public Controller { public: ControlMath(Dialog &); /// Nothing to initialise in this case. virtual bool initialiseParams(std::string const &) { return true; } virtual void clearParams() {} virtual void dispatchParams() {} virtual bool isBufferDependent() const { return true; } /// dispatch an LFUN void dispatchFunc(kb_action action, std::string const & arg = std::string()) const; /// Insert a math symbol into the doc. void dispatchInsert(std::string const & name) const; /// Insert a subscript. void dispatchSubscript() const; /// Insert a superscript. void dispatchSuperscript() const; /// Insert a cube root void dispatchCubeRoot() const; /// Insert a matrix void dispatchMatrix(std::string const & str) const; /// Insert a variable size delimiter void dispatchDelim(std::string const & str) const; /// Insert a big delimiter void dispatchBigDelim(std::string const & str) const; /// Switch between display and inline void dispatchToggleDisplay() const; /** A request to the kernel to launch a dialog. * \param name the dialog identifier. */ void showDialog(std::string const & name) const; /// \return the math unicode symbol associated to a TeX name. MathSymbol const & mathSymbol(std::string tex_name) const; /// \return the TeX name associated to a math unicode symbol. std::string const & texName(char_type math_symbol) const; private: /// TeX-name / Math-symbol map. std::map math_symbols_; /// Math-symbol / TeX-name map. /// This one is for fast search, it contains the same data as /// \c math_symbols_. std::map tex_names_; }; } // namespace frontend } // namespace lyx #endif // NOT CONTROLMATH