Пример #1
0
        private static async Task ShowOpenFileDialogAsync(OpenFileMessage message)
        {
            string filename = null;

            try
            {
                var dialog = new OpenFileDialog()
                {
                    AllowMultiple = false,
                    Title         = message.Title,
                    Filters       = GetFilters(message.FileType),
                };

                string[] filenames = await dialog.ShowAsync(MainWindow);

                if (filenames is not null && filenames.Length > 0 && !string.IsNullOrWhiteSpace(filenames[0]))
                {
                    filename = filenames[0];
                }
            }
            catch (Exception ex)
            {
                ExceptionUtils.HandleException(ex);
            }
            finally
            {
                message.Process(filename);
            }
        }
Пример #2
0
        private static async Task ShowOpenFileDialogAsync(OpenFileMessage message)
        {
            string filename = null;

            try
            {
                var dialog = new OpenFileDialog()
                {
                    AllowMultiple   = false,
                    Title           = message.Title,
                    Filters         = GetOpenFilters(message.FileType == FileType.ImportedImage),
                    Directory       = null != message.ExistingFile ? Path.GetDirectoryName(message.ExistingFile) : null,
                    InitialFileName = null != message.ExistingFile ? Path.GetFileName(message.ExistingFile) : null,
                };

                string[] filenames = await dialog.ShowAsync(MainWindow);

                if (null != filenames && filenames.Length > 0 && !string.IsNullOrWhiteSpace(filenames[0]))
                {
                    filename = filenames[0];
                }
            }
            catch (Exception ex)
            {
                ExceptionUtils.HandleException(ex);
            }
            finally
            {
                message.Process(filename);
            }
        }
Пример #3
0
 /* ----------------------------------------------------------------- */
 ///
 /// SetUserProgram
 ///
 /// <summary>
 /// Sets the message result to the UserProgram property.
 /// </summary>
 ///
 /// <param name="src">Source facade.</param>
 /// <param name="e">Result message.</param>
 ///
 /* ----------------------------------------------------------------- */
 public static void SetUserProgram(this Facade src, OpenFileMessage e)
 {
     if (!e.Cancel)
     {
         src.Settings.Value.UserProgram = e.Value.First();
     }
 }
Пример #4
0
 /* ----------------------------------------------------------------- */
 ///
 /// SetSource
 ///
 /// <summary>
 /// Sets the message result to the Source property.
 /// </summary>
 ///
 /// <param name="src">Source facade.</param>
 /// <param name="e">Result message.</param>
 ///
 /* ----------------------------------------------------------------- */
 public static void SetSource(this Facade src, OpenFileMessage e)
 {
     if (!e.Cancel)
     {
         src.Settings.Value.Source = e.Value.First();
     }
 }
Пример #5
0
 /* ----------------------------------------------------------------- */
 ///
 /// Send
 ///
 /// <summary>
 /// Sends the specified message, and invokes the specified action
 /// when not canceled by the user.
 /// </summary>
 ///
 /// <param name="message">Message to send.</param>
 /// <param name="next">
 /// Action to be invoked when not canceled by the user.
 /// </param>
 ///
 /* ----------------------------------------------------------------- */
 protected async Task Send(OpenFileMessage message, Action <IEnumerable <string> > next)
 {
     Send(message);
     if (message.Cancel)
     {
         return;
     }
     await Track(() => next(message.Value));
 }
Пример #6
0
        public void Create_OpenFileMessage()
        {
            var src = new OpenFileMessage();

            Assert.That(src.Text, Is.Empty);
            Assert.That(src.Value.Count(), Is.EqualTo(0));
            Assert.That(src.InitialDirectory, Is.Empty);
            Assert.That(src.Filter, Is.EqualTo("All Files (*.*)|*.*"));
            Assert.That(src.FilterIndex, Is.EqualTo(0));
            Assert.That(src.CheckPathExists, Is.True);
            Assert.That(src.Multiselect, Is.False);
            Assert.That(src.Cancel, Is.False);
        }
Пример #7
0
        /* ----------------------------------------------------------------- */
        ///
        /// CreateForUserProgram
        ///
        /// <summary>
        /// Creates a message to show an OpenFileDialog dialog for
        /// selecting the user program.
        /// </summary>
        ///
        /// <param name="src">User settings.</param>
        ///
        /// <returns>OpenFileMessage object.</returns>
        ///
        /* ----------------------------------------------------------------- */
        public static OpenFileMessage CreateForUserProgram(this SettingFolder src)
        {
            var path = src.Value.UserProgram;
            var dest = new OpenFileMessage
            {
                Text        = Properties.Resources.TitleSelectUserProgram,
                Value       = GetFileNames(path, src.IO),
                Multiselect = false,
                Filter      = ViewResources.UserProgramFilters.GetFilter(),
            };

            if (src.Value.ExplicitDirectory)
            {
                dest.InitialDirectory = GetDirectoryName(path, src.IO);
            }
            return(dest);
        }
Пример #8
0
        private static IMessage GetMessage(RepositoryFilterOptions options)
        {
            // default should be listing all repositories
            IMessage message = new ListRepositoriesMessage();

            ApplyMessageFilters(options);

            if (options is ListOptions)
            {
                if (options.HasFileFilter)
                {
                    message = new ListRepositoryFilesMessage(options);
                }
                else
                {
                    message = new ListRepositoriesMessage(options);
                }
            }

            if (options is ChangeDirectoryOptions)
            {
                message = new ChangeToDirectoryMessage(options);
            }

            if (options is GetDirectoryOptions)
            {
                message = new GetDirectoryMessage(options);
            }

            if (options is OpenDirectoryOptions)
            {
                if (options.HasFileFilter)
                {
                    message = new OpenFileMessage(options);
                }
                else
                {
                    message = new OpenDirectoryMessage(options);
                }
            }

            return(message);
        }
Пример #9
0
        /* ----------------------------------------------------------------- */
        ///
        /// CreateForSource
        ///
        /// <summary>
        /// Creates a message to show an OpenFileDialog dialog for
        /// selecting the source path.
        /// </summary>
        ///
        /// <param name="src">User settings.</param>
        ///
        /// <returns>OpenFileMessage object.</returns>
        ///
        /* ----------------------------------------------------------------- */
        public static OpenFileMessage CreateForSource(this SettingFolder src)
        {
            var io   = src.IO;
            var path = src.Value.Source;
            var dest = new OpenFileMessage
            {
                Title       = Properties.Resources.TitleSelectSource,
                Value       = GetFileNames(path, io),
                Multiselect = false,
                Filter      = ViewResources.SourceFilters.GetFilter(),
                FilterIndex = ViewResources.SourceFilters.GetFilterIndex(path, io),
            };

            if (src.Value.ExplicitDirectory)
            {
                dest.InitialDirectory = GetDirectoryName(path, io);
            }
            return(dest);
        }
Пример #10
0
        private static void ParseCommandLineOptions(string verb, object options, out IMessage message)
        {
            // default should be listing all repositories
            message = new ListRepositoriesMessage();

            var filter = options as RepositoryFilterOptions;

            if (filter != null)
            {
                ApplyMessageFilters(filter);

                if (verb == CommandLineOptions.ListCommand)
                {
                    if (filter.HasFileFilter)
                    {
                        message = new ListRepositoryFilesMessage(filter);
                    }
                    else
                    {
                        message = new ListRepositoriesMessage(filter);
                    }
                }

                if (verb == CommandLineOptions.ChangeDirectoryCommand)
                {
                    message = new ChangeToDirectoryMessage(filter);
                }

                if (verb == CommandLineOptions.OpenDirectoryCommand)
                {
                    if (filter.HasFileFilter)
                    {
                        message = new OpenFileMessage(filter);
                    }
                    else
                    {
                        message = new OpenDirectoryMessage(filter);
                    }
                }
            }
        }
Пример #11
0
        private void OnOpenFileMessage(OpenFileMessage openFileMessage)
        {
            var openDlg = new OpenFileDialog
            {
                AddExtension    = true,
                CheckFileExists = true,
                Multiselect     = openFileMessage.Multiselect,
                Filter          = "All Supported|*.xaml;*.xamlx|Activities|*.xaml|Workflow Services|*.xamlx"
            };

            if (openDlg.ShowDialog().GetValueOrDefault())
            {
                openFileMessage.Execute(openDlg.Multiselect
                                            ? new OpenFileResult(openDlg.FileNames)
                                            : new OpenFileResult(openDlg.FileName));
            }
            else
            {
                openFileMessage.Execute(OpenFileResult.DoNothing);
            }
        }
Пример #12
0
        public void OpenDialog(OpenFileMessage msg)
        {
            var ofd = new OpenFileDialog();

            ofd.RestoreDirectory = true;
            var result = ofd.ShowDialog();

            if (result == DialogResult.OK)
            {
                if (msg.OpenStream)
                {
                    using (var stream = ofd.OpenFile())
                    {
                        msg.OpenStreamAction(stream);
                    }
                }
                else
                {
                    msg.PassFileNameAction(ofd.FileName);
                }
            }
        }
Пример #13
0
        public async void OpenDialog(OpenFileMessage msg)
        {
            var ofd = new OpenFileDialog();

            ofd.AllowMultiple = false;
            var result = await ofd.ShowAsync();

            if (result != null && result.Length == 1)
            {
                if (msg.OpenStream)
                {
                    using (var stream = new FileStream(result.First(), FileMode.Open))
                    {
                        msg.OpenStreamAction(stream);
                    }
                }
                else
                {
                    msg.PassFileNameAction(result.First());
                }
            }
        }
Пример #14
0
        private void OnOpenCommandInternal()
        {
            var openMessage = new OpenFileMessage(
                true,
                this,
                null,
                result =>
            {
                if (result.PerformOpen)
                {
                    var possibleNextActive = ActiveWorkflowFile;

                    foreach (var fileName in result.FileNames.Where(f => f != null))
                    {
                        if (!files.Any(f => f.FilePath == fileName))
                        {
                            var newFile = new WorkflowFileViewModel(fileName);
                            files.Add(newFile);
                            SubscribeToFileEvents(newFile);

                            possibleNextActive = newFile;
                        }
                        else
                        {
                            possibleNextActive = files.SingleOrDefault(f => f.FilePath == fileName);
                        }
                    }

                    if (possibleNextActive != null)
                    {
                        ActiveWorkflowFile = possibleNextActive;
                    }
                }
            });

            MessengerInstance.Send(openMessage);
        }
Пример #15
0
 /* ----------------------------------------------------------------- */
 ///
 /// ImportCommand
 ///
 /// <summary>
 /// Import コマンドを実行します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void ImportCommand(OpenFileMessage e, string src, bool ok)
 {
     e.Value  = new[] { src };
     e.Cancel = !ok;
 }
Пример #16
0
        private void OnOpenCommandInternal()
        {
            var openMessage = new OpenFileMessage(
                true,
                this,
                null,
                result =>
                    {
                        if (result.PerformOpen)
                        {
                            var possibleNextActive = ActiveWorkflowFile;

                            foreach (var fileName in result.FileNames.Where(f => f != null))
                            {
                                if (!files.Any(f => f.FilePath == fileName))
                                {
                                    var newFile = new WorkflowFileViewModel(fileName);
                                    files.Add(newFile);
                                    SubscribeToFileEvents(newFile);

                                    possibleNextActive = newFile;
                                }
                                else
                                {
                                    possibleNextActive = files.SingleOrDefault(f => f.FilePath == fileName);
                                }
                            }

                            if (possibleNextActive != null)
                            {
                                ActiveWorkflowFile = possibleNextActive;
                            }
                        }
                    });

            MessengerInstance.Send(openMessage);
        }
Пример #17
0
        private void OnOpenFileMessage(OpenFileMessage openFileMessage)
        {
            var openDlg = new OpenFileDialog
            {
                AddExtension = true,
                CheckFileExists = true,
                Multiselect = openFileMessage.Multiselect,
                Filter = "All Supported|*.xaml;*.xamlx|Activities|*.xaml|Workflow Services|*.xamlx"
            };

            if (openDlg.ShowDialog().GetValueOrDefault())
            {
                openFileMessage.Execute(openDlg.Multiselect
                                            ? new OpenFileResult(openDlg.FileNames)
                                            : new OpenFileResult(openDlg.FileName));
            }
            else
            {
                openFileMessage.Execute(OpenFileResult.DoNothing);
            }
        }
Пример #18
0
 /* ----------------------------------------------------------------- */
 ///
 /// ImportCommand
 ///
 /// <summary>
 /// Import コマンドを実行します。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void ImportCommand(OpenFileMessage e, string src, bool result)
 {
     e.FileName = src;
     e.Result   = result;
     e.Callback(e);
 }