#include "Session.h"
#include "TextClass.h"
#include "TocBackend.h"
-#include "ToolbarBackend.h"
+#include "Toolbars.h"
#include "insets/Inset.h"
#include "insets/InsetCitation.h"
#include "support/lassert.h"
#include "support/convert.h"
#include "support/debug.h"
+#include "support/docstring_list.h"
#include "support/filetools.h"
#include "support/gettext.h"
#include "support/lstrings.h"
// search for func in this menu iteratively, and put menu
// names in a stack.
- bool searchMenu(FuncRequest const & func, std::vector<docstring> & names)
+ bool searchMenu(FuncRequest const & func, docstring_list & names)
const;
///
bool hasFunc(FuncRequest const &) const;
}
if (enabled || !i.optional()) {
items_.push_back(i);
- items_.back().status().enabled(enabled);
+ items_.back().status().setEnabled(enabled);
}
}
else
}
-bool MenuDefinition::searchMenu(FuncRequest const & func, vector<docstring> & names) const
+bool MenuDefinition::searchMenu(FuncRequest const & func, docstring_list & names) const
{
const_iterator m = begin();
const_iterator m_end = end();
{
if (!bv)
return;
- Cursor const & cur = bv->cursor();
- Buffer const & buf = bv->buffer();
set<string> grp;
- InsetGraphics::getGraphicsGroups(buf, grp);
- set<string>::const_iterator it = grp.begin();
- set<string>::const_iterator end = grp.end();
+ graphics::getGraphicsGroups(bv->buffer(), grp);
if (grp.empty())
return;
- InsetGraphics * ins = InsetGraphics::getCurrentGraphicsInset(cur);
- if (!ins)
- return;
- add(MenuItem(MenuItem::Separator));
- if (!ins->getParams().groupId.empty())
- add(MenuItem(MenuItem::Command, qt_("Clear group"), FuncRequest(LFUN_SET_GRAPHICS_GROUP)));
+ set<string>::const_iterator it = grp.begin();
+ set<string>::const_iterator end = grp.end();
+ add(MenuItem(MenuItem::Command, qt_("No Group"),
+ FuncRequest(LFUN_SET_GRAPHICS_GROUP)));
for (; it != end; it++) {
addWithStatusCheck(MenuItem(MenuItem::Command, toqstr(*it),
FuncRequest(LFUN_SET_GRAPHICS_GROUP, *it)));
for (; fit != end ; ++fit) {
if ((*fit)->dummy())
continue;
- QString label = toqstr((*fit)->prettyname());
- QString const shortcut = toqstr((*fit)->shortcut());
+
+ docstring lab = from_utf8((*fit)->prettyname());
+ docstring scut = from_utf8((*fit)->shortcut());
+ docstring const tmplab = lab;
+
+ if (!scut.empty())
+ lab += char_type('|') + scut;
+ docstring lab_i18n = translateIfPossible(lab);
+ bool const untranslated = (lab == lab_i18n);
+ QString const shortcut = toqstr(split(lab_i18n, lab, '|'));
+ QString label = toqstr(lab);
+ if (untranslated)
+ // this might happen if the shortcut
+ // has been redefined
+ label = toqstr(translateIfPossible(tmplab));
switch (kind) {
case MenuItem::ImportFormats:
- // FIXME: This is a hack, we should rather solve
- // FIXME: bug 2488 instead.
- if ((*fit)->name() == "text")
- label = qt_("Plain Text");
- else if ((*fit)->name() == "textparagraph")
- label = qt_("Plain Text, Join Lines");
label += "...";
break;
case MenuItem::ViewFormats:
LASSERT(false, /**/);
break;
}
- // FIXME: if we had proper support for translating the
- // format names defined in configure.py, there would
- // not be a need to check whether the shortcut is
- // correct. If we add it uncondiitonally, it would
- // create useless warnings on bad shortcuts
- if (!shortcut.isEmpty() && label.contains(shortcut))
+ if (!shortcut.isEmpty())
label += '|' + shortcut;
if (buf)
for (; cit != end; ++cit) {
addWithStatusCheck(MenuItem(MenuItem::Command,
qt_(cit->second.listName()),
- FuncRequest(LFUN_FLOAT_LIST,
+ FuncRequest(LFUN_FLOAT_LIST_INSERT,
cit->second.type())));
}
}
if (cit->first == "tableofcontents")
continue;
- string const & floatName = floatlist.getType(cit->first).listName();
- QString label;
- bool in_other_list = true;
- if (!floatName.empty()) {
- label = qt_(floatName);
- in_other_list = false;
- }
- else if (cit->first == "child") {
- label = qt_("Child Documents");
- in_other_list = false;
- } else if (cit->first == "graphics")
- label = qt_("List of Graphics");
- else if (cit->first == "equation")
- label = qt_("List of Equations");
- else if (cit->first == "index")
- label = qt_("List of Indexes");
- else if (cit->first == "listing") {
- // FIXME: the listing navigate menu causes a crash for unknown
- // reason. See http://bugzilla.lyx.org/show_bug.cgi?id=4613
- // This is a temporary fix:
- //label = qt_("List of Listings");
- continue;
- }
- else if (cit->first == "marginalnote")
- label = qt_("List of Marginal notes");
- else if (cit->first == "note")
- label = qt_("List of Notes");
- else if (cit->first == "footnote")
- label = qt_("List of Footnotes");
- else if (cit->first == "label")
- label = qt_("Labels and References");
- else if (cit->first == "citation")
- label = qt_("List of Citations");
- else
- // This should not happen unless the entry is missing above.
- label = qt_("Other floats: ") + toqstr(cit->first);
-
MenuDefinition submenu;
-
if (cit->second.size() >= 30) {
FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f));
TocIterator ccit = cit->second.begin();
TocIterator eend = cit->second.end();
for (; ccit != eend; ++ccit) {
- QString const label = limitStringLength(ccit->str());
- submenu.add(MenuItem(MenuItem::Command, label,
+ submenu.add(MenuItem(MenuItem::Command,
+ limitStringLength(ccit->str()),
FuncRequest(ccit->action())));
}
}
- MenuItem item(MenuItem::Submenu, label);
+ MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
item.setSubmenu(submenu);
- if (in_other_list)
- other_lists.add(item);
- else {
+ if (floatlist.typeExist(cit->first) || cit->first == "child") {
+ // Those two types deserve to be in the main menu.
item.setSubmenu(submenu);
add(item);
- }
+ } else
+ other_lists.add(item);
}
if (!other_lists.empty()) {
MenuItem item(MenuItem::Submenu, qt_("Other Lists"));
add(item);
}
-
// Handle normal TOC
cit = toc_list.find("tableofcontents");
if (cit == end) {
addWithStatusCheck(MenuItem(MenuItem::Command,
qt_("No Table of contents"),
FuncRequest()));
- } else {
+ } else
expandToc2(cit->second, 0, cit->second.size(), 0);
- }
}
void MenuDefinition::expandPasteRecent()
{
- vector<docstring> const sel = cap::availableSelections();
+ docstring_list const sel = cap::availableSelections();
- vector<docstring>::const_iterator cit = sel.begin();
- vector<docstring>::const_iterator end = sel.end();
+ docstring_list::const_iterator cit = sel.begin();
+ docstring_list::const_iterator end = sel.end();
for (unsigned int index = 0; cit != end; ++cit, ++index) {
add(MenuItem(MenuItem::Command, toqstr(*cit),
void MenuDefinition::expandToolbars()
{
- //
+ MenuDefinition other_lists;
// extracts the toolbars from the backend
- ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
- ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
-
+ Toolbars::Infos::const_iterator cit = guiApp->toolbars().begin();
+ Toolbars::Infos::const_iterator end = guiApp->toolbars().end();
for (; cit != end; ++cit) {
- QString label = qt_(cit->gui_name);
- // frontends are not supposed to turn on/off toolbars,
- // if they cannot update ToolbarBackend::flags. That
- // is to say, ToolbarsBackend::flags should reflect
- // the true state of toolbars.
- //
- // menu is displayed as
- // on/off review
- // and
- // review (auto)
- // in the case of auto.
- if (cit->flags & ToolbarInfo::AUTO)
- label += qt_(" (auto)");
- add(MenuItem(MenuItem::Command, label,
- FuncRequest(LFUN_TOOLBAR_TOGGLE, cit->name + " allowauto")));
+ MenuItem const item(MenuItem::Command, qt_(cit->gui_name),
+ FuncRequest(LFUN_TOOLBAR_TOGGLE, cit->name));
+ if (guiApp->toolbars().isMainToolbar(cit->name))
+ add(item);
+ else
+ other_lists.add(item);
+ }
+
+ if (!other_lists.empty()) {
+ MenuItem item(MenuItem::Submenu, qt_("Other Toolbars"));
+ item.setSubmenu(other_lists);
+ add(item);
}
}
key = qstring_to_ucs4(toqstr(key).split(',')[0]);
vector<CiteStyle> citeStyleList = citeStyles(buf->params().citeEngine());
- vector<docstring> citeStrings =
+ docstring_list citeStrings =
buf->masterBibInfo().getCiteStrings(key, bv->buffer());
- vector<docstring>::const_iterator cit = citeStrings.begin();
- vector<docstring>::const_iterator end = citeStrings.end();
+ docstring_list::const_iterator cit = citeStrings.begin();
+ docstring_list::const_iterator end = citeStrings.end();
for (int ii = 1; cit != end; ++cit, ++ii) {
docstring label = *cit;
bool Menus::searchMenu(FuncRequest const & func,
- vector<docstring> & names) const
+ docstring_list & names) const
{
MenuDefinition menu;
d->expand(d->menubar_, menu, 0);