]> AND Private Git Repository - blast.git/blobdiff - MainWindow.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
started top group gen, added project subdirs
[blast.git] / MainWindow.cpp
index 683ba3d03c2e4d0154eb489634d9aee4ed084451..212e54dd6cf9a7f7a8f91b0c052cb2575fcc051f 100644 (file)
@@ -24,6 +24,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
   try {    
     params->loadBlastConfiguration("blastconfig.xml");
 
+    // first load external sources
+    params->loadSources();
+
     if (!QFileInfo::exists(params->refLib)) {
       params->loadReferencesFromXml();
       int ret = QMessageBox::question(this,tr("Building references library"),tr("The reference block library does not exists.\n References have been read directly from the xml descriptions of blocks.\n It can be saved into a library in order to start application faster. "), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
@@ -319,7 +322,7 @@ void MainWindow::slotLoadProject(){
       library->updateComboScene();
       params->isCurrentProject = true;
       enableProjectActions(true, PROJECT_CLOSE | PROJECT_SAVE | PROJECT_SAVEAS | PROJECT_LIB, OP_RAZ);
-      enableAnalysisActions(true, ANALYSIS_ANALYZE, OP_RAZ);
+      enableAnalysisActions(true, ANALYSIS_ANALYZE | ANALYSIS_GENERATE, OP_RAZ);
     }
     else {
       QMessageBox msgBox;
@@ -447,8 +450,29 @@ void MainWindow::slotGraphAnalysis() {
 }
 
 void MainWindow::slotGenerateVHDL() {
+
+  QDir baseDir(params->projectPath);
+  if (!baseDir.exists()) {
+    cerr << "Project path " << qPrintable(params->projectPath) << " no longer exists. First, recreate it and put the project file within. Then retry to generate." << endl;
+    return;
+  }
+  if (! baseDir.exists("src")) {
+    baseDir.mkdir("src");
+  }
+  if (! baseDir.exists("testbench")) {
+    baseDir.mkdir("testbench");
+  }
+  if (! baseDir.exists("Makefile")) {
+    QFile make("/home/sdomas/Projet/Blast/code/blast/Makefile-isim");
+    QString dest = params->projectPath;
+    dest += "/Makefile";
+    make.copy(dest);
+  }
+
+  QString dest = params->projectPath;
+  dest += "/src/";
   try {
-    params->getGraph()->generateVHDL(params->projectPath);
+    params->getGraph()->generateVHDL(dest);
   }
   catch(Exception e) {
     cerr << qPrintable(e.getMessage()) << endl;