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, True, 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.buttons[self.max_buttons].set_label(widget.get_model()[path][1])
122 self.buttons[self.max_buttons].connect("clicked", self.button_back, parent, self.max_buttons)
124 self.hbox.add(self.buttons[self.max_buttons])
125 self.buttons[self.max_buttons].show()
126 self.max_buttons = self.max_buttons + 1
127 self.buttons[self.max_buttons] = gtk.Button()
128 self.show_list(parent)
130 def show_list(self, parent):
132 store = gtk.ListStore(int, str, int)
133 data = self.dbo.get_list(parent)
135 store.append([d, data[d], 0])
137 data = self.dbo.get_allrecords('cn', parent)
139 store.append([d, data[d], 1])
140 self.tree.set_model(store)
142 def button_back(self, widget, id=None, number=None):
147 # delete not use buttons
148 while self.max_buttons - 1 > number:
149 self.buttons[self.max_buttons-1].set_label = "";
151 self.max_buttons = self.max_buttons - 1
153 print "button back data= %i " % number
155 def show_record(self, id):
156 self.dialog = gtk.Dialog("Item descrition",
158 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
159 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
161 rec = self.dbo.get_record(id)
164 tb = gtk.TextBuffer()
167 #print "%s -> %s" % (r, rec[r])
168 text += "%s: %s\n" % (r, rec[r])
170 tb.insert_at_cursor(text)
172 sw = gtk.ScrolledWindow()
173 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
174 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
176 tv = gtk.TextView(tb)
179 self.dialog.vbox.pack_start(sw)
180 self.dialog.set_size_request(600, 360)
183 response = self.dialog.run()
184 self.dialog.destroy()
185 print "response= %s" % response
187 def select_item1(self, widget, path, column):
189 #print "select_item path:%s" % path
190 self.dialog = gtk.Dialog("Item descrition",
192 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
193 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
194 model = widget.get_model()
196 rec = self.dbo.get_record(id)
199 tb = gtk.TextBuffer()
202 #print "%s -> %s" % (r, rec[r])
203 text += "%s: %s\n" % (r, rec[r])
205 tb.insert_at_cursor(text)
207 sw = gtk.ScrolledWindow()
208 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
209 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
211 tv = gtk.TextView(tb)
214 self.dialog.vbox.pack_start(sw)
215 self.dialog.set_size_request(600, 360)
218 response = self.dialog.run()
219 self.dialog.destroy()
220 print "response= %s" % response
226 if __name__ == "__main__":