added english localization
[meabook] / list.py
diff --git a/list.py b/list.py
index cbbd987..def19de 100755 (executable)
--- a/list.py
+++ b/list.py
@@ -1,4 +1,5 @@
 #!/usr/bin/python
+# -*- coding: utf-8 -*-
 import pygtk
 pygtk.require('2.0')
 import gtk
@@ -41,39 +42,63 @@ class List:
     
         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])
         
-        ts = db.make_tree()
-        tree = gtk.TreeView(ts)
-        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()
@@ -84,6 +109,84 @@ class List:
 
     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,