| 139 | } |
| 140 | |
| 141 | std::pair<Files::PathContainer, std::vector<std::string>> CS::Editor::readConfig(bool quiet) |
| 142 | { |
| 143 | boost::program_options::variables_map& variables = mConfigVariables; |
| 144 | |
| 145 | Fallback::Map::init(variables["fallback"].as<Fallback::FallbackMap>().mMap); |
| 146 | |
| 147 | mEncodingName = variables["encoding"].as<std::string>(); |
| 148 | mDocumentManager.setEncoding(ToUTF8::calculateEncoding(mEncodingName)); |
| 149 | mFileDialog.setEncoding(QString::fromUtf8(mEncodingName.c_str())); |
| 150 | |
| 151 | mDocumentManager.setResourceDir(mResources = variables["resources"] |
| 152 | .as<Files::MaybeQuotedPath>() |
| 153 | .u8string()); // This call to u8string is redundant, but required |
| 154 | // to build on MSVC 14.26 due to implementation bugs. |
| 155 | |
| 156 | Files::PathContainer dataDirs, dataLocal; |
| 157 | if (!variables["data"].empty()) |
| 158 | { |
| 159 | dataDirs = asPathContainer(variables["data"].as<Files::MaybeQuotedPathContainer>()); |
| 160 | } |
| 161 | |
| 162 | Files::PathContainer::value_type local(variables["data-local"] |
| 163 | .as<Files::MaybeQuotedPathContainer::value_type>() |
| 164 | .u8string()); // This call to u8string is redundant, but required to |
| 165 | // build on MSVC 14.26 due to implementation bugs. |
| 166 | if (!local.empty()) |
| 167 | { |
| 168 | std::filesystem::create_directories(local); |
| 169 | dataLocal.push_back(std::move(local)); |
| 170 | } |
| 171 | mCfgMgr.filterOutNonExistingPaths(dataDirs); |
| 172 | mCfgMgr.filterOutNonExistingPaths(dataLocal); |
| 173 | |
| 174 | if (!dataLocal.empty()) |
| 175 | mLocal = dataLocal[0]; |
| 176 | else |
| 177 | { |
| 178 | QMessageBox messageBox; |
| 179 | messageBox.setWindowTitle(tr("No local data path available")); |
| 180 | messageBox.setIcon(QMessageBox::Critical); |
| 181 | messageBox.setStandardButtons(QMessageBox::Ok); |
| 182 | messageBox.setText( |
| 183 | tr("<br><b>OpenCS is unable to access the local data directory. This may indicate a faulty configuration " |
| 184 | "or a broken install.</b>")); |
| 185 | messageBox.exec(); |
| 186 | |
| 187 | QApplication::exit(1); |
| 188 | } |
| 189 | |
| 190 | dataDirs.insert(dataDirs.end(), dataLocal.begin(), dataLocal.end()); |
| 191 | |
| 192 | dataDirs.insert(dataDirs.begin(), mResources / "vfs"); |
| 193 | |
| 194 | // iterate the data directories and add them to the file dialog for loading |
| 195 | mFileDialog.addFiles(dataDirs); |
| 196 | |
| 197 | return std::make_pair(dataDirs, variables["fallback-archive"].as<std::vector<std::string>>()); |
| 198 | } |
nothing calls this directly
no test coverage detected