/** * @file DialogPCLGPMesh.cpp * @brief None * @author 陈增辉 (3045316072@qq.com) * @version 2.5.0 * @date 2024/4/5 * @copyright Copyright (c) Since 2024 中科卫星应用研究院 All rights reserved. */ // You may need to build the project (run Qt uic code generator) to get "ui_DialogPCLGPMesh.h" // resolved #include "DialogPCLGPMesh.h" #include "ui_DialogPCLGPMesh.h" #include "PythonModule/PyAgent.h" #include "MeshData/meshSingleton.h" #include "MeshData/meshSet.h" #include #include //auto meshData = MeshData::MeshData::getInstance(); namespace MainWidget { DialogPCLGPMesh::DialogPCLGPMesh(GUI::MainWindow *parent) : QFDialog(parent), _ui(new Ui::DialogPCLGPMesh), _mw(parent), _selectdlg(new DialogSelectComponents(parent)) { _ui->setupUi(this); _ui->geoSelectPoint->setToolTip(tr("Clicked Button Selected Components")); setWindowTitle(tr("GP Meshing")); _ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(_ui->geoSelectPoint, &QPushButton::clicked, [=]() { _selectdlg->clearSelectItems(); _selectdlg->exec(); }); connect(_selectdlg, SIGNAL(selectedComponentsSig(QList)), this, SLOT(selectedComponentsSlot(QList))); connect(_ui->listWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(customContextMenuRequestedSlot(const QPoint &))); } DialogPCLGPMesh::~DialogPCLGPMesh() { delete _ui; _ui = NULL; delete _selectdlg; _selectdlg = NULL; } void DialogPCLGPMesh::accept() { if (_components.size() == 0) return; QString componentIds; for (auto component : _components) componentIds.append(QString(",%1").arg(component->getID())); componentIds.remove(0, 1); double SearchRadius=_ui->SearchRadius->value(); double Mu=_ui->Mu->value(); int MaximumNearestNeighbors=_ui->MaximumNearestNeighbors->value(); double MaximumSurfaceAngle=_ui->MaximumSurfaceAngle->value(); double MaximumAngle=_ui->MaximumAngle->value(); double MinimumAngle=_ui->MinimumAngle->value(); // excuteAlg( QString componentIds , double SearchRadius, double Mu,int MaximumNearestNeighbors,double MaximumSurfaceAngle,double MaximumAngle,double MinimumAngle); emit excuteAlg( componentIds , SearchRadius, Mu, MaximumNearestNeighbors, MaximumSurfaceAngle, MaximumAngle, MinimumAngle); QFDialog::accept(); } void DialogPCLGPMesh::selectedComponentsSlot(QList components) { for (MeshData::MeshSet *set : components) { if (_components.contains(set)) continue; _components.append(set); _ui->listWidget->addItem(set->getName()); } } void DialogPCLGPMesh::customContextMenuRequestedSlot(const QPoint &point) { QListWidgetItem *curItem = _ui->listWidget->itemAt(point); if (!curItem) return; QMenu *menu = new QMenu(this); QAction *deleteItem = new QAction(tr("delete this item")); menu->addAction(deleteItem); connect(menu, &QMenu::triggered, [=]() { removeCurrentItem(curItem); }); menu->exec(QCursor::pos()); } void DialogPCLGPMesh::removeCurrentItem(QListWidgetItem *curItem) { auto meshData = MeshData::MeshData::getInstance(); auto meshSet = meshData->getMeshSetByName(curItem->text()); if (!meshSet) return; _components.removeOne(meshSet); _ui->listWidget->removeItemWidget(curItem); delete curItem; } } // namespace MainWidget