void expandFloatListInsert(Buffer const * buf);
void expandFloatInsert(Buffer const * buf);
void expandFlexInsert(Buffer const * buf, InsetLayout::InsetLyXType type);
+ void expandTocSubmenu(std::string const & type, Toc const & toc_list);
void expandToc2(Toc const & toc_list, size_t from, size_t to, int depth, string toc_type);
void expandToc(Buffer const * buf);
void expandPasteRecent(Buffer const * buf);
}
MenuDefinition other_lists;
- FloatList const & floatlist = buf->params().documentClass().floats();
TocList const & toc_list = buf->tocBackend().tocs();
TocList::const_iterator cit = toc_list.begin();
TocList::const_iterator end = toc_list.end();
if (cit->first == "tableofcontents" || cit->second->empty())
continue;
MenuDefinition submenu;
- // "Open outliner..." entry
- FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
- submenu.add(MenuItem(MenuItem::Command, qt_("Open Outliner..."), f));
- submenu.add(MenuItem(MenuItem::Separator));
- // add entries
- submenu.expandToc2(*cit->second, 0, cit->second->size(), 0, cit->first);
+ submenu.expandTocSubmenu(cit->first, *cit->second);
MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
item.setSubmenu(submenu);
// deserves to be in the main menu?
- if (floatlist.typeExist(cit->first) || cit->first == "child")
+ if (!TocBackend::isOther(cit->first))
add(item);
else
other_lists.add(item);
}
+void MenuDefinition::expandTocSubmenu(std::string const & type, Toc const & toc)
+{
+ // "Open outliner..." entry
+ FuncRequest f(LFUN_DIALOG_SHOW, "toc " + type);
+ add(MenuItem(MenuItem::Command, qt_("Open Outliner..."), f));
+ add(MenuItem(MenuItem::Separator));
+ // add entries
+ expandToc2(toc, 0, toc.size(), 0, type);
+}
+
+
void MenuDefinition::expandPasteRecent(Buffer const * buf)
{
docstring_list const sel = cap::availableSelections(buf);
InsetQuotes const * qinset =
static_cast<InsetQuotes const *>(inset);
- map<string, docstring> styles = qinset->getTypes();
+ map<string, docstring> styles = quoteparams.getTypes();
string const qtype = qinset->getType();
map<string, docstring>::const_iterator qq = styles.begin();
map<string, docstring>::const_iterator end = styles.end();
- MenuDefinition eqs;
- MenuDefinition sqs;
- MenuDefinition gqs;
- MenuDefinition pqs;
- MenuDefinition fqs;
MenuDefinition aqs;
- MenuDefinition qqs;
+
+ BufferParams const & bp = bv->buffer().masterBuffer()->params();
+
+ // The global setting
+ InsetQuotesParams::QuoteStyle globalqs = bp.quotes_style;
+ char const globalqsc = quoteparams.getStyleChar(globalqs);
+
+ // The current language's default
+ InsetQuotesParams::QuoteStyle langdefqs =
+ bp.getQuoteStyle(bv->cursor().current_font.language()->quoteStyle());
+ char const langqs = quoteparams.getStyleChar(langdefqs);
+
+ bool main_global_qs = false;
+ bool main_langdef_qs = false;
+ bool main_dynamic_qs = false;
+ docstring const subcmd = from_ascii("changetype ");
+ docstring const wildcards = from_ascii("..");
+ // Add the items
+ // First the top level menu (all glyphs of the current style) ...
+ // Begin with dynamic (if they are current style),
+ if (qtype[0] == 'x') {
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + from_ascii("xld"));
+ docstring desc = bformat(_("%1$s (dynamic)"),
+ quoteparams.getShortGuiLabel(globalqsc + from_ascii("ld")));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + from_ascii("xls"));
+ desc = bformat(_("%1$s (dynamic)"),
+ quoteparams.getShortGuiLabel(globalqsc + from_ascii("ls")));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + from_ascii("xrd"));
+ desc = bformat(_("%1$s (dynamic)"),
+ quoteparams.getShortGuiLabel(globalqsc + from_ascii("rd")));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + from_ascii("xrs"));
+ desc = bformat(_("%1$s (dynamic)"),
+ quoteparams.getShortGuiLabel(globalqsc + from_ascii("rs")));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ main_dynamic_qs = true;
+ }
+ // now traverse through the static styles ...
for (; qq != end; ++qq) {
docstring const style = from_ascii(qq->first);
- FuncRequest const cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype ") + style);
- docstring const desc = contains(style, 'l') ?
- bformat(_("%1$stext"), qq->second) : bformat(_("text%1$s"), qq->second);
- if (prefixIs(style, qtype[0]))
+ bool langdef = (style[0] == langqs);
+ bool globaldef = (style[0] == globalqsc);
+
+ if (prefixIs(style, qtype[0])) {
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + style);
+ docstring const desc = quoteparams.getShortGuiLabel(style);
add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'e') && !prefixIs(qtype, "e"))
- eqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 's') && !prefixIs(qtype, "s"))
- sqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'g') && !prefixIs(qtype, "g"))
- gqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'p') && !prefixIs(qtype, "p"))
- pqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'f') && !prefixIs(qtype, "f"))
- fqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'a') && !prefixIs(qtype, "a"))
+ main_global_qs = globaldef;
+ main_langdef_qs = langdef;
+ }
+ else if (!langdef && !globaldef && suffixIs(style, from_ascii("ld"))) {
+ docstring const desc =
+ quoteparams.getGuiLabel(quoteparams.getQuoteStyle(to_ascii(style)));
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + style[0] + "..");
aqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
- else if (prefixIs(style, 'q') && !prefixIs(qtype, "q"))
- qqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ }
}
- if (!eqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_("``text''"));
- item.setSubmenu(eqs);
- add(item);
- }
- if (!sqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_("''text''"));
- item.setSubmenu(sqs);
- add(item);
- }
- if (!gqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_(",,text``"));
- item.setSubmenu(gqs);
- add(item);
- }
- if (!pqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_(",,text''"));
- item.setSubmenu(pqs);
- add(item);
- }
- if (!fqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_("<<text>>"));
- item.setSubmenu(fqs);
- add(item);
- }
- if (!aqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_(">>text<<"));
- item.setSubmenu(aqs);
- add(item);
- }
- if (!qqs.empty()) {
- MenuItem item(MenuItem::Submenu, qt_("\"text\""));
- item.setSubmenu(qqs);
- add(item);
- }
+ add(MenuItem(MenuItem::Separator));
+
+ bool have_section = false;
+ bool display_static = false;
+ // ... then potentially items to reset to the defaults and to dynamic style ...
+ if (!main_dynamic_qs && globalqsc != 'x') {
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + 'x' + wildcards);
+ docstring const desc = bformat(_("Use dynamic quotes (%1$s)|d"),
+ quoteparams.getGuiLabel(globalqs));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ have_section = true;
+ display_static = true;
+ }
+ if (!main_global_qs && langdefqs != globalqs) {
+ docstring const variant = main_dynamic_qs ? _("dynamic[[Quotes]]") : _("static[[Quotes]]");
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + globalqsc + wildcards);
+ docstring const desc = bformat(_("Reset to document default (%1$s, %2$s)|o"),
+ quoteparams.getGuiLabel(globalqs), variant);
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ have_section = true;
+ }
+ if (!main_langdef_qs) {
+ FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + globalqsc + wildcards);
+ docstring const desc = (main_dynamic_qs || display_static)
+ ? bformat(_("Reset to language default (%1$s, %2$s)|l"),
+ quoteparams.getGuiLabel(langdefqs), _("static[[Quotes]]"))
+ : bformat(_("Reset to language default (%1$s)|l"),
+ quoteparams.getGuiLabel(langdefqs));
+ add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
+ have_section = true;
+ }
+
+ if (have_section)
+ add(MenuItem(MenuItem::Separator));
+
+ // ... and a subitem with the rest
+ MenuItem item(MenuItem::Submenu, qt_("Change Style|y"));
+ item.setSubmenu(aqs);
+ add(item);
}