OLPC/XO - Desenvolvimento de Atividades para o Sugar
De LEC
Este documento visa orientar e facilitar a construção de atividades para o XO, fornecendo as principais informações sobre bibliotecas e técnicas utilizadas do ambiente de desenvolvimento do OLPC.
Tabela de conteúdo |
Ambiente de trabalho
Existem vários métodos de trabalho no desenvolvimento voltado ao XO. No entanto, o mais recomendado é ter o Sugar rodando em sua workstation. Para instalá-lo, basta seguir o tutorial cedido pela OLPC Instalando o Sugar. Neste link são apresentados diversos métodos para instalação do Sugar em diversos sistemas operacionais.
Uma outra maneira de se ter um ambiente de trabalho utilizando o XO é emulando o mesmo com o Qemu, mas isso também requer que se monte a imagem do sistema para poder inserir dados novos em sua árvore. Não é a melhor maneira de trabalhar.
O terceiro modo, e mais complicada, é trabalhar diretamente em um dos laptops. De longe esta é a melhor forma de trabalhar, pois as atividades podem ser produzidas e testadas utilizando-se o ssh e o nano.
Bibliotecas de desenvolvimento
Abaixo é apresentado o Core do XO
- Versão slim do Fedora Core (cerca de 100MB);
- Python 2.4
- Squeak
- Csound
- LOGO(talvez), não está incluso no BTest-1;
- Mozilla Gecko/Xul
- GUI toolkit (GTK+) (Gnome)
- Matchbox window manager
- Pango text layout
- Gnome Accessibility toolkit (ATK)
- Python GTK+ bindings version 2.10
- Cairo 2D-graphics support
- X Window System X.org Foundation
- Font rendering (Freetype)
- Avahi local service discovery
- Multimedia framework: gstreamer and RealNetworks;
- Interface Gráfica SUGAR;
Construção de uma atividade
O ambiente de desenvolvimento do XO tem como objetivo promover uma fácil construção das atividades, pois foi pensado para que as próprias crianças que possuíssem o laptop pudessem desenvolver e compartilhar suas atividades.
Com esse propósito foram criadas séries de classes que provªm o acesso aos diferentes recursos do sistema operacional, facilitando a construção de novas atividades. Estes recursos ainda precisam de melhorias para que no futuro uma criança consiga introduzir-se no ambiente de programação, mas para programadores já desenvolvidos, garante uma economia de tempo de estudo sobre o SO.
A atividade a ser desenvolvida não é muito diferente de uma aplicação comum, desenvolvida em python e pygtk. Porém, a principal diferença se dá na construção da interação entre as diversas máquinas, podendo uma fornecer Ã? outra recursos de que esta não disponha.
Para exemplificar essa construção, segue o tutorial básico de construção de uma atividade:
Desenvolvendo uma aplicação básica no XO
Ao desenvolver uma atividade, é oferecido um padrão de distribuição dos arquivos e nomes para os mesmos, afim de manter a coerªncia do sistema em geral. Informações mais precisas podem ser encontradas no wiki da OLPC, no que diz respeito Ã? criação de aplicações para o XO. Pacotes de Atividades
A estrutura principal de uma atividade segue o indicado abaixo:
ActivityName.activity/
activity/
activity.info
activity-icon.svg
localized/
de_DE.linfo
zh_CN.linfo
images/
sounds/
bin/
As atividades não necessitam ser instaladas para que o XO a carregue. O caminho mais simples é reiniciar o sugar precionando as teclas ctrl+alt+erase, ou através de um script setup.py. Para que ele a reconheça, o arquivo activity/activity.info deve ser criado e seguir a seguinte descrição:
[Activity] name = ActivityName activity_version = 1 host_version = 1 service_name = br.ufrgs.lec.ActivityName icon = activity-icon exec = sugar-activity-factory ActivityName.ActivityClass show_launcher = 1
Como dito anteriormente um programa desenvolvido para o XO, não se diferencia muito de uma aplicação comum em GTK+, abaixo segue um código de exemplo de uma aplicação simples feita para o XO:
import gtk
from sugar.activity.Activity import Activity
class DrawingActivity(Activity):
def __init__(self):
Activity.__init__(self)
button = gtk.Button('Drawing')
self.add(button)
button.show()
Explanando um pouco sobre o código, temos a classe sugar.activity.Activity, que prove a API de integração do aplicativo com o ambiente do Sugar. Ela é uma extensão da classe gtk.Window, sendo assim, todas as ações normalmente executadas sobre uma janela podem ser feitas como adição de novos conteÃ?ºdos: botões, caixas, separadores, etc. Como o demonstrado acima, a utilização de um if de inicialização, comumente utilizada em programas python não é necessário, pois isso é realizado pelo sugar-activity-factory.