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
121
122
123
124
125
126
|
#!/usr/bin/env python
#
# Tests of python-Gtk
#
import sys
from gtk import *
import GtkExtra
class Application:
def __init__(self, argv):
self.w_window=GtkWindow(title="Test Application")
self.w_window.set_border_width(10)
self.w_vbox=GtkVBox()
self.init_menu()
self.init_canvas()
self.w_window.add(self.w_vbox)
self.w_vbox.show()
self.w_window.show()
def mainloop(self):
mainloop()
def init_menu(self):
ag = GtkAccelGroup()
itemf = GtkItemFactory(GtkMenuBar, "<main>", ag)
self.w_window.add_accel_group(ag)
file_cb = self.process_file
edit_cb = self.process_edit
help_cb = self.process_help
itemf.create_items([
('/_File', None, None, 0, '<Branch>'),
('/_File/_New', '<control>N', file_cb, 1, ''),
('/_File/_Open', '<control>O', file_cb, 2, ''),
('/_File/_Save', '<control>S', file_cb, 3, ''),
('/_File/Save _As', None, file_cb, 4, ''),
('/_File/_Close', None, file_cb, 5, ''),
('/_File/sep1', None, file_cb, 0, '<Separator>'),
('/_File/E_xit', '<alt>F4', file_cb, 6, ''),
('/_Edit', None, None, 0, '<Branch>'),
('/_Edit/C_ut', '<control>X', edit_cb, 1, ''),
('/_Edit/_Copy', '<control>C', edit_cb, 2, ''),
('/_Edit/_Paste', '<control>V', edit_cb, 3, ''),
('/_Help', None, None, 0, '<LastBranch>'),
('/_Help/_About', '<control>A', help_cb, 1, '')
])
self.w_menubar = itemf.get_widget('<main>')
self.w_vbox.pack_start(self.w_menubar, expand=False)
self.w_menubar.show()
def init_canvas(self):
self.w_canvas=GtkDrawingArea()
self.w_canvas.size(350,250)
self.w_canvas.show()
self.w_vbox.pack_start(self.w_canvas)
self.w_canvas.connect("button_press_event", self.process_button)
self.w_canvas.connect("motion_notify_event", self.process_motion)
self.w_canvas.connect("key_press_event", self.process_key)
self.w_canvas.set_events(GDK.BUTTON_PRESS_MASK |
GDK.POINTER_MOTION_MASK |
GDK.POINTER_MOTION_HINT_MASK |
GDK.KEY_PRESS_MASK)
def process_file(self, action, widget):
if action == 0: print "File:<unknwon>"
elif action == 1:
print "File:New"
elif action == 2:
print "File:Open"
print GtkExtra.file_open_box(modal=False), "chosen"
elif action == 3:
print "FileSave"
dlg=GtkExtra.message_box("Test Application",
"Not implemented",
("OK",), pixmap='bomb.xpm')
elif action == 4:
print "File:Save As"
print GtkExtra.file_save_box(modal=False), "chosen"
elif action == 5:
print "File:Close"
elif action == 6:
print "File:Exit"
mainquit()
def process_edit(self, action, widget):
if action == 0: print "Edit:<unknown>"
elif action == 1: print "Edit:Cut"
elif action == 2: print "Edit:Copy"
elif action == 3: print "Edit:Paste"
def process_help(self, action, widget):
dlg=GtkExtra.message_box("Test Application",
"Test Application for Python-Gtk.\n" +
"This is free software.\n" +
"This application tests mouse and " +
"key press events.", ("OK",),
pixmap='question.xpm')
def process_button(self, win, event):
print event, "b =", event.button, "x =", event.x, "y =", event.y
def process_motion(self, win, event):
print event, "is_hint =", event.is_hint, "x =", event.x, "y =", event.y
def process_key(self, win, event):
print event, "keyval =", event.keyval, "state =", event.state
if(__name__=="__main__"):
use_defaults=1
for arg in sys.argv:
if(arg=="-d"):
import pdb
pdb.set_trace()
if(arg=="-n"):
use_defaults=0
# if(use_defaults==1):
# rc_parse("defaults.rc")
app=Application(sys.argv)
app.mainloop()
|