private QueryResult <OutputFilenameResult> InvokeInteraction(SaveFileInteraction interaction, OutputFormat outputFormat, bool canChangeFormat) { var result = new QueryResult <OutputFilenameResult> { Success = false }; _interactionInvoker.Invoke(interaction); if (!interaction.Success) { return(result); } if (canChangeFormat) { outputFormat = (OutputFormat)interaction.FilterIndex - 1; } var outputFile = interaction.FileName; var outputFormatHelper = new OutputFormatHelper(); if (!outputFormatHelper.HasValidExtension(outputFile, outputFormat)) { outputFile = outputFormatHelper.EnsureValidExtension(outputFile, outputFormat); } result.Success = true; result.Data = new OutputFilenameResult(outputFile, outputFormat); return(result); }
private SaveFileInteraction CreateFileNameInteraction(string fileName, string directory, OutputFormat outputFormat) { if (!string.IsNullOrWhiteSpace(directory)) { var success = CreateTargetDirectory(directory); if (!success) { _logger.Warn("Could not create directory for save file dialog. It will be opened with default save location."); directory = ""; } } var interaction = new SaveFileInteraction(); interaction.Title = _translation.SelectDestination; interaction.Filter = GetAllFilters(); interaction.FilterIndex = (int)outputFormat + 1; interaction.OverwritePrompt = true; interaction.ForceTopMost = true; interaction.FileName = fileName; interaction.InitialDirectory = directory; return(interaction); }
private string QuerySaveFileName() { var interaction = new SaveFileInteraction(); interaction.Filter = _translation.IniFileFilter; interaction.FileName = "PDFCreator.ini"; _interactionInvoker.Invoke(interaction); return(interaction.Success ? interaction.FileName : ""); }
private string QuerySaveFileName() { var interaction = new SaveFileInteraction(); interaction.Filter = _translator.GetTranslation("ApplicationSettingsWindow", "IniFileFilter"); interaction.FileName = "PDFCreator.ini"; _interactionInvoker.Invoke(interaction); return(interaction.Success ? interaction.FileName : ""); }
public void GetFileName_SaveFileInteraction_HasOneFilterEntryPerOutputFormat() { SaveFileInteraction interaction = null; HandleSaveFileInteraction(i => { interaction = i; }); var query = BuildFileNameQuery(); var result = query.GetFileName(_someDirectory, _someFile, OutputFormat.Pdf); var filters = interaction.Filter.Split('|'); var numOutputFormats = Enum.GetValues(typeof(OutputFormat)).Length; Assert.AreEqual(numOutputFormats, filters.Length / 2); }
public void GetFileName_WithPathTooLong_NotifiesUser() { var tooLongDirectory = @"X:\\" + new string('a', 300) + @""; SaveFileInteraction interaction = null; HandleSaveFileInteraction(i => { interaction = i; }); var query = BuildFileNameQuery(); var result = query.GetFileName(tooLongDirectory, _someFile, OutputFormat.Pdf); Assert.AreEqual("", interaction.InitialDirectory); Assert.AreEqual(_someFile, interaction.FileName); }
public void RetypeFileName_FileTypeFilter_OnlyHasCurrentFormat(OutputFormat outputFormat) { SaveFileInteraction saveFileInteraction = null; HandleSaveFileInteraction(interaction => { saveFileInteraction = interaction; }); var query = BuildFileNameQuery(); query.RetypeFileNameQuery(_someFile, outputFormat, RetypeReason.CopyError); // Filter has the Format "Title|filter|Title2|filter2" => we only expect one pipe for a single entry Assert.AreEqual(2, saveFileInteraction.Filter.Split('|').Length); Assert.IsTrue(saveFileInteraction.Filter.Contains(outputFormat.ToString().ToLower())); }
private static void InvokeCallbackCommand( SaveFileInteraction interaction, IFile savedFile ) { Contract.Requires( interaction != null ); if ( savedFile != null ) { // set file and execute accept interaction.FileName = savedFile.Name; interaction.SavedFile = savedFile; interaction.ExecuteDefaultCommand(); } else { // execute cancel interaction.ExecuteCancelCommand(); } }
private SaveFileInteraction CreateRetypeInteraction(string filename, OutputFormat outputFormat) { var interaction = new SaveFileInteraction(); interaction.Title = _translation.SelectDestination; interaction.Filter = GetFilterForOutputFormat(outputFormat); interaction.FilterIndex = 1; interaction.OverwritePrompt = true; var currentFileName = filename; interaction.FileName = Path.GetFileName(currentFileName); interaction.InitialDirectory = Path.GetDirectoryName(currentFileName); interaction.ForceTopMost = true; return(interaction); }
private SaveFileInteraction CreateRetypeInteraction(Job job) { var interaction = new SaveFileInteraction(); interaction.Title = _translator.GetTranslation("InteractiveWorkflow", "SelectDestination"); interaction.Filter = GetFilterForOutputFormat(job.Profile.OutputFormat); interaction.FilterIndex = 1; interaction.OverwritePrompt = true; var currentFileName = job.OutputFilenameTemplate; interaction.FileName = Path.GetFileName(currentFileName); interaction.InitialDirectory = Path.GetDirectoryName(currentFileName); interaction.ForceTopMost = true; return(interaction); }
private SaveFileInteraction CreateFileNameInteraction(Job job) { var interaction = new SaveFileInteraction(); interaction.Title = _translator.GetTranslation("InteractiveWorkflow", "SelectDestination"); interaction.Filter = GetAllFilters(); interaction.FilterIndex = (int)job.Profile.OutputFormat + 1; interaction.OverwritePrompt = true; interaction.ForceTopMost = true; interaction.FileName = _outputFilenameComposer.ComposeOutputFilename(job); if (job.Profile.SaveDialog.SetDirectory) { interaction.InitialDirectory = CreateTargetDirectory(job); } return(interaction); }
private void SaveFile( SaveFileInteraction saveFile ) { Contract.Requires( saveFile != null ); var dialog = new FileSavePicker(); dialog.ContinuationData.AddRange( saveFile.ContinuationData ); dialog.DefaultFileExtension = saveFile.DefaultFileExtension; dialog.FileTypeChoices.AddRange( saveFile.FileTypeChoices.ToDictionary() ); dialog.SuggestedStartLocation = SuggestedStartLocation; if ( !string.IsNullOrEmpty( saveFile.FileName ) ) dialog.SuggestedFileName = saveFile.FileName; if ( !string.IsNullOrEmpty( SettingsIdentifier ) ) dialog.SettingsIdentifier = SettingsIdentifier; dialog.PickSaveFileAndContinue(); }
private IAsyncOperation<StorageFile> SaveFileAsync( SaveFileInteraction saveFile ) { Contract.Requires( saveFile != null ); Contract.Ensures( Contract.Result<IAsyncOperation<StorageFile>>() != null ); var dialog = new FileSavePicker(); dialog.DefaultFileExtension = saveFile.DefaultFileExtension; dialog.FileTypeChoices.AddRange( saveFile.FileTypeChoices.ToDictionary() ); dialog.SuggestedStartLocation = SuggestedStartLocation; if ( !string.IsNullOrEmpty( saveFile.FileName ) ) dialog.SuggestedFileName = saveFile.FileName; if ( !string.IsNullOrEmpty( SettingsIdentifier ) ) dialog.SettingsIdentifier = SettingsIdentifier; return dialog.PickSaveFileAsync(); }
private QueryResult <string> InvokeInteraction(SaveFileInteraction interaction, Job job, bool canChangeFormat) { var result = new QueryResult <string> { Success = false }; _interactionInvoker.Invoke(interaction); if (!interaction.Success) { return(result); } if (canChangeFormat) { job.Profile.OutputFormat = (OutputFormat)interaction.FilterIndex - 1; } try { var outputFile = interaction.FileName; var outputFormatHelper = new OutputFormatHelper(); if (!outputFormatHelper.HasValidExtension(outputFile, job.Profile.OutputFormat)) { outputFile = outputFormatHelper.EnsureValidExtension(outputFile, job.Profile.OutputFormat); } result.Success = true; result.Data = outputFile; return(result); } catch (PathTooLongException) { NotifyUserAboutPathTooLong(); return(InvokeInteraction(interaction, job, canChangeFormat)); } }
public void Invoke(SaveFileInteraction interaction) { throw new NotImplementedException(); }