geopro/src/app/panels/columns/CategoryAnalysisTab.hpp

54 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <QStringList>
#include <QWidget>
#include <map>
#include <string>
#include <vector>
#include "DatasetCategory.hpp" // CategoryBuckets
#include "interact/SlicePlaneMath.hpp" // geopro::render::interact::SliceAxis
#include "repo/RepoTypes.hpp"
namespace geopro::data {
class DatasetFieldDictionary;
}
namespace geopro::app {
class CategorySection;
// 「三维分析」tabQScrollArea 竖向堆叠 5 个数据类型大类段spec §4
// 各段勾选合并为并集上抛;生成/详情请求透传。
class CategoryAnalysisTab : public QWidget {
Q_OBJECT
public:
explicit CategoryAnalysisTab(geopro::data::DatasetFieldDictionary* dict, QWidget* parent = nullptr);
void setBuckets(const CategoryBuckets& b); // 分发到 5 段(与 categoryConfigs 同序)
void setStructure(const std::vector<geopro::data::StructNode>& nodes); // 转发各段
void refreshArrayFilters(); // 装置枚举异步加载后,重填各段装置筛选下拉
CategorySection* section(const std::string& id) const; // 按 CategorySpec.id 取段
signals:
void checkedDatasetsChanged(const QStringList& dsIds); // 5 段勾选并集
void generateVolumeRequested(const QString& dsTypeCode, const QStringList& sourceDsIds);
void detailRequested(const QString& dsId, const QString& ddCode, const QString& name);
void deleteDatasetRequested(const QString& dsId, const QString& ddCode); // 右键删除切片/异常
// ── 三维体段操作转发(迁自旧 Column3DAnalysis全接──
void sliceRequested(geopro::render::interact::SliceAxis axis, const QString& volumeDsId);
void colorScaleRequested(const QString& dsId);
void sliceSaveRequested(const QString& dsId);
void sliceSaveAsRequested(const QString& dsId);
void sliceExportImageRequested(const QString& dsId);
void sliceExportDatRequested(const QString& dsId);
void anomalyVisibilityChanged(const QString& dsId, bool vis);
void datasetSelected(const QString& dsId, const QString& ddCode); // 树选中→VTK 高亮联动
private:
void recomputeCheckedUnion();
std::map<std::string, CategorySection*> sections_;
std::map<std::string, QStringList> checkedBySeg_; // 各段当前勾选(合并成并集)
};
} // namespace geopro::app