II ENSL

Como disse antes, fui no II ENSL em Aracaju. O evento foi muito legal, e embora eu tenha ficado com febre do sábado até chegar em casa na segunda, pude aproveitar bastante. O gentil pessoal do IV Fórum GNOME me deu uma camisa do GNOME (brigado Izabel :), me deixando bem feliz (“Alegria de nerd é ganhar camiseta”, já dizia a Priscila aqui do INdT), em troca tive de dar uma entrevista surpresa. Mico! Pelo menos a febre cedeu pelo tempo de apresentar minha palestra sobre o Glade, e mais a palestra do Kenneth sobre o Eréseva – ele não pôde ir, perdeu, perdeu :P.

Vou deixar mais detalhes sobre o evento nas mãos da peixebeta. Mas tenho de falar da hospitalidade viking de Marden, Sandro & cia, que nos (== a comitiva do Debian-PE) recebeu na casa deles. Nunca tinha viajado pra tão longe e não sabia que seria tão bem-vindo. Vocês foram demais. :)

Despedida dos Vikings de Aracaju
Essa foto resume o espírito da viagem

As viagens de ida e volta também foram interessantes. Na ida, um pneu estourado no meio do nada de meia-noite, os caminhões quer passavam a toda pareciam naves espaciais. Na volta andamos na balsa do São Francisco. Rio bonito da gota! Outra vez eu volto lá pra nadar. E depois horas e horas de cana-de-açúcar pra lá, cana-de-açúcar pra cá. Não acabava nunca! Luciano ficou no volante por 12h (só a volta) comigo febril do lado cantando junto com o CD Player. Não sei como ele e o povo atrás do carro agüentaram.

Coloquei os slides no slide share: Mantendo a Sanidade com o Glade

Gerador de Glade Loaders para Python

Quando estou fazendo programa com gui usando Python + GTK, depois de desenhar a interface no Glade tenho de escrever o carregador, que é uma tarefa bem monótona. Daí escrevi uma utilitariozinho em Python que parseia um arquivo Glade e gera um script python para carregá-lo, associando widgets à variáveis e sinais à funções callback.

Fiz essa tela para um exemplo:

Exemplo de GUI

O arquivo originário é exemplo.glade, o nome da janela é janelaExemplo, os nomes das caixas de texto são nomeEntry e emailEntry, e o botão, chamado botao, ao receber um evento clicked chamará a função callback botao_pressionado.

Para gerar o código carregador basta passa o arquivo glade para o gladeloader.py e redirecionar a saída para um arquivo. Assim:

./gladeloader.py exemplo.glade > exemplo.py

Eis o exemplo.py gerado:

#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
try:

import pygtk
pygtk.require('2.0')
import gtk
import gtk.glade

except:

sys.exit(1)

class appWindow:

def __init__(self):

self.widgetTree = gtk.glade.XML('exemplo.glade')
#Get the Main Window, and connect the 'destroy' event
self.window = self.widgetTree.get_widget('janelaExemplo')

if (self.window):

self.window.connect('destroy', gtk.main_quit)

#Widgets -------
self.emailEntry = self.widgetTree.get_widget('emailEntry')
self.nomeEntry = self.widgetTree.get_widget('nomeEntry')

#Autoconnect Signals and Callbacks
self.widgetTree.signal_autoconnect(self)
self.window.show_all()

# Callbacks ---------------------------------------------------------------
def botao_pressionado(self, widget):

print 'botao_pressionado'

if __name__ == '__main__':

app = appWindow()
gtk.main()

Como deu pra perceber é um utilitário bem simples, não espere que ele escreva seu código, ele dá apenas ajuda a dar aquele pontapé inicial e espantar a preguiça.

Arquivos:

Update: colocar código-fonte no wordpress é um saco. Muito mesmo.

PyPlaya (FooPlaya Series)

Lauro e eu ficamos de mexer com GStreamer e várias linguagens, resolvemos fazer algo simples – um playerzinho de áudio – usando a mesma interface Glade e várias linguagens.

Chamamos o projeto em geral de FooPlaya, e seus derivados de AlgumaCoisaPlaya. Por exemplo, a versão Python que acabei de mandar pro Subversion do Google Hosting, se chama PyPlaya.

Aqui está um screenshot da interface:
FooPlaya

Em breve, como prometido aqui, um artigo explicando os princípios da coisa.

portemu (no windows da escola)

Agora no Windows(TM):

portemu-win

Funcionou como devia. Recapitulando o que é necessário:

Mais tarde vou investigar o Py2Exe pra gerar um executável pro Win32 com todas as DLLs embutidas. Claro que vai ficar enorme, mas hei, banda larga está aí e seu HD é enorme, e acredite em mim quando digo que é menos chato um grande download do que vários downloads e instalações pra chegar num programinha simples.
E quem já tem essas coisas instaladas sempre vai poder baixar o arquivo .py

Até lá Lauro e eu destemidamente aprimoraremos o portemu pra tentar uma inclusão na disciplina de IHS. Isso se eles já não mudarem pra USB no próximo período… mas aí mudamos também. =D