//Добавление трека в галлерею private void AddPanel_Click(object sender, EventArgs e) { //получаем данные трека(если файл не выбран, то получим тройку пустых строк) try { Tuple <string, string, string> fileData = InterfaceFuncs.GetAndAddData(projectPath + @"sheet.exe", projectPath + @"Resources\\Sheets", libPath); if (fileData.Item1 == "") { return; } //проверяем, что трека с таким названием нету foreach (Tuple <int, string, string, string> libFileInfo in libfileList) { if (libFileInfo.Item3.ToLower().Contains(fileData.Item2.ToLower())) { MessageBox.Show("Файл с таким названием уже есть"); return; } } //Добавляем информацию по треку в текстовый файл, в котором хранится информация по всем трекам AddtxtLib(fileData); //Добавляем информацию по треку в оба списка треков(общий и отображаемый) Tuple <int, string, string, string> fileInfo = new Tuple <int, string, string, string>(libfileList.Count, fileData.Item1, fileData.Item2, fileData.Item3); libfileList.Add(fileInfo); curfiles.Add(fileInfo); //отображаем трек ShowTrack(fileInfo.Item1, fileInfo.Item2, fileInfo.Item3, fileInfo.Item4); } catch (System.IO.IOException ex) { MessageBox.Show("Не удалось записать файл, возможно, он уже существует"); } }
public SheetViewer(string sheet_path, string sheet_name) { if (!InterfaceFuncs.IsSheetGenerated(sheet_path, sheet_name)) { throw new System.IO.FileNotFoundException("Наш генератор не смог справиться с мощью ваших нот!"); } sheet_lists = new List <string>(); foreach (var list in System.IO.Directory.GetFiles(sheet_path)) { if (list.Contains(sheet_name)) { sheet_lists.Add(list); } } sheet_lists.Sort(); InitializeComponent(); current = 0; Image img; using (var bmpTemp = new Bitmap(sheet_lists[current])) img = new Bitmap(bmpTemp); pictureBox1.BackgroundImage = img; pictureBox1.Height = img.Height; pictureBox1.Width = img.Width; }
//Удаление трека из списка по индексу private void deleteTrack(int i) { InterfaceFuncs.Sheets_Flush(curfiles[i].Item3, projectPath + "\\Resources\\Sheets"); string filename = ""; //Удаляем информацию из списков curfiles и libfileList foreach (Tuple <int, string, string, string> fileInfo in curfiles) { if (fileInfo.Item1 == i) { filename = fileInfo.Item3; curfiles.Remove(fileInfo); break; } } foreach (Tuple <int, string, string, string> fileInfo in libfileList) { if (fileInfo.Item1 == i) { libfileList.Remove(fileInfo); break; } } //удаляем файл .dat File.Delete(libPath + @"\" + filename + ".dat"); //Обновляем информацию о треках в файле lib.txt InterfaceFuncs.catalog_inform_refresh(libPath + @"\lib.txt", libPath); //Удаляем элементы формы трека deletePanels(i); selectedFileIndex = -1; selectedFileName = ""; labelSongName.Text = ""; }
//Принимает директории на генератор нот, на запакованный файл, и на хранилище нот, после чего генерирует ноты и добавляет их в указанную папку. public static void CreateSheet(string engien_path, string data_path, string sheet_path) { var work_path = Regex.Replace(data_path, @"\s", "_"); var smooth_path = Regex.Replace(work_path, "_", " "); var name = InterfaceFuncs.GetFileName(work_path); File.Move(data_path, work_path); var sheetMaker = new ProcessStartInfo(engien_path, $"{work_path} {name}"); sheetMaker.WindowStyle = ProcessWindowStyle.Hidden; sheetMaker.RedirectStandardOutput = true; sheetMaker.UseShellExecute = false; sheetMaker.CreateNoWindow = true; Process procCommand = Process.Start(sheetMaker); procCommand.WaitForExit(); foreach (var line in Directory.GetFiles(engien_path.Remove(engien_path.Length - 9, 9) + "bin\\Release")) { if (Regex.IsMatch(line, ".png")) { var dest = $@"{sheet_path}\{Regex.Match(line, @"[\\]+[^\\]+.png").Value.Remove(0, 1)}"; try { File.Move(line, dest); } catch (IOException e) { } } } foreach (var line in Directory.GetFiles(sheet_path)) { File.Move(line, Regex.Replace(line, "_", " ")); } File.Move(work_path, smooth_path); }
//При загрузке формы устанавливаем цвета для элементов и выводим все треки из галлереи private void LibForm_Load(object sender, EventArgs e) { InterfaceFuncs.catalog_inform_refresh(libPath + @"\lib.txt", libPath); flowLayoutPanel1.BackColor = backColor1; this.BackColor = backColor2; searchTextBox.BackColor = backColor1; flowLayoutPanel2.BackColor = backColor2; TrackListPanel.BackColor = backColor1; //заполняем списки curfiles и libFileList(при создании формы они одинаковы) GetTracksFromLib(); //выводим треки из списка curfiles ShowTracks(); }
//Открываем форму с пианино, передав ей путь к треку как параметр private void BeginPictureBox_Click(object sender, EventArgs e) { filepath = ""; this.Hide(); LibForm libForm = new LibForm(false); AddOwnedForm(libForm); libForm.ShowDialog(); if (starting && filepath != "") { InterfaceFuncs.Base_Library_Call(filepath, speed, image, clNote1, clNote2); } this.Show(); }
//Принимает директории на генератор нот, на хранилище нот, и на хранилище запакованных партитур, после чего генерирует необходимые файлы и добавляет их по указанным директориям // возвращает тройку пустых значений, если файл не был выбран public static Tuple <String, String, String> GetAndAddData(string engien_path, string sheet_path, string data_storage_path) { string midi_data_path = null; using (var dialog = new OpenFileDialog()) { if (dialog.ShowDialog() == DialogResult.OK) { midi_data_path = dialog.FileName; if (!Is_mid(midi_data_path)) { //throw new FormatException("Выбранный файл не является midi!"); MessageBox.Show("Выбранный файл не является midi!"); return(Tuple.Create("", "", "")); } CreateSheet(engien_path, midi_data_path, sheet_path); midi_data_path = Regex.Replace(midi_data_path, "_", " "); try { MIDIFuncs.SaveToData(new MIDINotesData(midi_data_path), $@"{data_storage_path}\{InterfaceFuncs.GetFileName(midi_data_path)}"); return(Tuple.Create(GetDate(), GetFileName(midi_data_path), MIDIFuncs.GetDuration(midi_data_path))); } catch (NotEnoughBytesException e) { MessageBox.Show("Входной файл имеет недопустимую для обработки внутреннюю конфигурацию", e.Message, MessageBoxButtons.OK, MessageBoxIcon.Stop); } } } return(Tuple.Create("", "", "")); }