#include "AddCurveFileDlg.h" #include #include #include #include "ui_AddCurveFileDlg.h" AddCurveFileDlg::AddCurveFileDlg(QWidget* parent) : BaseAddFileDlg(FileEntryType::Curve, parent) , ui(new Ui::AddCurveFileDlg) { ui->setupUi(this); SetTitle(getDialogTitle()); setupSpecificUI(); } AddCurveFileDlg::~AddCurveFileDlg() { delete ui; } void AddCurveFileDlg::setupSpecificUI() { ui->xColumnSpinBox->setValue(1); ui->yColumnSpinBox->setValue(2); ui->separatorComboBox->setCurrentIndex(0); ui->hasHeaderCheckBox->setChecked(true); } void AddCurveFileDlg::setupConnections() { connect(ui->selectFileBtn, &QToolButton::clicked, this, &AddCurveFileDlg::onSelectFileClicked); connect(ui->filePathEdit, &QLineEdit::textChanged, this, &AddCurveFileDlg::onFilePathChanged); connect(ui->addBtn, &QPushButton::clicked, this, &QDialog::accept); connect(ui->cancelBtn, &QPushButton::clicked, this, &QDialog::reject); } void AddCurveFileDlg::onSelectFileClicked() { QString fileName = QFileDialog::getOpenFileName( this, getDialogTitle(), QString(), getFileFilter() ); if (!fileName.isEmpty()) { ui->filePathEdit->setText(fileName); updateFileInfo(fileName); } } void AddCurveFileDlg::onFilePathChanged() { QString filePath = ui->filePathEdit->text(); if (!filePath.isEmpty()) { updateFileInfo(filePath); } } bool AddCurveFileDlg::validateSpecificParams() { if (ui->filePathEdit->text().trimmed().isEmpty()) { QMessageBox::warning(this, QStringLiteral("Warning"), QStringLiteral("Please select a curve data file.")); return false; } QFileInfo fileInfo(ui->filePathEdit->text()); if (!fileInfo.exists()) { QMessageBox::warning(this, QStringLiteral("Warning"), QStringLiteral("The selected file does not exist.")); return false; } if (ui->xColumnSpinBox->value() == ui->yColumnSpinBox->value()) { QMessageBox::warning(this, QStringLiteral("Warning"), QStringLiteral("X and Y columns must be different.")); return false; } return true; } QString AddCurveFileDlg::getFileFilter() const { return QStringLiteral("Curve Data Files (*.txt *.csv *.dat);;All Files (*.*)"); } QString AddCurveFileDlg::getDialogTitle() const { return QStringLiteral("Add Curve Data File"); } void AddCurveFileDlg::onDelimiterChanged() { // Handle delimiter change if needed } void AddCurveFileDlg::onHeaderToggled(bool hasHeader) { // Handle header toggle if needed } AddCurveFileDlg::CurveParams AddCurveFileDlg::getCurveParams() const { CurveParams params; params.xColumn = ui->xColumnSpinBox->value(); params.yColumn = ui->yColumnSpinBox->value(); // Get delimiter from combo box int index = ui->separatorComboBox->currentIndex(); switch (index) { case 0: params.delimiter = ","; break; case 1: params.delimiter = "\t"; break; case 2: params.delimiter = " "; break; case 3: params.delimiter = ";"; break; default: params.delimiter = ","; break; } params.hasHeader = ui->hasHeaderCheckBox->isChecked(); params.description = ui->descriptionEdit->toPlainText().trimmed(); return params; }