enable = false;
if (!cur)
break;
- UpdatableInset * inset = cur.inset().asUpdatableInset();
- lyxerr << "inset: " << inset << endl;
- if (!inset)
- break;
-
- InsetBase::Code code = inset->lyxCode();
+ InsetBase::Code code = cur.inset().lyxCode();
switch (code) {
case InsetBase::TABULAR_CODE:
enable = cmd.argument == "tabular";
break;
}
+ case LFUN_INSET_APPLY: {
+ string const name = cmd.getArg(0);
+ InsetBase * inset = owner->getDialogs().getOpenInset(name);
+ if (inset) {
+ FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument);
+ FuncStatus fs;
+ bool const success = inset->getStatus(cur, fr, fs);
+ // Every inset is supposed to handle this
+ BOOST_ASSERT(success);
+ flag |= fs;
+ } else {
+ FuncRequest fr(LFUN_INSET_INSERT, cmd.argument);
+ flag |= getStatus(fr);
+ }
+ enable = flag.enabled();
+ break;
+ }
+
case LFUN_DIALOG_SHOW: {
string const name = cmd.getArg(0);
if (!buf)
&& lyxrc.print_command != "none";
else if (name == "character" || name == "mathpanel")
enable = cur.inset().lyxCode() != InsetBase::ERT_CODE;
- else if (name == "vclog")
- enable = buf->lyxvc().inUse();
else if (name == "latexlog")
enable = IsFileReadable(buf->getLogName().second);
+#if !defined (USE_ASPELL) && !defined (USE_ISPELL) && !defined (USE_PSPELL)
+ else if (name == "spellchecker")
+ enable = false;
+#endif
+ else if (name == "vclog")
+ enable = buf->lyxvc().inUse();
break;
}
break;
case LFUN_QUIT:
- QuitLyX();
+ QuitLyX(argument == "force");
break;
case LFUN_TOCVIEW: {
break;
}
+ case LFUN_INSET_APPLY: {
+ string const name = cmd.getArg(0);
+ InsetBase * inset = owner->getDialogs().getOpenInset(name);
+ if (inset) {
+ FuncRequest fr(LFUN_INSET_MODIFY, argument);
+ inset->dispatch(view()->cursor(), fr);
+ } else {
+ FuncRequest fr(LFUN_INSET_INSERT, argument);
+ dispatch(fr);
+ }
+ // ideally, the update flag should be set by the insets,
+ // but this is not possible currently
+ update = true;
+ break;
+ }
+
case LFUN_ALL_INSETS_TOGGLE: {
string action;
string const name = split(argument, action, ' ');
}
case LFUN_TEXTCLASS_APPLY: {
+ recordUndoFullDocument(view());
Buffer * buffer = owner->buffer();
lyx::textclass_type const old_class =
break;
owner->message(_("Converting document to new document class..."));
+ StableDocIterator backcur(view()->cursor());
ErrorList el;
- lyx::cap::SwitchLayoutsBetweenClasses(
+ lyx::cap::SwitchBetweenClasses(
old_class, new_class,
buffer->paragraphs(), el);
+ view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
bufferErrors(*buffer, el);
view()->showErrorList(_("Class switch"));
+ updateCounters(*buffer);
+ update = true;
break;
}
default: {
view()->cursor().dispatch(cmd);
update |= view()->cursor().result().update();
- if (!view()->cursor().result().dispatched()) {
+ if (!view()->cursor().result().dispatched())
update |= view()->dispatch(cmd);
- }
-
break;
}
}
// Redraw screen unless explicitly told otherwise.
// This also initializes the position cache for all insets
// in (at least partially) visible top-level paragraphs.
- view()->update(true, update);
+ if (update)
+ view()->update(Update::FitCursor | Update::Force);
+ else
+ view()->update(Update::FitCursor);
// if we executed a mutating lfun, mark the buffer as dirty
+ // FIXME: Why not use flag.enabled() but call getStatus again?
if (getStatus(cmd).enabled()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly))
view()->owner()->updateLayoutChoice();
}
}
- sendDispatchMessage(getMessage(), cmd);
+ sendDispatchMessage(_(getMessage()), cmd);
}
string const shortcuts = toplevel_keymap->printbindings(cmd);
- if (!shortcuts.empty()) {
+ if (!shortcuts.empty())
comname += ": " + shortcuts;
- } else if (!argsadded && !cmd.argument.empty()) {
+ else if (!argsadded && !cmd.argument.empty())
comname += ' ' + cmd.argument;
- }
if (!comname.empty()) {
comname = rtrim(comname);
- dispatch_msg += '(' + comname + ')';
+ dispatch_msg += '(' + rtrim(comname) + ')';
}
lyxerr[Debug::ACTION] << "verbose dispatch msg " << dispatch_msg << endl;
case LyXRC::RC_SPELL_COMMAND:
case LyXRC::RC_TEMPDIRPATH:
case LyXRC::RC_TEMPLATEPATH:
+ case LyXRC::RC_TEX_ALLOWS_SPACES:
case LyXRC::RC_UIFILE:
case LyXRC::RC_USER_EMAIL:
case LyXRC::RC_USER_NAME: