Exemplo n.º 1
0
        public bool Save()
        {
            var parser = new SFMDirectoryParser(SfmDirectory, WindowsFileSystem.Instance);
            var error  = parser.Validate();

            switch (error)
            {
            case SFMDirectoryParserError.NotExists:
                SaveError = "SFM Directory does not exist.";
                Reset();
                return(false);

            case SFMDirectoryParserError.NotLikely:
                SaveError = "SFM Directory is not valid.";
                Reset();
                return(false);

            case SFMDirectoryParserError.Ok:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            _file.SfmDirectoryPath = parser.Path;

            _config.Write(_file);
            MainWindow.Instance.RefreshListData();

            return(true);
        }
Exemplo n.º 2
0
        private void BtnNext_Click(object sender, RoutedEventArgs e)
        {
            var dir    = DirectoryPathBox.Text;
            var parser = new SFMDirectoryParser(dir, WindowsFileSystem.Instance);
            var error  = parser.Validate();

            if (error == SFMDirectoryParserError.NotExists)
            {
                MessageBox.Show("The path chosen is not a valid directory.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (error == SFMDirectoryParserError.NotLikely)
            {
                if (MessageBox.Show("The directory does not seem like the typical SFM installation. Continue?",
                                    "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
                {
                    return;
                }
            }

            _config.Write(new ConfigFile(parser.Path));

            var gameinfoHandler = new GameinfoHandler(parser.GameinfoPath, WindowsFileSystem.Instance);
            var ret             = gameinfoHandler.Execute();

            /* TODO: maybe display a bit more useful error message including troubleshooting issues */
            if (ret == GameinfoHandlerError.FileInvalid)
            {
                MessageBox.Show("Failed to add entry to gameinfo.txt", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            SetupWindow.Instance.GoToMainWindow();
        }
Exemplo n.º 3
0
        public void IdentifyInvalidDirectory()
        {
            const string baseDir = "C:\\SecretPlace\\";
            var          fs      = new MockFileSystem();
            var          parser  = new SFMDirectoryParser(baseDir, fs);

            Assert.AreEqual(SFMDirectoryParserError.NotExists, parser.Validate());
        }
Exemplo n.º 4
0
 public MainPage(MainWindow window, ConfigFile configFile, RevisionManager revisionManager)
 {
     _window          = window;
     _configFile      = configFile;
     _revisionManager = revisionManager;
     _sfmDirParser    = new SFMDirectoryParser(_configFile.SfmDirectoryPath, WindowsFileSystem.Instance);
     _presenter       = new MainWindowPresenter(revisionManager);
     _presenter.View  = this;
     InitializeComponent();
 }
Exemplo n.º 5
0
        public void IdentifyNotLikelyDirectory()
        {
            const string baseDir = "C:\\AwesomeStuff\\";
            var          fs      = new MockFileSystem();

            fs.AddFile(new MockFile(baseDir, MockFileType.Directory));
            string[] subDirs = { "Ponies", "NSFWStuff" };
            foreach (var d in subDirs)
            {
                fs.AddFile(new MockFile(Path.Combine(baseDir, d), MockFileType.Directory));
            }
            var parser = new SFMDirectoryParser(baseDir, fs);

            Assert.AreEqual(SFMDirectoryParserError.NotLikely, parser.Validate());
        }
Exemplo n.º 6
0
        public void IdentifyCorrectDirectory()
        {
            const string baseDir = "C:\\SourceFilmmaker\\game";
            var          fs      = new MockFileSystem();

            /* Create a fake default SFM installation */
            fs.AddFile(new MockFile(baseDir, MockFileType.Directory));
            string[] subDirs = { "bin", "hl2", "left4dead2_movies", "platform", "sdktools", "tf", "tf_movies", "usermod" };
            foreach (var d in subDirs)
            {
                fs.AddFile(new MockFile(Path.Combine(baseDir, d), MockFileType.Directory));
            }
            var parser = new SFMDirectoryParser(baseDir, fs);

            Assert.AreEqual(SFMDirectoryParserError.Ok, parser.Validate());
        }
Exemplo n.º 7
0
        public void InitialisePages()
        {
            var config       = new ConfigHandler(ModManager.ConfigFileLocation, WindowsFileSystem.Instance);
            var configFile   = config.Read();
            var revMgr       = new RevisionManager(configFile, WindowsFileSystem.Instance);
            var sfmDirParser = new SFMDirectoryParser(configFile.SfmDirectoryPath, WindowsFileSystem.Instance);

            _sfmDirParser = sfmDirParser;
            _configFile   = configFile;

            _pages["MainPage"]     = new MainPage(Instance, configFile, revMgr);
            _pages["SettingsPage"] = new SettingsPage(config);
            _pages["LicensesPage"] = new Licenses.LicensesPage();
            _pages["AboutPage"]    = new About.AboutPage(revMgr.Database);

            Instance.SetPage("MainPage");
        }
Exemplo n.º 8
0
        public void ShouldUseGameDirIfItExists()
        {
            const string baseDir = "C:\\SFM\\";
            var          fs      = new MockFileSystem();

            fs.CreateDirectory(baseDir);
            fs.CreateDirectory(baseDir + "game");
            var parser = new SFMDirectoryParser(baseDir, fs);

            Assert.AreEqual("C:\\SFM\\game", parser.Path);

            /* But not in this case */
            fs.CreateDirectory("C:\\SFM2");
            fs.CreateDirectory("C:\\SFM2\\gaben");
            var otherParser = new SFMDirectoryParser("C:\\SFM2", fs);

            Assert.AreEqual("C:\\SFM2", otherParser.Path);
        }