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);
        }
Exemple #3
0
        private string QuerySaveFileName()
        {
            var interaction = new SaveFileInteraction();

            interaction.Filter   = _translation.IniFileFilter;
            interaction.FileName = "PDFCreator.ini";

            _interactionInvoker.Invoke(interaction);

            return(interaction.Success ? interaction.FileName : "");
        }
Exemple #4
0
        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 : "");
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #12
0
        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();
        }
Exemple #13
0
        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();
 }