SwitchCaptions,
/** Commands to separate environments. */
EnvironmentSeparators,
+ /** Commands to separate environments (context menu version). */
+ EnvironmentSeparatorsContext,
/** This is the list of quotation marks available */
SwitchQuotes
};
void expandLanguageSelector(Buffer const * buf);
void expandArguments(BufferView const *, bool switcharg = false);
void expandCaptions(Buffer const * buf, bool switchcap = false);
- void expandEnvironmentSeparators(BufferView const *);
+ void expandEnvironmentSeparators(BufferView const *, bool contextmenu = false);
void expandQuotes(BufferView const *);
///
ItemList items_;
md_captions,
md_switchcaptions,
md_env_separators,
+ md_env_separatorscontext,
md_switchquotes
};
{ "elements", md_elements },
{ "end", md_endmenu },
{ "environmentseparators", md_env_separators },
+ { "environmentseparatorscontext", md_env_separatorscontext },
{ "exportformat", md_exportformat },
{ "exportformats", md_exportformats },
{ "floatinsert", md_floatinsert },
add(MenuItem(MenuItem::EnvironmentSeparators));
break;
+ case md_env_separatorscontext:
+ add(MenuItem(MenuItem::EnvironmentSeparatorsContext));
+ break;
+
case md_switchquotes:
add(MenuItem(MenuItem::SwitchQuotes));
break;
}
if (!main_langdef_qs) {
FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + globalqsc + wildcards);
- docstring const desc = (main_dynamic_qs || display_static)
+ 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"),
}
-void MenuDefinition::expandEnvironmentSeparators(BufferView const * bv)
+void MenuDefinition::expandEnvironmentSeparators(BufferView const * bv,
+ bool contextmenu)
{
if (!bv)
return;
Paragraph const & par = text->getPar(pit);
docstring const curlayout = par.layout().name();
docstring outerlayout;
+ docstring prevlayout;
depth_type current_depth = par.params().depth();
- // check if we have an environment in our nesting hierarchy
+ // check if we have an environment in our scope
Paragraph cpar = par;
while (true) {
- if (pit == 0 || cpar.params().depth() == 0)
+ if (pit == 0)
break;
--pit;
cpar = text->getPar(pit);
+ if (cpar.layout().isEnvironment() && prevlayout.empty()
+ && cpar.params().depth() <= current_depth)
+ prevlayout = cpar.layout().name();
if (cpar.params().depth() < current_depth
&& cpar.layout().isEnvironment()) {
outerlayout = cpar.layout().name();
current_depth = cpar.params().depth();
}
+ if (cpar.params().depth() == 0)
+ break;
}
if (par.layout().isEnvironment()) {
- docstring const label =
- bformat(_("Start New Environment (%1$s)"),
- translateIfPossible(curlayout));
+ docstring label = contextmenu ?
+ bformat(_("Insert Separated %1$s Above"),
+ translateIfPossible(curlayout)) :
+ bformat(_("Separated %1$s Above"),
+ translateIfPossible(curlayout));
+ add(MenuItem(MenuItem::Command, toqstr(label),
+ FuncRequest(LFUN_ENVIRONMENT_SPLIT,
+ from_ascii("before"))));
+ label = contextmenu ?
+ bformat(_("Insert Separated %1$s Below"),
+ translateIfPossible(curlayout)):
+ bformat(_("Separated %1$s Below"),
+ translateIfPossible(curlayout));
+ // We use command-alternatives here since this is how the binding is defined
+ // (otherwise, the binding is not displayed in the menu)
+ if (getStatus(FuncRequest(LFUN_ENVIRONMENT_SPLIT)).enabled())
+ add(MenuItem(MenuItem::Command, toqstr(label),
+ FuncRequest(LFUN_COMMAND_ALTERNATIVES,
+ from_ascii("environment-split ; environment-split previous"))));
+ }
+ else if (!prevlayout.empty()) {
+ docstring const label = contextmenu ?
+ bformat(_("Insert Separated %1$s Below"),
+ translateIfPossible(prevlayout)) :
+ bformat(_("Separated %1$s Below"),
+ translateIfPossible(prevlayout));
+ // We use command-alternatives here since this is how the binding is defined
+ // (otherwise, the binding is not displayed in the menu)
add(MenuItem(MenuItem::Command, toqstr(label),
- FuncRequest(LFUN_ENVIRONMENT_SPLIT)));
+ FuncRequest(LFUN_COMMAND_ALTERNATIVES,
+ from_ascii("environment-split ; environment-split previous"))));
}
if (!outerlayout.empty()) {
- docstring const label =
- bformat(_("Start New Parent Environment (%1$s)"),
- translateIfPossible(outerlayout));
+ docstring label;
+ if (contextmenu) {
+ label = (outerlayout == curlayout) ?
+ bformat(_("Insert Separated Outer %1$s Below"),
+ translateIfPossible(outerlayout)) :
+ bformat(_("Insert Separated %1$s Below"),
+ translateIfPossible(outerlayout));
+ } else {
+ label = (outerlayout == curlayout) ?
+ bformat(_("Separated Outer %1$s Below"),
+ translateIfPossible(outerlayout)) :
+ bformat(_("Separated %1$s Below"),
+ translateIfPossible(outerlayout));
+ }
add(MenuItem(MenuItem::Command, toqstr(label),
FuncRequest(LFUN_ENVIRONMENT_SPLIT,
from_ascii("outer"))));
}
}
-} // namespace anon
+} // namespace
/////////////////////////////////////////////////////////////////////
tomenu.expandEnvironmentSeparators(bv);
break;
+ case MenuItem::EnvironmentSeparatorsContext:
+ tomenu.expandEnvironmentSeparators(bv, true);
+ break;
+
case MenuItem::SwitchQuotes:
tomenu.expandQuotes(bv);
break;