#!/usr/bin/python
+# -*- coding: utf-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
self.window.set_border_width(10)
- vbox = gtk.VBox(False, 8)
+ vbox = gtk.VBox(False, 0)
+
+ self.hbox = gtk.HBox(False, 0)
+
+ self.buttons = {}
+ self.buttons[0] = gtk.Button(u"Всего")
+ self.max_buttons = 1
+ self.buttons[0].connect("clicked", self.button_back, 0, 0)
+ self.hbox.add(self.buttons[0])
+ self.buttons[0].show()
+
sw = gtk.ScrolledWindow()
sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- vbox.pack_start(sw, True, True, 0)
+ vbox.pack_start(self.hbox, False, True, 0)
+ vbox.pack_end(sw, True, True, 0)
self.dbo = db.DbSqlite()
- self.data = self.dbo.get_allrecords('cn')
+ data = self.dbo.get_list(0)
- store = gtk.ListStore(int, str)
- for d in self.data:
- store.append([d, self.data[d]])
+ self.tree = gtk.TreeView()
+ self.show_list(0)
+ #store = gtk.ListStore(int, str, int)
+ #for d in data:
+ # store.append([d, data[d], 0])
- tree = gtk.TreeView(store)
- tree.set_rules_hint(True)
+ self.tree.set_rules_hint(True)
- tree.connect("row-activated", self.select_item)
+ self.tree.connect("row-activated", self.select_item)
t1 = gtk.CellRendererText()
column = gtk.TreeViewColumn("Id", t1, text=0)
column.set_sort_column_id(0)
column.set_visible(False)
- tree.append_column(column)
+ self.tree.append_column(column)
t1 = gtk.CellRendererText()
column = gtk.TreeViewColumn("Name", t1, text=1)
column.set_sort_column_id(0)
- tree.append_column(column)
+ self.tree.append_column(column)
+
+ t1 = gtk.CellRendererText()
+ column = gtk.TreeViewColumn("Type", t1, text=2)
+ column.set_sort_column_id(0)
+ column.set_visible(False)
+ self.tree.append_column(column)
- sw.add(tree)
+
+ sw.add(self.tree)
+
+ #st = gtk.ListStore(int, str)
+ #data = self.dbo.get_list(0)
+ #for d in self.data:
+ # st.append([d, self.data[d]])
+ #self.tree.set_model(st)
self.window.add(vbox)
self.window.show_all()
def select_item(self, widget, path, column):
+ parent = widget.get_model()[path][0]
+ type = widget.get_model()[path][2]
+ if type == 1:
+ self.show_record(parent)
+ return
+ print parent
+ #create button for back
+ if self.buttons.has_key(self.max_buttons) == 0:
+ self.buttons[self.max_buttons] = gtk.Button()
+ self.hbox.add(self.buttons[self.max_buttons])
+ self.buttons[self.max_buttons].set_label(widget.get_model()[path][1])
+ self.buttons[self.max_buttons].connect("clicked", self.button_back, parent, self.max_buttons)
+
+ self.buttons[self.max_buttons].show()
+ self.hbox.add(self.buttons[self.max_buttons])
+ self.max_buttons = self.max_buttons + 1
+# self.buttons[self.max_buttons] = gtk.Button()
+ self.show_list(parent)
+
+ def show_list(self, parent):
+
+ store = gtk.ListStore(int, str, int)
+ data = self.dbo.get_list(parent)
+ for d in data:
+ store.append([d, data[d], 0])
+ #add people
+ data = self.dbo.get_allrecords('cn', parent)
+ for d in data:
+ store.append([d, data[d], 1])
+ self.tree.set_model(store)
+
+ def button_back(self, widget, id=None, number=None):
+
+ """return back"""
+ self.show_list(id)
+
+ # delete not use buttons
+ while self.max_buttons - 1 > number:
+ self.buttons[self.max_buttons-1].set_label(" ")
+ self.hbox.remove(self.buttons[self.max_buttons-1])
+ self.max_buttons = self.max_buttons - 1
+
+ print "button back data= %i " % number
+
+ def show_record(self, id):
+ self.dialog = gtk.Dialog("Item descrition",
+ self.window,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+
+ rec = self.dbo.get_record(id)
+ #print rec
+ text = ""
+ tb = gtk.TextBuffer()
+
+ for r in rec:
+ #print "%s -> %s" % (r, rec[r])
+ text += "%s: %s\n" % (r, rec[r])
+
+ tb.insert_at_cursor(text)
+
+ sw = gtk.ScrolledWindow()
+ sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+ tv = gtk.TextView(tb)
+ sw.add(tv)
+
+ self.dialog.vbox.pack_start(sw)
+ self.dialog.set_size_request(600, 360)
+ tv.show()
+ sw.show()
+ response = self.dialog.run()
+ self.dialog.destroy()
+ print "response= %s" % response
+
+ def select_item1(self, widget, path, column):
+
#print "select_item path:%s" % path
self.dialog = gtk.Dialog("Item descrition",
self.window,