flisol-manaus-logoO flisol em manaus foi um sucesso na minha opnião, graças ao comprometimento dos “pigs” da comunidade de software livre em manaus, pessoas como Antônio Junior, Davyd Smelk, Marcelo Mendes entre outros e a estes pigs deixo aqui postado meus parabéns. houve uma quantidade razoável de participantes, todas as palestras estavam cheias e as oficinas foram também bastante frequentadas.

Tirei algumas fotos do evento apartir do meu E71, a câmera não é boa mas como estava de dia até que as fotos ficaram boas. Segue abaixo algumas fotos.

Oficina de D-Bus

A foto acima é da oficina de D-Bus.

25/04/2009

Coordenação do Flisol indo almoçar.

Mais fotos no meu flickr.

Também não pude deixar de contribuir e fiz uma palestra sobre Python com EFL e ajudei em algumas oficinas. Como prometi na minha palestra que iria postar a minha apresentação no blog, cá estou eu postando.

Slides Python e EFl

Segue abaixo os códigos que fiz de exemplo, mas faltou tempo para comentar linha a linha. Para quem quiser estudar segue código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
# Copyleft
#
# @author: Daniel Martins

import ecore
from ecore.evas import SoftwareX11
import evas
import edje

X_DIRECTION, Y_DIRECTION = range(2)


w, h = 800, 480
ee = ecore.evas.SoftwareX11(w=w, h=h)
canvas = ee.evas

states = 0
anime = False
anime_max = 0


bg = canvas.Rectangle(color=(255, 255, 255, 255), size=ee.size)
bg.show()


def change_object(o, e):
    global w, h, states, anime_max
    im_w, im_h = o.image_size
    if states == 0:
        o.pos_set(w-im_w, 0)
    elif states == 1:
        (x, y) = o.pos_get()
        o.pos_set(x, h-im_h)
    elif states == 2:
        (x, y) = o.pos_get()
        o.pos_set(0, y)
    elif states == 3:
        (x, y) = o.pos_get()
        o.pos_set(0, 0)
        states = 0
        return
    states += 1
   


ball_object = canvas.Image(file="Generic_football.png", geometry=(0, 0, 66, 65))
im_w, im_h = ball_object.image_size
ball_object.fill_set(0,0, im_w, im_h)
ball_object.on_mouse_up_add(change_object)
ball_object.show()


# Load and setup UI
ee.title = "Exemplo de Python EFL"


ee.show()
ecore.main_loop_begin()

Exemplo animado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
# Copyleft
#
# @author: Daniel Martins


import ecore
from ecore.evas import SoftwareX11
import evas
import edje

X_DIRECTION, X_DIRECTION_NEGATIVE, Y_DIRECTION, Y_DIRECTION_NEGATIVE = range(4)


w, h = 800, 480
ee = ecore.evas.SoftwareX11(w=w, h=h)
canvas = ee.evas

states = 0
anime = False
anime_max = 0


bg = canvas.Rectangle(color=(255, 255, 255, 255), size=ee.size)
bg.show()

def anime_ball(img_obj, direction):
    global anime_max
    (x,y) = img_obj.pos_get()    
    if direction == X_DIRECTION:
        img_obj.pos_set(x+5,y)
        img_obj.pass_events_set(True)
        if x > anime_max:
            img_obj.pass_events_set(False)
            return False
    if direction == X_DIRECTION_NEGATIVE:
        img_obj.pos_set(x-5,y)
        img_obj.pass_events_set(True)
        if x < anime_max:
            img_obj.pass_events_set(False)
            return False
    elif direction == Y_DIRECTION:
        img_obj.pos_set(x,y+5)
        img_obj.pass_events_set(True)
        if y > anime_max:
            img_obj.pass_events_set(False)
            return False
    elif direction == Y_DIRECTION_NEGATIVE:
        img_obj.pos_set(x,y-5)
        img_obj.pass_events_set(True)
        if y < anime_max:
            img_obj.pass_events_set(False)
            return False
    return True
     


def change_object(o, e):
    global w, h, states, anime_max
    im_w, im_h = o.image_size
    if states == 0:
        anime_max = w-im_w
        ecore.animator_add(anime_ball, o, X_DIRECTION)
    elif states == 1:
        anime_max = h-im_h
        ecore.animator_add(anime_ball, o, Y_DIRECTION)
    elif states == 2:
        anime_max = 0
        ecore.animator_add(anime_ball, o, X_DIRECTION_NEGATIVE)
    elif states == 3:
        anime_max = 0
        ecore.animator_add(anime_ball, o, Y_DIRECTION_NEGATIVE)
        states = 0
        return
    states += 1


ball_object = canvas.Image(file="Generic_football.png", geometry=(0, 0, 66, 65))
im_w, im_h = ball_object.image_size
ball_object.fill_set(0,0, im_w, im_h)
ball_object.on_mouse_up_add(change_object)
ball_object.show()


# Load and setup UI
ee.title = "Exemplo de Python EFL Animado"

ee.show()
ecore.main_loop_begin()

Link para baixar tudo, inclusive a imagem. Só não esqueça que para executar é preciso ter instalado as EFL e os python bindings.Para a instalação tenho um post sobre. Confira.

Espero que tenham gostado do evento tanto quanto eu gostei. Qualquer dúvida, crítica e/ou sugestão pode colocar nos comentários.

Até a próxima.