public GuiController(IGuiForm f, string initialFile) { // This circular reference is a little aggressive here, but we need the form's // controller to be set immediately for our CreateNew call. This is all // evidence that things are coupled quite a bit tighter than they should be. this.f = f; f.c = this; UnbindSong(); CreateNew(); if (!System.IO.File.Exists(initialFile)) { return; } File = new FileInfo(initialFile); if (LinkExtensions.Contains(File.Extension.ToLower())) { File = new FileInfo(WindowsShell.Shortcut.Resolve(initialFile)); } using (FileStream input = File.OpenRead()) Metadata = new MetadataFile(input); WipeSelection(); Dirty = false; }