lyx_mirror/src/frontends/LyXView.cpp

451 lines
9.4 KiB
C++
Raw Normal View History

/**
* \file LyXView.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bj<EFBFBD>nnes
* \author John Levon
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "LyXView.h"
#include "Dialogs.h"
#include "Toolbars.h"
#include "WorkArea.h"
#include "Gui.h"
#include "Buffer.h"
Polish the Toc and labels updating when loading a child document. Fix Bug 3860: Toc crash when loading a child documents. * BufferView::loadLyXFile(): simplify, transfer last part to LyXView::loadLyXFile(). Change return value to Buffer created by load (or 0 if none). Ultimately, this should all be moved to buffer_funcs.cpp, as it is no longer needed here. * Buffer::setParentName(): small fix to avoid recursive includes. * LyXView: - setBuffer(): properly update the labels and the Toc if this is [LOAD Child Document] command. Move buffer connection and disconnection, simplifying earlier code. - loadLyXFile(): get some code from BufferView::loadLyXFile() and from LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case. There's a lot of overlap with setBuffer() here. This needs cleaning. * LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if the document is being opened by LyX itself rather than the user (as on View>DVI, for example). * LyX: adapt to loadLyXFile() API changes. * insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling loadLyXFile() directly. Make use of new optional argument. With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
2007-06-19 14:56:52 +00:00
#include "buffer_funcs.h"
#include "BufferList.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "bufferview_funcs.h"
#include "Cursor.h"
#include "debug.h"
#include "ErrorList.h"
#include "FuncRequest.h"
#include "gettext.h"
#include "Intl.h"
#include "callback.h"
Polish the Toc and labels updating when loading a child document. Fix Bug 3860: Toc crash when loading a child documents. * BufferView::loadLyXFile(): simplify, transfer last part to LyXView::loadLyXFile(). Change return value to Buffer created by load (or 0 if none). Ultimately, this should all be moved to buffer_funcs.cpp, as it is no longer needed here. * Buffer::setParentName(): small fix to avoid recursive includes. * LyXView: - setBuffer(): properly update the labels and the Toc if this is [LOAD Child Document] command. Move buffer connection and disconnection, simplifying earlier code. - loadLyXFile(): get some code from BufferView::loadLyXFile() and from LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case. There's a lot of overlap with setBuffer() here. This needs cleaning. * LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if the document is being opened by LyX itself rather than the user (as on View>DVI, for example). * LyX: adapt to loadLyXFile() API changes. * insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling loadLyXFile() directly. Make use of new optional argument. With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
2007-06-19 14:56:52 +00:00
#include "LyX.h"
#include "LyXFunc.h"
#include "LyXRC.h"
#include "Text.h"
#include "MenuBackend.h"
#include "Paragraph.h"
#include "support/lstrings.h"
#include "support/filetools.h" // OnlyFilename()
#include "support/Timeout.h"
#include <boost/bind.hpp>
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
using std::endl;
using std::string;
namespace lyx {
using support::bformat;
using support::FileName;
using support::makeDisplayPath;
using support::onlyFilename;
namespace frontend {
docstring current_layout;
LyXView::LyXView(int id)
: toolbars_(new Toolbars(*this)),
autosave_timeout_(new Timeout(5000)),
dialogs_(new Dialogs(*this)),
id_(id)
{
// Start autosave timer
if (lyxrc.autosave) {
autosave_timeout_->timeout.connect(boost::bind(&LyXView::autoSave, this));
autosave_timeout_->setTimeout(lyxrc.autosave * 1000);
autosave_timeout_->start();
}
}
LyXView::~LyXView()
{
disconnectBuffer();
disconnectBufferView();
}
Buffer * LyXView::buffer()
{
WorkArea * work_area = currentWorkArea();
if (work_area)
return &work_area->bufferView().buffer();
return 0;
}
Buffer const * LyXView::buffer() const
{
WorkArea const * work_area = currentWorkArea();
if (work_area)
return &work_area->bufferView().buffer();
return 0;
}
void LyXView::setBuffer(Buffer * newBuffer)
{
BOOST_ASSERT(newBuffer);
busy(true);
WorkArea * wa = workArea(*newBuffer);
if (wa == 0) {
updateLabels(*newBuffer->getMasterBuffer());
wa = addWorkArea(*newBuffer);
} else {
//Disconnect the old buffer...there's no new one.
disconnectBuffer();
}
connectBuffer(*newBuffer);
connectBufferView(wa->bufferView());
setCurrentWorkArea(wa);
busy(false);
}
Buffer * LyXView::loadLyXFile(FileName const & filename, bool tolastfiles)
{
busy(true);
Polish the Toc and labels updating when loading a child document. Fix Bug 3860: Toc crash when loading a child documents. * BufferView::loadLyXFile(): simplify, transfer last part to LyXView::loadLyXFile(). Change return value to Buffer created by load (or 0 if none). Ultimately, this should all be moved to buffer_funcs.cpp, as it is no longer needed here. * Buffer::setParentName(): small fix to avoid recursive includes. * LyXView: - setBuffer(): properly update the labels and the Toc if this is [LOAD Child Document] command. Move buffer connection and disconnection, simplifying earlier code. - loadLyXFile(): get some code from BufferView::loadLyXFile() and from LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case. There's a lot of overlap with setBuffer() here. This needs cleaning. * LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if the document is being opened by LyX itself rather than the user (as on View>DVI, for example). * LyX: adapt to loadLyXFile() API changes. * insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling loadLyXFile() directly. Make use of new optional argument. With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
2007-06-19 14:56:52 +00:00
Buffer * newBuffer = checkAndLoadLyXFile(filename);
Polish the Toc and labels updating when loading a child document. Fix Bug 3860: Toc crash when loading a child documents. * BufferView::loadLyXFile(): simplify, transfer last part to LyXView::loadLyXFile(). Change return value to Buffer created by load (or 0 if none). Ultimately, this should all be moved to buffer_funcs.cpp, as it is no longer needed here. * Buffer::setParentName(): small fix to avoid recursive includes. * LyXView: - setBuffer(): properly update the labels and the Toc if this is [LOAD Child Document] command. Move buffer connection and disconnection, simplifying earlier code. - loadLyXFile(): get some code from BufferView::loadLyXFile() and from LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case. There's a lot of overlap with setBuffer() here. This needs cleaning. * LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if the document is being opened by LyX itself rather than the user (as on View>DVI, for example). * LyX: adapt to loadLyXFile() API changes. * insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling loadLyXFile() directly. Make use of new optional argument. With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
2007-06-19 14:56:52 +00:00
if (!newBuffer) {
Polish the Toc and labels updating when loading a child document. Fix Bug 3860: Toc crash when loading a child documents. * BufferView::loadLyXFile(): simplify, transfer last part to LyXView::loadLyXFile(). Change return value to Buffer created by load (or 0 if none). Ultimately, this should all be moved to buffer_funcs.cpp, as it is no longer needed here. * Buffer::setParentName(): small fix to avoid recursive includes. * LyXView: - setBuffer(): properly update the labels and the Toc if this is [LOAD Child Document] command. Move buffer connection and disconnection, simplifying earlier code. - loadLyXFile(): get some code from BufferView::loadLyXFile() and from LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case. There's a lot of overlap with setBuffer() here. This needs cleaning. * LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if the document is being opened by LyX itself rather than the user (as on View>DVI, for example). * LyX: adapt to loadLyXFile() API changes. * insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling loadLyXFile() directly. Make use of new optional argument. With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
2007-06-19 14:56:52 +00:00
message(_("Document not loaded."));
updateStatusBar();
busy(false);
return 0;
}
WorkArea * wa = workArea(*newBuffer);
if (wa == 0)
wa = addWorkArea(*newBuffer);
// scroll to the position when the file was last closed
if (lyxrc.use_lastfilepos) {
pit_type pit;
pos_type pos;
boost::tie(pit, pos) = LyX::ref().session().lastFilePos().load(filename);
// if successfully move to pit (returned par_id is not zero),
// update metrics and reset font
wa->bufferView().moveToPosition(pit, pos, 0, 0);
}
if (tolastfiles)
LyX::ref().session().lastFiles().add(filename);
busy(false);
return newBuffer;
}
void LyXView::connectBuffer(Buffer & buf)
{
This commit transfer the ErrorList handling from LyXView to Buffer. It also removes the need for the error signal and simplify the kerbel <-> frontend communication. I think it should speed-up _significantly_ the latex compilation for example in case of problematic files. TODO 1: All occurrences of "LyXView::showErrorList()" in the "kernel" should be replaced by a boost signal emission (Buffer::errors()). This signal is already connected to this showErrorList() slot. TODO 2: The ErrorList mechanism is used wrongly in a number of place, most notably in "Converter.C". Instead of replacing the ErrorList in the "Buffer" class, the "Converter" class should maintain its own list instead and connect directly to the LyXView::showErrorList() slot. Buffer: * errorList_: new private member and associated access methods. * setErrorList(): new accessor method. * addError(): apend an error to the errorList_. * error(): deleted. * errors(): new boost signal, unused for now. Shall be used instead of LyXView::showErrorList(). LyXView: * getErrorList(), addError(), errorlist_, errorConnection_: deleted. * errorsConnection_: new boost connection for the Buffer::errors() signal. lyx_main.C: * LyX::exec2(): manually print all errors. BufferView.h: remove unneeded ErrorList forward declaration. BufferView::pimpl::menuInsertLyXFile(): delete Buffer::error() connection and add a FIXME comment text.C: Use Buffer::addError() instead of Buffer::error() signal emission. ControlErrorList.C: get the ErrorList from the Buffer instead of LyXView git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14467 a592a061-630c-0410-9148-cb99ea01b6c8
2006-07-15 22:43:37 +00:00
if (errorsConnection_.connected())
disconnectBuffer();
bufferStructureChangedConnection_ =
buf.getMasterBuffer()->structureChanged.connect(
boost::bind(&LyXView::updateToc, this));
bufferEmbeddingChangedConnection_ =
buf.embeddingChanged.connect(
boost::bind(&LyXView::updateEmbeddedFiles, this));
This commit transfer the ErrorList handling from LyXView to Buffer. It also removes the need for the error signal and simplify the kerbel <-> frontend communication. I think it should speed-up _significantly_ the latex compilation for example in case of problematic files. TODO 1: All occurrences of "LyXView::showErrorList()" in the "kernel" should be replaced by a boost signal emission (Buffer::errors()). This signal is already connected to this showErrorList() slot. TODO 2: The ErrorList mechanism is used wrongly in a number of place, most notably in "Converter.C". Instead of replacing the ErrorList in the "Buffer" class, the "Converter" class should maintain its own list instead and connect directly to the LyXView::showErrorList() slot. Buffer: * errorList_: new private member and associated access methods. * setErrorList(): new accessor method. * addError(): apend an error to the errorList_. * error(): deleted. * errors(): new boost signal, unused for now. Shall be used instead of LyXView::showErrorList(). LyXView: * getErrorList(), addError(), errorlist_, errorConnection_: deleted. * errorsConnection_: new boost connection for the Buffer::errors() signal. lyx_main.C: * LyX::exec2(): manually print all errors. BufferView.h: remove unneeded ErrorList forward declaration. BufferView::pimpl::menuInsertLyXFile(): delete Buffer::error() connection and add a FIXME comment text.C: Use Buffer::addError() instead of Buffer::error() signal emission. ControlErrorList.C: get the ErrorList from the Buffer instead of LyXView git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14467 a592a061-630c-0410-9148-cb99ea01b6c8
2006-07-15 22:43:37 +00:00
errorsConnection_ =
buf.errors.connect(
boost::bind(&LyXView::showErrorList, this, _1));
messageConnection_ =
buf.message.connect(
boost::bind(&LyXView::message, this, _1));
busyConnection_ =
buf.busy.connect(
boost::bind(&LyXView::busy, this, _1));
titleConnection_ =
buf.updateTitles.connect(
boost::bind(&LyXView::updateWindowTitle, this));
timerConnection_ =
buf.resetAutosaveTimers.connect(
boost::bind(&LyXView::resetAutosaveTimer, this));
readonlyConnection_ =
buf.readonly.connect(
boost::bind(&LyXView::showReadonly, this, _1));
}
void LyXView::disconnectBuffer()
{
errorsConnection_.disconnect();
bufferStructureChangedConnection_.disconnect();
bufferEmbeddingChangedConnection_.disconnect();
messageConnection_.disconnect();
busyConnection_.disconnect();
titleConnection_.disconnect();
timerConnection_.disconnect();
readonlyConnection_.disconnect();
layout_changed_connection_.disconnect();
}
void LyXView::connectBufferView(BufferView & bv)
{
message_connection_ = bv.message.connect(
boost::bind(&LyXView::message, this, _1));
show_dialog_connection_ = bv.showDialog.connect(
boost::bind(&LyXView::showDialog, this, _1));
show_dialog_with_data_connection_ = bv.showDialogWithData.connect(
boost::bind(&LyXView::showDialogWithData, this, _1, _2));
show_inset_dialog_connection_ = bv.showInsetDialog.connect(
boost::bind(&LyXView::showInsetDialog, this, _1, _2, _3));
update_dialog_connection_ = bv.updateDialog.connect(
boost::bind(&LyXView::updateDialog, this, _1, _2));
layout_changed_connection_ = bv.layoutChanged.connect(
boost::bind(&Toolbars::setLayout, toolbars_.get(), _1));
}
void LyXView::disconnectBufferView()
{
message_connection_.disconnect();
show_dialog_connection_.disconnect();
show_dialog_with_data_connection_.disconnect();
show_inset_dialog_connection_.disconnect();
update_dialog_connection_.disconnect();
}
This commit creates a error_lists map member inside the Buffer class. I had no choice but to use string for the map key. This is because the only information that could be passed to the controller is a string. With this new architecture, persistent error lists are now possible. * Buffer - errorList_, addError(), : deleted - std::map<std::string, ErrorList> errorLists_ : new member - errorList(std::string const & type): associated accessors * buffer_funcs.C - bufferErrors(Buffer const & buf, TeXErrors const & terr): now needs a third errorList argument - bufferErrors(Buffer const & buf, ErrorList const & el): deleted. * Converter - convert(): now needs an ErrorList argument instead of filling the Buffer errorList member directly. - runLaTeX(): ditto - scanLog(): ditto * CutAndPaste.C - pasteParagraphList(): ditto - pasteSelection(): ditto * lyxtext.h/text.C - readParagraph(): ditto - LyXText::read(): ditto * importer: - Importer::Import(): ditto * BufferView_pimpl.C - loadLyXFile(): send the Buffer::errors() signal instead of calling LyXView::showErrorList() directly. * exporter.C - Export(): send the Buffer::errors() signal instead of calling LyXView::showErrorList() directly in lyxfunc.C * ControlErrorList.C - initialiseParams(): translation operation transfered here from LyXView::showErrorList(). * LyXView.C - LoadLyXFile(): add a showErrorList("Parse") call. - showErrorList(): simplified due to code transferred to the ControlErrorList. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14652 a592a061-630c-0410-9148-cb99ea01b6c8
2006-08-13 16:16:43 +00:00
void LyXView::showErrorList(string const & error_type)
{
This commit creates a error_lists map member inside the Buffer class. I had no choice but to use string for the map key. This is because the only information that could be passed to the controller is a string. With this new architecture, persistent error lists are now possible. * Buffer - errorList_, addError(), : deleted - std::map<std::string, ErrorList> errorLists_ : new member - errorList(std::string const & type): associated accessors * buffer_funcs.C - bufferErrors(Buffer const & buf, TeXErrors const & terr): now needs a third errorList argument - bufferErrors(Buffer const & buf, ErrorList const & el): deleted. * Converter - convert(): now needs an ErrorList argument instead of filling the Buffer errorList member directly. - runLaTeX(): ditto - scanLog(): ditto * CutAndPaste.C - pasteParagraphList(): ditto - pasteSelection(): ditto * lyxtext.h/text.C - readParagraph(): ditto - LyXText::read(): ditto * importer: - Importer::Import(): ditto * BufferView_pimpl.C - loadLyXFile(): send the Buffer::errors() signal instead of calling LyXView::showErrorList() directly. * exporter.C - Export(): send the Buffer::errors() signal instead of calling LyXView::showErrorList() directly in lyxfunc.C * ControlErrorList.C - initialiseParams(): translation operation transfered here from LyXView::showErrorList(). * LyXView.C - LoadLyXFile(): add a showErrorList("Parse") call. - showErrorList(): simplified due to code transferred to the ControlErrorList. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14652 a592a061-630c-0410-9148-cb99ea01b6c8
2006-08-13 16:16:43 +00:00
ErrorList & el = buffer()->errorList(error_type);
if (!el.empty()) {
getDialogs().show("errorlist", error_type);
}
}
void LyXView::showDialog(string const & name)
{
getDialogs().show(name);
}
void LyXView::showDialogWithData(string const & name, string const & data)
{
getDialogs().show(name, data);
}
void LyXView::showInsetDialog(string const & name, string const & data,
Inset * inset)
{
getDialogs().show(name, data, inset);
}
void LyXView::updateDialog(string const & name, string const & data)
{
if (getDialogs().visible(name))
getDialogs().update(name, data);
}
void LyXView::showReadonly(bool)
{
updateWindowTitle();
getDialogs().updateBufferDependent(false);
}
BufferView * LyXView::view()
{
WorkArea * wa = currentWorkArea();
return wa? &wa->bufferView() : 0;
}
void LyXView::updateToc()
{
updateDialog("toc", "");
}
void LyXView::updateEmbeddedFiles()
{
updateDialog("embedding", "");
}
void LyXView::updateToolbars()
{
WorkArea * wa = currentWorkArea();
if (wa) {
bool const math =
wa->bufferView().cursor().inMathed();
bool const table =
lyx::getStatus(FuncRequest(LFUN_LAYOUT_TABULAR)).enabled();
bool const review =
lyx::getStatus(FuncRequest(LFUN_CHANGES_TRACK)).enabled() &&
lyx::getStatus(FuncRequest(LFUN_CHANGES_TRACK)).onoff(true);
toolbars_->update(math, table, review);
} else
toolbars_->update(false, false, false);
// update redaonly status of open dialogs.
getDialogs().checkStatus();
}
ToolbarInfo * LyXView::getToolbarInfo(string const & name)
{
return toolbars_->getToolbarInfo(name);
}
void LyXView::toggleToolbarState(string const & name, bool allowauto)
{
// it is possible to get current toolbar status like this,...
// but I decide to obey the order of ToolbarBackend::flags
// and disregard real toolbar status.
// toolbars_->saveToolbarInfo();
//
// toggle state on/off/auto
toolbars_->toggleToolbarState(name, allowauto);
// update toolbar
updateToolbars();
}
void LyXView::autoSave()
{
LYXERR(Debug::INFO) << "Running autoSave()" << endl;
if (buffer())
lyx::autoSave(view());
}
void LyXView::resetAutosaveTimer()
{
if (lyxrc.autosave)
autosave_timeout_->restart();
}
void LyXView::updateLayoutChoice()
{
// Don't show any layouts without a buffer
if (!buffer()) {
toolbars_->clearLayoutList();
return;
}
// Update the layout display
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree. Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc. This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added. The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
if (toolbars_->updateLayoutList(buffer()->params().getTextClass_ptr())) {
current_layout = buffer()->params().getTextClass().defaultLayoutName();
}
docstring const & layout = currentWorkArea()->bufferView().cursor().
innerParagraph().layout()->name();
if (layout != current_layout) {
toolbars_->setLayout(layout);
current_layout = layout;
}
}
void LyXView::updateWindowTitle()
{
docstring maximize_title = from_ascii("LyX");
docstring minimize_title = from_ascii("LyX");
Buffer * buf = buffer();
if (buf) {
string const cur_title = buf->fileName();
if (!cur_title.empty()) {
maximize_title += ": " + makeDisplayPath(cur_title, 30);
minimize_title = lyx::from_utf8(onlyFilename(cur_title));
if (!buf->isClean()) {
maximize_title += _(" (changed)");
minimize_title += char_type('*');
}
if (buf->isReadonly())
maximize_title += _(" (read only)");
}
}
setWindowTitle(maximize_title, minimize_title);
}
void LyXView::dispatch(FuncRequest const & cmd)
{
string const argument = to_utf8(cmd.argument());
switch(cmd.action) {
case LFUN_BUFFER_SWITCH:
setBuffer(theBufferList().getBuffer(to_utf8(cmd.argument())));
break;
default:
theLyXFunc().setLyXView(this);
lyx::dispatch(cmd);
}
}
Buffer const * const LyXView::updateInset(Inset const * inset)
{
WorkArea * work_area = currentWorkArea();
if (!work_area)
return 0;
if (inset) {
BOOST_ASSERT(work_area);
work_area->scheduleRedraw();
}
return &work_area->bufferView().buffer();
}
void LyXView::openLayoutList()
{
toolbars_->openLayoutList();
}
bool LyXView::isToolbarVisible(std::string const & id)
{
return toolbars_->visible(id);
}
} // namespace frontend
} // namespace lyx