
import gtk

from pres import parse

class Thumb(gtk.DrawingArea):
    def __init__(self, page):
        gtk.DrawingArea.__init__(self)

        self.page = page

        self.connect('expose-event', self.expose_cb)

    def expose_cb(self, widget, event):
        ctx = widget.window.cairo_create()

        # clip to event rectangle
        ctx.rectangle(
            event.area.x, event.area.y, event.area.width, event.area.height)
        ctx.clip()

        ctx.rectangle(
            0, 0,
            self.allocation.width, self.allocation.height)
        ctx.stroke()
        self.page.draw(ctx, gtk.gdk.Rectangle(1, 1,
            self.allocation.width - 2,
            self.allocation.height - 2))

if __name__ == '__main__':
    import sys

    w = gtk.Window()
    w.set_size_request(-1, 400)
    w.connect('destroy', gtk.main_quit)

    sw = gtk.ScrolledWindow()
    sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS)

    vbox = gtk.VBox()
    vbox.props.spacing = 10
    vbox.props.border_width = 10
    pages = parse(file(sys.argv[1]).read())

    for page in pages:
        thumb = Thumb(page)
        thumb.set_size_request(400, 300)
        vbox.add(thumb)

    sw.add_with_viewport(vbox)
    w.add(sw)
    w.show_all()
    gtk.main()

