2 # -*- coding: utf-8 -*-
7 from database import db
11 def delete_event(self, widget, event, data=None):
13 print "delete event occurred"
16 def destroy(self, widget, data=None):
17 print "destroy signal occurred"
23 gtk.rc_parse_string("style 'scroll' {\n"
24 " GtkRange::slider-width = 40\n"
26 "class 'GtkRange' style 'scroll'")
27 #gtk.rc_parse_string("style 'scroll' {\n"
28 # " GtkRange::slider-width = 40\n"
30 # "class 'GtkRange' style 'scroll'")
32 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
34 self.window.set_size_request(800, 480)
36 #self.window.fullscreen();
38 self.window.connect("delete_event", self.delete_event)
40 self.window.connect("destroy", self.destroy)
41 #self.window.connect("window-state-event", self.window_state_cb)
43 self.window.set_border_width(10)
45 vbox = gtk.VBox(False, 0)
47 self.hbox = gtk.HBox(False, 0)
50 self.buttons[0] = gtk.Button(u"Всего")
52 self.buttons[0].connect("clicked", self.button_back, 0, 0)
53 self.hbox.add(self.buttons[0])
54 self.buttons[0].show()
57 sw = gtk.ScrolledWindow()
58 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
59 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
61 vbox.pack_start(self.hbox, False, True, 0)
62 vbox.pack_end(sw, True, True, 0)
64 self.dbo = db.DbSqlite()
65 data = self.dbo.get_list(0)
67 self.tree = gtk.TreeView()
69 #store = gtk.ListStore(int, str, int)
71 # store.append([d, data[d], 0])
73 self.tree.set_rules_hint(True)
75 self.tree.connect("row-activated", self.select_item)
77 t1 = gtk.CellRendererText()
78 column = gtk.TreeViewColumn("Id", t1, text=0)
79 column.set_sort_column_id(0)
80 column.set_visible(False)
81 self.tree.append_column(column)
83 t1 = gtk.CellRendererText()
84 column = gtk.TreeViewColumn("Name", t1, text=1)
85 column.set_sort_column_id(0)
86 self.tree.append_column(column)
88 t1 = gtk.CellRendererText()
89 column = gtk.TreeViewColumn("Type", t1, text=2)
90 column.set_sort_column_id(0)
91 column.set_visible(False)
92 self.tree.append_column(column)
97 #st = gtk.ListStore(int, str)
98 #data = self.dbo.get_list(0)
100 # st.append([d, self.data[d]])
101 #self.tree.set_model(st)
103 self.window.add(vbox)
104 self.window.show_all()
110 def select_item(self, widget, path, column):
112 parent = widget.get_model()[path][0]
113 type = widget.get_model()[path][2]
115 self.show_record(parent)
118 #create button for back
119 if self.buttons.has_key(self.max_buttons) == 0:
120 self.buttons[self.max_buttons] = gtk.Button()
121 self.hbox.add(self.buttons[self.max_buttons])
122 self.buttons[self.max_buttons].set_label(widget.get_model()[path][1])
123 self.buttons[self.max_buttons].connect("clicked", self.button_back, parent, self.max_buttons)
125 self.buttons[self.max_buttons].show()
126 self.hbox.add(self.buttons[self.max_buttons])
127 self.max_buttons = self.max_buttons + 1
128 # self.buttons[self.max_buttons] = gtk.Button()
129 self.show_list(parent)
131 def show_list(self, parent):
133 store = gtk.ListStore(int, str, int)
134 data = self.dbo.get_list(parent)
136 store.append([d, data[d], 0])
138 data = self.dbo.get_allrecords('cn', parent)
140 store.append([d, data[d], 1])
141 self.tree.set_model(store)
143 def button_back(self, widget, id=None, number=None):
148 # delete not use buttons
149 while self.max_buttons - 1 > number:
150 self.buttons[self.max_buttons-1].set_label(" ")
151 self.hbox.remove(self.buttons[self.max_buttons-1])
152 self.max_buttons = self.max_buttons - 1
154 print "button back data= %i " % number
156 def show_record(self, id):
157 self.dialog = gtk.Dialog("Item descrition",
159 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
160 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
162 rec = self.dbo.get_record(id)
165 tb = gtk.TextBuffer()
168 #print "%s -> %s" % (r, rec[r])
169 text += "%s: %s\n" % (r, rec[r])
171 tb.insert_at_cursor(text)
173 sw = gtk.ScrolledWindow()
174 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
175 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
177 tv = gtk.TextView(tb)
180 self.dialog.vbox.pack_start(sw)
181 self.dialog.set_size_request(600, 360)
184 response = self.dialog.run()
185 self.dialog.destroy()
186 print "response= %s" % response
188 def select_item1(self, widget, path, column):
190 #print "select_item path:%s" % path
191 self.dialog = gtk.Dialog("Item descrition",
193 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
194 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
195 model = widget.get_model()
197 rec = self.dbo.get_record(id)
200 tb = gtk.TextBuffer()
203 #print "%s -> %s" % (r, rec[r])
204 text += "%s: %s\n" % (r, rec[r])
206 tb.insert_at_cursor(text)
208 sw = gtk.ScrolledWindow()
209 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
210 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
212 tv = gtk.TextView(tb)
215 self.dialog.vbox.pack_start(sw)
216 self.dialog.set_size_request(600, 360)
219 response = self.dialog.run()
220 self.dialog.destroy()
221 print "response= %s" % response
227 if __name__ == "__main__":