private void Load(DewritoSettings settings)
 {
     _player = new PlayerSettingsViewModel(settings.Player ?? new DewritoPlayerSettings());
     _video  = new VideoSettingsViewModel(settings.Video ?? new DewritoVideoSettings());
     _host   = new HostSettingsViewModel(settings.Host ?? new DewritoHostSettings());
     _input  = new InputSettingsViewModel(settings.Input ?? new DewritoInputSettings());
 }
 public void Save(DewritoSettings settings)
 {
     if (settings.Player == null)
     {
         settings.Player = new DewritoPlayerSettings();
     }
     if (settings.Video == null)
     {
         settings.Video = new DewritoVideoSettings();
     }
     if (settings.Host == null)
     {
         settings.Host = new DewritoHostSettings();
     }
     if (settings.Input == null)
     {
         settings.Input = new DewritoInputSettings();
     }
     _player.Save(settings.Player);
     _video.Save(settings.Video);
     _host.Save(settings.Host);
     _input.Save(settings.Input);
 }
        private void LoadSettings()
        {
            // Load settings from the YAML file
            settings = null;
            try
            {
                using (var stream = File.OpenText(SettingsFileName))
                {
                    var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
                    settings = deserializer.Deserialize <DewritoSettings>(stream);
                }
            }
            catch (IOException)
            {
            }
            catch (YamlException)
            {
            }
            if (settings == null)
            {
                settings = new DewritoSettings(); // Use defaults if an error occurred
            }
            // Create the view model and listen for changes
            settingsViewModel = new SettingsViewModel(settings);
            settingsViewModel.PropertyChanged               += SettingsChanged;
            settingsViewModel.Player.PropertyChanged        += SettingsChanged;
            settingsViewModel.Player.Armor.PropertyChanged  += SettingsChanged;
            settingsViewModel.Player.Colors.PropertyChanged += SettingsChanged;
            settingsViewModel.Video.PropertyChanged         += SettingsChanged;
            settingsViewModel.Host.PropertyChanged          += SettingsChanged;
            settingsViewModel.Input.PropertyChanged         += SettingsChanged;

            // Set the data context for the settings tabs
            Customization.DataContext = settingsViewModel;
            Settings.DataContext      = settingsViewModel;
        }
 public SettingsViewModel(DewritoSettings settings)
 {
     Load(settings);
 }