| 128 |  | ui->statusBar->addPermanentWidget(this->myBar); //this adds automatically in right | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 129 |  | ui->statusBar->addPermanentWidget(ui->tbAbortConversion); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 130 |  |  | 
 
 
 
 
 
 
 
 
 | 131 | – | //Initialize list pointers | 
 
 
 
 
 
 
 
 
 | 132 | – | this->listToProccess = new QStringList; | 
 
 
 
 
 
 
 
 
 | 133 | – |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 131 |  | // User interface | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 |  | ui->mainToolBar->addWidget(ui->tbAE); //add ae installer launch button | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 133 |  | ui->mainToolBar->addWidget(ui->emptySpacerLabel); //trick, we can't add directly a space so we add an empty | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 135 |  | ui->mainToolBar->addWidget(ui->emptySpacerLabel2); //same as before | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 136 |  | ui->mainToolBar->addWidget(ui->tbCommand); //add option to manual onisplit commands | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 137 |  | ui->mainToolBar->addWidget(ui->emptySpacerLabel3); //same as before | 
 
 
 
 
 
 
 
 | 138 | + | ui->mainToolBar->addWidget(ui->tbXmlToolsInterface); //add option to manual onisplit commands | 
 
 
 
 
 
 
 
 | 139 | + | ui->mainToolBar->addWidget(ui->emptySpacerLabel4); //same as before | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 140 |  | ui->mainToolBar->addWidget(ui->tbOpenFolder); //add option to open folder with files converted etc | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 141 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 142 |  | ui->mainToolBar->setLayoutDirection(Qt::RightToLeft); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 206 |  | this->win7TaskBarProgress = this->win7TaskBarButton->progress(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 207 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 208 |  | //Create a thread for do the conversion in background | 
 
 
 
 
 
 
 
 
 
 
 | 209 | < | this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, this->listToProccess, this->win7TaskBarProgress); | 
 
 
 
 
 
 
 
 
 | 209 | > | this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, &this->listToProccess, this->win7TaskBarProgress); | 
 
 
 
 
 
 
 
 
 
 
 | 210 |  | #else | 
 
 
 
 
 
 
 
 
 
 
 | 211 | < | this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, this->listToProccess); | 
 
 
 
 
 
 
 
 
 | 211 | > | this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, &this->listToProccess); | 
 
 
 
 
 
 
 
 
 
 
 | 212 |  | #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 213 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 214 |  | connectSlots(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 291 |  | QDesktopServices::openUrl(QUrl("file:///"+this->outputFolder)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 292 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 293 |  |  | 
 
 
 
 
 
 
 
 | 294 | + |  | 
 
 
 
 
 
 
 
 | 295 | + | void MainWindow::on_tbXmlToolsInterface_clicked() | 
 
 
 
 
 
 
 
 | 296 | + | { | 
 
 
 
 
 
 
 
 | 297 | + | //We pass no parent because we want to have an independent window for XmlToolsInterface, | 
 
 
 
 
 
 
 
 | 298 | + | //so we can minimize it or maximize indepently from the MainWindow | 
 
 
 
 
 
 
 
 | 299 | + | XmlToolsInterface *xmlToolsWindow = new XmlToolsInterface(this->myLogger); | 
 
 
 
 
 
 
 
 | 300 | + | xmlToolsWindow->show(); //it destroys itself when finished. | 
 
 
 
 
 
 
 
 | 301 | + | } | 
 
 
 
 
 
 
 
 | 302 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 303 |  | void MainWindow::on_tbAbortConversion_clicked() | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 304 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 305 |  | if(Util::showQuestionPopUp(this,"Are you sure you want to abort the current conversion?")){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 749 |  | for(int i=0; i<currTable->rowCount(); i++){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 750 |  | //Only process enabled items | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 751 |  | if(currTable->item(i,2)->background()!=currTable->disabledBackStyle){ | 
 
 
 
 
 
 
 
 
 
 
 | 752 | < | this->listToProccess->append(currTable->item(i,2)->text()); | 
 
 
 
 
 
 
 
 
 | 752 | > | this->listToProccess.append(currTable->item(i,2)->text()); | 
 
 
 
 
 
 
 
 
 
 
 | 753 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 754 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 755 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1194 |  | QMessageBox::StandardButton result = askToSaveCurrentProject(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1195 |  | if(result == QMessageBox::StandardButton::Cancel){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1196 |  | event->ignore(); | 
 
 
 
 
 
 
 
 | 1197 | + | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1198 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1199 |  | } | 
 
 
 
 
 
 
 
 | 1200 | + |  | 
 
 
 
 
 
 
 
 | 1201 | + | // Exit application (this will also close all other windows which don't have parent, for instance ManualCommands) | 
 
 
 
 
 
 
 
 | 1202 | + | QApplication::quit(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1203 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1204 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1205 |  | QMessageBox::StandardButton MainWindow::askToSaveCurrentProject(){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1236 |  | ui->leBnvLevels->setEnabled(checked); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1237 |  | ui->cbGridsLevels->setEnabled(checked); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1238 |  | ui->cbGridsLevels->setChecked(checked); | 
 
 
 
 
 
 
 
 
 
 
 | 1239 | < | if(checked){ | 
 
 
 
 
 
 
 
 
 | 1239 | > | if(checked && !projectIsLoading){ | 
 
 
 
 
 
 
 
 
 
 
 | 1240 |  | QString file=QFileDialog::getOpenFileName(this,"Choose the BNV.dae file...","./" , "All Files (*.*)"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1241 |  | if(!file.isEmpty()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1242 |  | ui->leBnvLevels->setText(file); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1248 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1249 |  | ui->leAdditSourcesLevels->setEnabled(checked); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1250 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 1251 | < | if(checked){ | 
 
 
 
 
 
 
 
 
 | 1251 | > | if(checked && !projectIsLoading){ | 
 
 
 
 
 
 
 
 
 
 
 | 1252 |  | QStringList filesSelected=QFileDialog::getOpenFileNames(this,"Choose the additional .dae files...","./" , "All Files (*.*)"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1253 |  | QString filesJoined; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1254 |  | int size=filesSelected.size(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1317 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1318 |  | void MainWindow::on_tbCommand_clicked() | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1319 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 1320 | < | //Show preferences | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1321 | < | ManualCommands *commandsWindow = new ManualCommands(this); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1320 | > | //We pass no parent because we want to have an independent window for ManualCommands, | 
 
 
 
 
 | 1321 | > | //so we can minimize it or maximize indepently from the MainWindow | 
 
 
 
 
 | 1322 | > | ManualCommands *commandsWindow = new ManualCommands(); | 
 
 
 
 
 
 
 
 
 
 
 | 1323 |  | commandsWindow->show(); //it destroys itself when finished. | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1324 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1325 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2014 |  | void MainWindow::loadProjectState(const QString &filePath) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2015 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2016 |  |  | 
 
 
 
 
 
 
 
 | 2017 | + | this->projectIsLoading = true; | 
 
 
 
 
 
 
 
 | 2018 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2019 |  | if(this->vagoSettings->value("AskSaveProject").toBool() && this->unsavedChangesExist){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2020 |  | QMessageBox::StandardButton result = askToSaveCurrentProject(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2021 |  | if(result == QMessageBox::StandardButton::Cancel){ | 
 
 
 
 
 
 
 
 | 2022 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2023 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2024 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2025 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2033 |  | if(result.status!=pugi::status_ok){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2034 |  | UtilVago::showAndLogErrorPopUpLogButton(this->myLogger, "An error ocurred while loading project file.\n" + QString(result.description())); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2035 |  | showErrStatusMessage(statusError); | 
 
 
 
 
 
 
 
 | 2036 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2037 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2038 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2039 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2041 |  | if(QString(doc.root().first_child().name()) != "VagoProject"){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2042 |  | UtilVago::showAndLogErrorPopUpLogButton(this->myLogger, QString(doc.root().name()) + "The file opened is not a valid VagoProject file. Load aborted."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2043 |  | showErrStatusMessage(statusError); | 
 
 
 
 
 
 
 
 | 2044 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2045 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2046 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2047 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2054 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2055 |  | UtilVago::showAndLogErrorPopUpLogButton(this->myLogger, "Couldn't find the vagoVersion of the current project. Load aborted.\n" + QString(e.what())); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2056 |  | showErrStatusMessage(statusError); | 
 
 
 
 
 
 
 
 | 2057 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2058 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2059 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2060 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2061 |  | if(!projVagoVersion.startsWith(GlobalVars::LastCompatibleVersion)){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2062 |  | UtilVago::showAndLogErrorPopUpLogButton(this->myLogger, "The project that you are trying to load seems it is not compatible with your Vago Version. Please update Vago and try again."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2063 |  | showErrStatusMessage(statusError); | 
 
 
 
 
 
 
 
 | 2064 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2065 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2066 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2067 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2077 |  | catch(const std::exception& e){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2078 |  | UtilVago::showAndLogErrorPopUpLogButton(this->myLogger, "Couldn't load the vago project. Error: " + QString(e.what())); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2079 |  | showErrStatusMessage(statusError); | 
 
 
 
 
 
 
 
 | 2080 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2081 |  | return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2082 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2083 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2090 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2091 |  | setVagoWindowTitle(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2092 |  |  | 
 
 
 
 
 
 
 
 | 2093 | + | this->projectIsLoading = false; | 
 
 
 
 
 
 
 
 | 2094 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2095 |  | showSuccessStatusMessage("Project loaded sucessfully."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2096 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2097 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2154 |  | ui->leBnvLevels->setText(QString(doc.select_node(Util::qStrToCstr("/VagoProject/"+tabName+"/Options/@bnvSourceValue")).attribute().value())); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2155 |  | ui->cbGridsLevels->setChecked(doc.select_node(Util::qStrToCstr("/VagoProject/"+tabName+"/Options/@generateGrids")).attribute().as_bool()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2156 |  | ui->cbAdditionalSourcesLevels->setChecked(doc.select_node(Util::qStrToCstr("/VagoProject/"+tabName+"/Options/@additionalSources")).attribute().as_bool()); | 
 
 
 
 
 
 
 
 
 
 
 | 2157 | < | ui->leAdditSourcesLevels->setText(QString(doc.select_node(Util::qStrToCstr("/VagoProject/"+tabName+"/Options/@bnvSource")).attribute().value())); | 
 
 
 
 
 
 
 
 
 | 2157 | > | ui->leAdditSourcesLevels->setText(QString(doc.select_node(Util::qStrToCstr("/VagoProject/"+tabName+"/Options/@additionalSourcesValue")).attribute().value())); | 
 
 
 
 
 
 
 
 
 
 
 | 2158 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2159 |  | else{ | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2160 |  | ui->cbFromMisc->setCurrentText(from); |