removed unused code
[meabook] / list.py
diff --git a/list.py b/list.py
index f058413..def19de 100755 (executable)
--- a/list.py
+++ b/list.py
 #!/usr/bin/python
+# -*- coding: utf-8 -*-
 import pygtk
 pygtk.require('2.0')
 import gtk
 
-class HelloWorld:
+from database import db 
 
-    def hello(self, widget, data=None):
-        print "Hello World"
+class List:
 
     def delete_event(self, widget, event, data=None):
-        # If you return FALSE in the "delete_event" signal handler,
-        # GTK will emit the "destroy" signal. Returning TRUE means
-        # you don't want the window to be destroyed.
-        # This is useful for popping up 'are you sure you want to quit?'
-        # type dialogs.
-        print "delete event occurred"
 
-        # Change FALSE to TRUE and the main window will not be destroyed
-        # with a "delete_event".
+        print "delete event occurred"
         return False
 
     def destroy(self, widget, data=None):
         print "destroy signal occurred"
         gtk.main_quit()
 
+
     def __init__(self):
 
         gtk.rc_parse_string("style 'scroll' {\n"
-                            "   GtkRange::slider-width = 40\n"
+                            "    GtkRange::slider-width = 40\n"
                             "}\n"
                             "class 'GtkRange' style 'scroll'")        
+        #gtk.rc_parse_string("style 'scroll' {\n"
+        #                    "   GtkRange::slider-width = 40\n"
+        #                    "}\n"
+        #                    "class 'GtkRange' style 'scroll'")
 
         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+                
+        self.window.set_size_request(800, 480)
         
-        self.window.set_size_request(300, 200)
-        
-    
-        # When the window is given the "delete_event" signal (this is given
-        # by the window manager, usually by the "close" option, or on the
-        # titlebar), we ask it to call the delete_event () function
-        # as defined above. The data passed to the callback
-        # function is NULL and is ignored in the callback function.
+        #self.window.fullscreen();        
+
         self.window.connect("delete_event", self.delete_event)
     
-        # Here we connect the "destroy" event to a signal handler.  
-        # This event occurs when we call gtk_widget_destroy() on the window,
-        # or if we return FALSE in the "delete_event" callback.
         self.window.connect("destroy", self.destroy)
+        #self.window.connect("window-state-event", self.window_state_cb)
     
-        # Sets the border width of the window.
         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)
-        #a = gtk.Adjustment(0, 100, 100, 0, 10, 10)
-        #sw.set_vadjustment()
 
-
-        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()
+        data = self.dbo.get_list(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.data = [('fio fdkfdskajf jdkflasjkla', 'doldfsagfdas dlaskj', '212345'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
-            ('fdas dafs fdsfasd ', 'fdasf dafa', '12435678')]
-        store = gtk.ListStore(str, str, str)
-        for d in self.data:
-            store.append([d[0], d[1], d[2]])
-
-        tree = gtk.TreeView(store)
-        tree.set_rules_hint(True)
-
-        tree.connect("row-activated", self.select_item)
+        self.tree.set_rules_hint(True)
+
+        self.tree.connect("row-activated", self.select_item)
 
         t1 = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Name", t1, text=0)
+        column = gtk.TreeViewColumn("Id", t1, text=0)
         column.set_sort_column_id(0)
-        tree.append_column(column)
+        column.set_visible(False)
+        self.tree.append_column(column)
 
-        
         t1 = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("State", t1, text=1)
-        column.set_sort_column_id(1)
-        tree.append_column(column)
-
+        column = gtk.TreeViewColumn("Name", t1, text=1)
+        column.set_sort_column_id(0)
+        self.tree.append_column(column)
 
         t1 = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Phone", t1, text=2)
-        column.set_sort_column_id(2)
-        tree.append_column(column)
+        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()
@@ -113,26 +108,123 @@ class HelloWorld:
         self.window.show()
 
     def select_item(self, widget, path, column):
-        print "select_item path:%s" % path
+        
+        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, 
                                 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                                 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+        model = widget.get_model()
+        id = model[path][0]
+        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)
         
-        label = gtk.Label("select item %s" % path)
-        self.dialog.vbox.pack_start(label)
-        label.show()
+        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 main(self):
-        # All PyGTK applications must have a gtk.main(). Control ends here
-        # and waits for an event to occur (like a key press or mouse event).
         gtk.main()
 
 if __name__ == "__main__":
-    hello = HelloWorld()
-    hello.main()
+    app = List()
+    app.main()