MCPcopy Create free account
hub / github.com/MiniZinc/MiniZincIDE / compileSolutionChecker

Method compileSolutionChecker

MiniZincIDE/mainwindow.cpp:1024–1087  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1022}
1023
1024void MainWindow::compileSolutionChecker(const QString& checker)
1025{
1026 if (!requireMiniZinc()) {
1027 return;
1028 }
1029
1030 QFileInfo fi(checker);
1031
1032 QSettings settings;
1033 settings.beginGroup("ide");
1034 bool printCommand = settings.value("printCommand", false).toBool();
1035 settings.endGroup();
1036
1037 auto proc = new MznProcess(this);
1038 QStringList args;
1039 args << "--compile-solution-checker"
1040 << checker;
1041 connect(this, &MainWindow::terminating, proc, [=] () {
1042 proc->terminate();
1043 proc->deleteLater();
1044 });
1045 connect(ui->actionStop, &QAction::triggered, proc, [=] () {
1046 ui->actionStop->setDisabled(true);
1047 proc->stop();
1048 ui->outputWidget->addText("Stopped.");
1049 });
1050 connect(proc, &MznProcess::success, [=] (bool cancelled) {
1051 if (!cancelled) {
1052 openCompiledFzn(checker.left(checker.size() - 4));
1053 }
1054 procFinished(0, proc->elapsedTime());
1055 ui->outputWidget->endExecution(0, proc->elapsedTime());
1056 });
1057 connect(proc, &MznProcess::errorOutput, this, &MainWindow::on_minizincError);
1058 connect(proc, &MznProcess::warningOutput, this, &MainWindow::on_minizincError);
1059 connect(proc, &MznProcess::outputStdError, this, [=] (const QString& d) {
1060 QTextCharFormat f;
1061 f.setForeground(IDE::instance()->themeManager->current().commentColor.get(darkMode));
1062 ui->outputWidget->addText(d, f, "Standard Error");
1063 });
1064 connect(proc, &MznProcess::finished, [=] () {
1065 proc->deleteLater();
1066 });
1067 connect(proc, &MznProcess::failure, [=](int exitCode, MznProcess::FailureType e) {
1068 if (e == MznProcess::FailedToStart) {
1069 QMessageBox::critical(this, "MiniZinc IDE", "Failed to start MiniZinc. Check your path settings.");
1070 exitCode = 0;
1071 } else if (e != MznProcess::NonZeroExit) {
1072 QMetaEnum metaEnum = QMetaEnum::fromType<MznProcess::FailureType>();
1073 QMessageBox::critical(this, "MiniZinc IDE", "Unknown error while executing MiniZinc: " + QString(metaEnum.valueToKey(e)));
1074 }
1075 ui->outputWidget->endExecution(0, proc->elapsedTime());
1076 procFinished(exitCode, proc->elapsedTime());
1077 });
1078 connect(proc, &MznProcess::timeUpdated, this, &MainWindow::statusTimerEvent);
1079 updateUiProcessRunning(true);
1080 ui->outputWidget->startExecution(QString("Compiling %1").arg(fi.fileName()));
1081 proc->start(args, fi.canonicalPath());

Callers

nothing calls this directly

Calls 12

terminateMethod · 0.80
addTextMethod · 0.80
elapsedTimeMethod · 0.80
endExecutionMethod · 0.80
currentMethod · 0.80
startExecutionMethod · 0.80
commandMethod · 0.80
valueMethod · 0.45
stopMethod · 0.45
sizeMethod · 0.45
getMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected