X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiToc.cpp;h=e124a468b428c48cf161d2341fa84c5633d973f2;hb=1f10969bb5c5f36017bf5ba8671381b09945cf57;hp=5fd6ef47f5c0d8b8a8e70414a12cc92c4e6e48ac;hpb=e5cf6e8566dc89dce0b88f487c4e41ffb114aff1;p=lyx.git diff --git a/src/frontends/qt4/GuiToc.cpp b/src/frontends/qt4/GuiToc.cpp index 5fd6ef47f5..e124a468b4 100644 --- a/src/frontends/qt4/GuiToc.cpp +++ b/src/frontends/qt4/GuiToc.cpp @@ -5,6 +5,7 @@ * * \author John Levon * \author Abdelrazak Younes + * \author Angus Leeming * * Full author contact details are available in file CREDITS. */ @@ -12,118 +13,89 @@ #include #include "GuiToc.h" - -#include "TocModel.h" +#include "GuiView.h" +#include "DockView.h" +#include "TocWidget.h" #include "qt_helpers.h" -#include "debug.h" +#include "Buffer.h" +#include "BufferView.h" +#include "BufferParams.h" +#include "FuncRequest.h" -#include +#include "support/debug.h" +#include "support/gettext.h" +#include "support/lassert.h" -using std::endl; +using namespace std; namespace lyx { namespace frontend { - -GuiToc::GuiToc(Dialog & dialog) - : ControlToc(dialog) +GuiToc::GuiToc(GuiView & parent, Qt::DockWidgetArea area, Qt::WindowFlags flags) + : DockView(parent, "toc", qt_("Outline"), area, flags), + widget_(new TocWidget(parent, this)), + is_closing_(false) { + setWidget(widget_); + setFocusProxy(widget_); } -bool GuiToc::canOutline(int type) const +void GuiToc::updateView() { - if (type < 0) - return false; - return ControlToc::canOutline(type); + widget_->updateView(); } -int GuiToc::getTocDepth(int type) +bool GuiToc::initialiseParams(string const & data) { - if (type < 0) - return 0; - return toc_models_[type]->modelDepth(); + widget_->init(toqstr(data)); + return true; } -QStandardItemModel * GuiToc::tocModel(int type) +void GuiToc::dispatchParams() { - if (type < 0) - return 0; - - if (toc_models_.empty()) { - LYXERR(Debug::GUI) << "GuiToc::tocModel(): no types available " << endl; - return 0; - } - - LYXERR(Debug::GUI) - << "GuiToc: type " << type - << " toc_models_.size() " << toc_models_.size() - << endl; - - BOOST_ASSERT(type >= 0 && type < int(toc_models_.size())); - return toc_models_[type]; } -QModelIndex const GuiToc::getCurrentIndex(int type) const +void GuiToc::enableView(bool enable) { - if (type < 0) - return QModelIndex(); - - // FIXME: The TocBackend infrastructure is not ready for LOF and LOT - // This is because a proper ParConstIterator is not constructed in - // InsetCaption::addToToc() - if(!canOutline(type)) - return QModelIndex(); - - return toc_models_[type]->modelIndex(getCurrentTocItem(type)); + if (!enable) + // In the opposite case, updateView() will be called anyway. + widget_->updateViewNow(); } -void GuiToc::goTo(int type, QModelIndex const & index) +void GuiToc::closeEvent(QCloseEvent * /*event*/) { - if (type < 0 || !index.isValid() - || index.model() != toc_models_[type]) { - LYXERR(Debug::GUI) - << "GuiToc::goTo(): QModelIndex is invalid!" - << endl; - return; - } - - BOOST_ASSERT(type >= 0 && type < int(toc_models_.size())); - - TocIterator const it = toc_models_[type]->tocIterator(index); + is_closing_ = true; + static_cast(parent())->updateToolbars(); + is_closing_ = false; +} - LYXERR(Debug::GUI) << "GuiToc::goTo " << to_utf8(it->str()) << endl; - ControlToc::goTo(*it); +void GuiToc::doDispatch(Cursor & cur, FuncRequest const & cmd) +{ + widget_->doDispatch(cur, cmd); } -bool GuiToc::initialiseParams(std::string const & data) +bool GuiToc::getStatus(Cursor & cur, FuncRequest const & cmd, + FuncStatus & status) const { - if (!ControlToc::initialiseParams(data)) - return false; - updateView(); - modelReset(); - return true; + return widget_->getStatus(cur, cmd, status); } -void GuiToc::updateView() +Dialog * createGuiToc(GuiView & lv) { - toc_models_.clear(); - TocList::const_iterator it = tocs().begin(); - TocList::const_iterator end = tocs().end(); - for (; it != end; ++it) - toc_models_.push_back(new TocModel(it->second)); + return new GuiToc(lv); } } // namespace frontend } // namespace lyx -#include "GuiToc_moc.cpp" +#include "moc_GuiToc.cpp"