string configure_command = package().configure_command();
configure_command += option;
Systemcall one;
- one.startscript(Systemcall::Wait, configure_command);
+ int ret = one.startscript(Systemcall::Wait, configure_command);
p.pop();
// emit message signal.
lv.message(_("Reloading configuration..."));
// Re-read packages.lst
LaTeXFeatures::getAvailable();
- Alert::information(_("System reconfigured"),
+ if (ret)
+ Alert::information(_("System reconfiguration failed"),
+ _("The system reconfiguration has failed.\n"
+ "Default textclass is used but LyX may "
+ "not be able to work properly.\n"
+ "Please reconfigure again if needed."));
+ else
+
+ Alert::information(_("System reconfigured"),
_("The system has been reconfigured.\n"
"You need to restart LyX to make use of any\n"
"updated document class specifications."));
}
+namespace {
+void restartCursor(LyXView * lv)
+{
+ /* When we move around, or type, it's nice to be able to see
+ * the cursor immediately after the keypress.
+ */
+ if (lv && lv->currentWorkArea())
+ lv->currentWorkArea()->startBlinkingCursor();
+}
+}
+
void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
{
LYXERR(Debug::KEY) << "KeySym is " << keysym.getSymbolName() << endl;
if (!keysym.isOK()) {
LYXERR(Debug::KEY) << "Empty kbd action (probably composing)"
<< endl;
+ restartCursor(lyx_view_);
return;
}
if (keysym.isModifier()) {
LYXERR(Debug::KEY) << "isModifier true" << endl;
+ restartCursor(lyx_view_);
return;
}
} else {
LYXERR(Debug::KEY) << "Unknown, !isText() - giving up" << endl;
lyx_view_->message(_("Unknown function."));
+ restartCursor(lyx_view_);
return;
}
}
} else {
dispatch(func);
}
+
+ restartCursor(lyx_view_);
}
return flag;
}
- Cursor * cur = view()? &view()->cursor(): 0;
-
// I would really like to avoid having this switch and rather try to
// encode this in the function itself.
// -- And I'd rather let an inset decide which LFUNs it is willing
enable = Exporter::isExportable(*buf, "program");
break;
- case LFUN_LAYOUT_TABULAR:
- enable = cur? cur->innerInsetOfType(Inset::TABULAR_CODE) : false;
- break;
-
- case LFUN_LAYOUT:
- case LFUN_LAYOUT_PARAGRAPH:
- enable = cur? !cur->inset().forceDefaultParagraphs(cur->idx()) : false;
- break;
-
case LFUN_VC_REGISTER:
enable = !buf->lyxvc().inUse();
break;
&& (!buf->isClean() || buf->isExternallyModified(Buffer::timestamp_method));
break;
- case LFUN_INSET_SETTINGS: {
- if (!cur) {
- enable = false;
- break;
- }
- Inset::Code code = cur->inset().lyxCode();
- switch (code) {
- case Inset::TABULAR_CODE:
- enable = cmd.argument() == "tabular";
- break;
- case Inset::ERT_CODE:
- enable = cmd.argument() == "ert";
- break;
- case Inset::FLOAT_CODE:
- enable = cmd.argument() == "float";
- break;
- case Inset::WRAP_CODE:
- enable = cmd.argument() == "wrap";
- break;
- case Inset::NOTE_CODE:
- enable = cmd.argument() == "note";
- break;
- case Inset::BRANCH_CODE:
- enable = cmd.argument() == "branch";
- break;
- case Inset::BOX_CODE:
- enable = cmd.argument() == "box";
- break;
- case Inset::LISTINGS_CODE:
- enable = cmd.argument() == "listings";
- break;
- default:
- break;
- }
- break;
- }
-
case LFUN_INSET_APPLY: {
- if (!cur) {
+ if (!view()) {
enable = false;
break;
}
if (inset) {
FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument());
FuncStatus fs;
- if (!inset->getStatus(*cur, fr, fs)) {
+ if (!inset->getStatus(view()->cursor(), fr, fs)) {
// Every inset is supposed to handle this
BOOST_ASSERT(false);
}
flag.setOnOff(lyx_view_->getDialogs().visible(cmd.getArg(0)));
// fall through to set "enable"
case LFUN_DIALOG_SHOW: {
- if (!cur) {
- enable = false;
- break;
- }
string const name = cmd.getArg(0);
if (!buf)
enable = name == "aboutlyx"
else if (name == "print")
enable = Exporter::isExportable(*buf, "dvi")
&& lyxrc.print_command != "none";
- else if (name == "character")
- enable = cur->inset().lyxCode() != Inset::ERT_CODE &&
- cur->inset().lyxCode() != Inset::LISTINGS_CODE;
+ else if (name == "character") {
+ if (!view())
+ enable = false;
+ else {
+ InsetCode ic = view()->cursor().inset().lyxCode();
+ enable = ic != ERT_CODE && ic != LISTINGS_CODE;
+ }
+ }
else if (name == "latexlog")
enable = isFileReadable(FileName(buf->getLogName().second));
else if (name == "spellchecker")
break;
}
- case LFUN_DIALOG_SHOW_NEW_INSET:
- if (!cur) {
- enable = false;
- break;
- }
- enable = cur->inset().lyxCode() != Inset::ERT_CODE &&
- cur->inset().lyxCode() != Inset::LISTINGS_CODE;
- if (cur->inset().lyxCode() == Inset::CAPTION_CODE) {
- FuncStatus flag;
- if (cur->inset().getStatus(*cur, cmd, flag))
- return flag;
- }
- break;
-
case LFUN_DIALOG_UPDATE: {
string const name = cmd.getArg(0);
if (!buf)
break;
default:
- if (!cur) {
+ if (!view()) {
enable = false;
break;
}
- if (!getLocalStatus(*cur, cmd, flag))
+ if (!getLocalStatus(view()->cursor(), cmd, flag))
flag = view()->getStatus(cmd);
}
}
// Are we in a DELETED change-tracking region?
- if (buf && cur
- && lookupChangeType(*cur, true) == Change::DELETED
+ if (buf && view()
+ && lookupChangeType(view()->cursor(), true) == Change::DELETED
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(from_utf8(N_("This portion of the document is deleted.")));
name == "nomenclature" ||
name == "ref" ||
name == "toc" ||
- name == "url") {
+ name == "href") {
InsetCommandParams p(name);
data = InsetCommandMailer::params2string(name, p);
} else if (name == "include") {
BOOST_ASSERT(lyx_view_);
string action;
string const name = split(argument, action, ' ');
- Inset::Code const inset_code =
- Inset::translate(name);
+ InsetCode const inset_code = insetCode(name);
Cursor & cur = view()->cursor();
FuncRequest fr(LFUN_INSET_TOGGLE, action);
InsetIterator const end = inset_iterator_end(inset);
for (; it != end; ++it) {
if (!it->asInsetMath()
- && (inset_code == Inset::NO_CODE
+ && (inset_code == NO_CODE
|| inset_code == it->lyxCode())) {
Cursor tmpcur = cur;
tmpcur.pushLeft(*it);
InsetIterator it = inset_iterator_begin(inset);
InsetIterator const end = inset_iterator_end(inset);
for (; it != end; ++it)
- if (it->lyxCode() == Inset::CITE_CODE)
+ if (it->lyxCode() == CITE_CODE)
it->dispatch(cur, fr);
}