#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
#
# written by Mark Muzenhardt
# published under BSD-License
import pygtk
pygtk.require('2.0')
import gtk
class DrawingAreaExample:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("Drawing Area Example")
window.connect("destroy", lambda w: gtk.main_quit())
self.area = gtk.DrawingArea()
self.area.set_size_request(400, 300)
window.add(self.area)
self.area.connect("expose-event", self.area_expose_cb)
self.area.show()
window.show()
self.do_print()
def area_expose_cb(self, area, event):
self.style = self.area.get_style()
self.gc = self.style.fg_gc[gtk.STATE_NORMAL]
self.draw_text()
return True
def do_print(self):
print_op = gtk.PrintOperation()
print_op.set_n_pages(1)
print_op.connect("draw_page", self.print_text)
res = print_op.run(gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG, None)
def draw_text(self):
self.pangolayout = self.area.create_pango_layout("")
self.format_text()
self.area.window.draw_layout(self.gc, 10, 10, self.pangolayout)
return
def print_text(self, operation=None, context=None, page_nr=None):
self.pangolayout = context.create_pango_layout()
self.format_text()
cairo_context = context.get_cairo_context()
cairo_context.show_layout(self.pangolayout)
return
def format_text(self):
self.pangolayout.set_text(unicode("""
Dies ist ein Text-Test. Er funktioniert gut und zeigt, dass auch PyGTK
das drucken kann, was man auf eine DrawingArea geschrieben hat.
Anwendungen dafür gibt es genug!
""", "latin-1"))
def main():
gtk.main()
return 0
if __name__ == "__main__":
DrawingAreaExample()
main()