]> git.lyx.org Git - lyx.git/commitdiff
Get rid of current_view from the Qt math panel.
authorAngus Leeming <leeming@lyx.org>
Thu, 12 Jun 2003 14:21:04 +0000 (14:21 +0000)
committerAngus Leeming <leeming@lyx.org>
Thu, 12 Jun 2003 14:21:04 +0000 (14:21 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7164 a592a061-630c-0410-9148-cb99ea01b6c8

12 files changed:
src/frontends/controllers/ChangeLog
src/frontends/controllers/ControlMath2.C [new file with mode: 0644]
src/frontends/controllers/ControlMath2.h [new file with mode: 0644]
src/frontends/controllers/Makefile.am
src/frontends/qt2/ChangeLog
src/frontends/qt2/Dialogs.C
src/frontends/qt2/Dialogs2.C
src/frontends/qt2/QDelimiterDialog.C
src/frontends/qt2/QMath.C
src/frontends/qt2/QMath.h
src/frontends/qt2/QMathDialog.C
src/frontends/qt2/QMathMatrixDialog.C

index 0656c5e7b06ae2a6537d86b8372d36581e418d57..c29b44a7c7f5092d74abf34925ce0a033889920a 100644 (file)
@@ -1,3 +1,10 @@
+2003-06-12  Angus Leeming  <leeming@lyx.org>
+
+       * ControlMath2.[Ch]: new files. A work in progress towards a clean
+       implementation of the math panel.
+
+       * Makefile.am: add files.
+
 2003-06-11  Angus Leeming  <leeming@lyx.org>
 
        * ControlExternal.[Ch]: changes due to InsetExternal::Params no longer
diff --git a/src/frontends/controllers/ControlMath2.C b/src/frontends/controllers/ControlMath2.C
new file mode 100644 (file)
index 0000000..a51b5d2
--- /dev/null
@@ -0,0 +1,65 @@
+/**
+ * \file ControlMath2.C
+ * 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 "ControlMath2.h"
+#include "Kernel.h"
+#include "funcrequest.h"
+
+
+ControlMath2::ControlMath2(Dialog & dialog)
+       : Dialog::Controller(dialog)
+{}
+
+
+void ControlMath2::dispatchInsert(string const & name) const
+{
+       kernel().dispatch(FuncRequest(LFUN_INSERT_MATH, '\\' + name));
+}
+
+
+void ControlMath2::dispatchSubscript() const
+{
+       kernel().dispatch(FuncRequest(LFUN_SUBSCRIPT));
+}
+
+
+void ControlMath2::dispatchSuperscript() const
+{
+       kernel().dispatch(FuncRequest(LFUN_SUPERSCRIPT));
+}
+
+
+void ControlMath2::dispatchCubeRoot() const
+{
+       kernel().dispatch(FuncRequest(LFUN_INSERT_MATH, "\\root"));
+       kernel().dispatch(FuncRequest(LFUN_SELFINSERT, "3"));
+       kernel().dispatch(FuncRequest(LFUN_RIGHT));
+}
+
+
+void ControlMath2::dispatchMatrix(string const & str) const
+{
+       kernel().dispatch(FuncRequest(LFUN_INSERT_MATRIX, str));
+}
+
+
+void ControlMath2::dispatchDelim(string const & str) const
+{
+       kernel().dispatch(FuncRequest(LFUN_MATH_DELIM, str));
+}
+
+
+void ControlMath2::dispatchToggleDisplay() const
+{
+       kernel().dispatch(FuncRequest(LFUN_MATH_DISPLAY));
+}
+
diff --git a/src/frontends/controllers/ControlMath2.h b/src/frontends/controllers/ControlMath2.h
new file mode 100644 (file)
index 0000000..93455cd
--- /dev/null
@@ -0,0 +1,82 @@
+// -*- C++ -*-
+/**
+ * \file ControlMath2.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
+ *
+ * ControlMath2 is a controller class for the Math Panel dialog.
+ */
+
+#ifndef CONTROLMATH2_H
+#define CONTROLMATH2_H
+
+
+#include "Dialog.h"
+
+
+class ControlMath2 : public Dialog::Controller {
+public:
+       ControlMath2(Dialog &);
+
+       virtual bool initialiseParams(string const &) { return true; }
+       virtual void clearParams() {}
+       virtual void dispatchParams() {}
+       virtual bool isBufferDependent() const { return true; }
+
+       /// Insert a math symbol into the doc.
+       void dispatchInsert(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(string const & str) const;
+       /// Insert a delimiter
+       void dispatchDelim(string const & str) const;
+       /// switch between display and inline
+       void dispatchToggleDisplay() const;
+};
+
+
+extern char const * function_names[];
+extern int const nr_function_names;
+extern char const * latex_arrow[];
+extern int const nr_latex_arrow;
+extern char const * latex_bop[];
+extern int const nr_latex_bop;
+extern char const * latex_brel[];
+extern int const nr_latex_brel;
+extern char const * latex_dots[];
+extern int const nr_latex_dots;
+extern char const * latex_greek[];
+extern int const nr_latex_greek;
+extern char const * latex_deco[];
+extern int const nr_latex_deco;
+extern char const * latex_misc[];
+extern int const nr_latex_misc;
+extern char const * latex_varsz[];
+extern int const nr_latex_varsz;
+extern char const * latex_ams_misc[];
+extern int const nr_latex_ams_misc;
+extern char const * latex_ams_arrows[];
+extern int const nr_latex_ams_arrows;
+extern char const * latex_ams_rel[];
+extern int const nr_latex_ams_rel;
+extern char const * latex_ams_nrel[];
+extern int const nr_latex_ams_nrel;
+extern char const * latex_ams_ops[];
+extern int const nr_latex_ams_ops;
+
+/**
+ * Return the mangled XPM filename of the given
+ * math symbol.
+ */
+string const find_xpm(string const & name);
+
+#endif // NOT CONTROLMATH2
index b827c7d611e6bb3ab45c46f09f80afb8f62099be..3c4ffed9312a92cb28ef6be479af94088b238753 100644 (file)
@@ -68,6 +68,8 @@ libcontrollers_la_SOURCES= \
        ControlLog.h \
        ControlMath.C \
        ControlMath.h \
+       ControlMath2.C \
+       ControlMath2.h \
        ControlMinipage.C \
        ControlMinipage.h \
        ControlParagraph.C \
index ca7a4dff33e21ea273cd53216b9f50ba2ea5919c..4405ec257d789c4a80a46f117445278990a698f8 100644 (file)
@@ -1,3 +1,15 @@
+2003-06-12  Angus Leeming  <leeming@lyx.org>
+
+       * Dialogs.C: add the math dialog.
+       * Dialogs2.C: a temporary hack; keep showMathPanel() but invoke (and store)
+       the new dialog.
+
+       * QMath.[Ch]: derive from QDialogView.
+
+       * QMathDialog.C:
+       * QDelimiterDialog.C:
+       * QMathMatrixDialog.C: the dispatch functions are now in the controller.
+
 2003-06-12  Angus Leeming  <leeming@lyx.org>
 
        * QExternalDialog.C (editClicked): do not call form_->changed().
index ad462f50c5a2aa1a9af80fc38d0ec30b307a051c..dfe4cd6ca95233e5933e0be56c799a351cd3e6dc 100644 (file)
@@ -26,6 +26,7 @@
 #include "ControlGraphics.h"
 #include "ControlInclude.h"
 #include "ControlLog.h"
+#include "ControlMath2.h"
 #include "ControlMinipage.h"
 #include "ControlParagraph.h"
 #include "ControlRef.h"
@@ -55,6 +56,7 @@
 #include "QInclude.h"
 #include "QIndex.h"
 #include "QLog.h"
+#include "QMath.h"
 #include "QMinipage.h"
 #include "QParagraph.h"
 #include "QRef.h"
@@ -80,7 +82,7 @@ namespace {
 
 char const * const dialognames[] = { "about", "bibitem", "bibtex", "changes",
 "character", "citation", "error", "errorlist", "ert", "external", "file",
-"float", "graphics", "include", "index", "label", "log", "minipage",
+"float", "graphics", "include", "index", "label", "log", "math", "minipage",
 "paragraph", "ref", "tabular", "tabularcreate",
 
 #ifdef HAVE_LIBAIKSAURUS
@@ -192,6 +194,10 @@ Dialog * Dialogs::build(string const & name)
                dialog->setController(new ControlLog(*dialog));
                dialog->setView(new QLog(*dialog));
                dialog->bc().bp(new OkCancelPolicy);
+       } else if (name == "math") {
+               dialog->setController(new ControlMath2(*dialog));
+               dialog->setView(new QMath(*dialog));
+               dialog->bc().bp(new IgnorantPolicy);
        } else if (name == "minipage") {
                dialog->setController(new ControlMinipage(*dialog));
                dialog->setView(new QMinipage(*dialog));
index a3f01a84a2f7eef4fe897139c46c2b23130c286a..807c68a9bf8889c34685513a7e868e9f42ee5d32 100644 (file)
@@ -120,10 +120,8 @@ void Dialogs::showForks()
 
 void Dialogs::showMathPanel()
 {
-       // FIXME FIXME FIXME
-       extern void createMathPanel();
-
-       createMathPanel();
+       static DialogPtr mathdialog(build("math"));
+       mathdialog->show(string());
 }
 
 
index 6c0b2636204fb48c4978a3d1af5de6d1cb160863..a328eccf4d073970c0aa711da817db2c2dfd893d 100644 (file)
@@ -15,8 +15,8 @@
 #include "qt_helpers.h"
 #include "debug.h"
 
+#include "ControlMath2.h"
 #include "QMath.h"
-#include "ControlMath.h"
 #include "QDelimiterDialog.h"
 
 #include "iconpalette.h"
@@ -96,7 +96,7 @@ QDelimiterDialog::QDelimiterDialog(QMath * form)
 
 void QDelimiterDialog::insertClicked()
 {
-       form_->insertDelim(fix_name(left_) + ' ' + fix_name(right_));
+       form_->controller().dispatchDelim(fix_name(left_) + ' ' + fix_name(right_));
 }
 
 
index 1e2f2cbcce3635a3f62cbc15e5980af2bbf858a6..f716081ced7affcf595a3553f0800cc2ece4d471 100644 (file)
 #include <config.h>
 
 
-#include "debug.h"
-
-#include "lfuns.h"
-#include "funcrequest.h"
-#include "LyXView.h"
-#include "BufferView.h"
-
+#include "gettext.h"
+#include "ControlMath2.h"
 #include "QMathDialog.h"
 #include "QMath.h"
 
-#include "iconpalette.h"
-
-// needless to say, this can't last for long
-#warning FIXME Current_view used here!
-extern BufferView * current_view;
-
-
-// FIXME temporary HACK !
-void createMathPanel()
-{
-       static QMath * dialog = 0;
-       if (!dialog) {
-               dialog = new QMath;
-               dialog->build_dialog();
-       }
-       dialog->do_show();
-}
-
 
-QMath::QMath()
-{
-}
+typedef QController<ControlMath2, QView<QMathDialog> > base_class;
 
 
-void QMath::do_show()
-{
-       dialog_->show();
-}
+QMath::QMath(Dialog & parent)
+       : base_class(parent, _("LyX: Math Panel"))
+{}
 
 
 void QMath::build_dialog()
 {
-       dialog_ = new QMathDialog(this);
-}
-
-
-void QMath::subscript()
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_SUBSCRIPT));
-}
-
-
-void QMath::superscript()
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_SUPERSCRIPT));
-}
-
-
-void QMath::insert(string const & name)
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_INSERT_MATH, '\\' + name));
-}
-
-
-void QMath::insertCubeRoot()
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_INSERT_MATH, "\\root"));
-       current_view->owner()->dispatch(FuncRequest(LFUN_SELFINSERT, "3"));
-       current_view->owner()->dispatch(FuncRequest(LFUN_RIGHT));
-}
-
-
-void QMath::insertMatrix(string const & str)
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_INSERT_MATRIX, str));
-}
-
-
-void QMath::insertDelim(string const & str)
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_MATH_DELIM, str));
-}
-
-
-void QMath::toggleDisplay()
-{
-#warning FIXME Current_view used here!
-       current_view->owner()->dispatch(FuncRequest(LFUN_MATH_DISPLAY));
+       dialog_.reset(new QMathDialog(this));
 }
index 9934002cc162a826d388a2f8467773a20ed48b76..6b2a3dcf86ed8dbee6958e8a265729d0c6cf288a 100644 (file)
 #define QMATH_H
 
 
-#include "LString.h"
+#include "QDialogView.h"
 
+class ControlMath2;
 class QMathDialog;
 
-class QMath {
+class QMath : public QController<ControlMath2, QView<QMathDialog> > {
 public:
        friend class QMathDialog;
 
-       QMath();
+       QMath(Dialog &);
 
-       /// temporary
-       void do_show();
-
-       /// build the dialog (should be private)
-       virtual void build_dialog();
-
-       /// insert a math symbol into the doc
-       void insert(string const & name);
-
-       /// insert a cube root
-       void insertCubeRoot();
-
-       /// insert a matrix
-       void insertMatrix(string const & str);
-
-       /// insert delim
-       void insertDelim(string const & str);
-
-       /// add a subscript
-       void subscript();
-
-       /// add a superscript
-       void superscript();
-
-       /// switch between display and inline
-       void toggleDisplay();
 private:
-       /// Apply changes
        virtual void apply() {}
-       /// update
        virtual void update_contents() {}
-
-       // FIXME: temp
-       QMathDialog * dialog_;
+       /// Build the dialog.
+       virtual void build_dialog();
 };
 
 #endif // QMATH_H
index f4550540cf6cd62fe63523f2843705871a330749..e8df28acacefd7aed2ff7c1ba5b443db18cc8be5 100644 (file)
@@ -15,7 +15,7 @@
 #include "qt_helpers.h"
 #include "debug.h"
 
-#include "ControlMath.h"
+#include "ControlMath2.h"
 
 #include "QMathDialog.h"
 #include "QMath.h"
@@ -196,13 +196,13 @@ void QMathDialog::addPanel(int num)
 
 void QMathDialog::symbol_clicked(string const & str)
 {
-       form_->insert(str);
+       form_->controller().dispatchInsert(str);
 }
 
 
 void QMathDialog::fracClicked()
 {
-       form_->insert("frac");
+       form_->controller().dispatchInsert("frac");
 }
 
 
@@ -229,7 +229,7 @@ void QMathDialog::expandClicked()
 
 void QMathDialog::functionSelected(const QString & str)
 {
-       form_->insert(fromqstr(str));
+       form_->controller().dispatchInsert(fromqstr(str));
 }
 
 
@@ -243,19 +243,19 @@ void QMathDialog::matrixClicked()
 
 void QMathDialog::equationClicked()
 {
-       form_->toggleDisplay();
+       form_->controller().dispatchToggleDisplay();
 }
 
 
 void QMathDialog::subscriptClicked()
 {
-       form_->subscript();
+       form_->controller().dispatchSubscript();
 }
 
 
 void QMathDialog::superscriptClicked()
 {
-       form_->superscript();
+       form_->controller().dispatchSuperscript();
 }
 
 
@@ -271,7 +271,7 @@ void QMathDialog::insertSpace(int id)
                case 6: str = "!"; break;
                default: return;
        }
-       form_->insert(str);
+       form_->controller().dispatchInsert(str);
 }
 
 
@@ -279,13 +279,13 @@ void QMathDialog::insertRoot(int id)
 {
        switch (id) {
                case 1:
-                       form_->insert("sqrt");
+                       form_->controller().dispatchInsert("sqrt");
                        break;
                case 2:
-                       form_->insertCubeRoot();
+                       form_->controller().dispatchCubeRoot();
                        break;
                case 3:
-                       form_->insert("root");
+                       form_->controller().dispatchInsert("root");
                        break;
        }
 }
@@ -301,7 +301,7 @@ void QMathDialog::insertStyle(int id)
                case 4: str = "scriptscriptstyle"; break;
                default: return;
        }
-       form_->insert(str);
+       form_->controller().dispatchInsert(str);
 }
 
 
@@ -320,5 +320,5 @@ void QMathDialog::insertFont(int id)
                case 9: str = "textrm"; break;
                default: return;
        }
-       form_->insert(str);
+       form_->controller().dispatchInsert(str);
 }
index 52b11a113406ecea566d089b50a5519766e0cbbb..75488a5650eb3f1549030b0c13876db9d9c3388a 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "support/lstrings.h"
 #include "Lsstream.h"
+#include "ControlMath2.h"
 
 #include "QMath.h"
 #include "QMathMatrixDialog.h"
@@ -81,7 +82,7 @@ void QMathMatrixDialog::slotOK()
 
        ostringstream os;
        os << nx << ' ' << ny << ' ' << c << ' ' << sh;
-       form_->insertMatrix(os.str().c_str());
+       form_->controller().dispatchMatrix(os.str().c_str());
 
        // close the dialog
        close();