Files
AddinManager/AddInManager/Wpf/AssemblySelectorWindow.xaml.cs
2026-01-02 11:14:44 +08:00

79 lines
2.2 KiB
C#

using Microsoft.Win32;
using System.IO;
using System.Text;
using System.Windows;
namespace AddInManager.Wpf
{
public partial class AssemblySelectorWindow : Window
{
private readonly string m_assemName;
private bool m_found;
public string ResultPath { get; private set; }
public AssemblySelectorWindow(string assemName)
{
InitializeComponent();
m_assemName = assemName;
assemNameTextBox.Text = assemName;
Closing += AssemblySelectorWindow_Closing;
}
private void AssemblySelectorWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!m_found)
{
ShowWarning();
}
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "Assembly files (*.dll;*.exe,*.mcl)|*.dll;*.exe;*.mcl|All files|*.*||"
};
var assemblyBaseName = m_assemName.Substring(0, m_assemName.IndexOf(','));
openFileDialog.FileName = $"{assemblyBaseName}.*";
if (openFileDialog.ShowDialog() != true)
{
ShowWarning();
return;
}
assemPathTextBox.Text = openFileDialog.FileName;
}
private void OkButton_Click(object sender, RoutedEventArgs e)
{
if (File.Exists(assemPathTextBox.Text))
{
ResultPath = assemPathTextBox.Text;
m_found = true;
DialogResult = true;
}
else
{
ShowWarning();
}
Close();
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
private void ShowWarning()
{
var text = new StringBuilder("The dependent assembly can't be loaded: \"")
.Append(m_assemName)
.Append("\".")
.ToString();
MessageBox.Show(text, "Add-in Manager Internal", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}