[gevice] add functios for select,insert,update and delete models



commit 7fe7d88ea0f2e7115a6f45ad26ed1bbe7cdb5566
Author: Alejandro Valdes Jimenez <avaldes lenny utalca cl>
Date:   Tue May 12 18:16:30 2009 -0400

    add functios for select,insert,update and delete models
---
 src/gevicemaintainer.py |  174 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 173 insertions(+), 1 deletions(-)

diff --git a/src/gevicemaintainer.py b/src/gevicemaintainer.py
index f3fccfb..f918d00 100644
--- a/src/gevicemaintainer.py
+++ b/src/gevicemaintainer.py
@@ -13,7 +13,9 @@ import config
 
 class GeviceMaintainer:
     def __ini__ (self):
-        pass
+        self.list_mark = None
+        self.list_type = None
+
     
     def load_interface (self,gevice,title,sql):
         glade_file = gtk.glade.XML (os.path.join (config.GLADEDIR, "gevice.glade"),"window_maintainer",None)
@@ -48,6 +50,85 @@ class GeviceMaintainer:
         self.button_add.connect ("clicked",self.on_button_add_clicked,gevice,sql)
         self.button_rem.connect ("clicked",self.on_button_rem_clicked,gevice,sql)
 
+    def load_interface1 (self,gevice,title,sql):
+        glade_file = gtk.glade.XML (os.path.join (config.GLADEDIR, "gevice.glade"),"window_maintainer1",None)
+        self.window_maintainer = glade_file.get_widget ("window_maintainer1")
+        self.button_add = glade_file.get_widget ("button_add1")
+        self.button_rem = glade_file.get_widget ("button_rem1")
+        self.button_close = glade_file.get_widget ("button_close1")
+        self.treeview = glade_file.get_widget ("treeview1")        
+        
+        self.window_maintainer.set_title (title)
+
+        self.modelcell = gtk.ListStore(int, gobject.TYPE_STRING)
+        
+        # create columns
+        col = gtk.TreeViewColumn (_("ID"))
+        col.set_resizable (True)
+        self.treeview.append_column (col)
+        cell =  gtk.CellRendererText()
+        cell.set_property('editable',False)
+        col.pack_start (cell,True)
+        col.add_attribute (cell,"text",0)
+        
+        col = gtk.TreeViewColumn (_("Device"))
+        col.set_resizable (True)
+        self.treeview.append_column (col)
+        cell =  gtk.CellRendererText()
+        cell.set_property('editable',False)
+        col.pack_start (cell,True)
+        col.add_attribute (cell,"text",1)
+
+        col = gtk.TreeViewColumn (_("Model"))
+        col.set_resizable (True)
+        self.treeview.append_column (col)
+        cell =  gtk.CellRendererText()
+        cell.set_property('editable',True)
+        cell.connect('edited', self.on_model_edited,gevice,sql)        
+        col.pack_start (cell,True)
+        col.add_attribute (cell,"text",2)
+		
+        self.button_close.connect ("clicked",self.on_button_close_clicked,)
+        self.button_rem.connect ("clicked",self.on_button_rem_model_clicked,gevice,sql)
+        self.button_add.connect ("clicked",self.on_button_add_model_clicked,gevice,sql)
+
+
+    def load_interface_model (self,gevice,sql):
+        glade_file = gtk.glade.XML (os.path.join (config.GLADEDIR, "gevice.glade"),"window_model",None)
+        self.window_model = glade_file.get_widget ("window_model")
+        self.button_ok = glade_file.get_widget ("button_ok")
+        self.button_cancel = glade_file.get_widget ("button_cancel")
+        self.combobox_type = glade_file.get_widget ("combobox_type")
+        self.combobox_mark = glade_file.get_widget ("combobox_mark")
+        self.entry_model = glade_file.get_widget ("entry_model")
+        
+        self.button_cancel.connect ("clicked",self.on_button_model_cancel_clicked)
+        self.button_ok.connect ("clicked",self.on_button_model_ok_clicked,gevice,sql)
+        
+        
+        self.list_type = gevice.gdbase.get_list_of_type(gevice)
+        self.combobox_type.set_model(self.list_type)
+        cell = gtk.CellRendererText()
+        self.combobox_type.pack_start(cell, True)
+        self.combobox_type.add_attribute(cell, 'text', 0)  
+        
+        self.list_mark = gevice.gdbase.get_list_of_mark(gevice)
+        self.combobox_mark.set_model (self.list_mark)
+        cell = gtk.CellRendererText()
+        self.combobox_mark.pack_start(cell, True)
+        self.combobox_mark.add_attribute(cell, 'text', 0)  
+        
+        self.entry_model.set_text("")
+        self.combobox_type.set_active(0)
+        self.combobox_mark.set_active(0)
+        
+        self.window_model.show_all()
+
+
+    def on_button_model_cancel_clicked (self,button):
+        self.close_window (self.window_model)    
+
+
     def show_interface (self):
     	self.window_maintainer.show_all()
 
@@ -70,12 +151,36 @@ class GeviceMaintainer:
                     0,row[0],
                     1,row[1])
 
+
+    def load_data1 (self,gevice,sql):
+        liststore = gtk.ListStore(
+            gobject.TYPE_INT,
+            gobject.TYPE_STRING,
+            gobject.TYPE_STRING)
+        
+        self.treeview.set_model (None)
+        self.treeview.set_model (liststore)
+
+        rows = gevice.gdbase.execute_sql_select(gevice,sql["select"])
+        
+        if rows:
+            for row in rows:
+                iter = liststore.append ()
+                liststore.set (
+                    iter,
+                    0,row[0],
+                    1,row[1],
+                    2,row[2])
+
+
     def close_window (self,window):
 	    window.destroy()
+
         
     def on_button_close_clicked (self,button):
         self.close_window (self.window_maintainer)
 
+
     def on_name_edited (self, cell, path, newname,gevice,sql):
         newname = newname.strip()
         model = self.treeview.get_model()
@@ -110,6 +215,23 @@ class GeviceMaintainer:
             self.is_in_list = True;
             return True
         return False;
+        
+    def on_model_edited(self, cell, path, newname,gevice,sql):
+        newname = newname.strip()
+        model = self.treeview.get_model()
+        iter = model.get_iter_from_string(path)
+        id,oldname = model.get(iter,0,2)
+        
+        # check, newname exists
+        if oldname == newname:
+            return
+
+        model.set(iter,2,newname)
+        update = sql["update1"] + "'" + newname + "'" + sql["update2"] + str(id)
+        
+        if (gevice.gdbase.execute_sql_update(gevice,update)):
+            gevice.gdbase.conn.commit()
+
 
     def on_button_add_clicked(self,button,gevice,sql):
         row = gevice.gdbase.execute_sql_select (gevice,sql["max_id"])
@@ -121,11 +243,18 @@ class GeviceMaintainer:
             0,row[0][0],
             1,"New" + str(row[0][0]))
             
+        path = liststore.get_path(iter)
+        self.treeview.set_cursor(path,None,False)        
+            
         insert = sql["insert"] + " (" + str(row[0][0]) + ",'" + "New" + str(row[0][0]) + "')"
         
         if (gevice.gdbase.execute_sql_insert (gevice,insert)):
             gevice.gdbase.conn.commit()
+
     
+    def on_button_add_model_clicked(self,button,gevice,sql):
+        self.load_interface_model(gevice,sql) 
+         
     
     def on_button_rem_clicked(self,button,gevice,sql):
         selection = self.treeview.get_selection()
@@ -149,3 +278,46 @@ class GeviceMaintainer:
 
         dialog.destroy()       
 
+    def on_button_rem_model_clicked(self,button,gevice,sql):
+        selection = self.treeview.get_selection()
+        model,iter = selection.get_selected()
+        
+        id = model.get(iter,0)[0]
+        device = model.get(iter,1)[0]
+        name = model.get(iter,2)[0]
+        
+        delete = sql["delete"] + str(id)
+        
+        dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION,
+                gtk.BUTTONS_YES_NO, _("Really delete: ") + device + " " + name)
+
+        result = dialog.run()
+
+        if result == gtk.RESPONSE_YES:
+            if (gevice.gdbase.execute_sql_delete (gevice,delete)):
+                model.remove(iter)
+            
+            gevice.gdbase.conn.commit()
+
+        dialog.destroy()       
+        
+
+    def on_button_model_ok_clicked (self,button,gevice,sql):
+        nmodel = self.entry_model.get_text()
+        
+        iter_mark = self.combobox_mark.get_active_iter()
+        id_mark = self.list_mark.get_value(iter_mark,1)
+        
+        iter_type = self.combobox_type.get_active_iter()
+        id_type = self.list_type.get_value(iter_type,1)
+        
+
+        row = gevice.gdbase.execute_sql_select (gevice,sql["max_id"])
+
+        insert = sql["insert"] + " (" + str(row[0][0]) + "," + str(id_type) + "," + str(id_mark) + ",'" + nmodel + "')"
+        
+        if (gevice.gdbase.execute_sql_insert (gevice,insert)):        
+            gevice.gdbase.conn.commit()        
+        
+            self.load_data1(gevice,sql)
+            self.on_button_model_cancel_clicked(None)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]