123
authortanya <tanya@tanin.oblgaz>
Tue, 9 Feb 2010 15:01:06 +0000 (17:01 +0200)
committertanya <tanya@tanin.oblgaz>
Tue, 9 Feb 2010 15:01:06 +0000 (17:01 +0200)
1  2 
list.py
test/test.ldiff

diff --cc list.py
index a04b6e8,0000000..72ed59d
mode 100755,000000..100755
--- /dev/null
+++ b/list.py
@@@ -1,229 -1,0 +1,231 @@@
 +#!/usr/bin/python
 +# -*- coding: utf-8 -*-
 +import pygtk
 +pygtk.require('2.0')
 +import gtk
 +
 +from database import db 
 +
 +class List:
 +
 +    def delete_event(self, widget, event, data=None):
 +
 +        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"
 +                            "}\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.fullscreen();        
 +
 +        self.window.connect("delete_event", self.delete_event)
 +    
 +        self.window.connect("destroy", self.destroy)
 +        #self.window.connect("window-state-event", self.window_state_cb)
 +    
 +        self.window.set_border_width(10)
 +
 +        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(self.hbox, True, 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.tree.set_rules_hint(True)
 +
 +        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)
 +        self.tree.append_column(column)
 +
 +        t1 = gtk.CellRendererText()
 +        column = gtk.TreeViewColumn("Name", t1, text=1)
 +        column.set_sort_column_id(0)
 +        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(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()
 +    
 +    
 +        # and the window
 +        self.window.show()
 +
 +    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])
++        print self.buttons[self.max_buttons]
++        print self.buttons[self.max_buttons].get_label()
 +        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(self.buttons[self.max_buttons])
 +        self.buttons[self.max_buttons].show()
 +        self.max_buttons = self.max_buttons + 1
-         self.buttons[self.max_buttons] = gtk.Button()
++#        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.buttons[self.max_buttons-1].set_label(" ");
 +
 +            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)
 +        
 +        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):
 +        gtk.main()
 +
 +if __name__ == "__main__":
 +    app = List()
 +    app.main()
 +
diff --cc test/test.ldiff
@@@ -44,6 -44,19 +44,21 @@@ mobile: 34
  homeStreet: Hmm znaet hde
  mozillaHomeLocalityName: N-sk
  street: Away Away
 +department: dep1
 +company: Mazolovo Corp
  
+ dn:: Y2490JLQsNGB0Y8g0J/Rg9C/0LrQuNC9LG1haWw9dmFzeWFAY29tcGFueS5vcmc=
+ objectclass: top
+ objectclass: person
+ objectclass: organizationalPerson
+ objectclass: inetOrgPerson
+ objectclass: mozillaAbPersonAlpha
+ givenName:: 0JLQsNGB0Y8=
+ sn:: 0J/Rg9C/0LrQuNC9
+ cn:: 0JPQoNCY0J3QldCS0JjQpyDQkNC90LDRgtC+0LvQuNC5INCS0LvQsNC00LjQvNC40YDQvtCy
+  0LjRhw==
+ mail: vasya@company.org
+ modifytimestamp: 0Z
+ title: student
+ company: University