예제 #1
0
        private void _KeyDown(object sender, KeyEventArgs e)
        {
            string allowedChars   = "([{}]);,. ";
            int    currentLine    = textBox.Selection.Bounds.iStartLine;
            string textTillCursor = textBox.GetLineText(currentLine).Substring(0, textBox.Selection.Bounds.iStartChar);
            //string textAfterCursor = tbEditor.GetLineText(currentLine);
            char charBeforeCursor = textBox.Selection.CharBeforeStart;
            char charAfterCursor  = textBox.Selection.CharAfterStart;

            if (e.KeyData == (Keys.K | Keys.Control))
            {
                //forced show (MinFragmentLength will be ignored)
                autocomplete.Show(true);
                //e.Handled = true;
            }
            if (System.Char.IsLetter((char)e.KeyValue) && //warning, lisp programmer at work
                textTillCursor.Count() > 0 &&
                allowedChars.Contains(charBeforeCursor) &&
                allowedChars.Contains(charAfterCursor))

            /*&&  cursorIsNotInsideFunctionName
             * &&  cursorIsCorrectlyIndented?? perhaps difficult with regex since parsing a language ain't easy
             */
            {
                autocomplete.Show(true);
            }
            UpdateAutocompleteIdentifiers();
        }
예제 #2
0
        private void charAdded(object sender, CharAddedEventArgs e)
        {
            if (e.Char == '!')
            {
                sb.Clear();
                sb.Append(@"^\!");
                adding = true;
                adpos  = CurrentPosition - 1;
            }
            else if (adding)
            {
                if (e.Char == '\n')
                {
                    adding = false;
                }
                sb.Append("" + (char)e.Char);
            }
            curpos = CurrentPosition;
            autocom.SearchPattern = sb.ToString();
            List <AutocompleteItem> items = new List <AutocompleteItem>();

            List <string> s = code.FilterAutocompleteWords(autocom.SearchPattern);

            foreach (string def in s)
            {
                items.Add(new SnippetAutocompleteItem(def));
            }
            autocom.SetAutocompleteItems(items);
            autocom.CaptureFocus = false;
            autocom.TargetControlWrapper.TargetControl.Location = new Point(0, 0);
            autocom.Show(this, false);
        }
예제 #3
0
 internal void ForceShowSuggestions()
 {
     if (_autoCompleteMenu != null && CodeEditorExtension.Instance.Settings.GetValue <bool>("AutoCompletion.AutoComplete"))
     {
         _itemEnumerator.CanYieldItems = true;
         _autoCompleteMenu.Show(true);
     }
 }
예제 #4
0
 private void sourceCodeBox_textChanged(object sender, TextChangedEventArgs e)
 {
     enforceSyntax();
     changeStyles();
     setToolStrip();
     hasModified = true;
     if (autoComplete != null)
     {
         autoComplete.Show(true);
     }
 }
예제 #5
0
 private void TextBox_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == (Keys.Space | Keys.Control))
     {
         //forced show (MinFragmentLength will be ignored)
         popupMenu.Show(true);
         e.Handled = true;
     }
     if (e.Control && e.KeyCode == Keys.S)
     {
         Save();
         e.Handled = true;
     }
     if (e.Control && e.KeyCode == Keys.W)
     {
         Close();
         e.Handled = true;
     }
     if (e.KeyCode == Keys.F5)
     {
         Save();
         Editor.Self.Run(Path);
         e.Handled = true;
     }
 }
예제 #6
0
 public void ForceAutoComplete()
 {
     if (_autocomplete != null)
     {
         _autocomplete.Show(true);
     }
 }
예제 #7
0
    public void Show(List <Variant> variants, string leftWord)
    {
        if (opened)
        {
            return;
        }
        opened = true;

        this.variants = variants;
        startPlace    = textBox.Controller.Lines.PlaceOf(textBox.Controller.LastSelection.caret - leftWord.Length);
        startCaret    = textBox.Controller.LastSelection.caret - leftWord.Length;
        caret         = textBox.Controller.LastSelection.caret;
        Point point = textBox.ScreenCoordsOfPlace(startPlace);

        point.Y += textBox.CharHeight;
        Point screenPoint = textBox.PointToScreen(point);

        dropDown = new AutocompleteMenu(new Handler(this));
        dropDown.SetScreenPosition(screenPoint);
        dropDown.Show(textBox, screenPoint);
        UpdateItems();

        textBox.KeyMap.AddBefore(keyMap);
        textBox.FocusedChange += OnFocusedChange;
        textBox.AfterKeyPress += OnKeyPress;
    }
예제 #8
0
 private void codeBox_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == (Keys.Space | Keys.Control))
     {
         //forced show (MinFragmentLength will be ignored)
         popupMenu.Show(true);
         e.Handled = true;
     }
     if (e.KeyCode == Keys.Escape)
     {
         popupMenu.Close();
     }
     if (e.KeyData == (Keys.K | Keys.Control))
     {
         codeTextBox.InsertLinePrefix("//");
     }
     if (e.KeyData == (Keys.K | Keys.Control | Keys.Shift))
     {
         codeTextBox.RemoveLinePrefix("//");
     }
     if (e.KeyData == (Keys.Control | Keys.P))
     {
         codeTextBox.CollapseAllFoldingBlocks();
         codeTextBox.ExpandAllFoldingBlocks();
     }
 }
예제 #9
0
 private void fctb_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == (Keys.Space | Keys.Control))
     {
         popupMenu.Show(true);
         e.Handled = true;
     }
 }
예제 #10
0
 public void KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == (Keys.K | Keys.Control))
     {
         popupMenuMetadataProperties.Show(true);
         e.Handled = true;
     }
 }
예제 #11
0
 private void fctb_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData != (Keys.K | Keys.Control))
     {
         return;
     }
     _popupMenu.Show(true);
     e.Handled = true;
 }
 private void fctb_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == (Keys.K | Keys.Control))
     {
         //forced show (MinFragmentLength will be ignored)
         _popupMenu.Show(true);
         e.Handled = true;
     }
 }
예제 #13
0
 private void fastColoredTextBox1_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Control)
     {
         if (e.KeyCode == Keys.Space)
         {
             Timer t = new Timer();
             popupMenu.Show(true);
             e.Handled = true;
         }
     }
 }
예제 #14
0
        public void fastColoredTextBox1_AutoIndentNeeded(object sender, AutoIndentEventArgs args)
        {
            _popupMenu.Show(true);
            // if previous line contains "then" or "else",
            // and current line does not contain "begin"
            // then shift current line to right
            //block {}
            if (Regex.IsMatch(args.LineText, @"^[^""']*\{.*\}[^""']*$"))
            {
                return;
            }
            //start of block {}
            if (Regex.IsMatch(args.LineText, @"^[^""']*\{"))
            {
                args.ShiftNextLines = args.TabLength;
                return;
            }

            //end of block {}
            if (Regex.IsMatch(args.LineText, @"}[^""']*$"))
            {
                args.Shift          = -args.TabLength;
                args.ShiftNextLines = -args.TabLength;
                return;
            }

            //label
            if (Regex.IsMatch(args.LineText, @"^\s*\w+\s*:\s*($|//)") &&
                !Regex.IsMatch(args.LineText, @"^\s*default\s*:"))
            {
                args.Shift = -args.TabLength;
                return;
            }

            //some statements: case, default
            if (Regex.IsMatch(args.LineText, @"^\s*(case|default)\b.*:\s*($|//)"))
            {
                args.Shift = -args.TabLength / 2;
                return;
            }

            //is unclosed operator in previous line ?
            if (Regex.IsMatch(args.PrevLineText, @"^\s*(if|for|foreach|while|[\}\s]*else)\b[^{]*$"))
            {
                if (!Regex.IsMatch(args.PrevLineText, @"(;\s*$)|(;\s*//)")) //operator is unclosed
                {
                    args.Shift = args.TabLength;
                }
            }
        }
예제 #15
0
        public Editor()
        {
            InitializeComponent();

            _blueStyle = new TextStyle(Brushes.Blue, null, FontStyle.Regular);

            _txtSrcCode = new FastColoredTextBox {
                Font = new Font("Consolas", 11),
                Dock = DockStyle.Fill
            };
            _txtSrcCode.TextChanged             += (s, e) => PPLSyntaxHighlight(e);
            _txtSrcCode.SelectionChangedDelayed += (s, e) => SelectionDelayed();
            _txtSrcCode.KeyDown += (s, e) => {
                if (e.KeyCode == Keys.Space)
                {
                    if (e.Control)
                    {
                        _popupMenu.Show(true);
                        e.Handled = true;
                    }
                }
            };

            _popupMenu = new AutocompleteMenu(_txtSrcCode)
            {
                MinFragmentLength = 100,
                AllowTabKey       = true
            };

            _popupMenu.Items.ImageList = iconsList;

            _popupMenu.Items.SetAutocompleteItems(
                new List <AutocompleteItem> {
                //operators
                new AutocompleteItem("when"),
                new AutocompleteItem("and"),
                new AutocompleteItem("or"),
                //conditions
                new AutocompleteItem("is_a_bad_credit_customer", 1),
                new AutocompleteItem("order_ammount_is", 1),
                new AutocompleteItem("is_a_good_credit_customer", 1),
                new AutocompleteItem("is_international_order", 1),
                //actions
                new AutocompleteItem("add_shipping_fee", 0),
                new AutocompleteItem("apply_discount", 0),
                new AutocompleteItem("block_the_order", 0),
            });

            Controls.Add(_txtSrcCode);
        }
예제 #16
0
 //搜索函数
 void Tb_inputKeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Enter)
     {
         string key = tb_input.Text;
         List <AutocompleteItem> list = new List <AutocompleteItem>();
         foreach (AutocompleteItem item in items)
         {
             if (item.ToolTipText.Contains(key))
             {
                 list.Add(item);
             }
         }
         popupMenu.Items.SetAutocompleteItems(list.ToArray());
         popupMenu.Show(true);
     }
 }
예제 #17
0
 private void txtRoom_ButtonCustomClick(object sender, EventArgs e)
 {
     mAutoMennu_Room.Show(txtRoom, true, true);
 }
예제 #18
0
 public void Autocomplete_Show()
 {
     popupMenu.Show(true);
 }
예제 #19
0
 private void txtHome_ButtonCustomClick(object sender, EventArgs e)
 {
     mAutoMennu_Home.Show(txtHome, true, true);
 }
예제 #20
0
        private void getnextword(string word1, string word2, string word3, string lastletter)
        {
            label10.Text = word1;
            label11.Text = word2;
            label12.Text = lastletter;

            var sql_cmd = new SQLiteCommand();

            if (checkBox2.Checked)
            {
                MessageBox.Show("word1 = " + word1 + " word2 = " + word2 + " word3 = " + word3);
            }


            if (lastletter.Equals(" "))
            {
                listBox1.Items.Clear();
                sql_cmd = new SQLiteCommand();


                if (radioButton4.Checked)
                {
                    sql_cmd.CommandText =
                        "select word3,id from tgram where word1=@word1 and word2 = @word2 order by freq desc LIMIT 0, 100";
                }
                else
                {
                    sql_cmd.CommandText =
                        "select word2,id from tgram where word1=@word2 and word3 =@word3 order by freq desc LIMIT 0, 100";
                }

                sql_cmd.Parameters.AddRange(new[]
                {
                    new SQLiteParameter("@word1", word1),
                    new SQLiteParameter("@word2", word2),
                    new SQLiteParameter("@word3", word3)
                });

                var DT = _database.ExecuteSelect(sql_cmd);

                idf = -1;

                if (DT.Rows.Count > 0)
                {
                    var dr = DT.Rows[0];
                    idf = Convert.ToInt32(dr[1].ToString());
                    for (var i = 0; i < DT.Rows.Count; i++)
                    {
                        dr = DT.Rows[i];
                        if (!ignore(dr[0].ToString()))
                        {
                            listBox1.Items.Add(dr[0].ToString());
                        }
                    }
                }

                listBox1.Items.Add("------------------");
                sql_cmd = new SQLiteCommand();


                if (radioButton4.Checked)
                {
                    sql_cmd.CommandText =
                        "select word2,id from bgram where word1=@word2 order by freq desc LIMIT 0, 100";
                }
                else
                {
                    sql_cmd.CommandText =
                        "select word1,id from bgram where word2=@word3 order by freq desc LIMIT 0, 100";
                }

                sql_cmd.Parameters.AddRange(new[]
                {
                    new SQLiteParameter("@word1", word1),
                    new SQLiteParameter("@word2", word2),
                    new SQLiteParameter("@word3", word3)
                });

                DT = _database.ExecuteSelect(sql_cmd);

                if (DT.Rows.Count > 0)
                {
                    DataRow dr;
                    if (idf == -1)
                    {
                        dr  = DT.Rows[0];
                        idf = Convert.ToInt32(dr[1].ToString());
                        //getphrases(idf, 2, word2);
                    }

                    for (var i = 0; i < DT.Rows.Count; i++)
                    {
                        dr = DT.Rows[i];
                        if (!ignore(dr[0].ToString()))
                        {
                            listBox1.Items.Add(dr[0].ToString());
                        }
                    }
                }
            }
            else
            {
                sql_cmd = new SQLiteCommand();

                sql_cmd.CommandText =
                    "select word1,id from bgram where word1 like @word2 order by freq desc LIMIT 0, 100";
                sql_cmd.Parameters.AddRange(new[]
                {
                    new SQLiteParameter("@word1", word1),
                    new SQLiteParameter("@word2", word2 + "%"),
                    new SQLiteParameter("@word3", word3)
                });

                var DT = _database.ExecuteSelect(sql_cmd);


                var list = new List <string>();
                for (var i = 0; i < listBox1.Items.Count; i++)
                {
                    if (!ignore(listBox1.Items[i].ToString()))
                    {
                        list.Add(listBox1.Items[i].ToString());
                    }
                }
                listBox1.Items.Clear();
                var items = new List <AutocompleteItem>();
                for (var i = 0; i < list.Count; i++)
                {
                    if (list[i].StartsWith(word2, true, CultureInfo.CurrentCulture))
                    {
                        listBox1.Items.Add(list[i]);


                        items.Add(new SnippetAutocompleteItem(list[i]));
                    }
                }

                list.Clear();

                for (var i = 0; i < DT.Rows.Count; i++)
                {
                    var dr = DT.Rows[i];

                    var n = listBox1.FindString(dr[0].ToString());

                    if (n < 0)
                    {
                        if (!ignore(dr[0].ToString()))
                        {
                            listBox1.Items.Add(dr[0].ToString());
                            items.Add(new SnippetAutocompleteItem(dr[0].ToString()));
                        }
                    }
                }

                advancedTextEditor1.autocompleteMenu1.SetAutocompleteItems(items);
                if (panel6.Visible)
                {
                    autocompleteMenu1.SetAutocompleteItems(items);
                    autocompleteMenu1.Show(textBox5, false);
                }
            }
        }
예제 #21
0
 private void txtUser_ButtonCustomClick(object sender, EventArgs e)
 {
     mAutoMennu_User.Show(txtUser, true, true);
 }
예제 #22
0
 private void txtEntity_ButtonCustomClick(object sender, EventArgs e)
 {
     mAutoMennu_DM_Entity_Type.Show(txtEntity, true, true);
 }
예제 #23
0
 private void txtType_ButtonCustomClick(object sender, EventArgs e)
 {
     mAutoMennu_DM_Intent_Type.Show(txtType, true, true);
 }
예제 #24
0
 public void ForceAutoComplete()
 {
     _autocomplete.Show(true);
 }
예제 #25
0
 public void Show()
 {
     _popupMenu.Show(false);
 }