#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(this->ui->actionOpen,SIGNAL(triggered()),this,SLOT(openFile())); connect(this->ui->actionScan_Folder,SIGNAL(triggered()),this,SLOT(openFolder())); this->file = new VHDL_Tools::VHDL_File; this->rootNode = NULL; } MainWindow::~MainWindow() { delete ui; } void MainWindow::openFile() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open VHDL file"), NULL, tr("VHDL Files (*.vhd)")); if(fileName!="") { parseFile(fileName,true); this->rootNode=file->getParseTree(); updateTree(rootNode); } } void MainWindow::openFolder() { QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), NULL, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(dir!="") { this->rootNode=new VHDL_Tools::VHDL_AST_Node(dir,VHDL_Tools::virtualGroup); parseDirectory(dir); updateTree(this->rootNode); } } void MainWindow::updateTree(VHDL_Tools::VHDL_AST_Node *rootNode) { this->ui->VHDLtreeWidget->clear(); if(rootNode) { QTreeWidgetItem* item = new QTreeWidgetItem(QStringList()<a_value); for(int i=0;ichilds.count();i++) { printNode(rootNode->childs.at(i),item); } this->ui->VHDLtreeWidget->addTopLevelItem(item); } } void MainWindow::printNode(VHDL_Tools::VHDL_AST_Node *rootNode, QTreeWidgetItem *parent) { if(rootNode) { QTreeWidgetItem* item = new QTreeWidgetItem(parent,QStringList()<a_value); for(int i=0;ichilds.count();i++) { printNode(rootNode->childs.at(i),item); } } } void MainWindow::parseFile(const QString &fileName, bool trashPreviousTree) { if(fileName!="") this->file->parseFile(fileName,trashPreviousTree); } void MainWindow::parseDirectory(const QString &dirName) { QDir dir(dirName); dir.setFilter(QDir::Files | QDir::NoDotAndDotDot| QDir::Dirs | QDir::NoSymLinks); QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { if(list.at(i).isDir()) { parseDirectory(list.at(i).absoluteFilePath()); } else { if(list.at(i).isFile() && (!list.at(i).completeSuffix().compare("vhd"))) { parseFile(list.at(i).absoluteFilePath(),false); VHDL_Tools::VHDL_AST_Node* parseTree = file->getParseTree(); if(parseTree!=NULL) { this->rootNode->childs.append(parseTree); parseTree->setParent(this->rootNode); } } } } }