]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetIPA.cpp
Added inset-select-all to emacs bindings
[lyx.git] / src / insets / InsetIPA.cpp
index 482938a844935f743b85c13de447144f75956b0b..33ede5515fd57b604991d5fe1d6c0a51a04e5cdd 100644 (file)
 #include "BufferParams.h"
 #include "BufferView.h"
 #include "Cursor.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
-#include "LyXRC.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
 #include "RenderPreview.h"
@@ -61,6 +62,44 @@ void InsetIPA::write(ostream & os) const
 }
 
 
+void InsetIPA::doDispatch(Cursor & cur, FuncRequest & cmd)
+{
+       switch (cmd.action()) {
+       case LFUN_QUOTE_INSERT: {
+               FuncRequest fr(LFUN_SELF_INSERT, "\"");
+               InsetText::doDispatch(cur, fr);
+               break;
+       }
+       default:
+               InsetText::doDispatch(cur, cmd);
+               break;
+       }
+
+}
+
+
+bool InsetIPA::getStatus(Cursor & cur, FuncRequest const & cmd,
+               FuncStatus & flag) const
+{
+       switch (cmd.action()) {
+       case LFUN_SCRIPT_INSERT: {
+               if (cmd.argument() == "subscript") {
+                       flag.setEnabled(false);
+                       return true;
+               }
+               break;
+       }
+       case LFUN_IN_IPA:
+               flag.setEnabled(true);
+               return true;
+               break;
+       default:
+               break;
+       }
+       return InsetText::getStatus(cur, cmd, flag);
+}
+
+
 void InsetIPA::addPreview(DocIterator const & inset_pos,
        graphics::PreviewLoader &) const
 {
@@ -82,8 +121,7 @@ void InsetIPA::preparePreview(DocIterator const & pos) const
 
 bool InsetIPA::previewState(BufferView * bv) const
 {
-       if (!editing(bv) && (RenderPreview::status() == LyXRC::PREVIEW_ON ||
-                            RenderPreview::status() == LyXRC::PREVIEW_NO_MATH)) {
+       if (!editing(bv) && RenderPreview::previewText()) {
                graphics::PreviewImage const * pimage =
                        preview_->getPreviewImage(bv->buffer());
                return pimage && pimage->image();
@@ -169,18 +207,24 @@ void InsetIPA::validate(LaTeXFeatures & features) const
 {
        features.require("tipa");
        features.require("tipx");
+
+       InsetText::validate(features);
 }
 
 
-void InsetIPA::latex(otexstream & os, OutputParams const & runparams) const
+void InsetIPA::latex(otexstream & os, OutputParams const & runparams_in) const
 {
+       OutputParams runparams(runparams_in);
+       runparams.inIPA = true;
        bool const multipar = (text().paragraphs().size() > 1);
-       if (multipar)
+       // fontspec knows \textipa, but not the IPA environment
+       bool const nontexfonts = buffer_->params().useNonTeXFonts;
+       if (multipar && !nontexfonts)
                os << "\\begin{IPA}\n";
        else
                os << "\\textipa{";
        InsetText::latex(os, runparams);
-       if (multipar)
+       if (multipar && !nontexfonts)
                os << "\n\\end{IPA}";
        else
                os << "}";
@@ -189,10 +233,16 @@ void InsetIPA::latex(otexstream & os, OutputParams const & runparams) const
 
 bool InsetIPA::insetAllowed(InsetCode code) const
 {
-       if (code == ERT_CODE)
+       switch (code) {
+       // code that is allowed
+       case ERT_CODE:
+       case IPACHAR_CODE:
+       case IPADECO_CODE:
+       case SCRIPT_CODE:
                return true;
-       else
+       default:
                return false;
+       }
 }