#include "insets/InsetERT.h"
#include "insets/InsetExternal.h"
#include "insets/InsetFloat.h"
-#include "insets/InsetListings.h"
#include "insets/InsetGraphics.h"
#include "insets/InsetInclude.h"
+#include "insets/InsetListings.h"
#include "insets/InsetNote.h"
+#include "insets/InsetSpace.h"
#include "insets/InsetTabular.h"
#include "insets/InsetVSpace.h"
#include "insets/InsetWrap.h"
// This function runs "configure" and then rereads lyx.defaults to
// reconfigure the automatic settings.
-void reconfigure(LyXView & lv, string const & option)
+void reconfigure(LyXView * lv, string const & option)
{
// emit message signal.
- lv.message(_("Running configure..."));
+ if (lv)
+ lv->message(_("Running configure..."));
// Run configure in user lyx directory
PathChanger p(package().user_support());
int ret = one.startscript(Systemcall::Wait, configure_command);
p.pop();
// emit message signal.
- lv.message(_("Reloading configuration..."));
+ if (lv)
+ lv->message(_("Reloading configuration..."));
lyxrc.read(libFileSearch(string(), "lyxrc.defaults"));
// Re-read packages.lst
LaTeXFeatures::getAvailable();
bool res = false;
for ( ; cursor.depth(); cursor.pop()) {
//lyxerr << "\nCursor::getStatus: cmd: " << cmd << endl << *this << endl;
- BOOST_ASSERT(cursor.idx() <= cursor.lastidx());
- BOOST_ASSERT(cursor.pit() <= cursor.lastpit());
- BOOST_ASSERT(cursor.pos() <= cursor.lastpos());
+ LASSERT(cursor.idx() <= cursor.lastidx(), /**/);
+ LASSERT(cursor.pit() <= cursor.lastpit(), /**/);
+ LASSERT(cursor.pos() <= cursor.lastpos(), /**/);
// The inset's getStatus() will return 'true' if it made
// a definitive decision on whether it want to handle the
}
-void LyXFunc::handleKeyFunc(kb_action action)
+void LyXFunc::handleKeyFunc(FuncCode action)
{
char_type c = encoded_last_key;
if (keyseq.length())
c = 0;
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().getTransManager().deadkey(
c, get_accent(action).accent, view()->cursor().innerText(), view()->cursor());
// Need to clear, in case the minibuffer calls these
// to GuiView and be GuiView and be window dependent.
void LyXFunc::gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer)
{
- BOOST_ASSERT(lyx_view_);
- if (!LyX::ref().session().bookmarks().isValid(idx))
+ LASSERT(lyx_view_, /**/);
+ if (!theSession().bookmarks().isValid(idx))
return;
- BookmarksSection::Bookmark const & bm = LyX::ref().session().bookmarks().bookmark(idx);
- BOOST_ASSERT(!bm.filename.empty());
+ BookmarksSection::Bookmark const & bm = theSession().bookmarks().bookmark(idx);
+ LASSERT(!bm.filename.empty(), /**/);
string const file = bm.filename.absFilename();
// if the file is not opened, open it.
- if (!theBufferList().exists(file)) {
+ if (!theBufferList().exists(bm.filename)) {
if (openFile)
dispatch(FuncRequest(LFUN_FILE_OPEN, file));
else
return;
}
// open may fail, so we need to test it again
- if (!theBufferList().exists(file))
+ if (!theBufferList().exists(bm.filename))
return;
// if the current buffer is not that one, switch to it.
- if (lyx_view_->buffer()->absFileName() != file) {
+ if (lyx_view_->buffer()->fileName() != bm.filename) {
if (!switchToBuffer)
return;
dispatch(FuncRequest(LFUN_BUFFER_SWITCH, file));
if (keysym.isModifier()) {
LYXERR(Debug::KEY, "isModifier true");
- lyx_view_->restartCursor();
+ if (lyx_view_)
+ lyx_view_->restartCursor();
return;
}
if (!lyx_view_)
return;
}
-
- if (lyx_view_)
- lyx_view_->restartCursor();
}
//lyxerr << "LyXFunc::getStatus: cmd: " << cmd << endl;
FuncStatus flag;
- Buffer * buf = lyx_view_? lyx_view_->buffer() : 0;
+ Buffer * buf = lyx_view_ ? lyx_view_->buffer() : 0;
if (cmd.action == LFUN_NOACTION) {
flag.message(from_utf8(N_("Nothing to do")));
- flag.enabled(false);
+ flag.setEnabled(false);
return flag;
}
case LFUN_THESAURUS_ENTRY:
#endif
flag.unknown(true);
- flag.enabled(false);
+ flag.setEnabled(false);
break;
default:
// no, exit directly
flag.message(from_utf8(N_("Command not allowed with"
"out any document open")));
- flag.enabled(false);
+ flag.setEnabled(false);
return flag;
}
bool enable = true;
switch (cmd.action) {
- // FIXME: these cases should be hidden in GuiApplication::getStatus().
- case LFUN_WINDOW_CLOSE:
- if (theApp())
- return theApp()->getStatus(cmd);
- enable = false;
- break;
-
- // FIXME: these cases should be hidden in GuiView::getStatus().
- case LFUN_DIALOG_TOGGLE:
- case LFUN_DIALOG_SHOW:
- case LFUN_DIALOG_UPDATE:
- if (cmd.argument() == "prefs"
- || cmd.argument() == "aboutlyx")
- enable = true;
- else if (lyx_view_)
- return lyx_view_->getStatus(cmd);
- else
- enable = false;
- break;
-
- case LFUN_TOOLBAR_TOGGLE:
- case LFUN_INSET_APPLY:
- case LFUN_BUFFER_WRITE:
- case LFUN_BUFFER_WRITE_AS:
- case LFUN_SPLIT_VIEW:
- case LFUN_CLOSE_TAB_GROUP:
- case LFUN_COMPLETION_POPUP:
- case LFUN_COMPLETION_INLINE:
- case LFUN_COMPLETION_COMPLETE:
- if (lyx_view_)
- return lyx_view_->getStatus(cmd);
- enable = false;
- break;
-
case LFUN_BUFFER_TOGGLE_READ_ONLY:
flag.setOnOff(buf->isReadonly());
break;
break;
case LFUN_VC_REGISTER:
- enable = !buf->lyxvc().inUse();
+ enable = !buf->lyxvc().inUse() && !buf->isUnnamed();
break;
case LFUN_VC_CHECK_IN:
- enable = buf->lyxvc().inUse() && !buf->isReadonly();
+ enable = buf->lyxvc().checkInEnabled();
break;
case LFUN_VC_CHECK_OUT:
- enable = buf->lyxvc().inUse() && buf->isReadonly();
+ enable = buf->lyxvc().checkOutEnabled();
break;
case LFUN_VC_REVERT:
- case LFUN_VC_UNDO_LAST:
enable = buf->lyxvc().inUse();
break;
+ case LFUN_VC_UNDO_LAST:
+ enable = buf->lyxvc().undoLastEnabled();
+ break;
case LFUN_BUFFER_RELOAD:
enable = !buf->isUnnamed() && buf->fileName().exists()
&& (!buf->isClean() || buf->isExternallyModified(Buffer::timestamp_method));
/*
case LFUN_BUFFER_WRITE:
case LFUN_BUFFER_WRITE_AS: {
- Buffer * b = theBufferList().getBuffer(cmd.getArg(0));
+ Buffer * b = theBufferList().getBuffer(FileName(cmd.getArg(0)));
enable = b && (b->isUnnamed() || !b->isClean());
break;
}
case LFUN_BOOKMARK_GOTO: {
const unsigned int num = convert<unsigned int>(to_utf8(cmd.argument()));
- enable = LyX::ref().session().bookmarks().isValid(num);
+ enable = theSession().bookmarks().isValid(num);
break;
}
case LFUN_BOOKMARK_CLEAR:
- enable = LyX::ref().session().bookmarks().size() > 0;
+ enable = theSession().bookmarks().size() > 0;
break;
// this one is difficult to get right. As a half-baked
break;
}
+ // we want to check if at least one of these is enabled
+ case LFUN_COMMAND_ALTERNATIVES: {
+ // argument contains ';'-terminated commands
+ string arg = to_utf8(cmd.argument());
+ while (!arg.empty()) {
+ string first;
+ arg = split(arg, first, ';');
+ FuncRequest func(lyxaction.lookupFunc(first));
+ func.origin = cmd.origin;
+ flag = getStatus(func);
+ // if this one is enabled, the whole thing is
+ if (flag.enabled())
+ break;
+ }
+ break;
+ }
+
case LFUN_CALL: {
FuncRequest func;
string name = to_utf8(cmd.argument());
- if (LyX::ref().topLevelCmdDef().lock(name, func)) {
+ if (theTopLevelCmdDef().lock(name, func)) {
func.origin = cmd.origin;
flag = getStatus(func);
- LyX::ref().topLevelCmdDef().release(name);
+ theTopLevelCmdDef().release(name);
} else {
// catch recursion or unknown command definiton
// all operations until the recursion or unknown command
break;
}
- case LFUN_BUFFER_NEW:
- case LFUN_BUFFER_NEW_TEMPLATE:
case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD:
case LFUN_COMMAND_PREFIX:
case LFUN_BUFFER_AUTO_SAVE:
case LFUN_RECONFIGURE:
case LFUN_HELP_OPEN:
- case LFUN_FILE_OPEN:
case LFUN_DROP_LAYOUTS_CHOICE:
case LFUN_MENU_OPEN:
- case LFUN_SERVER_GET_NAME:
+ case LFUN_SERVER_GET_FILENAME:
case LFUN_SERVER_NOTIFY:
case LFUN_SERVER_GOTO_FILE_ROW:
case LFUN_DIALOG_HIDE:
case LFUN_DIALOG_DISCONNECT_INSET:
case LFUN_BUFFER_CHILD_OPEN:
- case LFUN_UI_TOGGLE:
- case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
+ case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
case LFUN_KEYMAP_OFF:
case LFUN_KEYMAP_PRIMARY:
case LFUN_KEYMAP_SECONDARY:
case LFUN_BUFFER_EXPORT_CUSTOM:
case LFUN_BUFFER_PRINT:
case LFUN_PREFERENCES_SAVE:
- case LFUN_SCREEN_FONT_UPDATE:
- case LFUN_SET_COLOR:
case LFUN_MESSAGE:
- case LFUN_EXTERNAL_EDIT:
- case LFUN_GRAPHICS_EDIT:
- case LFUN_ALL_INSETS_TOGGLE:
+ case LFUN_INSET_EDIT:
case LFUN_BUFFER_LANGUAGE:
case LFUN_TEXTCLASS_APPLY:
case LFUN_TEXTCLASS_LOAD:
case LFUN_LYXRC_APPLY:
case LFUN_BUFFER_NEXT:
case LFUN_BUFFER_PREVIOUS:
- case LFUN_WINDOW_NEW:
- case LFUN_LYX_QUIT:
// these are handled in our dispatch()
break;
default:
+ if (!theApp()) {
+ enable = false;
+ break;
+ }
+ if (theApp()->getStatus(cmd, flag))
+ break;
+
+ // Does the view know something?
+ if (!lyx_view_) {
+ enable = false;
+ break;
+ }
+ if (lyx_view_->getStatus(cmd, flag))
+ break;
+
+ // If we have a BufferView, try cursor position and
+ // then the BufferView.
if (!view()) {
enable = false;
break;
}
if (!enable)
- flag.enabled(false);
+ flag.setEnabled(false);
// Can we use a readonly buffer?
if (buf && buf->isReadonly()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(from_utf8(N_("Document is read-only")));
- flag.enabled(false);
+ flag.setEnabled(false);
}
// Are we in a DELETED change-tracking region?
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(from_utf8(N_("This portion of the document is deleted.")));
- flag.enabled(false);
+ flag.setEnabled(false);
}
// the default error message if we disable the command
LayoutFile & tc = LayoutFileList::get()[name];
if (!tc.load(buf_path)) {
- docstring s = bformat(_("The document class %1$s."
+ docstring s = bformat(_("The document class %1$s "
"could not be loaded."), from_utf8(name));
Alert::error(_("Could not load class"), s);
return false;
void LyXFunc::dispatch(FuncRequest const & cmd)
{
string const argument = to_utf8(cmd.argument());
- kb_action const action = cmd.action;
+ FuncCode const action = cmd.action;
LYXERR(Debug::ACTION, "\nLyXFunc::dispatch: cmd: " << cmd);
//lyxerr << "LyXFunc::dispatch: cmd: " << cmd << endl;
<< lyxaction.getActionName(action)
<< " [" << action << "] is disabled at this location");
setErrorMessage(flag.message());
+ if (lyx_view_)
+ lyx_view_->restartCursor();
} else {
switch (action) {
case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
static docstring last_search;
docstring searched_string;
}
case LFUN_COMMAND_PREFIX:
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
lyx_view_->message(keyseq.printOptions(true));
break;
case LFUN_CANCEL:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
keyseq.reset();
meta_fake_bit = NoModifier;
if (lyx_view_->buffer())
break;
case LFUN_BUFFER_TOGGLE_READ_ONLY: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->view() && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->view() && lyx_view_->buffer(), /**/);
Buffer * buf = lyx_view_->buffer();
if (buf->lyxvc().inUse())
buf->lyxvc().toggleReadOnly();
}
// --- Menus -----------------------------------------------
- case LFUN_BUFFER_NEW:
- lyx_view_->newDocument(argument, false);
- updateFlags = Update::None;
- break;
-
- case LFUN_BUFFER_NEW_TEMPLATE:
- lyx_view_->newDocument(argument, true);
- updateFlags = Update::None;
- break;
-
case LFUN_BUFFER_CLOSE:
lyx_view_->closeBuffer();
updateFlags = Update::None;
break;
case LFUN_BUFFER_RELOAD: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
docstring const file = makeDisplayPath(lyx_view_->buffer()->absFileName(), 20);
docstring text = bformat(_("Any changes will be lost. Are you sure "
"you want to revert to the saved version of the document %1$s?"), file);
}
case LFUN_BUFFER_UPDATE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->doExport(argument, true);
break;
case LFUN_BUFFER_VIEW:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->preview(argument);
break;
case LFUN_MASTER_BUFFER_UPDATE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer(), /**/);
lyx_view_->buffer()->masterBuffer()->doExport(argument, true);
break;
case LFUN_MASTER_BUFFER_VIEW:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer(), /**/);
lyx_view_->buffer()->masterBuffer()->preview(argument);
break;
case LFUN_BUILD_PROGRAM:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->doExport("program", true);
break;
case LFUN_BUFFER_CHKTEX:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->runChktex();
break;
case LFUN_BUFFER_EXPORT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (argument == "custom")
dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"));
else
break;
case LFUN_BUFFER_EXPORT_CUSTOM: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
string format_name;
string command = split(argument, format_name, ' ');
Format const * format = formats.getFormat(format_name);
}
case LFUN_BUFFER_PRINT: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
// FIXME: cmd.getArg() might fail if one of the arguments
// contains double quotes
string target = cmd.getArg(0);
break;
case LFUN_RECONFIGURE:
- BOOST_ASSERT(lyx_view_);
// argument is any additional parameter to the configure.py command
- reconfigure(*lyx_view_, argument);
+ reconfigure(lyx_view_, argument);
break;
case LFUN_HELP_OPEN: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string const arg = argument;
if (arg.empty()) {
setErrorMessage(from_ascii(N_("Missing argument")));
// --- version control -------------------------------
case LFUN_VC_REGISTER:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
- if (!ensureBufferClean(view()))
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
+ if (!ensureBufferClean(view()) || lyx_view_->buffer()->isUnnamed())
break;
if (!lyx_view_->buffer()->lyxvc().inUse()) {
lyx_view_->buffer()->lyxvc().registrer();
break;
case LFUN_VC_CHECK_IN:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (!ensureBufferClean(view()))
break;
if (lyx_view_->buffer()->lyxvc().inUse()
&& !lyx_view_->buffer()->isReadonly()) {
- lyx_view_->buffer()->lyxvc().checkIn();
+ setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkIn()));
reloadBuffer();
}
break;
case LFUN_VC_CHECK_OUT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (!ensureBufferClean(view()))
break;
- if (lyx_view_->buffer()->lyxvc().inUse()
- && lyx_view_->buffer()->isReadonly()) {
- lyx_view_->buffer()->lyxvc().checkOut();
+ if (lyx_view_->buffer()->lyxvc().inUse()) {
+ setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkOut()));
reloadBuffer();
}
break;
case LFUN_VC_REVERT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->lyxvc().revert();
reloadBuffer();
break;
case LFUN_VC_UNDO_LAST:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->lyxvc().undoLast();
reloadBuffer();
break;
// --- lyxserver commands ----------------------------
- case LFUN_SERVER_GET_NAME:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ case LFUN_SERVER_GET_FILENAME:
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
setMessage(from_utf8(lyx_view_->buffer()->absFileName()));
LYXERR(Debug::INFO, "FNAME["
<< lyx_view_->buffer()->absFileName() << ']');
break;
case LFUN_SERVER_GOTO_FILE_ROW: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string file_name;
int row;
istringstream is(argument);
// and get full path
FileName const s = fileSearch(string(), changeExtension(file_name, ".lyx"), "lyx");
// Either change buffer or load the file
- if (theBufferList().exists(s.absFilename()))
- buf = theBufferList().getBuffer(s.absFilename());
+ if (theBufferList().exists(s))
+ buf = theBufferList().getBuffer(s);
else {
buf = lyx_view_->loadDocument(s);
loaded = true;
case LFUN_DIALOG_SHOW_NEW_INSET: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string const name = cmd.getArg(0);
InsetCode code = insetCode(name);
string data = trim(to_utf8(cmd.argument()).substr(name.size()));
case TOC_CODE:
case HYPERLINK_CODE: {
InsetCommandParams p(code);
- data = InsetCommandMailer::params2string(name, p);
+ data = InsetCommand::params2string(name, p);
break;
}
case INCLUDE_CODE: {
// default type is requested
data = "include";
InsetCommandParams p(INCLUDE_CODE, data);
- data = InsetCommandMailer::params2string("include", p);
+ data = InsetCommand::params2string("include", p);
break;
}
case BOX_CODE: {
// \c data == "Boxed" || "Frameless" etc
InsetBoxParams p(data);
- data = InsetBoxMailer::params2string(p);
+ data = InsetBox::params2string(p);
break;
}
case BRANCH_CODE: {
InsetBranchParams p;
- data = InsetBranchMailer::params2string(p);
+ data = InsetBranch::params2string(p);
break;
}
case CITE_CODE: {
InsetCommandParams p(CITE_CODE);
- data = InsetCommandMailer::params2string(name, p);
+ data = InsetCommand::params2string(name, p);
break;
}
case ERT_CODE: {
- data = InsetERTMailer::params2string(InsetCollapsable::Open);
+ data = InsetERT::params2string(InsetCollapsable::Open);
break;
}
case EXTERNAL_CODE: {
InsetExternalParams p;
Buffer const & buffer = *lyx_view_->buffer();
- data = InsetExternalMailer::params2string(p, buffer);
+ data = InsetExternal::params2string(p, buffer);
break;
}
case FLOAT_CODE: {
InsetFloatParams p;
- data = InsetFloatMailer::params2string(p);
+ data = InsetFloat::params2string(p);
break;
}
case LISTINGS_CODE: {
InsetListingsParams p;
- data = InsetListingsMailer::params2string(p);
+ data = InsetListings::params2string(p);
break;
}
case GRAPHICS_CODE: {
InsetGraphicsParams p;
Buffer const & buffer = *lyx_view_->buffer();
- data = InsetGraphicsMailer::params2string(p, buffer);
+ data = InsetGraphics::params2string(p, buffer);
break;
}
case NOTE_CODE: {
InsetNoteParams p;
- data = InsetNoteMailer::params2string(p);
+ data = InsetNote::params2string(p);
+ break;
+ }
+ case SPACE_CODE: {
+ InsetSpaceParams p;
+ data = InsetSpace::params2string(p);
break;
}
case VSPACE_CODE: {
VSpace space;
- data = InsetVSpaceMailer::params2string(space);
+ data = InsetVSpace::params2string(space);
break;
}
case WRAP_CODE: {
InsetWrapParams p;
- data = InsetWrapMailer::params2string(p);
+ data = InsetWrap::params2string(p);
break;
}
default:
}
case LFUN_CITATION_INSERT: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
if (!argument.empty()) {
// we can have one optional argument, delimited by '|'
// citation-insert <key>|<text_before>
icp["key"] = from_utf8(arg);
if (!opt1.empty())
icp["before"] = from_utf8(opt1);
- string icstr = InsetCommandMailer::params2string("citation", icp);
+ string icstr = InsetCommand::params2string("citation", icp);
FuncRequest fr(LFUN_INSET_INSERT, icstr);
dispatch(fr);
} else
}
case LFUN_BUFFER_CHILD_OPEN: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
Buffer * parent = lyx_view_->buffer();
FileName filename = makeAbsPath(argument, parent->filePath());
view()->saveBookmark(false);
Buffer * child = 0;
bool parsed = false;
- if (theBufferList().exists(filename.absFilename())) {
- child = theBufferList().getBuffer(filename.absFilename());
+ if (theBufferList().exists(filename)) {
+ child = theBufferList().getBuffer(filename);
} else {
setMessage(bformat(_("Opening child document %1$s..."),
makeDisplayPath(filename.absFilename())));
break;
}
- case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
- BOOST_ASSERT(lyx_view_);
+ case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
+ LASSERT(lyx_view_, /**/);
lyxrc.cursor_follows_scrollbar = !lyxrc.cursor_follows_scrollbar;
break;
case LFUN_KEYMAP_OFF:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapOn(false);
break;
case LFUN_KEYMAP_PRIMARY:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapPrim();
break;
case LFUN_KEYMAP_SECONDARY:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapSec();
break;
case LFUN_KEYMAP_TOGGLE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().toggleKeyMap();
break;
break;
}
+ case LFUN_COMMAND_ALTERNATIVES: {
+ // argument contains ';'-terminated commands
+ string arg = argument;
+ while (!arg.empty()) {
+ string first;
+ arg = split(arg, first, ';');
+ FuncRequest func(lyxaction.lookupFunc(first));
+ func.origin = cmd.origin;
+ FuncStatus stat = getStatus(func);
+ if (stat.enabled()) {
+ dispatch(func);
+ break;
+ }
+ }
+ break;
+ }
+
case LFUN_CALL: {
FuncRequest func;
- if (LyX::ref().topLevelCmdDef().lock(argument, func)) {
+ if (theTopLevelCmdDef().lock(argument, func)) {
func.origin = cmd.origin;
dispatch(func);
- LyX::ref().topLevelCmdDef().release(argument);
+ theTopLevelCmdDef().release(argument);
} else {
if (func.action == LFUN_UNKNOWN_ACTION) {
// unknown command definition
break;
}
- case LFUN_SET_COLOR: {
- string lyx_name;
- string const x11_name = split(argument, lyx_name, ' ');
- if (lyx_name.empty() || x11_name.empty()) {
- setErrorMessage(from_ascii(N_(
- "Syntax: set-color <lyx_name>"
- " <x11_name>")));
- break;
- }
-
- bool const graphicsbg_changed =
- (lyx_name == lcolor.getLyXName(Color_graphicsbg) &&
- x11_name != lcolor.getX11Name(Color_graphicsbg));
-
- if (!lcolor.setColor(lyx_name, x11_name)) {
- setErrorMessage(
- bformat(_("Set-color \"%1$s\" failed "
- "- color is undefined or "
- "may not be redefined"),
- from_utf8(lyx_name)));
- break;
- }
-
- theApp()->updateColor(lcolor.getFromLyXName(lyx_name));
-
- if (graphicsbg_changed) {
- // FIXME: The graphics cache no longer has a changeDisplay method.
-#if 0
- graphics::GCache::get().changeDisplay(true);
-#endif
- }
- break;
- }
-
case LFUN_MESSAGE:
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
lyx_view_->message(from_utf8(argument));
break;
- case LFUN_EXTERNAL_EDIT: {
- BOOST_ASSERT(lyx_view_);
- FuncRequest fr(action, argument);
- InsetExternal().dispatch(view()->cursor(), fr);
- break;
- }
-
- case LFUN_GRAPHICS_EDIT: {
- FuncRequest fr(action, argument);
- InsetGraphics().dispatch(view()->cursor(), fr);
- break;
- }
-
- case LFUN_ALL_INSETS_TOGGLE: {
- BOOST_ASSERT(lyx_view_);
- string action;
- string const name = split(argument, action, ' ');
- InsetCode const inset_code = insetCode(name);
-
- Cursor & cur = view()->cursor();
- FuncRequest fr(LFUN_INSET_TOGGLE, action);
-
- Inset & inset = lyx_view_->buffer()->inset();
- InsetIterator it = inset_iterator_begin(inset);
- InsetIterator const end = inset_iterator_end(inset);
- for (; it != end; ++it) {
- if (!it->asInsetMath()
- && (inset_code == NO_CODE
- || inset_code == it->lyxCode())) {
- Cursor tmpcur = cur;
- tmpcur.pushBackward(*it);
- it->dispatch(tmpcur, fr);
- }
- }
- updateFlags = Update::Force | Update::FitCursor;
- break;
- }
-
case LFUN_BUFFER_LANGUAGE: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer & buffer = *lyx_view_->buffer();
Language const * oldL = buffer.params().language;
Language const * newL = languages.getLanguage(argument);
Buffer defaults(fname);
istringstream ss(argument);
- Lexer lex(0,0);
+ Lexer lex;
lex.setStream(ss);
int const unknown_tokens = defaults.readHeader(lex);
}
case LFUN_BUFFER_PARAMS_APPLY: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
Cursor & cur = view()->cursor();
cur.recordUndoFullDocument();
istringstream ss(argument);
- Lexer lex(0,0);
+ Lexer lex;
lex.setStream(ss);
int const unknown_tokens = buffer->readHeader(lex);
}
case LFUN_LAYOUT_MODULES_CLEAR: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().clearLayoutModules();
buffer->params().makeDocumentClass();
}
case LFUN_LAYOUT_MODULE_ADD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().addLayoutModule(argument);
buffer->params().makeDocumentClass();
}
case LFUN_TEXTCLASS_APPLY: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- if (!loadLayoutFile(argument, buffer->filePath()))
+ if (!loadLayoutFile(argument, buffer->temppath()) &&
+ !loadLayoutFile(argument, buffer->filePath()))
break;
LayoutFile const * old_layout = buffer->params().baseClass();
break;
//Save the old, possibly modular, layout for use in conversion.
- DocumentClass * oldDocClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldDocClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().setBaseClass(argument);
buffer->params().makeDocumentClass();
}
case LFUN_LAYOUT_RELOAD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
LayoutFileIndex bc = buffer->params().baseClassID();
LayoutFileList::get().reset(bc);
+ buffer->params().setBaseClass(bc);
buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
}
case LFUN_TEXTCLASS_LOAD:
+ loadLayoutFile(argument, lyx_view_->buffer()->temppath()) ||
loadLayoutFile(argument, lyx_view_->buffer()->filePath());
break;
break;
case LFUN_BOOKMARK_CLEAR:
- LyX::ref().session().bookmarks().clear();
+ theSession().bookmarks().clear();
break;
default:
- BOOST_ASSERT(theApp());
+ LASSERT(theApp(), /**/);
// Let the frontend dispatch its own actions.
if (theApp()->dispatch(cmd))
// Nothing more to do.
return;
+ // Everything below is only for active lyx_view_
+ if (lyx_view_ == 0)
+ break;
+
+ // Start an undo group. This may be needed for
+ // some stuff like inset-apply on labels.
+ if (lyx_view_->view())
+ view()->cursor().beginUndoGroup();
+
// Let the current LyXView dispatch its own actions.
- BOOST_ASSERT(lyx_view_);
if (lyx_view_->dispatch(cmd)) {
- if (lyx_view_->view())
+ if (lyx_view_->view()) {
updateFlags = lyx_view_->view()->cursor().result().update();
+ view()->cursor().endUndoGroup();
+ }
break;
}
- BOOST_ASSERT(lyx_view_->view());
+ LASSERT(lyx_view_->view(), /**/);
+
// Let the current BufferView dispatch its own actions.
if (view()->dispatch(cmd)) {
// The BufferView took care of its own updates if needed.
updateFlags = Update::None;
+ view()->cursor().endUndoGroup();
break;
}
view()->cursor().fixIfBroken();
}
+ // we assume here that the buffer view has not
+ // changed since the beginUndoGroup.
+ view()->cursor().endUndoGroup();
+
// update completion. We do it here and not in
// processKeySym to avoid another redraw just for a
// changed inline completion
&& !lyxaction.funcHasFlag(action, LyXAction::ReadOnly))
lyx_view_->buffer()->markDirty();
- //Do we have a selection?
+ // Do we have a selection?
theSelection().haveSelection(view()->cursor().selection());
+
+ // update gui
+ lyx_view_->restartCursor();
}
}
if (lyx_view_) {
}
-docstring const LyXFunc::viewStatusMessage()
+docstring LyXFunc::viewStatusMessage()
{
// When meta-fake key is pressed, show the key sequence so far + "M-".
if (wasMetaKey())
if (keyseq.length() > 0 && !keyseq.deleted())
return keyseq.printOptions(true);
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
if (!lyx_view_->buffer())
return _("Welcome to LyX!");
BufferView * LyXFunc::view() const
{
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
return lyx_view_->view();
}
}
-void LyXFunc::updateLayout(DocumentClass * oldlayout,Buffer * buffer)
+void LyXFunc::updateLayout(DocumentClass const * const oldlayout, Buffer * buffer)
{
lyx_view_->message(_("Converting document to new document class..."));
case LyXRC::RC_BIBTEX_COMMAND:
case LyXRC::RC_BINDFILE:
case LyXRC::RC_CHECKLASTFILES:
+ case LyXRC::RC_COMPLETION_CURSOR_TEXT:
case LyXRC::RC_COMPLETION_INLINE_DELAY:
case LyXRC::RC_COMPLETION_INLINE_DOTS:
case LyXRC::RC_COMPLETION_INLINE_MATH:
case LyXRC::RC_CUSTOM_EXPORT_FORMAT:
case LyXRC::RC_DATE_INSERT_FORMAT:
case LyXRC::RC_DEFAULT_LANGUAGE:
+ case LyXRC::RC_GUI_LANGUAGE:
case LyXRC::RC_DEFAULT_PAPERSIZE:
case LyXRC::RC_DEFFILE:
case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
case LyXRC::RC_EXAMPLEPATH:
case LyXRC::RC_FONT_ENCODING:
case LyXRC::RC_FORMAT:
+ case LyXRC::RC_GROUP_LAYOUTS:
case LyXRC::RC_INDEX_COMMAND:
+ case LyXRC::RC_NOMENCL_COMMAND:
case LyXRC::RC_INPUT:
case LyXRC::RC_KBMAP:
case LyXRC::RC_KBMAP_PRIMARY:
case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
case LyXRC::RC_LANGUAGE_PACKAGE:
case LyXRC::RC_LANGUAGE_USE_BABEL:
+ case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT:
case LyXRC::RC_MACRO_EDIT_STYLE:
case LyXRC::RC_MAKE_BACKUP:
case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
case LyXRC::RC_SERVERPIPE:
case LyXRC::RC_SET_COLOR:
case LyXRC::RC_SHOW_BANNER:
+ case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
case LyXRC::RC_SPELL_COMMAND:
case LyXRC::RC_TEMPDIRPATH:
case LyXRC::RC_TEMPLATEPATH: