123
[meabook] / list.py
1 #!/usr/bin/python
2 import pygtk
3 pygtk.require('2.0')
4 import gtk
5
6 class HelloWorld:
7
8     def hello(self, widget, data=None):
9         print "Hello World"
10
11     def delete_event(self, widget, event, data=None):
12         # If you return FALSE in the "delete_event" signal handler,
13         # GTK will emit the "destroy" signal. Returning TRUE means
14         # you don't want the window to be destroyed.
15         # This is useful for popping up 'are you sure you want to quit?'
16         # type dialogs.
17         print "delete event occurred"
18
19         # Change FALSE to TRUE and the main window will not be destroyed
20         # with a "delete_event".
21         return False
22
23     def destroy(self, widget, data=None):
24         print "destroy signal occurred"
25         gtk.main_quit()
26
27     def __init__(self):
28
29         gtk.rc_parse_string("style 'scroll' {\n"
30                             "   GtkRange::slider-width = 40\n"
31                             "}\n"
32                             "class 'GtkRange' style 'scroll'")        
33
34         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
35         
36         self.window.set_size_request(300, 200)
37         
38     
39         # When the window is given the "delete_event" signal (this is given
40         # by the window manager, usually by the "close" option, or on the
41         # titlebar), we ask it to call the delete_event () function
42         # as defined above. The data passed to the callback
43         # function is NULL and is ignored in the callback function.
44         self.window.connect("delete_event", self.delete_event)
45     
46         # Here we connect the "destroy" event to a signal handler.  
47         # This event occurs when we call gtk_widget_destroy() on the window,
48         # or if we return FALSE in the "delete_event" callback.
49         self.window.connect("destroy", self.destroy)
50     
51         # Sets the border width of the window.
52         self.window.set_border_width(10)
53
54         vbox = gtk.VBox(False, 8)
55
56         sw = gtk.ScrolledWindow()
57         sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
58         sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
59         #a = gtk.Adjustment(0, 100, 100, 0, 10, 10)
60         #sw.set_vadjustment()
61
62
63         vbox.pack_start(sw, True, True, 0)
64         
65         self.data = [('fio fdkfdskajf jdkflasjkla', 'doldfsagfdas dlaskj', '212345'),
66             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
67             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
68             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
69             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
70             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
71             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
72             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
73             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
74             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
75             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
76             ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
77             ('fdas dafs fdsfasd ', 'fdasf dafa', '12435678')]
78         store = gtk.ListStore(str, str, str)
79         for d in self.data:
80             store.append([d[0], d[1], d[2]])
81
82         tree = gtk.TreeView(store)
83         tree.set_rules_hint(True)
84
85         tree.connect("row-activated", self.select_item)
86
87         t1 = gtk.CellRendererText()
88         column = gtk.TreeViewColumn("Name", t1, text=0)
89         column.set_sort_column_id(0)
90         tree.append_column(column)
91
92         
93         t1 = gtk.CellRendererText()
94         column = gtk.TreeViewColumn("State", t1, text=1)
95         column.set_sort_column_id(1)
96         tree.append_column(column)
97
98
99         t1 = gtk.CellRendererText()
100         column = gtk.TreeViewColumn("Phone", t1, text=2)
101         column.set_sort_column_id(2)
102         tree.append_column(column)
103
104         sw.add(tree)
105
106        
107
108         self.window.add(vbox)
109         self.window.show_all()
110     
111     
112         # and the window
113         self.window.show()
114
115     def select_item(self, widget, path, column):
116         print "select_item path:%s" % path
117         self.dialog = gtk.Dialog("Item descrition", 
118                                 self.window, 
119                                 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
120                                 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
121         
122         label = gtk.Label("select item %s" % path)
123         self.dialog.vbox.pack_start(label)
124         label.show()
125         response = self.dialog.run()
126         self.dialog.destroy()
127         print "response= %s" % response
128
129
130     def main(self):
131         # All PyGTK applications must have a gtk.main(). Control ends here
132         # and waits for an event to occur (like a key press or mouse event).
133         gtk.main()
134
135 if __name__ == "__main__":
136     hello = HelloWorld()
137     hello.main()
138