From f1c1cba9c30729e219899fe7f5025cf180e01e5a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Sun, 7 Oct 2007 20:34:09 +0000 Subject: [PATCH] math stuff git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20826 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ToolbarBackend.cpp | 2 - src/frontends/controllers/Makefile.am | 2 - src/frontends/qt4/Dialogs.cpp | 17 ++----- src/frontends/qt4/GuiDelimiter.cpp | 45 +++++++++---------- src/frontends/qt4/GuiDelimiter.h | 11 ++--- .../ControlMath.cpp => qt4/GuiMath.cpp} | 32 ++++++------- .../ControlMath.h => qt4/GuiMath.h} | 28 +++++++----- src/frontends/qt4/GuiMathMatrix.cpp | 29 ++++++------ src/frontends/qt4/GuiMathMatrix.h | 16 +++---- src/frontends/qt4/GuiParagraph.h | 3 ++ src/frontends/qt4/GuiToolbar.cpp | 2 - src/frontends/qt4/Makefile.am | 2 + 12 files changed, 84 insertions(+), 105 deletions(-) rename src/frontends/{controllers/ControlMath.cpp => qt4/GuiMath.cpp} (81%) rename src/frontends/{controllers/ControlMath.h => qt4/GuiMath.h} (79%) diff --git a/src/ToolbarBackend.cpp b/src/ToolbarBackend.cpp index 8baddc4f54..8dbe44e725 100644 --- a/src/ToolbarBackend.cpp +++ b/src/ToolbarBackend.cpp @@ -22,8 +22,6 @@ #include #include -#include "frontends/controllers/ControlMath.h" - namespace lyx { using support::compare_ascii_no_case; diff --git a/src/frontends/controllers/Makefile.am b/src/frontends/controllers/Makefile.am index 0ead9da133..42b3989eca 100644 --- a/src/frontends/controllers/Makefile.am +++ b/src/frontends/controllers/Makefile.am @@ -9,13 +9,11 @@ noinst_LTLIBRARIES = liblyxcontrollers.la SOURCEFILES = \ Dialog.cpp \ ButtonPolicy.cpp \ - ControlMath.cpp \ frontend_helpers.cpp HEADERFILES = \ Dialog.h \ ButtonPolicy.h \ - ControlMath.h \ frontend_helpers.h if MONOLITHIC_CONTROLLERS diff --git a/src/frontends/qt4/Dialogs.cpp b/src/frontends/qt4/Dialogs.cpp index 4cc878c1b7..415a5fd21a 100644 --- a/src/frontends/qt4/Dialogs.cpp +++ b/src/frontends/qt4/Dialogs.cpp @@ -13,17 +13,6 @@ #include "Dialogs.h" #include "GuiDialog.h" -#include "ButtonController.h" -#include "DialogView.h" -#include "DockView.h" -#include "GuiDelimiter.h" -#include "GuiIndex.h" -#include "GuiMathMatrix.h" -#include "GuiView.h" - -// Uncomment this if you prefer dock widget -//#define USE_DOCK_WIDGET - #include "qt_helpers.h" #include @@ -90,7 +79,7 @@ Dialog * createGuiIndex(LyXView & lv); Dialog * createGuiLabel(LyXView & lv); Dialog * createGuiListings(LyXView & lv); Dialog * createGuiLog(LyXView & lv); -Dialog * createGuiMath(LyXView & lv); +Dialog * createGuiMathMatrix(LyXView & lv); Dialog * createGuiNomenclature(LyXView & lv); Dialog * createGuiNote(LyXView & lv); Dialog * createGuiParagraph(LyXView & lv); @@ -170,9 +159,9 @@ Dialog * Dialogs::build(string const & name) if (name == "view-source") return createGuiViewSource(lyxview_); if (name == "mathdelimiter") - return new GuiDelimiterDialog(lyxview_); + return createGuiDelimiter(lyxview_); if (name == "mathmatrix") - return new GuiMathMatrixDialog(lyxview_); + return createGuiMathMatrix(lyxview_); if (name == "note") return createGuiNote(lyxview_); if (name == "paragraph") diff --git a/src/frontends/qt4/GuiDelimiter.cpp b/src/frontends/qt4/GuiDelimiter.cpp index 91c7915981..fabf3db3ba 100644 --- a/src/frontends/qt4/GuiDelimiter.cpp +++ b/src/frontends/qt4/GuiDelimiter.cpp @@ -69,12 +69,12 @@ namespace lyx { namespace frontend { -GuiDelimiterDialog::GuiDelimiterDialog(LyXView & lv) - : GuiDialog(lv, "mathdelimiter") +GuiDelimiter::GuiDelimiter(LyXView & lv) + : GuiMath(lv, "mathdelimiter") { setupUi(this); setViewTitle(_("Math Delimiter")); - setController(new ControlMath(*this)); + setController(this, false); connect(closePB, SIGNAL(clicked()), this, SLOT(accept())); @@ -89,7 +89,7 @@ GuiDelimiterDialog::GuiDelimiterDialog(LyXView & lv) int const end = nr_latex_delimiters - 1; for (int i = 0; i < end; ++i) { string const delim = latex_delimiters[i]; - MathSymbol const & ms = controller().mathSymbol(delim); + MathSymbol const & ms = mathSymbol(delim); QString symbol(ms.fontcode? QChar(ms.fontcode) : toqstr(docstring(1, ms.unicode))); QListWidgetItem * lwi = new QListWidgetItem(symbol); @@ -103,7 +103,7 @@ GuiDelimiterDialog::GuiDelimiterDialog(LyXView & lv) } for (int i = 0; i != leftLW->count(); ++i) { - MathSymbol const & ms = controller().mathSymbol( + MathSymbol const & ms = mathSymbol( fromqstr(leftLW->item(i)->toolTip())); rightLW->addItem(list_items[doMatch(ms.unicode)]->clone()); } @@ -122,15 +122,9 @@ GuiDelimiterDialog::GuiDelimiterDialog(LyXView & lv) } -ControlMath & GuiDelimiterDialog::controller() +char_type GuiDelimiter::doMatch(char_type const symbol) { - return static_cast(GuiDialog::controller()); -} - - -char_type GuiDelimiterDialog::doMatch(char_type const symbol) -{ - string const & str = controller().texName(symbol); + string const & str = texName(symbol); string match; if (str == "(") match = ")"; else if (str == ")") match = "("; @@ -149,11 +143,11 @@ char_type GuiDelimiterDialog::doMatch(char_type const symbol) else if (str == "/") match = "backslash"; else return symbol; - return controller().mathSymbol(match).unicode; + return mathSymbol(match).unicode; } -void GuiDelimiterDialog::updateTeXCode(int size) +void GuiDelimiter::updateTeXCode(int size) { bool const bigsize = size != 0; @@ -191,39 +185,39 @@ void GuiDelimiterDialog::updateTeXCode(int size) } -void GuiDelimiterDialog::on_insertPB_clicked() +void GuiDelimiter::on_insertPB_clicked() { if (sizeCO->currentIndex() == 0) - controller().dispatchDelim(fromqstr(tex_code_)); + dispatchDelim(fromqstr(tex_code_)); else { QString command = '"' + tex_code_ + '"'; command.replace(' ', "\" \""); - controller().dispatchBigDelim(fromqstr(command)); + dispatchBigDelim(fromqstr(command)); } } -void GuiDelimiterDialog::on_sizeCO_activated(int index) +void GuiDelimiter::on_sizeCO_activated(int index) { updateTeXCode(index); } -void GuiDelimiterDialog::on_leftLW_itemActivated(QListWidgetItem *) +void GuiDelimiter::on_leftLW_itemActivated(QListWidgetItem *) { on_insertPB_clicked(); accept(); } -void GuiDelimiterDialog::on_rightLW_itemActivated(QListWidgetItem *) +void GuiDelimiter::on_rightLW_itemActivated(QListWidgetItem *) { on_insertPB_clicked(); accept(); } -void GuiDelimiterDialog::on_leftLW_currentRowChanged(int item) +void GuiDelimiter::on_leftLW_currentRowChanged(int item) { if (matchCB->isChecked()) rightLW->setCurrentRow(item); @@ -232,7 +226,7 @@ void GuiDelimiterDialog::on_leftLW_currentRowChanged(int item) } -void GuiDelimiterDialog::on_rightLW_currentRowChanged(int item) +void GuiDelimiter::on_rightLW_currentRowChanged(int item) { if (matchCB->isChecked()) leftLW->setCurrentRow(item); @@ -241,7 +235,7 @@ void GuiDelimiterDialog::on_rightLW_currentRowChanged(int item) } -void GuiDelimiterDialog::on_matchCB_stateChanged(int state) +void GuiDelimiter::on_matchCB_stateChanged(int state) { if (state == Qt::Checked) on_leftLW_currentRowChanged(leftLW->currentRow()); @@ -250,6 +244,9 @@ void GuiDelimiterDialog::on_matchCB_stateChanged(int state) } +Dialog * createGuiDelimiter(LyXView & lv) { return new GuiDelimiter(lv); } + + } // namespace frontend } // namespace lyx diff --git a/src/frontends/qt4/GuiDelimiter.h b/src/frontends/qt4/GuiDelimiter.h index 1edf6248e2..9521ffaa3f 100644 --- a/src/frontends/qt4/GuiDelimiter.h +++ b/src/frontends/qt4/GuiDelimiter.h @@ -1,6 +1,6 @@ // -*- C++ -*- /** - * \file GuiDelimiterDialog.h + * \file GuiDelimiter.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * @@ -12,8 +12,7 @@ #ifndef GUIDELIMITERDIALOG_H #define GUIDELIMITERDIALOG_H -#include "GuiDialog.h" -#include "ControlMath.h" +#include "GuiMath.h" #include "ui_DelimiterUi.h" class QListWidgetItem; @@ -21,12 +20,12 @@ class QListWidgetItem; namespace lyx { namespace frontend { -class GuiDelimiterDialog : public GuiDialog, public Ui::DelimiterUi +class GuiDelimiter : public GuiMath, public Ui::DelimiterUi { Q_OBJECT public: - GuiDelimiterDialog(LyXView & lv); + GuiDelimiter(LyXView & lv); public Q_SLOTS: void on_leftLW_itemActivated(QListWidgetItem *); @@ -42,8 +41,6 @@ private: char_type doMatch(char_type const symbol); /// void updateTeXCode(int size); - /// parent controller - ControlMath & controller(); /// TeX code that will be inserted. QString tex_code_; diff --git a/src/frontends/controllers/ControlMath.cpp b/src/frontends/qt4/GuiMath.cpp similarity index 81% rename from src/frontends/controllers/ControlMath.cpp rename to src/frontends/qt4/GuiMath.cpp index cf2cb4d29b..07ea4fa356 100644 --- a/src/frontends/controllers/ControlMath.cpp +++ b/src/frontends/qt4/GuiMath.cpp @@ -1,5 +1,5 @@ /** - * \file ControlMath.cpp + * \file GuiMath.cpp * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * @@ -10,7 +10,7 @@ #include -#include "ControlMath.h" +#include "GuiMath.h" #include "debug.h" #include "FuncRequest.h" @@ -20,8 +20,8 @@ using std::map; namespace lyx { namespace frontend { -ControlMath::ControlMath(Dialog & dialog) - : Controller(dialog) +GuiMath::GuiMath(LyXView & lv, std::string const & name) + : GuiDialog(lv, name), Controller(this) { // FIXME: Ideally, those unicode codepoints would be defined // in "lib/symbols". Unfortunately, some of those are already @@ -62,31 +62,31 @@ ControlMath::ControlMath(Dialog & dialog) } -void ControlMath::dispatchFunc(kb_action action, string const & arg) const +void GuiMath::dispatchFunc(kb_action action, string const & arg) const { dispatch(FuncRequest(action, arg)); } -void ControlMath::dispatchInsert(string const & name) const +void GuiMath::dispatchInsert(string const & name) const { dispatchFunc(LFUN_MATH_INSERT, '\\' + name); } -void ControlMath::dispatchSubscript() const +void GuiMath::dispatchSubscript() const { dispatchFunc(LFUN_MATH_INSERT, "_"); } -void ControlMath::dispatchSuperscript() const +void GuiMath::dispatchSuperscript() const { dispatchFunc(LFUN_MATH_INSERT, "^"); } -void ControlMath::dispatchCubeRoot() const +void GuiMath::dispatchCubeRoot() const { dispatchFunc(LFUN_MATH_INSERT, "\\root"); dispatchFunc(LFUN_SELF_INSERT, "3"); @@ -94,37 +94,37 @@ void ControlMath::dispatchCubeRoot() const } -void ControlMath::dispatchMatrix(string const & str) const +void GuiMath::dispatchMatrix(string const & str) const { dispatchFunc(LFUN_MATH_MATRIX, str); } -void ControlMath::dispatchDelim(string const & str) const +void GuiMath::dispatchDelim(string const & str) const { dispatchFunc(LFUN_MATH_DELIM, str); } -void ControlMath::dispatchBigDelim(string const & str) const +void GuiMath::dispatchBigDelim(string const & str) const { dispatchFunc(LFUN_MATH_BIGDELIM, str); } -void ControlMath::dispatchToggleDisplay() const +void GuiMath::dispatchToggleDisplay() const { dispatchFunc(LFUN_MATH_DISPLAY); } -void ControlMath::showDialog(string const & name) const +void GuiMath::showDialog(string const & name) const { dispatchFunc(LFUN_DIALOG_SHOW, name); } -MathSymbol const & ControlMath::mathSymbol(string tex_name) const +MathSymbol const & GuiMath::mathSymbol(string tex_name) const { map::const_iterator it = math_symbols_.find(tex_name); @@ -137,7 +137,7 @@ MathSymbol const & ControlMath::mathSymbol(string tex_name) const } -std::string const & ControlMath::texName(char_type math_symbol) const +std::string const & GuiMath::texName(char_type math_symbol) const { map::const_iterator it = tex_names_.find(math_symbol); diff --git a/src/frontends/controllers/ControlMath.h b/src/frontends/qt4/GuiMath.h similarity index 79% rename from src/frontends/controllers/ControlMath.h rename to src/frontends/qt4/GuiMath.h index 94322ddd4e..ed57825afd 100644 --- a/src/frontends/controllers/ControlMath.h +++ b/src/frontends/qt4/GuiMath.h @@ -1,6 +1,6 @@ // -*- C++ -*- /** - * \file ControlMath.h + * \file GuiMath.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * @@ -9,10 +9,10 @@ * Full author contact details are available in file CREDITS. */ -#ifndef CONTROLMATH_H -#define CONTROLMATH_H +#ifndef GUIMATH_H +#define GUIMATH_H -#include "Dialog.h" +#include "GuiDialog.h" #include "lfuns.h" // for kb_action #include "Font.h" @@ -33,18 +33,22 @@ struct MathSymbol { }; -class ControlMath : public Controller { +class GuiMath : public GuiDialog, public Controller +{ public: - ControlMath(Dialog &); + GuiMath(LyXView & lv, std::string const & name); /// 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; } + bool initialiseParams(std::string const &) { return true; } + void clearParams() {} + void dispatchParams() {} + bool isBufferDependent() const { return true; } + + Controller & controller() { return *this; } /// dispatch an LFUN - void dispatchFunc(kb_action action, std::string const & arg = std::string()) const; + 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. @@ -84,4 +88,4 @@ private: } // namespace frontend } // namespace lyx -#endif // NOT CONTROLMATH +#endif // GUIMATH_H diff --git a/src/frontends/qt4/GuiMathMatrix.cpp b/src/frontends/qt4/GuiMathMatrix.cpp index e52500375c..a2c8fea040 100644 --- a/src/frontends/qt4/GuiMathMatrix.cpp +++ b/src/frontends/qt4/GuiMathMatrix.cpp @@ -12,7 +12,6 @@ #include "GuiMathMatrix.h" -#include "ControlMath.h" #include "EmptyTable.h" #include "qt_helpers.h" #include "gettext.h" @@ -29,12 +28,12 @@ using std::string; namespace lyx { namespace frontend { -GuiMathMatrixDialog::GuiMathMatrixDialog(LyXView & lv) - : GuiDialog(lv, "mathmatrix") +GuiMathMatrix::GuiMathMatrix(LyXView & lv) + : GuiMath(lv, "mathmatrix") { setupUi(this); setViewTitle(_("Math Matrix")); - setController(new ControlMath(*this)); + setController(this, false); table->setMinimumSize(100, 100); rowsSB->setValue(5); @@ -65,13 +64,7 @@ GuiMathMatrixDialog::GuiMathMatrixDialog(LyXView & lv) } -ControlMath & GuiMathMatrixDialog::controller() -{ - return static_cast(GuiDialog::controller()); -} - - -void GuiMathMatrixDialog::columnsChanged(int) +void GuiMathMatrix::columnsChanged(int) { char h_align_str[80] = "c"; int const nx = int(columnsSB->value()); @@ -83,18 +76,18 @@ void GuiMathMatrixDialog::columnsChanged(int) } -void GuiMathMatrixDialog::rowsChanged(int) +void GuiMathMatrix::rowsChanged(int) { } -void GuiMathMatrixDialog::change_adaptor() +void GuiMathMatrix::change_adaptor() { // FIXME: We need a filter for the halign input } -void GuiMathMatrixDialog::slotOK() +void GuiMathMatrix::slotOK() { char v_align_c[] = "tcb"; char const c = v_align_c[valignCO->currentIndex()]; @@ -104,18 +97,22 @@ void GuiMathMatrixDialog::slotOK() ostringstream os; os << nx << ' ' << ny << ' ' << c << ' ' << sh; - controller().dispatchMatrix(os.str().c_str()); + dispatchMatrix(os.str().c_str()); // close the dialog close(); } -void GuiMathMatrixDialog::slotClose() +void GuiMathMatrix::slotClose() { close(); } + +Dialog * createGuiMathMatrix(LyXView & lv) { return new GuiMathMatrix(lv); } + + } // namespace frontend } // namespace lyx diff --git a/src/frontends/qt4/GuiMathMatrix.h b/src/frontends/qt4/GuiMathMatrix.h index e7d5aeb11e..197581b1a9 100644 --- a/src/frontends/qt4/GuiMathMatrix.h +++ b/src/frontends/qt4/GuiMathMatrix.h @@ -1,6 +1,6 @@ // -*- C++ -*- /** - * \file GuiMathMatrixDialog.h + * \file GuiMathMatrix.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * @@ -11,11 +11,10 @@ * Full author contact details are available in file CREDITS. */ -#ifndef GUIMATHMATRIXDIALOG_H -#define GUIMATHMATRIXDIALOG_H +#ifndef GUIMATHMATRIX_H +#define GUIMATHMATRIX_H -#include "GuiDialog.h" -#include "ControlMath.h" +#include "GuiMath.h" #include "ui_MathMatrixUi.h" #include @@ -23,12 +22,12 @@ namespace lyx { namespace frontend { -class GuiMathMatrixDialog : public GuiDialog, public Ui::MathMatrixUi +class GuiMathMatrix : public GuiMath, public Ui::MathMatrixUi { Q_OBJECT public: - GuiMathMatrixDialog(LyXView & lv); + GuiMathMatrix(LyXView & lv); public Q_SLOTS: void slotOK(); @@ -36,9 +35,6 @@ public Q_SLOTS: void columnsChanged(int); void rowsChanged(int); void change_adaptor(); - - /// parent controller - ControlMath & controller(); }; } // namespace frontend diff --git a/src/frontends/qt4/GuiParagraph.h b/src/frontends/qt4/GuiParagraph.h index 00cb552ef1..f87f3d4a87 100644 --- a/src/frontends/qt4/GuiParagraph.h +++ b/src/frontends/qt4/GuiParagraph.h @@ -14,6 +14,9 @@ #ifndef GUIPARAGRAPH_H #define GUIPARAGRAPH_H +// Uncomment this if you prefer dock widget +//#define USE_DOCK_WIDGET + #include "Layout.h" #include "ui_ParagraphUi.h" #include "Dialog.h" diff --git a/src/frontends/qt4/GuiToolbar.cpp b/src/frontends/qt4/GuiToolbar.cpp index 2b3d47ef3f..06e3eedc84 100644 --- a/src/frontends/qt4/GuiToolbar.cpp +++ b/src/frontends/qt4/GuiToolbar.cpp @@ -37,8 +37,6 @@ #include "support/lstrings.h" #include "support/lyxalgo.h" // sorted -#include "controllers/ControlMath.h" - #include #include #include diff --git a/src/frontends/qt4/Makefile.am b/src/frontends/qt4/Makefile.am index eda396488d..8acf27ae8f 100644 --- a/src/frontends/qt4/Makefile.am +++ b/src/frontends/qt4/Makefile.am @@ -88,6 +88,7 @@ SOURCEFILES = \ GuiKeySymbol.cpp \ GuiListings.cpp \ GuiLog.cpp \ + GuiMath.cpp \ GuiMathMatrix.cpp \ GuiMenubar.cpp \ GuiNomencl.cpp \ @@ -175,6 +176,7 @@ MOCHEADER = \ GuiKeySymbol.h \ GuiListings.h \ GuiLog.h \ + GuiMath.h \ GuiMathMatrix.h \ GuiMenubar.h \ GuiNomencl.h \ -- 2.39.2