mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Tweaks to the quotes GUI
This follows some suggestions put forward yesterday.
This commit is contained in:
parent
d9018f14a6
commit
4590f1016b
@ -1069,13 +1069,6 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
encodinglist.sort();
|
||||
langModule->encodingCO->addItems(encodinglist);
|
||||
|
||||
for (int i = 0; i < quoteparams.stylescount(); ++i) {
|
||||
InsetQuotesParams::QuoteStyle qs = InsetQuotesParams::QuoteStyle(i);
|
||||
if (qs == InsetQuotesParams::DynamicQuotes)
|
||||
continue;
|
||||
langModule->quoteStyleCO->addItem(toqstr(quoteparams.getGuiLabel(qs)), qs);
|
||||
}
|
||||
|
||||
langModule->languagePackageCO->addItem(
|
||||
qt_("Default"), toqstr("default"));
|
||||
langModule->languagePackageCO->addItem(
|
||||
@ -1760,6 +1753,38 @@ void GuiDocument::deleteBoxBackgroundColor()
|
||||
}
|
||||
|
||||
|
||||
void GuiDocument::updateQuoteStyles(bool const set)
|
||||
{
|
||||
Language const * lang = lyx::languages.getLanguage(
|
||||
fromqstr(langModule->languageCO->itemData(
|
||||
langModule->languageCO->currentIndex()).toString()));
|
||||
|
||||
InsetQuotesParams::QuoteStyle def = bp_.getQuoteStyle(lang->quoteStyle());
|
||||
|
||||
langModule->quoteStyleCO->clear();
|
||||
|
||||
bool has_default = false;
|
||||
for (int i = 0; i < quoteparams.stylescount(); ++i) {
|
||||
InsetQuotesParams::QuoteStyle qs = InsetQuotesParams::QuoteStyle(i);
|
||||
if (qs == InsetQuotesParams::DynamicQuotes)
|
||||
continue;
|
||||
bool const langdef = (qs == def);
|
||||
if (langdef) {
|
||||
// add the default style on top
|
||||
langModule->quoteStyleCO->insertItem(0,
|
||||
toqstr(quoteparams.getGuiLabel(qs, langdef)), qs);
|
||||
has_default = true;
|
||||
}
|
||||
else
|
||||
langModule->quoteStyleCO->addItem(
|
||||
toqstr(quoteparams.getGuiLabel(qs, langdef)), qs);
|
||||
}
|
||||
if (set && has_default)
|
||||
// (re)set to the default style
|
||||
langModule->quoteStyleCO->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
|
||||
void GuiDocument::languageChanged(int i)
|
||||
{
|
||||
// some languages only work with polyglossia
|
||||
@ -1784,10 +1809,7 @@ void GuiDocument::languageChanged(int i)
|
||||
}
|
||||
|
||||
// set appropriate quotation mark style
|
||||
if (!lang->quoteStyle().empty()) {
|
||||
langModule->quoteStyleCO->setCurrentIndex(
|
||||
bp_.getQuoteStyle(lang->quoteStyle()));
|
||||
}
|
||||
updateQuoteStyles(true);
|
||||
}
|
||||
|
||||
|
||||
@ -3067,6 +3089,8 @@ void GuiDocument::paramsToDialog()
|
||||
bp_.language->lang()));
|
||||
langModule->languageCO->setCurrentIndex(pos);
|
||||
|
||||
updateQuoteStyles();
|
||||
|
||||
langModule->quoteStyleCO->setCurrentIndex(
|
||||
bp_.quotes_style);
|
||||
langModule->dynamicQuotesCB->setChecked(bp_.dynamic_quotes);
|
||||
|
@ -184,6 +184,8 @@ private:
|
||||
void useClassDefaults();
|
||||
///
|
||||
void setLayoutComboByIDString(std::string const & idString);
|
||||
/// Update quotes styles combo, indicating the current language's default
|
||||
void updateQuoteStyles(bool const set = false);
|
||||
|
||||
/// available modules
|
||||
GuiIdListModel modules_av_model_;
|
||||
|
@ -1675,186 +1675,106 @@ void MenuDefinition::expandQuotes(BufferView const * bv)
|
||||
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 cqs;
|
||||
MenuDefinition aqs;
|
||||
MenuDefinition qqs;
|
||||
MenuDefinition bqs;
|
||||
MenuDefinition wqs;
|
||||
MenuDefinition fqs;
|
||||
MenuDefinition iqs;
|
||||
MenuDefinition rqs;
|
||||
MenuDefinition jqs;
|
||||
MenuDefinition kqs;
|
||||
MenuDefinition xqs;
|
||||
InsetQuotesParams::QuoteStyle globalqs =
|
||||
bv->buffer().masterBuffer()->params().quotes_style;
|
||||
FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype xld"));
|
||||
docstring desc = bformat(_("%1$stext (dynamic)"),
|
||||
docstring(1, quoteparams.getQuoteChar(globalqs,
|
||||
InsetQuotesParams::PrimaryQuotes,
|
||||
InsetQuotesParams::OpeningQuote)));
|
||||
if (prefixIs(qtype, "x"))
|
||||
add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else
|
||||
xqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype xls"));
|
||||
desc = bformat(_("%1$stext (dynamic)"),
|
||||
docstring(1, quoteparams.getQuoteChar(globalqs,
|
||||
InsetQuotesParams::SecondaryQuotes,
|
||||
InsetQuotesParams::OpeningQuote)));
|
||||
if (prefixIs(qtype, "x"))
|
||||
add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else
|
||||
xqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype xrd"));
|
||||
desc = bformat(_("text%1$s (dynamic)"),
|
||||
docstring(1, quoteparams.getQuoteChar(globalqs,
|
||||
InsetQuotesParams::PrimaryQuotes,
|
||||
InsetQuotesParams::ClosingQuote)));
|
||||
if (prefixIs(qtype, "x"))
|
||||
add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else
|
||||
xqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype xrs"));
|
||||
desc = bformat(_("text%1$s (dynamic)"),
|
||||
docstring(1, quoteparams.getQuoteChar(globalqs,
|
||||
InsetQuotesParams::SecondaryQuotes,
|
||||
InsetQuotesParams::ClosingQuote)));
|
||||
if (prefixIs(qtype, "x"))
|
||||
add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else
|
||||
xqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
|
||||
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);
|
||||
cmd = FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype ") + style);
|
||||
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, 'c') && !prefixIs(qtype, "c"))
|
||||
cqs.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));
|
||||
else if (prefixIs(style, 'b') && !prefixIs(qtype, "b"))
|
||||
bqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else if (prefixIs(style, 'w') && !prefixIs(qtype, "w"))
|
||||
wqs.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, 'i') && !prefixIs(qtype, "i"))
|
||||
iqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else if (prefixIs(style, 'r') && !prefixIs(qtype, "r"))
|
||||
rqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else if (prefixIs(style, 'j') && !prefixIs(qtype, "j"))
|
||||
jqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
else if (prefixIs(style, 'k') && !prefixIs(qtype, "k"))
|
||||
kqs.add(MenuItem(MenuItem::Command, toqstr(desc), cmd));
|
||||
}
|
||||
}
|
||||
|
||||
if (!xqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu, qt_("Dynamic Quotation Marks"));
|
||||
item.setSubmenu(xqs);
|
||||
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 (!eqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::EnglishQuotes)));
|
||||
item.setSubmenu(eqs);
|
||||
add(item);
|
||||
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 (!sqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::SwedishQuotes)));
|
||||
item.setSubmenu(sqs);
|
||||
add(item);
|
||||
}
|
||||
if (!gqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::GermanQuotes)));
|
||||
item.setSubmenu(gqs);
|
||||
add(item);
|
||||
}
|
||||
if (!pqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::PolishQuotes)));
|
||||
item.setSubmenu(pqs);
|
||||
add(item);
|
||||
}
|
||||
if (!cqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::SwissQuotes)));
|
||||
item.setSubmenu(cqs);
|
||||
add(item);
|
||||
}
|
||||
if (!aqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::DanishQuotes)));
|
||||
item.setSubmenu(aqs);
|
||||
add(item);
|
||||
}
|
||||
if (!qqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::PlainQuotes)));
|
||||
item.setSubmenu(qqs);
|
||||
add(item);
|
||||
}
|
||||
if (!bqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::BritishQuotes)));
|
||||
item.setSubmenu(bqs);
|
||||
add(item);
|
||||
}
|
||||
if (!wqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::SwedishGQuotes)));
|
||||
item.setSubmenu(wqs);
|
||||
add(item);
|
||||
}
|
||||
if (!fqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::FrenchQuotes)));
|
||||
item.setSubmenu(fqs);
|
||||
add(item);
|
||||
}
|
||||
if (!iqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::FrenchINQuotes)));
|
||||
item.setSubmenu(iqs);
|
||||
add(item);
|
||||
}
|
||||
if (!rqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::RussianQuotes)));
|
||||
item.setSubmenu(rqs);
|
||||
add(item);
|
||||
}
|
||||
if (!jqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::CJKQuotes)));
|
||||
item.setSubmenu(jqs);
|
||||
add(item);
|
||||
}
|
||||
if (!kqs.empty()) {
|
||||
MenuItem item(MenuItem::Submenu,
|
||||
toqstr(quoteparams.getGuiLabel(InsetQuotesParams::CJKAngleQuotes)));
|
||||
item.setSubmenu(kqs);
|
||||
add(item);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -93,6 +93,111 @@ int InsetQuotesParams::stylescount() const
|
||||
}
|
||||
|
||||
|
||||
char InsetQuotesParams::getStyleChar(QuoteStyle const & style) const
|
||||
{
|
||||
return style_char[style];
|
||||
}
|
||||
|
||||
|
||||
InsetQuotesParams::QuoteStyle InsetQuotesParams::getQuoteStyle(string const & s,
|
||||
bool const allow_wildcards, QuoteStyle fb)
|
||||
{
|
||||
QuoteStyle res = fb;
|
||||
|
||||
string str = s;
|
||||
if (str.length() != 3) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad string length.");
|
||||
str = "eld";
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
// '.' wildcard means: keep current style
|
||||
if (!allow_wildcards || str[0] != '.') {
|
||||
for (i = 0; i < stylescount(); ++i) {
|
||||
if (str[0] == style_char[i]) {
|
||||
res = QuoteStyle(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= stylescount()) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad style specification.");
|
||||
res = EnglishQuotes;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
InsetQuotesParams::QuoteSide InsetQuotesParams::getQuoteSide(string const & s,
|
||||
bool const allow_wildcards, QuoteSide fb)
|
||||
{
|
||||
QuoteSide res = fb;
|
||||
|
||||
string str = s;
|
||||
if (str.length() != 3) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad string length.");
|
||||
str = "eld";
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
// '.' wildcard means: keep current side
|
||||
if (!allow_wildcards || str[1] != '.') {
|
||||
for (i = 0; i < 2; ++i) {
|
||||
if (str[1] == side_char[i]) {
|
||||
res = InsetQuotesParams::QuoteSide(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= 2) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad side specification.");
|
||||
res = OpeningQuote;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
InsetQuotesParams::QuoteLevel InsetQuotesParams::getQuoteLevel(string const & s,
|
||||
bool const allow_wildcards, QuoteLevel fb)
|
||||
{
|
||||
QuoteLevel res = fb;
|
||||
|
||||
string str = s;
|
||||
if (str.length() != 3) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad string length.");
|
||||
str = "eld";
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
// '.' wildcard means: keep current level
|
||||
if (!allow_wildcards || str[2] != '.') {
|
||||
for (i = 0; i < 2; ++i) {
|
||||
if (str[2] == level_char[i]) {
|
||||
res = InsetQuotesParams::QuoteLevel(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= 2) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad level specification.");
|
||||
res = InsetQuotesParams::PrimaryQuotes;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
char_type InsetQuotesParams::getQuoteChar(QuoteStyle const & style, QuoteLevel const & level,
|
||||
QuoteSide const & side) const
|
||||
{
|
||||
@ -456,14 +561,36 @@ map<string, docstring> InsetQuotesParams::getTypes() const
|
||||
}
|
||||
|
||||
|
||||
docstring const InsetQuotesParams::getGuiLabel(QuoteStyle const & qs)
|
||||
docstring const InsetQuotesParams::getGuiLabel(QuoteStyle const & qs, bool langdef)
|
||||
{
|
||||
return bformat(_("%1$souter%2$s and %3$sinner%4$s[[quotation marks]]"),
|
||||
docstring(1, quoteparams.getQuoteChar(qs, PrimaryQuotes, OpeningQuote)),
|
||||
docstring(1, quoteparams.getQuoteChar(qs, PrimaryQuotes, ClosingQuote)),
|
||||
docstring(1, quoteparams.getQuoteChar(qs, SecondaryQuotes, OpeningQuote)),
|
||||
docstring(1, quoteparams.getQuoteChar(qs, SecondaryQuotes, ClosingQuote))
|
||||
);
|
||||
docstring const styledesc =
|
||||
bformat(_("%1$souter%2$s and %3$sinner%4$s[[quotation marks]]"),
|
||||
docstring(1, getQuoteChar(qs, PrimaryQuotes, OpeningQuote)),
|
||||
docstring(1, getQuoteChar(qs, PrimaryQuotes, ClosingQuote)),
|
||||
docstring(1, getQuoteChar(qs, SecondaryQuotes, OpeningQuote)),
|
||||
docstring(1, getQuoteChar(qs, SecondaryQuotes, ClosingQuote))
|
||||
);
|
||||
|
||||
if (!langdef)
|
||||
return styledesc;
|
||||
|
||||
return bformat(_("%1$s[[quot. mark description]] (language default)"),
|
||||
styledesc);
|
||||
}
|
||||
|
||||
|
||||
docstring const InsetQuotesParams::getShortGuiLabel(docstring const string)
|
||||
{
|
||||
std::string const s = to_ascii(string);
|
||||
QuoteStyle const style = getQuoteStyle(s);
|
||||
QuoteSide const side = getQuoteSide(s);
|
||||
QuoteLevel const level = getQuoteLevel(s);
|
||||
|
||||
return (side == OpeningQuote) ?
|
||||
bformat(_("%1$stext"),
|
||||
docstring(1, getQuoteChar(style, level, side))) :
|
||||
bformat(_("text%1$s"),
|
||||
docstring(1, getQuoteChar(style, level, side)));
|
||||
}
|
||||
|
||||
|
||||
@ -536,59 +663,9 @@ void InsetQuotes::setSide(char_type c)
|
||||
|
||||
void InsetQuotes::parseString(string const & s, bool const allow_wildcards)
|
||||
{
|
||||
string str = s;
|
||||
if (str.length() != 3) {
|
||||
lyxerr << "ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad string length." << endl;
|
||||
str = "eld";
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
// '.' wildcard means: keep current stylee
|
||||
if (!allow_wildcards || str[0] != '.') {
|
||||
for (i = 0; i < quoteparams.stylescount(); ++i) {
|
||||
if (str[0] == style_char[i]) {
|
||||
style_ = InsetQuotesParams::QuoteStyle(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= quoteparams.stylescount()) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad style specification.");
|
||||
style_ = InsetQuotesParams::EnglishQuotes;
|
||||
}
|
||||
}
|
||||
|
||||
// '.' wildcard means: keep current side
|
||||
if (!allow_wildcards || str[1] != '.') {
|
||||
for (i = 0; i < 2; ++i) {
|
||||
if (str[1] == side_char[i]) {
|
||||
side_ = InsetQuotesParams::QuoteSide(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= 2) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad side specification.");
|
||||
side_ = InsetQuotesParams::OpeningQuote;
|
||||
}
|
||||
}
|
||||
|
||||
// '.' wildcard means: keep current level
|
||||
if (!allow_wildcards || str[2] != '.') {
|
||||
for (i = 0; i < 2; ++i) {
|
||||
if (str[2] == level_char[i]) {
|
||||
level_ = InsetQuotesParams::QuoteLevel(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= 2) {
|
||||
LYXERR0("ERROR (InsetQuotes::InsetQuotes):"
|
||||
" bad level specification.");
|
||||
level_ = InsetQuotesParams::PrimaryQuotes;
|
||||
}
|
||||
}
|
||||
style_ = quoteparams.getQuoteStyle(s, allow_wildcards, style_);
|
||||
side_ = quoteparams.getQuoteSide(s, allow_wildcards, side_);
|
||||
level_ = quoteparams.getQuoteLevel(s, allow_wildcards, level_);
|
||||
}
|
||||
|
||||
|
||||
|
@ -81,10 +81,27 @@ public:
|
||||
docstring getLaTeXQuote(char_type c, std::string const &) const;
|
||||
///
|
||||
docstring getHTMLQuote(char_type c) const;
|
||||
/// Returns a label suitable for dialog and menu
|
||||
docstring const getGuiLabel(QuoteStyle const & qs);
|
||||
/// Returns a descriptive label of a style suitable for dialog and menu
|
||||
docstring const getGuiLabel(QuoteStyle const & qs,
|
||||
bool langdef = false);
|
||||
/// Returns a descriptive label of a given char
|
||||
docstring const getShortGuiLabel(docstring const string);
|
||||
///
|
||||
int stylescount() const;
|
||||
/// Returns the matching style shortcut char
|
||||
char getStyleChar(QuoteStyle const & style) const;
|
||||
/// Returns the quote style from the shortcut string
|
||||
QuoteStyle getQuoteStyle(std::string const & s,
|
||||
bool const allow_wildcards = false,
|
||||
QuoteStyle fallback = EnglishQuotes);
|
||||
/// Returns the quote sind from the shortcut string
|
||||
QuoteSide getQuoteSide(std::string const & s,
|
||||
bool const allow_wildcards = false,
|
||||
QuoteSide fallback = OpeningQuote);
|
||||
/// Returns the quote level from the shortcut string
|
||||
QuoteLevel getQuoteLevel(std::string const & s,
|
||||
bool const allow_wildcards = false,
|
||||
QuoteLevel fallback = PrimaryQuotes);
|
||||
};
|
||||
|
||||
///
|
||||
|
Loading…
Reference in New Issue
Block a user