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>();
 }
示例#2
0
        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);
            }
        }