diff -r 8d569c7b36a2 -r b6df6283e2ba QTfrontend/ui/page/pagetraining.cpp --- a/QTfrontend/ui/page/pagetraining.cpp Wed Mar 07 10:44:30 2018 +0100 +++ b/QTfrontend/ui/page/pagetraining.cpp Wed Mar 07 12:33:56 2018 +0100 @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -194,14 +195,46 @@ m_widget = lstScenarios; break; } + // scripts to load + // first, load scripts in order specified in order.cfg (if present) + QFile orderFile(QString("physfs://Missions/%1/order.cfg").arg(subFolder)); + QStringList orderedMissions; + if (orderFile.open(QFile::ReadOnly)) + { + QString m_id; + QTextStream input(&orderFile); + while(true) + { + m_id = input.readLine(); + if(m_id.isNull() || m_id.isEmpty()) + { + break; + } + QListWidgetItem * item = new QListWidgetItem(m_id); + QString name = item->text().replace("_", " "); + name = m_info->value(m_id + ".name", name).toString(); + item->setText(name); + item->setData(Qt::UserRole, m_id); + m_widget->addItem(item); + + orderedMissions << m_id; + } + } + + // then, just load anything else in no particular order m_list = dataMgr.entryList( "Missions/" + subFolder, QDir::Files, QStringList("*.lua")). replaceInStrings(QRegExp("\\.lua$"), ""); - // scripts to load - TODO: model? foreach (const QString & m_id, m_list) { + // Disallow duplicates from order.cfg + if (orderedMissions.contains(m_id)) + { + continue; + } + QListWidgetItem * item = new QListWidgetItem(m_id); // fallback name: replace underscores in mission name with spaces