]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormMathsPanel.C
Martin's patches, Part II
[lyx.git] / src / frontends / xforms / FormMathsPanel.C
index 3fea9568edffcfb61d5f09c9bcc790538c77cd5b..bb9a3f135693efaa1c5dd681ab6bc3a0056eb66c 100644 (file)
 
 #include "Dialogs.h"
 #include "LyXView.h"
-#include "lyxfunc.h"
 #include "FormMathsPanel.h"
 #include "form_maths_panel.h"
 #include "MathsSymbols.h"
 #include "debug.h"
+#include "lyxfunc.h"
+
+#include "form_maths_deco.h"
+#include "form_maths_delim.h"
+#include "form_maths_matrix.h"
+#include "form_maths_space.h"
 
 #include "FormMathsBitmap.h"
 #include "FormMathsDeco.h"
@@ -36,6 +41,8 @@
 #include "matrix.xpm"
 #include "space.xpm"
 #include "sqrt.xpm"
+#include "sub.xpm"
+#include "super.xpm"
 
 #include "arrows.xbm"
 #include "bop.xbm"
@@ -49,46 +56,55 @@ using std::vector;
 using SigC::slot;
 
 FormMathsPanel::FormMathsPanel(LyXView * lv, Dialogs * d)
-       : FormBaseBD(lv, d, _("Maths Panel")),
-         active_(0)
+       : FormBaseBD(lv, d, _("Maths Panel"), false),
+         active_(0), bc_("Close")
 {
        deco_.reset(  new FormMathsDeco(  lv, d, *this));
        delim_.reset( new FormMathsDelim( lv, d, *this));
        matrix_.reset(new FormMathsMatrix(lv, d, *this));
        space_.reset( new FormMathsSpace( lv, d, *this));
 
-       vector<string> latex(nr_latex_arrow);
-       for (int i = 0; i<latex.size(); ++i) {
+       typedef vector<string> StringVec;
+       
+       StringVec latex(nr_latex_arrow);
+       for (StringVec::size_type i = 0; i < latex.size(); ++i) {
                latex[i] = latex_arrow[i];
        }
        arrow_.reset(new FormMathsBitmap(lv, d, *this, latex));
 
        latex.resize(nr_latex_bop);
-       for (int i = 0; i<latex.size(); ++i) {
+       for (StringVec::size_type i = 0; i < latex.size(); ++i) {
                latex[i] = latex_bop[i];
        }
        boperator_.reset(new FormMathsBitmap(lv, d, *this, latex));
 
        latex.resize(nr_latex_brel);
-       for (int i = 0; i<latex.size(); ++i) {
+       for (StringVec::size_type i = 0; i<latex.size(); ++i) {
                latex[i] = latex_brel[i];
        }
        brelats_.reset(new FormMathsBitmap(lv, d, *this, latex));
 
        latex.resize(nr_latex_greek);
-       for (int i = 0; i<latex.size(); ++i) {
+       for (StringVec::size_type i = 0; i < latex.size(); ++i) {
                latex[i] = latex_greek[i];
        }
        greek_.reset(new FormMathsBitmap(lv, d, *this, latex));
 
        latex.resize(nr_latex_misc);
-       for (int i = 0; i<latex.size(); ++i) {
+       for (StringVec::size_type i = 0; i<latex.size(); ++i) {
                latex[i] = latex_misc[i];
        }
        misc_.reset(new FormMathsBitmap(lv, d, *this, latex));
 
+       latex.resize(nr_latex_dots);
+       for (StringVec::size_type i = 0; i<latex.size(); ++i) {
+               latex[i] = latex_dots[i];
+       }
+
+       dots_.reset(new FormMathsBitmap(lv, d, *this, latex));
+
        latex.resize(nr_latex_varsz);
-       for (int i = 0; i<latex.size(); ++i) {
+       for (StringVec::size_type i = 0; i<latex.size(); ++i) {
                latex[i] = latex_varsz[i];
        }
        varsize_.reset(new FormMathsBitmap(lv, d, *this, latex));
@@ -123,6 +139,10 @@ void FormMathsPanel::build()
                           const_cast<char**>(sqrt_xpm));
        fl_set_pixmap_data(dialog_->button_frac,
                           const_cast<char**>(frac));
+       fl_set_pixmap_data(dialog_->button_super,
+                          const_cast<char**>(super_xpm));
+       fl_set_pixmap_data(dialog_->button_sub,
+                          const_cast<char**>(sub_xpm));
        fl_set_pixmap_data(dialog_->button_delim,
                           const_cast<char**>(delim));
        fl_set_pixmap_data(dialog_->button_deco,
@@ -147,11 +167,12 @@ void FormMathsPanel::build()
        greek_->addBitmap(28, 7, 4, greek_width, greek_height, greek_bits);
 
        misc_->addBitmap(29, 5, 6, misc_width, misc_height, misc_bits);
+       dots_->addBitmap(4, 4, 1, dots_width, dots_height, dots_bits);
 
        varsize_->addBitmap(14, 3, 5, varsz_width, varsz_height, varsz_bits);
 
        bc().setCancel(dialog_->button_close);
-       bc().refresh();
 }
 
 bool FormMathsPanel::input(FL_OBJECT *, long data)
@@ -189,6 +210,12 @@ bool FormMathsPanel::input(FL_OBJECT *, long data)
                misc_->show();
                break;
 
+       case MM_DOTS:
+               if (active_ && active_ != dots_.get())
+                       active_->hide();
+               dots_->show();
+               break;
        case MM_VARSIZE:
                if (active_ && active_ != varsize_.get())
                        active_->hide();
@@ -203,6 +230,20 @@ bool FormMathsPanel::input(FL_OBJECT *, long data)
                insertSymbol("sqrt");
                break;
 
+       case MM_SUPER:
+               lv_->getLyXFunc()->dispatch(LFUN_SUPERSCRIPT);
+               break;
+
+       case MM_SUB:
+               lv_->getLyXFunc()->dispatch(LFUN_SUBSCRIPT);
+               break;
+
+       case MM_SUBSUPER:
+               lv_->getLyXFunc()->dispatch(LFUN_SUBSCRIPT);
+               lv_->getLyXFunc()->dispatch(LFUN_LEFT);
+               lv_->getLyXFunc()->dispatch(LFUN_SUPERSCRIPT);
+               break;
+
        case MM_DELIM:
                if (active_ && active_ != delim_.get())
                        active_->hide();
@@ -243,20 +284,20 @@ bool FormMathsPanel::input(FL_OBJECT *, long data)
 
 void FormMathsPanel::insertSymbol(string const & sym) const
 {
-       lv_->getLyXFunc()->Dispatch(LFUN_INSERT_MATH, sym);
+       lv_->getLyXFunc()->dispatch(LFUN_INSERT_MATH, '\\' + sym);
 }
 
 
 void FormMathsPanel::mathDisplay() const
 {
-       lv_->getLyXFunc()->Dispatch(LFUN_MATH_DISPLAY);
+       lv_->getLyXFunc()->dispatch(LFUN_MATH_DISPLAY);
 }
 
 
 
 FormMathsSub::FormMathsSub(LyXView * lv, Dialogs * d, FormMathsPanel const & p,
-                          string const & t)
-       : parent_(p), FormBaseBD(lv, d, t)
+                          string const & t, bool allowResize)
+    : FormBaseBD(lv, d, t, allowResize), parent_(p), bc_("Close")
 {}