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); } }
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; * } */ }
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); }
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); }
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; } */ }