void autoFindAndAssignAppropriateExe() { string chosenPath = null; XuFileUtil.ProcessAllFilesRecursive(this._gameFolder.FullName, (path) => { if (chosenPath == null) { FileInfo fi = new FileInfo(path); bool seeminglyAppropriateExe = fi.Extension == ".exe" && fi.Name != "UnityCrashHandler64.exe" && !fi.Name.StartsWith("."); //mac drives generate a bunch of duplicate files that start with '.' if (seeminglyAppropriateExe) { chosenPath = XuFileUtil.ComputeRelativePath(fi.FullName, _gameFolder.FullName); } } }); if (chosenPath != null) { this.exePath = chosenPath; } }
void onClick() { if (string.IsNullOrEmpty(startDirectory) || !Directory.Exists(startDirectory)) { if (_baseDirectory == BaseDirectoryType.GamesDirectory) { startDirectory = SwitcherSettings.Data.GamesFolder; } else if (_baseDirectory == BaseDirectoryType.JoyToKey) { startDirectory = SwitcherSettings.Data.JoyToKeyFolder; } else if (_baseDirectory == BaseDirectoryType.Other) { startDirectory = StartingDirectoryIfNoHistory(); } } if (!Directory.Exists(startDirectory)) { startDirectory = StartingDirectoryIfNoHistory(); } string result = null; if (_dialogTarget == DialogSelectionType.SingleFile) { result = FileBrowser.OpenSingleFile(windowTitle, startDirectory, extensions); } else if (_dialogTarget == DialogSelectionType.SingleFolder) { result = FileBrowser.OpenSingleFolder(windowTitle, startDirectory); } if (!string.IsNullOrEmpty(result)) { startDirectory = Path.GetDirectoryName(result); string finalVal = result; if (_setFileNameInsteadOfFullPath) { finalVal = Path.GetFileName(result);//exclude the path } if (detectIfExeRelative) { if (XuFileUtil.IsSubdirectory(finalVal, XuFileUtil.RunningAppDirectory)) { finalVal = XuFileUtil.ComputeRelativePath(finalVal, XuFileUtil.RunningAppDirectory); finalVal = Path.Combine(".", finalVal); } } _targetField.text = finalVal; OnValidPathChosen.Invoke(finalVal); } }