feat(radar): Impulse 测线本地导入入口(双数据集互证下游)
radarMenu 追加「导入Impulse测线目录(.iprb)…」动作,复用 createGprVolume (eager 同步建体,预填 cachedGrid)。内层 lambda 按引用捕获 window 修正 QMainWindow 拷贝构造删除/showToast 非 const QWidget* 编译错误。
This commit is contained in:
parent
2ba9d07f6c
commit
717bdbb70c
|
|
@ -1005,6 +1005,43 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
analysisTab->setItemBusy(qid, true); // spinner; 渲染完成由 datasetRendered 撤(main.cpp:987)
|
||||
analysisTab->scrollItemToTop(qid);
|
||||
});
|
||||
// 明星路 Impulse(.iprb) 本地导入:复用现成 createGprVolume(eager 同步建体,预填 cachedGrid)。
|
||||
// 双数据集互证:证下游渲染/切片/异常对 14ch(Impulse)/16ch(Mala) 几何无关。
|
||||
QAction* importImpulseAct =
|
||||
radarMenu->addAction(QStringLiteral("导入Impulse测线目录(.iprb)…"));
|
||||
QObject::connect(importImpulseAct, &QAction::triggered, &window,
|
||||
[&window, scene3dRepo, refreshAnalysis, analysisTab, vtkLoading]() {
|
||||
const QString dir = QFileDialog::getExistingDirectory(
|
||||
&window, QStringLiteral("选择 Impulse 测线目录(含 *.iprb/*.ord)"));
|
||||
if (dir.isEmpty()) return;
|
||||
bool ok = false;
|
||||
const QString prefix = QInputDialog::getText(
|
||||
&window, QStringLiteral("测线前缀"),
|
||||
QStringLiteral("输入测线前缀(如 明星路_010):"), QLineEdit::Normal, QString(), &ok);
|
||||
if (!ok || prefix.isEmpty()) return;
|
||||
vtkLoading->showOver(QStringLiteral("正在建Impulse体…"));
|
||||
// 内层捕获 window 引用(非 [=] 值拷贝):QMainWindow 拷贝构造已删除,且 showToast 需非 const QWidget*。
|
||||
QTimer::singleShot(0, &window, [=, &window]() {
|
||||
std::string newId;
|
||||
try {
|
||||
newId = scene3dRepo->createGprVolume(dir.toLocal8Bit().toStdString(),
|
||||
prefix.toLocal8Bit().toStdString(),
|
||||
prefix.toStdString(), /*coarse=*/8);
|
||||
} catch (const std::exception& e) {
|
||||
vtkLoading->hide();
|
||||
geopro::app::showToast(&window,
|
||||
QStringLiteral("建体失败:%1").arg(QString::fromLocal8Bit(e.what())));
|
||||
return;
|
||||
}
|
||||
{ const QSignalBlocker block(analysisTab); refreshAnalysis(); }
|
||||
vtkLoading->hide();
|
||||
const QString qid = QString::fromStdString(newId);
|
||||
// createGprVolume 预填 cachedGrid → setItemChecked 内 loadVolume 同步渲染、datasetRendered 自动撤 busy;
|
||||
// 故此处【不要】再 setItemBusy(true)(否则 spinner 永久转圈 —— 评审 MEDIUM)。
|
||||
analysisTab->setItemChecked(qid, true);
|
||||
analysisTab->scrollItemToTop(qid);
|
||||
});
|
||||
});
|
||||
}
|
||||
// 任一数据集(剖面/体)异步加载开始 → 列表项复选框转等待 spinner;渲染完成 → 复原复选框。
|
||||
// 覆盖非三维体:勾选剖面首次渲染较慢时也有等待反馈(用户反馈)。
|
||||
|
|
|
|||
Loading…
Reference in New Issue