123
authortanya <tanya@tanin.oblgaz>
Thu, 21 Jan 2010 15:04:36 +0000 (17:04 +0200)
committertanya <tanya@tanin.oblgaz>
Thu, 21 Jan 2010 15:04:36 +0000 (17:04 +0200)
database/db.py
list.py

index 39bdcf9..1a94e76 100755 (executable)
@@ -10,6 +10,10 @@ import sqlite3
 class DbSqlite:
 
     """class for work with database"""
+
+    def __init__(self):
+        self.conn = self.connect()
+
     def connect(self):
 
         """connect to database"""
@@ -21,15 +25,43 @@ class DbSqlite:
             conn = None
         return conn
 
+    def get_record(self, id):
+        
+        """return record field"""
+        cur = self.conn.cursor()
+        cur.execute("select field.name, data.value "
+                    "from data left join field "
+                    "on data.id_field=field.id "
+                    "where data.id=?", (id,))
+        self.data = {} 
+        for row in cur:
+            print "key = %s value = %s" % (row[0], row[1])
+            self.data[row[0]] = row[1]
+        return self.data
+
+    def get_allrecords(self, field):
+        
+        """return records"""
+        cur = self.conn.cursor()
+        cur.execute("select data.id, data.value "
+                    "from data left join field "
+                    "on data.id_field=field.id "
+                    "where field.name=?", (field,))
+        self.data = {}
+        for row in cur:
+            #print row
+            self.data[row[0]] = row[1]
+        return self.data
+
     def ins_record(self, rec):
 
         """insert record into database"""
         #get id new record
-        conn = self.connect()
-        if conn is None:
+        #conn = self.connect()
+        if self.conn is None:
             print "database connect error"
             return None
-        cur = conn.cursor()
+        cur = self.conn.cursor()
         cur.execute("select max(id) from data")
         id_record = cur.fetchone()[0]
         if id_record is None:
@@ -54,8 +86,8 @@ class DbSqlite:
             for i in val:
                 cur.execute("insert into data (id, id_field, value) values (?, ?, ?)", 
                 (id_record, id_field, i))
-        conn.commit()
-        conn.close()
+        self.conn.commit()
+        #conn.close()
 
     def clear_data(self):
 
diff --git a/list.py b/list.py
index f058413..02922b0 100755 (executable)
--- a/list.py
+++ b/list.py
@@ -3,6 +3,8 @@ import pygtk
 pygtk.require('2.0')
 import gtk
 
+from database import db 
+
 class HelloWorld:
 
     def hello(self, widget, data=None):
@@ -27,15 +29,18 @@ class HelloWorld:
     def __init__(self):
 
         gtk.rc_parse_string("style 'scroll' {\n"
-                            "   GtkRange::slider-width = 40\n"
+                            "   engine 'sapwood'{\n"
+                            "       GtkRange::slider-width = 40\n"
+                            "   }\n"
                             "}\n"
                             "class 'GtkRange' style 'scroll'")        
 
         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
         
-        self.window.set_size_request(300, 200)
+        self.window.set_size_request(600, 360)
         
-    
+        
+
         # 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
@@ -62,45 +67,30 @@ class HelloWorld:
 
         vbox.pack_start(sw, True, True, 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]])
+        self.dbo = db.DbSqlite()
+        self.data = self.dbo.get_allrecords('cn')
 
+        store = gtk.ListStore(int, str)
+        for d in self.data:
+            store.append([d, self.data[d]])
+        
         tree = gtk.TreeView(store)
         tree.set_rules_hint(True)
 
         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)
+        column.set_visible(False)
         tree.append_column(column)
 
-        
         t1 = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("State", t1, text=1)
-        column.set_sort_column_id(1)
+        column = gtk.TreeViewColumn("Name", t1, text=1)
+        column.set_sort_column_id(0)
         tree.append_column(column)
 
 
-        t1 = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Phone", t1, text=2)
-        column.set_sort_column_id(2)
-        tree.append_column(column)
-
         sw.add(tree)
 
        
@@ -118,8 +108,22 @@ class HelloWorld:
                                 self.window, 
                                 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                                 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
-        
-        label = gtk.Label("select item %s" % path)
+        model = widget.get_model()
+        id = model[path][0]
+        rec = self.dbo.get_record(id)
+        print rec
+        text = ""
+        for r in rec:
+            print "%s -> %s" % (r, rec[r])
+            text += "%s:  %s\n" % (r, rec[r])
+
+        #sw = gtk.ScrolledWindow()
+        #sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+        #sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        label = gtk.Label(text)
+        #sw.add(label)
+        #label.set_markup(text)
         self.dialog.vbox.pack_start(label)
         label.show()
         response = self.dialog.run()