private void OnRequestCloseProgramMessage(RequestCloseProgramMessage closeMessage)
        {
            if (files.Any(f => f.IsExecuting))
            {
                MessengerInstance.Send(new ClosingWhenExecutingMessage());
                closeMessage.Execute(false);
                return;
            }

            var notSavedFiles = Files
                                .Where(f => !f.IsSaved)
                                .ToList();

            if (notSavedFiles.Count == 0)
            {
                closeMessage.Execute(true);
                return;
            }

            MessengerInstance.Send(new SaveBeforeCloseMessage(
                                       notSavedFiles.Select(f => new WorkflowFileInfo(f)).ToList(),
                                       null,
                                       result =>
            {
                if (result == QuestionResult.Cancel)
                {
                    closeMessage.Execute(false);
                }
                else if (result == QuestionResult.Yes)
                {
                    foreach (var notSavedFile in notSavedFiles)
                    {
                        var r = notSavedFile.Save();

                        if (!r)
                        {
                            closeMessage.Execute(false);
                            return;
                        }
                    }
                }

                closeMessage.Execute(true);
            }));
        }
Example #2
0
        private void OnRequestCloseProgramMessage(RequestCloseProgramMessage closeMessage)
        {
            if (files.Any(f => f.IsExecuting))
            {
                MessengerInstance.Send(new ClosingWhenExecutingMessage());
                closeMessage.Execute(false);
                return;
            }

            var notSavedFiles = Files
                .Where(f => !f.IsSaved)
                .ToList();

            if (notSavedFiles.Count == 0)
            {
                closeMessage.Execute(true);
                return;
            }

            MessengerInstance.Send(new SaveBeforeCloseMessage(
                notSavedFiles.Select(f => new WorkflowFileInfo(f)).ToList(),
                null,
                result =>
                {
                    if (result == QuestionResult.Cancel)
                    {
                        closeMessage.Execute(false);
                    }
                    else if (result == QuestionResult.Yes)
                    {
                        foreach (var notSavedFile in notSavedFiles)
                        {
                            var r = notSavedFile.Save();

                            if (!r)
                            {
                                closeMessage.Execute(false);
                                return;
                            }
                        }
                    }

                    closeMessage.Execute(true);
                }));
        }