diff --git a/src/app/main.cpp b/src/app/main.cpp index 792a8b3..555b750 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -82,7 +82,6 @@ #include "model/ColorScale.hpp" #include "model/Field.hpp" #include "repo/LocalSampleRepository.hpp" -#include "repo/LocalSample3dRepository.hpp" #include "ApiClient.hpp" #include "AuthService.hpp" @@ -110,6 +109,7 @@ #include "panels/chart/GridStrategy.hpp" #include "api/ApiProjectRepository.hpp" #include "api/ApiDatasetRepository.hpp" +#include "api/Api3dRepository.hpp" #include "panels/ObjectTreePanel.hpp" #include "login/LoginWindow.hpp" #include "panels/DatasetListPanel.hpp" @@ -224,6 +224,7 @@ constexpr const char* kWgs84 = "EPSG:4326"; // repo 生命周期须覆盖到事件循环结束(由调用方保证)。 void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& repo, geopro::data::IAsyncProjectRepository& projectRepo, + geopro::data::IAsyncDatasetRepository& datasetRepo, geopro::controller::WorkbenchNavController& nav, geopro::controller::DatasetDetailController& detailCtrl) { @@ -247,9 +248,9 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re vtkGenericOpenGLRenderWindow* renderWindowPtr = renderWindow.Get(); // 中央渲染编排(VtkSceneController + VtkSceneView,取代旧 rebuildCentral lambda 与裸 show* 标志)。 - // 3D 场景仓储用 LocalSample3dRepository(本期样本驱动;接口异步,将来换 Api 实现不动上层)。 + // 3D 场景仓储用 Api3dRepository(真实后端:loadSection 走真实 ERT 反演端点,委托 datasetRepo)。 // 视图(VtkSceneView)非 QObject、控制器/3D 仓储亦然:随 scene 一并在 vtkWidget 销毁时清理。 - auto* scene3dRepo = new geopro::data::LocalSample3dRepository(repo, kProjectCrs, lat0, lon0); + auto* scene3dRepo = new geopro::data::Api3dRepository(datasetRepo); auto* sceneView = new geopro::app::VtkSceneView(*scene, renderWindowPtr, frame, refElev); auto* sceneCtrl = new geopro::controller::VtkSceneController(repo, *scene3dRepo, *sceneView, @@ -373,14 +374,10 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re &geopro::controller::VtkSceneController::zoomOut); QObject::connect(c3, &geopro::app::Column3DDataset::fitRequested, sceneCtrl, &geopro::controller::VtkSceneController::fit); - // 渲染勾选的 3D 数据集。本阶段渲染走 LocalSampleRepository(仅含样本 dd_section "grid1"), - // 真实后端 ds 的渲染数据尚未就绪(Api3dRepository 后置)→ 勾任一 3D ds 暂以样本帘面呈现。 - // Api3dRepository 就绪后删除此映射、改为直接 setCheckedDatasets(ids) 渲染真实数据。 + // 渲染勾选的 3D 数据集:真实 ds id 直达控制器异步帘面路径 + // (setCheckedDatasets → Api3dRepository.loadSection(realId) → 真实 ERT 反演端点 → 真实帘面)。 QObject::connect(c3, &geopro::app::Column3DDataset::checkedDatasetsChanged, sceneCtrl, - [sceneCtrl](const QStringList& ids) { - sceneCtrl->setCheckedDatasets( - ids.isEmpty() ? QStringList{} : QStringList{QStringLiteral("grid1")}); - }); + &geopro::controller::VtkSceneController::setCheckedDatasets); // O点位置/字体本期 stub(TODO P4:弹框)。 QObject::connect(c3, &geopro::app::Column3DDataset::oPointClicked, vtkWidget, []() { /* TODO P4: O点位置弹框 */ }); @@ -1349,7 +1346,7 @@ int main(int argc, char* argv[]) window->setWindowTitle(kTitle); window->resize(1280, 800); window->setMinimumSize(1024, 680); - buildWorkbench(*window, repo, projectRepo, nav, detailCtrl); + buildWorkbench(*window, repo, projectRepo, datasetRepo, nav, detailCtrl); // 主题桥:ThemeManager 明/暗切换 → 重应用全局 QSS+调色板(标准控件 + ADS;内联 chrome 经各自连接)。 QObject::connect(&geopro::app::ThemeManager::instance(), &geopro::app::ThemeManager::changed,