mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-29 05:01:49 +00:00
Get rid of GuiMath layer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25064 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f7f385f73b
commit
655f66b700
@ -722,7 +722,6 @@ src_frontends_qt4_header_files = Split('''
|
||||
GuiLabel.h
|
||||
GuiListings.h
|
||||
GuiLog.h
|
||||
GuiMath.h
|
||||
GuiMathMatrix.h
|
||||
GuiNomencl.h
|
||||
GuiNote.h
|
||||
@ -812,7 +811,6 @@ src_frontends_qt4_files = Split('''
|
||||
GuiLabel.cpp
|
||||
GuiListings.cpp
|
||||
GuiLog.cpp
|
||||
GuiMath.cpp
|
||||
GuiMathMatrix.cpp
|
||||
GuiNomencl.cpp
|
||||
GuiNote.cpp
|
||||
|
@ -17,16 +17,27 @@
|
||||
#include "GuiView.h"
|
||||
#include "qt_helpers.h"
|
||||
|
||||
#include "FontEnums.h"
|
||||
#include "FontInfo.h"
|
||||
#include "FuncRequest.h"
|
||||
|
||||
#include "support/gettext.h"
|
||||
#include "support/docstring.h"
|
||||
|
||||
#include <QPixmap>
|
||||
#include <QCheckBox>
|
||||
#include <QListWidgetItem>
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
namespace {
|
||||
|
||||
static char const * latex_delimiters[] = {
|
||||
"(", ")", "{", "}", "[", "]",
|
||||
"lceil", "rceil", "lfloor", "rfloor", "langle", "rangle",
|
||||
@ -64,13 +75,94 @@ static QString fix_name(QString const & str, bool big)
|
||||
return "\\" + str;
|
||||
}
|
||||
|
||||
struct MathSymbol {
|
||||
MathSymbol(char_type uc = '?', unsigned char fc = 0,
|
||||
FontFamily ff = SYMBOL_FAMILY)
|
||||
: unicode(uc), fontcode(fc), fontfamily(ff)
|
||||
{}
|
||||
char_type unicode;
|
||||
unsigned char fontcode;
|
||||
FontFamily fontfamily;
|
||||
};
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
/// TeX-name / Math-symbol map.
|
||||
static map<std::string, MathSymbol> math_symbols_;
|
||||
/// Math-symbol / TeX-name map.
|
||||
/// This one is for fast search, it contains the same data as
|
||||
/// \c math_symbols_.
|
||||
static map<char_type, string> tex_names_;
|
||||
|
||||
void initMathSymbols()
|
||||
{
|
||||
// FIXME: Ideally, those unicode codepoints would be defined
|
||||
// in "lib/symbols". Unfortunately, some of those are already
|
||||
// defined with non-unicode ids for use within mathed.
|
||||
// FIXME 2: We should fill-in this map with the parsed "symbols"
|
||||
// file done in MathFactory.cpp.
|
||||
math_symbols_["("] = MathSymbol('(');
|
||||
math_symbols_[")"] = MathSymbol(')');
|
||||
math_symbols_["{"] = MathSymbol('{');
|
||||
math_symbols_["}"] = MathSymbol('}');
|
||||
math_symbols_["["] = MathSymbol('[');
|
||||
math_symbols_["]"] = MathSymbol(']');
|
||||
math_symbols_["|"] = MathSymbol('|');
|
||||
math_symbols_["/"] = MathSymbol('/', 54, CMSY_FAMILY);
|
||||
math_symbols_["backslash"] = MathSymbol('\\', 110, CMSY_FAMILY);
|
||||
math_symbols_["lceil"] = MathSymbol(0x2308, 100, CMSY_FAMILY);
|
||||
math_symbols_["rceil"] = MathSymbol(0x2309, 101, CMSY_FAMILY);
|
||||
math_symbols_["lfloor"] = MathSymbol(0x230A, 98, CMSY_FAMILY);
|
||||
math_symbols_["rfloor"] = MathSymbol(0x230B, 99, CMSY_FAMILY);
|
||||
math_symbols_["langle"] = MathSymbol(0x2329, 104, CMSY_FAMILY);
|
||||
math_symbols_["rangle"] = MathSymbol(0x232A, 105, CMSY_FAMILY);
|
||||
math_symbols_["uparrow"] = MathSymbol(0x2191, 34, CMSY_FAMILY);
|
||||
math_symbols_["Uparrow"] = MathSymbol(0x21D1, 42, CMSY_FAMILY);
|
||||
math_symbols_["updownarrow"] = MathSymbol(0x2195, 108, CMSY_FAMILY);
|
||||
math_symbols_["Updownarrow"] = MathSymbol(0x21D5, 109, CMSY_FAMILY);
|
||||
math_symbols_["downarrow"] = MathSymbol(0x2193, 35, CMSY_FAMILY);
|
||||
math_symbols_["Downarrow"] = MathSymbol(0x21D3, 43, CMSY_FAMILY);
|
||||
math_symbols_["downdownarrows"] = MathSymbol(0x21CA, 184, MSA_FAMILY);
|
||||
math_symbols_["downharpoonleft"] = MathSymbol(0x21C3, 188, MSA_FAMILY);
|
||||
math_symbols_["downharpoonright"] = MathSymbol(0x21C2, 186, MSA_FAMILY);
|
||||
math_symbols_["vert"] = MathSymbol(0x007C, 106, CMSY_FAMILY);
|
||||
math_symbols_["Vert"] = MathSymbol(0x2016, 107, CMSY_FAMILY);
|
||||
|
||||
map<string, MathSymbol>::const_iterator it = math_symbols_.begin();
|
||||
map<string, MathSymbol>::const_iterator end = math_symbols_.end();
|
||||
for (; it != end; ++it)
|
||||
tex_names_[it->second.unicode] = it->first;
|
||||
}
|
||||
|
||||
/// \return the math unicode symbol associated to a TeX name.
|
||||
MathSymbol const & mathSymbol(string tex_name)
|
||||
{
|
||||
map<string, MathSymbol>::const_iterator it =
|
||||
math_symbols_.find(tex_name);
|
||||
|
||||
static MathSymbol unknown_symbol;
|
||||
if (it == math_symbols_.end())
|
||||
return unknown_symbol;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
/// \return the TeX name associated to a math unicode symbol.
|
||||
string const & texName(char_type math_symbol)
|
||||
{
|
||||
map<char_type, string>::const_iterator it =
|
||||
tex_names_.find(math_symbol);
|
||||
|
||||
static string empty_string;
|
||||
if (it == tex_names_.end())
|
||||
return empty_string;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
} // anon namespace
|
||||
|
||||
|
||||
GuiDelimiter::GuiDelimiter(GuiView & lv)
|
||||
: GuiMath(lv, "mathdelimiter", qt_("Math Delimiter"))
|
||||
: GuiDialog(lv, "mathdelimiter", qt_("Math Delimiter"))
|
||||
{
|
||||
setupUi(this);
|
||||
|
||||
@ -81,6 +173,8 @@ GuiDelimiter::GuiDelimiter(GuiView & lv)
|
||||
leftLW->setViewMode(QListView::IconMode);
|
||||
rightLW->setViewMode(QListView::IconMode);
|
||||
|
||||
initMathSymbols();
|
||||
|
||||
typedef map<char_type, QListWidgetItem *> ListItems;
|
||||
ListItems list_items;
|
||||
// The last element is the empty one.
|
||||
@ -185,11 +279,11 @@ void GuiDelimiter::updateTeXCode(int size)
|
||||
void GuiDelimiter::on_insertPB_clicked()
|
||||
{
|
||||
if (sizeCO->currentIndex() == 0)
|
||||
dispatchFunc(LFUN_MATH_DELIM, fromqstr(tex_code_));
|
||||
dispatch(FuncRequest(LFUN_MATH_DELIM, fromqstr(tex_code_)));
|
||||
else {
|
||||
QString command = '"' + tex_code_ + '"';
|
||||
command.replace(' ', "\" \"");
|
||||
dispatchFunc(LFUN_MATH_BIGDELIM, fromqstr(command));
|
||||
dispatch(FuncRequest(LFUN_MATH_BIGDELIM, fromqstr(command)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,8 @@
|
||||
#ifndef GUIDELIMITERDIALOG_H
|
||||
#define GUIDELIMITERDIALOG_H
|
||||
|
||||
#include "GuiMath.h"
|
||||
#include "GuiDialog.h"
|
||||
|
||||
#include "ui_DelimiterUi.h"
|
||||
|
||||
class QListWidgetItem;
|
||||
@ -20,13 +21,18 @@ class QListWidgetItem;
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
class GuiDelimiter : public GuiMath, public Ui::DelimiterUi
|
||||
class GuiDelimiter : public GuiDialog, public Ui::DelimiterUi
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GuiDelimiter(GuiView & lv);
|
||||
|
||||
bool initialiseParams(std::string const &) { return true; }
|
||||
void clearParams() {}
|
||||
void dispatchParams() {}
|
||||
bool isBufferDependent() const { return true; }
|
||||
|
||||
public Q_SLOTS:
|
||||
void on_leftLW_itemActivated(QListWidgetItem *);
|
||||
void on_rightLW_itemActivated(QListWidgetItem *);
|
||||
|
@ -1,99 +0,0 @@
|
||||
/**
|
||||
* \file GuiMath.cpp
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "GuiMath.h"
|
||||
|
||||
#include "FuncRequest.h"
|
||||
|
||||
#include "support/debug.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
GuiMath::GuiMath(GuiView & lv, QString const & name, QString const & title)
|
||||
: GuiDialog(lv, name, title)
|
||||
{
|
||||
// FIXME: Ideally, those unicode codepoints would be defined
|
||||
// in "lib/symbols". Unfortunately, some of those are already
|
||||
// defined with non-unicode ids for use within mathed.
|
||||
// FIXME 2: We should fill-in this map with the parsed "symbols"
|
||||
// file done in MathFactory.cpp.
|
||||
math_symbols_["("] = MathSymbol('(');
|
||||
math_symbols_[")"] = MathSymbol(')');
|
||||
math_symbols_["{"] = MathSymbol('{');
|
||||
math_symbols_["}"] = MathSymbol('}');
|
||||
math_symbols_["["] = MathSymbol('[');
|
||||
math_symbols_["]"] = MathSymbol(']');
|
||||
math_symbols_["|"] = MathSymbol('|');
|
||||
math_symbols_["/"] = MathSymbol('/', 54, CMSY_FAMILY);
|
||||
math_symbols_["backslash"] = MathSymbol('\\', 110, CMSY_FAMILY);
|
||||
math_symbols_["lceil"] = MathSymbol(0x2308, 100, CMSY_FAMILY);
|
||||
math_symbols_["rceil"] = MathSymbol(0x2309, 101, CMSY_FAMILY);
|
||||
math_symbols_["lfloor"] = MathSymbol(0x230A, 98, CMSY_FAMILY);
|
||||
math_symbols_["rfloor"] = MathSymbol(0x230B, 99, CMSY_FAMILY);
|
||||
math_symbols_["langle"] = MathSymbol(0x2329, 104, CMSY_FAMILY);
|
||||
math_symbols_["rangle"] = MathSymbol(0x232A, 105, CMSY_FAMILY);
|
||||
math_symbols_["uparrow"] = MathSymbol(0x2191, 34, CMSY_FAMILY);
|
||||
math_symbols_["Uparrow"] = MathSymbol(0x21D1, 42, CMSY_FAMILY);
|
||||
math_symbols_["updownarrow"] = MathSymbol(0x2195, 108, CMSY_FAMILY);
|
||||
math_symbols_["Updownarrow"] = MathSymbol(0x21D5, 109, CMSY_FAMILY);
|
||||
math_symbols_["downarrow"] = MathSymbol(0x2193, 35, CMSY_FAMILY);
|
||||
math_symbols_["Downarrow"] = MathSymbol(0x21D3, 43, CMSY_FAMILY);
|
||||
math_symbols_["downdownarrows"] = MathSymbol(0x21CA, 184, MSA_FAMILY);
|
||||
math_symbols_["downharpoonleft"] = MathSymbol(0x21C3, 188, MSA_FAMILY);
|
||||
math_symbols_["downharpoonright"] = MathSymbol(0x21C2, 186, MSA_FAMILY);
|
||||
math_symbols_["vert"] = MathSymbol(0x007C, 106, CMSY_FAMILY);
|
||||
math_symbols_["Vert"] = MathSymbol(0x2016, 107, CMSY_FAMILY);
|
||||
|
||||
map<string, MathSymbol>::const_iterator it = math_symbols_.begin();
|
||||
map<string, MathSymbol>::const_iterator end = math_symbols_.end();
|
||||
for (; it != end; ++it)
|
||||
tex_names_[it->second.unicode] = it->first;
|
||||
}
|
||||
|
||||
|
||||
void GuiMath::dispatchFunc(FuncCode action, string const & arg) const
|
||||
{
|
||||
dispatch(FuncRequest(action, arg));
|
||||
}
|
||||
|
||||
|
||||
MathSymbol const & GuiMath::mathSymbol(string tex_name) const
|
||||
{
|
||||
map<string, MathSymbol>::const_iterator it =
|
||||
math_symbols_.find(tex_name);
|
||||
|
||||
static MathSymbol unknown_symbol;
|
||||
if (it == math_symbols_.end())
|
||||
return unknown_symbol;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
|
||||
string const & GuiMath::texName(char_type math_symbol) const
|
||||
{
|
||||
map<char_type, string>::const_iterator it =
|
||||
tex_names_.find(math_symbol);
|
||||
|
||||
static string empty_string;
|
||||
if (it == tex_names_.end())
|
||||
return empty_string;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
|
||||
} // namespace frontend
|
||||
} // namespace lyx
|
@ -1,70 +0,0 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file GuiMath.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 GUIMATH_H
|
||||
#define GUIMATH_H
|
||||
|
||||
#include "GuiDialog.h"
|
||||
#include "FuncCode.h"
|
||||
#include "FontEnums.h"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
struct MathSymbol {
|
||||
MathSymbol(char_type uc = '?', unsigned char fc = 0,
|
||||
FontFamily ff = SYMBOL_FAMILY)
|
||||
: unicode(uc), fontcode(fc), fontfamily(ff)
|
||||
{}
|
||||
char_type unicode;
|
||||
unsigned char fontcode;
|
||||
FontFamily fontfamily;
|
||||
};
|
||||
|
||||
|
||||
class GuiMath : public GuiDialog
|
||||
{
|
||||
public:
|
||||
GuiMath(GuiView & lv, QString const & name, QString const & title);
|
||||
|
||||
/// Nothing to initialise in this case.
|
||||
bool initialiseParams(std::string const &) { return true; }
|
||||
void clearParams() {}
|
||||
void dispatchParams() {}
|
||||
bool isBufferDependent() const { return true; }
|
||||
|
||||
/// dispatch an LFUN
|
||||
void dispatchFunc(FuncCode action,
|
||||
std::string const & arg = std::string()) 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<std::string, MathSymbol> math_symbols_;
|
||||
/// Math-symbol / TeX-name map.
|
||||
/// This one is for fast search, it contains the same data as
|
||||
/// \c math_symbols_.
|
||||
std::map<char_type, std::string> tex_names_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace frontend
|
||||
} // namespace lyx
|
||||
|
||||
#endif // GUIMATH_H
|
@ -15,6 +15,8 @@
|
||||
#include "EmptyTable.h"
|
||||
#include "qt_helpers.h"
|
||||
|
||||
#include "FuncRequest.h"
|
||||
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
#include <QSpinBox>
|
||||
@ -25,7 +27,7 @@ namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
GuiMathMatrix::GuiMathMatrix(GuiView & lv)
|
||||
: GuiMath(lv, "mathmatrix", qt_("Math Matrix"))
|
||||
: GuiDialog(lv, "mathmatrix", qt_("Math Matrix"))
|
||||
{
|
||||
setupUi(this);
|
||||
|
||||
@ -90,7 +92,7 @@ void GuiMathMatrix::slotOK()
|
||||
int const ny = rowsSB->value();
|
||||
string const str = fromqstr(
|
||||
QString("%1 %2 %3 %4").arg(nx).arg(ny).arg(c).arg(sh));
|
||||
dispatchFunc(LFUN_MATH_MATRIX, str);
|
||||
dispatch(FuncRequest(LFUN_MATH_MATRIX, str));
|
||||
close();
|
||||
}
|
||||
|
||||
|
@ -14,21 +14,25 @@
|
||||
#ifndef GUIMATHMATRIX_H
|
||||
#define GUIMATHMATRIX_H
|
||||
|
||||
#include "GuiMath.h"
|
||||
#include "ui_MathMatrixUi.h"
|
||||
#include "GuiDialog.h"
|
||||
|
||||
#include <QDialog>
|
||||
#include "ui_MathMatrixUi.h"
|
||||
|
||||
namespace lyx {
|
||||
namespace frontend {
|
||||
|
||||
class GuiMathMatrix : public GuiMath, public Ui::MathMatrixUi
|
||||
class GuiMathMatrix : public GuiDialog, public Ui::MathMatrixUi
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GuiMathMatrix(GuiView & lv);
|
||||
|
||||
bool initialiseParams(std::string const &) { return true; }
|
||||
void clearParams() {}
|
||||
void dispatchParams() {}
|
||||
bool isBufferDependent() const { return true; }
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotOK();
|
||||
void slotClose();
|
||||
|
@ -93,7 +93,6 @@ SOURCEFILES = \
|
||||
GuiLabel.cpp \
|
||||
GuiListings.cpp \
|
||||
GuiLog.cpp \
|
||||
GuiMath.cpp \
|
||||
GuiMathMatrix.cpp \
|
||||
GuiNomencl.cpp \
|
||||
GuiNote.cpp \
|
||||
@ -146,7 +145,6 @@ NOMOCHEADER = \
|
||||
GuiIdListModel.h \
|
||||
GuiImage.h \
|
||||
GuiKeySymbol.h \
|
||||
GuiMath.h \
|
||||
GuiPainter.h \
|
||||
LaTeXHighlighter.h \
|
||||
qt_i18n.h \
|
||||
|
Loading…
Reference in New Issue
Block a user