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;
        }
    }
Beispiel #2
0
    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);
        }
    }