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