O XO introduz uma nova maneira de se programar aplicações. Primeiro chamando-as de "atividades". Essas "atividades" ficam dentro de um "pacote" com vários diretórios e arquivos. Esses pacotes poderão ser tranferidos de XO para XO e se autoinstalarão facilmente.
Se você tem um XO B1, sua versão de sistema operacional não está preparada para trabalhar com pacotes como a versão mais atual: 240 - que faz parte do kit de emulador que você baixou para esse curso. Pode ser que, no futuro, ocorram algumas modificações na arquitetura de pacotes do XO. Mas cremos que o básico será semelhante.
Os pacotes XO usam a linguagem Python. Apresentaremos, nesse curso, os princípios básicos dessa linguagem. Os pacotes usam uma interface gráfica conhecida como pygtk. Existem outras interfaces gráficas para programação em Linux e Python, mas não são suportadas nativamente no XO. A maneira de programar para o XO difere um pouco da normal. Assim, acompanhe nossas lições e faça os exercícios no emulador. Se você tiver coragem de atualizar o sistema operacional de seu XO para a versão 240, pode fazer os exercícios nele, claro.
DICA: A versão 240 do emulador tem um pequeno bug. A parte inferior da moldura some. Para vê-la você tem que manter a ponta da seta do ponteiro sobre a parte inferior da janela com o emulador. A seta praticamente some.
Todos os pacotes XO ficam no diretório: /usr/share/activities
Não existe uma padronização oficial mas, uma atividade terá uma Classe básica que terá o nome da atividade acrescido de "Activity". Por exemplo, para uma atividade que chamemos de "HelloPac": HelloPacActivity. O diretório que criaremos se chamará: hellopac.activity. Dentro desse diretório teremos um subdiretório com o nome: activity.
No subdiretório activity teremos dois arquivos; um deles chamado: activity.info com as linhas:
[Activity] name = HelloPac service_name = www.dmu.com/HelloPacActivity exec = sugar-activity-factory HelloPacActivity.HelloPacActivity icon = activity-hellopac activity_version = 1 show_launcher = yes
Os dados desse arquivo são bem óbvios. Em service_name temos o endereço que poderia dar mais informações sobre a aplicação (normalmente não existe).
O parâmetro icon tem o nome do arquivo com formato .SVG que contém o ícone da aplicação, que vai aparecer na barra inferior da moldura do XO. Existe um editor desse tipo de arquivo que é gratuíto: o Inkscape. Vamos falar mais em detalhes sobre criação de ícones no futuro.
O outro arquivo no diretório activity, para nosso pacote, é justamente:activity-hellopac.svg. O ícone que vamos usar é bem simples: apenas um quadrado e vamos usá-lo por ser fácil de digitar, usando o editor vi:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ <!ENTITY fill_color "#FFFFFF"> <!ENTITY stroke_color "#000000"> ]> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"> <rect x="1" y="1" width="48" height="48" style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:2"/> </svg>
No diretório hellopac.activity temos três arquivos. Um será sempre igual em todo pacote: setup.exe com:
#!/usr/bin/env python from sugar.activity import bundlebuilder bundlebuilder.start()
O outro, MANIFEST-OLPC tem só uma linha:
HelloPacActivity.py
que é justamente o nome do arquivo onde a ação acontece. Nossa aplicação apenas vai escrever: "HELLO PACOTE!" no meio da tela.
from sugar.activity.Activity import Activity
import sys, os
import gtk
class HelloPacActivity(Activity):
def __init__(self):
Activity.__init__(self)
#Define o tamanho dos caracteres
gtk.settings_get_default().props.gtk_xft_dpi *= 4
# Cria um objeto Label
self.label = gtk.Label("HELLO PACOTE!")
# Coloca esse label na janela Sugar
self.add(self.label)
# Mostra
self.label.show()
Se você nunca programou em Python, pode começar a aprender certas coisas. Algumas são especiais do XO:
def __init__(self):
Activity.__init__(self)
O resto do programa é simples: criamos um objeto da Classe Label, o adicionamos à janela do Sugar (que é o "self" e que não admite sub-janelas) e o mostramos com show.
Então, recapitulando: um "pacote XO" tem, no mínimo, dois diretórios e cinco arquivos. Após criado o pacote, basta dar um reboot no sistema (no nosso caso re-startar o emulador).
DICA: Para ver se seu programa não tem nenhum erro de sintaxe você pode executar, no nosso caso:
Se ele não tiver erro de sintaxe, vai, assim mesmo, dar um erro porque não consegue dar um display - mas isso não é erro de sintaxe...
python HelloPacActivity.py
Veja como ficou nossa primeira aplicação (nossa primeira atividade, nosso primeiro pacote):
Vamos, a partir de agora, aprender um pouco de Python, para podermos fazer coisas mais complexas. Mas o básico é isso.
LIÇÂO ANTERIOR PRÓXIMA LIÇÂO ÍNDICE HOMEPAGE