| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #include <QMessageBox> |
| |
|
| |
|
| | #include <App/Application.h> |
| | #include <Gui/Application.h> |
| |
|
| | #include "ui_DlgActiveBody.h" |
| | #include "DlgActiveBody.h" |
| | #include "ReferenceSelection.h" |
| | #include "Utils.h" |
| |
|
| | Q_DECLARE_METATYPE(App::DocumentObject*) |
| |
|
| | using namespace PartDesignGui; |
| |
|
| | DlgActiveBody::DlgActiveBody(QWidget* parent, App::Document*& doc, const QString& infoText) |
| | : QDialog(parent) |
| | , ui(new Ui_DlgActiveBody) |
| | , _doc(doc) |
| | , activeBody(nullptr) |
| | { |
| | ui->setupUi(this); |
| |
|
| | connect(ui->bodySelect, &QListWidget::itemDoubleClicked, this, &DlgActiveBody::accept); |
| |
|
| | if (!infoText.isEmpty()) { |
| | ui->label->setText(infoText + QStringLiteral("\n\n") + tr("Please select")); |
| | } |
| |
|
| | auto bodies = _doc->getObjectsOfType(PartDesign::Body::getClassTypeId()); |
| |
|
| | PartDesign::Body* bodyOfActiveObject = nullptr; |
| | for (const auto& obj : Gui::Selection().getSelection()) { |
| | bodyOfActiveObject = PartDesign::Body::findBodyOf(obj.pObject); |
| | break; |
| | } |
| |
|
| | for (const auto& body : bodies) { |
| | auto item = new QListWidgetItem(QString::fromUtf8(body->Label.getValue())); |
| | item->setData(Qt::UserRole, QVariant::fromValue(body)); |
| | ui->bodySelect->addItem(item); |
| |
|
| | if (body == bodyOfActiveObject) { |
| | item->setSelected(true); |
| | } |
| |
|
| | |
| | } |
| |
|
| | if (!bodyOfActiveObject) { |
| | |
| | |
| | QListWidgetItem* first = ui->bodySelect->item(0); |
| | if (first) { |
| | first->setSelected(true); |
| | } |
| | } |
| | } |
| |
|
| | DlgActiveBody::~DlgActiveBody() = default; |
| |
|
| | void DlgActiveBody::accept() |
| | { |
| | auto selectedItems = ui->bodySelect->selectedItems(); |
| | if (selectedItems.empty()) { |
| | return; |
| | } |
| |
|
| | App::DocumentObject* selectedBody |
| | = selectedItems[0]->data(Qt::UserRole).value<App::DocumentObject*>(); |
| | if (selectedBody) { |
| | activeBody = makeBodyActive(selectedBody, _doc); |
| | } |
| | else { |
| | |
| | App::GetApplication().setActiveTransaction(QT_TRANSLATE_NOOP("Command", "Add a Body"), true); |
| | activeBody = makeBody(_doc); |
| | App::GetApplication().closeActiveTransaction(); |
| | } |
| |
|
| | QDialog::accept(); |
| | } |
| |
|
| | #include "moc_DlgActiveBody.cpp" |
| |
|