+ map<string, docstring>::const_iterator const it
+ = outliner_names_.find(type);
+ if (it != outliner_names_.end())
+ return it->second;
+
+ // Legacy treatment of index:... type
+ if (support::prefixIs(type, "index:")) {
+ string const itype = support::split(type, ':');
+ IndicesList const & indiceslist = buffer_->params().indiceslist();
+ Index const * index = indiceslist.findShortcut(from_utf8(itype));
+ docstring indextype = _("unknown type!");
+ if (index)
+ indextype = index->index();
+ return support::bformat(_("Index Entries (%1$s)"), indextype);
+ }
+
+ LYXERR0("Missing OutlinerName for " << type << "!");
+ return from_utf8(type);
+}
+
+
+void TocBackend::resetOutlinerNames()
+{
+ outliner_names_.clear();
+ // names from this document class
+ for (auto const & name
+ : buffer_->params().documentClass().outlinerNames())
+ addName(name.first, translateIfPossible(name.second));
+ // Hardcoded types
+ addName("tableofcontents", _("Table of Contents"));
+ addName("change", _("Changes"));
+ addName("senseless", _("Senseless"));
+ addName("citation", _("Citations"));
+ addName("label", _("Labels and References"));
+ addName("brokenrefs", _("Broken References and Citations"));
+ // Customizable, but the corresponding insets have no layout definition
+ addName("child", _("Child Documents"));
+ addName("graphics", _("Graphics[[listof]]"));
+ addName("equation", _("Equations"));
+ addName("external", _("External Material"));
+ addName("math-macro", _("Math Macros"));
+ addName("nomencl", _("Nomenclature Entries"));
+}
+
+
+void TocBackend::addName(string const & type, docstring const & name)
+{
+ if (name.empty())
+ return;
+ // only inserts if the key does not exist
+ outliner_names_.insert({type, name});