Creación de aplicaciones de escritorio en Linux, con Python y Glade
Desde que me cambié completamente a Ubuntu en el PC de la casa, extrañaba un programa al que no le encontré un sustituto: un programa para trozar archivos binarios. Con Windows usaba un programa freeware llamado Hacha.
Durante Diciembre me empeñé en hacer una versión para Linux de este programa, que creo que está lo suficientemente madura para entregarla a Uds. como regalo de Navidad :-)
¿Por qué Python?
Podría haberla hecho en Java, pero sería muy pretencioso para un programa tan pequeño, y para tener el look nativo del escritorio en Ubuntu tendría que haberlo hecho con bindings para Java... muy complicado.
Lejos, la combinación de tecnologías más atractiva para hacerlo era usar Python con GTK y Glade. Python viene con todas las distribuciones Linux modernas y creo que es el lenguaje más atractivo para aprender hoy por hoy. Además, en Ubuntu se tiene Python, GTK y Glade como parte de la instalación base. De hecho, el actualizador de paquetes (update-manager) está hecho con ellos.
Para diseñar la interfaz de usuario de nuestra aplicación usamos Glade, que tiene una apariencia más o menos similar a otros entornos para desarrollar aplicaciones de escritorio como Delphi o Visual Basic. Con Glade, la definición de las pantallas de nuestra aplicación queda contenida en un gran archivo XML que cargamos desde el programa principal escrito en Python.
Les recomiendo la experiencia a todos quienes usen Ubuntu hoy y que hayan usado Visual Basic en el pasado. Con Glade se tiene la facilidad y rapidez en el diseño, pero con un lenguaje de verdad.
Otras cosas interesantes que vienen de casi de fábrica son la internacionalización (para que usarios de otras partes del mundo puedan usar el software en su idioma y unidades nativas). Con poco esfuerzo, se generan los archivos con los textos a traducir, de forma consistente y con una detección que funciona sin problemas.

¿Qué hace el programa?
El programa te permite tomar un archivo grande y cortarlo en trozos más pequeños, que puedes enviar a otro equipo y volver a reconstruir el programa original. Puedes indicar el tamaño de los trozos, y si quieres generar un archivo de verificación para comprobar que un archivo reconstruido es igual al original.
¿Cómo lo instalo?
Por ahora, no he creado un repositorio compatible con Debian, ni lo he empaquetado, así que las alternativas más sencillas son dos:
Para usuarios novatos de Ubuntu
1.-Bajar el archivo gtkfilesplitter_0.1.1-0ubuntu1_i386.deb desde la página de descargas del proyecto en Google Code. Guardarlo en el escritorio u otra carpeta.
2.- Hacer doble-click al archivo, para instalarlo. Seleccionar "Instalar el paquete" y usar la contraseña de administrador del equipo.
3.- Listo. Ahora puedes utilizar el programa ejecutando "gtkfilesplitter" en un terminal (Aplicaciones > Accesorios > GtkFileSplitter).
Para usuarios expertos y desarrolladores
En este caso, lo mejor es hacer checkout del proyecto desde el repositorio Subversion.
1.- Si no tienes instalado Subversion, apt-get install subversion
2.- Para hacer checkout del proyecto con:
svn checkout http://gtkfilesplitter.googlecode.com/svn/trunk/ gtkfilesplitter
3.- Ejecutar en un terminal: python gtkfilesplitter.py
Ojo: El código es de una calidad bastante pobre y poco Pythonic, así que se aceptan sugerencias.
Enlaces recomendados para aprender
- blog de Denis
- 6092 lecturas



ayuda
saludos... estoy nuevo en linux... tengo unos archivos cortados con hacha (creo... la extension es .000, .001 y asi susecivamente), que prodria hacer para unirlos en ubuntu?... agradecere cualquier ayuda
exelente
muy buena herramienta, se te agradece, siempre es util un programa como estos, y mas cuando aun usas dikette :P, (si yo lo uso)
Muy Bueno
Es muy bueno el articulo lo agregare a favorito
wxWidgets ?? why not ?
Hola, me parecio interesante tu articulo ya que estoy en un proyecto con python y siempre me ha gustado la construcción de GUI's en delphi, sin embargo no tengo experiencia con otras tecnologías cross platform y leyendo por ahi me pareció que lo más multiplataforma que existe son las wxWidgets.
Asi es que me pregunto ¿Tuviste algun motivo especial por el que escogiste Gtk ??
Saludos y gracias de antemano por la respuesta.
Muy bueno
Está muy bien Denis, de hecho he aprendido tu forma de hacer interfaces dinamicas (el ocultar la caja que no deberia de verse :P), yo basandome en mi experiencia con python te diría que es código muy pythonico, pero si opinaria algo:
Si estás usando en modulo "sys" solo para salir del programa, podrías mirar esto:
pones:
Así no tienes que cargar sys para nada y hace la misma funcion. Puedes colocar un string como argumento para mostrar mensaje ;)
Nada más :P
Un saludo.
Muy bueno
Está muy bien Denis, de hecho he aprendido tu forma de hacer interfaces dinamicas (el ocultar la caja que no deberia de verse :P), yo basandome en mi experiencia con python te diría que es código muy pythonico, pero si opinaria algo:
Si estás usando en modulo "sys" solo para salir del programa, podrías mirar esto:
try:
import gtk
import gtk.glade
except:
sys.exit(1)
pones:
except:
raise SystemExit()
Así no tienes que cargar sys para nada y hace la misma funcion. Puedes colocar un string como argumento para mostrar mensaje ;)
Nada más :P
Un saludo.
Me interesa Phyton
De un tiempo a esta parte me interesado mucho en el mundo de software libre, lo veo más robusto y confiable. Dentro de todo este universo, me atrae aún mas el desarrollo de aplicaciones de escritorio. Favor de enviarme links o recursos para dar mis primeros pasos en este largo camino.
Saludos de un apasionado del sosftware libre.
Bonito artículo, yo estoy
Bonito artículo, yo estoy tratando de entrarle a wxWidgets pero se me está atragantando (soy electrónico, no informático :P). Desde hace algún tiempo he visto Python y la verdad es que se me antoja, pero lo checaré más tarde pues estoy decidido a no dejarme vencer por C++ y toda su "truquería" ;).
Pregunta: ¿piensas hacer el programa compatible con Hacha? Por allí hay un par de aplicaciones de código abierto para unir archivos de Hacha.
No es compatible con Hacha
No, no fue hecho compatible con Hacha. Al parecer, Hacha incrusta el código de verificación del archivo (checksum) dentro de los trozos de archivo que generas. En mi programa, el código de verificación es opcional y se graba en un archivo por separado (archivo.md5).
Una gracia del programa es que de esta forma, los trozos los puedes unir simplemente concatenando los archivos. En Linux/Unix puedes hacerlo con "cat" y en Windows con "copy /b"
Saludos,
—Denis
California roll connoisseur
Genial, lo pondre en mi sitio
Estimado, me parece una idea genial tu programa... me has solucinado unna gran controversia...
Voy a nombrar este post en mi sitio www.vivelinux.cl, si no deseas que sea asi, por favor enviame un mail a zar@vivelinux.cl y lo sacare....
Genial!
Hace tiempo que le estoy echando una mirada a python para desarrollo de aplicaciones graficas.... Una consulta, el algortimo en si lo implementaste tu? o es una interfaz de split?
—
Alvaro Graves - agraves [at] dcc punto uchile punto cl
MSN: no_mas_zpam [@]correocaliente punto com
Seconds Out, Genesis Tribute
Es un wrapper
Hola,
No, no es una interfaz gráfica sobre split, porque no recordaba que podía trozar archivos binarios (alguna vez lo usé, pero solo podías trozar indicando el número de líneas en un archivo de texto).
El algoritmo para trozar (es super simple) lo tomé de esta receta en los foros de ActiveState. El autor aparece en los créditos de mi programa.
Saludos,
—Denis
California roll connoisseur