示例#1
0
 private void runToolStripMenuItem1_Click(object sender, EventArgs e)
 {
     try
     {
         if (isEditorMode)
         {
             if (isOutputShow)
             {
                 op.Activate();
             }
             else
             {
                 isOutputShow = true;
                 op           = new Output();
                 op.Show();
             }
             run(MainrichTextBox.Text, sender, e, op.OutputrichTextBox);
         }
         else
         {
             run(MainrichTextBox.Lines[line - 1], sender, e);
         }
     }
     catch (IndexOutOfRangeException)
     {
     }
     catch (Exception er)
     {
         MainrichTextBox.AppendText("\n" + er.Message);
     }
 }
示例#2
0
 private void editorModeToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (editorModeToolStripMenuItem.Checked == true)
     {
         isEditorMode = false;
         editorModeToolStripMenuItem.Checked = false;
         openToolStripMenuItem.Enabled       = false;
         LabelExplain.Text = "";
         if (MainrichTextBox.Text != "")
         {
             DialogResult Result =
                 MessageBox.Show("是否保存", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
             if (Result == DialogResult.Yes)
             {
                 saveToolStripMenuItem_Click(sender, e);
             }
         }
         MainrichTextBox.Clear();
     }
     else
     {
         isEditorMode = true;
         editorModeToolStripMenuItem.Checked = true;
         MainrichTextBox.Clear();
         openToolStripMenuItem.Enabled = true;
         LabelExplain.Text             = "   当前处于编辑器模式,若要执行请按\"Ctrl+Enter\"";
     }
 }
示例#3
0
        private void CurrentState()
        {
            int index = MainrichTextBox.GetFirstCharIndexOfCurrentLine();

            line   = MainrichTextBox.GetLineFromCharIndex(index) + 1;
            column = MainrichTextBox.SelectionStart - index + 1;
            MaintoolStripStatusLabel.Text = "   lines:" + line.ToString() + "  columns:" + column.ToString();
        }
示例#4
0
        private void run(string input, object sender, EventArgs e, RichTextBox richtextbox)
        {
            try
            {
                string          pattern = @"(?<!Math\.)(E|LN2|LN10|LOG2E|LOG10E|PI|SQRT1_2|SQRT2|abs|acos|asin|atan|atan2|ceil|cos|exp|floor|log|max|min|pow|random|round|sin|sqrt|tan)";
                MatchCollection mc      = Regex.Matches(input, pattern);
                foreach (Match m in mc)
                {
                    Regex rgx = new Regex(pattern);
                    input = rgx.Replace(input, "Math." + m);
                }
                switch (input.TrimEnd(' '))
                {
                case "help": helpToolStripMenuItem1_Click(sender, e); break;

                case "exit": exitToolStripMenuItem_Click(sender, e); break;

                case "save": saveToolStripMenuItem_Click(sender, e); break;

                case "statusbar": statusBarToolStripMenuItem_Click(sender, e); break;

                case "menubar": menuBarToolStripMenuItem_Click(sender, e); break;

                case "clear": MainrichTextBox.Clear(); break;

                default:
                    Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
                    var result = Microsoft.JScript.Eval.JScriptEvaluate(input, ve);
                    richtextbox.AppendText("\n" + result.ToString());
                    break;
                }
            }
            catch (NullReferenceException)
            {
            }
            catch (Exception er)
            {
                richtextbox.AppendText("\n" + er.Message);
            }
        }
示例#5
0
 private void MainrichTextBox_KeyDown(object sender, KeyEventArgs e)
 {
     view(e);
     try
     {
         if (isEditorMode)
         {
             if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
             {
                 if (isOutputShow)
                 {
                     op.Activate();
                 }
                 else
                 {
                     isOutputShow = true;
                     op           = new Output();
                     op.Show();
                 }
                 run(MainrichTextBox.Text, sender, e, op.OutputrichTextBox);
             }
         }
         else
         {
             if (e.KeyCode == Keys.Enter)
             {
                 run(MainrichTextBox.Lines[line - 1], sender, e);
             }
         }
     }
     catch (IndexOutOfRangeException)
     {
     }
     catch (Exception er)
     {
         MainrichTextBox.AppendText("\n" + er.Message);
     }
 }
示例#6
0
 private void Clear(object sender, EventArgs e)
 {
     MainrichTextBox.Clear();
 }
示例#7
0
 private void SelectAll(object sender, EventArgs e)
 {
     MainrichTextBox.SelectAll();
 }
示例#8
0
 private void Paste(object sender, EventArgs e)
 {
     MainrichTextBox.Paste();
 }
示例#9
0
 private void Cut(object sender, EventArgs e)
 {
     MainrichTextBox.Cut();
 }