/// <summary> /// Opens a file. /// TODO: Remove the switch cases and delegate. /// TODO: Remove the knowledge of filetypes. What if we want to support MusicXML later? /// TODO: Remove the calling of the outer viewmodel layer. We want to be able reuse this in an ASP.NET Core application for example. /// </summary> /// <param name="fileName"></param> public void OpenFile(string fileName) { var mem = new LilyPondFileHandler(new LilyPondInterpreter(new LilyPondNoteFactory())); var pol = mem.loadFile(fileName); //if (Path.GetExtension(fileName).EndsWith(".mid")) //{ // MidiSequence = new Sequence(); // MidiSequence.Load(fileName); // MidiPlayerViewModel.MidiSequence = MidiSequence; // this.LilypondText = LoadMidiIntoLilypond(MidiSequence); // this.LilypondViewModel.LilypondTextLoaded(this.LilypondText); //} //else if (Path.GetExtension(fileName).EndsWith(".ly")) //{ // StringBuilder sb = new StringBuilder(); // foreach (var line in File.ReadAllLines(fileName)) // { // sb.AppendLine(line); // } // this.LilypondText = sb.ToString(); // this.LilypondViewModel.LilypondTextLoaded(this.LilypondText); //} //else //{ // throw new NotSupportedException($"File extension {Path.GetExtension(fileName)} is not supported."); //} //LoadLilypondIntoWpfStaffsAndMidi(LilypondText); }
public FileHandleFacade() { var lilyPondFileHandler = new LilyPondFileHandler(new LilyPondInterpreter(new LilyPondNoteFactory())); var midiFileHandler = new MidiFileHandler(new MidiInterpreter()); var pdfFileHandler = new PdfFileHandler(); handlers = new List <GenericHandler> { lilyPondFileHandler, midiFileHandler, pdfFileHandler }; OwnEventmanager.Manager.Subscribe("reRender", RegenerateBasedOnEditor); }