From 7b02518e4e79cd63d8c9ddfc99f6b8b29ec7ce96 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Thu, 10 Sep 2020 05:47:58 -0400 Subject: [PATCH] add option for DataFormat hint comparisons to require BOTH FileNameFilter and MagicByteSequence to match --- Libraries/UniversalEditor.Core/DataFormatFilter.cs | 7 ++++++- .../UniversalEditor.Core/DataFormatHintComparison.cs | 8 +++++++- .../DataFormats/UEPackage/UEPackageXMLDataFormat.cs | 5 +++++ .../Associations/SynthesizedAudio/VPR.uexml | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Libraries/UniversalEditor.Core/DataFormatFilter.cs b/Libraries/UniversalEditor.Core/DataFormatFilter.cs index 591234cb..aa93452b 100644 --- a/Libraries/UniversalEditor.Core/DataFormatFilter.cs +++ b/Libraries/UniversalEditor.Core/DataFormatFilter.cs @@ -63,7 +63,7 @@ namespace UniversalEditor private string mvarTitle = String.Empty; public string Title { get { return mvarTitle; } set { mvarTitle = value; } } - private DataFormatHintComparison mvarHintComparison = DataFormatHintComparison.Unspecified; + private DataFormatHintComparison mvarHintComparison = DataFormatHintComparison.Both; public DataFormatHintComparison HintComparison { get { return mvarHintComparison; } set { mvarHintComparison = value; } } private System.Collections.Specialized.StringCollection mvarFileNameFilters = new System.Collections.Specialized.StringCollection(); @@ -111,6 +111,7 @@ namespace UniversalEditor bool filterCaseSensitive = false; if (!caseSensitiveOS || (caseSensitiveOS && !filterCaseSensitive)) fileName = fileName.ToLower(); + for (int i = 0; i < mvarFileNameFilters.Count; i++) { string filter = mvarFileNameFilters[i]; @@ -212,6 +213,10 @@ namespace UniversalEditor if (!basedOnMagic) return basedOnFilter; return basedOnMagic; } + case DataFormatHintComparison.Both: + { + return basedOnFilter && basedOnMagic; + } } return false; } diff --git a/Libraries/UniversalEditor.Core/DataFormatHintComparison.cs b/Libraries/UniversalEditor.Core/DataFormatHintComparison.cs index ffbd065d..ce3b7560 100644 --- a/Libraries/UniversalEditor.Core/DataFormatHintComparison.cs +++ b/Libraries/UniversalEditor.Core/DataFormatHintComparison.cs @@ -54,8 +54,14 @@ namespace UniversalEditor /// MagicThenFilter = 4, /// + /// Return this if both the magic bytes listed in the match the magic bytes of the + /// AND the file name filters listed in the match the file name of the + /// . + /// + Both = 5, + /// /// Always return this as a result for the given . /// - Always = 5 + Always = 6 } } diff --git a/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs b/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs index c5fdd2b4..46b1c4cd 100644 --- a/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs +++ b/Libraries/UniversalEditor.Essential/DataFormats/UEPackage/UEPackageXMLDataFormat.cs @@ -883,6 +883,11 @@ namespace UniversalEditor.DataFormats.UEPackage filter.HintComparison = DataFormatHintComparison.Never; break; } + case "both": + { + filter.HintComparison = DataFormatHintComparison.Both; + break; + } default: { filter.HintComparison = DataFormatHintComparison.Unspecified; diff --git a/Plugins/UniversalEditor.Plugins.Vocaloid/Associations/SynthesizedAudio/VPR.uexml b/Plugins/UniversalEditor.Plugins.Vocaloid/Associations/SynthesizedAudio/VPR.uexml index e68626f7..88df0b8b 100644 --- a/Plugins/UniversalEditor.Plugins.Vocaloid/Associations/SynthesizedAudio/VPR.uexml +++ b/Plugins/UniversalEditor.Plugins.Vocaloid/Associations/SynthesizedAudio/VPR.uexml @@ -3,7 +3,7 @@ - + *.vpr