alberto-moyano   21-06-2021, 05:58
#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"
Shordi   21-06-2021, 09:12
#2
Prueba con
Código:
[code]
Shell "pandoc" & " " & File.Name(Dialog.Path) & " " & "-o" & " " & File.BaseName(Dialog.Path) & ".html" to orden
[/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:
[code]
El Wait detiene tu programa hasta que la Shell termine.

Saludos
Última modificación: 21-06-2021, 09:20 por Shordi.

No podemos regresar
tincho   21-06-2021, 11:06
#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)
Código:
' Gambas class file

Private sFile As String = "/tmp/tmp.html"
Private sContent As String

Public Sub Form_Open()

  If Exist(sFile) Then
    sContent = File.Load(sFile)
  Else
    sContent = File.Load("./tmp.html")
  Endif

  TextArea1.Text = sContent

End

Public Sub TextArea1_Change()

  sContent = TextArea1.Text
  File.Save(sFile, sContent)
  WebView1.SetHtml(File.Load(sFile))

End
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.
alberto-moyano   21-06-2021, 17:16
#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
Última modificación: 21-06-2021, 17:18 por alberto-moyano.
Shordi   21-06-2021, 18:12
#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
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.