QMap<QString, QString> ttfonts_;
QMap<QString, QString> mathfonts_;
+enum EncodingSets {
+ unicode = 0,
+ legacy = 1,
+ custom = 2
+};
} // anonymous namespace
this, SLOT(change_adaptor()));
connect(langModule->languageCO, SIGNAL(activated(int)),
this, SLOT(languageChanged(int)));
- connect(langModule->unicodeEncodingCO, SIGNAL(activated(int)),
- this, SLOT(change_adaptor()));
- connect(langModule->autoEncodingCO, SIGNAL(activated(int)),
+ connect(langModule->encodingCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
+ connect(langModule->encodingCO, SIGNAL(activated(int)),
+ this, SLOT(encodingSwitched(int)));
+ connect(langModule->unicodeEncodingCO, SIGNAL(activated(int)),
+ this, SLOT(change_adaptor()));
connect(langModule->customEncodingCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
- connect(langModule->autoEncodingRB, SIGNAL(toggled(bool)),
- this, SLOT(change_encoding()));
- connect(langModule->unicodeEncodingRB, SIGNAL(toggled(bool)),
- this, SLOT(change_encoding()));
- connect(langModule->customEncodingRB, SIGNAL(toggled(bool)),
- this, SLOT(change_encoding()));
+ connect(langModule->noInputencCB, SIGNAL(clicked()),
+ this, SLOT(change_adaptor()));
connect(langModule->quoteStyleCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
connect(langModule->languagePackageCO, SIGNAL(activated(int)),
langModule->languageCO->setModel(language_model);
langModule->languageCO->setModelColumn(0);
+ langModule->encodingCO->addItem(qt_("Unicode (utf8)"));
+ langModule->encodingCO->addItem(qt_("Traditional (auto-selected)"));
+ langModule->encodingCO->addItem(qt_("Custom"));
+ langModule->encodingCO->setItemData(EncodingSets::unicode,
+ "Use Unicode (utf8) for the latex source.", Qt::ToolTipRole);
+ langModule->encodingCO->setItemData(EncodingSets::legacy,
+ "Use legacy default encodings depending on text language.", Qt::ToolTipRole);
+ langModule->encodingCO->setItemData(EncodingSets::custom,
+ "Select a custom, document-wide encoding.", Qt::ToolTipRole);
+
QMap<QString,QString> encodingmap_utf8;
for (auto const & encvar : encodings) {
if (!encvar.unsafe() && !encvar.guiName().empty()
++it8;
}
- langModule->autoEncodingCO->addItem(qt_("legacy language default"), toqstr("auto-legacy"));
- langModule->autoEncodingCO->addItem(qt_("legacy language default (no inputenc)"), toqstr("auto-legacy-plain"));
-
QMap<QString,QString> encodingmap;
for (auto const & encvar : encodings) {
if (!encvar.unsafe() && !encvar.guiName().empty()
langModule->customEncodingCO->addItem(it.key(), it.value());
++it;
}
+ // equalise the width of encoding selectors
+ langModule->unicodeEncodingCO->setMinimumSize(
+ langModule->customEncodingCO->minimumSizeHint());
+ langModule->noInputencCB->setMinimumSize(
+ langModule->customEncodingCO->minimumSizeHint());
langModule->languagePackageCO->addItem(
qt_("Default"), toqstr("default"));
changed();
}
-void GuiDocument::change_encoding()
-{
- encodingSwitched();
- nonModuleChanged_ = true;
- changed();
-}
void GuiDocument::shellescapeChanged()
{
fontModule->font_math = font_math;
fontModule->font_sf_scale = font_sf_scale;
fontModule->font_tt_scale = font_tt_scale;
- // enable/disable input encoding selection
- langModule->unicodeEncodingRB->setEnabled(tex_fonts);
- langModule->autoEncodingRB->setEnabled(tex_fonts);
- langModule->customEncodingRB->setEnabled(tex_fonts);
- encodingSwitched();
+
+ // non-tex fonts override the "\inputencoding" option with "utf8-plain"
+ langModule->encodingCO->setEnabled(tex_fonts);
+ inputencodingToDialog();
fontModule->fontsDefaultCO->setEnabled(tex_fonts);
fontModule->fontsDefaultLA->setEnabled(tex_fonts);
}
-void GuiDocument::encodingSwitched()
+void GuiDocument::encodingSwitched(int i)
{
bool const tex_fonts = !fontModule->osFontsCB->isChecked();
- langModule->unicodeEncodingCO->setEnabled(tex_fonts
- && langModule->unicodeEncodingRB->isChecked());
- langModule->autoEncodingCO->setEnabled(tex_fonts
- && langModule->autoEncodingRB->isChecked());
- langModule->customEncodingCO->setEnabled(tex_fonts
- && langModule->customEncodingRB->isChecked());
+ langModule->unicodeEncodingCO->setEnabled(tex_fonts);
+ langModule->customEncodingCO->setEnabled(tex_fonts);
+ langModule->noInputencCB->setEnabled(tex_fonts);
+ langModule->unicodeEncodingCO->setVisible(i == EncodingSets::unicode);
+ langModule->noInputencCB->setVisible(i == EncodingSets::legacy);
+ langModule->customEncodingCO->setVisible(i == EncodingSets::custom);
+}
+
+void GuiDocument::inputencodingToDialog()
+{
+ QString inputenc = toqstr(bp_.inputenc);
+ int p;
+ if (fontModule->osFontsCB->isChecked()) { // non-tex fonts require utf8-plain
+ langModule->encodingCO->setCurrentIndex(EncodingSets::unicode);
+ langModule->unicodeEncodingCO->setCurrentIndex(
+ langModule->unicodeEncodingCO->findData("utf8-plain"));
+ } else if (inputenc.startsWith("utf8")) {
+ langModule->encodingCO->setCurrentIndex(EncodingSets::unicode);
+ p = langModule->unicodeEncodingCO->findData(inputenc);
+ if (p != -1)
+ langModule->unicodeEncodingCO->setCurrentIndex(p);
+ } else if (inputenc.startsWith("auto")) {
+ langModule->encodingCO->setCurrentIndex(EncodingSets::legacy);
+ langModule->noInputencCB->setChecked(inputenc == "auto-legacy-plain");
+ } else {
+ langModule->encodingCO->setCurrentIndex(EncodingSets::custom);
+ p = langModule->customEncodingCO->findData(inputenc);
+ if (p != -1)
+ langModule->customEncodingCO->setCurrentIndex(p);
+ else
+ langModule->encodingCO->setCurrentIndex(EncodingSets::unicode);
+ }
+ encodingSwitched(langModule->encodingCO->currentIndex());
}
indicesModule->apply(bp_);
// language & quotes
- if (langModule->unicodeEncodingRB->isChecked())
- bp_.inputenc = fromqstr(langModule->unicodeEncodingCO->itemData(
- langModule->unicodeEncodingCO->currentIndex()).toString());
- else if (langModule->autoEncodingRB->isChecked())
- bp_.inputenc = fromqstr(langModule->autoEncodingCO->itemData(
- langModule->autoEncodingCO->currentIndex()).toString());
- else if (langModule->customEncodingRB->isChecked())
- bp_.inputenc = fromqstr(langModule->customEncodingCO->itemData(
- langModule->customEncodingCO->currentIndex()).toString());
- else // this should never happen
- bp_.inputenc = "utf8";
-
+ switch (langModule->encodingCO->currentIndex()) {
+ case EncodingSets::unicode: {
+ bp_.inputenc = fromqstr(langModule->unicodeEncodingCO->itemData(
+ langModule->unicodeEncodingCO->currentIndex()).toString());
+ break;
+ }
+ case EncodingSets::legacy: {
+ bp_.inputenc = "auto-legacy";
+ if (langModule->noInputencCB->isChecked())
+ bp_.inputenc = "auto-legacy-plain";
+ break;
+ }
+ case EncodingSets::custom: {
+ bp_.inputenc = fromqstr(langModule->customEncodingCO->itemData(
+ langModule->customEncodingCO->currentIndex()).toString());
+ break;
+ }
+ default:
+ // this should never happen
+ bp_.inputenc = "utf8";
+ }
bp_.quotes_style = (InsetQuotesParams::QuoteStyle) langModule->quoteStyleCO->itemData(
langModule->quoteStyleCO->currentIndex()).toInt();
bp_.dynamic_quotes = langModule->dynamicQuotesCB->isChecked();
langModule->quoteStyleCO->setCurrentIndex(
langModule->quoteStyleCO->findData(bp_.quotes_style));
langModule->dynamicQuotesCB->setChecked(bp_.dynamic_quotes);
- // LaTeX input encoding
- QString inputenc = toqstr(bp_.inputenc);
- int p;
- if (inputenc.startsWith("utf8")) {
- langModule->unicodeEncodingRB->setChecked(true);
- p = langModule->unicodeEncodingCO->findData(inputenc);
- if (p != -1) {
- langModule->unicodeEncodingCO->setCurrentIndex(p);
- }
- } else if (inputenc.startsWith("auto")) {
- langModule->autoEncodingRB->setChecked(true);
- p = langModule->autoEncodingCO->findData(inputenc);
- if (p != -1) {
- langModule->autoEncodingCO->setCurrentIndex(p);
- }
- } else {
- langModule->customEncodingRB->setChecked(true);
- p = langModule->customEncodingCO->findData(inputenc);
- if (p != -1) {
- langModule->customEncodingCO->setCurrentIndex(p);
- }
- }
- encodingSwitched();
- // language package
- p = langModule->languagePackageCO->findData(toqstr(bp_.lang_package));
+
+ // LaTeX input encoding: set after the fonts (see below)
+
+ int p = langModule->languagePackageCO->findData(toqstr(bp_.lang_package));
if (p == -1) {
langModule->languagePackageCO->setCurrentIndex(
langModule->languagePackageCO->findData("custom"));
fontModule->fontencLE->setText(toqstr(bp_.fontenc));
}
+ // LaTeX input encoding
+ // Set after fonts because non-tex fonts override "\inputencoding".
+ inputencodingToDialog();
+
// Formats
// This must be set _after_ fonts since updateDefaultFormat()
// checks osFontsCB settings.
</item>
<item row="1" column="0" colspan="2">
<layout class="QGridLayout" name="gridLayout">
- <item row="0" column="2">
- <widget class="QComboBox" name="unicodeEncodingCO">
- <property name="enabled">
- <bool>false</bool>
+ <item row="0" column="0">
+ <widget class="QLabel" name="encodingLA">
+ <property name="text">
+ <string>&Encoding:</string>
</property>
- <property name="toolTip">
- <string>Select Unicode (utf8) variant.</string>
+ <property name="buddy">
+ <cstring>encodingCO</cstring>
</property>
</widget>
</item>
- <item row="1" column="2">
- <widget class="QComboBox" name="autoEncodingCO">
+ <item row="0" column="1">
+ <widget class="QComboBox" name="encodingCO">
<property name="enabled">
- <bool>false</bool>
- </property>
- <property name="toolTip">
- <string>Specify whether to load the 'inputenc' package
- and write input encoding switch commands to the source.</string>
+ <bool>true</bool>
</property>
- </widget>
- </item>
- <item row="2" column="2">
- <widget class="QComboBox" name="customEncodingCO">
- <property name="enabled">
+ <property name="duplicatesEnabled">
<bool>false</bool>
</property>
<property name="toolTip">
- <string>Select encoding</string>
+ <string>Select encoding of the generated LaTeX source
+ (LaTeX input encoding).</string>
</property>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QComboBox" name="languagePackageCO">
+ <item row="0" column="2">
+ <widget class="QComboBox" name="unicodeEncodingCO">
+ <property name="visible">
+ <bool>true</bool>
+ </property>
<property name="toolTip">
- <string>Select which language package LyX should use</string>
+ <string>Select Unicode (utf8) variant.</string>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QLabel" name="languagePackageLA">
- <property name="text">
- <string>Language pa&ckage:</string>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="noInputencCB">
+ <property name="Checked">
+ <bool>false</bool>
</property>
- <property name="buddy">
- <cstring>languagePackageCO</cstring>
+ <property name="visible">
+ <bool>false</bool>
</property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="encodingLA">
<property name="text">
- <string>&Encoding:</string>
+ <string>Do not load inputenc</string>
</property>
<property name="toolTip">
- <string>Encoding of the generated LaTeX source
- (LaTeX input encoding).</string>
- </property>
- <property name="buddy">
- <cstring>unicodeEncodingRB</cstring>
+ <string>Do not to load the 'inputenc' package
+ nor write input encoding switch commands to the source.</string>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QRadioButton" name="unicodeEncodingRB">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Unicode</string>
+ <item row="0" column="2">
+ <widget class="QComboBox" name="customEncodingCO">
+ <property name="visible">
+ <bool>false</bool>
</property>
<property name="toolTip">
- <string>Set input encoding to Unicode (utf8).</string>
+ <string>Select encoding</string>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QRadioButton" name="autoEncodingRB">
- <property name="enabled">
- <bool>true</bool>
- </property>
+ <item row="3" column="0">
+ <widget class="QLabel" name="languagePackageLA">
<property name="text">
- <string>Automatic</string>
+ <string>Language pa&ckage:</string>
</property>
- <property name="toolTip">
- <string>Use language specific legacy encodings.</string>
+ <property name="buddy">
+ <cstring>languagePackageCO</cstring>
</property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="QRadioButton" name="customEncodingRB">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Custom</string>
- </property>
+ <item row="3" column="1">
+ <widget class="QComboBox" name="languagePackageCO">
<property name="toolTip">
- <string>Use custom document-wide encoding.</string>
+ <string>Select which language package LyX should use</string>
</property>
</widget>
</item>