bool SaveAs()
        {
            if (ProgramProvider.Program == null)
            {
                return(true);
            }
            var filename = FilenameProvider.GetSaveFileName(Resources.Strings.TitleBarViewModel_SaveProgramAs);

            if (!string.IsNullOrEmpty(filename))
            {
                return(false);
            }

            Mouse.OverrideCursor = Cursors.Wait;
            var result = ProgramAccessor.Save(filename, ProgramProvider.Program);

            Mouse.OverrideCursor = null;

            if (result)
            {
                StatusUpdateProvider.Publish(string.Format(Resources.Strings.TitleBarViewModel_SavedProgramAs, ProgramProvider.Program.FileName));
                return(true);
            }
            StatusUpdateProvider.Publish(string.Format(Resources.Strings.TitleBarViewModel_CouldNotSaveProgram, ProgramProvider.Program.FileName));
            return(false);
        }
        bool EnsureSaved()
        {
            if (ProgramProvider.Program == null || ProgramProvider.Program.IsModified == false)
            {
                return(true);
            }

            var fileName = "Untitled";

            if (ProgramProvider.Program != null && !string.IsNullOrEmpty(ProgramProvider.Program.FileName))
            {
                fileName = Path.GetFileName(ProgramProvider.Program.FileName);
            }
            var title    = string.Format(Resources.Strings.TitleBarViewModel_DoYouWantToSave, fileName);
            var filename = FilenameProvider.GetSaveFileName(title, fileName);

            return(!string.IsNullOrEmpty(filename) && Save());
        }