| 16 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 17 | 
   | 
     setVagoWindowTitle(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 18 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 19 | 
 < | 
     if(!QFile::exists(UtilVago::getOniSplitExeAbsolutePath())){ | 
 
 
 
 
 
 
 
 
 
 | 19 | 
 > | 
     if(!QFile::exists(UtilVago::getOniSplitExecutableAbsolutePath())){ | 
 
 
 
 
 
 
 
 
 
 
 
 | 20 | 
   | 
         UtilVago::showAndLogErrorPopUp(this->myLogger, "OniSplit not found. Please download it at "+GlobalVars::ModsDomain+" and put it the Vago's tools folder. \n\nProgram will now exit."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 21 | 
   | 
         exit(1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 22 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 23 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 24 | 
 < | 
     if(!QFile::exists(UtilVago::getXmlToolsExeAbsolutePath())){ | 
 
 
 
 
 
 
 
 
 
 | 24 | 
 > | 
     if(!QFile::exists(UtilVago::getXmlToolsExecutableAbsolutePath())){ | 
 
 
 
 
 
 
 
 
 
 
 
 | 25 | 
   | 
         UtilVago::showAndLogErrorPopUp(this->myLogger, "XmlTools not found. Please download it at "+GlobalVars::ModsDomain+" and put it the Vago's tools folder. \n\nProgram will now exit."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 26 | 
   | 
         exit(1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 27 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 | 
   | 
         this->vagoSettings->setValue("SeparateInWorkspace",true); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 | 
   | 
         iniChanged=true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 73 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 | 74 | 
 < | 
     if(!this->vagoSettings->contains("ConfirmExit")){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 75 | 
 < | 
         this->vagoSettings->setValue("ConfirmExit", false); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 74 | 
 > | 
     if(!this->vagoSettings->contains("AskSaveProject")){ | 
 
 
 
 
 
 | 75 | 
 > | 
         this->vagoSettings->setValue("AskSaveProject", true); | 
 
 
 
 
 
 | 76 | 
 > | 
         iniChanged=true; | 
 
 
 
 
 
 | 77 | 
 > | 
     } | 
 
 
 
 
 
 | 78 | 
 > | 
     if(!this->vagoSettings->contains("AskToOpenLastProject")){ | 
 
 
 
 
 
 | 79 | 
 > | 
         this->vagoSettings->setValue("AskToOpenLastProject", false); | 
 
 
 
 
 
 
 
 
 
 
 
 | 80 | 
   | 
         iniChanged=true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 81 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 82 | 
   | 
     if(!this->vagoSettings->contains("LastProjectPath")){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 183 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 184 | 
   | 
 void MainWindow::showEvent(QShowEvent *e) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 185 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 | 186 | 
 < | 
     #ifdef Q_OS_WIN | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 186 | 
 > | 
     // If we don't have a converter yet, application wasn't started. | 
 
 
 
 
 
 | 187 | 
 > | 
     if(!this->applicationIsFullyLoaded) | 
 
 
 
 
 
 | 188 | 
 > | 
     { | 
 
 
 
 
 
 | 189 | 
 > | 
         // Apparently Qt doesn't contains a slot to when the application was fully load (mainwindow). So we do our own implementation instead. | 
 
 
 
 
 
 | 190 | 
 > | 
         connect(this, SIGNAL(signalAppIsLoaded()), this, SLOT(applicationWasLoaded()), Qt::ConnectionType::QueuedConnection); | 
 
 
 
 
 
 | 191 | 
 > | 
         emit signalAppIsLoaded(); | 
 
 
 
 
 
 | 192 | 
 > | 
     } | 
 
 
 
 
 
 | 193 | 
 > | 
  | 
 
 
 
 
 
 | 194 | 
 > | 
     e->accept(); | 
 
 
 
 
 
 | 195 | 
 > | 
 } | 
 
 
 
 
 
 | 196 | 
 > | 
  | 
 
 
 
 
 
 | 197 | 
 > | 
 // Called only when the MainWindow was fully loaded and painted on the screen. This slot is only called once. | 
 
 
 
 
 
 | 198 | 
 > | 
 void MainWindow::applicationWasLoaded(){ | 
 
 
 
 
 
 | 199 | 
 > | 
 #ifdef Q_OS_WIN | 
 
 
 
 
 
 
 
 
 
 
 
 | 200 | 
   | 
     // QProgressBar only works after the windows was shown | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 201 | 
   | 
     // http://stackoverflow.com/questions/24840941/qwintaskbarprogress-wont-show (Kervala answer) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 202 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 208 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 209 | 
   | 
     //Create a thread for do the conversion in background | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 210 | 
   | 
     this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, this->listToProccess, this->win7TaskBarProgress); | 
 
 
 
 
 
 
 
 
 
 
 
 | 211 | 
 < | 
     #else | 
 
 
 
 
 
 
 
 
 
 | 211 | 
 > | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 | 212 | 
   | 
     this->myConverter = new Converter(UtilVago::getAppPath(), this->myLogger, this->listToProccess); | 
 
 
 
 
 
 
 
 
 
 
 
 | 213 | 
 < | 
     #endif | 
 
 
 
 
 
 
 
 
 
 | 213 | 
 > | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 | 214 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 215 | 
   | 
     connectSlots(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 216 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 217 | 
   | 
     this->myLogger->writeString("Application started."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 219 | 
 < | 
     e->accept(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 219 | 
 > | 
     this->applicationIsFullyLoaded = true; | 
 
 
 
 
 
 | 220 | 
 > | 
  | 
 
 
 
 
 
 | 221 | 
 > | 
     QString lastSavedProject = this->vagoSettings->value("RecentProject1").toString(); | 
 
 
 
 
 
 | 222 | 
 > | 
  | 
 
 
 
 
 
 | 223 | 
 > | 
     if(!lastSavedProject.isEmpty() && this->vagoSettings->value("AskToOpenLastProject").toBool()){ | 
 
 
 
 
 
 | 224 | 
 > | 
         if(Util::showQuestionPopUp(this,"Do you want to load latest project?\n\nLatest project was '" + Util::cutNameWithoutBackSlash(lastSavedProject) + "'.")){ | 
 
 
 
 
 
 | 225 | 
 > | 
             loadProjectState(lastSavedProject); | 
 
 
 
 
 
 | 226 | 
 > | 
         } | 
 
 
 
 
 
 | 227 | 
 > | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 | 228 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 229 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 230 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 252 | 
   | 
     myWizard.exec(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 253 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 254 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 255 | 
 + | 
 void MainWindow::on_actionBackground_Image_Wizard_triggered() | 
 
 
 
 
 
 
 
 
 | 256 | 
 + | 
 { | 
 
 
 
 
 
 
 
 
 | 257 | 
 + | 
     BGImageWizard myWizard (UtilVago::getAppPath(), this->workspaceWizardsLocation, this->vagoSettings, this->myLogger); | 
 
 
 
 
 
 
 
 
 | 258 | 
 + | 
     myWizard.exec(); | 
 
 
 
 
 
 
 
 
 | 259 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 260 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 261 | 
   | 
 void MainWindow::on_tbOni_clicked() | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 262 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 263 | 
   | 
     QStringList arguments; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 464 | 
   | 
         addRowTable(myTable,lastFileName,fromTo,command); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 465 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 466 | 
   | 
     updateItemsLoaded(myTable); | 
 
 
 
 
 
 
 
 
 | 467 | 
 + | 
     rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 468 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 469 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 470 | 
   | 
 QString MainWindow::fileParsingXML(QString tabTitle, QString myOutputFolder, QString from, QString to , QString file){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 767 | 
   | 
     if(numErrors!=0){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 768 | 
   | 
         QString sNumErrors=QString::number(numErrors); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 769 | 
   | 
         if(numErrors>1){ | 
 
 
 
 
 
 
 
 
 
 
 
 | 770 | 
 < | 
             UtilVago::showErrorPopUpLogButton(result+"\n This is the last of "+sNumErrors+" Errors."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 771 | 
 < | 
             showErrStatusMessage("Something gone wrong. Check log file ("+sNumErrors+" Errors)."); | 
 
 
 
 
 
 
 
 
 
 | 770 | 
 > | 
             UtilVago::showErrorPopUpLogButton(result+"\n This is the last of "+sNumErrors+" errors."); | 
 
 
 
 
 
 | 771 | 
 > | 
             showErrStatusMessage("Something gone wrong. Check log file ("+sNumErrors+" errors)."); | 
 
 
 
 
 
 
 
 
 
 
 
 | 772 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 773 | 
   | 
         else{ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 774 | 
   | 
             UtilVago::showErrorPopUpLogButton(result); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 775 | 
   | 
             showErrStatusMessage("Something gone wrong. Check log file."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 776 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 | 745 | 
 – | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 777 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 778 | 
   | 
     else{ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 779 | 
   | 
         showSuccessStatusMessage("Everything went well!"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1138 | 
   | 
             myTable->removeRow(myTable->selectionModel()->selectedRows().at(size-i-1).row()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1139 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1140 | 
   | 
         updateItemsLoaded(myTable); | 
 
 
 
 
 
 
 
 
 | 1141 | 
 + | 
         rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1142 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1143 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1144 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1162 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1163 | 
   | 
     if(Util::showQuestionPopUp(this,"Are you sure you want to clear the content?",defaultButton)){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1164 | 
   | 
         clearTableNoPrompt(myTable); | 
 
 
 
 
 
 
 
 
 | 1165 | 
 + | 
         updateItemsLoaded(myTable); | 
 
 
 
 
 
 
 
 
 | 1166 | 
 + | 
         rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1167 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 | 1168 | 
 < | 
     updateItemsLoaded(myTable); | 
 
 
 
 
 
 
 
 
 
 | 1168 | 
 > | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 1169 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1170 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1171 | 
   | 
 void MainWindow::clearTableNoPrompt(DropTableWidget *myTable){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1182 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1183 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1184 | 
   | 
 void MainWindow::closeEvent(QCloseEvent *event){ | 
 
 
 
 
 
 
 
 
 
 
 
 | 1185 | 
 < | 
     if(this->vagoSettings->value("ConfirmExit").toBool()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1186 | 
 < | 
         if(!Util::showQuestionPopUp(this,"Exit Vago?")){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1185 | 
 > | 
     if(this->vagoSettings->value("AskSaveProject").toBool() && this->unsavedChangesExist){ | 
 
 
 
 
 
 | 1186 | 
 > | 
         QMessageBox::StandardButton result = askToSaveCurrentProject(); | 
 
 
 
 
 
 | 1187 | 
 > | 
         if(result == QMessageBox::StandardButton::Cancel){ | 
 
 
 
 
 
 
 
 
 
 
 
 | 1188 | 
   | 
             event->ignore(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1189 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1190 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1191 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1192 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1193 | 
 + | 
 QMessageBox::StandardButton MainWindow::askToSaveCurrentProject(){ | 
 
 
 
 
 
 
 
 
 | 1194 | 
 + | 
     QMessageBox::StandardButton result = | 
 
 
 
 
 
 
 
 
 | 1195 | 
 + | 
             Util::showQuestionPopUpWithCancel(this,"There are unsaved changes. Do you want to save the current project?", QMessageBox::StandardButton::Yes); | 
 
 
 
 
 
 
 
 
 | 1196 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1197 | 
 + | 
     if(result == QMessageBox::StandardButton::Yes){ | 
 
 
 
 
 
 
 
 
 | 1198 | 
 + | 
         on_actionSave_triggered(); | 
 
 
 
 
 
 
 
 
 | 1199 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 1200 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1201 | 
 + | 
     return result; | 
 
 
 
 
 
 
 
 
 | 1202 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 1203 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1204 | 
   | 
 void MainWindow::on_cbToLevels_currentIndexChanged(const QString &arg1) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1205 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1206 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1261 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1262 | 
   | 
     QProcess myProcess; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1263 | 
   | 
     myProcess.setWorkingDirectory(UtilVago::getAppPath()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1264 | 
 < | 
     myProcess.start(UtilVago::getOniSplitExeAbsolutePath()+" -version"); | 
 
 
 
 
 
 
 
 
 
 | 1264 | 
 > | 
     myProcess.start(UtilVago::getOniSplitExecutable()+" -version"); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1265 | 
   | 
     myProcess.waitForFinished(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1266 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1267 | 
   | 
     QString result=myProcess.readAllStandardOutput(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1273 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1274 | 
   | 
     QProcess myProcess; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1275 | 
   | 
     myProcess.setWorkingDirectory(UtilVago::getAppPath()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1276 | 
 < | 
     myProcess.start(UtilVago::getXmlToolsExeAbsolutePath()+" --version"); | 
 
 
 
 
 
 
 
 
 
 | 1276 | 
 > | 
     myProcess.start(UtilVago::getXmlToolsExecutable()+" --version"); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1277 | 
   | 
     myProcess.waitForFinished(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1278 | 
   | 
     QString result=myProcess.readLine(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1279 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1295 | 
   | 
     this->itemsLoaded->setText(QString().setNum(numItems)+ (numItems==1?" item ":" items ") +"loaded"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1296 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1297 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1298 | 
 + | 
 void MainWindow::rowsWereChangedInDropTableWidget(){ | 
 
 
 
 
 
 
 
 
 | 1299 | 
 + | 
     // We have changed rows, we have now unsaved changes. | 
 
 
 
 
 
 
 
 
 | 1300 | 
 + | 
     if(!this->unsavedChangesExist){ | 
 
 
 
 
 
 
 
 
 | 1301 | 
 + | 
         this->unsavedChangesExist = true; | 
 
 
 
 
 
 
 
 
 | 1302 | 
 + | 
         setVagoWindowTitle(); | 
 
 
 
 
 
 
 
 
 | 1303 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 1304 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 1305 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1306 | 
   | 
 void MainWindow::on_tbCommand_clicked() | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1307 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1308 | 
   | 
     //Show preferences | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1367 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1368 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1369 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1370 | 
 + | 
 // New Project | 
 
 
 
 
 
 
 
 
 | 1371 | 
 + | 
 void MainWindow::on_actionNew_Project_triggered() | 
 
 
 
 
 
 
 
 
 | 1372 | 
 + | 
 { | 
 
 
 
 
 
 
 
 
 | 1373 | 
 + | 
     if(this->vagoSettings->value("AskSaveProject").toBool() && this->unsavedChangesExist){ | 
 
 
 
 
 
 
 
 
 | 1374 | 
 + | 
         QMessageBox::StandardButton result = askToSaveCurrentProject(); | 
 
 
 
 
 
 
 
 
 | 1375 | 
 + | 
         if(result == QMessageBox::StandardButton::Cancel){ | 
 
 
 
 
 
 
 
 
 | 1376 | 
 + | 
             return; | 
 
 
 
 
 
 
 
 
 | 1377 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 1378 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 1379 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1380 | 
 + | 
     QList<DropTableWidget*> myTables = getAllTableWidgets(); | 
 
 
 
 
 
 
 
 
 | 1381 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1382 | 
 + | 
     for(DropTableWidget* const currTable : myTables){ | 
 
 
 
 
 
 
 
 
 | 1383 | 
 + | 
         clearTableNoPrompt(currTable); | 
 
 
 
 
 
 
 
 
 | 1384 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 1385 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1386 | 
 + | 
     this->lastProjectFilePath=""; // clear last project file path | 
 
 
 
 
 
 
 
 
 | 1387 | 
 + | 
     this->unsavedChangesExist = false; | 
 
 
 
 
 
 
 
 
 | 1388 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1389 | 
 + | 
     setVagoWindowTitle(); // update vago title | 
 
 
 
 
 
 
 
 
 | 1390 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 1391 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1392 | 
   | 
 void MainWindow::on_actionSave_triggered() | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1393 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1394 | 
   | 
     if(this->lastProjectFilePath.isEmpty()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1553 | 
   | 
     else if(selectedOption==moveUp.get()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1554 | 
   | 
         qSort(selectedRows); //let's order the selections by the row number, so we know exactly how to swap it | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1555 | 
   | 
         myTable->swapPositions(selectedRows,-1); | 
 
 
 
 
 
 
 
 
 | 1556 | 
 + | 
         rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1557 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1558 | 
   | 
     else if(selectedOption==moveDown.get()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1559 | 
   | 
         qSort(selectedRows); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1560 | 
   | 
         myTable->swapPositions(selectedRows,+1); | 
 
 
 
 
 
 
 
 
 | 1561 | 
 + | 
         rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1562 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1563 | 
   | 
     else if(selectedOption==changeOptions.get()){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1564 | 
   | 
         changeToCurrentSettings(selectedRows,myTable); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1617 | 
   | 
             result+=QString::number(disabledCount) + (disabledCount==1?" item ":" items ") + "Disabled"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1618 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1619 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1620 | 
 + | 
         rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1621 | 
   | 
         showSuccessStatusMessage(result); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1622 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1623 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1643 | 
   | 
         myTable->updateTableToolTips(row); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1644 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1645 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1646 | 
 + | 
     rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1647 | 
   | 
     showSuccessStatusMessage(QString::number(rows.size()) + (rows.size()==1?" item ":" items ")+ "changed to the current settings"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1648 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1649 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1667 | 
   | 
         myTable->updateTableToolTips(row); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1668 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1669 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1670 | 
 + | 
     rowsWereChangedInDropTableWidget(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1671 | 
   | 
     showSuccessStatusMessage(QString::number(rows.size()) + (rows.size()==1?" item ":" items ")+ "changed the output to "+(newOutput!=this->workspaceLocation?Util::cutName(newOutput):"Vago workspace")); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1672 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1673 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1758 | 
   | 
     pugi::xml_document doc; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1759 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1760 | 
   | 
     pugi::xml_node rootNode = doc.append_child("VagoProject"); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1761 | 
 < | 
     rootNode.append_attribute("vagoVersion").set_value(GlobalVars::AppVersion.toUtf8().constData()); | 
 
 
 
 
 
 
 
 
 
 | 1761 | 
 > | 
     rootNode.append_attribute("vagoVersion").set_value(GlobalVars::LastCompatibleVersion.toUtf8().constData()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1762 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1763 | 
   | 
     foreach(DropTableWidget* const &myTable, tableWidgets){ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1764 | 
   | 
         saveProjectWidget(rootNode, myTable); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1772 | 
   | 
     this->vagoSettings->setValue("LastProjectPath",QFileInfo(filePath).absoluteDir().path()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1773 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1774 | 
   | 
     this->lastProjectFilePath = filePath; | 
 
 
 
 
 
 
 
 
 | 1775 | 
 + | 
     this->unsavedChangesExist = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1776 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1777 | 
   | 
     addNewRecentProject(filePath); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1778 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1779 | 
   | 
     setVagoWindowTitle(); | 
 
 
 
 
 
 
 
 
 | 1780 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 1781 | 
 + | 
     showSuccessStatusMessage("Project saved sucessfully."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1782 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1783 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1784 | 
   | 
 void MainWindow::saveProjectWidget(pugi::xml_node &rootNode, DropTableWidget* table) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1925 | 
   | 
         vagoTitle += Util::cutNameWithoutBackSlash(this->lastProjectFilePath); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1926 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1927 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 1928 | 
 + | 
     if(this->unsavedChangesExist){ | 
 
 
 
 
 
 
 
 
 | 1929 | 
 + | 
         vagoTitle += "*"; | 
 
 
 
 
 
 
 
 
 | 1930 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 1931 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1932 | 
   | 
     setWindowTitle(vagoTitle); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1933 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1934 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2001 | 
   | 
 void MainWindow::loadProjectState(const QString &filePath) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2002 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2003 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 2004 | 
 + | 
     if(this->vagoSettings->value("AskSaveProject").toBool() && this->unsavedChangesExist){ | 
 
 
 
 
 
 
 
 
 | 2005 | 
 + | 
         QMessageBox::StandardButton result = askToSaveCurrentProject(); | 
 
 
 
 
 
 
 
 
 | 2006 | 
 + | 
         if(result == QMessageBox::StandardButton::Cancel){ | 
 
 
 
 
 
 
 
 
 | 2007 | 
 + | 
             return; | 
 
 
 
 
 
 
 
 
 | 2008 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 2009 | 
 + | 
     } | 
 
 
 
 
 
 
 
 
 | 2010 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2011 | 
   | 
     QString statusError = "Couldn't load project."; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2012 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2013 | 
   | 
     pugi::xml_document doc; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2063 | 
   | 
     this->vagoSettings->setValue("LastProjectPath",QFileInfo(filePath).absoluteDir().path()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2064 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2065 | 
   | 
     this->lastProjectFilePath = filePath; | 
 
 
 
 
 
 
 
 
 | 2066 | 
 + | 
     this->unsavedChangesExist = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2067 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2068 | 
   | 
     addNewRecentProject(filePath); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2069 | 
   | 
  |