Added Slovenian translation
[tbo.git] / test / ejemplo_2.py
1 # -*- coding: utf-8 -*-
2 import gtk
3 import gtk.gdk
4 import cairo
5 import math
6
7 class SemiCirculo(gtk.DrawingArea):
8     def __init__(self):
9         gtk.DrawingArea.__init__(self)
10         self.connect("expose-event", self.expose)
11     
12     def expose(self, widget, event):
13         #Creamos un contexto de dibujo cairo
14         self.context = widget.window.cairo_create()
15         
16         #Ajustamos el tamaño del contexto al del widget
17         self.context.rectangle(event.area.x, event.area.y,
18                 event.area.width, event.area.height)
19         self.context.clip()
20     
21         #Llamamos a la función de dibujado
22         self.draw(self.context)
23         return False    
24
25     def draw(self, context):
26         #Adquirimos las coordenadas de origen
27         #y el tamaño del rectangulo del widget,
28         #situando en las variable x e y
29         #el centro del rectangulo.
30         rect = self.get_allocation()
31         x = rect.x + rect.width / 2
32         y = rect.y + rect.height / 2
33
34         #hallamos el radio
35         radius = min(rect.width / 2, rect.height / 2) - 5
36
37         #Dibujamos un arco
38         mx = cairo.Matrix(-1,0,0,-1,0,0)
39         context.translate(x, y)
40         context.transform(mx)
41         context.arc(0, 0, radius/2, 0,(1 * math.pi))
42         context.arc(0, 0, radius/10, 0,(2 * math.pi))
43
44         #Elegimos el color de relleno y lo vertemos
45         context.set_source_rgb(0.7, 0.8, 0.1)
46         context.fill_preserve()
47
48         #Elegimos el color del borde y lo dibujamos
49         context.set_source_rgb(0, 0, 0)
50         context.stroke()
51
52 def main():
53     window = gtk.Window()
54     semicirculo = SemiCirculo()
55
56     # Añadimos nuestro widget a la ventana
57     window.add(semicirculo)     
58     # Conectamos el evento destroy con la salida del bucle de eventos
59     window.connect("destroy", gtk.main_quit)
60     # Dibujamos toda la ventana
61     window.show_all()
62
63     # Comenzamos el bucle de eventos
64     gtk.main()
65
66 if __name__ == "__main__":
67     main()