Esempio n. 1
0
        private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Otvara novi tab sa novim txt file-om bez imena
            TabPage tp = new TabPage("(No name)");

            tabControl2.TabPages.Add(tp);
            tabSizeToolStripMenuItem.Enabled = true;
            RichTextBox tb = new RichTextBox();

            tb.KeyDown    += Tb_KeyDown;
            tb.KeyPress   += Tb_KeyPress;
            tb.MouseClick += Tb_MouseClick;
            tb.KeyUp      += Tb_KeyUp;
            tb.AcceptsTab  = true;
            tb.TabStop     = false;
            tb.Dock        = DockStyle.Fill;
            tb.Multiline   = true;

            AutoComplete a = new AutoComplete();

            a.DoubleClick += Tb_DoubleClick;

            tp.Controls.Add(a);
            tp.Controls.Add(tb);

            tabControl2.SelectTab(tp);

            ProvjeraTabova();
            UpdateCurrentLine();
        }
Esempio n. 2
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Otvara dijalog za otvaranje teksta i otvara taj tekst u novom tabu
            OpenFileDialog open = new OpenFileDialog();

            if (open.ShowDialog() == DialogResult.OK)
            {
                // Cita tekst iz otvorenog file-a, stavlja ga u RichTextBox i stavlja taj
                // RichTextBox u novootvoreni tab
                string filename = open.FileName;

                string[] filelines = File.ReadAllLines(filename);

                TabPage tp = new TabPage(filename.Split('\\').Last());
                tabControl2.TabPages.Add(tp);

                RichTextBox tb = new RichTextBox();
                tb.KeyDown    += Tb_KeyDown;
                tb.KeyPress   += Tb_KeyPress;
                tb.MouseClick += Tb_MouseClick;
                tb.KeyUp      += Tb_KeyUp;
                tb.AcceptsTab  = true;
                tb.TabStop     = false;
                tb.Dock        = DockStyle.Fill;
                tb.Multiline   = true;
                foreach (string s in filelines)
                {
                    tb.Text += s + "\n";
                }

                AutoComplete a = new AutoComplete();
                a.DoubleClick += Tb_DoubleClick;

                tp.Controls.Add(a);
                tp.Controls.Add(tb);

                tabControl2.SelectTab(tp);
            }

            ProvjeraTabova();
            UpdateCurrentLine();
        }
Esempio n. 3
0
        private void Tb_DoubleClick(object sender, EventArgs e)
        {
            // Double click misom na neki tekst u ListBox-u odabire taj tekst
            // i stavlja ga u RichTextBox, resetira ostale podatke i sakriva listu
            RichTextBox  tb    = tabControl2.SelectedTab.Controls[1] as RichTextBox;
            AutoComplete lista = sender as AutoComplete;

            string autoText   = lista.SelectedItem.ToString();
            int    beginPlace = tb.SelectionStart - lista.count;

            tb.Select(beginPlace, lista.count);
            tb.SelectedText = "";
            int    pozicija       = tb.SelectionStart;
            string prijeKursora   = tb.Text.Substring(0, pozicija);
            string poslijeKursora = tb.Text.Substring(pozicija, tb.Text.Length - pozicija);

            tb.Text = prijeKursora + autoText + poslijeKursora;
            tb.Focus();
            lista.listShow = false;
            lista.Hide();
            tb.SelectionStart = autoText.Length + beginPlace;
            lista.count       = 0;
            lista.keyword     = "";
        }
Esempio n. 4
0
        private void Tb_KeyDown(object sender, KeyEventArgs e)
        {
            RichTextBox  tb    = sender as RichTextBox;
            AutoComplete lista = (AutoComplete)tabControl2.SelectedTab.Controls[0];

            UpdateCurrentLine();

            // Korekcija velicine taba
            if (e.KeyCode == Keys.Tab && lista.listShow == false)
            {
                e.SuppressKeyPress = true;

                int    pozicija       = tb.SelectionStart;
                string razmak         = "";
                string prijeKursora   = tb.Text.Substring(0, pozicija);
                string poslijeKursora = tb.Text.Substring(pozicija, tb.Text.Length - pozicija);

                for (int i = 0; i < velicinaTaba; ++i)
                {
                    razmak += " ";
                }

                tb.Text = prijeKursora + razmak + poslijeKursora;

                tb.SelectionStart = pozicija + velicinaTaba;
            }

            // Ako nije ukljucen C# editor onda ne radi nista
            if (!cEditorToolStripMenuItem.Checked)
            {
                return;
            }

            //brace completion
            if (e.KeyCode == Keys.B && e.Alt)
            {
                int pozicija = tb.SelectionStart;

                tb.Text           = tb.Text.Insert(pozicija, "}");
                tb.SelectionStart = pozicija;
            }
            if (e.KeyCode == Keys.F && e.Alt)
            {
                int pozicija = tb.SelectionStart;

                tb.Text           = tb.Text.Insert(pozicija, "]");
                tb.SelectionStart = pozicija;
            }
            if (e.KeyCode == Keys.D8 && e.Shift)
            {
                int pozicija = tb.SelectionStart;

                tb.Text           = tb.Text.Insert(pozicija, ")");
                tb.SelectionStart = pozicija;
            }

            // Neke od kljucnih tipki ignoriraj
            if (e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.Menu ||
                e.KeyCode == Keys.ControlKey || e.KeyCode == Keys.RMenu)
            {
                return;
            }

            // Ako je upisano nesto osim slova, _ i - onda spremi trenutnu rijec i sakrij listu
            // Pazimo jos da ovdje iskljucimo tipke Up, Down i Tab jer one sluze za baratanje listom
            if (lista.listShow &&
                !(char.IsLetterOrDigit(Convert.ToChar(e.KeyCode)) ||
                  e.KeyCode == Keys.OemMinus ||
                  e.KeyCode == Keys.Up ||
                  e.KeyCode == Keys.Down ||
                  e.KeyCode == Keys.Tab ||
                  e.KeyCode == Keys.Back)
                || // Ovo provjerava ako je neki specijalni znak za koji treba kombinacije dvije tipke (npr. '&')
                (char.IsLetterOrDigit(Convert.ToChar(e.KeyCode)) && (e.Alt || e.Control || e.Shift)))
            {
                lista.DodajRijecIResetiraj();
                lista.Hide();
            }

            // Ako je lista pokazana
            if (lista.listShow == true)
            {
                // Tipka gore pomice oznaceni element na listi gore
                if (e.KeyCode == Keys.Up)
                {
                    e.SuppressKeyPress = true;
                    lista.Focus();
                    if (lista.SelectedIndex != 0)
                    {
                        lista.SelectedIndex -= 1;
                    }
                    else
                    {
                        lista.SelectedIndex = 0;
                    }
                    tb.Focus();
                }// Tipka dolje pomice oznaceni element na listi dolje
                else if (e.KeyCode == Keys.Down)
                {
                    e.SuppressKeyPress = true;
                    lista.Focus();
                    try
                    {
                        lista.SelectedIndex += 1;
                    }
                    catch
                    {
                    }
                    tb.Focus();
                }

                // Ako korisnik pritisne tab onda odabranu rijec stavi u tekst ili postavi tab i spremi rijec
                if (e.KeyCode == Keys.Tab)
                {
                    int    pozicija;
                    string prijeKursora;
                    string poslijeKursora;
                    e.SuppressKeyPress = true;

                    // Ako je tab pritisnut nakon nove rijeci onda tu rijec dodaj u listu svih rijeci
                    // i nakon nje dodaj tabulator
                    if (lista.SelectedItem == null)
                    {
                        lista.DodajRijecIResetiraj();

                        // Dodaj tab nakon trenutne rijeci
                        pozicija = tb.SelectionStart;
                        string razmak = "";
                        prijeKursora   = tb.Text.Substring(0, pozicija);
                        poslijeKursora = tb.Text.Substring(pozicija, tb.Text.Length - pozicija);

                        for (int i = 0; i < velicinaTaba; ++i)
                        {
                            razmak += " ";
                        }

                        tb.Text = prijeKursora + razmak + poslijeKursora;

                        tb.SelectionStart = pozicija + velicinaTaba;

                        return;
                    }


                    // Odabranu rijec stavi u tekst i resetiraj podatke
                    string autoText = lista.SelectedItem.ToString();

                    int beginPlace = tb.SelectionStart - lista.count;
                    tb.Select(beginPlace, lista.count);
                    tb.SelectedText = "";
                    pozicija        = tb.SelectionStart;
                    prijeKursora    = tb.Text.Substring(0, pozicija);
                    poslijeKursora  = tb.Text.Substring(pozicija, tb.Text.Length - pozicija);
                    tb.Text         = prijeKursora + autoText + poslijeKursora;
                    tb.Focus();
                    lista.listShow = false;
                    lista.Hide();
                    tb.SelectionStart = autoText.Length + beginPlace;
                    lista.count       = 0;
                    lista.keyword     = "";
                }
            }
        }
Esempio n. 5
0
        private void Tb_KeyPress(object sender, KeyPressEventArgs e)
        {
            RichTextBox tb = sender as RichTextBox;

            UpdateCurrentLine();

            // Ako nije ukljucen C# editor onda ne radi nista
            if (!cEditorToolStripMenuItem.Checked)
            {
                return;
            }

            AutoComplete lista = (AutoComplete)tabControl2.SelectedTab.Controls[0];

            // Ako je lista već otvorena
            if (lista.listShow == true)
            {
                if (e.KeyChar == 8) // 8 predstavlja BACKSPACE
                {
                    // Ako se pritisne BACKSPACE smanji keyword i ponovno mijenjaj ponudjenu rijec
                    lista.keyword = lista.keyword.Remove(lista.keyword.Length - 1);
                    lista.MijenjajListu();
                    lista.count--;
                    if (lista.count == 0) // Ako je prazna rijec sve resetiraj i odmakni listu
                    {
                        lista.count    = 0;
                        lista.keyword  = "";
                        lista.listShow = false;
                        lista.Hide();
                    }
                    else
                    {
                        tb.Focus();
                    }
                }
                else
                {
                    lista.keyword += e.KeyChar;
                    lista.MijenjajListu();
                    lista.count++;
                    tb.Focus();
                }
            }
            else
            {
                // Ako lista nije otvorena otvori je i pokazi preporucene rijeci
                // Rijeci koje preporucujemo se sastoje od brojeva, slova, obicne crte i donje crte
                if (char.IsLetterOrDigit(e.KeyChar) || e.KeyChar == '_' || e.KeyChar == '-')
                {
                    lista.keyword += e.KeyChar;
                    lista.MijenjajListu();
                    lista.listShow = true;
                    Point point = tb.GetPositionFromCharIndex(tb.SelectionStart);
                    point.Y       += (int)Math.Ceiling(tb.Font.GetHeight()) + tb.Location.Y;
                    point.X       += tb.Location.Y;
                    lista.Location = point;
                    lista.count++;
                    tb.Focus();
                }
            }
        }