コード例 #1
0
ファイル: LibForm.cs プロジェクト: Amalgam-Cloud/Octavium
 //Добавление трека в галлерею
 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("Не удалось записать файл, возможно, он уже существует");
     }
 }
コード例 #2
0
ファイル: SheetViewer.cs プロジェクト: Amalgam-Cloud/Octavium
        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;
        }
コード例 #3
0
ファイル: LibForm.cs プロジェクト: Amalgam-Cloud/Octavium
        //Удаление трека из списка по индексу
        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 = "";
        }
コード例 #4
0
        //Принимает директории на генератор нот, на запакованный файл, и на хранилище нот, после чего генерирует ноты и добавляет их в указанную папку.
        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);
        }
コード例 #5
0
ファイル: LibForm.cs プロジェクト: Amalgam-Cloud/Octavium
 //При загрузке формы устанавливаем цвета для элементов и выводим все треки из галлереи
 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();
 }
コード例 #6
0
        //Открываем форму с пианино, передав ей путь к треку как параметр
        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();
        }
コード例 #7
0
        //Принимает директории на генератор нот, на хранилище нот, и на хранилище запакованных партитур, после чего генерирует необходимые файлы и добавляет их по указанным директориям
        // возвращает тройку пустых значений, если файл не был выбран
        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("", "", ""));
        }