X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/d30c9cf675ad7141d1c8e31d2e72315267d45cf2..df84660fd98b39737692d57b68c8b2c2d34af0f1:/MainWindow.cpp?ds=sidebyside diff --git a/MainWindow.cpp b/MainWindow.cpp index 1f8c1c0..38ec48a 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -4,7 +4,7 @@ #include "BlockLibraryWidget.h" #include "GroupWidget.h" #include "GroupScene.h" -#include "BlockWidget.h" +#include "VHDLConverter.h" #include "AbstractBoxItem.h" #include "Graph.h" #include "GroupItem.h" @@ -271,15 +271,16 @@ void MainWindow::slotLoadProject(){ if (topGroup != NULL) { addTopGroup(topGroup); library->updateComboScene(); + params->isCurrentProject = true; + enableProjectActions(true, PROJECT_CLOSE | PROJECT_SAVE | PROJECT_SAVEAS | PROJECT_LIB, OP_RAZ); } else { QMessageBox msgBox; - msgBox.setText("Cannot open the project."); - msgBox.setInformativeText("Do you want to save your changes?"); + msgBox.setText("Cannot open the project."); msgBox.setStandardButtons(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel); - int ret = msgBox.exec(); + msgBox.exec(); } } } @@ -291,28 +292,58 @@ void MainWindow::slotNewProject(){ GroupWidget* topGroup = dispatcher->createTopScene(); addTopGroup(topGroup); library->updateComboScene(); + library->show(); + params->isCurrentProject = true; } -void MainWindow::slotCloseProject(){ +bool MainWindow::slotCloseProject(){ - // removing the GroupWidget from stack - QWidget *widget = stackedWidget->widget(1); - stackedWidget->removeWidget(widget); - stackedWidget->setCurrentIndex(0); + bool doClose = false; - dispatcher->closeCurrentProject(); + if(params->isCurrentProject) { + if (params->unsaveModif) { + QMessageBox msgBox; + msgBox.setText("The project has been modified."); + msgBox.setInformativeText("Do you want to save your changes?"); + msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Save); + int ret = msgBox.exec(); - params->isCurrentProject = false; - params->unsaveModif = false; - absoluteFilename = QString(); + switch(ret) { + case QMessageBox::Save : + slotSaveProject(); + doClose = true; + break; + case QMessageBox::Discard : + doClose = true; + break; + } + } + else { + doClose = true; + } + if (doClose) { + // removing the GroupWidget from stack + QWidget *widget = stackedWidget->widget(1); + stackedWidget->removeWidget(widget); + stackedWidget->setCurrentIndex(0); - initialize(); + dispatcher->closeCurrentProject(); + + params->isCurrentProject = false; + params->unsaveModif = false; + absoluteFilename = QString(); + + initialize(); + } + } + return doClose; } void MainWindow::slotNewBlockWidget() { - new BlockWidget(); + new VHDLConverter(); } void MainWindow::slotSaveProject(){ @@ -342,7 +373,12 @@ void MainWindow::slotOpenBlockLibrary() { void MainWindow::slotGraphValidation() { - params->parametersValidation(); + try { + params->getGraph()->computeOutputPatterns(5); + } + catch(Exception e) { + cerr << qPrintable(e.getMessage()) << endl; + } } void MainWindow::addTopGroup(GroupWidget *_topGroup) { @@ -357,29 +393,16 @@ void MainWindow::removeTopGroup() { stackedWidget->setCurrentIndex(0); } -void MainWindow::closeEvent(QCloseEvent *event){ - if(params->isCurrentProject){ - QMessageBox msgBox; - msgBox.setText("The project has been modified."); - msgBox.setInformativeText("Do you want to save your changes?"); - msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); - msgBox.setDefaultButton(QMessageBox::Save); - - int ret = msgBox.exec(); - - switch(ret) { - case QMessageBox::Save : - slotSaveProject(); - slotCloseProject(); - break; - case QMessageBox::Discard : - slotCloseProject(); - break; - } +void MainWindow::closeEvent(QCloseEvent *event) { + + if (params->isCurrentProject) { + slotCloseProject(); event->ignore(); - } else { - exit(0); } + else { + library->deleteLater(); + } + } void MainWindow::mousePressEvent(QMouseEvent *e) {