Gui: Improve presenting VarSets in expr dialog

This commit is contained in:
Pieter Hijma
2025-08-05 20:21:52 +02:00
parent 459726a43f
commit d09cba0092
5 changed files with 354 additions and 231 deletions

View File

@@ -173,9 +173,11 @@ void DlgAddPropertyVarSet::removeExistingWidget(QFormLayout* formLayout, int lab
}
}
}
void DlgAddPropertyVarSet::setWidgetForLabel(const char* labelName, QWidget* widget)
void DlgAddPropertyVarSet::setWidgetForLabel(const char* labelName, QWidget* widget,
QLayout* layout)
{
auto formLayout = qobject_cast<QFormLayout*>(layout());
auto formLayout = qobject_cast<QFormLayout*>(layout);
if (formLayout == nullptr) {
FC_ERR("Form layout not found");
return;
@@ -191,14 +193,9 @@ void DlgAddPropertyVarSet::setWidgetForLabel(const char* labelName, QWidget* wid
formLayout->setWidget(labelRow, QFormLayout::FieldRole, widget);
}
void DlgAddPropertyVarSet::initializeGroup()
void DlgAddPropertyVarSet::populateGroup(EditFinishedComboBox& comboBox,
const App::DocumentObject* varSet)
{
comboBoxGroup.setObjectName(QStringLiteral("comboBoxGroup"));
comboBoxGroup.setInsertPolicy(QComboBox::InsertAtTop);
comboBoxGroup.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
setWidgetForLabel("labelGroup", &comboBoxGroup);
std::vector<App::Property*> properties;
varSet->getPropertyList(properties);
@@ -221,10 +218,21 @@ void DlgAddPropertyVarSet::initializeGroup()
});
for (const auto& groupName : groupNamesSorted) {
comboBoxGroup.addItem(QString::fromStdString(groupName));
comboBox.addItem(QString::fromStdString(groupName));
}
comboBoxGroup.setEditText(QString::fromStdString(groupNamesSorted[0]));
comboBox.setEditText(QString::fromStdString(groupNamesSorted[0]));
}
void DlgAddPropertyVarSet::initializeGroup()
{
comboBoxGroup.setObjectName(QStringLiteral("comboBoxGroup"));
comboBoxGroup.setInsertPolicy(QComboBox::InsertAtTop);
comboBoxGroup.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
setWidgetForLabel("labelGroup", &comboBoxGroup, layout());
populateGroup(comboBoxGroup, varSet);
connComboBoxGroup = connect(&comboBoxGroup, &EditFinishedComboBox::editFinished,
this, &DlgAddPropertyVarSet::onGroupFinished);
}
@@ -335,7 +343,7 @@ void DlgAddPropertyVarSet::addEditor(PropertyItem* propertyItem)
editor->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
editor->setObjectName(QStringLiteral("editor"));
setWidgetForLabel("labelValue", editor.get());
setWidgetForLabel("labelValue", editor.get(), layout());
QWidget::setTabOrder(ui->comboBoxType, editor.get());
QWidget::setTabOrder(editor.get(), ui->checkBoxAdd);
@@ -544,7 +552,7 @@ void DlgAddPropertyVarSet::removeEditor()
auto* placeholder = new QWidget(this);
placeholder->setObjectName(QStringLiteral("placeholder"));
placeholder->setMinimumHeight(comboBoxGroup.height());
setWidgetForLabel("labelValue", placeholder);
setWidgetForLabel("labelValue", placeholder, layout());
QWidget::setTabOrder(ui->comboBoxType, ui->checkBoxAdd);
editor = nullptr;