Rendere la console dell'IDE funzionale come un Terminale
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
Per disattivare tale funzionalità, bisognerà gestirne il processo con Porcess 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 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