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.hbox.add(self.buttons[self.max_buttons])
122 print self.buttons[self.max_buttons]
123 print self.buttons[self.max_buttons].get_label()
124 self.buttons[self.max_buttons].set_label(widget.get_model()[path][1])
125 self.buttons[self.max_buttons].connect("clicked", self.button_back, parent, self.max_buttons)
127 self.buttons[self.max_buttons].show()
128 self.max_buttons = self.max_buttons + 1
129 # self.buttons[self.max_buttons] = gtk.Button()
130 self.show_list(parent)
132 def show_list(self, parent):
134 store = gtk.ListStore(int, str, int)
135 data = self.dbo.get_list(parent)
137 store.append([d, data[d], 0])
139 data = self.dbo.get_allrecords('cn', parent)
141 store.append([d, data[d], 1])
142 self.tree.set_model(store)
144 def button_back(self, widget, id=None, number=None):
149 # delete not use buttons
150 while self.max_buttons - 1 > number:
151 self.buttons[self.max_buttons-1].set_label(" ");
153 self.max_buttons = self.max_buttons - 1
155 print "button back data= %i " % number
157 def show_record(self, id):
158 self.dialog = gtk.Dialog("Item descrition",
160 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
161 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
163 rec = self.dbo.get_record(id)
166 tb = gtk.TextBuffer()
169 #print "%s -> %s" % (r, rec[r])
170 text += "%s: %s\n" % (r, rec[r])
172 tb.insert_at_cursor(text)
174 sw = gtk.ScrolledWindow()
175 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
176 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
178 tv = gtk.TextView(tb)
181 self.dialog.vbox.pack_start(sw)
182 self.dialog.set_size_request(600, 360)
185 response = self.dialog.run()
186 self.dialog.destroy()
187 print "response= %s" % response
189 def select_item1(self, widget, path, column):
191 #print "select_item path:%s" % path
192 self.dialog = gtk.Dialog("Item descrition",
194 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
195 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
196 model = widget.get_model()
198 rec = self.dbo.get_record(id)
201 tb = gtk.TextBuffer()
204 #print "%s -> %s" % (r, rec[r])
205 text += "%s: %s\n" % (r, rec[r])
207 tb.insert_at_cursor(text)
209 sw = gtk.ScrolledWindow()
210 sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
211 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
213 tv = gtk.TextView(tb)
216 self.dialog.vbox.pack_start(sw)
217 self.dialog.set_size_request(600, 360)
220 response = self.dialog.run()
221 self.dialog.destroy()
222 print "response= %s" % response
228 if __name__ == "__main__":