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.
[...] 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 [...]
Por: Plasmoid em Python: Applet « Countercraft’s Weblog em 18 Janeiro, 2009
às 00:14