diff --git a/ILSpy/AssemblyList.cs b/ILSpy/AssemblyList.cs index caa7f8ae3..6739bf1c5 100644 --- a/ILSpy/AssemblyList.cs +++ b/ILSpy/AssemblyList.cs @@ -70,6 +70,15 @@ namespace ICSharpCode.ILSpy } this.dirty = false; // OpenAssembly() sets dirty, so reset it afterwards } + + /// + /// Creates a copy of an assembly list. + /// + public AssemblyList(AssemblyList list, string newName) + : this(newName) + { + this.assemblies.AddRange(list.assemblies); + } /// /// Gets the loaded assemblies. This method is thread-safe. diff --git a/ILSpy/AssemblyListManager.cs b/ILSpy/AssemblyListManager.cs index 1dd6ebd5d..e54898d5e 100644 --- a/ILSpy/AssemblyListManager.cs +++ b/ILSpy/AssemblyListManager.cs @@ -71,7 +71,14 @@ namespace ICSharpCode.ILSpy else return new AssemblyList(listName ?? DefaultListName); } - + + public bool CloneList(string selectedAssemblyList, string newListName) + { + var list = DoLoadList(spySettings, selectedAssemblyList); + var newList = new AssemblyList(list, newListName); + return CreateList(newList); + } + public const string DefaultListName = "(Default)"; /// diff --git a/ILSpy/Commands/DelegateCommand.cs b/ILSpy/Commands/DelegateCommand.cs new file mode 100644 index 000000000..4c0c033d2 --- /dev/null +++ b/ILSpy/Commands/DelegateCommand.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace ICSharpCode.ILSpy.Commands +{ + public class DelegateCommand : ICommand + { + private readonly Action action; + private readonly Func canExecute; + + public event EventHandler CanExecuteChanged { + add { CommandManager.RequerySuggested += value; } + remove { CommandManager.RequerySuggested -= value; } + } + + public DelegateCommand(Action action) + : this(action, _ => true) + { + } + + public DelegateCommand(Action action, Func canExecute) + { + this.action = action; + this.canExecute = canExecute; + } + + public bool CanExecute(object parameter) + { + return canExecute((T)parameter); + } + + public void Execute(object parameter) + { + action((T)parameter); + } + } +} diff --git a/ILSpy/Commands/ILSpyCommands.cs b/ILSpy/Commands/ILSpyCommands.cs index 4a2d7e98f..379432b7f 100644 --- a/ILSpy/Commands/ILSpyCommands.cs +++ b/ILSpy/Commands/ILSpyCommands.cs @@ -29,5 +29,6 @@ namespace ICSharpCode.ILSpy static class ILSpyCommands { public static readonly AnalyzeCommand Analyze = new AnalyzeCommand(); + public static readonly ManageAssemblyListsCommand ManageAssemblyListsCommand = new ManageAssemblyListsCommand(); } } diff --git a/ILSpy/Commands/OpenListCommand.cs b/ILSpy/Commands/ManageAssemblyListsCommand.cs similarity index 81% rename from ILSpy/Commands/OpenListCommand.cs rename to ILSpy/Commands/ManageAssemblyListsCommand.cs index 807171875..49effa4a7 100644 --- a/ILSpy/Commands/OpenListCommand.cs +++ b/ILSpy/Commands/ManageAssemblyListsCommand.cs @@ -21,15 +21,14 @@ using ICSharpCode.ILSpy.Properties; namespace ICSharpCode.ILSpy { - [ExportMainMenuCommand(Menu = nameof(Resources._File), Header = nameof(Resources.Open_List), MenuIcon = "Images/AssemblyList", MenuCategory = nameof(Resources.Open), MenuOrder = 1.7)] - sealed class OpenListCommand : SimpleCommand + [ExportMainMenuCommand(Menu = nameof(Resources._File), Header = nameof(Resources.ManageAssemblyLists), MenuIcon = "Images/AssemblyList", MenuCategory = nameof(Resources.Open), MenuOrder = 1.7)] + sealed class ManageAssemblyListsCommand : SimpleCommand { public override void Execute(object parameter) { - OpenListDialog dlg = new OpenListDialog(); + ManageAssemblyListsDialog dlg = new ManageAssemblyListsDialog(); dlg.Owner = MainWindow.Instance; - if (dlg.ShowDialog() == true) - MainWindow.Instance.ShowAssemblyList(dlg.SelectedListName); + dlg.ShowDialog(); } } } diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index 163bdc228..42dc17c03 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -107,11 +107,12 @@ + - + @@ -132,12 +133,14 @@ - + + + CreateListDialog.xaml - + DebugSteps.xaml @@ -199,18 +202,16 @@ - + NugetPackageBrowserDialog.xaml - + OpenFromGacDialog.xaml ResourceStringTable.xaml - - OpenListDialog.xaml - + DisplaySettingsPanel.xaml @@ -324,8 +325,8 @@ - - + + @@ -389,9 +390,9 @@ - - - + + + diff --git a/ILSpy/MainWindow.xaml b/ILSpy/MainWindow.xaml index d52b09892..11408d0b8 100644 --- a/ILSpy/MainWindow.xaml +++ b/ILSpy/MainWindow.xaml @@ -123,6 +123,9 @@ + diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index d9c11e41f..6dfd07498 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -70,8 +70,6 @@ namespace ICSharpCode.ILSpy readonly NavigationHistory history = new NavigationHistory(); ILSpySettings spySettingsForMainWindow_Loaded; internal SessionSettings sessionSettings; - - internal AssemblyListManager assemblyListManager; AssemblyList assemblyList; AssemblyListTreeNode assemblyListTreeNode; @@ -85,6 +83,8 @@ namespace ICSharpCode.ILSpy get { return sessionSettings; } } + internal AssemblyListManager AssemblyListManager { get; } + public SharpTreeView treeView { get { return FindResource("TreeView") as SharpTreeView; @@ -109,14 +109,14 @@ namespace ICSharpCode.ILSpy var spySettings = ILSpySettings.Load(); this.spySettingsForMainWindow_Loaded = spySettings; this.sessionSettings = new SessionSettings(spySettings); - this.assemblyListManager = new AssemblyListManager(spySettings); + this.AssemblyListManager = new AssemblyListManager(spySettings); this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico")); this.DataContext = new MainWindowDataContext { Workspace = DockWorkspace.Instance, SessionSettings = sessionSettings, - AssemblyListManager = assemblyListManager + AssemblyListManager = AssemblyListManager }; DockWorkspace.Instance.LoadSettings(sessionSettings); @@ -477,10 +477,10 @@ namespace ICSharpCode.ILSpy if (loadPreviousAssemblies) { // Load AssemblyList only in Loaded event so that WPF is initialized before we start the CPU-heavy stuff. // This makes the UI come up a bit faster. - this.assemblyList = assemblyListManager.LoadList(sessionSettings.ActiveAssemblyList); + this.assemblyList = AssemblyListManager.LoadList(sessionSettings.ActiveAssemblyList); } else { this.assemblyList = new AssemblyList(AssemblyListManager.DefaultListName); - assemblyListManager.ClearAll(); + AssemblyListManager.ClearAll(); } HandleCommandLineArguments(App.CommandLineArguments); @@ -595,7 +595,7 @@ namespace ICSharpCode.ILSpy public void ShowAssemblyList(string name) { - AssemblyList list = this.assemblyListManager.LoadList(name); + AssemblyList list = this.AssemblyListManager.LoadList(name); //Only load a new list when it is a different one if (list.ListName != CurrentAssemblyList.ListName) { ShowAssemblyList(list); @@ -916,7 +916,7 @@ namespace ICSharpCode.ILSpy try { refreshInProgress = true; var path = GetPathForNode(treeView.SelectedItem as SharpTreeNode); - ShowAssemblyList(assemblyListManager.LoadList(assemblyList.ListName)); + ShowAssemblyList(AssemblyListManager.LoadList(assemblyList.ListName)); SelectNode(FindNodeByPath(path, true)); } finally { refreshInProgress = false; diff --git a/ILSpy/Properties/Resources.Designer.cs b/ILSpy/Properties/Resources.Designer.cs index 35ddfdfd2..21b15a4c0 100644 --- a/ILSpy/Properties/Resources.Designer.cs +++ b/ILSpy/Properties/Resources.Designer.cs @@ -96,15 +96,6 @@ namespace ICSharpCode.ILSpy.Properties { } } - /// - /// Looks up a localized string similar to _Create. - /// - public static string _Create { - get { - return ResourceManager.GetString("_Create", resourceCulture); - } - } - /// /// Looks up a localized string similar to _File. /// @@ -132,6 +123,15 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to _New. + /// + public static string _New { + get { + return ResourceManager.GetString("_New", resourceCulture); + } + } + /// /// Looks up a localized string similar to _Open.... /// @@ -376,6 +376,15 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to C_lone. + /// + public static string C_lone { + get { + return ResourceManager.GetString("C_lone", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cancel. /// @@ -421,6 +430,15 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to Close. + /// + public static string Close { + get { + return ResourceManager.GetString("Close", resourceCulture); + } + } + /// /// Looks up a localized string similar to Collapse all tree nodes. /// @@ -1341,6 +1359,33 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to Are you sure that you want to delete the selected assembly list?. + /// + public static string ListDeleteConfirmation { + get { + return ResourceManager.GetString("ListDeleteConfirmation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A list with the same name was found.. + /// + public static string ListExistsAlready { + get { + return ResourceManager.GetString("ListExistsAlready", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure that you want to remove all assembly lists and recreate the default assembly lists?. + /// + public static string ListsResetConfirmation { + get { + return ResourceManager.GetString("ListsResetConfirmation", resourceCulture); + } + } + /// /// Looks up a localized string similar to Load assemblies that were loaded in the last instance.. /// @@ -1368,6 +1413,24 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to Manage assembly _lists.... + /// + public static string ManageAssembly_Lists { + get { + return ResourceManager.GetString("ManageAssembly_Lists", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manage Assembly Lists. + /// + public static string ManageAssemblyLists { + get { + return ResourceManager.GetString("ManageAssemblyLists", resourceCulture); + } + } + /// /// Looks up a localized string similar to Misc. /// @@ -1422,15 +1485,6 @@ namespace ICSharpCode.ILSpy.Properties { } } - /// - /// Looks up a localized string similar to Open _List.... - /// - public static string Open_List { - get { - return ResourceManager.GetString("Open_List", resourceCulture); - } - } - /// /// Looks up a localized string similar to Open Explorer. /// @@ -1458,15 +1512,6 @@ namespace ICSharpCode.ILSpy.Properties { } } - /// - /// Looks up a localized string similar to Open List. - /// - public static string OpenList { - get { - return ResourceManager.GetString("OpenList", resourceCulture); - } - } - /// /// Looks up a localized string similar to _Delete. /// diff --git a/ILSpy/Properties/Resources.resx b/ILSpy/Properties/Resources.resx index f83bc46f1..4a7684684 100644 --- a/ILSpy/Properties/Resources.resx +++ b/ILSpy/Properties/Resources.resx @@ -156,8 +156,8 @@ Open from _GAC... - - Open _List... + + Manage assembly _lists... Reload all assemblies @@ -450,14 +450,14 @@ Public Key Token - - Open List + + Manage Assembly Lists Select a list: - - _Create + + _New _Open @@ -811,4 +811,19 @@ Are you sure you want to continue? Select a list of assemblies + + Close + + + C_lone + + + Are you sure that you want to delete the selected assembly list? + + + A list with the same name was found. + + + Are you sure that you want to remove all assembly lists and recreate the default assembly lists? + \ No newline at end of file diff --git a/ILSpy/Views/OpenListDialog.xaml.cs b/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs similarity index 72% rename from ILSpy/Views/OpenListDialog.xaml.cs rename to ILSpy/ViewModels/ManageAssemblyListsViewModel.cs index cf073e2de..baf1e6be0 100644 --- a/ILSpy/Views/OpenListDialog.xaml.cs +++ b/ILSpy/ViewModels/ManageAssemblyListsViewModel.cs @@ -1,4 +1,4 @@ -// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team +// Copyright (c) 2019 AlphaSierraPapa for the SharpDevelop Team // // Permission is hereby granted, free of charge, to any person obtaining a copy of this // software and associated documentation files (the "Software"), to deal in the Software @@ -16,61 +16,117 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +using System.Collections.ObjectModel; using System.Windows; -using System.Windows.Controls; using System.Windows.Input; -using System; using ICSharpCode.Decompiler.Metadata; +using ICSharpCode.ILSpy.Commands; -namespace ICSharpCode.ILSpy +namespace ICSharpCode.ILSpy.ViewModels { - /// - /// Interaction logic for OpenListDialog.xaml - /// - public partial class OpenListDialog : Window + public class ManageAssemblyListsViewModel : ViewModelBase { - public const string DotNet4List = ".NET 4 (WPF)"; public const string DotNet35List = ".NET 3.5"; public const string ASPDotNetMVC3List = "ASP.NET (MVC3)"; - readonly AssemblyListManager manager; + private readonly AssemblyListManager manager; - public OpenListDialog() + public ManageAssemblyListsViewModel() { - InitializeComponent(); - manager = MainWindow.Instance.assemblyListManager; + this.manager = MainWindow.Instance.AssemblyListManager; + CreateDefaultAssemblyLists(); + + NewCommand = new DelegateCommand(ExecuteNew); + CloneCommand = new DelegateCommand(ExecuteClone, CanExecuteClone); + ResetCommand = new DelegateCommand(ExecuteReset); + DeleteCommand = new DelegateCommand(ExecuteDelete, CanExecuteDelete); } - private void listView_Loaded(object sender, RoutedEventArgs e) - { - listView.ItemsSource = manager.AssemblyLists; - CreateDefaultAssemblyLists(); + public ObservableCollection AssemblyLists => manager.AssemblyLists; + + private string selectedAssemblyList; + + public string SelectedAssemblyList { + get => selectedAssemblyList; + set { + if (selectedAssemblyList != value) { + selectedAssemblyList = value; + RaisePropertyChanged(); + } + } } - void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) + public ICommand NewCommand { get; } + public ICommand CloneCommand { get; } + public ICommand ResetCommand { get; } + public ICommand DeleteCommand { get; } + + private void ExecuteNew(ManageAssemblyListsDialog dialog) { - okButton.IsEnabled = listView.SelectedItem != null; - deleteButton.IsEnabled = listView.SelectedItem != null; + CreateListDialog dlg = new CreateListDialog(); + dlg.Owner = dialog; + dlg.Closing += (s, args) => { + if (dlg.DialogResult == true) { + if (manager.AssemblyLists.Contains(dlg.NewListName)) { + args.Cancel = true; + MessageBox.Show(Properties.Resources.ListExistsAlready, null, MessageBoxButton.OK); + } + } + }; + if (dlg.ShowDialog() == true) { + manager.CreateList(new AssemblyList(dlg.NewListName)); + } } - void OKButton_Click(object sender, RoutedEventArgs e) + private bool CanExecuteClone(ManageAssemblyListsDialog _) { - this.DialogResult = true; + return selectedAssemblyList != null; } - public string SelectedListName + private void ExecuteClone(ManageAssemblyListsDialog dialog) { - get - { - return listView.SelectedItem.ToString(); + CreateListDialog dlg = new CreateListDialog(); + dlg.Owner = dialog; + dlg.Closing += (s, args) => { + if (dlg.DialogResult == true) { + if (manager.AssemblyLists.Contains(dlg.NewListName)) { + args.Cancel = true; + MessageBox.Show(Properties.Resources.ListExistsAlready, null, MessageBoxButton.OK); + } + } + }; + if (dlg.ShowDialog() == true) { + manager.CloneList(SelectedAssemblyList, dlg.NewListName); } } + private void ExecuteReset(ManageAssemblyListsDialog dialog) + { + if (MessageBox.Show(dialog, Properties.Resources.ListsResetConfirmation, + "ILSpy", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No, MessageBoxOptions.None) != MessageBoxResult.Yes) + return; + manager.ClearAll(); + CreateDefaultAssemblyLists(); + MainWindow.Instance.SessionSettings.ActiveAssemblyList = manager.AssemblyLists[0]; + } + + private void ExecuteDelete(ManageAssemblyListsDialog dialog) + { + if (MessageBox.Show(dialog, Properties.Resources.ListDeleteConfirmation, +"ILSpy", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No, MessageBoxOptions.None) != MessageBoxResult.Yes) + return; + manager.DeleteList(SelectedAssemblyList); + } + + private bool CanExecuteDelete(ManageAssemblyListsDialog _) + { + return selectedAssemblyList != null; + } + private void CreateDefaultAssemblyLists() { - if (!manager.AssemblyLists.Contains(DotNet4List)) - { + if (!manager.AssemblyLists.Contains(DotNet4List)) { AssemblyList dotnet4 = new AssemblyList(DotNet4List); AddToList(dotnet4, "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); AddToList(dotnet4, "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); @@ -85,14 +141,12 @@ namespace ICSharpCode.ILSpy AddToList(dotnet4, "PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); AddToList(dotnet4, "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); - if (dotnet4.assemblies.Count > 0) - { + if (dotnet4.assemblies.Count > 0) { manager.CreateList(dotnet4); } } - if (!manager.AssemblyLists.Contains(DotNet35List)) - { + if (!manager.AssemblyLists.Contains(DotNet35List)) { AssemblyList dotnet35 = new AssemblyList(DotNet35List); AddToList(dotnet35, "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); AddToList(dotnet35, "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); @@ -105,14 +159,12 @@ namespace ICSharpCode.ILSpy AddToList(dotnet35, "PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); AddToList(dotnet35, "WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); - if (dotnet35.assemblies.Count > 0) - { + if (dotnet35.assemblies.Count > 0) { manager.CreateList(dotnet35); } } - if (!manager.AssemblyLists.Contains(ASPDotNetMVC3List)) - { + if (!manager.AssemblyLists.Contains(ASPDotNetMVC3List)) { AssemblyList mvc = new AssemblyList(ASPDotNetMVC3List); AddToList(mvc, "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); AddToList(mvc, "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); @@ -139,8 +191,7 @@ namespace ICSharpCode.ILSpy AddToList(mvc, "System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); AddToList(mvc, "Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); - if (mvc.assemblies.Count > 0) - { + if (mvc.assemblies.Count > 0) { manager.CreateList(mvc); } } @@ -153,52 +204,5 @@ namespace ICSharpCode.ILSpy if (file != null) list.OpenAssembly(file); } - - private void CreateButton_Click(object sender, RoutedEventArgs e) - { - CreateListDialog dlg = new CreateListDialog(); - dlg.Owner = this; - dlg.Closing += (s, args) => - { - if (dlg.DialogResult == true) - { - if (manager.AssemblyLists.Contains(dlg.NewListName)) - { - args.Cancel = true; - MessageBox.Show("A list with the same name was found.", null, MessageBoxButton.OK); - } - } - }; - if (dlg.ShowDialog() == true) - { - manager.CreateList(new AssemblyList(dlg.NewListName)); - } - } - - private void DeleteButton_Click(object sender, RoutedEventArgs e) - { - if (listView.SelectedItem == null) - return; - if (MessageBox.Show(this, "Are you sure that you want to delete the selected assembly list?", -"ILSpy", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No, MessageBoxOptions.None) != MessageBoxResult.Yes) - return; - manager.DeleteList(listView.SelectedItem.ToString()); - } - - private void ResetButton_Click(object sender, RoutedEventArgs e) - { - if (MessageBox.Show(this, "Are you sure that you want to remove all assembly lists and recreate the default assembly lists?", - "ILSpy", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No, MessageBoxOptions.None) != MessageBoxResult.Yes) - return; - manager.ClearAll(); - CreateDefaultAssemblyLists(); - } - - private void listView_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) - { - if (e.ChangedButton == MouseButton.Left && listView.SelectedItem != null) - this.DialogResult = true; - } - } } diff --git a/ILSpy/ViewModels/ViewModelBase.cs b/ILSpy/ViewModels/ViewModelBase.cs new file mode 100644 index 000000000..e0aa4d6e7 --- /dev/null +++ b/ILSpy/ViewModels/ViewModelBase.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace ICSharpCode.ILSpy.ViewModels +{ + public abstract class ViewModelBase : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + protected void RaisePropertyChanged([CallerMemberName] string propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + } +} diff --git a/ILSpy/Views/ManageAssemblyLIstsDialog.xaml.cs b/ILSpy/Views/ManageAssemblyLIstsDialog.xaml.cs new file mode 100644 index 000000000..d57384d5b --- /dev/null +++ b/ILSpy/Views/ManageAssemblyLIstsDialog.xaml.cs @@ -0,0 +1,35 @@ +// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System.Windows; +using ICSharpCode.ILSpy.ViewModels; + +namespace ICSharpCode.ILSpy +{ + /// + /// Interaction logic for ManageAssemblyListsDialog.xaml + /// + public partial class ManageAssemblyListsDialog : Window + { + public ManageAssemblyListsDialog() + { + InitializeComponent(); + DataContext = new ManageAssemblyListsViewModel(); + } + } +} diff --git a/ILSpy/Views/ManageAssemblyListsDialog.xaml b/ILSpy/Views/ManageAssemblyListsDialog.xaml new file mode 100644 index 000000000..9db6d2a3c --- /dev/null +++ b/ILSpy/Views/ManageAssemblyListsDialog.xaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + +