Archive for Julio, 2007

Julio-11-2007
Filed Under (Python) by Pedro Guridi

¿Como tomar un screenshot de toda la pantalla?

Usando la API GDK Pixbuf. La salida puede ser en PNG o JPEG, en el caso del ultimo es posible elegir la calidad pasando como parámetro al metodo gdk.Pixbub save() un valor entre 0 y 100.

# Entre "png" o "jpeg"
 formato = "jpeg"
 ancho = gtk.gdk.screen_width()
 alto = gtk.gdk.screen_height()
 screenshot = gtk.gdk.Pixbuf.get_from_drawable(
              gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, ancho, alto),
              gtk.gdk.get_default_root_window(),
              gtk.gdk.colormap_get_system(),
              0, 0, 0, 0, ancho, alto)
# Pixbuf tiene un método save
# Nota: el formato png no soporta el argumento "quality"
 screenshot.save("screenshot." + formato, formato,  {"quality": "20"})

Advertencia: Si planea utilizar este codigo en un bucle, o muchas veces dentro del programa, sería mejor agregar el siguiente código para evitar un desborde de memoria (considerando el tamaño del bitmap de esas proporciones), según un bug detallado aquí: [www.async.com.br].

del screenshot
gc.collect()

Traducción al español de: faq.pygtk.org



Julio-10-2007
Filed Under (Dell, Ubuntu) by Pedro Guridi

Quienes posean una laptop Dell 9400 con Ubuntu (probablemente funcione en otros modelos también), habrán notado que por defecto solo funcionan los parlantes frontales. Para activar los “subwoofers” abre el archivo /etc/modprobe.d/alsa-base como root:

gksudo gedit /etc/modprobe.d/alsa-base

Y agrega al final:

options snd-hda-intel model=ref

Luego reiniciar, y ya deberían disfrutar a pleno del sonido ;).

(Asegurarse de que en el control de volúmen, el canal “LFE” está activado.)



Julio-10-2007
Filed Under (Python) by Pedro Guridi

Si tienes programas realizados en Python/Glade, puede ser útil internacionalizarlos, el texto de los menús/mensajes/botones, etc, se mostrará en el idioma definido en el sistema.

Herramientas utilizadas:

  • PyGtk
  • Glade
  • Python 2.3
  • GNU gettext
  • Gtk+ 2.4.1
  • Libglade 2.4.0

Extrayendo los mensajes de Glade:

Necesitarás de intltool, una utilidad para internacionalizar documentos en XML. Si usas Debian alcanza con teclear:

apt-get install intltool

El programa intltool-extract extrae las cadenas de texto de un archivo glade (en el ejemplo “miprograma.glade”) y genera un archivo .h (en el ejemplo “miprograma.h”):

intltool-extract --type="gettext/glade" miprograma.glade

 

No se necesita editar el archivo .h, será leido por xgettext.

Generando archivo de traducción:

xgettext -k_ -kN_ -o mensajes.pot *.py *.h

Creará un archivo de traducción “mensajes.pot” a partir de los codigos fuente python y de los archivos .h generados por intltool-extract

Creando archivos de traducción:

Para que sea posible crear traducciones para diferentes idiomas es necesario crear un archivo para cada una. Para esto se utiliza msginit.

En este ejemplo msginit crea el archivo es_ES.po adecuado para la traduccion al español:

msginit -i mensajes.pot -l es_ES

Una vez traducido el archivo es_ES.po es necesario generar el archivo que será utilizado por el programa:

msgfmt es_ES.po -o po/pt/LC_MESSAGES/miprograma.mo


No importa el nombre del directorio donde se coloque el archivo *.mo, pero la estructura del directorio tiene que ser <directorio>/<locale>/LC_MESSAGES/<nombre-de-programa>.mo. Donde <locale> es algo como es o es_ES.

Hacer que el programa reconozca las traducciones :

Tipicamente un programa de python usando libglade tendrá strings para ser traducidas tanto en el programa python como en el arquivo glade. Para lidiar con los strings en las fuentes python se puede usar el módulo gettext. Todos los strings a ser traducidas deven usar el método gettext de ese módulo:

 print gettext.gettext("Texto a ser traducido")

Es mucho mas práctico usar el formato _(<string>), pero para eso se debe definir _ como gettext.gettext:

 _ = gettext.gettextprint _("Texto a ser traducido")

Normalmente los archivos con mensajes de traducción van en “/usr/share/locale”, pero mientras tanto este desarrollando su programa es bastante útil tenerlos en un directorio local, algo como “i18n” o “po”:

APP=‘miprograma’

DIR=‘po’

Un ejemplo mas completo sería:

import gettext
 
APP='miprograma'
DIR='po'
 
gettext.bindtextdomain(APP, DIR)
gettext.textdomain(APP)
 
_ = gettext.gettext
 
gtk.glade.bindtextdomain(APP, DIR)
gtk.glade.textdomain(APP)
 
gui = gtk.glade.XML("miprograma.glade")
.....

Del original en portugues



Julio-10-2007
Filed Under (Python) by Pedro Guridi

Para llamar a un programa escrito en python, desde un programa en C, necesitas instalar el paquete python-devel en Linux.

Ejemplo codigo C, lanzando “miprograma.py”:

#include <stdio.h>
#include <python2.5>
int main(int argc, char *argv[])
{
  Py_Initialize();
  FILE * f;
  f = fopen("miprograma.py", "r");
  PyRun_SimpleFile(f, "miprograma.py");
  Py_Finalize();
  return 0;
}

Para compilar usar:

$ gcc -Wall -O2 -I/usr/include/python2.5/ -c programa.c -o programa.o
$ gcc -Xlinker -lpython2.5 programa.o -lm -L/usr/lib/python2.5/config/libpython2.5.a -o programa



Julio-10-2007
Filed Under (Python) by Pedro Guridi

Un programa en python para contar las vocales y consonantes en un texto.

# -*- coding: cp1252 -*-
# Cuenta las letras, vocales y consonantes de un texto
# 03/2007 - Marco André - marco@sociesc.org.br
# 07/2007 - Pedro Guridi - pipiten@gmail.com
texto = """Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod
tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minimveniam,
quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea
commodi consequat."""
print "Contar Letras - Vocales y Consonantes"
texto = texto.lower() #convierte a minúsculas
 
#remover espacios, lineas y símbolos de puntuacion
texto = texto.replace(" ","")
texto = texto.replace("n","")
texto = texto.replace(".","")
texto = texto.replace("!","")
texto = texto.replace("?","")
texto = texto.replace(",","")
texto = texto.replace(";","")
 
#remover acentos
texto = texto.replace("á","a")
texto = texto.replace("à","a")
texto = texto.replace("ã","a")
texto = texto.replace("é","e")
texto = texto.replace("ê","e")
texto = texto.replace("í","i")
texto = texto.replace("ó","o")
texto = texto.replace("ô","o")
texto = texto.replace("ú","u")
vocales = 0
consonates = 0
for caracter in texto:
    if caracter in 'aeiou':
       vocales = vocales + 1
    else:
       consonantes = consonantes + 1
 
print "Vocales: %d" %vocales
print "Consonantes: %d" %consonantes
print "Total de letras: %d - %d" %(len(texto), (vocales+consonantes))

Original en portugues



Julio-8-2007
Filed Under (General) by Pedro Guridi

Traduccion al español del portugués:

Un vendedor,

Escuchó decir que Brasil sufría de una grave falta de palabras. En un programa de TV, vio una escritora lamentando que no se leían libros en esa tierra, por eso las palabras estaban en falta. El mal tenía hasta nombre de bautismo, como cualquier dolencia grande, “indigencia lexical”. El comerciante no perdió tiempo en tener una idea fantástica. Tomó el diccionario, mesa y cartulina y salió al mercado a buscar espacio entre los vendedores ambulantes. Entre una banca de relojes y otra de lencería instaló la suya: una mesa, el diccionario y una cartulina en la cual se leía:

 

“Histriónico - apenas R$ 0,50!”

 

Pasaron casi 4 horas hasta que el primero de mas de 50 curiosos parase y preguntase.

 

- ¿Que es lo que está vendiendo?

 

- Palabras, mi señor. La promoción del día es histriónico a 50 centavos como dice la placa.

 

- Usted no puede vender palabras. Ellas no son suyas. Las palabras son de todos.

Read the rest of this entry »



Julio-7-2007
Filed Under (Python) by Pedro Guridi

Emesene es un nuevo Cliente para MSN Messenger, escrito en PyGtk, por un argentino. Me ah gustado mucho de un comienzo, y progresa bastante rapido.

Aqui les dejo un Plugin para dicho cliente, para quienes usen el Banshee como reproductor de musica.

* Es una modificacion del Plugin para Listen Media Player.

Instalación:

Descompriman el archivo Banshee.py , y copienlo a:

$HOME/.config/emesene1.0/pluginsEmesene/Banshee.py

, y ya deberia figurar en la lista de plugins del Emesene!.

Download: Banshee.zip