* src/FamilyView.py: Enable keyboard navigation in Family View.
svn: r2358
This commit is contained in:
		@@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					2003-11-19  Alex Roitman  <shura@alex.neuro.umn.edu>
 | 
				
			||||||
 | 
						* src/FamilyView.py: Enable keyboard navigation in Family View. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2003-11-19  Don Allingham  <dallingham@users.sourceforge.net>
 | 
					2003-11-19  Don Allingham  <dallingham@users.sourceforge.net>
 | 
				
			||||||
	* src/GrampsCfg.py: Add comment about SUSE naming of gconf
 | 
						* src/GrampsCfg.py: Add comment about SUSE naming of gconf
 | 
				
			||||||
	* src/Relationship.py: detect a RuntimeError exception that occurs
 | 
						* src/Relationship.py: detect a RuntimeError exception that occurs
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
# You should have received a copy of the GNU General Public License
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
# along with this program; if not, write to the Free Software
 | 
					# along with this program; if not, write to the Free Software
 | 
				
			||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
					# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
				
			||||||
#
 | 
					
 | 
				
			||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#-------------------------------------------------------------------------
 | 
					#-------------------------------------------------------------------------
 | 
				
			||||||
@@ -81,6 +81,11 @@ class FamilyView:
 | 
				
			|||||||
            self.select_spouse_btn = self.top.get_widget('select_spouse2')
 | 
					            self.select_spouse_btn = self.top.get_widget('select_spouse2')
 | 
				
			||||||
            self.remove_spouse_btn = self.top.get_widget('remove_spouse2')
 | 
					            self.remove_spouse_btn = self.top.get_widget('remove_spouse2')
 | 
				
			||||||
            self.child_list = self.top.get_widget('chlist2')
 | 
					            self.child_list = self.top.get_widget('chlist2')
 | 
				
			||||||
 | 
					            self.ap_swap_arrow = "Right"
 | 
				
			||||||
 | 
					            self.sp_swap_arrow = "Left"
 | 
				
			||||||
 | 
					            self.ap_par_arrow = "Down"
 | 
				
			||||||
 | 
					            self.sp_par_arrow = "Down"
 | 
				
			||||||
 | 
					            self.child_arrow = "Up"
 | 
				
			||||||
            if not already_init:
 | 
					            if not already_init:
 | 
				
			||||||
                self.top.get_widget('add_parents2').connect('clicked',self.add_parents_clicked)
 | 
					                self.top.get_widget('add_parents2').connect('clicked',self.add_parents_clicked)
 | 
				
			||||||
                self.top.get_widget('del_parents2').connect('clicked',self.del_parents_clicked)
 | 
					                self.top.get_widget('del_parents2').connect('clicked',self.del_parents_clicked)
 | 
				
			||||||
@@ -106,6 +111,11 @@ class FamilyView:
 | 
				
			|||||||
            self.select_spouse_btn = self.top.get_widget('select_spouse')
 | 
					            self.select_spouse_btn = self.top.get_widget('select_spouse')
 | 
				
			||||||
            self.remove_spouse_btn = self.top.get_widget('remove_spouse')
 | 
					            self.remove_spouse_btn = self.top.get_widget('remove_spouse')
 | 
				
			||||||
            self.child_list = self.top.get_widget('chlist')
 | 
					            self.child_list = self.top.get_widget('chlist')
 | 
				
			||||||
 | 
					            self.ap_swap_arrow = "Down"
 | 
				
			||||||
 | 
					            self.sp_swap_arrow = "Up"
 | 
				
			||||||
 | 
					            self.ap_par_arrow = "Right"
 | 
				
			||||||
 | 
					            self.sp_par_arrow = "Right"
 | 
				
			||||||
 | 
					            self.child_arrow = "Left"
 | 
				
			||||||
            if not already_init:
 | 
					            if not already_init:
 | 
				
			||||||
                self.top.get_widget('add_parents').connect('clicked',self.add_parents_clicked)
 | 
					                self.top.get_widget('add_parents').connect('clicked',self.add_parents_clicked)
 | 
				
			||||||
                self.top.get_widget('del_parents').connect('clicked',self.del_parents_clicked)
 | 
					                self.top.get_widget('del_parents').connect('clicked',self.del_parents_clicked)
 | 
				
			||||||
@@ -133,7 +143,8 @@ class FamilyView:
 | 
				
			|||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
					            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
				
			||||||
            self.ap_data.append_column(column)
 | 
					            self.ap_data.append_column(column)
 | 
				
			||||||
            self.ap_data.connect('button-press-event',self.edit_active_person)
 | 
					            self.ap_data.connect('button-press-event',self.ap_button_press)
 | 
				
			||||||
 | 
					            self.ap_data.connect('key-press-event',self.ap_key_press)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.ap_parents_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
					        self.ap_parents_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
				
			||||||
        self.ap_parents.set_model(self.ap_parents_model)
 | 
					        self.ap_parents.set_model(self.ap_parents_model)
 | 
				
			||||||
@@ -141,7 +152,8 @@ class FamilyView:
 | 
				
			|||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
					            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
				
			||||||
            self.ap_parents.append_column(column)
 | 
					            self.ap_parents.append_column(column)
 | 
				
			||||||
            self.ap_parents.connect('button-press-event',self.edit_ap_parents)
 | 
					            self.ap_parents.connect('button-press-event',self.ap_par_button_press)
 | 
				
			||||||
 | 
					            self.ap_parents.connect('key-press-event',self.ap_par_key_press)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.sp_parents_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
					        self.sp_parents_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
				
			||||||
        self.sp_parents.set_model(self.sp_parents_model)
 | 
					        self.sp_parents.set_model(self.sp_parents_model)
 | 
				
			||||||
@@ -149,14 +161,16 @@ class FamilyView:
 | 
				
			|||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
					            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
				
			||||||
            self.sp_parents.append_column(column)
 | 
					            self.sp_parents.append_column(column)
 | 
				
			||||||
            self.sp_parents.connect('button-press-event',self.edit_sp_parents)
 | 
					            self.sp_parents.connect('button-press-event',self.sp_par_button_press)
 | 
				
			||||||
 | 
					            self.sp_parents.connect('key-press-event',self.sp_par_key_press)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.spouse_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
					        self.spouse_model = gtk.ListStore(gobject.TYPE_STRING)
 | 
				
			||||||
        self.spouse_list.set_model(self.spouse_model)
 | 
					        self.spouse_list.set_model(self.spouse_model)
 | 
				
			||||||
        self.spouse_selection = self.spouse_list.get_selection()
 | 
					        self.spouse_selection = self.spouse_list.get_selection()
 | 
				
			||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            self.spouse_selection.connect('changed',self.spouse_changed)
 | 
					            self.spouse_selection.connect('changed',self.spouse_changed)
 | 
				
			||||||
            self.spouse_list.connect('button-press-event',self.edit_relationship)
 | 
					            self.spouse_list.connect('button-press-event',self.sp_button_press)
 | 
				
			||||||
 | 
					            self.spouse_list.connect('key-press-event',self.sp_key_press)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
					            column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
 | 
				
			||||||
@@ -178,6 +192,7 @@ class FamilyView:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if not already_init:
 | 
					        if not already_init:
 | 
				
			||||||
            self.child_list.connect('button-press-event',self.on_child_list_button_press)
 | 
					            self.child_list.connect('button-press-event',self.on_child_list_button_press)
 | 
				
			||||||
 | 
					            self.child_list.connect('key-press-event',self.child_key_press)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.swap_btn.connect('clicked',self.spouse_swap)
 | 
					            self.swap_btn.connect('clicked',self.spouse_swap)
 | 
				
			||||||
            self.remove_spouse_btn.connect('clicked',self.remove_spouse)
 | 
					            self.remove_spouse_btn.connect('clicked',self.remove_spouse)
 | 
				
			||||||
@@ -195,12 +210,85 @@ class FamilyView:
 | 
				
			|||||||
                                  (_('Status'),100,-1), ('',0,-1) ])
 | 
					                                  (_('Status'),100,-1), ('',0,-1) ])
 | 
				
			||||||
        self.cadded[fv] = 1
 | 
					        self.cadded[fv] = 1
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    def edit_active_person(self,obj,event):
 | 
					    def ap_button_press(self,obj,event):
 | 
				
			||||||
        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
 | 
					        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
 | 
				
			||||||
            self.parent.load_person(self.person)
 | 
					            self.parent.load_person(self.person)
 | 
				
			||||||
        elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3 and self.person:
 | 
					        elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3 and self.person:
 | 
				
			||||||
            self.build_ap_menu(event)
 | 
					            self.build_ap_menu(event)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def ap_key_press(self,obj,event):
 | 
				
			||||||
 | 
					        if event.keyval == gtk.gdk.keyval_from_name("Return") \
 | 
				
			||||||
 | 
					                                    and not event.state:
 | 
				
			||||||
 | 
					            self.parent.load_person(self.person)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name(self.ap_swap_arrow) \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.spouse_swap(obj)
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					    def sp_key_press(self,obj,event):
 | 
				
			||||||
 | 
					        if event.keyval == gtk.gdk.keyval_from_name("Return") and not event.state:
 | 
				
			||||||
 | 
					            if self.selected_spouse:
 | 
				
			||||||
 | 
					                self.edit_marriage_callback(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Return") \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.SHIFT_MASK:
 | 
				
			||||||
 | 
					            self.edit_spouse_callback(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name(self.sp_swap_arrow) \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.spouse_swap(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
 | 
				
			||||||
 | 
					            self.remove_spouse(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
 | 
				
			||||||
 | 
					            self.select_spouse(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.add_spouse(obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def ap_par_key_press(self,obj,event):
 | 
				
			||||||
 | 
					        if self.person == None:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        if event.keyval == gtk.gdk.keyval_from_name("Return") and not event.state:
 | 
				
			||||||
 | 
					            self.edit_ap_relationships(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name(self.ap_par_arrow) \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.ap_parents_clicked(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
 | 
				
			||||||
 | 
					            self.del_parents_clicked(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
 | 
				
			||||||
 | 
					            self.add_parents_clicked(obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def sp_par_key_press(self,obj,event):
 | 
				
			||||||
 | 
					        if self.person == None:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        if event.keyval == gtk.gdk.keyval_from_name("Return") and not event.state:
 | 
				
			||||||
 | 
					            self.edit_sp_relationships(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name(self.sp_par_arrow) \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.sp_parents_clicked(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
 | 
				
			||||||
 | 
					            self.del_sp_parents(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
 | 
				
			||||||
 | 
					            self.add_sp_parents(obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def child_key_press(self,obj,event):
 | 
				
			||||||
 | 
					        model, iter = self.child_selection.get_selected()
 | 
				
			||||||
 | 
					        if not iter:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        id = self.child_model.get_value(iter,2)
 | 
				
			||||||
 | 
					        if event.keyval == gtk.gdk.keyval_from_name("Return") and not event.state:
 | 
				
			||||||
 | 
					            self.child_rel_by_id(id)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Return") \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.SHIFT_MASK:
 | 
				
			||||||
 | 
					            self.edit_child_callback(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name(self.child_arrow) \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.child_back(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
 | 
				
			||||||
 | 
					            self.remove_child_clicked(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
 | 
				
			||||||
 | 
					            self.select_child_clicked(obj)
 | 
				
			||||||
 | 
					        elif event.keyval == gtk.gdk.keyval_from_name("Insert") \
 | 
				
			||||||
 | 
					                                    and event.state == gtk.gdk.CONTROL_MASK:
 | 
				
			||||||
 | 
					            self.add_child_clicked(obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def build_ap_menu(self,event):
 | 
					    def build_ap_menu(self,event):
 | 
				
			||||||
        """Builds the menu with navigation for the active person box"""
 | 
					        """Builds the menu with navigation for the active person box"""
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -298,7 +386,7 @@ class FamilyView:
 | 
				
			|||||||
            return
 | 
					            return
 | 
				
			||||||
        id = self.child_model.get_value(iter,2)
 | 
					        id = self.child_model.get_value(iter,2)
 | 
				
			||||||
        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
 | 
					        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
 | 
				
			||||||
            self.parent.load_person(self.parent.db.getPerson(id))
 | 
					            self.child_rel_by_id(id)
 | 
				
			||||||
        elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
 | 
					        elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
 | 
				
			||||||
            self.build_child_menu(id,event)
 | 
					            self.build_child_menu(id,event)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -348,6 +436,10 @@ class FamilyView:
 | 
				
			|||||||
        person = self.parent.db.getPerson(obj.get_data(Utils.OBJECT))
 | 
					        person = self.parent.db.getPerson(obj.get_data(Utils.OBJECT))
 | 
				
			||||||
        SelectChild.EditRel(person,self.family,self.load_family)
 | 
					        SelectChild.EditRel(person,self.family,self.load_family)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					    def child_rel_by_id(self,id):
 | 
				
			||||||
 | 
					        person = self.parent.db.getPerson(id)
 | 
				
			||||||
 | 
					        SelectChild.EditRel(person,self.family,self.load_family)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def spouse_changed(self,obj):
 | 
					    def spouse_changed(self,obj):
 | 
				
			||||||
        model, iter = obj.get_selected()
 | 
					        model, iter = obj.get_selected()
 | 
				
			||||||
        if not iter:
 | 
					        if not iter:
 | 
				
			||||||
@@ -405,7 +497,7 @@ class FamilyView:
 | 
				
			|||||||
                          self.parent.new_after_edit,
 | 
					                          self.parent.new_after_edit,
 | 
				
			||||||
                          self.load_family)
 | 
					                          self.load_family)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def edit_relationship(self,obj,event):
 | 
					    def sp_button_press(self,obj,event):
 | 
				
			||||||
        if event.state & gtk.gdk.SHIFT_MASK and \
 | 
					        if event.state & gtk.gdk.SHIFT_MASK and \
 | 
				
			||||||
                    event.type == gtk.gdk.BUTTON_PRESS and \
 | 
					                    event.type == gtk.gdk.BUTTON_PRESS and \
 | 
				
			||||||
                    event.button == 1 and self.selected_spouse:
 | 
					                    event.button == 1 and self.selected_spouse:
 | 
				
			||||||
@@ -887,7 +979,7 @@ class FamilyView:
 | 
				
			|||||||
    def edit_sp_relationships(self,obj):
 | 
					    def edit_sp_relationships(self,obj):
 | 
				
			||||||
        self.parent_editor(self.selected_spouse,self.sp_selection)
 | 
					        self.parent_editor(self.selected_spouse,self.sp_selection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def edit_ap_parents(self,obj,event):
 | 
					    def ap_par_button_press(self,obj,event):
 | 
				
			||||||
        if self.person == None:
 | 
					        if self.person == None:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: 
 | 
					        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: 
 | 
				
			||||||
@@ -906,7 +998,7 @@ class FamilyView:
 | 
				
			|||||||
                family,m,r = plist[path[0]]
 | 
					                family,m,r = plist[path[0]]
 | 
				
			||||||
            self.build_parents_menu(family,event)
 | 
					            self.build_parents_menu(family,event)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def edit_sp_parents(self,obj,event):
 | 
					    def sp_par_button_press(self,obj,event):
 | 
				
			||||||
        if self.selected_spouse == None:
 | 
					        if self.selected_spouse == None:
 | 
				
			||||||
            if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
 | 
					            if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
 | 
				
			||||||
                self.build_nav_menu(event)
 | 
					                self.build_nav_menu(event)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user