Buenas!.
Necesita mejoras. Lógicamente que el nombre del paquete se pueda variar, un formulario personalizado, o hacerlo desde línea de comando.
En este caso solicito información sobre el paquete "Oregano", en el mismo código.
Creamos una aplicación QT y pegamos el código, los objetos se crean directamente desde el código.
Código:
' Gambas class file
Private acontArchivo1 As String[]
Private contenedorprincipal As Panel
Private esdescripcion As Boolean
Public Sub Form_Open()
Dim contenido As String
Dim linea As String
Dim frase1 As String
Dim frase2 As String
Dim posicion As Integer
'Solicitamos información sobre el paquete oregano.
Shell "apt show oregano" To contenido
acontArchivo1 = Split(contenido, gb.NewLine, "", True)
esdescripcion = False
With Me
.Arrangement = Arrange.Horizontal
.Spacing = True
.H = 0
End With
contenedorprincipal = New Panel(Me)
With contenedorprincipal
.Arrangement = Arrange.Vertical
.Expand = True
.Margin = True
End With
For Each linea In acontArchivo1
posicion = InStr(linea, ":")
If posicion > 0 And Not esdescripcion Then
frase1 = String.Mid(linea, 1, posicion - 1)
frase2 = String.Mid(linea, posicion + 1)
If frase1 <> "Description" Then
ConstruirBloque(frase1, frase2)
Else
esdescripcion = True
frase2 = ""
Endif
Else
If esdescripcion Then frase2 &= linea & gb.NewLine
Endif
Next
If esdescripcion Then ConstruirBloque(frase1, frase2)
esdescripcion = False
End
Public Sub ConstruirBloque(encabezado As String, contenido As String)
'TODO: En caso de ser dependencias puede que se deba crear un TextArea para que se muestre mejor la información para estas
Dim contenedor As Panel
Dim etiqueta As Label
Dim cajadetexto As TextBox
Dim cajatextarea As TextArea
contenedor = New Panel(contenedorprincipal)
With contenedor
.Arrangement = Arrange.Horizontal
.Spacing = True
.H = 25
Me.H += .H
End With
If Not esdescripcion Then
etiqueta = New Label(contenedor)
With etiqueta
.W = 180
.H = 20
.Alignment = Align.Right
.Font = Font["MonoSpace,Bold"]
.Text = encabezado
End With
cajadetexto = New TextBox(contenedor)
With cajadetexto
.H = 20
.Text = contenido
.Expand = True
End With
Else
etiqueta = New Label(contenedor)
With etiqueta
.W = 140
.H = 20
.Alignment = Align.Left
.Font = Font["MonoSpace,Bold"]
.Text = encabezado
End With
cajatextarea = New TextArea(contenedorprincipal)
With cajatextarea
.H = 100
.Text = contenido
.ScrollBar = Scroll.Vertical
.Expand = True
.Pos = 0
Me.H += .H
End With
Endif
End
Saludos