114 lines
3.4 KiB
C++
114 lines
3.4 KiB
C++
|
|
#include "AddCurveFileDlg.h"
|
||
|
|
|
||
|
|
#include <QFileDialog>
|
||
|
|
#include <QFileInfo>
|
||
|
|
#include <QMessageBox>
|
||
|
|
|
||
|
|
#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;
|
||
|
|
}
|