/// <summary> /// Событие изменения файла проекта /// </summary> public virtual void ProjectEntryEvent(Project.Entry en, Project.FileEvent ev) { if (en == File) { switch (ev) { case Project.FileEvent.Created: case Project.FileEvent.Modified: if (!saving) { MainForm.FocusEditor(this); DialogResult dr = MessageDialog.Show(ControlStrings.TabReloadTitle, ControlStrings.TabReloadText, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { Load(); Saved = true; } else { Saved = false; } } break; case Project.FileEvent.Renamed: UpdateTitle(); break; case Project.FileEvent.Deleted: MainForm.CloseEditor(this, true); closed = true; break; } } }
/// <summary> /// Изменение имени файла /// </summary> /// <param name="e">Файл для переименовывания</param> /// <param name="newName">Новое имя</param> /// <returns>True если файл переименован</returns> public static bool RenameItem(Project.Entry e, string newName) { if (newName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) { return(false); } if (newName != e.Name) { string oldfull = e.FullPath; byte[] meta = null; if (newName.ToLower() != e.Name.ToLower()) { meta = e.Meta; e.Meta = null; } e.Name = newName; e.Icon = Preview.Get(e.FullPath); if (meta != null) { e.Meta = meta; } File.Move(oldfull, e.FullPath); MainForm.ProjectEntryEvent(e, FileEvent.Renamed); } return(true); }
/// <summary> /// Создание из файла /// </summary> /// <param name="file">Путь до файла</param> public static Editor Create(Project.Entry entry) { string ext = System.IO.Path.GetExtension(entry.Name).ToLower(); if (Associations != null) { if (Associations.ContainsKey(ext)) { // Создание редактора Type t = Associations[ext]; Editor e = Activator.CreateInstance(t) as Editor; e.File = entry; // Создание окна Type ft = ContentForms[t]; e.Form = Activator.CreateInstance(ft) as BaseForm; e.Form.FileEditor = e; // Загрузка e.Load(); return(e); } } return(null); }
/// <summary> /// Можно ли изменять данный файл в инспекторе /// </summary> /// <param name="d"></param> /// <returns></returns> public static bool OperableFile(object d) { if (d is Project.Entry) { Project.Entry e = d as Project.Entry; if (e.Name.EndsWith(".sbproject")) { return(false); } } return(true); }
/// <summary> /// Удаление файла /// </summary> /// <returns>True если файл удалён</returns> public static bool DeleteEntry(Project.Entry e) { // Удаление записи File.Delete(e.FullPath); e.Deleted = true; List <Project.Entry> files = new List <Entry>(e.Parent.Entries); if (files.Contains(e)) { files.Remove(e); } e.Parent.Entries = files.ToArray(); // Событие окна MainForm.ProjectEntryEvent(e, FileEvent.Deleted); return(true); }