private static ArgumentHandleResult ProcessSharedCspSettings(SharedEntry shared, byte[] data) { var result = ShowDialog(shared); using (var model = PatchSettingsModel.Create()) { switch (result) { case Choise.Save: case Choise.ApplyAndSave: var filename = FileUtils.EnsureUnique(Path.Combine( PresetsManager.Instance.GetDirectory(model.PresetableCategory), @"Loaded", shared.GetFileName())); Directory.CreateDirectory(Path.GetDirectoryName(filename) ?? ""); File.WriteAllBytes(filename, data); if (result == Choise.ApplyAndSave) { model.ImportFromPresetData(data.ToUtf8String()); UserPresetsControl.SetCurrentFilename(model.PresetableKey, filename); } return(ArgumentHandleResult.SuccessfulShow); case Choise.Apply: model.ImportFromPresetData(data.ToUtf8String()); UserPresetsControl.SetCurrentFilename(model.PresetableKey, null); return(ArgumentHandleResult.SuccessfulShow); default: return(ArgumentHandleResult.Failed); } } }
private static async Task <ArgumentHandleResult> ProcessRaceQuick(CustomUriRequest custom) { var preset = GetSettings(custom.Params, @"preset") ?? throw new Exception(@"Settings are not specified"); var assists = GetSettings(custom.Params, @"assists"); if (assists != null && !UserPresetsControl.LoadSerializedPreset(AssistsViewModel.Instance.PresetableKey, assists)) { AssistsViewModel.Instance.ImportFromPresetData(assists); } if (custom.Params.GetFlag("loadPreset")) { QuickDrive.Show(serializedPreset: preset, forceAssistsLoading: custom.Params.GetFlag("loadAssists")); return(ArgumentHandleResult.SuccessfulShow); } if (!await QuickDrive.RunAsync(serializedPreset: preset, forceAssistsLoading: custom.Params.GetFlag("loadAssists"))) { NonfatalError.Notify(AppStrings.Common_CannotStartRace, AppStrings.Arguments_CannotStartRace_Commentary); return(ArgumentHandleResult.Failed); } return(ArgumentHandleResult.Successful); }
public HierarchicalGroup CreateGroup(string presetsKey, string displayName = "", string prependWithDefault = null) { Func <IEnumerable <object> > groupPresets = () => { var result = UserPresetsControl.GroupPresets(presetsKey); if (prependWithDefault != null) { var menuItem = new HierarchicalItem { Header = new TextBlock { Text = prependWithDefault, FontStyle = FontStyles.Italic } }; HierarchicalItemsView.SetValue(menuItem, null); result = result.Prepend(menuItem); } return(result); }; var group = new HierarchicalGroup(displayName, groupPresets()); var handler = new EventHandler((sender, e) => { group.ReplaceEverythingBy(groupPresets()); }); PresetsManager.Instance.Watcher(presetsKey).Update += handler; _presetsHandlersToRemove.Add(new PresetsHandlerToRemove { Key = presetsKey, Handler = handler }); return(group); }
private static ArgumentHandleResult ProcessSharedSettingsPreset(IUserPresetable presetable, SharedEntry shared, byte[] data) { var result = ShowDialog(shared); switch (result) { case Choise.Save: case Choise.ApplyAndSave: var filename = FileUtils.EnsureUnique(Path.Combine( PresetsManager.Instance.GetDirectory(presetable.PresetableKey), @"Loaded", shared.GetFileName())); Directory.CreateDirectory(Path.GetDirectoryName(filename) ?? ""); File.WriteAllBytes(filename, data); if (result == Choise.ApplyAndSave) { UserPresetsControl.LoadPreset(presetable.PresetableKey, filename); } return(ArgumentHandleResult.SuccessfulShow); case Choise.Apply: presetable.ImportFromPresetData(data.ToUtf8String()); return(ArgumentHandleResult.SuccessfulShow); default: return(ArgumentHandleResult.Failed); } }
private static void OnPresetSaved(object sender, PresetSavedEventArgs e) { if (e.Key == RhmService.Instance.PresetableKey) { UserPresetsControl.SetCurrentFilename(RhmService.Instance.PresetableKey, e.Filename); } }
public static void LoadSerializedPreset([NotNull] string serializedPreset, [NotNull] string keySaveable = KeySaveable) { if (!UserPresetsControl.LoadSerializedPreset(PresetableKeyValue, serializedPreset)) { ValuesStorage.Set(keySaveable, serializedPreset); } }
public static IEnumerable <object> GroupPresets(string presetsKey, [CanBeNull] Action <ISavedPresetEntry> action) { var group = new HierarchicalGroup("", UserPresetsControl.GroupPresets(presetsKey)); var result = new HierarchicalItemsView(o => { action?.Invoke((ISavedPresetEntry)o); }, group, false); return(result); }
public static void LoadSerializedPreset(string serializedPreset) { if (!UserPresetsControl.LoadSerializedPreset(PresetableKeyValue, serializedPreset)) { ValuesStorage.Set(KeySaveable, serializedPreset); } NavigateToPage(); }
private void RegisterBuiltInPresets() { PresetsManager.Instance.ClearBuiltInPresets(TrackStateViewModelBase.PresetableCategory); foreach (var preset in GetBuiltInPresets()) { PresetsManager.Instance.RegisterBuiltInPreset(preset.Item2.ToBytes(), TrackStateViewModelBase.PresetableCategory, preset.Item1); } UserPresetsControl.RescanCategory(TrackStateViewModelBase.PresetableCategory, true); }
protected virtual async Task Share() { var data = ExportToPresetData(); if (data == null) { return; } await SharingUiHelper.ShareAsync(SharedEntryType.CustomShowroomPreset, Path.GetFileNameWithoutExtension(UserPresetsControl.GetCurrentFilename(_presetableKeyValue)), null, data); }
private async Task Share() { var data = ExportToPresetData(); if (data == null) { return; } await SharingUiHelper.ShareAsync(SharedEntryType.QuickDrivePreset, Path.GetFileNameWithoutExtension(UserPresetsControl.GetCurrentFilename(PresetableKeyValue)), null, data); }
public static void Transfer(DarkRendererSettings settings, DarkKn5ObjectRenderer renderer) { var data = ToSaveableData(settings, renderer); var filename = UserPresetsControl.GetCurrentFilename(DarkRendererSettings.DefaultPresetableKeyValue); if (filename != null) { var relative = FileUtils.GetRelativePath(filename, PresetsManager.Instance.Combine(DarkRendererSettings.DefaultPresetableKeyValue)); filename = relative == filename ? null : Path.Combine(PresetsManager.Instance.Combine(DefaultPresetableKeyValue), relative); } PresetsManager.Instance.SavePresetUsingDialog(null, DefaultPresetableKeyValue, SaveHelper <SaveableData> .Serialize(data), filename); }
private async Task Share() { var model = DataContext as AssistsViewModel; var data = model?.ExportToPresetData(); if (data == null) { return; } await SharingUiHelper.ShareAsync(SharedEntryType.AssistsSetupPreset, Path.GetFileNameWithoutExtension(UserPresetsControl.GetCurrentFilename(model.PresetableKey)), null, data); }
private static async Task <ArgumentHandleResult> ProcessRaceConfig(CustomUriRequest custom) { var config = GetSettings(custom.Params, @"config") ?? throw new Exception(@"Settings are not specified"); var assists = GetSettings(custom.Params, @"assists"); if (assists != null && !UserPresetsControl.LoadSerializedPreset(AssistsViewModel.Instance.PresetableKey, assists)) { AssistsViewModel.Instance.ImportFromPresetData(assists); } await GameWrapper.StartAsync(new Game.StartProperties { PreparedConfig = IniFile.Parse(config) }); return(ArgumentHandleResult.Successful); }
public bool Save() { try { var data = AcSettingsHolder.CombineAppPresets(Entries.Select(x => Tuple.Create(x.Preset, x.PresetDesktopToUse.IntValue ?? 0)), Entries.FindIndex(x => x.IsSelected) + 1); string filename = null; if (PresetsManager.Instance.SavePresetUsingDialog(AcSettingsHolder.AppsPresetsKey, AcSettingsHolder.AppsPresetsCategory, data, ref filename)) { UserPresetsControl.LoadPreset(AcSettingsHolder.AppsPresetsKey, filename); return(true); } } catch (Exception e) { NonfatalError.Notify("Can’t combine presets", e); } return(false); }
public ViewModel() { Entries = new ChangeableObservableCollection <PresetPerMode>(); Modes = new BetterObservableCollection <Mode>(); AppPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.AppsPresetsKey)); AudioPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.AudioPresetsKey)); VideoPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.VideoPresetsKey)); UpdateModes(); FilesStorage.Instance.Watcher(ContentCategory.PresetsPerModeConditions).Update += OnCategoriesUpdate; Saveable.Initialize(); Entries.CollectionChanged += OnCollectionChanged; Entries.ItemPropertyChanged += OnItemPropertyChanged; }
private HierarchicalGroup Rebuild(string header, [Localizable(false)] string sub, IEnumerable <PresetEntry> presets) { var directory = Path.Combine(ControlsSettings.PresetsDirectory, sub); return(new HierarchicalGroup(header, UserPresetsControl.GroupPresets(presets, directory))); }
public static void LoadPreset(string presetFilename) { UserPresetsControl.LoadPreset(PresetableKeyValue, presetFilename); NavigateToPage(); }
internal ViewModel(string serializedPreset, bool uiMode, CarObject carObject = null, string carSkinId = null, TrackObjectBase trackObject = null, string carSetupId = null, string weatherId = null, int?time = null, bool savePreset = false) { _uiMode = uiMode; _carSetupId = carSetupId; _weatherId = weatherId; _forceTime = time; _saveable = new SaveHelper <SaveableData>(KeySaveable, () => new SaveableData { RealConditions = RealConditions, RealConditionsLocalWeather = RealConditionsLocalWeather, RealConditionsTimezones = RealConditionsTimezones, RealConditionsManualTime = RealConditionsManualTime, Mode = SelectedMode, ModeData = SelectedModeViewModel?.ToSerializedString(), CarId = SelectedCar?.Id, TrackId = SelectedTrack?.IdWithLayout, WeatherId = SelectedWeather?.Id, // TODO TrackPropertiesData = TrackState.ExportToPresetData(), TrackPropertiesPresetFilename = UserPresetsControl.GetCurrentFilename(TrackState.PresetableKey), Temperature = Temperature, Time = Time, TimeMultipler = TimeMultipler, }, o => { TimeMultipler = o.TimeMultipler; RealConditions = _weatherId == null && o.RealConditions; RealConditionsTimezones = o.RealConditionsTimezones ?? true; RealConditionsLocalWeather = o.RealConditionsLocalWeather ?? false; RealConditionsManualTime = o.RealConditionsManualTime ?? false; Temperature = o.Temperature; Time = o.Time; if (RealConditions) { UpdateConditions(); } try { _skipLoading = o.ModeData != null; if (o.Mode != null && o.Mode.OriginalString.Contains('_')) { SelectedMode = o.Mode; } if (o.ModeData != null) { SelectedModeViewModel?.FromSerializedString(o.ModeData); } } finally { _skipLoading = false; } if (o.CarId != null) { SelectedCar = CarsManager.Instance.GetById(o.CarId) ?? SelectedCar; } if (o.TrackId != null) { SelectedTrack = TracksManager.Instance.GetLayoutById(o.TrackId) ?? SelectedTrack; } if (_weatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(_weatherId); } else if (o.WeatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(o.WeatherId) ?? SelectedWeather; } if (o.TrackPropertiesPresetFilename != null && File.Exists(o.TrackPropertiesPresetFilename)) { UserPresetsControl.LoadPreset(TrackState.PresetableKey, o.TrackPropertiesPresetFilename); } else if (o.TrackPropertiesData != null) { UserPresetsControl.LoadSerializedPreset(TrackState.PresetableKey, o.TrackPropertiesData); } else if (o.ObsTrackPropertiesPreset != null) { UserPresetsControl.LoadBuiltInPreset(TrackState.PresetableKey, TrackStateViewModelBase.PresetableCategory, o.ObsTrackPropertiesPreset); } }, () => { RealConditions = false; RealConditionsTimezones = true; RealConditionsManualTime = false; RealConditionsLocalWeather = false; SelectedMode = new Uri("/Pages/Drive/QuickDrive_Race.xaml", UriKind.Relative); SelectedCar = CarsManager.Instance.GetDefault(); SelectedTrack = TracksManager.Instance.GetDefault(); SelectedWeather = WeatherManager.Instance.GetDefault(); UserPresetsControl.LoadBuiltInPreset(TrackState.PresetableKey, TrackStateViewModelBase.PresetableCategory, "Green"); Temperature = 12.0; Time = 12 * 60 * 60; TimeMultipler = 1; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.LoadOrReset(); } else { _saveable.Reset(); if (savePreset) { _saveable.FromSerializedString(serializedPreset); } else { _saveable.FromSerializedStringWithoutSaving(serializedPreset); } } if (carObject != null) { SelectedCar = carObject; // TODO: skin? } if (trackObject != null) { SelectedTrack = trackObject; } UpdateConditions(); }
private static string GetPresetName() { return(Path.GetFileNameWithoutExtension(UserPresetsControl.GetCurrentFilename(CmPreviewsSettings.DefaultPresetableKeyValue))); }