mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-10-22 07:21:21 +00:00
GUI: BCP 47: make use of ISO 639-3 languages configurable
Part of the implementation of #3007.
This commit is contained in:
parent
6a5b4b97db
commit
10e48d0841
@ -36,7 +36,7 @@
|
||||
|
||||
namespace mtx::gui {
|
||||
|
||||
static Iso639LanguageList s_iso639Languages, s_commonIso639Languages;
|
||||
static Iso639LanguageList s_iso639Languages, s_iso639_2Languages, s_commonIso639Languages;
|
||||
static RegionList s_regions, s_commonRegions;
|
||||
static CharacterSetList s_characterSets, s_commonCharacterSets;
|
||||
static QHash<QString, QString> s_iso639_2LanguageCodeToDescription, s_regionToDescription;
|
||||
@ -209,6 +209,7 @@ App::retranslateUi() {
|
||||
void
|
||||
App::reinitializeLanguageLists() {
|
||||
s_iso639Languages.clear();
|
||||
s_iso639_2Languages.clear();
|
||||
s_commonIso639Languages.clear();
|
||||
s_regions.clear();
|
||||
s_commonRegions.clear();
|
||||
@ -237,6 +238,7 @@ App::initializeIso639Languages() {
|
||||
auto &cfg = Util::Settings::get();
|
||||
|
||||
s_iso639Languages.reserve(mtx::iso639::g_languages.size());
|
||||
s_iso639_2Languages.reserve(mtx::iso639::g_languages.size());
|
||||
s_commonIso639Languages.reserve(cfg.m_oftenUsedLanguages.size());
|
||||
|
||||
for (auto const &language : mtx::iso639::g_languages) {
|
||||
@ -246,13 +248,16 @@ App::initializeIso639Languages() {
|
||||
auto isCommon = cfg.m_oftenUsedLanguages.indexOf(languageCode) != -1;
|
||||
|
||||
s_iso639Languages.emplace_back(description, languageCode);
|
||||
if (language.is_part_of_iso639_2)
|
||||
s_iso639_2Languages.emplace_back(description, languageCode);
|
||||
if (isCommon)
|
||||
s_commonIso639Languages.emplace_back(description, languageCode);
|
||||
|
||||
s_iso639_2LanguageCodeToDescription[languageCode] = description;
|
||||
}
|
||||
|
||||
std::sort(s_iso639Languages.begin(), s_iso639Languages.end());
|
||||
std::sort(s_iso639Languages.begin(), s_iso639Languages.end());
|
||||
std::sort(s_iso639_2Languages.begin(), s_iso639_2Languages.end());
|
||||
std::sort(s_commonIso639Languages.begin(), s_commonIso639Languages.end());
|
||||
}
|
||||
|
||||
@ -306,6 +311,12 @@ App::iso639Languages() {
|
||||
return s_iso639Languages;
|
||||
}
|
||||
|
||||
Iso639LanguageList const &
|
||||
App::iso639_2Languages() {
|
||||
initializeLanguageLists();
|
||||
return s_iso639_2Languages;
|
||||
}
|
||||
|
||||
Iso639LanguageList const &
|
||||
App::commonIso639Languages() {
|
||||
initializeLanguageLists();
|
||||
|
@ -101,6 +101,7 @@ public:
|
||||
static Jobs::ProgramRunner &programRunner();
|
||||
|
||||
static Iso639LanguageList const &iso639Languages();
|
||||
static Iso639LanguageList const &iso639_2Languages();
|
||||
static Iso639LanguageList const &commonIso639Languages();
|
||||
static RegionList const ®ions();
|
||||
static RegionList const &commonRegions();
|
||||
|
@ -314,6 +314,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbUseISO639_3Languages">
|
||||
<property name="text">
|
||||
<string>Enable &ISO 639-3 languages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbOftenUsedLanguagesOnly">
|
||||
<property name="text">
|
||||
@ -2200,6 +2207,7 @@
|
||||
<tabstop>cbGuiWarnBeforeOverwriting</tabstop>
|
||||
<tabstop>tbOftenUsedXYZ</tabstop>
|
||||
<tabstop>tbOftenUsedLanguages</tabstop>
|
||||
<tabstop>cbUseISO639_3Languages</tabstop>
|
||||
<tabstop>cbOftenUsedLanguagesOnly</tabstop>
|
||||
<tabstop>tbOftenUsedRegions</tabstop>
|
||||
<tabstop>cbOftenUsedRegionsOnly</tabstop>
|
||||
|
@ -76,10 +76,12 @@ PreferencesDialog::PreferencesDialog(QWidget *parent,
|
||||
adjustRemoveOldJobsControls();
|
||||
setupJobRemovalPolicy();
|
||||
|
||||
setupCommonLanguages();
|
||||
setupCommonLanguages(m_cfg.m_useISO639_3Languages);
|
||||
setupCommonRegions();
|
||||
setupCommonCharacterSets();
|
||||
|
||||
ui->cbUseISO639_3Languages->setChecked(m_cfg.m_useISO639_3Languages);
|
||||
|
||||
// Merge page
|
||||
if (!m_cfg.m_mediaInfoExe.isEmpty())
|
||||
ui->leMMediaInfoExe->setText(QDir::toNativeSeparators(m_cfg.m_mediaInfoExe));
|
||||
@ -505,6 +507,8 @@ PreferencesDialog::setupToolTips() {
|
||||
|
||||
void
|
||||
PreferencesDialog::setupConnections() {
|
||||
connect(ui->cbUseISO639_3Languages, &QCheckBox::toggled, this, &PreferencesDialog::setupCommonLanguages);
|
||||
|
||||
connect(ui->pbMEditDefaultAdditionalCommandLineOptions, &QPushButton::clicked, this, &PreferencesDialog::editDefaultAdditionalCommandLineOptions);
|
||||
|
||||
connect(ui->pbMBrowseMediaInfoExe, &QPushButton::clicked, this, &PreferencesDialog::browseMediaInfoExe);
|
||||
@ -575,8 +579,8 @@ PreferencesDialog::setupJobRemovalPolicy() {
|
||||
}
|
||||
|
||||
void
|
||||
PreferencesDialog::setupCommonLanguages() {
|
||||
auto &allLanguages = App::iso639Languages();
|
||||
PreferencesDialog::setupCommonLanguages(bool withISO639_3) {
|
||||
auto &allLanguages = withISO639_3 ? App::iso639Languages() : App::iso639_2Languages();
|
||||
|
||||
ui->tbOftenUsedLanguages->setItems(QList<Util::SideBySideMultiSelect::Item>::fromVector(Util::stdVectorToQVector<Util::SideBySideMultiSelect::Item>(allLanguages)), m_cfg.m_oftenUsedLanguages);
|
||||
ui->cbOftenUsedLanguagesOnly->setChecked(m_cfg.m_oftenUsedLanguagesOnly && !m_cfg.m_oftenUsedLanguages.isEmpty());
|
||||
@ -962,6 +966,7 @@ PreferencesDialog::save() {
|
||||
m_cfg.m_oftenUsedLanguagesOnly = ui->cbOftenUsedLanguagesOnly ->isChecked() && !m_cfg.m_oftenUsedLanguages .isEmpty();
|
||||
m_cfg.m_oftenUsedRegionsOnly = ui->cbOftenUsedRegionsOnly ->isChecked() && !m_cfg.m_oftenUsedRegions .isEmpty();
|
||||
m_cfg.m_oftenUsedCharacterSetsOnly = ui->cbOftenUsedCharacterSetsOnly->isChecked() && !m_cfg.m_oftenUsedCharacterSets.isEmpty();
|
||||
m_cfg.m_useISO639_3Languages = ui->cbUseISO639_3Languages ->isChecked();
|
||||
|
||||
// Info tool page
|
||||
m_cfg.m_defaultInfoJobSettings = ui->wIDefaultJobSettings->settings();
|
||||
|
@ -72,6 +72,7 @@ public Q_SLOTS:
|
||||
void adjustPlaylistControls();
|
||||
void adjustRemoveOldJobsControls();
|
||||
void revertDeriveTrackLanguageFromFileNameRegex();
|
||||
void setupCommonLanguages(bool withISO639_3);
|
||||
|
||||
void enableOftendUsedLanguagesOnly();
|
||||
void enableOftendUsedRegionsOnly();
|
||||
@ -91,7 +92,6 @@ protected:
|
||||
void setupDerivingTrackLanguagesFromFileName();
|
||||
void setupWhenToSetDefaultLanguage();
|
||||
void setupJobRemovalPolicy();
|
||||
void setupCommonLanguages();
|
||||
void setupCommonRegions();
|
||||
void setupCommonCharacterSets();
|
||||
void setupProcessPriority();
|
||||
|
@ -70,9 +70,11 @@ LanguageComboBox::setup(bool withEmpty,
|
||||
insertSeparator(commonLanguages.size() + separatorOffset);
|
||||
}
|
||||
|
||||
if (!onlyOftenUsed)
|
||||
for (auto const &language : App::iso639Languages())
|
||||
if (!onlyOftenUsed) {
|
||||
auto &languages = Util::Settings::get().m_useISO639_3Languages ? App::iso639Languages() : App::iso639_2Languages();
|
||||
for (auto const &language : languages)
|
||||
addItem(language.first, language.second);
|
||||
}
|
||||
|
||||
view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
Util::fixComboBoxViewWidth(*this);
|
||||
|
@ -331,9 +331,10 @@ Settings::load() {
|
||||
m_oftenUsedRegions = reg.value(s_valOftenUsedRegions).toStringList();
|
||||
m_oftenUsedCharacterSets = reg.value(s_valOftenUsedCharacterSets).toStringList();
|
||||
|
||||
m_oftenUsedLanguagesOnly = reg.value(s_valOftenUsedLanguagesOnly, false).toBool();;
|
||||
m_oftenUsedRegionsOnly = reg.value(s_valOftenUsedRegionsOnly, false).toBool();;
|
||||
m_oftenUsedCharacterSetsOnly = reg.value(s_valOftenUsedCharacterSetsOnly, false).toBool();;
|
||||
m_oftenUsedLanguagesOnly = reg.value(s_valOftenUsedLanguagesOnly, false).toBool();
|
||||
m_oftenUsedRegionsOnly = reg.value(s_valOftenUsedRegionsOnly, false).toBool();
|
||||
m_oftenUsedCharacterSetsOnly = reg.value(s_valOftenUsedCharacterSetsOnly, false).toBool();
|
||||
m_useISO639_3Languages = reg.value(s_valUseISO639_3Languages, false).toBool();
|
||||
|
||||
m_scanForPlaylistsPolicy = static_cast<ScanForPlaylistsPolicy>(reg.value(s_valScanForPlaylistsPolicy, static_cast<int>(AskBeforeScanning)).toInt());
|
||||
m_minimumPlaylistDuration = reg.value(s_valMinimumPlaylistDuration, 120).toUInt();
|
||||
@ -692,6 +693,7 @@ Settings::save()
|
||||
reg.setValue(s_valOftenUsedLanguagesOnly, m_oftenUsedLanguagesOnly);
|
||||
reg.setValue(s_valOftenUsedRegionsOnly, m_oftenUsedRegionsOnly);
|
||||
reg.setValue(s_valOftenUsedCharacterSetsOnly, m_oftenUsedCharacterSetsOnly);
|
||||
reg.setValue(s_valUseISO639_3Languages, m_useISO639_3Languages);
|
||||
|
||||
reg.setValue(s_valScanForPlaylistsPolicy, static_cast<int>(m_scanForPlaylistsPolicy));
|
||||
reg.setValue(s_valMinimumPlaylistDuration, m_minimumPlaylistDuration);
|
||||
|
@ -157,6 +157,7 @@ public:
|
||||
QString m_chapterNameTemplate, m_defaultChapterCountry, m_ceTextFileCharacterSet, m_defaultSubtitleCharset, m_defaultAdditionalMergeOptions;
|
||||
QStringList m_oftenUsedLanguages, m_oftenUsedRegions, m_oftenUsedCharacterSets;
|
||||
bool m_oftenUsedLanguagesOnly, m_oftenUsedRegionsOnly, m_oftenUsedCharacterSetsOnly;
|
||||
bool m_useISO639_3Languages;
|
||||
ProcessPriority m_priority;
|
||||
double m_probeRangePercentage;
|
||||
QTabWidget::TabPosition m_tabPosition;
|
||||
|
@ -123,6 +123,7 @@ char const * const s_valUiStayOnTop = "uiStayOnTop";
|
||||
char const * const s_valUiLocale = "uiLocale";
|
||||
char const * const s_valUniqueOutputFileNames = "uniqueOutputFileNames";
|
||||
char const * const s_valUseDefaultJobDescription = "useDefaultJobDescription";
|
||||
char const * const s_valUseISO639_3Languages = "useISO639_3Languages";
|
||||
char const * const s_valVerbosity = "verbosity";
|
||||
char const * const s_valVideoPolicy = "videoPolicy";
|
||||
char const * const s_valVolume = "volume";
|
||||
|
Loading…
Reference in New Issue
Block a user