|
@@ -1,6 +1,7 @@
|
|
|
#nullable enable
|
|
|
using System.Collections;
|
|
|
using System.Diagnostics;
|
|
|
+using System.Diagnostics.CodeAnalysis;
|
|
|
using System.Text.Json.Serialization;
|
|
|
|
|
|
namespace Terminal.Gui;
|
|
@@ -64,6 +65,9 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
public string Theme
|
|
|
{
|
|
|
get => SelectedTheme;
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
set => SelectedTheme = value;
|
|
|
}
|
|
|
|
|
@@ -73,9 +77,14 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
[SerializableConfigurationProperty (Scope = typeof (SettingsScope), OmitClassName = true)]
|
|
|
public static Dictionary<string, ThemeScope>? Themes
|
|
|
{
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
get => Settings? ["Themes"]
|
|
|
?.PropertyValue as
|
|
|
Dictionary<string, ThemeScope>; // themes ?? new Dictionary<string, ThemeScope> ();
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
set =>
|
|
|
|
|
|
//if (themes is null || value is null) {
|
|
@@ -93,6 +102,9 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
internal static string SelectedTheme
|
|
|
{
|
|
|
get => _theme;
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("Calls Terminal.Gui.ConfigurationManager.Settings")]
|
|
|
+ [RequiresDynamicCode ("Calls Terminal.Gui.ConfigurationManager.Settings")]
|
|
|
set
|
|
|
{
|
|
|
string oldTheme = _theme;
|
|
@@ -109,6 +121,8 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
/// <summary>Event fired he selected theme has changed. application.</summary>
|
|
|
public event EventHandler<ThemeManagerEventArgs>? ThemeChanged;
|
|
|
|
|
|
+ [RequiresUnreferencedCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
+ [RequiresDynamicCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
internal static void GetHardCodedDefaults ()
|
|
|
{
|
|
|
//Debug.WriteLine ("Themes.GetHardCodedDefaults()");
|
|
@@ -129,6 +143,8 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
ThemeChanged?.Invoke (this, new ThemeManagerEventArgs (theme));
|
|
|
}
|
|
|
|
|
|
+ [RequiresUnreferencedCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
+ [RequiresDynamicCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
internal static void Reset ()
|
|
|
{
|
|
|
Debug.WriteLine ("Themes.Reset()");
|
|
@@ -140,33 +156,130 @@ public class ThemeManager : IDictionary<string, ThemeScope>
|
|
|
#region IDictionary
|
|
|
|
|
|
#pragma warning disable 1591
|
|
|
+ [UnconditionalSuppressMessage ("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
|
|
|
+ [UnconditionalSuppressMessage ("AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", Justification = "<Pending>")]
|
|
|
public ICollection<string> Keys => ((IDictionary<string, ThemeScope>)Themes!).Keys;
|
|
|
+
|
|
|
+ [UnconditionalSuppressMessage ("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
|
|
|
+ [UnconditionalSuppressMessage ("AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", Justification = "<Pending>")]
|
|
|
public ICollection<ThemeScope> Values => ((IDictionary<string, ThemeScope>)Themes!).Values;
|
|
|
+
|
|
|
+ [UnconditionalSuppressMessage ("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
|
|
|
+ [UnconditionalSuppressMessage ("AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", Justification = "<Pending>")]
|
|
|
public int Count => ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).Count;
|
|
|
+
|
|
|
+ [UnconditionalSuppressMessage ("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
|
|
|
+ [UnconditionalSuppressMessage ("AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", Justification = "<Pending>")]
|
|
|
public bool IsReadOnly => ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).IsReadOnly;
|
|
|
|
|
|
public ThemeScope this [string key]
|
|
|
{
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
get => ((IDictionary<string, ThemeScope>)Themes!) [key];
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
set => ((IDictionary<string, ThemeScope>)Themes!) [key] = value;
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
}
|
|
|
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public void Add (string key, ThemeScope value) { ((IDictionary<string, ThemeScope>)Themes!).Add (key, value); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public bool ContainsKey (string key) { return ((IDictionary<string, ThemeScope>)Themes!).ContainsKey (key); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public bool Remove (string key) { return ((IDictionary<string, ThemeScope>)Themes!).Remove (key); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public bool TryGetValue (string key, out ThemeScope value) { return ((IDictionary<string, ThemeScope>)Themes!).TryGetValue (key, out value!); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public void Add (KeyValuePair<string, ThemeScope> item) { ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).Add (item); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public void Clear () { ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).Clear (); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public bool Contains (KeyValuePair<string, ThemeScope> item) { return ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).Contains (item); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public void CopyTo (KeyValuePair<string, ThemeScope> [] array, int arrayIndex)
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
{
|
|
|
((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).CopyTo (array, arrayIndex);
|
|
|
}
|
|
|
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public bool Remove (KeyValuePair<string, ThemeScope> item) { return ((ICollection<KeyValuePair<string, ThemeScope>>)Themes!).Remove (item); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("AOT")]
|
|
|
+ [RequiresDynamicCode ("AOT")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
public IEnumerator<KeyValuePair<string, ThemeScope>> GetEnumerator () { return ((IEnumerable<KeyValuePair<string, ThemeScope>>)Themes!).GetEnumerator (); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+
|
|
|
+ [RequiresUnreferencedCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
+ [RequiresDynamicCode ("Calls Terminal.Gui.ThemeManager.Themes")]
|
|
|
+#pragma warning disable IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning disable IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
IEnumerator IEnumerable.GetEnumerator () { return ((IEnumerable)Themes!).GetEnumerator (); }
|
|
|
+#pragma warning restore IL3051 // 'RequiresDynamicCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
+#pragma warning restore IL2046 // 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.
|
|
|
#pragma warning restore 1591
|
|
|
|
|
|
#endregion
|