public FileHandler() { this._fileSaverFactory = new FileSaverFactory(this); this.State = new MusicEditingState(this); this.Originator = new Originator(); this.CareTaker = new Caretaker(); this.WPFStaffs = new List <MusicalSymbol>(); }
public static StringSaverFactory GetFactory(StringSavingTypes saverType) //прочитать про паттерн абстрактная фабрика и применить { StringSaverFactory factory; switch (saverType) { case StringSavingTypes.ConsoleSaver: factory = new ConsoleSaverFactory(); break; case StringSavingTypes.FileSaver: factory = new FileSaverFactory(); break; default: throw new InvalidDataException("Wrong operator type"); } return(factory); }
public void Save(string fileName, string text) { string withoutExtension = Path.GetFileNameWithoutExtension(fileName); string tmpFileName = $"{fileName}-tmp.ly"; var lilypondSaver = new FileSaverFactory(null).Get(".ly"); lilypondSaver.Save(tmpFileName, text); string lilypondLocation = @"C:\Program Files (x86)\LilyPond\usr\bin\lilypond.exe"; string sourceFolder = Path.GetDirectoryName(tmpFileName); string sourceFileName = Path.GetFileNameWithoutExtension(tmpFileName); string targetFolder = Path.GetDirectoryName(fileName); string targetFileName = Path.GetFileNameWithoutExtension(fileName); var process = new Process { StartInfo = { WorkingDirectory = sourceFolder, WindowStyle = ProcessWindowStyle.Hidden, Arguments = String.Format("--pdf \"{0}\\{1}.ly\"", sourceFolder, sourceFileName), FileName = lilypondLocation } }; process.Start(); while (!process.HasExited) /* Wait for exit */ { } if (sourceFolder != targetFolder || sourceFileName != targetFileName) { File.Move(sourceFolder + "\\" + sourceFileName + ".pdf", targetFolder + "\\" + targetFileName + ".pdf"); File.Delete(tmpFileName); } }