Exemple #1
0
 public ReadOnlyFile(MemoryStream initialContent, FileInfo path, UpToDateFile.BackEnd backEnd)
 {
     m_upToDateFile              = new UpToDateFile(initialContent, path, s => { }, backEnd);
     m_backEnd                   = backEnd;
     m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
     m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
 }
Exemple #2
0
        public bool Move(FileInfo path, Func <bool> replace)
        {
            var oldFile = File;

            if (path.Exists)
            {
                if (replace())
                {
                    path.Delete();
                }
                else
                {
                    return(false);
                }
            }

            var stream = m_upToDateFile.Migrate();

            m_upToDateFile.Dispose();
            System.IO.File.Move(oldFile.FullName, path.FullName);
            m_upToDateFile              = new UpToDateFile(stream, path, s => { });
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Moved.Execute(oldFile, File);
            return(true);
        }
Exemple #3
0
        public bool Move(FileInfo newPath, Func <bool> replace)
        {
            var oldFile = File;

            if (newPath.Exists)
            {
                if (replace())
                {
                    newPath.Delete();
                }
                else
                {
                    return(false);
                }
            }
            var stream = m_upToDateFile.Migrate();

            newPath.Directory.EnsureExists(); //This can fail (returning false) if it does then we subsequently get a (hopefully) useful exception from File.Move
            System.IO.File.Move(File.FullName, newPath.FullName);
            m_upToDateFile.Dispose();
            m_upToDateFile              = new UpToDateFile(stream, newPath, m_saveTo, m_backEnd);
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Moved.Execute(new Changed <FileInfo>(oldFile, File));
            return(true);
        }
Exemple #4
0
 public SaveableFile(MemoryStream initialContent, FileInfo path, Action <Stream> saveTo)
 {
     m_upToDateFile              = new UpToDateFile(initialContent, path, saveTo);
     m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
     m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
     m_saveTo            = saveTo;
     m_lastSavedOrLoaded = initialContent;
 }
Exemple #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="initialContent">Represents the current contents of the file. Reference is not held. A copy is made.</param>
 /// <param name="path"></param>
 /// <param name="saveTo"></param>
 protected SaveableFile(MemoryStream initialContent, FileInfo path, Action <Stream> saveTo, UpToDateFile.BackEnd backEnd)
 {
     m_upToDateFile              = new UpToDateFile(initialContent, path, saveTo, backEnd);
     m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
     m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
     m_saveTo  = saveTo;
     m_backEnd = backEnd;
 }
Exemple #6
0
        public void GotMoved(FileInfo newPath)
        {
            var oldFile = File;

            m_upToDateFile              = new UpToDateFile(m_upToDateFile.Migrate(), newPath, s => { });
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Moved.Execute(oldFile, File);
        }
Exemple #7
0
        public void GotMoved(FileInfo newPath)
        {
            var oldFile = File;

            m_upToDateFile              = new UpToDateFile(m_upToDateFile.Migrate(), newPath, m_saveTo, m_backEnd);
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Moved.Execute(new Changed <FileInfo>(oldFile, File));
        }
Exemple #8
0
        public void SaveAs(FileInfo path)
        {
            var oldPath = File;

            m_upToDateFile.Dispose();
            m_upToDateFile              = new UpToDateFile(new MemoryStream(), path, m_saveTo);
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Save();
            Moved.Execute(oldPath, File);
        }
Exemple #9
0
        public void SaveAs(FileInfo path)
        {
            var oldPath = File;

            m_upToDateFile.Dispose();
            using (MemoryStream m = new MemoryStream())
            {
                m_upToDateFile = new UpToDateFile(m, path, m_saveTo, m_backEnd);
            }
            m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
            m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
            Save();
            Moved.Execute(new Changed <FileInfo>(oldPath, File));
        }
Exemple #10
0
 public void RaiseFileModifiedEvent()
 {
     FileModifiedExternally?.Invoke(this, EventArgs.Empty);
 }
Exemple #11
0
 public ReadonlyFile(MemoryStream initialContent, FileInfo path)
 {
     m_upToDateFile              = new UpToDateFile(initialContent, path, s => { });
     m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute();
     m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute();
 }
 public void RaiseFileModifiedEvent()
 {
     FileModifiedExternally?.Invoke(this, new EventArgs());
 }