添加测量分析项目保存和打开加载
This commit is contained in:
parent
017d77ed84
commit
324c29cbbc
|
|
@ -121,7 +121,7 @@ bool EveryChannelParticleDataSeparateTask::processEveryChannelParticleData()
|
||||||
|
|
||||||
// 板卡和通道号计算,通道号 = 板卡号 * 4 + 通道号
|
// 板卡和通道号计算,通道号 = 板卡号 * 4 + 通道号
|
||||||
int channel_num = (board_id) * 4 + (channel_id + 1);
|
int channel_num = (board_id) * 4 + (channel_id + 1);
|
||||||
QString particle_data_filename = result_data_output_dir.filePath(QString("ParticleData_ch_%1.csv").arg(channel_num));
|
QString particle_data_filename = result_data_output_dir.filePath(QStringLiteral(u"通道%1粒子数据.csv").arg(channel_num));
|
||||||
if (!particle_data_filename_list.contains(channel_num)) {
|
if (!particle_data_filename_list.contains(channel_num)) {
|
||||||
particle_data_filename_list.insert(channel_num, particle_data_filename);
|
particle_data_filename_list.insert(channel_num, particle_data_filename);
|
||||||
}
|
}
|
||||||
|
|
@ -201,7 +201,7 @@ bool EveryChannelParticleCountDataTask::processEveryChannelParticleData()
|
||||||
|
|
||||||
const QString& all_channel_particle_data_filename = GetAllChannelParticleDataFilename();
|
const QString& all_channel_particle_data_filename = GetAllChannelParticleDataFilename();
|
||||||
QMap<uint, QString> particle_count_filename_list;
|
QMap<uint, QString> particle_count_filename_list;
|
||||||
QString all_channel_total_count_filename;
|
// QString all_channel_total_count_filename;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 统计每个通道的粒子计数(相同板卡号通道号相同道址)
|
// 统计每个通道的粒子计数(相同板卡号通道号相同道址)
|
||||||
|
|
@ -248,7 +248,7 @@ bool EveryChannelParticleCountDataTask::processEveryChannelParticleData()
|
||||||
// 预创建所有通道的文件流
|
// 预创建所有通道的文件流
|
||||||
for (auto channel_it = channel_address_counts.begin(); channel_it != channel_address_counts.end(); ++channel_it) {
|
for (auto channel_it = channel_address_counts.begin(); channel_it != channel_address_counts.end(); ++channel_it) {
|
||||||
uint channel_num = channel_it.key();
|
uint channel_num = channel_it.key();
|
||||||
QString count_data_filename = every_ch_count_output_dir.filePath(QString("ParticleCountData_ch_%1.csv").arg(channel_num));
|
QString count_data_filename = every_ch_count_output_dir.filePath(QStringLiteral(u"通道%1粒子计数.csv").arg(channel_num));
|
||||||
particle_count_filename_list.insert(channel_num, count_data_filename);
|
particle_count_filename_list.insert(channel_num, count_data_filename);
|
||||||
|
|
||||||
// 创建文件流
|
// 创建文件流
|
||||||
|
|
@ -492,7 +492,7 @@ bool ParticleDataSortTask::processEveryChannelParticleData()
|
||||||
sorted_result_output_dir.mkpath(sorted_result_dir);
|
sorted_result_output_dir.mkpath(sorted_result_dir);
|
||||||
|
|
||||||
const QString& all_channel_particle_data_filename = GetAllChannelParticleDataFilename();
|
const QString& all_channel_particle_data_filename = GetAllChannelParticleDataFilename();
|
||||||
QString sorted_output_filename = sorted_result_output_dir.filePath("SortedParticleData.csv");
|
QString sorted_output_filename = sorted_result_output_dir.filePath(QStringLiteral(u"粒子数据[已排序].csv"));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const size_t CHUNK_SIZE = 100 * 1024 * 1024; // 100MB chunks
|
const size_t CHUNK_SIZE = 100 * 1024 * 1024; // 100MB chunks
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QMessageBox>
|
||||||
#include "DockAreaWidget.h"
|
#include "DockAreaWidget.h"
|
||||||
#include "DockComponentsFactory.h"
|
#include "DockComponentsFactory.h"
|
||||||
#include "DockManager.h"
|
#include "DockManager.h"
|
||||||
#include "DockWidget.h"
|
#include "DockWidget.h"
|
||||||
#include "FloatingDockContainer.h"
|
#include "FloatingDockContainer.h"
|
||||||
|
|
||||||
#include "AboutDlg.h"
|
#include "AboutDlg.h"
|
||||||
#include "DataProcessWorkPool.h"
|
#include "DataProcessWorkPool.h"
|
||||||
#include "EneryScaleForm.h"
|
#include "EneryScaleForm.h"
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
#include "NewMeasureAnalysisDlg.h"
|
#include "NewMeasureAnalysisDlg.h"
|
||||||
#include "MeasureAnalysisView.h"
|
#include "MeasureAnalysisView.h"
|
||||||
#include "MeasureAnalysisTreeView.h"
|
#include "MeasureAnalysisTreeView.h"
|
||||||
|
#include "GlobalDefine.h"
|
||||||
|
|
||||||
using namespace ads;
|
using namespace ads;
|
||||||
|
|
||||||
|
|
@ -170,8 +171,42 @@ void MainWindow::initAction()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
connect(ui->action_new_measurement_analysis, &QAction::triggered, this, new_measurement_analysis_handler);
|
connect(ui->action_new_measurement_analysis, &QAction::triggered, this, new_measurement_analysis_handler);
|
||||||
|
connect(ui->action_open_measurement_analysis, &QAction::triggered, this, [this](){
|
||||||
|
const QString& filename = QFileDialog::getOpenFileName(this, QStringLiteral(u"选择测量分析项目文件"), QString(), QStringLiteral(u"测量分析项目 (*.msproject)"));
|
||||||
|
if (filename.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QFileInfo file_info(filename);
|
||||||
|
if (file_info.size() == 0) {
|
||||||
|
QMessageBox::warning(this, QStringLiteral(u"警告"), QStringLiteral(u"选择的测量分析项目文件为空文件!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MeasureAnalysisProjectModel* model = new MeasureAnalysisProjectModel;
|
||||||
|
if (model->LoadProjectModel(filename)) {
|
||||||
|
ProjectList::Instance()->AddProjectModel(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
connect(ui->action_save_measurement_analysis, &QAction::triggered, this, [](){
|
||||||
|
MeasureAnalysisProjectModel* project_model = ProjectList::Instance()->GetCurrentProjectModel();
|
||||||
|
if (project_model) {
|
||||||
|
const QString& project_name = project_model->GetProjectName();
|
||||||
|
if ( project_model->SaveProjectModel() ){
|
||||||
|
const QString& info_text = QStringLiteral(u"保存测量分析项目\"%1\"完成.").arg(project_name);
|
||||||
|
LOG_INFO(info_text);
|
||||||
|
} else {
|
||||||
|
const QString& warn_text = QStringLiteral(u"保存测量分析项目\"%1\"失败!").arg(project_name);
|
||||||
|
LOG_WARN(warn_text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(ui->action_close_measurement_analysis, &QAction::triggered, this, [](){
|
||||||
|
MeasureAnalysisProjectModel* project_model = ProjectList::Instance()->GetCurrentProjectModel();
|
||||||
|
if (project_model) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
connect(ui->action_manage_measurement_analysis, &QAction::triggered, this->_action_central_dock_widget, &QAction::triggered);
|
connect(ui->action_manage_measurement_analysis, &QAction::triggered, this->_action_central_dock_widget, &QAction::triggered);
|
||||||
connect(ui->action_device_config_mrg, &QAction::triggered, this, []() {
|
connect(ui->action_device_config_mrg, &QAction::triggered, this, []() {
|
||||||
QDialog device_cfg_mrg_dlg;
|
QDialog device_cfg_mrg_dlg;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
#include "MeasureAnalysisProjectModel.h"
|
#include "MeasureAnalysisProjectModel.h"
|
||||||
#include "AnalysisTypeDefine.h"
|
#include "AnalysisTypeDefine.h"
|
||||||
#include "GlobalDefine.h"
|
#include "GlobalDefine.h"
|
||||||
|
#include <QFile>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
|
||||||
|
|
||||||
void MeasureAnalysisProjectModel::SetProjectDir(const QString& project_dir)
|
void MeasureAnalysisProjectModel::SetProjectDir(const QString& project_dir)
|
||||||
{
|
{
|
||||||
|
|
@ -84,7 +89,7 @@ void MeasureAnalysisProjectModel::SetChannelAddressCountDataFilename(uint channe
|
||||||
|
|
||||||
void MeasureAnalysisProjectModel::SetChannelEneryCountDataFilename(uint channel, const QString& filename)
|
void MeasureAnalysisProjectModel::SetChannelEneryCountDataFilename(uint channel, const QString& filename)
|
||||||
{
|
{
|
||||||
this->_channel_every_count_data_filename_list[channel] = filename;
|
this->_channel_enery_count_data_filename_list[channel] = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeasureAnalysisProjectModel::SetAllChannelEneryTotalCountDataFilename(const QString& filename)
|
void MeasureAnalysisProjectModel::SetAllChannelEneryTotalCountDataFilename(const QString& filename)
|
||||||
|
|
@ -193,14 +198,14 @@ const QString& MeasureAnalysisProjectModel::GetChannelAddressCountDataFilename(u
|
||||||
|
|
||||||
const QMap<uint, QString>& MeasureAnalysisProjectModel::GetChannelEneryCountDataFilenameList() const
|
const QMap<uint, QString>& MeasureAnalysisProjectModel::GetChannelEneryCountDataFilenameList() const
|
||||||
{
|
{
|
||||||
return this->_channel_every_count_data_filename_list;
|
return this->_channel_enery_count_data_filename_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString& MeasureAnalysisProjectModel::GetChannelEneryCountDataFilename(uint channel) const
|
const QString& MeasureAnalysisProjectModel::GetChannelEneryCountDataFilename(uint channel) const
|
||||||
{
|
{
|
||||||
QString file_name;
|
QString file_name;
|
||||||
if ( this->_channel_every_count_data_filename_list.contains(channel) ) {
|
if ( this->_channel_enery_count_data_filename_list.contains(channel) ) {
|
||||||
file_name = this->_channel_every_count_data_filename_list[channel];
|
file_name = this->_channel_enery_count_data_filename_list[channel];
|
||||||
}
|
}
|
||||||
return file_name;
|
return file_name;
|
||||||
}
|
}
|
||||||
|
|
@ -219,6 +224,189 @@ const QMap<uint, QString>& MeasureAnalysisProjectModel::GetTimeWinConformParticl
|
||||||
return conform_particle_data;
|
return conform_particle_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MeasureAnalysisProjectModel::LoadProjectModel(const QString& project_filename)
|
||||||
|
{
|
||||||
|
this->_project_filename = project_filename;
|
||||||
|
// 从json文件加载项目模型
|
||||||
|
QFile json_file(this->_project_filename);
|
||||||
|
if (!json_file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QJsonDocument json_doc = QJsonDocument::fromJson(json_file.readAll());
|
||||||
|
json_file.close();
|
||||||
|
if (json_doc.isNull())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!json_doc.isObject())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QJsonObject json_obj = json_doc.object();
|
||||||
|
if (!json_obj.contains("ProjectName"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_project_name = json_obj["ProjectName"].toString();
|
||||||
|
if (!json_obj.contains("SpectrumType"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_spec_type = (SpectrumType)json_obj["SpectrumType"].toInt();
|
||||||
|
if (!json_obj.contains("IsStandardSource"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_is_std_source = json_obj["IsStandardSource"].toBool();
|
||||||
|
if (!json_obj.contains("DescriptionInfo"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_description_info = json_obj["DescriptionInfo"].toString();
|
||||||
|
if (!json_obj.contains("MeasurePresetTime"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_measure_preset_time = json_obj["MeasurePresetTime"].toInt();
|
||||||
|
if (!json_obj.contains("IsMeasureComplete"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_is_measure_complete = json_obj["IsMeasureComplete"].toBool();
|
||||||
|
if (!json_obj.contains("ConformTimeWin"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this->_conform_time_win = json_obj["ConformTimeWin"].toInt();
|
||||||
|
|
||||||
|
QFileInfo project_fileinfo(project_filename);
|
||||||
|
this->_project_dir = project_fileinfo.absoluteDir().absolutePath();
|
||||||
|
|
||||||
|
auto ProjectAbsFilename = [this](const QString& project_relative_filename){
|
||||||
|
QString project_abs_filename;
|
||||||
|
if ( !project_relative_filename.isEmpty() ) {
|
||||||
|
QDir project_dir(this->_project_dir);
|
||||||
|
project_abs_filename = project_dir.filePath(project_relative_filename);
|
||||||
|
QFileInfo file_info(project_abs_filename);
|
||||||
|
if ( !file_info.exists() ) {
|
||||||
|
project_abs_filename.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return project_abs_filename;
|
||||||
|
};
|
||||||
|
|
||||||
|
this->_measure_device_params_cfg_filename = ProjectAbsFilename(json_obj["MeasureDeviceParamsCfgFilename"].toString());
|
||||||
|
this->_enery_scale_filename = ProjectAbsFilename(json_obj["EneryScaleFilename"].toString());
|
||||||
|
this->_efficiency_scale_filename = ProjectAbsFilename(json_obj["EfficiencyScaleFilename"].toString());
|
||||||
|
|
||||||
|
this->_all_channel_particle_data_filename = ProjectAbsFilename(json_obj["AllChannelParticleDataFilename"].toString());
|
||||||
|
this->_sorted_particle_data_filename = ProjectAbsFilename(json_obj["SortedParticleDataFilename"].toString());
|
||||||
|
|
||||||
|
const auto& address_count_data_filename_list = json_obj["ChannelAddressCountDataFilenameList"].toObject().toVariantMap();
|
||||||
|
for (auto it = address_count_data_filename_list.constBegin(); it!=address_count_data_filename_list.constEnd(); ++it) {
|
||||||
|
uint channel_num = it.key().toUInt();
|
||||||
|
this->_channel_address_count_data_filename_list[channel_num] = ProjectAbsFilename(it.value().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto& enery_count_data_filename_list = json_obj["ChannelEneryCountDataFilenameList"].toObject().toVariantMap();
|
||||||
|
for (auto it = enery_count_data_filename_list.constBegin(); it!=enery_count_data_filename_list.constEnd(); ++it) {
|
||||||
|
uint channel_num = it.key().toUInt();
|
||||||
|
this->_channel_enery_count_data_filename_list[channel_num] = ProjectAbsFilename(it.value().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
this->_all_channel_enery_total_count_data_filename = ProjectAbsFilename(json_obj["AllChannelEneryTotalCountDataFilename"].toString());
|
||||||
|
|
||||||
|
const auto& time_win_conform_particle_data = json_obj["TimeWinConformParticleData"].toObject().toVariantMap();
|
||||||
|
for (auto it = time_win_conform_particle_data.constBegin(); it!=time_win_conform_particle_data.constEnd(); ++it) {
|
||||||
|
uint time_win = it.key().toUInt();
|
||||||
|
QMap<uint, QString> conform_particle_data;
|
||||||
|
// const auto& conform_particle_data_list = it.value().toObject().toVariantMap();
|
||||||
|
// for (auto it2 = conform_particle_data_list.constBegin(); it2!=conform_particle_data_list.constEnd(); ++it2) {
|
||||||
|
// uint particle_count = it2.key().toUInt();
|
||||||
|
// conform_particle_data[particle_count] = ProjectAbsFilename(it2.value().toString());
|
||||||
|
// }
|
||||||
|
this->_time_win_conform_particle_data[time_win] = conform_particle_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MeasureAnalysisProjectModel::SaveProjectModel()
|
||||||
|
{
|
||||||
|
auto ProjectRelativeFilename = [this](const QString& abs_filename){
|
||||||
|
QString project_relative_filename;
|
||||||
|
if ( !abs_filename.isEmpty() ) {
|
||||||
|
QFileInfo file_info(abs_filename);
|
||||||
|
if ( file_info.exists() ) {
|
||||||
|
QDir project_dir(_project_dir);
|
||||||
|
QString project_dir_path = project_dir.absolutePath() + "/";
|
||||||
|
QString project_abs_filename = file_info.absoluteFilePath();
|
||||||
|
project_relative_filename = project_abs_filename.remove(project_dir_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return project_relative_filename;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this->_project_filename.isEmpty())
|
||||||
|
{
|
||||||
|
this->_project_filename = QDir(this->_project_dir).filePath(this->_project_name + QString(".msproject"));;
|
||||||
|
}
|
||||||
|
// 将项目模型转换为json对象
|
||||||
|
QVariantMap project_json_obj_map;
|
||||||
|
project_json_obj_map["ProjectName"] = this->_project_name;
|
||||||
|
project_json_obj_map["SpectrumType"] = this->_spec_type;
|
||||||
|
project_json_obj_map["IsStandardSource"] = this->_is_std_source;
|
||||||
|
project_json_obj_map["DescriptionInfo"] = this->_description_info;
|
||||||
|
project_json_obj_map["MeasurePresetTime"] = int(this->_measure_preset_time);
|
||||||
|
project_json_obj_map["IsMeasureComplete"] = this->_is_measure_complete;
|
||||||
|
project_json_obj_map["ConformTimeWin"] = this->_conform_time_win;
|
||||||
|
|
||||||
|
project_json_obj_map["MeasureDeviceParamsCfgFilename"] = ProjectRelativeFilename(this->_measure_device_params_cfg_filename);
|
||||||
|
project_json_obj_map["EneryScaleFilename"] = ProjectRelativeFilename(this->_enery_scale_filename);
|
||||||
|
project_json_obj_map["EfficiencyScaleFilename"] = ProjectRelativeFilename(this->_efficiency_scale_filename);
|
||||||
|
|
||||||
|
project_json_obj_map["AllChannelParticleDataFilename"] = ProjectRelativeFilename(this->_all_channel_particle_data_filename);
|
||||||
|
project_json_obj_map["SortedParticleDataFilename"] = ProjectRelativeFilename(this->_sorted_particle_data_filename);
|
||||||
|
|
||||||
|
QVariantMap channel_address_count_data_filename_list;
|
||||||
|
for (auto it = this->_channel_address_count_data_filename_list.constBegin(); it != this->_channel_address_count_data_filename_list.constEnd(); ++it) {
|
||||||
|
channel_address_count_data_filename_list[QString::number(it.key())] = ProjectRelativeFilename(it.value());
|
||||||
|
}
|
||||||
|
project_json_obj_map["ChannelAddressCountDataFilenameList"] = channel_address_count_data_filename_list;
|
||||||
|
|
||||||
|
QVariantMap channel_enery_count_data_filename_list;
|
||||||
|
for (auto it = this->_channel_enery_count_data_filename_list.constBegin(); it != this->_channel_enery_count_data_filename_list.constEnd(); ++it) {
|
||||||
|
channel_enery_count_data_filename_list[QString::number(it.key())] = ProjectRelativeFilename(it.value());
|
||||||
|
}
|
||||||
|
project_json_obj_map["ChannelEneryCountDataFilenameList"] = channel_enery_count_data_filename_list;
|
||||||
|
|
||||||
|
project_json_obj_map["AllChannelEneryTotalCountDataFilename"] = ProjectRelativeFilename(this->_all_channel_enery_total_count_data_filename);
|
||||||
|
|
||||||
|
QVariantMap time_win_conform_particle_data;
|
||||||
|
for (auto it = this->_time_win_conform_particle_data.constBegin(); it != this->_time_win_conform_particle_data.constEnd(); ++it) {
|
||||||
|
QVariantMap conform_particle_data;
|
||||||
|
for (auto it2 = it.value().constBegin(); it2 != it.value().constEnd(); ++it2) {
|
||||||
|
conform_particle_data[QString::number(it2.key())] = ProjectRelativeFilename(it2.value());
|
||||||
|
}
|
||||||
|
time_win_conform_particle_data[QString::number(it.key())] = conform_particle_data;
|
||||||
|
}
|
||||||
|
project_json_obj_map["TimeWinConformParticleData"] = time_win_conform_particle_data;
|
||||||
|
|
||||||
|
// 将项目模型保存到json文件
|
||||||
|
QJsonDocument json_doc = QJsonDocument::fromVariant(project_json_obj_map);
|
||||||
|
QFile json_file(this->_project_filename);
|
||||||
|
if (!json_file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
json_file.write(json_doc.toJson());
|
||||||
|
json_file.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/* MeasureAnalysisProjectModelList */
|
/* MeasureAnalysisProjectModelList */
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -271,6 +459,17 @@ void MeasureAnalysisProjectModelList::SetCurrentProjectModel(const QString& proj
|
||||||
{
|
{
|
||||||
if (_project_models.contains(project_name)) {
|
if (_project_models.contains(project_name)) {
|
||||||
_current_project_model = _project_models[project_name];
|
_current_project_model = _project_models[project_name];
|
||||||
|
|
||||||
|
for (auto it = _project_node_items.constBegin(); it!=_project_node_items.constEnd(); ++it) {
|
||||||
|
QStandardItem* project_item = it.value();
|
||||||
|
QFont font = project_item->font();
|
||||||
|
if ( it.key() == project_name ) {
|
||||||
|
font.setBold(true);
|
||||||
|
} else {
|
||||||
|
font.setBold(false);
|
||||||
|
}
|
||||||
|
project_item->setFont(font);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -422,6 +621,7 @@ void MeasureAnalysisProjectModelList::intiProjectNodeStruce()
|
||||||
QVariant analys_type = QVariant::fromValue(AnalysisType::Project);
|
QVariant analys_type = QVariant::fromValue(AnalysisType::Project);
|
||||||
QStandardItem* project_item = AddChildNode(root_item, project_name, status, analys_type, false);
|
QStandardItem* project_item = AddChildNode(root_item, project_name, status, analys_type, false);
|
||||||
project_item->setData(project_name, ProjectName);
|
project_item->setData(project_name, ProjectName);
|
||||||
|
node_map[project_name] = project_item;
|
||||||
|
|
||||||
// 测量控制
|
// 测量控制
|
||||||
QString item_name = QStringLiteral(u"测量控制");
|
QString item_name = QStringLiteral(u"测量控制");
|
||||||
|
|
@ -467,10 +667,21 @@ void MeasureAnalysisProjectModelList::intiProjectNodeStruce()
|
||||||
node_map[item_name] = node_item;
|
node_map[item_name] = node_item;
|
||||||
|
|
||||||
item_name = QStringLiteral(u"道址计数");
|
item_name = QStringLiteral(u"道址计数");
|
||||||
status = cur_pro_model->GetChannelAddressCountDataFilenameList().isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
const auto& ch_addr_count_data_filename_list = cur_pro_model->GetChannelAddressCountDataFilenameList();
|
||||||
|
status = ch_addr_count_data_filename_list.isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
||||||
node_item = AddChildNode(analysis_data_item, item_name, status, QVariant(), true);
|
node_item = AddChildNode(analysis_data_item, item_name, status, QVariant(), true);
|
||||||
node_item->setData(project_name, ProjectName);
|
node_item->setData(project_name, ProjectName);
|
||||||
node_map[item_name] = node_item;
|
node_map[item_name] = node_item;
|
||||||
|
QStandardItem* adrr_count_item = node_item;
|
||||||
|
for (auto it = ch_addr_count_data_filename_list.begin(); it != ch_addr_count_data_filename_list.end(); ++it) {
|
||||||
|
uint ch_num = it.key();
|
||||||
|
QString item_name = QStringLiteral(u"通道%1道址计数").arg(ch_num);
|
||||||
|
const QVariant& analys_type = QVariant::fromValue(AnalysisType::AddressCountData);
|
||||||
|
QStandardItem* node_item = AddChildNode(adrr_count_item, item_name, status, analys_type, true);
|
||||||
|
node_item->setData(project_name, ProjectName);
|
||||||
|
node_item->setData(ch_num, ChannelNum);
|
||||||
|
node_map[item_name] = node_item;
|
||||||
|
}
|
||||||
|
|
||||||
item_name = QStringLiteral(u"能量计数");
|
item_name = QStringLiteral(u"能量计数");
|
||||||
status = cur_pro_model->GetAllChannelEneryTotalCountDataFilename().isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
status = cur_pro_model->GetAllChannelEneryTotalCountDataFilename().isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
||||||
|
|
@ -478,6 +689,17 @@ void MeasureAnalysisProjectModelList::intiProjectNodeStruce()
|
||||||
node_item = AddChildNode(analysis_data_item, item_name, status, analys_type, true);
|
node_item = AddChildNode(analysis_data_item, item_name, status, analys_type, true);
|
||||||
node_item->setData(project_name, ProjectName);
|
node_item->setData(project_name, ProjectName);
|
||||||
node_map[item_name] = node_item;
|
node_map[item_name] = node_item;
|
||||||
|
QStandardItem* enery_count_item = node_item;
|
||||||
|
const auto& ch_enery_count_data_filename_list = cur_pro_model->GetChannelEneryCountDataFilenameList();
|
||||||
|
for (auto it = ch_enery_count_data_filename_list.begin(); it != ch_enery_count_data_filename_list.end(); ++it) {
|
||||||
|
uint ch_num = it.key();
|
||||||
|
QString item_name = QStringLiteral(u"通道%1能量计数").arg(ch_num);
|
||||||
|
const QVariant& analys_type = QVariant::fromValue(AnalysisType::EnergyCountData);
|
||||||
|
QStandardItem* node_item = AddChildNode(enery_count_item, item_name, status, analys_type, true);
|
||||||
|
node_item->setData(project_name, ProjectName);
|
||||||
|
node_item->setData(ch_num, ChannelNum);
|
||||||
|
node_map[item_name] = node_item;
|
||||||
|
}
|
||||||
|
|
||||||
uint conform_time_win = cur_pro_model->GetConformTimeWin();
|
uint conform_time_win = cur_pro_model->GetConformTimeWin();
|
||||||
status = cur_pro_model->GetTimeWinConformParticleDataFilenameList(conform_time_win).isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
status = cur_pro_model->GetTimeWinConformParticleDataFilenameList(conform_time_win).isEmpty() ? QStringLiteral(u"无效") : QStringLiteral(u"有效");
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
class MeasureAnalysisProjectModel
|
class MeasureAnalysisProjectModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class SpectrumType {
|
enum SpectrumType {
|
||||||
None,
|
None,
|
||||||
Sample, // 样品谱
|
Sample, // 样品谱
|
||||||
Background, // 本底谱
|
Background, // 本底谱
|
||||||
|
|
@ -90,11 +90,17 @@ private:
|
||||||
QMap<uint, QString> _channel_address_count_data_filename_list;
|
QMap<uint, QString> _channel_address_count_data_filename_list;
|
||||||
// QString _all_channel_particle_total_count_data_filename;
|
// QString _all_channel_particle_total_count_data_filename;
|
||||||
|
|
||||||
QMap<uint, QString> _channel_every_count_data_filename_list;
|
QMap<uint, QString> _channel_enery_count_data_filename_list;
|
||||||
QString _all_channel_enery_total_count_data_filename;
|
QString _all_channel_enery_total_count_data_filename;
|
||||||
|
|
||||||
QMap<uint, QMap<uint, QString> > _time_win_conform_particle_data;
|
QMap<uint, QMap<uint, QString> > _time_win_conform_particle_data;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool LoadProjectModel(const QString& project_filename);
|
||||||
|
bool SaveProjectModel();
|
||||||
|
private:
|
||||||
|
QString _project_filename;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ void NewMeasureAnalysisDlg::initialization()
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ui->btn_filename, &QPushButton::clicked, this, [this](){
|
connect(ui->btn_filename, &QPushButton::clicked, this, [this](){
|
||||||
const QString& filename = QFileDialog::getOpenFileName(this, QStringLiteral(u"选择粒子数据文件"), QString(), QStringLiteral(u"粒子数据文件 (*.csv)"));
|
const QString& filename = QFileDialog::getOpenFileName(this, QStringLiteral(u"选择粒子数据文件"), QString(), QStringLiteral(u"CSV (*.csv);;GVF (*.gvf)"));
|
||||||
if (filename.isEmpty()) {
|
if (filename.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user