6 from database import db
10 def hello(self, widget, data=None):
13 def delete_event(self, widget, event, data=None):
14 # If you return FALSE in the "delete_event" signal handler,
15 # GTK will emit the "destroy" signal. Returning TRUE means
16 # you don't want the window to be destroyed.
17 # This is useful for popping up 'are you sure you want to quit?'
19 print "delete event occurred"
21 # Change FALSE to TRUE and the main window will not be destroyed
22 # with a "delete_event".
25 def destroy(self, widget, data=None):
26 print "destroy signal occurred"
31 gtk.rc_parse_string("style 'scroll' {\n"
32 " engine 'sapwood'{\n"
33 " GtkRange::slider-width = 40\n"
36 "class 'GtkRange' style 'scroll'")
38 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
40 self.window.set_size_request(600, 360)
44 # When the window is given the "delete_event" signal (this is given
45 # by the window manager, usually by the "close" option, or on the
46 # titlebar), we ask it to call the delete_event () function
47 # as defined above. The data passed to the callback
48 # function is NULL and is ignored in the callback function.
49 self.window.connect("delete_event", self.delete_event)
51 # Here we connect the "destroy" event to a signal handler.
52 # This event occurs when we call gtk_widget_destroy() on the window,
53 # or if we return FALSE in the "delete_event" callback.
54 self.window.connect("destroy", self.destroy)
56 # Sets the border width of the window.
57 self.window.set_border_width(10)
59 vbox = gtk.VBox(False, 8)
61 sw = gtk.ScrolledWindow()
62 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
63 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
64 #a = gtk.Adjustment(0, 100, 100, 0, 10, 10)
68 vbox.pack_start(sw, True, True, 0)
70 self.dbo = db.DbSqlite()
71 self.data = self.dbo.get_allrecords('cn')
73 store = gtk.ListStore(int, str)
75 store.append([d, self.data[d]])
77 tree = gtk.TreeView(store)
78 tree.set_rules_hint(True)
80 tree.connect("row-activated", self.select_item)
82 t1 = gtk.CellRendererText()
83 column = gtk.TreeViewColumn("Id", t1, text=0)
84 column.set_sort_column_id(0)
85 column.set_visible(False)
86 tree.append_column(column)
88 t1 = gtk.CellRendererText()
89 column = gtk.TreeViewColumn("Name", t1, text=1)
90 column.set_sort_column_id(0)
91 tree.append_column(column)
99 self.window.show_all()
105 def select_item(self, widget, path, column):
106 print "select_item path:%s" % path
107 self.dialog = gtk.Dialog("Item descrition",
109 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
110 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
111 model = widget.get_model()
113 rec = self.dbo.get_record(id)
117 print "%s -> %s" % (r, rec[r])
118 text += "%s: %s\n" % (r, rec[r])
120 #sw = gtk.ScrolledWindow()
121 #sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
122 #sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
124 label = gtk.Label(text)
126 #label.set_markup(text)
127 self.dialog.vbox.pack_start(label)
129 response = self.dialog.run()
130 self.dialog.destroy()
131 print "response= %s" % response
135 # All PyGTK applications must have a gtk.main(). Control ends here
136 # and waits for an event to occur (like a key press or mouse event).
139 if __name__ == "__main__":