private void WindowClosed(object sender, EventArgs e)
{
//There will be chances that WindowsClosed is called but WindowClosing is not called.
//This is to ensure PerformShutdownSequence is always called on the view model.
if (!isPSSCalledOnViewModelNoCancel)
{
PerformShutdownSequenceOnViewModel();
}
dynamoViewModel.Model.RequestLayoutUpdate -= vm_RequestLayoutUpdate;
dynamoViewModel.RequestViewOperation -= DynamoViewModelRequestViewOperation;
//PACKAGE MANAGER
dynamoViewModel.RequestPackagePublishDialog -= DynamoViewModelRequestRequestPackageManagerPublish;
dynamoViewModel.RequestManagePackagesDialog -= DynamoViewModelRequestShowInstalledPackages;
dynamoViewModel.RequestPackageManagerSearchDialog -= DynamoViewModelRequestShowPackageManagerSearch;
dynamoViewModel.RequestPackagePathsDialog -= DynamoViewModelRequestPackagePaths;
//FUNCTION NAME PROMPT
dynamoViewModel.Model.RequestsFunctionNamePrompt -= DynamoViewModelRequestsFunctionNamePrompt;
//Preset Name Prompt
dynamoViewModel.Model.RequestPresetsNamePrompt -= DynamoViewModelRequestPresetNamePrompt;
dynamoViewModel.RequestPresetsWarningPrompt -= DynamoViewModelRequestPresetWarningPrompt;
dynamoViewModel.RequestClose -= DynamoViewModelRequestClose;
dynamoViewModel.RequestSaveImage -= DynamoViewModelRequestSaveImage;
dynamoViewModel.SidebarClosed -= DynamoViewModelSidebarClosed;
DynamoSelection.Instance.Selection.CollectionChanged -= Selection_CollectionChanged;
dynamoViewModel.RequestUserSaveWorkflow -= DynamoViewModelRequestUserSaveWorkflow;
if (dynamoViewModel.Model != null)
{
dynamoViewModel.Model.RequestsCrashPrompt -= Controller_RequestsCrashPrompt;
dynamoViewModel.Model.RequestTaskDialog -= Controller_RequestTaskDialog;
dynamoViewModel.Model.ClipBoard.CollectionChanged -= ClipBoard_CollectionChanged;
}
//ABOUT WINDOW
dynamoViewModel.RequestAboutWindow -= DynamoViewModelRequestAboutWindow;
//SHOW or HIDE GALLERY
dynamoViewModel.RequestShowHideGallery -= DynamoViewModelRequestShowHideGallery;
foreach (var ext in viewExtensionManager.ViewExtensions)
{
try
{
ext.Shutdown();
}
catch (Exception exc)
{
Log(ext.Name + ": " + exc.Message);
}
}
viewExtensionManager.MessageLogged -= Log;
}