Merge pull request #1726 from CookiePLMonster/misc-qt-stuff

Misc Qt stuff
This commit is contained in:
Connor McLaughlin 2021-03-06 02:18:44 +10:00 committed by GitHub
commit 56b522a902
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 85 additions and 26 deletions

View File

@ -116,6 +116,7 @@ endif()
set(TS_FILES set(TS_FILES
translations/duckstation-qt_de.ts translations/duckstation-qt_de.ts
translations/duckstation-qt_en.ts
translations/duckstation-qt_es.ts translations/duckstation-qt_es.ts
translations/duckstation-qt_fr.ts translations/duckstation-qt_fr.ts
translations/duckstation-qt_he.ts translations/duckstation-qt_he.ts

View File

@ -83,8 +83,7 @@ void AudioSettingsWidget::updateBufferingLabel()
} }
const float max_latency = AudioStream::GetMaxLatency(HostInterface::AUDIO_SAMPLE_RATE, actual_buffer_size); const float max_latency = AudioStream::GetMaxLatency(HostInterface::AUDIO_SAMPLE_RATE, actual_buffer_size);
m_ui.bufferingLabel->setText(tr("Maximum Latency: %1 frames (%2ms)") m_ui.bufferingLabel->setText(tr("Maximum Latency: %n frames (%1ms)", "", actual_buffer_size)
.arg(actual_buffer_size)
.arg(static_cast<double>(max_latency) * 1000.0, 0, 'f', 2)); .arg(static_cast<double>(max_latency) * 1000.0, 0, 'f', 2));
} }

View File

@ -544,7 +544,7 @@ bool AutoUpdaterDialog::doUpdate(const QString& zip_path, const QString& updater
} }
QStringList arguments; QStringList arguments;
arguments << QStringLiteral("%1").arg(QCoreApplication::applicationPid()); arguments << QString::number(QCoreApplication::applicationPid());
arguments << destination_path; arguments << destination_path;
arguments << zip_path; arguments << zip_path;
arguments << program_path; arguments << program_path;

View File

@ -48,9 +48,9 @@ static QString formatHexAndDecValue(u32 value, u8 size, bool is_signed)
static QString formatValue(u32 value, bool is_signed) static QString formatValue(u32 value, bool is_signed)
{ {
if (is_signed) if (is_signed)
return QStringLiteral("%1").arg(static_cast<int>(value)); return QString::number(static_cast<int>(value));
else else
return QStringLiteral("%1").arg(static_cast<uint>(value)); return QString::number(static_cast<uint>(value));
} }
CheatManagerDialog::CheatManagerDialog(QWidget* parent) : QDialog(parent) CheatManagerDialog::CheatManagerDialog(QWidget* parent) : QDialog(parent)

View File

@ -102,7 +102,7 @@ DisplaySettingsWidget::DisplaySettingsWidget(QtHostInterface* host_interface, QW
tr("Adds padding to the display area to ensure that the ratio between pixels on the host to " tr("Adds padding to the display area to ensure that the ratio between pixels on the host to "
"pixels in the console is an integer number. <br>May result in a sharper image in some 2D games.")); "pixels in the console is an integer number. <br>May result in a sharper image in some 2D games."));
dialog->registerWidgetHelp( dialog->registerWidgetHelp(
m_ui.displayIntegerScaling, tr("Stretch To Fill"), tr("Unchecked"), m_ui.displayStretch, tr("Stretch To Fill"), tr("Unchecked"),
tr("Fills the window with the active display area, regardless of the aspect ratio.")); tr("Fills the window with the active display area, regardless of the aspect ratio."));
dialog->registerWidgetHelp( dialog->registerWidgetHelp(
m_ui.vsync, tr("VSync"), tr("Checked"), m_ui.vsync, tr("VSync"), tr("Checked"),

View File

@ -286,6 +286,9 @@
<ItemGroup> <ItemGroup>
<QtTs Include="translations\duckstation-qt_de.ts"> <QtTs Include="translations\duckstation-qt_de.ts">
<FileType>Document</FileType> <FileType>Document</FileType>
</QtTs>
<QtTs Include="translations\duckstation-qt_en.ts">
<FileType>Document</FileType>
</QtTs> </QtTs>
<QtTs Include="translations\duckstation-qt_es.ts"> <QtTs Include="translations\duckstation-qt_es.ts">
<FileType>Document</FileType> <FileType>Document</FileType>

View File

@ -180,6 +180,9 @@
<ItemGroup> <ItemGroup>
<QtTs Include="translations\duckstation-qt_de.ts"> <QtTs Include="translations\duckstation-qt_de.ts">
<Filter>translations</Filter> <Filter>translations</Filter>
</QtTs>
<QtTs Include="translations\duckstation-qt_en.ts">
<Filter>translations</Filter>
</QtTs> </QtTs>
<QtTs Include="translations\duckstation-qt_es.ts"> <QtTs Include="translations\duckstation-qt_es.ts">
<Filter>translations</Filter> <Filter>translations</Filter>

View File

@ -121,8 +121,7 @@ void EmulationSettingsWidget::updateRewind()
System::CalculateRewindMemoryUsage(frames, &ram_usage, &vram_usage); System::CalculateRewindMemoryUsage(frames, &ram_usage, &vram_usage);
m_ui.rewindSummary->setText( m_ui.rewindSummary->setText(
tr("Rewind for %1 frames, lasting %2 seconds will require up to %3MB of RAM and %4MB of VRAM.") tr("Rewind for %n frame(s), lasting %1 second(s) will require up to %2MB of RAM and %3MB of VRAM.", "", frames)
.arg(frames)
.arg(duration) .arg(duration)
.arg(ram_usage / 1048576) .arg(ram_usage / 1048576)
.arg(vram_usage / 1048576)); .arg(vram_usage / 1048576));

View File

@ -236,7 +236,7 @@ void GamePropertiesDialog::populateTracksInfo(const std::string& image_path)
const CDImage::TrackMode mode = image->GetTrackMode(static_cast<u8>(track)); const CDImage::TrackMode mode = image->GetTrackMode(static_cast<u8>(track));
const int row = static_cast<int>(track - 1u); const int row = static_cast<int>(track - 1u);
m_ui.tracks->insertRow(row); m_ui.tracks->insertRow(row);
m_ui.tracks->setItem(row, 0, new QTableWidgetItem(QStringLiteral("%1").arg(track))); m_ui.tracks->setItem(row, 0, new QTableWidgetItem(QString::number(track)));
m_ui.tracks->setItem(row, 1, new QTableWidgetItem(track_mode_strings[static_cast<u32>(mode)])); m_ui.tracks->setItem(row, 1, new QTableWidgetItem(track_mode_strings[static_cast<u32>(mode)]));
m_ui.tracks->setItem(row, 2, new QTableWidgetItem(MSFTotString(position))); m_ui.tracks->setItem(row, 2, new QTableWidgetItem(MSFTotString(position)));
m_ui.tracks->setItem(row, 3, new QTableWidgetItem(MSFTotString(length))); m_ui.tracks->setItem(row, 3, new QTableWidgetItem(MSFTotString(length)));

View File

@ -36,7 +36,7 @@ void InputBindingWidget::updateText()
if (m_bindings.empty()) if (m_bindings.empty())
setText(QString()); setText(QString());
else if (m_bindings.size() > 1) else if (m_bindings.size() > 1)
setText(tr("%1 bindings").arg(m_bindings.size())); setText(tr("%n bindings", "", m_bindings.size()));
else else
setText(QString::fromStdString(m_bindings[0])); setText(QString::fromStdString(m_bindings[0]));
} }

View File

@ -207,7 +207,7 @@ void MemoryCardEditorDialog::updateCardTable(Card* card)
card->table->setItem(row, 1, new QTableWidgetItem(QString::fromStdString(fi.title))); card->table->setItem(row, 1, new QTableWidgetItem(QString::fromStdString(fi.title)));
card->table->setItem(row, 2, new QTableWidgetItem(QString::fromStdString(fi.filename))); card->table->setItem(row, 2, new QTableWidgetItem(QString::fromStdString(fi.filename)));
card->table->setItem(row, 3, new QTableWidgetItem(QStringLiteral("%1").arg(fi.num_blocks))); card->table->setItem(row, 3, new QTableWidgetItem(QString::number(fi.num_blocks)));
} }
} }
@ -215,7 +215,7 @@ void MemoryCardEditorDialog::updateCardBlocksFree(Card* card)
{ {
card->blocks_free = MemoryCardImage::GetFreeBlockCount(card->data); card->blocks_free = MemoryCardImage::GetFreeBlockCount(card->data);
card->blocks_free_label->setText( card->blocks_free_label->setText(
tr("%1 blocks free%2").arg(card->blocks_free).arg(card->dirty ? QStringLiteral(" (*)") : QString())); tr("%n block(s) free%1", "", card->blocks_free).arg(card->dirty ? QStringLiteral(" (*)") : QString()));
} }
void MemoryCardEditorDialog::setCardDirty(Card* card) void MemoryCardEditorDialog::setCardDirty(Card* card)

View File

@ -47,7 +47,7 @@ void PostProcessingShaderConfigWidget::createUi()
QString label; QString label;
if (option.vector_size <= 1) if (option.vector_size <= 1)
{ {
label = QStringLiteral("%1").arg(QString::fromStdString(option.ui_name)); label = QString::fromStdString(option.ui_name);
} }
else else
{ {
@ -66,7 +66,7 @@ void PostProcessingShaderConfigWidget::createUi()
if (option.type == PostProcessingShader::Option::Type::Int) if (option.type == PostProcessingShader::Option::Type::Int)
{ {
slider_label->setText(QStringLiteral("%1").arg(option.value[i].int_value)); slider_label->setText(QString::number(option.value[i].int_value));
const int range = std::max(option.max_value[i].int_value - option.min_value[i].int_value, 1); const int range = std::max(option.max_value[i].int_value - option.min_value[i].int_value, 1);
const int step_value = const int step_value =
@ -81,20 +81,20 @@ void PostProcessingShaderConfigWidget::createUi()
const int new_value = std::clamp(option.min_value[i].int_value + (value * option.step_value[i].int_value), const int new_value = std::clamp(option.min_value[i].int_value + (value * option.step_value[i].int_value),
option.min_value[i].int_value, option.max_value[i].int_value); option.min_value[i].int_value, option.max_value[i].int_value);
option.value[i].int_value = new_value; option.value[i].int_value = new_value;
slider_label->setText(QStringLiteral("%1").arg(new_value)); slider_label->setText(QString::number(new_value));
configChanged(); configChanged();
}); });
connect(this, &PostProcessingShaderConfigWidget::resettingtoDefaults, connect(this, &PostProcessingShaderConfigWidget::resettingtoDefaults,
[&option, i, slider, slider_label, step_value]() { [&option, i, slider, slider_label, step_value]() {
QSignalBlocker sb(slider); QSignalBlocker sb(slider);
slider->setValue((option.default_value[i].int_value - option.min_value[i].int_value) / step_value); slider->setValue((option.default_value[i].int_value - option.min_value[i].int_value) / step_value);
slider_label->setText(QStringLiteral("%1").arg(option.default_value[i].int_value)); slider_label->setText(QString::number(option.default_value[i].int_value));
option.value = option.default_value; option.value = option.default_value;
}); });
} }
else else
{ {
slider_label->setText(QStringLiteral("%1").arg(option.value[i].float_value)); slider_label->setText(QString::number(option.value[i].float_value));
const float range = std::max(option.max_value[i].float_value - option.min_value[i].float_value, 1.0f); const float range = std::max(option.max_value[i].float_value - option.min_value[i].float_value, 1.0f);
const float step_value = const float step_value =
@ -111,7 +111,7 @@ void PostProcessingShaderConfigWidget::createUi()
(static_cast<float>(value) * option.step_value[i].float_value), (static_cast<float>(value) * option.step_value[i].float_value),
option.min_value[i].float_value, option.max_value[i].float_value); option.min_value[i].float_value, option.max_value[i].float_value);
option.value[i].float_value = new_value; option.value[i].float_value = new_value;
slider_label->setText(QStringLiteral("%1").arg(new_value)); slider_label->setText(QString::number(new_value));
configChanged(); configChanged();
}); });
connect(this, &PostProcessingShaderConfigWidget::resettingtoDefaults, connect(this, &PostProcessingShaderConfigWidget::resettingtoDefaults,
@ -119,7 +119,7 @@ void PostProcessingShaderConfigWidget::createUi()
QSignalBlocker sb(slider); QSignalBlocker sb(slider);
slider->setValue(static_cast<int>( slider->setValue(static_cast<int>(
(option.default_value[i].float_value - option.min_value[i].float_value) / step_value)); (option.default_value[i].float_value - option.min_value[i].float_value) / step_value));
slider_label->setText(QStringLiteral("%1").arg(option.default_value[i].float_value)); slider_label->setText(QString::number(option.default_value[i].float_value));
option.value = option.default_value; option.value = option.default_value;
}); });
} }

View File

@ -64,7 +64,7 @@ const char* QtHostInterface::GetFrontendName() const
std::vector<std::pair<QString, QString>> QtHostInterface::getAvailableLanguageList() std::vector<std::pair<QString, QString>> QtHostInterface::getAvailableLanguageList()
{ {
return {{QStringLiteral("English"), QStringLiteral("")}, return {{QStringLiteral("English"), QStringLiteral("en")},
{QStringLiteral("Deutsch"), QStringLiteral("de")}, {QStringLiteral("Deutsch"), QStringLiteral("de")},
{QStringLiteral("Español"), QStringLiteral("es")}, {QStringLiteral("Español"), QStringLiteral("es")},
{QStringLiteral("Français"), QStringLiteral("fr")}, {QStringLiteral("Français"), QStringLiteral("fr")},
@ -129,7 +129,7 @@ void QtHostInterface::installTranslator()
std::string language = GetStringSettingValue("Main", "Language", ""); std::string language = GetStringSettingValue("Main", "Language", "");
if (language.empty()) if (language.empty())
return; language = "en";
const QString path = const QString path =
QStringLiteral("%1/translations/duckstation-qt_%3.qm").arg(qApp->applicationDirPath()).arg(language.c_str()); QStringLiteral("%1/translations/duckstation-qt_%3.qm").arg(qApp->applicationDirPath()).arg(language.c_str());

View File

@ -44,10 +44,10 @@ struct SettingAccessor<QLineEdit>
} }
static int getIntValue(const QLineEdit* widget) { return widget->text().toInt(); } static int getIntValue(const QLineEdit* widget) { return widget->text().toInt(); }
static void setIntValue(QLineEdit* widget, int value) { widget->setText(QStringLiteral("%1").arg(value)); } static void setIntValue(QLineEdit* widget, int value) { widget->setText(QString::number(value)); }
static float getFloatValue(const QLineEdit* widget) { return widget->text().toFloat(); } static float getFloatValue(const QLineEdit* widget) { return widget->text().toFloat(); }
static void setFloatValue(QLineEdit* widget, float value) { widget->setText(QStringLiteral("%1").arg(value)); } static void setFloatValue(QLineEdit* widget, float value) { widget->setText(QString::number(value)); }
static QString getStringValue(const QLineEdit* widget) { return widget->text(); } static QString getStringValue(const QLineEdit* widget) { return widget->text(); }
static void setStringValue(QLineEdit* widget, const QString& value) { widget->setText(value); } static void setStringValue(QLineEdit* widget, const QString& value) { widget->setText(value); }
@ -118,7 +118,7 @@ struct SettingAccessor<QSlider>
static float getFloatValue(const QSlider* widget) { return static_cast<float>(widget->value()); } static float getFloatValue(const QSlider* widget) { return static_cast<float>(widget->value()); }
static void setFloatValue(QSlider* widget, float value) { widget->setValue(static_cast<int>(value)); } static void setFloatValue(QSlider* widget, float value) { widget->setValue(static_cast<int>(value)); }
static QString getStringValue(const QSlider* widget) { return QStringLiteral("%1").arg(widget->value()); } static QString getStringValue(const QSlider* widget) { return QString::number(widget->value()); }
static void setStringValue(QSlider* widget, const QString& value) { widget->setValue(value.toInt()); } static void setStringValue(QSlider* widget, const QString& value) { widget->setValue(value.toInt()); }
template<typename F> template<typename F>
@ -140,7 +140,7 @@ struct SettingAccessor<QSpinBox>
static float getFloatValue(const QSpinBox* widget) { return static_cast<float>(widget->value()); } static float getFloatValue(const QSpinBox* widget) { return static_cast<float>(widget->value()); }
static void setFloatValue(QSpinBox* widget, float value) { widget->setValue(static_cast<int>(value)); } static void setFloatValue(QSpinBox* widget, float value) { widget->setValue(static_cast<int>(value)); }
static QString getStringValue(const QSpinBox* widget) { return QStringLiteral("%1").arg(widget->value()); } static QString getStringValue(const QSpinBox* widget) { return QString::number(widget->value()); }
static void setStringValue(QSpinBox* widget, const QString& value) { widget->setValue(value.toInt()); } static void setStringValue(QSpinBox* widget, const QString& value) { widget->setValue(value.toInt()); }
template<typename F> template<typename F>
@ -162,7 +162,7 @@ struct SettingAccessor<QDoubleSpinBox>
static float getFloatValue(const QDoubleSpinBox* widget) { return static_cast<float>(widget->value()); } static float getFloatValue(const QDoubleSpinBox* widget) { return static_cast<float>(widget->value()); }
static void setFloatValue(QDoubleSpinBox* widget, float value) { widget->setValue(static_cast<double>(value)); } static void setFloatValue(QDoubleSpinBox* widget, float value) { widget->setValue(static_cast<double>(value)); }
static QString getStringValue(const QDoubleSpinBox* widget) { return QStringLiteral("%1").arg(widget->value()); } static QString getStringValue(const QDoubleSpinBox* widget) { return QString::number(widget->value()); }
static void setStringValue(QDoubleSpinBox* widget, const QString& value) { widget->setValue(value.toDouble()); } static void setStringValue(QDoubleSpinBox* widget, const QString& value) { widget->setValue(value.toDouble()); }
template<typename F> template<typename F>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>AudioSettingsWidget</name>
<message numerus="yes">
<source>Maximum Latency: %n frames (%1ms)</source>
<translation>
<numerusform>Maximum Latency: %n frame (%1ms)</numerusform>
<numerusform>Maximum Latency: %n frames (%1ms)</numerusform>
</translation>
</message>
</context>
<context>
<name>EmulationSettingsWidget</name>
<message numerus="yes">
<source>Rewind for %n frame(s), lasting %1 second(s) will require up to %2MB of RAM and %3MB of VRAM.</source>
<translation>
<numerusform>Rewind for %n frame, lasting %1 second(s) will require up to %2MB of RAM and %3MB of VRAM.</numerusform>
<numerusform>Rewind for %n frames, lasting %1 second(s) will require up to %2MB of RAM and %3MB of VRAM.</numerusform>
</translation>
</message>
</context>
<context>
<name>InputBindingWidget</name>
<message numerus="yes">
<source>%n bindings</source>
<translation>
<numerusform>%n binding</numerusform>
<numerusform>%n bindings</numerusform>
</translation>
</message>
</context>
<context>
<name>MemoryCardEditorDialog</name>
<message numerus="yes">
<source>%n block(s) free%1</source>
<translation>
<numerusform>%n block free%1</numerusform>
<numerusform>%n blocks free%1</numerusform>
</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,10 @@
@echo off
set "linguist=..\..\..\dep\msvc\qt\5.15.0\msvc2017_64\bin"
set context=../ ../../core/ ../../frontend-common/ -tr-function-alias translate+=TranslateString -tr-function-alias translate+=TranslateStdString -tr-function-alias QT_TRANSLATE_NOOP+=TRANSLATABLE -pluralonly
"%linguist%\lupdate.exe" %context% -ts duckstation-qt_en.ts
pause
cd "%linguist%"
start /B linguist.exe "%~dp0\duckstation-qt_en.ts"