|
|
|
@ -347,34 +347,9 @@ void DataFilesPage::readConfig()
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataFilesPage::setupDataFiles()
|
|
|
|
|
bool DataFilesPage::showDataFilesWarning()
|
|
|
|
|
{
|
|
|
|
|
// We use the Configuration Manager to retrieve the configuration values
|
|
|
|
|
boost::program_options::variables_map variables;
|
|
|
|
|
boost::program_options::options_description desc;
|
|
|
|
|
|
|
|
|
|
desc.add_options()
|
|
|
|
|
("data", boost::program_options::value<Files::PathContainer>()->default_value(Files::PathContainer(), "data")->multitoken())
|
|
|
|
|
("data-local", boost::program_options::value<std::string>()->default_value(""))
|
|
|
|
|
("fs-strict", boost::program_options::value<bool>()->implicit_value(true)->default_value(false))
|
|
|
|
|
("encoding", boost::program_options::value<std::string>()->default_value("win1252"));
|
|
|
|
|
|
|
|
|
|
//boost::program_options::notify(variables);
|
|
|
|
|
|
|
|
|
|
mCfgMgr.readConfiguration(variables, desc);
|
|
|
|
|
|
|
|
|
|
// Put the paths in a boost::filesystem vector to use with Files::Collections
|
|
|
|
|
mDataDirs = Files::PathContainer(variables["data"].as<Files::PathContainer>());
|
|
|
|
|
|
|
|
|
|
std::string local = variables["data-local"].as<std::string>();
|
|
|
|
|
if (!local.empty()) {
|
|
|
|
|
mDataLocal.push_back(Files::PathContainer::value_type(local));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mCfgMgr.processPaths(mDataDirs);
|
|
|
|
|
mCfgMgr.processPaths(mDataLocal);
|
|
|
|
|
|
|
|
|
|
while (mDataDirs.empty()) {
|
|
|
|
|
QMessageBox msgBox;
|
|
|
|
|
msgBox.setWindowTitle("Error detecting Morrowind installation");
|
|
|
|
|
msgBox.setIcon(QMessageBox::Warning);
|
|
|
|
@ -409,8 +384,46 @@ bool DataFilesPage::setupDataFiles()
|
|
|
|
|
// Cancel
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DataFilesPage::setupDataFiles()
|
|
|
|
|
{
|
|
|
|
|
// We use the Configuration Manager to retrieve the configuration values
|
|
|
|
|
boost::program_options::variables_map variables;
|
|
|
|
|
boost::program_options::options_description desc;
|
|
|
|
|
|
|
|
|
|
desc.add_options()
|
|
|
|
|
("data", boost::program_options::value<Files::PathContainer>()->default_value(Files::PathContainer(), "data")->multitoken())
|
|
|
|
|
("data-local", boost::program_options::value<std::string>()->default_value(""))
|
|
|
|
|
("fs-strict", boost::program_options::value<bool>()->implicit_value(true)->default_value(false))
|
|
|
|
|
("encoding", boost::program_options::value<std::string>()->default_value("win1252"));
|
|
|
|
|
|
|
|
|
|
boost::program_options::notify(variables);
|
|
|
|
|
|
|
|
|
|
mCfgMgr.readConfiguration(variables, desc);
|
|
|
|
|
|
|
|
|
|
if (variables["data"].empty()) {
|
|
|
|
|
if (!showDataFilesWarning())
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
mDataDirs = Files::PathContainer(variables["data"].as<Files::PathContainer>());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string local = variables["data-local"].as<std::string>();
|
|
|
|
|
if (!local.empty()) {
|
|
|
|
|
mDataLocal.push_back(Files::PathContainer::value_type(local));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mCfgMgr.processPaths(mDataDirs);
|
|
|
|
|
mCfgMgr.processPaths(mDataLocal);
|
|
|
|
|
|
|
|
|
|
// Second chance to display the warning, the data= entries are invalid
|
|
|
|
|
while (mDataDirs.empty()) {
|
|
|
|
|
if (!showDataFilesWarning())
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// Add the paths to the respective models
|
|
|
|
|
for (Files::PathContainer::iterator it = mDataDirs.begin(); it != mDataDirs.end(); ++it) {
|
|
|
|
|
QString path = QString::fromStdString(it->string());
|
|
|
|
|