]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/LyXView.cpp
Move Color::color enum to ColorCode.h
[lyx.git] / src / frontends / LyXView.cpp
index f644f7f4e2c1d939fe38ed598631e2a9d49e1bf6..4e9157772b4ceab765f51271ff07a4efaadaf378 100644 (file)
@@ -14,7 +14,6 @@
 #include "LyXView.h"
 
 #include "Dialogs.h"
-#include "Toolbars.h"
 #include "WorkArea.h"
 #include "Gui.h"
 
@@ -23,7 +22,6 @@
 #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()
@@ -64,11 +63,8 @@ using support::onlyFilename;
 
 namespace frontend {
 
-docstring current_layout;
-
 LyXView::LyXView(int id)
-       : toolbars_(new Toolbars(*this)),
-         autosave_timeout_(new Timeout(5000)),
+       : autosave_timeout_(new Timeout(5000)),
          dialogs_(new Dialogs(*this)),
          id_(id)
 {
@@ -83,10 +79,7 @@ LyXView::LyXView(int id)
 
 LyXView::~LyXView()
 {
-       disconnectBuffer();
-       disconnectBufferView();
        delete dialogs_;
-       delete toolbars_;
        delete autosave_timeout_;
 }
 
@@ -112,11 +105,11 @@ Buffer const * LyXView::buffer() const
 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.
@@ -126,20 +119,20 @@ void LyXView::setBuffer(Buffer * newBuffer)
        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;
        }
 
@@ -160,97 +153,42 @@ Buffer * LyXView::loadLyXFile(FileName const & filename, bool tolastfiles)
        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();
-       layout_changed_connection_.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));
-       layout_changed_connection_ = bv.layoutChanged.connect(
-                       boost::bind(&Toolbars::setLayout, toolbars_, _1));
+       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);
-       }
 }
 
 
@@ -280,7 +218,7 @@ void LyXView::updateDialog(string const & name, string const & data)
 }
 
 
-void LyXView::showReadonly(bool)
+void LyXView::setReadOnly(bool)
 {
        updateWindowTitle();
        getDialogs().updateBufferDependent(false);
@@ -306,53 +244,12 @@ void LyXView::updateEmbeddedFiles()
 }
 
 
-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());
+               view()->buffer().autoSave();
 }
 
 
@@ -363,29 +260,6 @@ void LyXView::resetAutosaveTimer()
 }
 
 
-void LyXView::updateLayoutChoice()
-{
-       // Don't show any layouts without a buffer
-       if (!buffer()) {
-               toolbars_->clearLayoutList();
-               return;
-       }
-
-       // Update the layout display
-       if (toolbars_->updateLayoutList(buffer()->params().getTextClassPtr())) {
-               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");
@@ -393,7 +267,7 @@ void LyXView::updateWindowTitle()
 
        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));
@@ -437,17 +311,5 @@ Buffer const * LyXView::updateInset(Inset const * inset)
        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