Páginas

domingo, 2 de noviembre de 2014

Front End para df: Espacio: conocer datos de nuestras particiones y unidades conectadas


Front End para df:

Espacio: conocer datos de nuestras

particiones y  unidades conectadas


En gnu/linux, existe un comando que nos informa del espacio disponible, del usado y del que nos queda libre, se llama "df" (enlace). Pues he creado una pequeña utilidad en gambas3, que nos permite mostrar en una ventana la información, incluyendo una barra de proceso para de un simple vistazo, ver como estamos de espacio en nuestro disco.


Este es el enlace de descarga del archivo fuente y del instalador .deb


Nota:
Se instala en el menú de Aplicaciones  de Oficina

A nivel de programación es un ejemplo de:
- Uso de la función Scan para extraer cadena de texto usando patrones.
- Creación de controles durante la ejecución del programa.

Este es el código fuente del programa:
Public Sub analiza()
'carga y analiza los datos que suministra el comando: df -h
Dim datos As String
Dim lineas As String[]
Dim l As String
Dim informe As String[]
Dim contador As Integer

Shell "df -h" To datos

lineas = Split(datos, "\n", "", True, "")
contador = 0
For Each l In Lineas
Inc contador
If contador <> 1 Then
informe = Scan(l, "* * * * * *")
creaControles(informe)
Endif
Next
Me.h = lineas.max * 30

End

Public Sub Form_Open()
'para leer la configuración del formulario
settings.read(Me)
'vamos a analizar la salida del comando df -h
analiza()

End

Public Sub creaControles(i As String[])
'creación de controles en tiempo de ejecución
Dim h As Hbox
Dim t As Label
Dim b As ProgressBar
'crear un hbox
h = New Hbox(Me)
t = New Label(Me)
t.text = i[0]
t.h = 10
t.Tooltip = i[0] & " " & i[1] & " " & i[2] & " " & i[3] & " " & i[4] & " " & i[5]
b = New ProgressBar(Me)
b.value = Val(Replace$(i[4], "%", "")) / 100
b.h = 10
b.Tooltip = i[0] & " " & i[1] & " " & i[2] & " " & i[3] & " " & i[4] & " " & i[5]

End

Public Sub Form_DblClick()

analiza()

End

Public Sub Form_Close()
'antes de salir de la aplicación, guardamos el estado de la ventana (ancho, largo y posicion x, y)
settings.write(Me)

End