MCPcopy Create free account
hub / github.com/OpenMW/openmw / readConfig

Method readConfig

apps/opencs/editor.cpp:141–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141std::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}

Callers

nothing calls this directly

Calls 15

asPathContainerFunction · 0.85
exitFunction · 0.85
c_strMethod · 0.80
execMethod · 0.80
initFunction · 0.50
setEncodingMethod · 0.45
setResourceDirMethod · 0.45
emptyMethod · 0.45
setIconMethod · 0.45
setTextMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected