Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Archived:Desenvolvimento de Aplicações PySymbian para Maemo

From Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Criado por User:Raulherbster em 30 Apr 2008
Última alteração feita por hamishwillee em 07 May 2013

Contents

Iniciando o desenvolvimento Python para Maemo 4.x

Este tutorial explica como desenvolver aplicações Python para a plataforma Maemo 4.x. Para entender o documento, é necessário um conhecimento prévio da arquitetura maemo. Este artigo é dividido em:

  • Ambiente de desenvolvimento Python e como configurá-lo na plataforma Maemo 4.x
  • Codificando aplicações Python com UI para Maemo 4.x

Ambiente de desenvolvimento Python para Maemo 4.x

PyMaemo é o suporte oferecido pela plataforma Maemo à linguagem de programação Python. Desenvolvida desde 2004 pelo Instituto Nokia de Tecnologia (INdT), PyMaemo possui um tamanho menor e também implementa um conjunto de otimizações necessárias para obter melhorias de performance para dispositivos baseados na plataforma Maemo. Também provê módulos importantes para a plataforma, por exemplo BlueZ, GStreamer, Hildon e GTK+.

Dessa forma, além do suporte à linguagem de programação C, a plataforma Maemo também provê suporte a uma outra linguagem de programação para o desenvolvimento de aplicações interessantes. Python é uma opção versátil é poderosa: é possível o desenvolvimento de aplicações sofisticadas, tal como Canola, e também protótipos de software.

PyMaemo possui os seguintes módulos: iPython, PyBlueZ, PyGame, PyGconf, PyGnomeVFS, PyGobject, PyGtk, Pyid3lib, PyImage, Pyrex, Python, Python-dbus, PythonGPS-bt, Python-Gstreamer, Python-Hildon, Python-Numeric, Python-Osso, Python-Xml, Python-ABook, Evolution-python, Galago-python, PyC URL, Cython e Storm. Visite PyMaemo para maiores informações sobre o PyMaemo

Configurando o ambiente de desenvolvimento

O primeiro passo é configurar e testar o ambiente de desenvolvimento Maemo. Para maiores detalhes, leia este tutorial. Após instalar o ambiente de desenvolvimento Maemo, haverá duas targets diferentes: ARMEL, usada para emular aplicações para plataformas baseadas na arquitetura armel, e X86. Em ambas, as bibliotecas Python não estão instaladas originalmente. É necessário instalar o PyMaemo e os módulos desejados. Execute o comando apt-get para instalar o pacote python2.5-sdk e todas as suas dependências, incluindo os módulos.

[sbox-CHINOOK_X86: ~] > apt-get install python2.5-sdk
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
libsdl-ttf2.0-0 python2.5 python2.5-bluez python2.5-bluez-dev python2.5-cairo python2.5-cairo-dev python2.5-conic python2.5-conic-dev python2.5-dbus python2.5-dev
python2.5-gnome python2.5-gnome-dev python2.5-gobject python2.5-gobject-dev python2.5-gstreamer python2.5-gstreamer-dev python2.5-gtk2 python2.5-gtk2-dev python2.5-hildon
python2.5-hildon-dev python2.5-id3lib python2.5-imaging python2.5-numeric python2.5-numeric-dev python2.5-osso python2.5-osso-dev python2.5-pygame python2.5-runtime
python2.5-setuptools python2.5-xml python2.5-xml-dev
The following NEW packages will be installed:
libsdl-ttf2.0-0 python2.5-bluez python2.5-bluez-dev python2.5-cairo-dev python2.5-conic python2.5-conic-dev python2.5-dbus python2.5-dev python2.5-gnome python2.5-gnome-dev
python2.5-gobject-dev python2.5-gstreamer python2.5-gstreamer-dev python2.5-gtk2-dev python2.5-hildon-dev python2.5-id3lib python2.5-imaging python2.5-numeric-dev
python2.5-osso python2.5-osso-dev python2.5-pygame python2.5-runtime python2.5-sdk python2.5-setuptools python2.5-xml python2.5-xml-dev
The following packages will be upgraded:
python2.5 python2.5-cairo python2.5-gobject python2.5-gtk2 python2.5-hildon python2.5-numeric
6 upgraded, 26 newly installed, 0 to remove and 3 not upgraded.
Need to get 11.1MB/11.7MB of archives.
After unpacking 34.6MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
...

Após instalar o ambiente, podemos iniciar o desenvolvimento de aplicações Python.

Codificando aplicações Python com UI para Maemo 4.x

Essa seção explica como utilizar a linguagem Python para desenvolver aplicações na plataforma Maemo 4.x. Iniciamos com uma aplicação GTK+ simples que apenas cria e mostra uma janela com o texto "Hello World". Um evento para "destruir" a janela e sair da aplicação é gerado sempre que a janela é fechada.

import gtk
if __name__ == "__main__":
window = gtk.Window(gtk.WINDOW_TOPLEVEL)

label = gtk.Label("Hello World!")
window.add(label)

label.show()
window.show()

gtk.main()     

Criamos uma janela GTK (gtk.Window(gtk.WINDOW_TOPLEVEL)) que pode conter outros widgets. Depois, criamos um label GTK e o adicionamos à janela. Finalmente, mostramos ambos label e janela. O metodo gtk.main() é invocado para iniciar o laço principal da GUI. Este é o comando para executar a aplicação:

[sbox-CHINOOK_X86: ~] >python2.5 ./hello_world.py

Hello World com widgets GTK

A aplicação executa normalmente. Entretanto, não parece com uma aplicação com o tema Hildon. O background é escuro e as fontes são pequenas, por exemplo. É necessário executar a aplicação usando um script utilitário que modifica para o look-and-fell correto: run-standalone.sh. Agora, modificando um pouco o comando de execução, temos:

[sbox-CHINOOK_X86: ~] >run-standalone.sh python2.5 ./hello_world.py

Hello World com widgets GTK

Contudo, lembre-se: o script run-standalone.sh está disponível somente no ambiente Scratchbox com o Maemo SDK instalado ou em um Internet Tablet.

Agora, adicionaremos um menu em nossa aplicação. A função create_menu cria um menu e o retorna como resultado. Logo após, declaramos um gtk.Menu, adicionamos alguns gtk.MenuItems a ele e finalmente o adicionamos em um gtk.MenuBar. Finalmente, instanciamos um container box para adicionar o gtk.Label e o gtk.MenuBar criados anteriormente.

import gtk

class HelloWorldApp:

 def __init__(self):
     self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)    
  
     menu_bar = self.create_menu()
     label = gtk.Label("Hello World!")
  
     vbox = gtk.VBox(False, 0)
     vbox.pack_start(menu_bar, False, False, 0)
     vbox.pack_start(label, False, False, 0)
  
     self.window.add(vbox)     

 def create_menu(self):
     menu = gtk.Menu()
  
     menuItemOpen = gtk.MenuItem("Open")
     menuItemSave = gtk.MenuItem("Save")
     menuItemSeparator = gtk.SeparatorMenuItem()
     menuItemExit = gtk.MenuItem("Exit")
  
     menu.append(menuItemOpen)
     menu.append(menuItemSave)
     menu.append(menuItemSeparator)
     menu.append(menuItemExit)
  
     menuItemFile = gtk.MenuItem("File")
     menuItemFile.set_submenu(menu)
  
     menu_bar = gtk.MenuBar()
     menu_bar.append(menuItemFile)
  
     return menu_bar

 def run(self):     
     self.window.show_all()
     gtk.main()

if __name__ == "__main__":
 app = HelloWorldApp()
 app.run()  

Adicionando um menu GTK

Há algo errado com a posição do menu: sua localização correta é na barra de título da janela. Lembre-se que os widgets Hildon não estão sendo utilizados, portanto, alguns elementos podem estar incorretamente desenhados. A plataforma contem um conjunto de widgets que são otimizados para dispositivos com limitações de interface com o usuário e com uma tela sensível ao toque. Para uma melhor integração da sua aplicação com o ambiente, é necessário remover os widgets GTK e utilizar os elementos esperados para uma aplicação Hildon. Há dois widgets importantes disponibilizados pela API Hildon: o Hildon Program e o Hildon Window, os quais substituem algumas das funcionalidades providas pela gtk.Window.

import gtk
import hildon

class HelloWorldApp(hildon.Program):

  def __init__(self):
      hildon.Program.__init__(self)

      self.window = hildon.Window()
      self.window.connect("delete_event", quit)
      self.add_window(self.window)    
   
      menu_bar = self.create_menu()
      label = gtk.Label("Hello World!")
   
      self.window.set_menu(menu_bar)
      self.window.add(label)       

  def quit(self, *args): 
      gtk.main_quit()

  def create_menu(self):
      menu = gtk.Menu()
   
      menuItemOpen = gtk.MenuItem("Open")
      menuItemSave = gtk.MenuItem("Save")
      menuItemSeparator = gtk.SeparatorMenuItem()
      menuItemExit = gtk.MenuItem("Exit")
   
      menu.append(menuItemOpen)
      menu.append(menuItemSave)
      menu.append(menuItemSeparator)
      menu.append(menuItemExit)
          
      return menu

  def run(self):     
      self.window.show_all()
      gtk.main()

if __name__ == "__main__":
  app = HelloWorldApp()
  app.run()  

Adding GTK menu and using Hildon widgets

Agora, o menu está corretamente posicionado como o esperado para uma aplicação Hildon. Foram necessárias algumas pequenas mudanças: tivemos que criar um hildon.Program e um hildon.Window. A classe hildon.Window possui um método bastante útil para definir o menu da janela (set_menu(gtk.Menu)), assim, o container vbox não é mais necessário.

This page was last modified on 7 May 2013, at 11:24.
353 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×