Publicado por: Gabriel Morrison | 17 Janeiro, 2009

Python, Plasma, e o framework Graphics View

Pessoal, nesse post vou dar uma palavrinha sobre o framework Graphics View do Qt, para melhor entendimento dos posts seguintes sobre plasmoids em python. Segundo a documentação do Qt:

“O framework Graphics View provê uma interface para gerenciar e interagir com um grande número de itens gráficos 2D personalizados, e um view widget  para visualização dos itens, com suporte para zoom e rotação.

O framework inclui uma arquitetura de propagação de eventos que permite interação precisa entre os itens da scene. Itens podem manipular eventos do teclado, eventos de pressionamento, movimento, liberação e clique duplo do mouse, e também podem rastrear o movimento do mouse.”

Esse framework é composto por 3 partes:

  • Scene: serve como um contêiner para os itens
  • Item: é o gráfico que é desenhado em cima da scene
  • View: o widget que renderiza a scene

A classe base da scene no Qt é a QGraphicsScene; do item, a QGraphicsItem; da view, a QGraphicsView. Só podemos colocar diretamente na scene, itens que herdam de QGraphicsItem; não podemos colocar widgets como QLabel ou QTextEdit, por exemplo. Para resolver isso, existe a classe QGraphicsProxyWidget, que atua como uma camada de tradução entre o widget e a scene.

O KDE 4 trouxe no lugar do antigo desktop, o Plasma, que é uma extensão do framework Graphics View. No Plasma, como scene temos Plasma::Corona; como view, uma instância de Plasma::View, que fica associada a um Plasma::Containment, como o desktop, ou o folder view; como item, os plasmoids.

Um plasmoid é o conjunto de duas partes: um Applet, e uma DataEngine, que pode estar presente ou não. O Applet é a parte do plasmoid que vemos; a DataEngine é responsável por fornecer ao Applet os dados que o mesmo mostrará.

Apesar do KDE e do Qt serem escritos em C++, existem bindings em várias linguagens, entre elas Python, Ruby, C# e PHP, de forma que podemos, usando essas linguagens, acessar todas as funcionalidades das bibliotecas do Qt e do KDE. Para que possamos criar plasmoids em outras linguagens, o pessoal do KDE criou as ScriptEngines, que informam ao Plasma como rodar applets criados com essas linguagens.

As ScriptEngines para Python, Ruby e C# já estão maduras, e estão em desenvolvimento outras para JavaScript, Falcon, Java e outras linguagens.


Respostas

  1. [...] que implementa apenas o applet. Sua função é apenas mostrar um SVG. Recomendo a leitura do post anterior para melhor entendimento, além de um prévio conhecimento de Python e [...]


Deixe uma resposta

Sua resposta:

Categorias