#include "LyXFunc.h"
+#include "LayoutFile.h"
#include "BranchList.h"
#include "buffer_funcs.h"
#include "Buffer.h"
#include "Row.h"
#include "Server.h"
#include "Session.h"
-#include "TextClassList.h"
#include "insets/InsetBox.h"
#include "insets/InsetBranch.h"
#include "insets/InsetGraphics.h"
#include "insets/InsetInclude.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::setLyXView(LyXView * lv)
{
- if (!quitting && lyx_view_ && lyx_view_->view() && lyx_view_ != lv)
+ if (lyx_view_ && lyx_view_->view() && lyx_view_ != lv)
// save current selection to the selection buffer to allow
// middle-button paste in another window
cap::saveSelection(lyx_view_->view()->cursor());
}
-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
view()->processUpdateFlags(Update::FitCursor);
}
-
+//FIXME: bookmark handling is a frontend issue. This code should be transferred
+// to GuiView and be GuiView and be window dependent.
void LyXFunc::gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer)
{
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
if (!LyX::ref().session().bookmarks().isValid(idx))
return;
BookmarksSection::Bookmark const & bm = LyX::ref().session().bookmarks().bookmark(idx);
- BOOST_ASSERT(!bm.filename.empty());
+ LASSERT(!bm.filename.empty(), /**/);
string const file = bm.filename.absFilename();
// if the file is not opened, open it.
if (!theBufferList().exists(file)) {
if (keysym.isModifier()) {
LYXERR(Debug::KEY, "isModifier true");
- lyx_view_->restartCursor();
+ if (lyx_view_)
+ lyx_view_->restartCursor();
return;
}
}
} else {
dispatch(func);
+ if (!lyx_view_)
+ return;
}
- lyx_view_->restartCursor();
+ 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")));
// FIXME: these cases should be hidden in GuiView::getStatus().
case LFUN_DIALOG_TOGGLE:
case LFUN_DIALOG_SHOW:
+ case LFUN_UI_TOGGLE:
case LFUN_DIALOG_UPDATE:
- if (cmd.argument() == "prefs"
- || cmd.argument() == "aboutlyx")
- enable = true;
- else if (lyx_view_)
+ // FIXME: add special handling for about and prefs dialogs here
+ // which do not depend on GuiView.
+ if (lyx_view_)
return lyx_view_->getStatus(cmd);
else
enable = false;
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;
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:
}
-void loadTextClass(string const & name)
+bool loadLayoutFile(string const & name, string const & buf_path)
{
- pair<bool, textclass_type> const tc_pair =
- textclasslist.numberOfClass(name);
-
- if (!tc_pair.first) {
+ if (!LayoutFileList::get().haveClass(name)) {
lyxerr << "Document class \"" << name
<< "\" does not exist."
<< endl;
- return;
+ return false;
}
- textclass_type const tc = tc_pair.second;
-
- if (!textclasslist[tc].load()) {
- docstring s = bformat(_("The document class %1$s."
- "could not be loaded."),
- from_utf8(textclasslist[tc].name()));
+ LayoutFile & tc = LayoutFileList::get()[name];
+ if (!tc.load(buf_path)) {
+ docstring s = bformat(_("The document class %1$s "
+ "could not be loaded."), from_utf8(name));
Alert::error(_("Could not load class"), s);
+ return false;
}
+ return true;
}
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;
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:
- closeBuffer();
+ 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());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (!ensureBufferClean(view()))
break;
if (!lyx_view_->buffer()->lyxvc().inUse()) {
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()
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()
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());
+ 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);
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);
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;
}
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_);
+ LASSERT(lyx_view_, /**/);
string action;
string const name = split(argument, action, ' ');
InsetCode const inset_code = insetCode(name);
}
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_);
- biblio::CiteEngine const oldEngine =
- lyx_view_->buffer()->params().getEngine();
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
-
- TextClassPtr oldClass = buffer->params().getTextClassPtr();
-
+ DocumentClass * 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);
updateLayout(oldClass, buffer);
- biblio::CiteEngine const newEngine =
- lyx_view_->buffer()->params().getEngine();
-
- if (oldEngine != newEngine) {
- FuncRequest fr(LFUN_INSET_REFRESH);
-
- 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->lyxCode() == CITE_CODE)
- it->dispatch(cur, fr);
- }
-
updateFlags = Update::Force | Update::FitCursor;
- // We are here most certainaly because of a change in the document
- // It is then better to make sure that all dialogs are in sync
- // with current document settings. LyXView::restartCursor() achieve this.
+ // We are most certainly here because of a change in the document
+ // It is then better to make sure that all dialogs are in sync with
+ // current document settings. LyXView::restartCursor() achieve this.
lyx_view_->restartCursor();
break;
}
case LFUN_LAYOUT_MODULES_CLEAR: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- TextClassPtr oldClass = buffer->params().getTextClassPtr();
+ DocumentClass * oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().clearLayoutModules();
- buffer->params().makeTextClass();
+ buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
}
case LFUN_LAYOUT_MODULE_ADD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- TextClassPtr oldClass = buffer->params().getTextClassPtr();
+ DocumentClass * oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().addLayoutModule(argument);
- buffer->params().makeTextClass();
+ buffer->params().makeDocumentClass();
updateLayout(oldClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
}
case LFUN_TEXTCLASS_APPLY: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- loadTextClass(argument);
-
- pair<bool, textclass_type> const tc_pair =
- textclasslist.numberOfClass(argument);
-
- if (!tc_pair.first)
+ if (!loadLayoutFile(argument, buffer->temppath()) &&
+ !loadLayoutFile(argument, buffer->filePath()))
break;
- textclass_type const old_class = buffer->params().getBaseClass();
- textclass_type const new_class = tc_pair.second;
+ LayoutFile const * old_layout = buffer->params().baseClass();
+ LayoutFile const * new_layout = &(LayoutFileList::get()[argument]);
- if (old_class == new_class)
+ if (old_layout == new_layout)
// nothing to do
break;
//Save the old, possibly modular, layout for use in conversion.
- TextClassPtr oldClass = buffer->params().getTextClassPtr();
+ DocumentClass * oldDocClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
- buffer->params().setBaseClass(new_class);
- buffer->params().makeTextClass();
- updateLayout(oldClass, buffer);
+ buffer->params().setBaseClass(argument);
+ buffer->params().makeDocumentClass();
+ updateLayout(oldDocClass, buffer);
updateFlags = Update::Force | Update::FitCursor;
break;
}
case LFUN_LAYOUT_RELOAD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- TextClassPtr oldClass = buffer->params().getTextClassPtr();
- textclass_type const tc = buffer->params().getBaseClass();
- textclasslist.reset(tc);
- buffer->params().setBaseClass(tc);
- buffer->params().makeTextClass();
+ DocumentClass * 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;
break;
}
case LFUN_TEXTCLASS_LOAD:
- loadTextClass(argument);
+ loadLayoutFile(argument, lyx_view_->buffer()->temppath()) ||
+ loadLayoutFile(argument, lyx_view_->buffer()->filePath());
break;
case LFUN_LYXRC_APPLY: {
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;
+
// Let the current LyXView dispatch its own actions.
- BOOST_ASSERT(lyx_view_);
if (lyx_view_->dispatch(cmd)) {
if (lyx_view_->view())
updateFlags = lyx_view_->view()->cursor().result().update();
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.
}
// Let the current Cursor dispatch its own actions.
+ Cursor old = view()->cursor();
view()->cursor().getPos(cursorPosBeforeDispatchX_,
cursorPosBeforeDispatchY_);
view()->cursor().dispatch(cmd);
- updateFlags = view()->cursor().result().update();
- if (!view()->cursor().result().dispatched()) {
- // No update needed in this case (e.g. when reaching
- // top of document.
- updateFlags = Update::None;
+
+ // notify insets we just left
+ if (view()->cursor() != old) {
+ old.fixIfBroken();
+ bool badcursor = notifyCursorLeaves(old, view()->cursor());
+ if (badcursor)
+ view()->cursor().fixIfBroken();
+ }
+
+ // update completion. We do it here and not in
+ // processKeySym to avoid another redraw just for a
+ // changed inline completion
+ if (cmd.origin == FuncRequest::KEYBOARD) {
+ if (cmd.action == LFUN_SELF_INSERT)
+ lyx_view_->updateCompletion(view()->cursor(), true, true);
+ else if (cmd.action == LFUN_CHAR_DELETE_BACKWARD)
+ lyx_view_->updateCompletion(view()->cursor(), false, true);
+ else
+ lyx_view_->updateCompletion(view()->cursor(), false, false);
}
+
+ updateFlags = view()->cursor().result().update();
}
if (lyx_view_ && lyx_view_->buffer()) {
&& !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 (!quitting && lyx_view_) {
+ if (lyx_view_) {
// Some messages may already be translated, so we cannot use _()
sendDispatchMessage(translateIfPossible(getMessage()), cmd);
}
}
-void LyXFunc::closeBuffer()
-{
- // goto bookmark to update bookmark pit.
- for (size_t i = 0; i < LyX::ref().session().bookmarks().size(); ++i)
- gotoBookmark(i+1, false, false);
-
- lyx_view_->closeBuffer();
-}
-
-
void LyXFunc::reloadBuffer()
{
FileName filename = lyx_view_->buffer()->fileName();
}
-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(TextClassPtr const & oldlayout,
- Buffer * buffer)
+void LyXFunc::updateLayout(DocumentClass * oldlayout,Buffer * buffer)
{
lyx_view_->message(_("Converting document to new document class..."));
StableDocIterator backcur(view()->cursor());
ErrorList & el = buffer->errorList("Class Switch");
cap::switchBetweenClasses(
- oldlayout, buffer->params().getTextClassPtr(),
+ oldlayout, buffer->params().documentClassPtr(),
static_cast<InsetText &>(buffer->inset()), el);
view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
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_COMPLETION_INLINE_TEXT:
+ case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
+ case LyXRC::RC_COMPLETION_POPUP_DELAY:
+ case LyXRC::RC_COMPLETION_POPUP_MATH:
+ case LyXRC::RC_COMPLETION_POPUP_TEXT:
case LyXRC::RC_USELASTFILEPOS:
case LyXRC::RC_LOADSESSION:
case LyXRC::RC_CHKTEX_COMMAND:
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_INPUT:
case LyXRC::RC_KBMAP:
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:
case LyXRC::RC_USE_SPELL_LIB:
case LyXRC::RC_VIEWDVI_PAPEROPTION:
case LyXRC::RC_SORT_LAYOUTS:
+ case LyXRC::RC_FULL_SCREEN_LIMIT:
+ case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
+ case LyXRC::RC_FULL_SCREEN_TABBAR:
+ case LyXRC::RC_FULL_SCREEN_TOOLBARS:
+ case LyXRC::RC_FULL_SCREEN_WIDTH:
+ case LyXRC::RC_VISUAL_CURSOR:
case LyXRC::RC_VIEWER:
case LyXRC::RC_LAST:
break;