std::unique_ptr<Settings> Settings::from_file(const QString& setting_filename) { std::unique_ptr<Settings> settings = cgogn::make_unique<Settings>(); QFile setting_file(setting_filename); if (setting_file.exists() && setting_file.open(QIODevice::ReadOnly)) { QByteArray data = setting_file.readAll(); QJsonParseError parse_error; QJsonDocument doc = QJsonDocument::fromJson(data, &parse_error); if (parse_error.error != QJsonParseError::NoError) { cgogn_log_warning("Settings(const QString&)") << "Error while reading the file \"" << setting_filename.toStdString() << "\". Error is : \"" << parse_error.errorString().toStdString() << "\"."; } else { cgogn_log_info("Settings(const QString&)") << "Loaded setting file \"" << setting_filename.toStdString() << "\"."; } const auto obj = doc.object(); for(auto it = obj.constBegin(); it != obj.constEnd(); ++it) settings->add_module(it.key(), it.value().toObject().toVariantMap()); } else { cgogn_log_warning("Settings::from_file()") << "Unable to read the file \"" << setting_filename.toStdString() << "\"."; } return settings; }
bool FileImport::import_file(const std::string& filename) { Scoped_C_Locale loc; if (!filename.empty()) { // test if file exist std::ifstream fp(filename.c_str(), std::ios::in); if (!fp.good()) { cgogn_log_warning("FileImport::import_file") << "Unable to open file \"" << filename << "\""; return false; } } return this->import_file_impl(filename); }