From d0a0d6743b6d274f79577b8da7e7809055dc68ac Mon Sep 17 00:00:00 2001 From: darkelfe14728 Date: Wed, 1 Jul 2020 15:04:05 +0200 Subject: [PATCH] First version of program --- .gitignore | 1 + .idea/.gitignore | 6 + .idea/.name | 1 + .idea/Extract_etab_a_fiab.iml | 2 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/dictionaries/darkelfe.xml | 3 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + CMakeLists.txt | 17 +++ MainDialog.cpp | 83 +++++++++++ MainDialog.h | 25 ++++ MainDialog.ui | 139 ++++++++++++++++++ .../mocs_compilation.cpp | 2 + main.cpp | 13 ++ 16 files changed, 321 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/Extract_etab_a_fiab.iml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/dictionaries/darkelfe.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 CMakeLists.txt create mode 100644 MainDialog.cpp create mode 100644 MainDialog.h create mode 100644 MainDialog.ui create mode 100644 cmake-build-debug/Extract_etab_a_fiab_autogen/mocs_compilation.cpp create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore index e257658..a320707 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ *.out *.app +cmake-* \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..8bf4d45 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,6 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..4d51fbb --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Extract_etab_a_fiab \ No newline at end of file diff --git a/.idea/Extract_etab_a_fiab.iml b/.idea/Extract_etab_a_fiab.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/Extract_etab_a_fiab.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/dictionaries/darkelfe.xml b/.idea/dictionaries/darkelfe.xml new file mode 100644 index 0000000..09bf5a1 --- /dev/null +++ b/.idea/dictionaries/darkelfe.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..00d472d --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..79b3c94 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..67e37ee --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..079eda4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.16) +project(Extract_etab_a_fiab) + +set(CMAKE_CXX_STANDARD 20) + +find_package(Qt5Widgets REQUIRED) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +add_executable( + Extract_etab_a_fiab + + main.cpp + MainDialog.ui MainDialog.cpp MainDialog.h +) +target_link_libraries(Extract_etab_a_fiab Qt5::Widgets) \ No newline at end of file diff --git a/MainDialog.cpp b/MainDialog.cpp new file mode 100644 index 0000000..313012e --- /dev/null +++ b/MainDialog.cpp @@ -0,0 +1,83 @@ +#include +#include + +#include +#include +#include + +#include "MainDialog.h" +#include "ui_MainDialog.h" + +MainDialog::MainDialog (QWidget* parent) : + QDialog(parent), + m_ui(new Ui::MainDialog) { + m_ui->setupUi(this); + + connect(m_ui->input_button, &QPushButton::clicked, this, &MainDialog::onInputButtonClick); + connect(m_ui->csv_button, &QPushButton::clicked, this, &MainDialog::onCsvButtonClick); + + connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &MainDialog::onAccepted); +} + +MainDialog::~MainDialog () { + delete m_ui; +} + +void MainDialog::onInputButtonClick () { + m_ui->input_input + ->setText(QFileDialog::getOpenFileName(this, "Fichier à traiter", QString())); +} + +void MainDialog::onCsvButtonClick () { + m_ui->csv_input + ->setText(QFileDialog::getSaveFileName(this, "CSV de sortie", QString(), "Fichier CSV (*.csv)")); +} + +void MainDialog::onAccepted () { + if (m_ui->input_input->text().isEmpty()) { + QMessageBox::critical(this, "Erreur", "Vous devez sélectioner un fichier à traiter"); + return; + } + if (m_ui->csv_input->text().isEmpty()) { + QMessageBox::critical(this, "Erreur", "Vous devez indiquer le fichier CSV de sortie"); + return; + } + + QFile input(m_ui->input_input->text()); + if (!input.exists()) { + QMessageBox::critical(this, "Erreur", "Le fichier à traiter n'existe pas !"); + return; + } + if (!input.open(QIODevice::Text | QIODevice::ReadOnly)) { + QMessageBox::critical(this, "Erreur", "Impossible de lire le fichier à traiter"); + return; + } + const QString data = input.readAll(); + input.close(); + + QFile outputFile(m_ui->csv_input->text()); + if (!outputFile.open(QIODevice::Text | QIODevice::WriteOnly | QIODevice::Truncate)) { + QMessageBox::critical(this, "Erreur", "Impossible d'écrire dans le fichier CSV"); + return; + } + QTextStream output(&outputFile); + + // language=RegExp + const QRegularExpression regex("\\*\\*\\* Etablissement ([0-9][AB0-9][0-9]{7}) \\*\\*\\*[\\s\\S]*?(?:(?:Champs a fiabiliser : ([^\\s]+))|(?=\\*\\*\\* Etablissement )|$)"); + QRegularExpressionMatchIterator it_regex = regex.globalMatch(data); + + int nbMatch = 0; + while (it_regex.hasNext()) { + nbMatch++; + + QRegularExpressionMatch match = it_regex.next(); + output << "\"" + match.captured(1).replace("\"", "\\\"") + "\";\"" + match.captured(2).replace("\"", "\\\"") + "\"\n"; + } + + outputFile.close(); + + QMessageBox::information(this, "Fin", QString::number(nbMatch) + " lignes générées"); + if (nbMatch > 0) { + this->accept(); + } +} diff --git a/MainDialog.h b/MainDialog.h new file mode 100644 index 0000000..d9abc1d --- /dev/null +++ b/MainDialog.h @@ -0,0 +1,25 @@ +#ifndef EXTRACTIONFINESS_MAINDIALOG_H +#define EXTRACTIONFINESS_MAINDIALOG_H + +#include + +namespace Ui { + class MainDialog; +} + +class MainDialog : public QDialog { + Q_OBJECT + +public: + explicit MainDialog(QWidget* parent = nullptr); + ~MainDialog() override; + +private: + Ui::MainDialog* m_ui; + + void onInputButtonClick(); + void onCsvButtonClick(); + void onAccepted(); +}; + +#endif //EXTRACTIONFINESS_MAINDIALOG_H diff --git a/MainDialog.ui b/MainDialog.ui new file mode 100644 index 0000000..3b2ef24 --- /dev/null +++ b/MainDialog.ui @@ -0,0 +1,139 @@ + + + MainDialog + + + + 0 + 0 + 425 + 177 + + + + Extraction Finess + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Fichier à traiter + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + input_input + + + + + + + + + + + + + CSV de sortie + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + csv_input + + + + + + + Parcourir + + + ... + + + + + + + Parcourir + + + ... + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close|QDialogButtonBox::Ok + + + true + + + + + + + input_input + input_button + csv_input + csv_button + + + + + buttonBox + rejected() + MainDialog + reject() + + + 292 + 158 + + + 286 + 176 + + + + + diff --git a/cmake-build-debug/Extract_etab_a_fiab_autogen/mocs_compilation.cpp b/cmake-build-debug/Extract_etab_a_fiab_autogen/mocs_compilation.cpp new file mode 100644 index 0000000..340265d --- /dev/null +++ b/cmake-build-debug/Extract_etab_a_fiab_autogen/mocs_compilation.cpp @@ -0,0 +1,2 @@ +// This file is autogenerated. Changes will be overwritten. +#include "EWIEGA46WW/moc_MainDialog.cpp" diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..f439855 --- /dev/null +++ b/main.cpp @@ -0,0 +1,13 @@ +#include + +#include "MainDialog.h" + +int main (int argc, char* argv[]) { + QApplication app(argc, argv); + app.setQuitOnLastWindowClosed(true); + + MainDialog dialog; + dialog.show(); + + return app.exec(); +}