CubeGladeApp

This example requires SimpleGladeApp.py, don't forget to download it.

CubeGladeApp.png

CubeGladeApp.png

CubeGladeApp.glade

CubeGladeApp.py

#!/usr/bin/env python
# -*- coding UTF-8 -*-

from SimpleGladeApp import SimpleGladeApp
import gtk
import cairo
import cairo.gtk

class CubeGladeApp(SimpleGladeApp):
        def new(self):
                self.elapsed = 15
                self.count = 0
                self.on_timeout()

        def on_timeout(self):
                gtk.timeout_add(self.elapsed, self.on_timeout)
                self.count += 0.01
                if self.count > 1:
                        self.count = 0
                self.window1.queue_draw()

        def on_expose_event(self, area, event):
                self.ctx = cairo.Context()
                cairo.gtk.set_target_drawable(self.ctx, self.drawingarea1.window)
                width, height = self.drawingarea1.window.get_size()
                self.ctx.scale(width/100.0, height/100.0)

                self.ctx.set_rgb_color(0, 0, 0)
                self.ctx.rectangle(0, 0, 100, 100)
                self.ctx.fill()

                self.draw_rectangle1()
                self.draw_rectangle4()
                self.draw_rectangle2()
                self.draw_rectangle3()

        def draw_rectangle1(self):
                self.ctx.set_line_width(0.3)
                self.ctx.set_rgb_color(1, 1, 1)
                self.ctx.rectangle(27, 27, 30, 30)
                self.ctx.save()
                self.ctx.set_alpha(self.count)
                self.ctx.set_rgb_color(0.4, 0.7, 0.9)
                self.ctx.fill()
                self.ctx.restore()
                self.ctx.stroke()

        def draw_rectangle2(self):
                self.ctx.rectangle(39, 39, 30, 30)
                self.ctx.save()
                self.ctx.set_alpha(float(self.count))
                self.ctx.set_rgb_color(0.3, 0.1, 0.2)
                self.ctx.fill()
                self.ctx.restore()
                self.ctx.stroke()

        def draw_rectangle3(self):
                self.ctx.set_line_width(0.2)
                self.ctx.move_to(27, 27)
                self.ctx.rel_line_to(30, 0)
                self.ctx.rel_line_to(12, 12)
                self.ctx.rel_line_to(-30, 0)
                self.ctx.close_path()
                self.ctx.save()
                self.ctx.set_alpha(self.count)
                self.ctx.set_rgb_color(0.8, 0.4, 0.5)
                self.ctx.fill()
                self.ctx.restore()
                self.ctx.stroke()

        def draw_rectangle4(self):
                self.ctx.move_to(27, 57)
                self.ctx.rel_line_to(30, 0)
                self.ctx.rel_line_to(12, 12)
                self.ctx.rel_line_to(-30, 0)
                self.ctx.close_path()
                self.ctx.save()
                self.ctx.set_alpha(self.count)
                self.ctx.set_rgb_color(0.2, 0.4, 0.2)
                self.ctx.fill()
                self.ctx.restore()
                self.ctx.stroke()

app = CubeGladeApp('CubeGladeApp.glade')
app.run()