Ejemplo n.º 1
0
 public void Buscar(string pregunta, ProcesamientoComandos pc, int x, int y, ProcesamientoComandos.Preguntas Pregunta)
 {
     m_Pregunta = Pregunta;
     if (Pregunta == ProcesamientoComandos.Preguntas.QueEs)
     {
         m_pc                 = pc;
         this.Visible         = true;
         tbDireccionWeb.Text  = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=que%20es%20" + pregunta.Replace(" ", "%20");
         DocumentoCompleto    = false;
         this.Location        = new Point(x, y - this.Height);
         picXulia.Visible     = true;
         rtbRespuesta.Visible = false;
         rtbRespuesta.Refresh();
         picXulia.Refresh();
         CargarBusquedaTexto();
         if (BuscandoInformacion != "")
         {
             m_pc.Hablar(BuscandoInformacion);
         }
         webBrowser1.Navigate(tbDireccionWeb.Text);
     }
     else if (Pregunta == ProcesamientoComandos.Preguntas.QuienEs)
     {
         m_pc                = pc;
         this.Visible        = true;
         tbDireccionWeb.Text = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=quien+es+" + pregunta.Replace(" ", "+");
         DocumentoCompleto   = false;
         this.Location       = new Point(x, y - this.Height);
         picXulia.Visible    = true;
         picXulia.Refresh();
         CargarBusquedaTexto();
         webBrowser1.Navigate(tbDireccionWeb.Text);
     }
     else if (Pregunta == ProcesamientoComandos.Preguntas.QueTiempoHace)
     {
         m_pc                = pc;
         this.Visible        = true;
         tbDireccionWeb.Text = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=que+tiempo+hace+en+" + pregunta.Replace(" ", "+");
         DocumentoCompleto   = false;
         this.Location       = new Point(x, y - this.Height);
         picXulia.Visible    = true;
         picXulia.Refresh();
         CargarBusquedaTexto();
         webBrowser1.Navigate(tbDireccionWeb.Text);
     }
 }
Ejemplo n.º 2
0
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            int pos_ini = 0;
            int pos_fin = 0;

            if (!DocumentoCompleto)
            {
                DocumentoCompleto = true;
                picXulia.Visible  = false;
                picXulia.Refresh();
                HtmlDocument document = webBrowser1.Document;
                document.ExecCommand("SelectAll", true, null);
                document.ExecCommand("Copy", false, null);
                document.ExecCommand("Unselect", true, null);
                rtbRespuesta.Visible = true;
                rtbRespuesta.Text    = "";
                if (m_Pregunta == ProcesamientoComandos.Preguntas.QueEs)
                {
                    bool encontrado = false;
                    if (Clipboard.ContainsText())
                    {
                        pos_ini = 0;
                        pos_fin = 0;
                        string cad = Clipboard.GetText();
                        foreach (sBusquedasTexto b in Busquedas)
                        {
                            foreach (string s in b.texto_ini)
                            {
                                pos_ini = Strings.InStr(cad, s);
                                if (pos_ini > 0)
                                {
                                    cad        = cad.Substring(pos_ini - 1 + s.Length);
                                    encontrado = true;
                                    break;
                                }
                            }
                            if (encontrado)
                            {
                                encontrado = false;
                                foreach (string s in b.texto_fin)
                                {
                                    pos_fin = Strings.InStr(cad, s);
                                    if (pos_fin > 0)
                                    {
                                        encontrado = true;
                                        break;
                                    }
                                }
                            }
                            if (encontrado)
                            {
                                string texto = cad.Substring(0, pos_fin - 1);
                                if (texto != "")
                                {
                                    rtbRespuesta.Visible = true;
                                    rtbRespuesta.Text    = texto;
                                    m_pc.Hablar(texto);
                                    return;
                                }
                            }
                        }
                    }
                }
                else if (m_Pregunta == ProcesamientoComandos.Preguntas.QuienEs)
                {
                    pos_ini = 0;
                    pos_fin = 0;
                    if (Clipboard.ContainsText())
                    {
                        string cad         = Clipboard.GetText();
                        string descripcion = "";
                        foreach (sBusquedasQuien b in BusquedasQuien)
                        {
                            pos_ini = Strings.InStr(cad, b.Localizador);
                            if (pos_ini > 0)
                            {
                                //Localizamos el inicio de la línea donde hemos encontrado el localizador
                                char c;
                                int  i = pos_ini - 1;
                                c = cad[i];
                                while ((i > 0) && ((cad[i] != 10) && (cad[i] != 13)))
                                {
                                    i--;
                                }
                                if (i > 0)
                                { //Hemos localizado el inicio de la línea
                                    descripcion       = cad.Substring(i + 1, pos_ini - i);
                                    cad               = cad.Substring(pos_ini - 1 + b.Localizador.Length);
                                    rtbRespuesta.Text = descripcion + Environment.NewLine;
                                    //Localizamos las propiedades
                                    foreach (string s in b.propiedades)
                                    {
                                        pos_ini = Strings.InStr(cad, s);
                                        if (pos_ini > 0)
                                        {
                                            i = pos_ini;
                                            //Localizamos el final de la línea de la propiedad
                                            while ((i < cad.Length) && ((cad[i] != 10) && (cad[i] != 13)))
                                            {
                                                i++;
                                            }
                                            if (i < cad.Length)
                                            {
                                                rtbRespuesta.AppendText(cad.Substring(pos_ini - 1, i - pos_ini + 2) + "." + Environment.NewLine + Environment.NewLine);
                                            }
                                        }
                                    }
                                    if (rtbRespuesta.Text != "")
                                    {
                                        m_pc.Hablar(rtbRespuesta.Text);
                                        return;
                                    }
                                }
                            }
                        }
                    }
                }
                else if (m_Pregunta == ProcesamientoComandos.Preguntas.QueTiempoHace)
                {
                    pos_ini = 1;
                    pos_fin = 0;
                    int    i;
                    string cad = "";
                    if (Clipboard.ContainsText())
                    {
                        cad = Clipboard.GetText();
                        foreach (sBusquedasTiempo b in BusquedasTiempo)
                        {
                            pos_ini = 1;
                            do
                            {
                                pos_ini = Strings.InStr(pos_ini, cad, b.propiedad);
                                if (pos_ini > 0)
                                {
                                    //Localizamos el inicio de la línea donde hemos encontrado el localizador
                                    i = pos_ini - 1;
                                    if (LocalizarInicioLinea(ref i, cad))
                                    {
                                        if (i == pos_ini - 2)
                                        { //La propiedad comienza la línea
                                            i = pos_ini - 1;
                                            if (b.final_linea == "")
                                            {
                                                if (LocalizarFinLinea(ref i, cad))
                                                {
                                                    string resp = cad.Substring(pos_ini - 1, i - pos_ini);
                                                    rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine);
                                                }
                                            }
                                            else
                                            {
                                                pos_fin = Strings.InStr(pos_ini, cad, b.final_linea);
                                                if (pos_fin > 0)
                                                {
                                                    string resp = "";
                                                    if (b.final_linea_incluida)
                                                    {
                                                        resp = cad.Substring(pos_ini - 1, pos_fin - pos_ini - 1);
                                                    }
                                                    else
                                                    {
                                                        resp = cad.Substring(pos_ini - 1, pos_fin - pos_ini + b.final_linea.Length + 1);
                                                    }
                                                    rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine);
                                                }
                                                LocalizarFinLinea(ref i, cad);
                                            }

                                            //Comprobamos si necesitamos leer más líneas
                                            int lineas = b.num_lineas;
                                            while (lineas > 0)
                                            {
                                                pos_ini = i;
                                                i      += 2;
                                                if (LocalizarFinLinea(ref i, cad))
                                                {
                                                    string resp = cad.Substring(pos_ini - 1, i - pos_ini);
                                                    rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine);
                                                    lineas--;
                                                }
                                                else
                                                {
                                                    break;
                                                }
                                            }
                                            pos_ini++;
                                        }
                                        else
                                        {
                                            pos_ini++;
                                        }
                                    }
                                }
                            } while (pos_ini > 0);
                        }
                    }
                } //else if
            }
            if (rtbRespuesta.Text != "")
            {
                m_pc.Hablar(rtbRespuesta.Text);
                Clipboard.Clear();
                return;
            }
            m_pc.Hablar(NoLocalizado);
        }