Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
Free text:
{{Translations}} This tutorial is under translation Este tutorial explica passo a passo como criar o [http://divieira.googlepages.com/HelloWorld-1.xo pacote da atividade Hello World ]. Isto assume que você ja tem [[:Category:Installing Sugar|um ambientel de desenvolvimente Sugar instalado]]. *Crie o diretório do pacote: mkdir HelloWorldActivity.activity mkdir HelloWorldActivity.activity/activity *Escreva o arquivo <tt>activity.info</tt> , para descrever seu pacote no sub-diretorio da atividade (e.g. <tt>HelloWorldActivity.activity/activity/activity.info</tt>). 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 [[Sugar_Icon_Format|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. <tt>activity-helloworld.svg</tt>). <?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 <tt>setup.py</tt> no diretório de nível mais alto (e.g. <tt>HelloWorldActivity.activity/setup.py</tt>), 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 <tt>.info</tt> como "<tt>class</tt>" é o nome da classe que roda o seu código. Para o arquivo <tt>activity.info</tt> abaixo, nós específicamos um módulo de alto-nível chamado <tt>HelloWorldActivity.HelloWorldActivity</tt> (note que o uso de letras maiusculas em nomes de módulos é considerada ruim no [[Python Style Guide|estilo Python]], sinta-se à vontade para utilizar o nome da atividade com estilo de nomes padrão). {{ Box File | HelloWorldActivity.py | 2=<pre> 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" </pre> }} O arquivo acima é chamado <tt>HelloWorldActivity.py</tt> *Crie um <tt>MANIFESTO</tt> (e.g. <tt>HelloWorldActivity.activity/MANIFEST</tt>), 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 <tt>~/Activities</tt> .) == 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 <tt>ctrl-alt-erase</tt>.) 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 <tt>sugar-activity-factory</tt> para que a atividade seja relida quando você clicar novamente sobre seu icone. == Distribuição == Crie um empacotamento <tt>.xo</tt> para distribuir seu pacote. (Um arquivo <tt>.xo</tt> é 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 '<tt>name</tt>' e '<tt>activity_version</tt>' encontrados no arquivo <tt>activity.info</tt> , separados por um (-), com a extensão <tt>.xo</tt> . ./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 == * [[Hacking_Sugar]] [[Category:Sugar]] [[Category:HowTo]] [[Category:Activities]] [[Category:Developers]]
General Activity Info (for latest tested version)
To add another activity version that works with other builds click "add another"
Version number:
Releases tested on: 7.1.0 (650) 7.1.1 (653) 7.1.2 (656) 8.1.0 (703) 8.1.1 (708) 8.2.0 (767) 8.2.1 Candidate
Development status: 1. Planning 2. Pre-Alpha 3. Alpha 4. Beta 5. Production-stable 6. Mature
Summary::
This is a minor edit Watch this page
Cancel