2008-02-14 Douglas S. Blank <dblank@cs.brynmawr.edu>
* src/DataViews/RelationView.py (RelationshipView.write_parents): added Sibling/Children add buttons; rearranged display; lost a bit of vertical space svn: r10034
This commit is contained in:
		@@ -1,3 +1,8 @@
 | 
			
		||||
2008-02-14  Douglas S. Blank  <dblank@cs.brynmawr.edu>
 | 
			
		||||
	* src/DataViews/RelationView.py (RelationshipView.write_parents): 
 | 
			
		||||
	added Sibling/Children add buttons; rearranged display;
 | 
			
		||||
	lost a bit of vertical space
 | 
			
		||||
 | 
			
		||||
2008-02-14  Raphael Ackermann <raphael.ackermann@gmail.com>
 | 
			
		||||
    * src/ObjectSelector/* : #1744: src/ObjectSelector is not used anmyore
 | 
			
		||||
    * src/TreeViews/* : #1744: src/TreeViews is not used anmyore
 | 
			
		||||
 
 | 
			
		||||
@@ -786,28 +786,48 @@ class RelationshipView(PageView.PersonNavView):
 | 
			
		||||
 | 
			
		||||
                child_list = [ref.ref for ref in family.get_child_ref_list()]
 | 
			
		||||
 | 
			
		||||
                if child_list:
 | 
			
		||||
                    eventbox = gtk.EventBox()
 | 
			
		||||
                    if self.use_shade:
 | 
			
		||||
                        eventbox.modify_bg(gtk.STATE_NORMAL, self.color)
 | 
			
		||||
                    vbox = gtk.VBox()
 | 
			
		||||
                    label_cell = self.build_label_cell(_('Siblings'))
 | 
			
		||||
                    label_cell.set_alignment(0, 0)
 | 
			
		||||
                    self.attach.attach(
 | 
			
		||||
                        label_cell, _CLABEL_START, _CLABEL_STOP, self.row, 
 | 
			
		||||
                        self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                        yoptions=gtk.FILL)
 | 
			
		||||
                label_cell = self.build_label_cell(_('Siblings'))
 | 
			
		||||
                label_cell.set_alignment(0, 0)
 | 
			
		||||
                self.attach.attach(
 | 
			
		||||
                    label_cell, _CLABEL_START-1, _CLABEL_STOP-1, self.row, 
 | 
			
		||||
                    self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                    yoptions=gtk.FILL)
 | 
			
		||||
 | 
			
		||||
                    i = 1
 | 
			
		||||
                    for child_handle in child_list:
 | 
			
		||||
                        child_should_be_linked = (child_handle != active)
 | 
			
		||||
                        self.write_child(vbox, child_handle, i, child_should_be_linked)
 | 
			
		||||
                        i += 1
 | 
			
		||||
                hbox = gtk.HBox()
 | 
			
		||||
                addchild = GrampsWidgets.IconButton(
 | 
			
		||||
                                self.add_child_to_fam, 
 | 
			
		||||
                                family.handle, 
 | 
			
		||||
                                gtk.STOCK_ADD)
 | 
			
		||||
                self.tooltips.set_tip(addchild, 
 | 
			
		||||
                                      _('Add new child to family'))
 | 
			
		||||
                selchild = GrampsWidgets.IconButton(
 | 
			
		||||
                                self.sel_child_to_fam, 
 | 
			
		||||
                                family.handle, 
 | 
			
		||||
                                gtk.STOCK_INDEX)
 | 
			
		||||
                self.tooltips.set_tip(selchild, 
 | 
			
		||||
                                      _('Add existing child to family'))
 | 
			
		||||
                hbox.pack_start(addchild, False)
 | 
			
		||||
                hbox.pack_start(selchild, False)
 | 
			
		||||
 | 
			
		||||
                    eventbox.add(vbox)
 | 
			
		||||
                    self.attach.attach(
 | 
			
		||||
                        eventbox, _CDATA_START, _CDATA_STOP, self.row,
 | 
			
		||||
                        self.row+1)
 | 
			
		||||
                self.attach.attach(
 | 
			
		||||
                    hbox, _CLABEL_START, _CLABEL_STOP, self.row, 
 | 
			
		||||
                    self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                    yoptions=gtk.FILL)
 | 
			
		||||
 | 
			
		||||
                self.row += 1
 | 
			
		||||
                vbox = gtk.VBox()
 | 
			
		||||
                i = 1
 | 
			
		||||
                for child_handle in child_list:
 | 
			
		||||
                    child_should_be_linked = (child_handle != active)
 | 
			
		||||
                    self.write_child(vbox, child_handle, i, child_should_be_linked)
 | 
			
		||||
                    i += 1
 | 
			
		||||
                eventbox = gtk.EventBox()
 | 
			
		||||
                if self.use_shade:
 | 
			
		||||
                    eventbox.modify_bg(gtk.STATE_NORMAL, self.color)
 | 
			
		||||
                eventbox.add(vbox)
 | 
			
		||||
                self.attach.attach(
 | 
			
		||||
                    eventbox, _CDATA_START-1, _CDATA_STOP-1, self.row,
 | 
			
		||||
                    self.row+1)
 | 
			
		||||
 | 
			
		||||
            self.row += 1
 | 
			
		||||
 | 
			
		||||
@@ -1152,27 +1172,48 @@ class RelationshipView(PageView.PersonNavView):
 | 
			
		||||
                    self.write_relationship(box, family)
 | 
			
		||||
 | 
			
		||||
            child_list = family.get_child_ref_list()
 | 
			
		||||
            if child_list:
 | 
			
		||||
                eventbox = gtk.EventBox()
 | 
			
		||||
                if self.use_shade:
 | 
			
		||||
                    eventbox.modify_bg(gtk.STATE_NORMAL, self.color)
 | 
			
		||||
                vbox = gtk.VBox()
 | 
			
		||||
                label_cell = self.build_label_cell(_('Children'))
 | 
			
		||||
                label_cell.set_alignment(0, 0)
 | 
			
		||||
                self.attach.attach(
 | 
			
		||||
                    label_cell, _CLABEL_START, _CLABEL_STOP, self.row, 
 | 
			
		||||
                    self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                    yoptions=gtk.FILL)
 | 
			
		||||
 | 
			
		||||
                i = 1
 | 
			
		||||
                for child_ref in child_list:
 | 
			
		||||
                    self.write_child(vbox, child_ref.ref, i, True)
 | 
			
		||||
                    i += 1
 | 
			
		||||
            label_cell = self.build_label_cell(_('Children'))
 | 
			
		||||
            label_cell.set_alignment(0, 0)
 | 
			
		||||
            self.attach.attach(
 | 
			
		||||
                label_cell, _CLABEL_START-1, _CLABEL_STOP-1, self.row, 
 | 
			
		||||
                self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                yoptions=gtk.FILL)
 | 
			
		||||
 | 
			
		||||
                eventbox.add(vbox)
 | 
			
		||||
                self.attach.attach(
 | 
			
		||||
                    eventbox, _CDATA_START, _CDATA_STOP, self.row,
 | 
			
		||||
                    self.row+1)
 | 
			
		||||
            hbox = gtk.HBox()
 | 
			
		||||
            addchild = GrampsWidgets.IconButton(
 | 
			
		||||
                            self.add_child_to_fam, 
 | 
			
		||||
                            family.handle, 
 | 
			
		||||
                            gtk.STOCK_ADD)
 | 
			
		||||
            self.tooltips.set_tip(addchild, 
 | 
			
		||||
                                  _('Add new child to family'))
 | 
			
		||||
            selchild = GrampsWidgets.IconButton(
 | 
			
		||||
                            self.sel_child_to_fam, 
 | 
			
		||||
                            family.handle, 
 | 
			
		||||
                            gtk.STOCK_INDEX)
 | 
			
		||||
            self.tooltips.set_tip(selchild, 
 | 
			
		||||
                                  _('Add existing child to family'))
 | 
			
		||||
            hbox.pack_start(addchild, False)
 | 
			
		||||
            hbox.pack_start(selchild, False)
 | 
			
		||||
            self.attach.attach(
 | 
			
		||||
                hbox, _CLABEL_START, _CLABEL_STOP, self.row, 
 | 
			
		||||
                self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
 | 
			
		||||
                yoptions=gtk.FILL)
 | 
			
		||||
 | 
			
		||||
            vbox = gtk.VBox()
 | 
			
		||||
            i = 1
 | 
			
		||||
            for child_ref in child_list:
 | 
			
		||||
                self.write_child(vbox, child_ref.ref, i, True)
 | 
			
		||||
                i += 1
 | 
			
		||||
 | 
			
		||||
            self.row += 1
 | 
			
		||||
            eventbox = gtk.EventBox()
 | 
			
		||||
            if self.use_shade:
 | 
			
		||||
                eventbox.modify_bg(gtk.STATE_NORMAL, self.color)
 | 
			
		||||
            eventbox.add(vbox)
 | 
			
		||||
            self.attach.attach(
 | 
			
		||||
                eventbox, _CDATA_START-1, _CDATA_STOP-1, self.row,
 | 
			
		||||
                self.row+1)
 | 
			
		||||
            self.row += 1
 | 
			
		||||
 | 
			
		||||
    def edit_button_press(self, obj, event, handle):
 | 
			
		||||
@@ -1238,6 +1279,53 @@ class RelationshipView(PageView.PersonNavView):
 | 
			
		||||
        phandle = self.dbstate.get_active_person().handle
 | 
			
		||||
        self.edit_person(obj, phandle)
 | 
			
		||||
 | 
			
		||||
    def add_child_to_fam(self, obj, event, handle):
 | 
			
		||||
        callback = lambda x: self.callback_add_child(x, handle)
 | 
			
		||||
        from Editors import EditPerson
 | 
			
		||||
        person = gen.lib.Person()
 | 
			
		||||
        family = self.dbstate.db.get_family_from_handle(handle)
 | 
			
		||||
        father = self.dbstate.db.get_person_from_handle(
 | 
			
		||||
                                    family.get_father_handle())
 | 
			
		||||
        if father:
 | 
			
		||||
            name = father.get_primary_name().get_surname()
 | 
			
		||||
            person.get_primary_name().set_surname(name)
 | 
			
		||||
        try:
 | 
			
		||||
            EditPerson(self.dbstate, self.uistate, [], person, 
 | 
			
		||||
                       callback=callback)
 | 
			
		||||
        except Errors.WindowActiveError:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
    def callback_add_child(self, person, family_handle):
 | 
			
		||||
        ref = gen.lib.ChildRef()
 | 
			
		||||
        ref.ref = person.get_handle()
 | 
			
		||||
        family = self.dbstate.db.get_family_from_handle(family_handle)
 | 
			
		||||
        family.add_child_ref(ref)
 | 
			
		||||
        
 | 
			
		||||
        trans = self.dbstate.db.transaction_begin()
 | 
			
		||||
        #add parentref to child
 | 
			
		||||
        person.add_parent_family_handle(family_handle)
 | 
			
		||||
        #default relationship is used
 | 
			
		||||
        self.dbstate.db.commit_person(person, trans)
 | 
			
		||||
        #add child to family
 | 
			
		||||
        self.dbstate.db.commit_family(family, trans)
 | 
			
		||||
        self.dbstate.db.transaction_commit(trans, _("Add Child to Family"))
 | 
			
		||||
 | 
			
		||||
    def sel_child_to_fam(self, obj, event, handle):
 | 
			
		||||
        from Selectors import selector_factory
 | 
			
		||||
        SelectPerson = selector_factory('Person')
 | 
			
		||||
        family = self.dbstate.db.get_family_from_handle(handle)
 | 
			
		||||
        # it only makes sense to skip those who are already in the family
 | 
			
		||||
        skip_list = [family.get_father_handle(), \
 | 
			
		||||
                     family.get_mother_handle()] + \
 | 
			
		||||
                    [x.ref for x in family.get_child_ref_list() ]
 | 
			
		||||
 | 
			
		||||
        sel = SelectPerson(self.dbstate, self.uistate, [],
 | 
			
		||||
                           _("Select Child"), skip=skip_list)
 | 
			
		||||
        person = sel.run()
 | 
			
		||||
        
 | 
			
		||||
        if person:
 | 
			
		||||
            self.callback_add_child(person, handle)
 | 
			
		||||
 | 
			
		||||
    def select_family(self, obj, event, handle):
 | 
			
		||||
        if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1 \
 | 
			
		||||
            or event.keyval in (_RETURN, _KP_ENTER):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user