Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Mostar archivo en webview
#1

Hola listeros, estoy intentando levantar automáticamente un archivo html en un webview luego de generarlo via pandoc y no lo consigo, no entiendo si webview necesita la ruta completa y porqué, el código que utilizo para generar el archivo funciona, es decir el html se construye sin problemas, intuyo que el problema viene del lado del path pero no logro ver el error, este es el código que utilizo, todos los archivos se llaman igual y solo cambia la extensión, por eso utilizo File.BaseName a la salida

Gracias de antemano

 
Código:
  Dim orden As Process

  orden = Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html"
  WebView1.Url = File.BaseName(Dialog.Path) & ".html"
    ¡Gracias!
#2

Prueba con
GAMBAS
  1. [code]
  2. Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html" to orden
  3. [/code]



Shell no es una función que retorne valores.

Saludos

Perdón no había visto lo de "as process". El tema viene a ser el mismo. Shell abre una nueva shell, con su entorno y demás, donde se lanza el proceso que le pides de forma asíncrona. Es decir, que tu programa continúa. Posiblemente no haya terminado cuando intentas ejecutar la siguiente instrucción.  Necesitas un bucle que compruebe el status del proceso para saber cuándo termina y qué le está ocurriendo.
No uso pandoc, pero si lo que haces es generar un fichero con él, creo que la mejor sintáxis es la que arriba te pongo o, simplemente:
Código:
GAMBAS
  1. Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html" wait

El Wait detiene tu programa hasta que la Shell termine.

Saludos

No podemos regresar
    ¡Gracias!
#3

(21-06-2021, 05:58)alberto-moyano escribió:  Hola listeros, estoy intentando levantar automáticamente un archivo html en un webview

Hola Alberto, te recomiendo que uses File.Load y depende de la versión de gambas que uses la propiedad .SetHtml (3.16) o .HTML (3.15)
GAMBAS
  1. ' Gambas class file
  2.  
  3. Private sFile As String = "/tmp/tmp.html"
  4. Private sContent As String
  5.  
  6. Public Sub Form_Open()
  7.  
  8.   If Exist(sFile) Then
  9.     sContent = File.Load(sFile)
  10.   Else
  11.     sContent = File.Load("./tmp.html")
  12.  
  13.   TextArea1.Text = sContent
  14.  
  15.  
  16. Public Sub TextArea1_Change()
  17.  
  18.   sContent = TextArea1.Text
  19.   File.Save(sFile, sContent)
  20.   WebView1.SetHtml(File.Load(sFile))
  21.  


Dejo este ejemplo para que veas como funciona en la versión 3.16
Saludos.


Archivos adjuntos
.gz test-webform-0.0.1.tar.gz Tamaño: 12.29 KB  Descargas: 3

1 Saludo.
    ¡Gracias!
#4

Hola Shordi y Tincho

Wait no es necesario, pandoc se desacopla solo cuando termina la conversión al nuevo formato

No necesito ver el resultado en html en tiempo real (mientras escribo en MD o cualquier otro lenguaje de marcas) pretendo que al terminar la conversión (la realizo solo al querer comprobar algo) lo muestre en el webview; y no puede ser un archivo temporal ya que lo construye en el mismo directorio del archivo de origen con el mismo nombre (solo cambian las extensiones, hace la conversión a html, epub, mobi y pdf).

Hice la prueba con el ejemplo que me paso Tincho, modifique así la linea del webview para que funcione (uso Gambas 3.15)
Código:
WebView1.HTML = File.Load(sFile)

Ahora bien, pude resolver el entuerto con este código
 
Código:
 
Public Sub menuMD1_Click()

  Dim orden As Process

  orden = Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html"

  Message.Info("Compilación terminada con éxito")

  WebView1.Url = "file://" & File.Dir(Dialog.Path) & "/" & File.BaseName(Dialog.Path) & ".html"

End

Tal vez haya chance de mejorarlo, pero primero voy a probar con todas las conversiones (9 en total) para ver que funcionan

Gracias por la ayuda y a cuidarse
    ¡Gracias!
#5

(21-06-2021, 17:16)alberto-moyano escribió:  Hola Shordi y Tincho

Wait no es necesario, pandoc se desacopla solo cuando termina la conversión al nuevo formato

No necesito ver el resultado en html en tiempo real (mientras escribo en MD o cualquier otro lenguaje de marcas) pretendo que al terminar la conversión (la realizo solo al querer comprobar algo) lo muestre en el webview; y no puede ser un archivo temporal ya que lo construye en el mismo directorio del archivo de origen con el mismo nombre (solo cambian las extensiones, hace la conversión a html, epub, mobi y pdf).

Hice la prueba con el ejemplo que me paso Tincho, modifique así la linea del webview para que funcione (uso Gambas 3.15)
Código:
WebView1.HTML = File.Load(sFile)

Ahora bien, pude resolver el entuerto con este código
 
Código:
 
Public Sub menuMD1_Click()

  Dim orden As Process

  orden = Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html"

  Message.Info("Compilación terminada con éxito")

  WebView1.Url = "file://" & File.Dir(Dialog.Path) & "/" & File.BaseName(Dialog.Path) & ".html"

End

Tal vez haya chance de mejorarlo, pero primero voy a probar con todas las conversiones (9 en total) para ver que funcionan

Gracias por la ayuda y a cuidarse

Date cuenta que lo único que has hecho es interponer el mensaje, con lo que el usuario tiene que pulsar ok y en esas décimas de segundo (siglos para el procesador) le da tiempo a terminar la creación del fichero.
Añade Wait al final y te ahorras el mensaje.

Saludos.

No podemos regresar
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)