/** * \file Toolbars.C * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Lars Gullik Bjønnes * \author Angus Leeming * * Full author contact details are available in file CREDITS. */ #include #include "Toolbars.h" #include "debug.h" #include "funcrequest.h" #include "FuncStatus.h" #include "lyxfunc.h" #include "LyXView.h" using std::endl; using std::string; Toolbars::Toolbars(LyXView & owner) : owner_(owner), layout_(0), last_textclass_(-1) {} void Toolbars::init() { // extracts the toolbars from the backend ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin(); ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end(); for (; cit != end; ++cit) add(*cit); } void Toolbars::display(string const & name, bool show) { ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin(); ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end(); for (; cit != end; ++cit) { if (cit->name == name) { displayToolbar(*cit, show); return; } } lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named " << name << endl; } void Toolbars::update(bool in_math, bool in_table) { update(); // extracts the toolbars from the backend ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin(); ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end(); for (; cit != end; ++cit) { if (cit->flags & ToolbarBackend::MATH) displayToolbar(*cit, in_math); else if (cit->flags & ToolbarBackend::TABLE) displayToolbar(*cit, in_table); } } void Toolbars::setLayout(string const & layout) { if (layout_) layout_->set(layout); } bool Toolbars::updateLayoutList(int textclass) { // update the layout display if (last_textclass_ != textclass) { if (layout_) layout_->update(); last_textclass_ = textclass; return true; } else return false; } void Toolbars::openLayoutList() { if (layout_) layout_->open(); } void Toolbars::clearLayoutList() { last_textclass_ = -1; if (layout_) layout_->clear(); } void Toolbars::add(ToolbarBackend::Toolbar const & tbb) { ToolbarPtr tb_ptr = make_toolbar(tbb, owner_); toolbars_[tbb.name] = tb_ptr; if (tbb.flags & ToolbarBackend::ON) tb_ptr->show(false); else tb_ptr->hide(false); if (tb_ptr->layout()) layout_ = tb_ptr->layout(); } void Toolbars::displayToolbar(ToolbarBackend::Toolbar const & tbb, bool show_it) { ToolbarsMap::iterator it = toolbars_.find(tbb.name); BOOST_ASSERT(it != toolbars_.end()); if (show_it) it->second->show(true); else it->second->hide(true); } void Toolbars::update() { ToolbarsMap::const_iterator it = toolbars_.begin(); ToolbarsMap::const_iterator const end = toolbars_.end(); for (; it != end; ++it) it->second->update(); bool const enable = owner_.getLyXFunc(). getStatus(FuncRequest(LFUN_LAYOUT)).enabled(); if (layout_) layout_->setEnabled(enable); }