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

Private GIT Repository
d98d04aeac9b7ae574805b7aedf5d01e5aa776d2
[blast.git] / NewProjectDialog.cpp
1 #include "NewProjectDialog.h"
2
3 NewProjectDialog::NewProjectDialog(Parameters *_params, QWidget *parent) : CustomDialog(tr("Create a new project"),tr("Location"), parent) {
4
5   params = _params;
6
7   QHBoxLayout *layNameProj = new QHBoxLayout;
8   QLabel *nameProjLab = new QLabel(tr("Name :"));
9   nameProjEdit = new QLineEdit();
10   nameProjEdit->setMaxLength(100);
11   nameProjEdit->setText("");
12
13   layNameProj->addWidget(nameProjLab);
14   layNameProj->addWidget(nameProjEdit);
15
16   QHBoxLayout *layDirProj = new QHBoxLayout;
17   QLabel *dirProjLab = new QLabel(tr("Path :"));
18   dirProjEdit = new QLineEdit("");
19   dirProjEdit->setMaxLength(500);
20   dirProjButton = new QPushButton(QIcon(":/images/filefind.png"),"");
21   dirProjButton->setFixedWidth(30);
22   pathOk = false;
23
24   layDirProj->addWidget(dirProjLab);
25   layDirProj->addWidget(dirProjEdit);
26   layDirProj->addWidget(dirProjButton);
27
28   QHBoxLayout *layClk = new QHBoxLayout;
29   QLabel* clkLab1 = new QLabel(tr("Main clock freq."));
30   QLabel* clkLab2 = new QLabel(tr("MHz"));
31   clkEdit = new QLineEdit("100");
32   layClk->addWidget(clkLab1);
33   layClk->addWidget(clkEdit);
34   layClk->addWidget(clkLab2);
35
36   QHBoxLayout *layAuto = new QHBoxLayout;
37   autoConnClkCheck = new QCheckBox("Auto-connect blocks to main clock");
38   autoConnClkCheck->setChecked(true);
39
40
41   QVBoxLayout *layAll = new QVBoxLayout;
42   layAll->addLayout(layNameProj);
43   layAll->addLayout(layDirProj);
44   layAll->addLayout(layClk);
45   layAll->addLayout(layAuto);
46
47   setContent(layAll);   
48
49   connect(dirProjButton,SIGNAL(clicked()),this,SLOT(chooseProjectPath()));
50   connect(nameProjEdit,SIGNAL(textChanged(QString)),this,SLOT(checkProjectName(QString)));
51   connect(dirProjEdit,SIGNAL(textChanged(QString)),this,SLOT(checkProjectPath(QString)));
52 }
53
54
55 void NewProjectDialog::checkBeforeAccept() {
56
57   if ((nameProjEdit->text().isEmpty()) || (!pathOk)) {
58
59       int ret = QMessageBox::warning(this,"Cannot create the project","Invalid project path");
60       return;
61   }
62   double freq;
63   bool ok = false;
64   freq = clkEdit->text().toDouble(&ok);
65   if (!ok) {
66     int ret = QMessageBox::warning(this,"Cannot create the project","Invalid main clock frequency (in MHz)");
67     return;
68   }
69
70   //cout << "all ok" << endl;
71   params->projectPath = dirProjEdit->text();
72   params->projectFile = params->projectPath + "/" + params->projectName + ".xml";
73   params->clocks.append(freq);
74   if (autoConnClkCheck->isChecked()) {
75     params->autoConnMainClk = true;
76   }
77   else {
78     params->autoConnMainClk = false;
79   }
80
81   accept();
82
83 }
84
85 void NewProjectDialog::chooseProjectPath() {
86
87   QString where;
88   where = QDir::currentPath();
89   QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),where);
90   dirProjEdit->setText(dir);
91 }
92
93 void NewProjectDialog::checkProjectPath(QString name) {
94   QDir dir(name);
95   if (dir.exists()) {
96     pathOk = true;
97   }
98   else {
99     pathOk = false;
100   }
101 }
102
103 void NewProjectDialog::checkProjectName(QString name) {
104   params->projectName = Parameters::normalizeName(name);
105   if (name != params->projectName) {
106     nameProjEdit->setText(params->projectName);
107   }
108 }