using System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Text.Json; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Markup; using System.Windows.Media.Imaging; using System.Windows.Resources; using System.Windows.Shapes; namespace AxCopilot.Views; public class AboutWindow : Window, IComponentConnector { internal Canvas DiamondIconCanvas; internal Image AppIconImage; internal TextBlock FallbackIcon; internal Image MascotImage; internal TextBlock AppNameText; internal TextBlock VersionText; internal Grid MascotOverlay; internal Image MascotOverlayImage; internal TextBlock PurposeText; internal TextBlock CompanyNameText; internal Button BlogLinkBtn; internal Grid ContributorsGrid; internal TextBlock ContributorsText; internal TextBlock BuildInfoText; private bool _contentLoaded; public AboutWindow() { InitializeComponent(); base.Loaded += OnLoaded; base.KeyDown += delegate(object _, KeyEventArgs e) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 if ((int)e.Key == 13) { Close(); } }; } private void OnLoaded(object sender, RoutedEventArgs e) { Version version = Assembly.GetExecutingAssembly().GetName().Version; VersionText.Text = ((version != null) ? $"v{version.Major}.{version.Minor}.{version.Build}" : "v1.0"); BuildInfoText.Text = "AX Copilot · Commander + Agent · © 2026"; TryLoadBranding(version); TryLoadAppIcon(); TryLoadMascot(); } private void TryLoadBranding(Version? version) { try { Uri uriResource = new Uri("pack://application:,,,/Assets/about.json"); StreamResourceInfo resourceStream = Application.GetResourceStream(uriResource); if (resourceStream == null) { return; } using StreamReader streamReader = new StreamReader(resourceStream.Stream); using JsonDocument jsonDocument = JsonDocument.Parse(streamReader.ReadToEnd()); JsonElement root = jsonDocument.RootElement; string text = Get("appName"); string text2 = Get("companyName"); string text3 = Get("authorName"); string text4 = Get("authorTitle"); string text5 = Get("purpose"); string value = Get("copyright"); string text6 = Get("blogUrl"); if (!string.IsNullOrWhiteSpace(text)) { AppNameText.Text = text; } if (!string.IsNullOrWhiteSpace(text2)) { CompanyNameText.Text = text2; } if (!string.IsNullOrWhiteSpace(text5)) { PurposeText.Text = text5; } if (!string.IsNullOrWhiteSpace(value)) { string value2 = ((version != null) ? $"v{version.Major}.{version.Minor}.{version.Build}" : "v1.0"); BuildInfoText.Text = $"{text} · {value2} · Commander + Agent · {value}"; } if (!string.IsNullOrWhiteSpace(text6) && BlogLinkBtn != null) { BlogLinkBtn.Content = text6; } string text7 = Get("contributors"); if (!string.IsNullOrWhiteSpace(text7)) { ContributorsText.Text = text7; ContributorsGrid.Visibility = Visibility.Visible; } string Get(string key) { JsonElement value3; return root.TryGetProperty(key, out value3) ? (value3.GetString() ?? "") : ""; } } catch { } } private void TryLoadAppIcon() { try { Uri uriResource = new Uri("pack://application:,,,/Assets/icon.ico"); Stream stream = Application.GetResourceStream(uriResource)?.Stream; if (stream != null) { BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = stream; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.DecodePixelWidth = 176; bitmapImage.EndInit(); ((Freezable)bitmapImage).Freeze(); AppIconImage.Source = bitmapImage; FallbackIcon.Visibility = Visibility.Collapsed; } } catch { } } private void TryLoadMascot() { string[] array = new string[3] { "mascot.png", "mascot.jpg", "mascot.webp" }; foreach (string text in array) { try { Uri uriResource = new Uri("pack://application:,,,/Assets/" + text); Stream stream = Application.GetResourceStream(uriResource)?.Stream; if (stream == null) { continue; } BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = stream; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.DecodePixelWidth = 400; bitmapImage.EndInit(); ((Freezable)bitmapImage).Freeze(); MascotImage.Source = bitmapImage; return; } catch { } } string path = System.IO.Path.GetDirectoryName(Environment.ProcessPath) ?? AppContext.BaseDirectory; string[] array2 = new string[3] { "mascot.png", "mascot.jpg", "mascot.webp" }; foreach (string path2 in array2) { string text2 = System.IO.Path.Combine(path, "Assets", path2); if (File.Exists(text2)) { try { BitmapImage bitmapImage2 = new BitmapImage(); bitmapImage2.BeginInit(); bitmapImage2.UriSource = new Uri(text2, UriKind.Absolute); bitmapImage2.CacheOption = BitmapCacheOption.OnLoad; bitmapImage2.DecodePixelWidth = 400; bitmapImage2.EndInit(); MascotImage.Source = bitmapImage2; break; } catch { } } } } private void ShowMascot_Click(object sender, MouseButtonEventArgs e) { if (MascotImage.Source != null) { MascotOverlayImage.Source = MascotImage.Source; MascotOverlay.Visibility = Visibility.Visible; e.Handled = true; } } private void HideMascot_Click(object sender, MouseButtonEventArgs e) { MascotOverlay.Visibility = Visibility.Collapsed; e.Handled = true; } private void Window_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left && e.LeftButton == MouseButtonState.Pressed) { try { DragMove(); } catch { } } } private void Close_Click(object sender, RoutedEventArgs e) { Close(); } private void Blog_Click(object sender, RoutedEventArgs e) { try { Process.Start(new ProcessStartInfo("https://www.swarchitect.net") { UseShellExecute = true }); } catch { } } [DebuggerNonUserCode] [GeneratedCode("PresentationBuildTasks", "10.0.5.0")] public void InitializeComponent() { if (!_contentLoaded) { _contentLoaded = true; Uri resourceLocator = new Uri("/AxCopilot;component/views/aboutwindow.xaml", UriKind.Relative); Application.LoadComponent(this, resourceLocator); } } [DebuggerNonUserCode] [GeneratedCode("PresentationBuildTasks", "10.0.5.0")] [EditorBrowsable(EditorBrowsableState.Never)] void IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: ((AboutWindow)target).MouseDown += Window_MouseDown; break; case 2: ((Button)target).Click += Close_Click; break; case 3: DiamondIconCanvas = (Canvas)target; break; case 4: AppIconImage = (Image)target; break; case 5: FallbackIcon = (TextBlock)target; break; case 6: MascotImage = (Image)target; break; case 7: AppNameText = (TextBlock)target; break; case 8: VersionText = (TextBlock)target; break; case 9: MascotOverlay = (Grid)target; break; case 10: ((Rectangle)target).MouseDown += HideMascot_Click; break; case 11: MascotOverlayImage = (Image)target; break; case 12: PurposeText = (TextBlock)target; break; case 13: ((Grid)target).MouseDown += ShowMascot_Click; break; case 14: CompanyNameText = (TextBlock)target; break; case 15: BlogLinkBtn = (Button)target; BlogLinkBtn.Click += Blog_Click; break; case 16: ContributorsGrid = (Grid)target; break; case 17: ContributorsText = (TextBlock)target; break; case 18: BuildInfoText = (TextBlock)target; break; default: _contentLoaded = true; break; } } }