[gevice] Fixes bug 583056



commit 56ce5617eb42453ad212d64cf4acf0932d226d4d
Author: Alejandro Valdes Jimenez <avaldes utalca cl>
Date:   Thu May 21 17:12:54 2009 -0400

    Fixes bug 583056
---
 ChangeLog               |    7 ++++
 data/glade/gevice.glade |    6 ++-
 src/gevice.py           |   18 ++++++++----
 src/geviceprefer.py     |   71 +++++++++++++++++++++++++++++++++++------------
 4 files changed, 76 insertions(+), 26 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index bb3e52f..429072c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-05-21  Alejandro Valdes Jimenez  <avaldes gnome org>
+
+	Fixes bug #583056.
+	* data/glade/gevice.glade: change viewport for scrollwindows (tab user - window_prefer)
+	* src/gevice.py: add functon set_listusers_on_combobox()
+	* src/geviceprefer.py: add support for save/load users list in gconf.
+
 2009-05-19  Alejandro Valdes Jimenez  <avaldes gnome org>
 
 	* data/glade/gevice.glade: add new tab in window preferences. (lists of users)
diff --git a/data/glade/gevice.glade b/data/glade/gevice.glade
index 7ced0cc..2403e30 100644
--- a/data/glade/gevice.glade
+++ b/data/glade/gevice.glade
@@ -378,9 +378,11 @@
               <widget class="GtkHBox" id="hbox1">
                 <property name="visible">True</property>
                 <child>
-                  <widget class="GtkViewport" id="viewport1">
+                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
                     <property name="visible">True</property>
-                    <property name="resize_mode">queue</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
                     <child>
                       <widget class="GtkTreeView" id="treeview_users">
                         <property name="visible">True</property>
diff --git a/src/gevice.py b/src/gevice.py
index 3a5a565..103803b 100755
--- a/src/gevice.py
+++ b/src/gevice.py
@@ -26,6 +26,7 @@ import gtk
 import gnome
 import gtk.glade
 import psycopg2
+import gobject
 
 import config
 import gevicefind
@@ -118,6 +119,7 @@ class Gevice:
         self.list_links = None
         self.connected_to_database = False
         self.context_id = None
+        self.modelusers = gtk.ListStore(gobject.TYPE_STRING)
 
         # get model for devices
         self.gmodel = gevicemodel.GeviceModel(self)
@@ -225,7 +227,7 @@ class Gevice:
 
         self.vboxcombo = gtk.VBox(False,0)
 
-        self.combobox_user = gtk.combo_box_entry_new_text()
+        self.combobox_user = gtk.combo_box_entry_new_with_model(self.modelusers,0)
 
         self.vboxcombo.pack_end (self.combobox_user,True,False)
         self.toolitem_user.add(self.vboxcombo)
@@ -276,16 +278,20 @@ class Gevice:
         self.gpref.load_preferences(self)
         self.gpref.load_interface (self)
 
-        # set users in combo
-        for user in self.gpref.listusers:
-            self.combobox_user.append_text(user)
-        
-        self.combobox_user.set_active (0)
+        self.set_listusers_on_combobox()
 
         # show all
         self.window_main.show_all()
         return
 
+    def set_listusers_on_combobox (self):
+        self.modelusers.clear()
+        for user in self.gpref.listusers:
+            self.combobox_user.append_text(user)
+        
+        self.combobox_user.set_active (0)
+        
+
     def main(self):
         gtk.main()
 
diff --git a/src/geviceprefer.py b/src/geviceprefer.py
index 1210500..441822b 100644
--- a/src/geviceprefer.py
+++ b/src/geviceprefer.py
@@ -29,8 +29,6 @@ class GevicePrefer:
         self.dbase = _("Database")
         self.user_dbase = _("User database")
         
-        self.modelusers = gtk.ListStore(gobject.TYPE_STRING)
-        
     
     def load_interface (self,gevice):
         glade_file = gtk.glade.XML (os.path.join (config.GLADEDIR, "gevice.glade"),"window_prefer",None)
@@ -75,8 +73,8 @@ class GevicePrefer:
         self.entry_dbase.connect ("changed",self.on_entry_dbase_changed,gevice)
         self.entry_user_dbase.connect ("changed",self.on_entry_user_dbase_changed,gevice)
         
-        self.button_add_user.connect ("clicked",self.on_button_add_user_clicked)
-        self.button_rem_user.connect ("clicked",self.on_button_rem_user_clicked)        
+        self.button_add_user.connect ("clicked",self.on_button_add_user_clicked,gevice)
+        self.button_rem_user.connect ("clicked",self.on_button_rem_user_clicked,gevice)        
         
         # for not activate callback when loading preferences
         self.flag_load_preferences = True
@@ -101,36 +99,37 @@ class GevicePrefer:
         col = gtk.TreeViewColumn (_("Users"))
         self.treeview_users.append_column (col)
         cell =  gtk.CellRendererText()
-        cell.connect('edited', self.on_name_user_edited)
+        cell.connect('edited', self.on_name_user_edited,gevice)
         col.pack_start (cell,True)
         cell.set_property('editable',True)
         col.add_attribute (cell,"text",0)        
         
         self.treeview_users.set_model (None)               
-        self.treeview_users.set_model (self.modelusers)
-        self.modelusers.clear()
+        self.treeview_users.set_model (gevice.modelusers)
+        gevice.modelusers.clear()
         
         for usr in self.listusers:
-            iter = self.modelusers.append ()
-            self.modelusers.set (
+            iter = gevice.modelusers.append ()
+            gevice.modelusers.set (
                     iter,
                     0,usr)
 
 
-    def on_name_user_edited(self,cell,path,newname):
+    def on_name_user_edited(self,cell,path,newname,gevice):
         newname = newname.strip()
-        iter = self.modelusers.get_iter_from_string(path)
-        oldname = self.modelusers.get(iter,0)[0]
+        iter = gevice.modelusers.get_iter_from_string(path)
+        oldname = gevice.modelusers.get(iter,0)[0]
         
         # check, newname exists
         if oldname == newname:
             return 
         
         self.is_in_list = False
-        self.modelusers.foreach(self.is_newname_in_list, newname)
+        gevice.modelusers.foreach(self.is_newname_in_list, newname)
         
         if not self.is_in_list:
-            print "guardar"
+            gevice.modelusers.set(iter,0,newname)
+            self.save_preferences(gevice)
         else:
             dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,_("User exist: " + newname) )
             dialog.run()
@@ -152,11 +151,36 @@ class GevicePrefer:
     def close_window (self,window):
         window.destroy()
 
-    def on_button_add_user_clicked (self,button):
-        pass
+    def on_button_add_user_clicked (self,button,gevice):
+        liststore = self.treeview_users.get_model()
+        iter = liststore.append ()
+        liststore.set (
+            iter,
+            0,"New")
+            
+        path = liststore.get_path(iter)
+        self.treeview_users.set_cursor(path,None,False)
+        
+        self.save_preferences(gevice)
+
+
+    def on_button_rem_user_clicked (self,button,gevice):
+        selection = self.treeview_users.get_selection()
+        model,iter = selection.get_selected()
+        
+        name = model.get(iter,0)[0]
+                
+        dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION,
+                gtk.BUTTONS_YES_NO, _("Do you want to remove: ") + name)
+
+        result = dialog.run()
+
+        if result == gtk.RESPONSE_YES:
+                model.remove(iter)
+                self.save_preferences(gevice)
+            
+        dialog.destroy()       
 
-    def on_button_rem_user_clicked (self,button):
-        pass
 
     def on_button_background_clicked (self,button,entry):
         self.create_color_selection_dialog(_("Select background color"),entry)
@@ -301,8 +325,19 @@ class GevicePrefer:
             client.set_bool('/apps/gevice/diagmodel', self.diagmodel)
             client.set_bool('/apps/gevice/diaglink', self.diaglink)
             
+            # clear list
+            self.listusers = []
+            gevice.modelusers.foreach(self.update_list_users)
+            client.set_list('/apps/gevice/listusers',gconf.VALUE_STRING,self.listusers)
+            
+            gevice.set_listusers_on_combobox()
             gevice.update_statusbar ()
     
+    def update_list_users(self,model,path,iter):
+        username = model.get(iter,0)[0]
+        self.listusers.append(username)
+        
+        
     def show_column (self,checkbutton,column,gevice):
         st =  checkbutton.get_active()
         tcl = gevice.gmodel.treeview.get_column (column)



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