6 from database import db
10 def delete_event(self, widget, event, data=None):
12 print "delete event occurred"
15 def destroy(self, widget, data=None):
16 print "destroy signal occurred"
22 gtk.rc_parse_string("style 'scroll' {\n"
23 " GtkRange::slider-width = 40\n"
25 "class 'GtkRange' style 'scroll'")
26 #gtk.rc_parse_string("style 'scroll' {\n"
27 # " GtkRange::slider-width = 40\n"
29 # "class 'GtkRange' style 'scroll'")
31 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
33 self.window.set_size_request(800, 480)
35 #self.window.fullscreen();
37 self.window.connect("delete_event", self.delete_event)
39 self.window.connect("destroy", self.destroy)
40 #self.window.connect("window-state-event", self.window_state_cb)
42 self.window.set_border_width(10)
44 vbox = gtk.VBox(False, 4)
46 self.hbox = gtk.HBox(False, 2)
49 sw = gtk.ScrolledWindow()
50 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
51 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
53 vbox.pack_start(self.hbox, True, True, 0)
54 vbox.pack_end(sw, True, True, 0)
56 self.dbo = db.DbSqlite()
57 #data = self.dbo.get_allrecords('cn')
58 data = self.dbo.get_list(0)
60 store = gtk.ListStore(int, str, int)
62 store.append([d, data[d], 0])
64 self.tree = gtk.TreeView(store)
65 self.tree.set_rules_hint(True)
67 self.tree.connect("row-activated", self.select_item)
69 t1 = gtk.CellRendererText()
70 column = gtk.TreeViewColumn("Id", t1, text=0)
71 column.set_sort_column_id(0)
72 column.set_visible(False)
73 self.tree.append_column(column)
75 t1 = gtk.CellRendererText()
76 column = gtk.TreeViewColumn("Name", t1, text=1)
77 column.set_sort_column_id(0)
78 self.tree.append_column(column)
80 t1 = gtk.CellRendererText()
81 column = gtk.TreeViewColumn("Type", t1, text=2)
82 column.set_sort_column_id(0)
83 column.set_visible(False)
84 self.tree.append_column(column)
89 #st = gtk.ListStore(int, str)
90 #data = self.dbo.get_list(0)
92 # st.append([d, self.data[d]])
93 #self.tree.set_model(st)
96 self.window.show_all()
102 def select_item(self, widget, path, column):
104 store = gtk.ListStore(int, str, int)
105 parent = widget.get_model()[path][0]
106 type = widget.get_model()[path][2]
108 self.show_record(parent)
111 #create button for back
112 but = gtk.Button(widget.get_model()[path][1])
113 #add callback function
114 #but.connect("clicked", self.button_back, parent)
118 data = self.dbo.get_list(parent)
120 store.append([d, data[d], 0])
122 data = self.dbo.get_allrecords('cn', parent)
124 store.append([d, data[d], 1])
125 self.tree.set_model(store)
127 def show_record(self, id):
128 self.dialog = gtk.Dialog("Item descrition",
130 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
131 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
133 rec = self.dbo.get_record(id)
136 tb = gtk.TextBuffer()
139 #print "%s -> %s" % (r, rec[r])
140 text += "%s: %s\n" % (r, rec[r])
142 tb.insert_at_cursor(text)
144 sw = gtk.ScrolledWindow()
145 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
146 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
148 tv = gtk.TextView(tb)
151 self.dialog.vbox.pack_start(sw)
152 self.dialog.set_size_request(600, 360)
155 response = self.dialog.run()
156 self.dialog.destroy()
157 print "response= %s" % response
159 def select_item1(self, widget, path, column):
161 #print "select_item path:%s" % path
162 self.dialog = gtk.Dialog("Item descrition",
164 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
165 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
166 model = widget.get_model()
168 rec = self.dbo.get_record(id)
171 tb = gtk.TextBuffer()
174 #print "%s -> %s" % (r, rec[r])
175 text += "%s: %s\n" % (r, rec[r])
177 tb.insert_at_cursor(text)
179 sw = gtk.ScrolledWindow()
180 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
181 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
183 tv = gtk.TextView(tb)
186 self.dialog.vbox.pack_start(sw)
187 self.dialog.set_size_request(600, 360)
190 response = self.dialog.run()
191 self.dialog.destroy()
192 print "response= %s" % response
198 if __name__ == "__main__":