fixed conflicts
[meabook] / list.py
diff --git a/list.py b/list.py
index cad5e29..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,27 +42,34 @@ class List:
     
         self.window.set_border_width(10)
 
-        vbox = gtk.VBox(False, 4)
+        vbox = gtk.VBox(False, 0)
 
-        self.hbox = gtk.HBox(False, 2)
+        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(self.hbox, True, True, 0)
+        vbox.pack_start(self.hbox, False, True, 0)
         vbox.pack_end(sw, True, True, 0)
         
         self.dbo = db.DbSqlite()
-        #data = self.dbo.get_allrecords('cn')
         data = self.dbo.get_list(0)
 
-        store = gtk.ListStore(int, str, int)
-        for d in data:
-            store.append([d, data[d], 0])
+        self.tree = gtk.TreeView()
+        self.show_list(0)
+        #store = gtk.ListStore(int, str, int)
+        #for d in data:
+        #    store.append([d, data[d], 0])
         
-        self.tree = gtk.TreeView(store)
         self.tree.set_rules_hint(True)
 
         self.tree.connect("row-activated", self.select_item)
@@ -101,7 +109,6 @@ class List:
 
     def select_item(self, widget, path, column):
         
-        store = gtk.ListStore(int, str, int)
         parent = widget.get_model()[path][0]
         type = widget.get_model()[path][2]
         if type == 1:
@@ -109,12 +116,21 @@ class List:
             return
         print parent
         #create button for back
-        but = gtk.Button(widget.get_model()[path][1])
-        #add callback function
-        #but.connect("clicked", self.button_back, parent)
+        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.hbox.add(but)
-        but.show()
+        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])
@@ -122,7 +138,20 @@ class List:
         data = self.dbo.get_allrecords('cn', parent)
         for d in data:
             store.append([d, data[d], 1])
-        self.tree.set_model(store)    
+        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",