[gevice] add lists of users to gconf



commit 22da570efa7cfe698e7c326389f494dada514d03
Author: Alejandro Valdes Jimenez <avaldes utalca cl>
Date:   Tue May 19 22:40:54 2009 -0400

    add lists of users to gconf
---
 ChangeLog               |    6 +++
 data/glade/gevice.glade |   78 +++++++++++++++++++++++++++++++++++++++++++++++
 src/gevice.py           |   15 ++++-----
 src/geviceprefer.py     |   72 ++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 162 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 23c4f46..bb3e52f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-19  Alejandro Valdes Jimenez  <avaldes gnome org>
+
+	* data/glade/gevice.glade: add new tab in window preferences. (lists of users)
+	* src/gevice.py:
+	* src/geviceprefer.py: load preferences from gconf.
+
 2009-05-14  Alejandro Valdes Jimenez  <avaldes utalca cl>
 
 	TAG GEVICE_0_5_1
diff --git a/data/glade/gevice.glade b/data/glade/gevice.glade
index e330d77..7ced0cc 100644
--- a/data/glade/gevice.glade
+++ b/data/glade/gevice.glade
@@ -375,10 +375,88 @@
               </packing>
             </child>
             <child>
+              <widget class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <child>
+                  <widget class="GtkViewport" id="viewport1">
+                    <property name="visible">True</property>
+                    <property name="resize_mode">queue</property>
+                    <child>
+                      <widget class="GtkTreeView" id="treeview_users">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="rules_hint">True</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox1">
+                    <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <widget class="GtkButton" id="button_add_user">
+                        <property name="label" translatable="yes">gtk-add</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_stock">True</property>
+                        <property name="xalign">0.50999999046325684</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button_rem_user">
+                        <property name="label" translatable="yes">gtk-remove</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_stock">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Lists of users</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
               <placeholder/>
             </child>
             <child>
               <placeholder/>
+              <packing>
+                <property name="type">tab</property>
+              </packing>
             </child>
             <child>
               <widget class="GtkTable" id="table3">
diff --git a/src/gevice.py b/src/gevice.py
index e7874ce..3a5a565 100755
--- a/src/gevice.py
+++ b/src/gevice.py
@@ -225,10 +225,7 @@ class Gevice:
 
         self.vboxcombo = gtk.VBox(False,0)
 
-        # FIXME: management users with gconf?
         self.combobox_user = gtk.combo_box_entry_new_text()
-        self.combobox_user.append_text('root')
-        self.combobox_user.set_active (0)
 
         self.vboxcombo.pack_end (self.combobox_user,True,False)
         self.toolitem_user.add(self.vboxcombo)
@@ -271,8 +268,6 @@ class Gevice:
         self.vbox.pack_start (hbox_status, False)
         self.context_id = self.statusbar.get_context_id("status")
 
-
-
         self.actiongroup_model.set_sensitive (False)
         self.window_main.set_title(config.PACKAGE)
 
@@ -281,6 +276,12 @@ 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)
+
         # show all
         self.window_main.show_all()
         return
@@ -382,8 +383,6 @@ class Gevice:
         dialogmaintainer.show_interface ()
 
 
-        
-
     def on_action_mark (gevice,action):
         sql = {"select":"select * from marca order by 1",
         "insert":"insert into marca values ",
@@ -584,7 +583,7 @@ class Gevice:
         msg+= _("User: ") + self.gpref.user_dbase + "]"
         
         self.statusbar.push (self.context_id,msg)
-
+    
 
 if __name__ == "__main__":
 	gnome.init(config.PACKAGE,config.VERSION)	
diff --git a/src/geviceprefer.py b/src/geviceprefer.py
index 78aa0ea..1210500 100644
--- a/src/geviceprefer.py
+++ b/src/geviceprefer.py
@@ -3,6 +3,7 @@ pygtk.require('2.0')
 import gtk.glade
 import os
 import gconf
+import gobject
 
 import gettext
 gettext.textdomain("gevice")
@@ -27,6 +28,9 @@ class GevicePrefer:
         self.host = _("Host")
         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)
@@ -49,6 +53,9 @@ class GevicePrefer:
         self.entry_host = glade_file.get_widget ("entry_host")
         self.entry_dbase = glade_file.get_widget ("entry_dbase")
         self.entry_user_dbase = glade_file.get_widget ("entry_user_dbase")
+        self.button_add_user = glade_file.get_widget ("button_add_user")
+        self.button_rem_user = glade_file.get_widget ("button_rem_user")
+        self.treeview_users = glade_file.get_widget ("treeview_users")
         
         self.button_close_prefer.connect ("clicked",self.on_button_close_prefer_clicked)
         self.checkbutton_ip.connect ("toggled",self.show_column,config.COLUMN_IP_DEV,gevice)
@@ -68,6 +75,9 @@ 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)        
+        
         # for not activate callback when loading preferences
         self.flag_load_preferences = True
         
@@ -87,6 +97,54 @@ class GevicePrefer:
         self.checkbutton_link_diag.set_active(self.diaglink)
                    
         self.flag_load_preferences = False
+        
+        col = gtk.TreeViewColumn (_("Users"))
+        self.treeview_users.append_column (col)
+        cell =  gtk.CellRendererText()
+        cell.connect('edited', self.on_name_user_edited)
+        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()
+        
+        for usr in self.listusers:
+            iter = self.modelusers.append ()
+            self.modelusers.set (
+                    iter,
+                    0,usr)
+
+
+    def on_name_user_edited(self,cell,path,newname):
+        newname = newname.strip()
+        iter = self.modelusers.get_iter_from_string(path)
+        oldname = self.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)
+        
+        if not self.is_in_list:
+            print "guardar"
+        else:
+            dialog = gtk.MessageDialog(None,gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,_("User exist: " + newname) )
+            dialog.run()
+            dialog.destroy()
+
+    def is_newname_in_list(self,model,path,iter,newname):
+        oldname = model.get(iter,0)[0]
+
+        self.is_in_list = False;
+        if oldname == newname:
+            self.is_in_list = True;
+            return True
+        return False;
+
 
     def show_interface (self):
         self.window_prefer.show_all()
@@ -94,6 +152,12 @@ class GevicePrefer:
     def close_window (self,window):
         window.destroy()
 
+    def on_button_add_user_clicked (self,button):
+        pass
+
+    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)
         
@@ -157,6 +221,7 @@ class GevicePrefer:
         backcolor = client.get_string('/apps/gevice/backcolor')
         forecolor = client.get_string('/apps/gevice/forecolor')
         csvseparator = client.get_string('/apps/gevice/csvseparator')
+        listusers = client.get_list('/apps/gevice/listusers',gconf.VALUE_STRING)
         
         self.viewip = client.get_bool('/apps/gevice/viewip')
         self.viewmodel = client.get_bool('/apps/gevice/viewmodel')
@@ -165,7 +230,12 @@ class GevicePrefer:
         self.diagip = client.get_bool('/apps/gevice/diagip')
         self.diagmodel = client.get_bool('/apps/gevice/diagmodel')
         self.diaglink = client.get_bool('/apps/gevice/diaglink')
-
+        
+        if (listusers):
+            self.listusers = listusers
+        else:
+            self.listusers = ['user']
+                    
         if (host):
             self.host = host        
 



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