/usr/share/doc/python-gtk2-tutorial/html/app-CodeExamples.html is in python-gtk2-tutorial 2.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix B. Code Examples</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="PyGTK 2.0 Tutorial"><link rel="up" href="index.html" title="PyGTK 2.0 Tutorial"><link rel="previous" href="sec-GtkAdjustment.html" title="A.22. GtkAdjustment"><link rel="next" href="pygtk-tut-changelog.html" title="Appendix C. ChangeLog"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. Code Examples</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sec-GtkAdjustment.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pygtk-tut-changelog.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="app-CodeExamples"></a>Appendix B. Code Examples</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="app-CodeExamples.html#sec-scribblesimple.py">B.1. scribblesimple.py</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sec-scribblesimple.py"></a>B.1. scribblesimple.py</h2></div></div><div></div></div><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">
1 #!/usr/bin/env python
2
3 # example scribblesimple.py
4
5 # GTK - The GIMP Toolkit
6 # Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
7 # Copyright (C) 2001-2002 John Finlay
8 #
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Library General Public
11 # License as published by the Free Software Foundation; either
12 # version 2 of the License, or (at your option) any later version.
13 #
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # Library General Public License for more details.
18 #
19 # You should have received a copy of the GNU Library General Public
20 # License along with this library; if not, write to the
21 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 # Boston, MA 02111-1307, USA.
23
24
25 import gtk
26
27 # Backing pixmap for drawing area
28 pixmap = None
29
30 # Create a new backing pixmap of the appropriate size
31 def configure_event(widget, event):
32 global pixmap
33
34 x, y, width, height = widget.get_allocation()
35 pixmap = gtk.gdk.Pixmap(widget.window, width, height)
36 pixmap.draw_rectangle(widget.get_style().white_gc,
37 True, 0, 0, width, height)
38
39 return True
40
41 # Redraw the screen from the backing pixmap
42 def expose_event(widget, event):
43 x , y, width, height = event.area
44 widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
45 pixmap, x, y, x, y, width, height)
46 return False
47
48 # Draw a rectangle on the screen
49 def draw_brush(widget, x, y):
50 rect = (x - 5, y - 5, 10, 10)
51 pixmap.draw_rectangle(widget.get_style().black_gc, True,
52 rect[0], rect[1], rect[2], rect[3])
53 widget.queue_draw_area(rect[0], rect[1], rect[2], rect[3])
54
55 def button_press_event(widget, event):
56 if event.button == 1 and pixmap != None:
57 draw_brush(widget, event.x, event.y)
58 return True
59
60 def motion_notify_event(widget, event):
61 if event.is_hint:
62 x, y, state = event.window.get_pointer()
63 else:
64 x = event.x
65 y = event.y
66 state = event.state
67
68 if state & gtk.gdk.BUTTON1_MASK and pixmap != None:
69 draw_brush(widget, x, y)
70
71 return True
72
73 def main():
74 window = gtk.Window(gtk.WINDOW_TOPLEVEL)
75 window.set_name ("Test Input")
76
77 vbox = gtk.VBox(False, 0)
78 window.add(vbox)
79 vbox.show()
80
81 window.connect("destroy", gtk.mainquit)
82
83 # Create the drawing area
84 drawing_area = gtk.DrawingArea()
85 drawing_area.set_size_request(200, 200)
86 vbox.pack_start(drawing_area, True, True, 0)
87
88 drawing_area.show()
89
90 # Signals used to handle backing pixmap
91 drawing_area.connect("expose_event", expose_event)
92 drawing_area.connect("configure_event", configure_event)
93
94 # Event signals
95 drawing_area.connect("motion_notify_event", motion_notify_event)
96 drawing_area.connect("button_press_event", button_press_event)
97
98 drawing_area.set_events(gtk.gdk.EXPOSURE_MASK
99 | gtk.gdk.LEAVE_NOTIFY_MASK
100 | gtk.gdk.BUTTON_PRESS_MASK
101 | gtk.gdk.POINTER_MOTION_MASK
102 | gtk.gdk.POINTER_MOTION_HINT_MASK)
103
104 # .. And a quit button
105 button = gtk.Button("Quit")
106 vbox.pack_start(button, False, False, 0)
107
108 button.connect_object("clicked", lambda w: w.destroy(), window)
109 button.show()
110
111 window.show()
112
113 gtk.main()
114
115 return 0
116
117 if __name__ == "__main__":
118 main()
</pre></td></tr></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sec-GtkAdjustment.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pygtk-tut-changelog.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">A.22. GtkAdjustment </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix C. ChangeLog</td></tr></table></div></body></html>
|