X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fapplication.cpp;fp=pv%2Fapplication.cpp;h=67e0444f435b53fa8c67ae3f51a6058db0ba7e37;hp=e933f96214d94c72620a088f7e766e8a675b574b;hb=380f4ee6f9e2995084afd395698b7eafc7012942;hpb=0466001be51e779b23aaebec1cc9361305c07be9 diff --git a/pv/application.cpp b/pv/application.cpp index e933f962..67e0444f 100644 --- a/pv/application.cpp +++ b/pv/application.cpp @@ -21,6 +21,9 @@ #include #include +#include +#include +#include #include @@ -61,6 +64,22 @@ Application::Application(int &argc, char* argv[]) : setOrganizationDomain("sigrok.org"); } +QStringList Application::get_languages() +{ + QStringList files = QDir(":/l10n/").entryList(QStringList("*.qm"), QDir::Files); + + QStringList result; + result << "en"; // Add default language to the set + + // Remove file extensions + for (QString file : files) + result << file.split(".").front(); + + result.sort(Qt::CaseInsensitive); + + return result; +} + void Application::switch_language(const QString& language) { removeTranslator(&app_translator_); @@ -81,6 +100,20 @@ void Application::switch_language(const QString& language) else qWarning() << "Translation resource" << resource << "not found"; } + + if (!topLevelWidgets().empty()) { + // Force all windows to update + for (QWidget *widget : topLevelWidgets()) + widget->update(); + + QMessageBox msg(topLevelWidgets().front()); + msg.setText(tr("Some parts of the application may still " \ + "use the previous language. Re-opening the affected windows or " \ + "restarting the application will remedy this.")); + msg.setStandardButtons(QMessageBox::Ok); + msg.setIcon(QMessageBox::Information); + msg.exec(); + } } void Application::on_setting_changed(const QString &key, const QVariant &value)