#include "LyXView.h"
#include "Dialogs.h"
-#include "Toolbars.h"
#include "WorkArea.h"
#include "Gui.h"
#include "BufferList.h"
#include "BufferParams.h"
#include "BufferView.h"
-#include "callback.h"
#include "Cursor.h"
#include "debug.h"
#include "ErrorList.h"
#include "LyX.h"
#include "LyXFunc.h"
#include "LyXRC.h"
-#include "Text.h"
#include "MenuBackend.h"
#include "Paragraph.h"
+#include "Session.h"
+#include "Text.h"
#include "support/lstrings.h"
#include "support/filetools.h" // OnlyFilename()
LyXView::~LyXView()
{
- disconnectBuffer();
- disconnectBufferView();
delete dialogs_;
delete autosave_timeout_;
}
void LyXView::setBuffer(Buffer * newBuffer)
{
BOOST_ASSERT(newBuffer);
- busy(true);
+ setBusy(true);
WorkArea * wa = workArea(*newBuffer);
if (wa == 0) {
- updateLabels(*newBuffer->getMasterBuffer());
+ updateLabels(*newBuffer->masterBuffer());
wa = addWorkArea(*newBuffer);
} else {
//Disconnect the old buffer...there's no new one.
connectBufferView(wa->bufferView());
setCurrentWorkArea(wa);
- busy(false);
+ setBusy(false);
}
Buffer * LyXView::loadLyXFile(FileName const & filename, bool tolastfiles)
{
- busy(true);
+ setBusy(true);
Buffer * newBuffer = checkAndLoadLyXFile(filename);
if (!newBuffer) {
message(_("Document not loaded."));
updateStatusBar();
- busy(false);
+ setBusy(false);
return 0;
}
if (tolastfiles)
LyX::ref().session().lastFiles().add(filename);
- busy(false);
+ setBusy(false);
return newBuffer;
}
void LyXView::connectBuffer(Buffer & buf)
{
- if (errorsConnection_.connected())
- disconnectBuffer();
-
- bufferStructureChangedConnection_ =
- buf.getMasterBuffer()->structureChanged.connect(
- boost::bind(&LyXView::updateToc, this));
-
- bufferEmbeddingChangedConnection_ =
- buf.embeddingChanged.connect(
- boost::bind(&LyXView::updateEmbeddedFiles, this));
-
- 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));
+ buf.setGuiDelegate(this);
}
void LyXView::disconnectBuffer()
{
- errorsConnection_.disconnect();
- bufferStructureChangedConnection_.disconnect();
- bufferEmbeddingChangedConnection_.disconnect();
- messageConnection_.disconnect();
- busyConnection_.disconnect();
- titleConnection_.disconnect();
- timerConnection_.disconnect();
- readonlyConnection_.disconnect();
+ if (WorkArea * work_area = currentWorkArea())
+ work_area->bufferView().setGuiDelegate(0);
}
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));
+ bv.setGuiDelegate(this);
}
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();
+ if (WorkArea * work_area = currentWorkArea())
+ work_area->bufferView().setGuiDelegate(0);
}
void LyXView::showErrorList(string const & error_type)
{
ErrorList & el = buffer()->errorList(error_type);
- if (!el.empty()) {
+ if (!el.empty())
getDialogs().show("errorlist", error_type);
- }
}
}
-void LyXView::showReadonly(bool)
+void LyXView::setReadOnly(bool)
{
updateWindowTitle();
getDialogs().updateBufferDependent(false);
LYXERR(Debug::INFO) << "Running autoSave()" << endl;
if (buffer())
- lyx::autoSave(view());
+ view()->buffer().autoSave();
}
Buffer * buf = buffer();
if (buf) {
- string const cur_title = buf->fileName();
+ string const cur_title = buf->absFileName();
if (!cur_title.empty()) {
maximize_title += ": " + makeDisplayPath(cur_title, 30);
minimize_title = lyx::from_utf8(onlyFilename(cur_title));
return &work_area->bufferView().buffer();
}
-
} // namespace frontend
} // namespace lyx