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
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