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

Method updateSolver

MiniZincIDE/preferencesdialog.cpp:316–505  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

314}
315
316bool PreferencesDialog::updateSolver()
317{
318 if (_editingSolverIndex == -1) {
319 return true;
320 }
321
322 auto& driver = MznDriver::get();
323 auto& solvers = driver.solvers();
324 auto& userConfigFile = driver.userConfigFile();
325 auto& userSolverConfigDir = driver.userSolverConfigDir();
326
327 if (!ui->requiredFlags->isHidden()) {
328 // Update the required flags/user set flags
329
330 QGridLayout* rfLayout = static_cast<QGridLayout*>(ui->requiredFlags->layout());
331 QVector<QStringList> defaultFlags;
332 for (int row=0; row<rfLayout->rowCount(); row++) {
333 if (QLayoutItem* li = rfLayout->itemAtPosition(row, 0)) {
334 QString key = static_cast<QLabel*>(li->widget())->text();
335 QLayoutItem* li2 = rfLayout->itemAtPosition(row, 1);
336 QString val = static_cast<QLineEdit*>(li2->widget())->text();
337 if (!val.isEmpty()) {
338 QStringList sl({ui->solverId->text(), key, val});
339 defaultFlags.push_back(sl);
340 }
341 }
342
343 }
344
345 auto doc = QJsonDocument::fromJson(allowFileRestore(userConfigFile));
346 auto jo = doc.object();
347 QJsonArray a0;
348 if (!jo.contains("solverDefaults")) {
349 // Fresh object, initialise
350 for (auto& df : defaultFlags) {
351 QJsonArray a1;
352 for (auto& f : df) {
353 a1.append(f);
354 }
355 a0.append(a1);
356 }
357 } else {
358 QJsonArray previous = jo["solverDefaults"].toArray();
359 // First remove all entries for this solver
360 for (auto triple : previous) {
361 if (triple.isArray()) {
362 QJsonArray previousA1 = triple.toArray();
363 if (previousA1.size()==3) {
364 if (previousA1[0]!=ui->solverId->text()) {
365 a0.append(triple);
366 }
367 }
368 }
369 }
370 // Now add the new values
371 for (auto& df : defaultFlags) {
372 QJsonArray a1;
373 for (auto& f : df) {

Callers

nothing calls this directly

Calls 7

isHiddenMethod · 0.80
containsMethod · 0.80
toJsonMethod · 0.80
currentIndexMethod · 0.80
removeMethod · 0.80
widgetMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected