From 6f47183b53e66926494815f8ee7e422abffa05b2 Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Fri, 22 Nov 2024 18:00:19 +0100 Subject: [PATCH] Gui: Improve localization support in VarSet dialog (#17480) * Gui: Improve localization support in VarSet dialog * Gui: Adopt QObject translate This is not the ideal implementation but for the 1.0 release this is currently the better option. A separate issue has been filed for post 1.0 in https://github.com/FreeCAD/FreeCAD/issues/17510 that also covers the `DlgAddProperty`. --- src/Gui/DlgAddPropertyVarSet.cpp | 18 +++++++++++++++--- src/Gui/DlgAddPropertyVarSet.h | 2 ++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Gui/DlgAddPropertyVarSet.cpp b/src/Gui/DlgAddPropertyVarSet.cpp index 47564c21b6..b1ca96d634 100644 --- a/src/Gui/DlgAddPropertyVarSet.cpp +++ b/src/Gui/DlgAddPropertyVarSet.cpp @@ -174,9 +174,7 @@ void DlgAddPropertyVarSet::initializeWidgets(ViewProviderVarSet* viewProvider) connLineEditNameTextChanged = connect(ui->lineEditName, &QLineEdit::textChanged, this, &DlgAddPropertyVarSet::onNamePropertyChanged); - std::string title = "Add a property to " + varSet->getFullName(); - setWindowTitle(QString::fromStdString(title)); - + setTitle(); setOkEnabled(false); ui->lineEditName->setFocus(); @@ -188,6 +186,11 @@ void DlgAddPropertyVarSet::initializeWidgets(ViewProviderVarSet* viewProvider) // printFocusChain(ui->lineEditName); } +void DlgAddPropertyVarSet::setTitle() +{ + setWindowTitle(QObject::tr("Add a property to %1").arg(QString::fromStdString(varSet->getFullName()))); +} + void DlgAddPropertyVarSet::setOkEnabled(bool enabled) { QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); @@ -219,6 +222,15 @@ void DlgAddPropertyVarSet::removeEditor() } } +void DlgAddPropertyVarSet::changeEvent(QEvent* e) +{ + if (e->type() == QEvent::LanguageChange) { + ui->retranslateUi(this); + setTitle(); + } + QDialog::changeEvent(e); +} + static PropertyEditor::PropertyItem *createPropertyItem(App::Property *prop) { const char *editor = prop->getEditorName(); diff --git a/src/Gui/DlgAddPropertyVarSet.h b/src/Gui/DlgAddPropertyVarSet.h index f837e1297c..d59a684cf6 100644 --- a/src/Gui/DlgAddPropertyVarSet.h +++ b/src/Gui/DlgAddPropertyVarSet.h @@ -74,6 +74,7 @@ public: DlgAddPropertyVarSet(QWidget *parent, ViewProviderVarSet* viewProvider); ~DlgAddPropertyVarSet() override; + void changeEvent(QEvent* e) override; void accept() override; void reject() override; @@ -85,6 +86,7 @@ private: void initializeTypes(); void initializeWidgets(ViewProviderVarSet* viewProvider); + void setTitle(); void setOkEnabled(bool enabled); void clearEditors(bool clearName = true); void clearCurrentProperty();