Rendere la console dell'IDE funzionale come un Terminale

Da Gambas-it.org - Wikipedia.

E' possibile rendere funzionale la console dell'IDE di Gambas similmente ad un Terminale.

Per ottenere questo risultato è necessario lanciare da codice la shell mediante il comando Exec[] nel modo che segue:

Public Sub Button1_Click()

 Exec [System.Shell]

End

Si potrà anche scegliere la "shell" da utilizzare, assegnandola alla Proprietà ".Shell".
Esempio:

System.Shell = System.Find("bash")


Per disattivare tale funzionalità, bisognerà gestirne il processo con Process e distruggerlo mediante il metodo .Kill:

Private pr As Process


Public Sub Button1_Click()

' Gestiamo il processo, creato da "Exec", mediante una variabile di tipo "Process":
 pr = Exec [System.Shell]

End


Public Sub Button2_Click()

' Distruggiamo il processo creato con "Exec":
 pr.Kill

End


Lanciare comandi e programmi dalla console dell'IDE di Gambas

In particolare si potranno lanciare in tal modo dalla console comandi bash e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di Process:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

 Print #pr, "gedit"

End


Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della shell, per gestirli altrove:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Read Write As "processo"

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

End


Public Sub processo_Read()

 Dim s As String

 Line Input #pr, s
  
 TextArea1.Text &= s & "\n"
 
End


Intercettare il testo scritto nella console dell'IDE di gambas

L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene semplicemente scritto nella console medesima. Dopo aver scritto il testo nella console, l'utente dovrà premere per ogni riga di testo il tasto "Return" od il tasto "Invio":

Private pr As Process
Private fl As File 


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

' Apriamo in lettura e sottoponiamo in osservazione lo standard Out:
 fl = Open "/dev/stdout" For Read Watch

End


Public Sub File_Read()

 Dim s As String
 
 Line Input #fl, s
  
 TextArea1.Text &= s
 
 Print "Osservato: "; s

End

Public Sub Button1_Click()
  
' Per andare "a capo" nella TextArea:
 TextArea1.Text &= Chr(10)
 
End