Programando en la xo

Directorios y archivos de una Actividad:

Dentro de un directorio llamado Miactividad.activity se encuentran todos los archivos y directorios de la actividad.
La estructura mínima de directorios y archivos es la siguiente:

/Miactividad.activity
    Miactividad.py
    setup.py
    /activity
        activity.info
        miicono.svg

NOTA:
Antes de empaquetar tu actividad, debes darle a cada archivo los permisos adecuados, de lo contrario la actividad no funcionará.
  • Todos los archivos dentro del directorio Miactividad.activity debe tener los permisos 644.
  • Todos los archivos dentro del directorio activity tambien deben tener los permisos 644.
  • La carpeta Miactividad.activity debe tener los permisos 755.
  • También la carpeta activity debe tener los permisos 755.
Resumen:
Todos los directorios deben tener los permisos 755 (drwxr-xr-x) y todos los archivos deben tener los permisos 644 (-rw-r--r--).

Recién después de asignar estos permisos, comprimes todo en un archivo zip, luego le cambias la extensión y le pones .xo y tu actividad estará lista para instalarse automáticamente en la xo.

Cosas a tomar en cuenta:
  • Una ventana de sugar es una ventana de gtk modificada, por lo cual, la clase principal de tu aplicación para sugar, en lugar de heredar de gtk.Window, debe heredar de activity.Activity. Y cuando agregues el widget interno, en lugar de usar add(widget), debes usar set_canvas(widget).
  • El archivo setup.py solo debe contener lo siguiente:
#!/usr/bin/python
from sugar.activity import bundlebuilder
bundlebuilder.start()
  • El archivo activity.info debe contener:
[Activity]
name = NombredemiActividad
bundle_id = org.laptop.NombredemiActividad
exec = sugar-activity Miactividad.MiclasePrincipal
icon = NombredelIcono
activity_version = 28
show_launcher = yes
license = GPLv2+

En la linea que dice: exec = sugar-activity Miactividad.MiclasePrincipal  Se pone el nombre del archivo donde se encuentra la clase principal de la aplicación seguido de un punto y del nombre de la clase base de la aplicación (la que hereda de activity.Activity)

Herramientas (Programitas que facilitan el desarrollo en la xo)
API de Sugar: http://api.sugarlabs.org/epydocs/


Ejemplos de Código Utilizando las Clases de Sugar:

Sugar es un Entorno de Escritorio Desarrollado sobre python y gtk.
Puedes ver 
mis primeras pruebas de código dónde se utilizan las clases de Sugar en el siguiente enlace: Interfase Sugar

Para ver o descargar el código de las clases que conforman el paquete Sugar, sigue el siguiente enlace: Sugar



Mis Primeros Pasos:

CeibalCalendario:
Luego de varias pruebas con el código de Sugar para comprender su funcionamiento y particularidades, me propuse el desarrollo de una actividad desde cero, que abarcara varios aspectos de desarrollo para poder de esta manera cubrir las generalidades del sistema y encontrar un método de desarrollo. Esa actividad inicial fue CeibalCalendario, puedes ver este proceso en el siguiente enlace: Calendario

CeibalRadio (Regalo de Reyes 2009):
Como resultado del desarrollo anterior, en la versión 6 del mismo donde me proponía incorporarle a CeibalCalendario un reproductor de audio y radios on-line, surge mi primera actividad funcional y terminada que fue CeibalRadio. Puedes ver este proceso en el siguiente enlace: CeibalRadio 1.0

Sugarización de Totem:
Como resultado del proceso de desarrollo de la actividad anterior y las pruebas realizadas para integrar un reproductor de audio en la xo, realicé la sugarización de Totem. Puedes seguir este proceso en el siguiente enlace:  Sugarizar una aplicación

Si bien, de todos los desarrollos anteriores, solo CeibalRadio es completamente funcional y estable, para mi fue muy importante concretarla ya que concluye una primera fase de aprendizaje que demandó mucha lectura, pruebas, estudio y tiempo. Además, fue la primera actividad en permitir la reproducción de archivos mp3 en las xo Uruguayas y de streaming de radios on-line. Fue lanzada desde el portal de CeibalJAM como regalo de reyes (2009) para nuestros niños, lo cual fue una gran satisfacción para mi.

CeibalWar:
En una segunda instancia, me dediqué a estudiar pygame que es una biblioteca de python para el desarrollo de juegos. De este estudio surgió CeibalWar. Puedes ver este proceso en el siguiente enlace: CeibalWar

Adaptador Sugar para pygame:
Como resultado del desarrollo anterior (nunca terminado), realicé mejoras sobre el adaptador de sugar para pygame. Puedes ver este proceso en el siguiente enlace: AdaptadorPygameSugar

CeibalTerminal:
Luego, al ver las dificultades que los usuarios de las xo manifestaban a la hora de manejar sus archivos y directorios, desarrollé CeibalTerminal. Este desarrollo pretendía ser un navegador de archivos independiente pero por razones particulares de nuestras xo, me vi obligado a integrarlo dentro de la terminal de sugar. Puedes seguir este proceso en el siguiente enlace: CeibalTerminal

Como funciona Rainbow:
Para realizar el proyecto anterior, fue necesario investigar el funcionameinto del sistema de seguridad de Sugar (Rainbow). Puedes ver una explicación sobre esto en el siguiente enlace: Rainbow en la xo

Investigando gstreamer:
Luego comencé a investigar gstreamer a los efectos de desarrollar un video-chat para la xo. Durante este proceso realicé diversas pruebas que dieron como resultado algunos programitas y utilidades que permiten la emisión y recepción de streaming de audio y video, los cuales fueron aprovechados para realizar talleres sobre redes con mis alumnos. Puedes ver este proceso en el siguiente enlace: Gstreamer

Circuito Cerrado de TV:
Dentro de la investigación anterior, destaco Circuito Cerrado de TV, la cual continúo utilizando en talleres con mis alumnos. Puedes informarte sobre este programita en el siguiente enlace: Circuito Cerrado de TV

JAMedia (Un fenómeno mediático inesperado):
Luego, a partir de la investigación sobre gstreamer, de la inquietud acerca de la reproducción de audio y video de calidad en la xo de la mayor cantidad de formatos posibles y de la idea de integrar en un solo reproductor tanto la reproducción de audio y video como de streaming de radios y Tv on-line, comencé una búsqueda que me llevó mucho tiempo, esfuerzo y dedicación, pero que al final me daría grandes satisfacciones pues se convirtió en un fenómeno mediático que fue publicado en diversos medios nacionales e internacionales. JAMedia, al permitir la reproducción de TV y ser lanzada 15 dias antes del mundial de fútbol, generó una marea de notas de prensa y gran efervescencia dentro de CeibalJAM, pues ahora era posible ver el mundial en la xo. Puedes ver este proceso en el siguiente enlace: JAMedia

A parte de lo realizado hasta el momento, siempre he estado buscando en la web, diversos programitas desarrollados en python ya que estos, con algunas modificaciones pueden ser portados a Sugar con relativa facilidad.

GeoJAM:
Es GMapCatcher sugarizado, una aplicación para ver y descargar mapas de todo el mundo. Puedes verlo en el siguiente enlace: GeoJAM

JAMesene:
Es emesene sugarizado, el conocido clon de msn para linux. Puedes verlo en el siguiente enlace: JAMesene

MiguelEstudia:
Simplemente una idea. En el liceo donde trabajaba en este entonces, había un alumno de 1º año, no vidente. Lograr que este alumno tuviera acceso a la lectura donde pudiera estudiar era un reto para sus profesores que no sabían como trabajar con él.Cuando algunos profesores me plantearon el problema, se me ocurrió hacer un programa que simplemente leyera el contenido de archivos ".txt", de esa manera los profesores podían pasarle el material preparado para que Miguel estudiara. MiguelEstudia

JAMtank:
Para aprender sobre la programación sobre redes. Juego multiplayer. JAMtank

BiblioJAM:
Hacer la interfaz para un juego en pygame es terriblemente complicado porque no hay ninguna librería que permita hacerlo rápido y fácil que funcione en la xo. Por ello, comencé el desarrollo de mi propia librería de controles y contenedores para pygame. BiblioJAM

CucaraSims:
Llegado este punto, luego de 2 años aprendiendo sobre python, pygame y la xo, me pareció que era hora de animarse a implementar una aplicación que sirviera para aprender jugando, jugar aprendiendo y que además pudiera ser utilizada en el aula con la guia del docente.

El tema elegido, es Artrópodos, pero dado la complejidad y posibilidades del tema, comencé por insectos y dentro de este tema, una de las actividades implementadas es CucaraSims. Personalmente, la considero una artesanía hecha en pygame que es además un resumen de todo lo aprendido hasta ahora. Puedes ver CucaraSims acá: CucaraSims

CucaraSims forma parte de Insectos.activity la cual luego formará parte de Artrópodos.activity.

Insectos.activity:
Realizada CucaraSims, continué el desarrollo hacia arriba. Insectos activity posee tres actividades para aprender jugando y jugar aprendiendo en el aula sobre los insectos. CucaraSims, Bichos Cantores y Ojos compuestos. Puedes verla acá: Insectos.activity

JAMActivityFlash:
Una actividad "tipo" para empaquetar desarrollos flash en sugar. Puedes verla acá: JAMActivityFlash 


Etc . . .