Category Archives: Gambas

Gambas – una GUI facile per Linux – 2

g2

Ancora su Gambas, continuo da qui.
Oggi concludo con una piccolissima demo di come utilizzarlo quale interfaccia grafica per programmi che questa interfaccia non ce l’hanno, quelli per la linea di comando nel terminale proprio come si usava una volta (e anche adesso, dai!).

demoG

Ecco il risultato della demo. Contiene un’area di testo per visualizzare messaggi (una Label) e tre pulsanti:

  • chi sono scrive nell’area di testo il path della directory dove si trova l’eseguibile (in realtà pCode) Gambas e il nome dato al progetto;
  • esegui lancia uno script Python e visualizza il risultato nell’area di testo;
  • pulisci pulisce l’area di testo.

Lo script Python è semplicissimo (tx.py, nella sub-dir py):

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time

t0 = time.time()
time.sleep(10)
t1 = time.time()

print t1 - t0

Esegue una pausa di 10 secondi e scrive il tempo trascorso. La scritta destinata al terminale verrà intercettata da Gambas.

Ecco il codice Gambas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Gambas class file

  Public progdir As String
  Public appname As String

Public Sub Form_Open()
  progdir = Application.Path
  appname = Application.Name
End

Public Sub chi_Click()
  area_ris.Text = progdir & "\n" & appname
End

Public Sub esegui_Click()
  Dim cmd As String, ris As String
  area_ris.Text = area_ris.Text & "\n\neseguo tx "
  area_ris.Refresh()
  Message("eseguo tx")
  cmd = "python " & progdir &/ "py/tx.py"
  Shell cmd Wait To ris
  area_ris.Text = area_ris.Text & ris
End

Public Sub pulisci_Click()
  area_ris.text = ""
End

Qualche osservazione:

  • le variabili sono locali, tranne quelle dichiarate Public, righe 3 e 4;
  • le inizializzazioni possono essere fatte nella Form_Open(), riga 6;
  • valgono gli usuali caratteri di escape, riga 12;
  • per concatenare i path c’è l’operatore &/, riga 20;
  • ho usato Shell, riga 21,  ma esiste anche Exec, non ho indagato sulle differenze, lasciate ccome compito a casa;
  • il parametro Wait, riga 21, sospende il programma fino alla fine del processo lanciato da Shell;
  • Message, una dialog box, alla riga 19 si è reso necessario per aggiornare l’area di testo, senza di esso la scritta di riga 17 e il refresh di riga 18 non producono alcun effetto;
  • la variabile ris contiene il testo scritto dal processo figlio, quello che sarebbe finito nel terminale; in pratica una pipe;
  • durante l’esecuzione della Shell la finestra dell’applicazione cambia colore, ingrigisce;
  • non ho riscontrato un aumento di risolse (memoria e CPU) apprezzabili.

Si userà? Forse, non dipende da me. E poi questo esempio è inusuale, trascurando il linguaggio di programmazione. A proposito, qui tutte le info che servono.

tipo

Non ho capito perché ma nella definizione del progetto ho dovuto selezionare QT altrimenti non riesco a inserire testo nei TextBox. Ma si sa che sono niubbo :mrgreen:

Gambas – una GUI facile per Linux – 1

Gambas_3Io che sono vecchio sono abituato al terminale e alla linea di comando; i giovani meno.
Io che sono vecchio sono abituato a Linux, figlio, non si sa bene quanto legittimo, di Unix (certo che gli assomiglia parecchio), anzi ho cominciato molto prima; i giovani no. E spesso prendono le cose che faccio e le spostano su Windows. Spesso ci mettono un’interfaccia grafica, in genere fatta in VisualBasic.

Per Linux esiste qualcosa di simile, non la stessa cosa ma non troppo differente. Sto parlando di Gambas, un ambiente di sviluppo libero creato da Benoît Minisini.
Recentemente ho preparato una piccola demo, ve la racconto in questo post e uno successivo, quasi pronto (a volte dico bugie).

La scelta di Gambas nasce anche dal fatto che per gli script Python nella versione 3.x non è disponibile il package Wx; e forse non lo sarà mai, è in sviluppo ma praticamente fermo da troppo tempo. GTK si è dimostrato troppo complesso (e, forse, non completo). Probabilmente presenterò anche altre alternative, l’anno prossimo.

tb

L’esempio di oggi è una toolbar, 3 pulsanti grafici che svolgono compiti diversi, rispettivamente:

  • visualizzare un messaggio;
  • aprire l’home page di OK, panico nel browser predifinito;
  • chiudere l’applicazione.

Naturalmente è solo un esempio, senza pretese, per vedere se va.

ide

L’ambiente di sviluppo è simile a quelli presenti su Windows (VB, Delphi), si parte con definire un progetto e la sua directory di lavoro. Questa verrà popolata da diversi file e sottodirectory ma tutti nascosti.

files

In figura compaiono anche i nomi delle immagini usate per sfondo, pulsanti e icona del progetto. Assemblarli e assegnare loro gli script è semplicissimo, proprio come il VB (che non è mai stato il mio linguaggio preferito, anzi…). A differenza del Basic occorre dichiarare tutte le variabili prima di usarle; e c’è lo stesso comportamento con Maiuscole/minuscole. Ci sono differenze di linguaggio, ma sono documentate (non è che ho approfondito più di tanto).

Una volta che il programma è deguggato nell’IDE si può creare l’eseguibile, un file pCode con estensione .gambas; e anche possibile creare il package per la distribuzione.

unity

L’eseguibile funziona come ci si aspetta, la sua icona compare regolarmente nella barra di Unity (per Ubuntu).

Il codice Basic per il mio esempio è semplicissimo:

' Gambas class file

Public Sub Fine_Click()

  Quit

End

Public Sub OKp_Click()

  Shell "xdg-open " & "http://www.okpanico.wordpress.com"  

End

Public Sub messaggio_Click()

  Dim msg As String
  msg = "Ecco la mia toolbar\nfatta con Gambas3"
  Message(msg)

End

Quindi…
Restano da fare alcuni test prima di dare un giudizio. Prossimamente… forse… :mrgreen: