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); } }
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); } }
/* ----------------------------------------------------------------- */ /// /// 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(); } }
/* ----------------------------------------------------------------- */ /// /// 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(); } }
/* ----------------------------------------------------------------- */ /// /// 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)); }
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); }
/* ----------------------------------------------------------------- */ /// /// 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); }
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); }
/* ----------------------------------------------------------------- */ /// /// 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); }
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); } } } }
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); } }
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); } } }
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()); } } }
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); }
/* ----------------------------------------------------------------- */ /// /// ImportCommand /// /// <summary> /// Import コマンドを実行します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ImportCommand(OpenFileMessage e, string src, bool ok) { e.Value = new[] { src }; e.Cancel = !ok; }
/* ----------------------------------------------------------------- */ /// /// ImportCommand /// /// <summary> /// Import コマンドを実行します。 /// </summary> /// /* ----------------------------------------------------------------- */ private void ImportCommand(OpenFileMessage e, string src, bool result) { e.FileName = src; e.Result = result; e.Callback(e); }