void SelectDirectoryWizardPage::OnBrowseButtonClick (wxCommandEvent& event) { DirectoryPath dir = Gui->SelectDirectory (this); if (!dir.IsEmpty()) DirectoryTextCtrl->SetValue (wstring (dir)); }
SoundLibrary::SoundLibrary(Options* options, AudioDevice& audio, const DirectoryPath& path) : audioDevice(audio) { #ifdef DISABLE_SFX on = false; #else on = options->getBoolValue(OptionId::SOUND); #endif options->addTrigger(OptionId::SOUND, [this](bool turnOn) { on = turnOn; }); for (SoundId id : ENUM_ALL(SoundId)) addSounds(id, path.subdirectory(toLower(EnumInfo<SoundId>::getString(id)))); }
FilePath Application::GetConfigFilePath (const wxString &configFileName, bool createConfigDir) { DirectoryPath configDir; if (!Core->IsInPortableMode()) { #ifdef TC_MACOSX wxFileName configPath (L"~/Library/Application Support/CipherShed"); configPath.Normalize(); configDir = wstring (configPath.GetFullPath()); #else wxStandardPathsBase& stdPaths = wxStandardPaths::Get(); configDir = wstring (stdPaths.GetUserDataDir()); #endif } else configDir = GetExecutableDirectory(); if (createConfigDir && !configDir.IsDirectory()) Directory::Create (configDir); FilePath filePath = wstring (wxFileName (wstring (configDir), configFileName).GetFullPath()); return filePath; }
void SoundLibrary::addSounds(SoundId id, const DirectoryPath& path) { for (auto& file : path.getFiles()) if (file.hasSuffix(".ogg")) sounds[id].emplace_back(file); }
void KeyfileGeneratorDialog::OnGenerateButtonClick (wxCommandEvent& event) { try { int keyfilesCount = NumberOfKeyfiles->GetValue(); int keyfilesSize = KeyfilesSize->GetValue(); bool useRandomSize = RandomSizeCheckBox->IsChecked(); wxString keyfileBaseName = KeyfilesBaseName->GetValue(); keyfileBaseName.Trim(true); keyfileBaseName.Trim(false); if (keyfileBaseName.IsEmpty()) { Gui->ShowWarning("KEYFILE_EMPTY_BASE_NAME"); return; } wxFileName baseFileName = wxFileName::FileName (keyfileBaseName); if (!baseFileName.IsOk()) { Gui->ShowWarning("KEYFILE_INVALID_BASE_NAME"); return; } DirectoryPath keyfilesDir = Gui->SelectDirectory (Gui->GetActiveWindow(), LangString["SELECT_KEYFILE_GENERATION_DIRECTORY"], false); if (keyfilesDir.IsEmpty()) return; wxFileName dirFileName = wxFileName::DirName( wstring(keyfilesDir).c_str() ); if (!dirFileName.IsDirWritable ()) { Gui->ShowWarning(L"You don't have write permission on the selected directory"); return; } wxBusyCursor busy; for (int i = 0; i < keyfilesCount; i++) { int bufferLen; if (useRandomSize) { SecureBuffer sizeBuffer (sizeof(int)); RandomNumberGenerator::GetData (sizeBuffer, true); memcpy(&bufferLen, sizeBuffer.Ptr(), sizeof(int)); /* since keyfilesSize < 1024 * 1024, we mask with 0x000FFFFF */ bufferLen = (long) (((unsigned long) bufferLen) & 0x000FFFFF); bufferLen %= ((1024*1024 - 64) + 1); bufferLen += 64; } else bufferLen = keyfilesSize; SecureBuffer keyfileBuffer (bufferLen); RandomNumberGenerator::GetData (keyfileBuffer, true); wstringstream convertStream; convertStream << i; wxString suffix = L"_"; suffix += convertStream.str().c_str(); wxFileName keyfileName; if (i == 0) { keyfileName.Assign(dirFileName.GetPath(), keyfileBaseName); } else { if (baseFileName.HasExt()) { keyfileName.Assign(dirFileName.GetPath(), baseFileName.GetName() + suffix + L"." + baseFileName.GetExt()); } else { keyfileName.Assign(dirFileName.GetPath(), keyfileBaseName + suffix); } } if (keyfileName.Exists()) { wxString msg = wxString::Format(LangString["KEYFILE_ALREADY_EXISTS"], keyfileName.GetFullPath()); if (!Gui->AskYesNo (msg, false, true)) return; } { FilePath keyfilePath((const wchar_t*) keyfileName.GetFullPath()); File keyfile; keyfile.Open (keyfilePath, File::CreateWrite); keyfile.Write (keyfileBuffer); } } Gui->ShowInfo ("KEYFILE_CREATED"); } catch (exception &e) { Gui->ShowError (e); } }
void MountOptionsDialog::OnMountPointButtonClick (wxCommandEvent& event) { DirectoryPath dir = Gui->SelectDirectory (this, wxEmptyString, false); if (!dir.IsEmpty()) MountPointTextCtrl->SetValue (wstring (dir)); }
GameConfig::GameConfig(DirectoryPath modsPath, string modName) : path(modsPath.subdirectory(modName)), modName(std::move(modName)) { }