Example #1
0
        private void OpenCommand_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog
            {
                Filter = "XML Files|*.xml"
            };

            try
            {
                if (dialog.ShowDialog() == true)
                {
                    itemsCtrl.ItemsSource = null;
                    LyricLines.Clear();
                    SymbolsAndWords.Clear();
                    ClearUndo();

                    LyricLine line   = new LyricLine();
                    var       vocals = XmlHelper.Deserialize <VocalsFile>(dialog.FileName);

                    foreach (Vocal voc in vocals)
                    {
                        line.Add(new RomajiLyric {
                            Vocal = voc
                        });
                        if (voc.Lyric.EndsWith("+"))
                        {
                            LyricLines.Add(line);
                            line = new LyricLine();
                        }
                    }

                    itemsCtrl.ItemsSource = LyricLines;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error opening file: " + Environment.NewLine + ex.Message,
                                "Error",
                                MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }
        }
Example #2
0
        public Boolean loadLyricsFile()
        {
            //try
            //{
            String path = lyricsFilepath;

            clearLyricsFile();
            if (path != "" && File.Exists(path))
            {
                this.setLyricsFilepath(path);
                // Création d'une instance de StreamReader pour permettre la lecture de notre fichier
                StreamReader streamReader = new StreamReader(lyricsFilepath);
                String       ligne        = streamReader.ReadLine();
                // Lecture de toutes les lignes et affichage de chacune sur la page
                while (ligne != null)
                {
                    ligne = ligne.Trim();
                    if (ligne.Length > 0)
                    {
                        if (!ligne.ToCharArray()[0].Equals('%'))
                        {
                            String[]  splitted  = ligne.Split(new Char[] { '&' });
                            LyricLine lyricLine = new LyricLine();
                            foreach (String syltext in splitted)
                            {
                                if (syltext.Length > 0)
                                {
                                    lyricLine.Add(new LyricSyl(syltext));
                                }
                            }
                            lyricList.Add(lyricLine);
                        }
                        else
                        {
                            if (ligne.Length >= 21 && ligne.Substring(0, 6).CompareTo("%color") == 0)
                            {
                                String[] splitter = ligne.Substring(6, ligne.Length - 6).Trim().Split(new Char[] { ' ' });
                                if (splitter.Length >= 3 &&
                                    splitter[0].Length >= 6 &&
                                    splitter[1].Length >= 6 &&
                                    splitter[2].Length >= 6)
                                {
                                    colorArray[0] = Color.FromArgb(
                                        int.Parse(splitter[0].Substring(4, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[0].Substring(3, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[0].Substring(0, 2), NumberStyles.HexNumber));
                                    colorArray[1] = Color.FromArgb(
                                        int.Parse(splitter[1].Substring(4, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[1].Substring(3, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[1].Substring(0, 2), NumberStyles.HexNumber));
                                    colorArray[2] = Color.FromArgb(
                                        int.Parse(splitter[2].Substring(4, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[2].Substring(3, 2), NumberStyles.HexNumber)
                                        , int.Parse(splitter[2].Substring(0, 2), NumberStyles.HexNumber));
                                    onColorChangedEvent.Invoke(this, new EventArgs());
                                }
                            }
                        }
                    }
                    ligne = streamReader.ReadLine();
                }
                // Fermeture du StreamReader (attention très important)
                streamReader.Close();
                return(true);
            }
            else
            {
                return(false);
            }

/*            }
 *          catch (Exception ex)
 *          {
 *              MessageBox.Show("Erreur de lecture du fichier : " + ex.Message);
 *              return false;
 *          }
 */
        }
Example #3
0
        internal void saveManualModifs(RichTextBox frameBox)
        {
            StringSplitOptions option = StringSplitOptions.RemoveEmptyEntries;

            String[] lineList = frameBox.Text.Split(new String[] { "\n", Environment.NewLine }, option);

            //List<LyricSyl> sylList = this.getSylList();
            Int32 cpt     = 0;
            int   linePos = 0;
            int   lineNum = 0;
            //int lineDec = 0;
            int sylNum  = -1;
            int beginAt = 0;
            //int sylDec = 0;
            String    line;
            LyricLine lyricLine       = null;
            LyricSyl  lyricSyl        = null;
            int       backCurrentLine = this.currentLine;
            int       backCurrentSyl  = (backCurrentLine < this.lyricList.Count ? lyricList[backCurrentLine].getCurrentSyl() : 0);

            clearLyrics();
            while (linePos < lineList.Length)
            {
                beginAt = 0;
                line    = lineList[linePos];

                if (line.Length == 0)
                {
                    //todo : cas vide
                }
                else if (line.ToCharArray()[0].Equals('%'))
                {
                    //TODO: cas information
                }
                else
                {
                    int      num;
                    String[] parts = line.Split(new Char[] { ' ' }, 5);
                    //recuperation de la ligne
                    if (parts.Length == 0 || !int.TryParse(parts[0], out num))
                    {
                        //creer une nouvele ligne
                        //lineDec ++;
                        lyricLine = new LyricLine();
                        lineNum   = 0;
                        lyricList.Add(lyricLine);
                        //sylDec = 0;
                        sylNum   = 0;
                        lyricSyl = new LyricSyl("");
                        lyricLine.Add(lyricSyl);
                    }
                    else
                    {
                        beginAt = 1;
                        if (num != lineNum)
                        {
                            //si on a changé de ligne
                            lyricLine = new LyricLine();
                            lineNum   = num;
                            lyricList.Add(lyricLine);
                            sylNum = 0;
                        }
                        if (lyricLine == null)
                        {
                            throw (new Exception("Erreur de parsing"));
                        }
                        //recuperation de la syllabe
                        if (parts.Length < 2 || !int.TryParse(parts[1], out num))
                        {
                            //creer une nouvele ligne
                            //sylDec ++;
                            lyricSyl = new LyricSyl("");
                            sylNum   = 0;
                            lyricLine.Add(lyricSyl);
                        }
                        else
                        {
                            beginAt = 2;
                            if (num != sylNum)
                            {
                                //si on a changé de sylabe
                                lyricSyl = new LyricSyl("");
                                sylNum   = num;
                                lyricLine.Add(lyricSyl);
                            }
                            if (lyricSyl == null)
                            {
                                throw (new Exception("Erreur de parsing"));
                            }


                            //recuperation des frames
                            if (parts.Length < 3 || !int.TryParse(parts[2], out num))
                            {
                                lyricSyl.setBeginFrame(0);
                            }
                            else
                            {
                                beginAt = 3;
                                //si on est sur la même syl on ne garde que la fin
                                if (lyricSyl.getBeginFrame() <= 0)
                                {
                                    lyricSyl.setBeginFrame(num);
                                }

                                if (parts.Length < 4 || !int.TryParse(parts[3], out num))
                                {
                                    lyricSyl.setEndFrame(0);
                                }
                                else
                                {
                                    beginAt = 4;
                                    lyricSyl.setEndFrame(num);
                                }
                            }
                        }
                    }
                    for (int i = beginAt; i < parts.Length; ++i)
                    {
                        //espace de fin de ligne
                        if (parts[i].Length == 0)
                        {
                            parts[i] = " ";
                        }
                        lyricSyl.setText(lyricSyl.getText() + parts[i]);
                    }
                }
                linePos++;
            }

            onFrameChangedEvent.Invoke(this, new EventArgs());//displayAllFrames();
            this.currentLine = backCurrentLine;
            if (currentLine < this.lyricList.Count)
            {
                lyricList[currentLine].setCurrentSyl(backCurrentSyl);
            }
            onCurrentLineChangedEvent.Invoke(this, new EventArgs());
            //displayCurrentLine(false);
        }
Example #4
0
        internal void saveManualModifs(RichTextBox frameBox)
        {
            StringSplitOptions option = StringSplitOptions.RemoveEmptyEntries;

            String[] lineList = frameBox.Text.Split(new String[] { "\n", Environment.NewLine }, option);

            //List<LyricSyl> sylList = this.getSylList();
            Int32 cpt = 0;
            int linePos = 0;
            int lineNum = 0;
            //int lineDec = 0;
            int sylNum = -1;
            int beginAt = 0;
            //int sylDec = 0;
            String line;
            LyricLine lyricLine = null;
            LyricSyl lyricSyl = null;
            int backCurrentLine = this.currentLine;
            int backCurrentSyl = (backCurrentLine < this.lyricList.Count ? lyricList[backCurrentLine].getCurrentSyl() : 0);
            clearLyrics();
            while (linePos < lineList.Length)
            {
                beginAt = 0;
                line = lineList[linePos];

                if (line.Length == 0)
                {
                    //todo : cas vide
                }
                else if (line.ToCharArray()[0].Equals('%'))
                {
                    //TODO: cas information
                }
                else
                {
                    int num;
                    String[] parts = line.Split(new Char[] { ' ' }, 5);
                    //recuperation de la ligne
                    if (parts.Length == 0 || !int.TryParse(parts[0], out num))
                    {
                        //creer une nouvele ligne
                        //lineDec ++;
                        lyricLine = new LyricLine();
                        lineNum = 0;
                        lyricList.Add(lyricLine);
                        //sylDec = 0;
                        sylNum = 0;
                        lyricSyl = new LyricSyl("");
                        lyricLine.Add(lyricSyl);

                    }
                    else
                    {
                        beginAt = 1;
                        if (num != lineNum)
                        {
                            //si on a changé de ligne
                            lyricLine = new LyricLine();
                            lineNum = num;
                            lyricList.Add(lyricLine);
                            sylNum = 0;
                        }
                        if (lyricLine == null)
                        {
                            throw (new Exception("Erreur de parsing"));
                        }
                        //recuperation de la syllabe
                        if (parts.Length < 2 || !int.TryParse(parts[1], out num))
                        {
                            //creer une nouvele ligne
                            //sylDec ++;
                            lyricSyl = new LyricSyl("");
                            sylNum = 0;
                            lyricLine.Add(lyricSyl);
                        }
                        else
                        {
                            beginAt = 2;
                            if (num != sylNum)
                            {
                                //si on a changé de sylabe
                                lyricSyl = new LyricSyl("");
                                sylNum = num;
                                lyricLine.Add(lyricSyl);
                            }
                            if (lyricSyl == null)
                            {
                                throw (new Exception("Erreur de parsing"));
                            }

                            //recuperation des frames
                            if (parts.Length < 3 || !int.TryParse(parts[2], out num))
                            {
                                lyricSyl.setBeginFrame(0);
                            }
                            else
                            {
                                beginAt = 3;
                                //si on est sur la même syl on ne garde que la fin
                                if (lyricSyl.getBeginFrame() <= 0)
                                    lyricSyl.setBeginFrame(num);

                                if (parts.Length < 4 || !int.TryParse(parts[3], out num))
                                {
                                    lyricSyl.setEndFrame(0);
                                }
                                else
                                {
                                    beginAt = 4;
                                    lyricSyl.setEndFrame(num);
                                }
                            }
                        }
                    }
                    for (int i = beginAt; i < parts.Length; ++i)
                    {
                        //espace de fin de ligne
                        if (parts[i].Length == 0)
                            parts[i] = " ";
                        lyricSyl.setText(lyricSyl.getText() + parts[i]);
                    }
                }
                linePos++;
            }

            onFrameChangedEvent.Invoke(this, new EventArgs());//displayAllFrames();
            this.currentLine = backCurrentLine;
            if (currentLine < this.lyricList.Count)
            {
                lyricList[currentLine].setCurrentSyl(backCurrentSyl);
            }
            onCurrentLineChangedEvent.Invoke(this, new EventArgs());
            //displayCurrentLine(false);
        }
Example #5
0
 public Boolean loadLyricsFile()
 {
     //try
     //{
         String path = lyricsFilepath;
         clearLyricsFile();
         if (path != "" && File.Exists(path))
         {
             this.setLyricsFilepath(path);
             // Création d'une instance de StreamReader pour permettre la lecture de notre fichier
             StreamReader streamReader = new StreamReader(lyricsFilepath);
             String ligne = streamReader.ReadLine();
             // Lecture de toutes les lignes et affichage de chacune sur la page
             while (ligne != null)
             {
                 ligne = ligne.Trim();
                 if (ligne.Length > 0)
                 {
                     if (!ligne.ToCharArray()[0].Equals('%'))
                     {
                         String[] splitted = ligne.Split(new Char[] { '&' });
                         LyricLine lyricLine = new LyricLine();
                         foreach (String syltext in splitted)
                         {
                             if (syltext.Length > 0)
                             {
                                 lyricLine.Add(new LyricSyl(syltext));
                             }
                         }
                         lyricList.Add(lyricLine);
                     }
                     else
                     {
                         if (ligne.Length >= 21 && ligne.Substring(0, 6).CompareTo("%color") == 0)
                         {
                             String[] splitter = ligne.Substring(6, ligne.Length - 6).Trim().Split(new Char[] { ' ' });
                             if (splitter.Length >= 3
                                 && splitter[0].Length >= 6
                                 && splitter[1].Length >= 6
                                 && splitter[2].Length >= 6)
                             {
                                 colorArray[0] = Color.FromArgb(
                                     int.Parse(splitter[0].Substring(4, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[0].Substring(3, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[0].Substring(0, 2), NumberStyles.HexNumber));
                                 colorArray[1] = Color.FromArgb(
                                     int.Parse(splitter[1].Substring(4, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[1].Substring(3, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[1].Substring(0, 2), NumberStyles.HexNumber));
                                 colorArray[2] = Color.FromArgb(
                                     int.Parse(splitter[2].Substring(4, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[2].Substring(3, 2), NumberStyles.HexNumber)
                                     , int.Parse(splitter[2].Substring(0, 2), NumberStyles.HexNumber));
                                 onColorChangedEvent.Invoke(this, new EventArgs());
                             }
                         }
                     }
                 }
                 ligne = streamReader.ReadLine();
             }
             // Fermeture du StreamReader (attention très important)
             streamReader.Close();
             return true;
         }
         else
             return false;
     /*            }
     catch (Exception ex)
     {
         MessageBox.Show("Erreur de lecture du fichier : " + ex.Message);
         return false;
     }
         */
 }