From f36b33901477c478aa4ffec853136e392f6e6d64 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Fri, 1 Nov 2019 00:02:17 -0400 Subject: [PATCH] implement extension method to FileDialog in order to add file name filter(s) from Universal Editor associations --- .../ExtensionMethods.cs | 50 +++++++++++++++++++ .../MainWindow.cs | 16 +----- .../UniversalEditor.UserInterface.csproj | 1 + 3 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 CSharp/Libraries/UniversalEditor.UserInterface/ExtensionMethods.cs diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/ExtensionMethods.cs b/CSharp/Libraries/UniversalEditor.UserInterface/ExtensionMethods.cs new file mode 100644 index 00000000..c66bfedf --- /dev/null +++ b/CSharp/Libraries/UniversalEditor.UserInterface/ExtensionMethods.cs @@ -0,0 +1,50 @@ +// +// ExtensionMethods.cs +// +// Author: +// Mike Becker +// +// Copyright (c) 2019 Mike Becker +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +using System.Text; +using MBS.Framework.UserInterface.Dialogs; + +namespace UniversalEditor.UserInterface +{ + public static class ExtensionMethods + { + public static void AddFileNameFilterFromAssociations(this FileDialog dialog, string title, Association[] associations) + { + StringBuilder sb = new StringBuilder(); + foreach (Association assoc in associations) + { + for (int i = 0; i < assoc.Filters.Count; i++) + { + for (int j = 0; j < assoc.Filters[i].FileNameFilters.Count; j++) + { + sb.Append(assoc.Filters[i].FileNameFilters[j]); + if (j < assoc.Filters[i].FileNameFilters.Count - 1) + sb.Append("; "); + } + + if (i < assoc.Filters.Count - 1) + sb.Append("; "); + } + } + dialog.FileNameFilters.Add(title, sb.ToString()); + } + } +} diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs b/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs index d428381e..e04ad643 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs @@ -633,22 +633,8 @@ namespace UniversalEditor.UserInterface Association[] projectAssocs = Association.FromObjectModelOrDataFormat((new ProjectObjectModel()).MakeReference()); System.Text.StringBuilder sb = new System.Text.StringBuilder(); - foreach (Association projectAssoc in projectAssocs) - { - for (int i = 0; i < projectAssoc.Filters.Count; i++) - { - for (int j = 0; j < projectAssoc.Filters[i].FileNameFilters.Count; j++) - { - sb.Append(projectAssoc.Filters[i].FileNameFilters[j]); - if (j < projectAssoc.Filters[i].FileNameFilters.Count - 1) - sb.Append("; "); - } + dlg.AddFileNameFilterFromAssociations("Project files", projectAssocs); - if (i < projectAssoc.Filters.Count - 1) - sb.Append("; "); - } - } - dlg.FileNameFilters.Add("Project files", sb.ToString()); dlg.Text = "Open Project"; if (dlg.ShowDialog() == DialogResult.OK) { diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/UniversalEditor.UserInterface.csproj b/CSharp/Libraries/UniversalEditor.UserInterface/UniversalEditor.UserInterface.csproj index fe8646f4..555d42e2 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/UniversalEditor.UserInterface.csproj +++ b/CSharp/Libraries/UniversalEditor.UserInterface/UniversalEditor.UserInterface.csproj @@ -125,6 +125,7 @@ +