Sugar Activity Tutorial/lang-pt

From OLPC
< Sugar Activity Tutorial
Revision as of 14:17, 10 November 2007 by 200.18.97.3 (talk) (Distribuição)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  Please copy/paste "{{Translationlist | xx | origlang=en | translated={{{translated}}}}}" (where xx is ISO 639 language code for your translation) to Sugar Activity Tutorial/lang-pt/translations HowTo [ID# 76413]  +/-  

This tutorial is under translation

Este tutorial explica passo a passo como criar o pacote da atividade Hello World .

Isto assume que você ja tem um ambientel de desenvolvimente Sugar instalado.

  • Crie o diretório do pacote:
mkdir HelloWorldActivity.activity
mkdir HelloWorldActivity.activity/activity
  • Escreva o arquivo activity.info , para descrever seu pacote no sub-diretorio da atividade (e.g. HelloWorldActivity.activity/activity/activity.info). Nas especificações presentes em Activity Bundles esta explicado em detalhes o significado de cada campo.
[Activity]
name = HelloWorld
service_name = org.laptop.HelloWorldActivity
class = HelloWorldActivity.HelloWorldActivity
icon = activity-helloworld
activity_version = 1
show_launcher = yes
  • Faça um icone para sua atividade, de acordo com o formato de icone e coloque-o no sub-diretorio da atividade. O nome do arquivo deve coincidir com o especificado no arquivo de informações(e.g. activity-helloworld.svg).
<?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>
  • Escreva o script setup.py no diretório de nível mais alto (e.g. HelloWorldActivity.activity/setup.py), que na maior parte das vezes irá se parecer com este:
#!/usr/bin/env python
from sugar.activity import bundlebuilder
if __name__ == "__main__":
    bundlebuilder.start("MyActivityName")
  • Programe sua atividade. O nome que você especificou no arquivo .info como "class" é o nome da classe que roda o seu código. Para o arquivo activity.info abaixo, nós específicamos um módulo de alto-nível chamado HelloWorldActivity.HelloWorldActivity (note que o uso de letras maiusculas em nomes de módulos é considerada ruim no estilo Python, sinta-se à vontade para utilizar o nome da atividade com estilo de nomes padrão).
 File: HelloWorldActivity.py
 from sugar.activity import activity
 import logging
 
 import sys, os
 import gtk
 
 class HelloWorldActivity(activity.Activity):
     def hello(self, widget, data=None):
         logging.info('Hello World')
 
     def __init__(self, handle):
         print "running activity init", handle
         activity.Activity.__init__(self, handle)
         print "activity running"
 
         # Creates the Toolbox. It contains the Activity Toolbar, which is the
         # bar that appears on every Sugar window and contains essential
         # functionalities, such as the 'Collaborate' and 'Close' buttons.
         toolbox = activity.ActivityToolbox(self)
         self.set_toolbox(toolbox)
         toolbox.show()
 
         # Creates a new button with the label "Hello World".
         self.button = gtk.Button("Hello World")
     
         # When the button receives the "clicked" signal, it will call the
         # function hello() passing it None as its argument.  The hello()
         # function is defined above.
         self.button.connect("clicked", self.hello, None)
     
         # Set the button to be our canvas. The canvas is the main section of
         # every Sugar Window. It fills all the area below the toolbox.
         self.set_canvas(self.button)
     
         # The final step is to display this newly created widget.
         self.button.show()
     
         print "AT END OF THE CLASS"

O arquivo acima é chamado HelloWorldActivity.py

  • Crie um MANIFESTO (e.g. HelloWorldActivity.activity/MANIFEST), contendo a lista dos arquivos inclusos no pacote. (Nota: tenha certeza que não deixou linhas em branco no final do arquivo.)

Agora a estrutura do seu diretório deve parecer com esta:

HelloWorldActivity.activity/
HelloWorldActivity.activity/setup.py
HelloWorldActivity.activity/activity
HelloWorldActivity.activity/activity/activity.info
HelloWorldActivity.activity/activity/activity-helloworld.svg
HelloWorldActivity.activity/HelloWorldActivity.py
HelloWorldActivity.activity/MANIFEST

Instale seu pacote para o desenvolvimento

./setup.py dev

(Isto aparece somente para criar um symlink em ~/Activities .)


Rodando

Agora se você rodar o sugar o icone da atividade deve esta visivel na tela. ( Você deve reiniciar o sugar para ele reconhecer as alterações caso você tenha acabado de instala-lo. Use ctrl-alt-erase.)

Você também pode editar o código diretamente no diretório do seu pacote. Note que a primeira vez que a atividade é iniciada o processo continua rodando, mesmo que você feche a janela, portanto você tem que matar o sugar-activity-factory para que a atividade seja relida quando você clicar novamente sobre seu icone.

Distribuição

Crie um empacotamento .xo para distribuir seu pacote. (Um arquivo .xo é essencialmente um arquivo zip construido a partir do MANIFEST com alguns metadados extra, como um arquivo JAR. Isto também possibilita algum tipo de localização e no futuro nós esperamos sermos capazes de utilizar isto também.) O nome do pacote é gerado automaticamente a partir dos valores dos campos 'name' e 'activity_version' encontrados no arquivo activity.info , separados por um (-), com a extensão .xo .

 ./setup.py dist

Para instalar o xo em um laptop você pode utilizar o script de instalação.

 sugar-install-bundle HelloWorld-1.xo

Uma alternativa ao comando acima é de copiar direto o diretorio *.activity no direticio usr/share/activity. Em alguns casos, foi uma alternativa mais eficiente que usar sugar-install-bundle *.ro

Veja mais em