string const name = cmd.getArg(0);
bool const allowauto = cmd.getArg(1) == "allowauto";
lyx_view_->toggleToolbarState(name, allowauto);
- ToolbarInfo::Flags const flags =
- lyx_view_->getToolbarState(name);
+ ToolbarInfo * tbi = lyx_view_->getToolbarInfo(name);
+ if (!tbi) {
+ setMessage(bformat(_("Unknown toolbar \"%1$s\""),
+ from_utf8(name)));
+ break;
+ }
docstring state;
- if (flags & ToolbarInfo::ON)
+ if (tbi->flags & ToolbarInfo::ON)
state = _("on");
- else if (flags & ToolbarInfo::OFF)
+ else if (tbi->flags & ToolbarInfo::OFF)
state = _("off");
- else if (flags & ToolbarInfo::AUTO)
+ else if (tbi->flags & ToolbarInfo::AUTO)
state = _("auto");
setMessage(bformat(_("Toolbar \"%1$s\" state set to %2$s"),
- from_ascii(name), state));
+ _(tbi->gui_name), state));
break;
}
}
-ToolbarInfo const & ToolbarBackend::getToolbar(string const & name) const
+ToolbarInfo const * ToolbarBackend::getDefinedToolbarInfo(string const & name) const
{
- Toolbars::const_iterator cit = find_if(toolbars.begin(), toolbars.end(), ToolbarNamesEqual(name));
- if (cit == toolbars.end())
- lyxerr << "No toolbar named " << name << endl;
- BOOST_ASSERT(cit != toolbars.end());
- return (*cit);
+ Toolbars::const_iterator it = find_if(toolbars.begin(), toolbars.end(), ToolbarNamesEqual(name));
+ if (it == toolbars.end())
+ return 0;
+ return &(*it);
}
-ToolbarInfo & ToolbarBackend::getToolbar(string const & name)
+ToolbarInfo * ToolbarBackend::getUsedToolbarInfo(string const &name)
{
- Toolbars::iterator it = find_if(toolbars.begin(), toolbars.end(), ToolbarNamesEqual(name));
- if (it == toolbars.end())
- lyxerr << "No toolbar named " << name << endl;
- BOOST_ASSERT(it != toolbars.end());
- return (*it);
+ Toolbars::iterator it = find_if(usedtoolbars.begin(), usedtoolbars.end(), ToolbarNamesEqual(name));
+ if (it == usedtoolbars.end())
+ return 0;
+ return &(*it);
}
-
} // namespace lyx
/// read ui toolbar settings
void readToolbarSettings(Lexer &);
+
///
- ToolbarInfo const & getToolbar(std::string const & name) const;
+ ToolbarInfo const * getDefinedToolbarInfo(std::string const & name) const;
///
- ToolbarInfo & getToolbar(std::string const & name);
+ ToolbarInfo * getUsedToolbarInfo(std::string const & name);
private:
- /// all the toolbars
+ /// all the defined toolbars
Toolbars toolbars;
/// toolbars listed
}
-ToolbarInfo::Flags LyXView::getToolbarState(string const & name)
+ToolbarInfo * LyXView::getToolbarInfo(string const & name)
{
- return toolbars_->getToolbarState(name);
+ return toolbars_->getToolbarInfo(name);
}
/// update the toolbar
void updateToolbars();
- /// get toolbar state
- ToolbarInfo::Flags getToolbarState(std::string const & name);
+ /// get toolbar info
+ ToolbarInfo * getToolbarInfo(std::string const & name);
/// toggle toolbar state
void toggleToolbarState(std::string const & name, bool allowauto);
/// update the menubar
}
-ToolbarInfo::Flags Toolbars::getToolbarState(string const & name)
+ToolbarInfo * Toolbars::getToolbarInfo(string const & name)
{
- ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
- ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
-
- for (; cit != end; ++cit) {
- if (cit->name == name)
- return cit->flags;
- }
-
- LYXERR(Debug::GUI) << "Toolbar::display: no toolbar named "
- << name << endl;
-
- // return dummy for msvc
- return ToolbarInfo::OFF;
+ return toolbarbackend.getUsedToolbarInfo(name);
}
void Toolbars::toggleToolbarState(string const & name, bool allowauto)
{
- ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin();
- ToolbarBackend::Toolbars::iterator end = toolbarbackend.end();
+ ToolbarInfo * tbi = toolbarbackend.getUsedToolbarInfo(name);
- for (; cit != end; ++cit) {
- if (cit->name == name) {
- int flags = cit->flags;
- // off -> on
- if (flags & ToolbarInfo::OFF) {
- TurnOffFlag(OFF);
- TurnOnFlag(ON);
- // auto -> off
- } else if (flags & ToolbarInfo::AUTO) {
- TurnOffFlag(AUTO);
- TurnOnFlag(OFF);
- } else if (allowauto
- && ((flags & ToolbarInfo::MATH)
- || (flags & ToolbarInfo::TABLE)
- || (flags & ToolbarInfo::REVIEW))) {
- // for math etc, toggle from on -> auto
- TurnOffFlag(ON);
- TurnOnFlag(AUTO);
- } else {
- // for others, toggle from on -> off
- TurnOffFlag(ON);
- TurnOnFlag(OFF);
- }
- cit->flags = static_cast<ToolbarInfo::Flags>(flags);
- return;
- }
+ if (!tbi) {
+ LYXERR(Debug::GUI) << "Toolbar::display: no toolbar named "
+ << name << endl;
+ return;
}
- LYXERR(Debug::GUI) << "Toolbar::display: no toolbar named "
- << name << endl;
+
+ int flags = tbi->flags;
+ // off -> on
+ if (flags & ToolbarInfo::OFF) {
+ TurnOffFlag(OFF);
+ TurnOnFlag(ON);
+ // auto -> off
+ } else if (flags & ToolbarInfo::AUTO) {
+ TurnOffFlag(AUTO);
+ TurnOnFlag(OFF);
+ } else if (allowauto
+ && ((flags & ToolbarInfo::MATH)
+ || (flags & ToolbarInfo::TABLE)
+ || (flags & ToolbarInfo::REVIEW))) {
+ // for math etc, toggle from on -> auto
+ TurnOffFlag(ON);
+ TurnOnFlag(AUTO);
+ } else {
+ // for others, toggle from on -> off
+ TurnOffFlag(ON);
+ TurnOnFlag(OFF);
+ }
+ tbi->flags = static_cast<ToolbarInfo::Flags>(flags);
}
#undef TurnOnFlag
#undef TurnOffFlag
/// Show/hide the named toolbar.
void display(std::string const & name, bool show);
- /// get toolbar state (on/off/auto)
- ToolbarInfo::Flags getToolbarState(std::string const & name);
+ /// get toolbar info
+ ToolbarInfo * getToolbarInfo(std::string const & name);
/** toggle the state of toolbars (on/off/auto). Skip "auto"
* when allowauto is false.
IconPalette * panel = new IconPalette(tb);
panel->setWindowTitle(qt_(to_ascii(item.label_)));
connect(this, SIGNAL(updated()), panel, SLOT(updateParent()));
- ToolbarInfo const & tbinfo = toolbarbackend.getToolbar(item.name_);
- ToolbarInfo::item_iterator it = tbinfo.items.begin();
- ToolbarInfo::item_iterator const end = tbinfo.items.end();
+ ToolbarInfo const * tbinfo = toolbarbackend.getDefinedToolbarInfo(item.name_);
+ if (!tbinfo) {
+ lyxerr << "Unknown toolbar " << item.name_ << endl;
+ break;
+ }
+ ToolbarInfo::item_iterator it = tbinfo->items.begin();
+ ToolbarInfo::item_iterator const end = tbinfo->items.end();
for (; it != end; ++it)
if (!getStatus(it->func_).unknown()) {
Action * action = new Action(owner_,
panel->addButton(action);
ActionVector.push_back(action);
// use the icon of first action for the toolbar button
- if (it == tbinfo.items.begin())
+ if (it == tbinfo->items.begin())
tb->setIcon(QPixmap(getIcon(it->func_).c_str()));
}
tb->setCheckable(true);
m->setWindowTitle(qt_(to_ascii(item.label_)));
m->setTearOffEnabled(true);
connect(this, SIGNAL(updated()), m, SLOT(updateParent()));
- ToolbarInfo const & tbinfo = toolbarbackend.getToolbar(item.name_);
- ToolbarInfo::item_iterator it = tbinfo.items.begin();
- ToolbarInfo::item_iterator const end = tbinfo.items.end();
+ ToolbarInfo const * tbinfo = toolbarbackend.getDefinedToolbarInfo(item.name_);
+ if (!tbinfo) {
+ lyxerr << "Unknown toolbar " << item.name_ << endl;
+ break;
+ }
+ ToolbarInfo::item_iterator it = tbinfo->items.begin();
+ ToolbarInfo::item_iterator const end = tbinfo->items.end();
for (; it != end; ++it)
if (!getStatus(it->func_).unknown()) {
Action * action = new Action(owner_,