Haciendo Un Front-end Para El Comando Find De Gnu/linux.


Subject: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
Una de las utilidades de Gambas2, es usarlo como front-end (un entorno visual para un comando de la terminal).

En estos 5 videos, explico como hacerlo para el comando find, que lo aprendí a usar en el curso de fpo de programador de sistemas.

Bien os resumo un poco de lo que tratan los videos:
- usar contenedores expander, Vbox, y Frame
- uso de un combobox
- uso de procesos (aunque al final no pude dar con la tecla para usarlo con find)
- Ejecutar Shell
- Redireccionamiento de salida de un comando ">"
- Crear la orden con distintas opciones (checkbox y valuebox,y usando If...then)
- Cargar los datos de un archivo a un gridviews.
- Copiar los datos del gridviews al portapapeles del sistema

Los videos son largos (aconsejo que lo bajeis con el Downloaded Helper de Firefox, para que lo veais con el VLC, en vuestro ordenador tranquilamente).

Realmente, lo que hice fue grabarme mientras me hacia el programa, y no he eliminado los errores que cometo ni las dediciones de cambiar de exec a shell, al ver que no me funcionaba como yo esperaba el control de los procesos.
Creo que así se puede aprender más y valorar realmente el esfuerzo y el tiempo que supone hacer un programa (aunque este apriori parezca sencillo).

Bueno os dejo aquí los enlaces a los videos (y también en la sección de video tutoriales aparecerán..)

http://jsbsan.blogspot.com/2011/02/...nd-para-el.html

front-end-find

Saludos


Link


Link


Link


Link


Link

Subject: Re: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
Hola Julio!.

Cuando usaste la linea de comandos, usaste una cadena.Y luego daba problemas y tuviste que direccionarlo a un archivo.

¿ Qué te parece algo asi ?.

Es como ejemplo.En el programa use el Gridview.


PUBLIC SUB ButtonBusca_Click()

DIM scad AS NEW String[]
scad.Add("find")
scad.Add(User.Home)
scad.Add("-name")
scad.Add(TextBoxBuscar.Text)

EXEC scad TO TextAreaSalida.Text

END


En el codigo del frontend use:

PUBLIC SUB ToolButtonBuscar_Click()
DIM buscar AS String
DIM a AS Integer
DIM fila AS Integer


ruta = TextBoxRuta.Text
buscar = TextBoxBuscar.Text


lineadecomando.Add("find")
lineadecomando.Add(ruta)
lineadecomando.Add("-name") 'Si lo pones separado la busqueda no es correcta, dando todas las rutas y archivos

lineadecomando.Add(buscar)

IF CheckBoxdesde.Value = TRUE THEN
lineadecomando.Add("-mtime")
lineadecomando.add("+" & (Str$(ValueBoxdesde.Value)))
ENDIF

IF CheckBoxhasta.Value = TRUE THEN
lineadecomando.Add("-mtime")
lineadecomando.add("-" & (Str$(ValueBoxhasta.Value)))
END IF

IF CheckBoxdesdeTamano.Value = TRUE THEN
lineadecomando.Add("-size")
lineadecomando.Add("+" & (Str$(ValueBoxminimo.Value)) & (Left$(ComboBoxTamano.Text, 1)))
ENDIF

IF CheckBoxhastaTamano.Value = TRUE THEN
lineadecomando.Add("-size")
lineadecomando.Add("-" & (Str$(ValueBoxmaximo.Value)) & (Left$(ComboBoxTamano.Text, 1)))
END IF

'Esto no se refleja en el gridview

'IF CheckBoxError.Value = TRUE THEN
' lineadecomando.Add("2>/dev/NULL") 'Cuando no tenemos permiso para entrar en un directorio, no muestra el error
'ENDIF



EXEC lineadecomando TO buf

scads = Split(buf, "\n")

IF Len(buf) <> 0 THEN
fila = 0
FOR a = 0 TO scads.Count - 1
GridViewResultado.Rows.Count = fila + 1
GridViewResultado[fila, 0].Text = scads[a]
fila = fila + 1
NEXT
ELSE
RETURN
ENDIF
GridViewResultado.Rows.Remove(GridViewResultado.Rows.Count - 1)


END

Subject: Re: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
Creo que ahora entiendo por que no lo hiciste así.

También podría ser que como tu dijiste lo vas haciendo sobre la marcha.
Demasiado bien te queda y bien agradecido estoy y estamos con las molestias que te tomas.
Cuando escribí el mensaje era a toda prisa y saliendo del curre.

Cuando lo hice como matriz de cadena fue por problemas que me daba la cadena lineadecomando. Como si buf estuviera vacío,
no encontré error en los espacios y la sentencia creada era correcta, pero no se ejecutaba con EXEC.

Tengo que repasarlo por que me sigue dando problemas.

En el manual de gambas aparece como una matriz de cadena...

Sigue así Julio.A ver cual es tu próximo video tutorial.

Subject: Re: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
Tu solución parece mas logica, me pero me dio problemas tambien a mi, por eso pense en el redireccionamiento, que siempre funciona....

Saludos

Subject: Re: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
Hola.

Ayer termine de ver los 5 vídeos.

Al final te dio problemas EXEC y tuviste que usar SHELL. Pero la cosa es que te dio problemas de buenas a primeras.A mi no me iba bien desde un principio con EXEC.
SHELL es mejor.Nunca entenderé por que me dio tantos quebraderos de cabeza cuando le pasaba lineadecomando a EXEC. Y eso que me aseguraba de que los espacios
estaban correctos.

La etiqueta de "Buscando" se te quedo pendiente.

La hice, pero no veas que rollo cuando es una búsqueda prolongada, o se queda apagado el formulario.
Para búsquedas de pocos archivos, bien.Rotaba perfectamente.

El ejemplo del libro es bueno.El del botón de la descarga.

No hay mucha diferencia con lo que estabas poniendo.

....

hproc = SHELL lineadecomando

Lblinfo.Text = "|"

DO WHILE hproc.State = Process.Running
SELECT CASE Lblinfo.Text
CASE "|"
Lblinfo.Text = "/"
CASE "/"
Lblinfo.Text = "-"
CASE "-"
Lblinfo.Text = "\\"
CASE "|"
Lblinfo.Text = "|"
CASE ELSE
Lblinfo.Text = "|"
END SELECT
WAIT 0.1
LOOP

contenido = File.Load(User.home & "/busqueda.txt")


scads = Split(contenido, "\n")

fila = 0
IF scads.Length > 0 THEN
FOR a = 0 TO scads.Count - 1
GridViewResultado.Rows.Count = fila + 1
GridViewResultado[fila, 0].Text = scads[a]
fila = fila + 1
NEXT
GridViewResultado.Rows.Count = fila - 1
ELSE
Message.info("No se encontró ningún archivo")
RETURN
ENDIF


Lblinfo.Text = "Búsqueda Finalizada"



El control de los procesos es un poco complicado.
No use WAIT al final del proceso.No saldría nada en la etiqueta.

Hasta otra Julio.

Subject: Re: Haciendo Un Front-end Para El Comando Find De Gnu/linux.
ok, es una buena mejora lo de la / del tiempo


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1516s (PHP: -1% SQL: 101%)
SQL queries: 22 - Debug Off - GZIP Enabled