/// <summary> /// Merges one profile with another. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks> /// We don't need to reload/reset after these have been imported because /// the bindings haven't changed, we're loading into what is currently setup. /// </remarks> private async void ButtonImportPackage_OnClickAsync(object sender, RoutedEventArgs e) { // TODO - Instead of a straight import everything have this do an upsert if there are matching guids so that packages can be updated. try { var dialog = new OpenFileDialog(); dialog.InitialDirectory = App.Settings.AvalonSettings.SaveDirectory; dialog.Filter = "JSON files (*.json)|*.json|Text Files (*.txt)|*.txt|All files (*.*)|*.*"; if (dialog.ShowDialog() == true) { var confirmDialog = new YesNoDialog() { Title = "Are you sure?", Content = $"Are you sure you want to import from: {Argus.IO.FileSystemUtilities.ExtractFileName(dialog.FileName)}?", PrimaryButtonText = "Yes", SecondaryButtonText = "No" }; var result = await confirmDialog.ShowAsync(); if (result == ContentDialogResult.Secondary) { Interp.EchoText(""); Interp.Conveyor.EchoLog("Cancelled Import\r\n", LogType.Warning); return; } // Load the file, then set it as the last loaded file -if- it existed. string json = File.ReadAllText(dialog.FileName); // This will update this profile with the items from the json package. App.Settings.ImportPackageFromJson(json); // Show the user that the profile was successfully loaded. Interp.EchoText(""); Interp.Conveyor.EchoLog($"Imported the package {dialog.FileName} into the current profile.\r\n", LogType.Success); } } catch (Exception ex) { Interp.EchoText(""); Interp.Conveyor.EchoLog($"An error occured: {ex.Message}.\r\n", LogType.Error); } }
/// <summary> /// Merges one profile with another. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks> /// We don't need to reload/reset after these have been imported because /// the bindings haven't changed, we're loading into what is currently setup. /// </remarks> private async void ButtonImportProfile_OnClickAsync(object sender, RoutedEventArgs e) { // TODO - Instead of a straight import everything have this do an upsert if there are matching guids so that packages can be updated. try { var dialog = new OpenFileDialog(); dialog.InitialDirectory = App.Settings.AvalonSettings.SaveDirectory; dialog.Filter = "JSON files (*.json)|*.json|Text Files (*.txt)|*.txt|All files (*.*)|*.*"; if (dialog.ShowDialog() == true) { var confirmDialog = new YesNoDialog() { Title = "Are you sure?", Content = $"Are you sure you want to import from: {Argus.IO.FileSystemUtilities.ExtractFileName(dialog.FileName)}?", PrimaryButtonText = "Yes", SecondaryButtonText = "No" }; var result = await confirmDialog.ShowAsync(); if (result == ContentDialogResult.Secondary) { Interp.EchoText(""); Interp.EchoText($"--> Cancelled Import\r\n", AnsiColors.Cyan); return; } // Load the file, then set it as the last loaded file -if- it existed. string json = File.ReadAllText(dialog.FileName); var settings = JsonConvert.DeserializeObject <ProfileSettings>(json); // For now we're using going to import the aliases and triggers foreach (var alias in settings.AliasList) { App.Settings.ProfileSettings.AliasList.Add(alias); } // For now we're using going to import the aliases and triggers foreach (var trigger in settings.TriggerList) { App.Settings.ProfileSettings.TriggerList.Add(trigger); } // Inject the Conveyor into all of the triggers foreach (var trigger in App.Settings.ProfileSettings.TriggerList) { trigger.Conveyor = Conveyor; } // Show the user that the profile was successfully loaded. Interp.EchoText(""); Interp.EchoText($"--> Imported {dialog.FileName} into the current profile.\r\n", AnsiColors.Cyan); } } catch (Exception ex) { Interp.EchoText(""); Interp.EchoText($"--> An error occured: {ex.Message}.\r\n", AnsiColors.Red); } }