public void prepareScript(StreamReader streamReader) { Reset(); string contentLine = null; Script.ScriptTopic scriptTopic = new Script.ScriptTopic(); while ((contentLine = streamReader.ReadLine()) != null) { if (string.IsNullOrEmpty(contentLine)) { continue; } if (ScriptAttributes.TOPIC_PATTERN.IsMatch(contentLine)) { Script.createTopic(scriptTopic = new Script.ScriptTopic(contentLine.Replace("[topico]", "").Trim())); } else if (ScriptAttributes.LINE_PATTERN.IsMatch(contentLine)) { scriptTopic.addLine(contentLine.Replace(">", "").Replace("[instructor]", Settings.Default.nickname).Trim()); } else if (ScriptAttributes.IDENTIFICATION_PATTERN.IsMatch(contentLine)) { contentLine = contentLine.Replace("[script]", "").Trim(); ResetText(); Text = $"Script | {contentLine}"; } else if (!ScriptAttributes.COMMENT_PATTERN.IsMatch(contentLine)) { MetroMessageBox.Show(this, "Verifique a estrutura do script e tente novamente.", "Ocorreu um erro ao importar script", MessageBoxButtons.OK, MessageBoxIcon.Error); streamReader.Close(); Reset(); return; } } fillMetroTopicBox(); streamReader.Close(); }
public void fillRichScriptBox() { richScriptBoxContainer.Text = ""; if (metroTopicComboBox.Items.Count > 0) { if (metroTopicComboBox.SelectedIndex != -1) { Script.ScriptTopic currentScriptTopic = Script.scriptTopics[metroTopicComboBox.SelectedIndex]; if (currentScriptTopic != null) { addLineToRichScriptBox($"\n{currentScriptTopic.topicTitle}"); foreach (Script.ScriptTopic.ScriptLine scriptLine in currentScriptTopic.getTopicLines()) { addLineToRichScriptBox($"\n{(ScriptAttributes.STOP_PATTERN.IsMatch(scriptLine.getLine()) ? "[Pausa agendada]" : scriptLine.getLine())}"); } } updateProgress(0); } } }
private void sendMessage() { Script.ScriptTopic currentScriptTopic = Script.scriptTopics[metroTopicComboBox.SelectedIndex]; string _currentLine = string.Empty; if (Script.CURRENT_LINE <= currentScriptTopic.getTopicLines().Count - 1) { _currentLine = currentScriptTopic.getTopicLines()[Script.CURRENT_LINE].getLine(); if (Script.SHOULD_SEND_TITLE_PHRASE) { _currentLine = currentScriptTopic.topicTitle; Script.SHOULD_SEND_TITLE_PHRASE = false; } else { // Increment script current line Script.CURRENT_LINE++; } if (ScriptAttributes.STOP_PATTERN.IsMatch(_currentLine)) { btnPause.PerformClick(); WindowState = FormWindowState.Normal; return; } else { SendKeys.Send(Utils.formatSpecialLineCharacters(_currentLine)); SendKeys.Send("+{Enter}"); } // Update script topic progress updateProgress(); } else { btnPause.PerformClick(); WindowState = FormWindowState.Normal; MetroMessageBox.Show(this, $"Parabéns {Settings.Default.nickname}, este tópico foi finalizado com sucesso! Selecione o próximo para começar.", "Tópico finalizado", MessageBoxButtons.OK, MessageBoxIcon.Information); try { metroTopicComboBox.SelectedIndex = metroTopicComboBox.SelectedIndex + 1; } catch { int numberOfTopicItems = metroTopicComboBox.Items.Count; if (metroTopicComboBox.SelectedIndex + 1 == numberOfTopicItems) { metroTopicComboBox.SelectedIndex = 0; } } finally { // Reset current script line ResetTopic(); } } }
public void updateProgress(int initialValue = 1) { Script.ScriptTopic currentScriptTopic = Script.scriptTopics[metroTopicComboBox.SelectedIndex]; labelProgress.Text = $"{initialValue * Math.Floor((double)(Script.CURRENT_LINE) / currentScriptTopic.getTopicLines().Count * 100) } %"; }