flag.setOnOff(true);
break;
- case LFUN_TRACK_CHANGES:
- flag.setOnOff(buf->params().tracking_changes);
- break;
-
case LFUN_EXPORT:
enable = cmd.argument == "custom"
|| Exporter::IsExportable(*buf, cmd.argument);
break;
- case LFUN_UNDO:
- enable = !buf->undostack().empty();
- break;
- case LFUN_REDO:
- enable = !buf->redostack().empty();
- break;
case LFUN_CUT:
case LFUN_COPY:
enable = cur.selection();
case LFUN_MENURELOAD:
enable = !buf->isUnnamed() && !buf->isClean();
break;
- case LFUN_BOOKMARK_GOTO:
- enable = view()->isSavedPosition(strToUnsignedInt(cmd.argument));
- break;
- case LFUN_MERGE_CHANGES:
- case LFUN_ACCEPT_CHANGE:
- case LFUN_REJECT_CHANGE:
- case LFUN_ACCEPT_ALL_CHANGES:
- case LFUN_REJECT_ALL_CHANGES:
- enable = buf && buf->params().tracking_changes;
- break;
case LFUN_INSET_SETTINGS: {
enable = false;
enable = name == "aboutlyx"
|| name == "file"
|| name == "forks"
- || name == "preferences"
+ || name == "prefs"
|| name == "texinfo";
else if (name == "print")
enable = Exporter::IsExportable(*buf, "dvi")
break;
}
+ case LFUN_DIALOG_UPDATE: {
+ string const name = cmd.getArg(0);
+ if (!buf)
+ enable = name == "prefs";
+ break;
+ }
+
case LFUN_MENUNEW:
case LFUN_MENUNEWTMPLT:
case LFUN_WORDFINDFORWARD:
case LFUN_GOTO_PARAGRAPH:
case LFUN_DIALOG_SHOW_NEW_INSET:
case LFUN_DIALOG_SHOW_NEXT_INSET:
- case LFUN_DIALOG_UPDATE:
case LFUN_DIALOG_HIDE:
case LFUN_DIALOG_DISCONNECT_INSET:
case LFUN_CHILDOPEN:
case LFUN_SET_COLOR:
case LFUN_MESSAGE:
case LFUN_EXTERNAL_EDIT:
- case LFUN_FILE_INSERT:
- case LFUN_FILE_INSERT_ASCII:
- case LFUN_FILE_INSERT_ASCII_PARA:
+ case LFUN_GRAPHICS_EDIT:
case LFUN_ALL_INSETS_TOGGLE:
case LFUN_LANGUAGE_BUFFER:
case LFUN_TEXTCLASS_APPLY:
case LFUN_TEXTCLASS_LOAD:
case LFUN_SAVE_AS_DEFAULT:
case LFUN_BUFFERPARAMS_APPLY:
-
+ case LFUN_LYXRC_APPLY:
// these are handled in our dispatch()
break;
default:
+
cur.getStatus(cmd, flag);
+ if (!flag.enabled())
+ flag = view()->getStatus(cmd);
}
if (!enable)
flag.enabled(false);
}
+ //lyxerr << "LyXFunc::getStatus: got: " << flag.enabled() << endl;
return flag;
}
return buf.isClean();
}
+
void showPrintError(string const & name)
{
- string str = bformat(_("Could not print the document %1$s.\n"
- "Check that your printer is set up correctly."),
- MakeDisplayPath(name, 50));
- Alert::error(_("Print document failed"), str);
+ string str = bformat(_("Could not print the document %1$s.\n"
+ "Check that your printer is set up correctly."),
+ MakeDisplayPath(name, 50));
+ Alert::error(_("Print document failed"), str);
+}
+
+
+void loadTextclass(string const & name)
+{
+ std::pair<bool, lyx::textclass_type> const tc_pair =
+ textclasslist.NumberOfClass(name);
+
+ if (!tc_pair.first) {
+ lyxerr << "Document class \"" << name
+ << "\" does not exist."
+ << std::endl;
+ return;
+ }
+
+ lyx::textclass_type const tc = tc_pair.second;
+
+ if (!textclasslist[tc].load()) {
+ string s = bformat(_("The document could not be converted\n"
+ "into the document class %1$s."),
+ textclasslist[tc].name());
+ Alert::error(_("Could not change class"), s);
+ }
}
} //namespace anon
dispatch_buffer.erase();
selection_possible = false;
+ bool update = true;
+
// We cannot use this function here
if (!getStatus(cmd).enabled()) {
lyxerr[Debug::ACTION] << "LyXFunc::dispatch: "
break;
case LFUN_EXEC_COMMAND:
+ owner->getToolbar().display("minibuffer", true);
owner->focus_command_buffer();
break;
if (!data.empty())
owner->getDialogs().show("character", data);
}
- else if (name == "preamble")
- owner->getDialogs().showPreamble();
- else if (name == "preferences")
- owner->getDialogs().showPreferences();
- else if (name == "spellchecker")
- owner->getDialogs().showSpellchecker();
else if (name == "latexlog") {
pair<Buffer::LogType, string> const logfile =
inset->dispatch(view()->cursor(), fr);
} else if (name == "paragraph") {
dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
+ } else if (name == "prefs") {
+ owner->getDialogs().update(name, string());
}
break;
}
case LFUN_SAVEPREFERENCES: {
Path p(user_lyxdir());
- lyxrc.write("preferences");
+ lyxrc.write("preferences", false);
break;
}
break;
}
- case LFUN_BREAKLINE: {
-#warning swallow 'Return' if the minibuffer is focused. But how?
+ case LFUN_GRAPHICS_EDIT: {
+ FuncRequest fr(action, argument);
+ InsetGraphics().dispatch(view()->cursor(), fr);
break;
}
lyx::textclass_type const old_class =
buffer->params().textclass;
- dispatch(FuncRequest(LFUN_TEXTCLASS_LOAD, argument));
+ loadTextclass(argument);
std::pair<bool, lyx::textclass_type> const tc_pair =
textclasslist.NumberOfClass(argument);
// nothing to do
break;
- owner->message(
- _("Converting document to new document class..."));
-
+ owner->message(_("Converting document to new document class..."));
ErrorList el;
lyx::cap::SwitchLayoutsBetweenClasses(
old_class, new_class,
break;
}
- case LFUN_TEXTCLASS_LOAD: {
- std::pair<bool, lyx::textclass_type> const tc_pair =
- textclasslist.NumberOfClass(argument);
-
- if (!tc_pair.first) {
- lyxerr << "Document class \"" << argument
- << "\" does not exist."
- << std::endl;
- break;
- }
-
- lyx::textclass_type const tc = tc_pair.second;
-
- bool const success = textclasslist[tc].load();
- if (success)
- break;
+ case LFUN_TEXTCLASS_LOAD:
+ loadTextclass(argument);
+ break;
- string s = bformat(_("The document could not be converted\n"
- "into the document class %1$s."),
- textclasslist[tc].name());
- Alert::error(_("Could not change class"), s);
+ case LFUN_LYXRC_APPLY: {
+ istringstream ss(argument);
+ bool const success = lyxrc.read(ss) == 0;
+ if (!success) {
+ lyxerr << "Warning in LFUN_LYXRC_APPLY!\n"
+ << "Unable to read lyxrc data"
+ << endl;
+ }
break;
}
default: {
+ update = false;
DispatchResult res = view()->cursor().dispatch(cmd);
- if (!res.dispatched());
- view()->dispatch(cmd);
+ if (res.dispatched())
+ update |= res.update();
+ else
+ update |= view()->dispatch(cmd);
+
break;
}
}
if (view()->available()) {
- view()->fitCursor();
- view()->update();
- view()->cursor().updatePos();
+ if (view()->fitCursor() || update)
+ view()->update();
// if we executed a mutating lfun, mark the buffer as dirty
if (getStatus(cmd).enabled()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)