Hola gente,
no sé si observaron que el IDE de gambas al momento de generar un empaquetado bloquea los menúes, hay un mensaje (abajo a la derecha que nos dice cuanto le falta en tiempo), este concepto me parece muy útil, escribí este código para mi aplicación (no es exactamente lo mismo)
Código:
' Deshabilitar todos los menús y submenús
Public Sub BloquearMenus()
FMain.menuArchivo.Enabled = False
FMain.menuLTX.Enabled = False
End
' Habilitar todos los menús y submenús
Public Sub DesbloquearMenus()
FMain.menuArchivo.Enabled = True
FMain.menuLTX.Enabled = True
End
llamo a las funciones al inicio y cierre de las otras funciones, y anda, pero solo unos segundos y luego los menúes vuelven a estar disponibles, indudablemente mi enfoque es errado o me falta algo.
Cuál es mi caso, tengo en varios menúes con funciones [1] que se ejecutan en un TerminalView y la intención es no tener acceso al resto de las funciones, mientras alguna se ejecuta.
Por donde van los tiros... pensé en la captura del evento, pero no estoy seguro.
Gracias de antemano
[1] compilaciones con LuaLaTeX, LaTeXML y Pandoc, utilizar TerminalView me da mejor control (comparado con ejecutar desde Shell) ya que accedo en forma directa al logfile del compilador que queda en la TerminalView.
Actualización del estado de la cuestión
Pude entender que pasa, la función DesbloquearMenus se ejecuta luego de ejecutar las instrucciones en la terminal, pero no sigue el estado del proceso de la instrucción en sí (en este caso el compilador de LaTeX, trabajando en back).
Veo que por acá vienen los tiros, veré de hacer algunas pruebas.
Esta es una de las tantas funciones adonde pretendo aplicar el bloqueo de menues
Código:
Public Sub menuPDFlibro_Click() 'generamos el PDF libro
Dim newFile As String
Dim rutaFija As String
Dim newLog As String
' Llamamos a la función del módulo para verificar los metadatos obligatorios
If Not Mod_Funciones.registrosObligatorios(TextBox1.Text) Then
' Si la función retorna False, cancelamos la operación
Return
End If
newFile = "pdf-" & BaseName & ".tex"
rutaFija = File.Dir(TextBox1.Text) &/ "files"
newLog = "gbTeX-" & BaseName & ".log"
Borrar_Aux
Wait 0.2
TabPanel1.Index = 0
' obtenemos la exportación de los archivos bib, glo y meta
Mod_Exportar.Exportar2BibTeX(TextBox1.Text)
Mod_Exportar.Exportar2Glosario(TextBox1.Text)
Mod_Exportar.Exportar2MetadatosPDF(TextBox1.Text)
Wait 0.2
' revisamos la carpeta pdf y borramos el archivo
Mod_Funciones.ManagePdfFolder(TextBox1.Text)
' combino el archivo de cabecera .tex
TerminalView1.Input("cat " & rutaFija &/ "book-pdf.tex" & " " & File.Name(TextBox1.Text) & " > " & newFile & "\n")
Wait 0.2
' compilo con el script de latexmk
TerminalView1.Input("latexmk -l -f --interaction=nonstopmode -pdflatex=lualatex -pdflua " & newFile & "\n")
Wait 0.2
' compilación adicional para indexar los glosarios
TerminalView1.Input("lualatex --interaction=nonstopmode " & newFile & "\n")
Wait 0.2
' ejecutamos en conteo del archivo LaTeX
TerminalView1.Input("texcount -sub -sum -incbib -out=" & rutaFILES & "/gbTeX-" & BaseName & ".txt " & newFile & "\n")
Wait 0.2
TerminalView1.Input("rm -rf " & newFile & "\n")
Wait 0.2
TerminalView1.Input("mv " & File.Dir(TextBox1.Text) &/ "pdf-" & BaseName & ".pdf" & " " & File.Dir(TextBox1.Text) &/ "pdf/" & BaseName & ".pdf" & "\n")
Wait 0.2
' copiamos /files el archivo .log
TerminalView1.Input("cat pdf-" & BaseName & ".log > " & rutaFILES & "/gbTeX-" & BaseName & ".log" & "\n")
Wait 0.2
' eliminamos los archivos auxiliares de \include
TerminalView1.Input("rm -rf " & File.Dir(TextBox1.Text) & "/artcap/*.aux" & "\n")
Wait 0.2
' generamos una vista con texlogsieve
TerminalView1.Input("texlogsieve " & rutaFILES & "/gbTeX-" & BaseName & ".log > " & rutaFILES & "/gbTeXv-" & BaseName & ".log" & "\n")
Wait 0.2
Borrar_Aux
TerminalView1.SetFocus()
TerminalView1.Refresh()
End