#include "BufferParams.h"
#include "BufferView.h"
#include "Cursor.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
#include "LaTeXFeatures.h"
#include "Lexer.h"
#include "LyXRC.h"
}
+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
{
void InsetIPA::validate(LaTeXFeatures & features) const
{
- features.require("tipa");
- features.require("tipx");
+ if (!buffer_->params().useNonTeXFonts) {
+ 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 << "}";
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;
+ }
}