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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ILSpy/Views/OpenListDialog.xaml b/ILSpy/Views/OpenListDialog.xaml
deleted file mode 100644
index 99c5864e1..000000000
--- a/ILSpy/Views/OpenListDialog.xaml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file