bool ModPlusDymolaCtrl::compile(const QFileInfoList & moDependencies) { InfoSender::sendCurrentTask("Dymola : Compiling model "+_modModelPlus->modModelName()); //QString logFilePath = _mmoFolder+QDir::separator()+"log.html"; QString logFilePath = _modModelPlus->mmoFolder().absoluteFilePath("buildlog.txt"); //******************** // update dependencies //******************** QFileInfoList moDeps = moDependencies; // 1- add project loaded mo files QFileInfoList projectMoFiles = _project->moFiles(); for(int i=0;i<projectMoFiles.size();i++) if(!moDeps.contains(projectMoFiles.at(i))) moDeps.push_back(projectMoFiles.at(i)); // 2 - remove modelica library from moDependencies since Dymola // automatically loads it moDeps.removeAll(_project->moomc()->getFileOfClass("Modelica")); // compile bool success = Dymola::firstRun(_modModelPlus->moFilePath(),_modModelPlus->modModelName(), _modModelPlus->mmoFolder(),logFilePath,moDeps,_modModelPlus->neededFiles()); // Inform ListInfo::InfoNum iMsg; if(success) iMsg = ListInfo::MODELCOMPILATIONSUCCESS; else iMsg = ListInfo::MODELCOMPILATIONFAIL; // Infos InfoSender::instance()->send(Info(iMsg,_modModelPlus->modModelName(),logFilePath)); InfoSender::instance()->eraseCurrentTask(); return success; }
// Open a new file void MainWindow::handleOpenFileEvent(QString filename, QString filter) { // On Windows, we have to remove all three '/' after 'file:', on Linux, we need to leave one of them #ifdef Q_OS_WIN if(filename.startsWith("file:///")) filename = filename.remove(0,8); #else if(filename.startsWith("file://")) filename = filename.remove(0,7); #endif if(filename.trimmed() == "") { QMetaObject::invokeMethod(object, "openFile"); return; } variables->keepLoadingThumbnails = true; setOverrideCursor(); if(variables->verbose) LOG << CURDATE << "handleOpenFileEvent(): Handle response to request to open new file" << NL; // Decode filename QByteArray usethis = QByteArray::fromPercentEncoding(filename.trimmed().toUtf8()); // Store filter variables->openfileFilter = filter; QString file = ""; // Check return file file = usethis; QMetaObject::invokeMethod(object, "alsoIgnoreSystemShortcuts", Q_ARG(QVariant, false)); // Save current directory variables->currentDir = QFileInfo(file).absolutePath(); // Clear loaded thumbnails variables->loadedThumbnails.clear(); // Load direcgtory QFileInfoList l = loadDir->loadDir(file,variables->openfileFilter); if(l.isEmpty()) { QMetaObject::invokeMethod(object, "noResultsFromFilter"); restoreOverrideCursor(); return; } if(!l.contains(QFileInfo(file))) file = l.at(0).filePath(); // Get and store length int l_length = l.length(); settingsPerSession->setValue("countTot",l_length); // Convert QFileInfoList into QStringList and store it QStringList ll; for(int i = 0; i < l_length; ++i) ll.append(l.at(i).absoluteFilePath()); settingsPerSession->setValue("allFileList",ll); // Get and store current position int curPos = l.indexOf(QFileInfo(file)); settingsPerSession->setValue("curPos",curPos); // Setiup thumbnail model QMetaObject::invokeMethod(object, "setupModel", Q_ARG(QVariant, ll), Q_ARG(QVariant, curPos)); // Display current postiion in main image view QMetaObject::invokeMethod(object, "displayImage", Q_ARG(QVariant, curPos)); QVariant centerPos = curPos; if(!QMetaObject::invokeMethod(object, "getCenterPos", Q_RETURN_ARG(QVariant, centerPos))) std::cerr << CURDATE << "handleOpenFileEvent(): ERROR: couldn't get center pos!" << NL; // And handle the thumbnails handleThumbnails(centerPos.toInt()); restoreOverrideCursor(); }