Пример #1
0
        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();
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
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();
                }
            }
        }
Пример #4
0
 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) } %";
 }