public bool CreateEmptyFileWithType(Type tt) { ViewableFile vv = new ViewableFile(new EFEDiskFile(), tt, true); ViewedFiles.Add(vv); vv.DialogClosing += new ViewableFile.DialogClosingEventHandler(v_DialogClosing); vv.ShowDialog(Application.OpenForms[0]); foreach (var v in ViewedFiles) { if (vv != v && v.Dialog is IUseOtherFiles) ((IUseOtherFiles)v.Dialog).FileOpened(vv); } return true; }
public bool OpenFile(EFEFile File, EFEFile Parent = null) { foreach (var v in ViewedFiles) { if (v.File.Equals(File)) { MessageBox.Show("This file has already been opened!"); ((Form1)Application.OpenForms[0]).BringMDIWindowToFront(v.Dialog); return false; } } Type[] formats = GetPossibleFormats(File); if (formats.Length == 0) return false; List<Type> Viewables = new List<Type>(); foreach (Type t in formats) { if (t.GetInterfaces().Contains(typeof(IViewable))) Viewables.Add(t); } Type tt; if (Viewables.Count == 0) return false; else if (Viewables.Count == 1) tt = Viewables[0]; else { MessageBox.Show("Multiple types match!"); return false; } ViewableFile vv = new ViewableFile(File, tt); ViewedFiles.Add(vv); vv.DialogClosing += new ViewableFile.DialogClosingEventHandler(v_DialogClosing); vv.ShowDialog(Application.OpenForms[0]); if (Parent != null) { File.Parent = Parent; Parent.Children.Add(File); } foreach (var v in ViewedFiles) { if (vv != v && v.Dialog is IUseOtherFiles) ((IUseOtherFiles)v.Dialog).FileOpened(vv); } return true; }