diff --git a/gramps/NEWS b/gramps/NEWS
index cf9817ccf..f3386f7ee 100644
--- a/gramps/NEWS
+++ b/gramps/NEWS
@@ -1,5 +1,11 @@
Version 0.4.0
-
+* Redesigned Family page. More complex family relationships can be
+ handled.
+* ISO date format supported
+* Places are stored in a pulldown menu
+* gramps ID can be displayed in many lists
+* Multiple selection in Add Children box
+* Internal gramps ID now a string instead of an integer
Version 0.3.2
* Fixed Style Editor on WebPage.py, to allow styles to be edited.
diff --git a/gramps/TODO b/gramps/TODO
index a5e529ec2..7acf1a3bc 100644
--- a/gramps/TODO
+++ b/gramps/TODO
@@ -1,21 +1,11 @@
-* More complete GEDCOM import and export. The current GEDCOM parse is
- regular expression based, and not to sophisticated. It probably won't
- take much to confuse it badly.
-* Dates do not understand the concept of between
* Dates do not understand alternate calendars
-* The GUI interface is not clean or consistant. It needs a considerable
- amount of work.
* There are no sophisticated functions at all yet, such as merging of
databases or finding duplicate people.
* There are no logic rules yet, such as warning if a parent's birthday
is after a child's.
-* I'm not happy with the mechanism for the selection of alternate parents.
- It works, but is extremely clumsy and non-intuitive
* OpenOffice zip file is not handled very gracefully. Uses the "system"
call to generate the zip file using the hard coded path of /usr/bin/zip.
Python 2.0 provides a zip interface, so this may need to hold off until
the move is made to Python 2.0.
-* Really need a generic OutputFormat class, that can be reused in all the
- report generators. Derived classes can target OpenOffice, HTML, LaTeX,
- KOffice, AbiWord, etc.
+* Sort all lists
* And a whole lot more....
diff --git a/gramps/src/gramps.glade b/gramps/src/gramps.glade
index 11fe5343b..2aad6490d 100644
--- a/gramps/src/gramps.glade
+++ b/gramps/src/gramps.glade
@@ -1854,7 +1854,7 @@
on_add_child_clickedTue, 21 Nov 2000 14:03:13 GMT
-
+
GTK_RELIEF_NORMAL
@@ -3412,7 +3412,7 @@ Unknown
GtkLabeladdChildTitle
-
+
GTK_JUSTIFY_CENTERFalse0.5
@@ -3460,9 +3460,14 @@ Unknown
on_addChild_select_rowTue, 21 Nov 2000 21:52:56 GMT
+
+ unselect_row
+ on_addChild_unselect_row
+ Sat, 14 Jul 2001 02:02:37 GMT
+ 3200,80,40
- GTK_SELECTION_SINGLE
+ GTK_SELECTION_MULTIPLETrueGTK_SHADOW_IN
diff --git a/gramps/src/gramps_main.py b/gramps/src/gramps_main.py
index f22e0b308..b292b705a 100755
--- a/gramps/src/gramps_main.py
+++ b/gramps/src/gramps_main.py
@@ -89,7 +89,7 @@ active_spouse = None
select_father = None
select_spouse = None
select_mother = None
-select_child = None
+select_child_list = {}
bookmarks = None
id2col = {}
@@ -237,21 +237,21 @@ def on_delete_sp_clicked(obj):
#
#-------------------------------------------------------------------------
def on_add_child_clicked(obj):
- global select_child
global addChildList
global childWindow
+ global select_child_list
- select_child = None
-
childWindow = libglade.GladeXML(const.gladeFile,"selectChild")
childWindow.signal_autoconnect({
"on_save_child_clicked" : on_save_child_clicked,
"on_addChild_select_row" : on_addChild_select_row,
+ "on_addChild_unselect_row" : on_addChild_unselect_row,
"on_show_toggled" : on_show_toggled,
"destroy_passed_object" : utils.destroy_passed_object
})
+ select_child_list = {}
selectChild = childWindow.get_widget("selectChild")
addChildList = childWindow.get_widget("addChild")
addChildList.set_column_visibility(1,Config.id_visible)
@@ -368,33 +368,33 @@ def on_addchild_ok_clicked(obj):
#-------------------------------------------------------------------------
def on_save_child_clicked(obj):
global active_family
-
- if select_child == None:
- return
- if active_family == None:
- active_family = database.newFamily()
- active_person.addFamily(active_family)
- if active_person.getGender() == Person.male:
- active_family.setFather(active_person)
- else:
- active_family.setMother(active_person)
+ for select_child in select_child_list.keys():
- active_family.addChild(select_child)
+ if active_family == None:
+ active_family = database.newFamily()
+ active_person.addFamily(active_family)
+ if active_person.getGender() == Person.male:
+ active_family.setFather(active_person)
+ else:
+ active_family.setMother(active_person)
+
+ active_family.addChild(select_child)
- mrel = const.childRelations[childWindow.get_widget("mrel").get_text()]
- frel = const.childRelations[childWindow.get_widget("frel").get_text()]
+ mrel = const.childRelations[childWindow.get_widget("mrel").get_text()]
+ frel = const.childRelations[childWindow.get_widget("frel").get_text()]
- if mrel == "Birth" and frel == "Birth":
- family = select_child.getMainFamily()
- if family != None and family != active_family:
- family.removeChild(select_child)
+ if mrel == "Birth" and frel == "Birth":
+ family = select_child.getMainFamily()
+ if family != None and family != active_family:
+ family.removeChild(select_child)
- select_child.setMainFamily(active_family)
- else:
- select_child.addAltFamily(active_family,mrel,frel)
+ select_child.setMainFamily(active_family)
+ else:
+ select_child.addAltFamily(active_family,mrel,frel)
- utils.modified()
+ utils.modified()
+
utils.destroy_passed_object(obj)
load_family()
@@ -1163,7 +1163,7 @@ def on_person_list_click_column(obj,column):
else:
sortFunc = sort.reverse_name_sort
nameArrow.set(GTK.ARROW_UP,2)
- elif column == 2:
+ elif column == 3:
nameArrow.hide()
deathArrow.hide()
dateArrow.show()
@@ -1171,9 +1171,9 @@ def on_person_list_click_column(obj,column):
sortFunc = sort.fast_birth_sort
dateArrow.set(GTK.ARROW_DOWN,2)
else:
- sortFunc = reverse_birth_sort
+ sortFunc = sort.reverse_birth_sort
dateArrow.set(GTK.ARROW_UP,2)
- elif column == 3:
+ elif column == 4:
nameArrow.hide()
deathArrow.show()
dateArrow.hide()
@@ -1183,6 +1183,8 @@ def on_person_list_click_column(obj,column):
else:
sortFunc = sort.reverse_death_sort
deathArrow.set(GTK.ARROW_UP,2)
+ else:
+ return
apply_filter()
#-------------------------------------------------------------------------
@@ -1202,9 +1204,15 @@ def on_fatherList_select_row(obj,a,b,c):
#
#-------------------------------------------------------------------------
def on_addChild_select_row(obj,a,b,c):
- global select_child
-
- select_child = obj.get_row_data(a)
+ select_child_list[obj.get_row_data(a)] = 1
+
+#-------------------------------------------------------------------------
+#
+#
+#
+#-------------------------------------------------------------------------
+def on_addChild_unselect_row(obj,a,b,c):
+ del select_child_list[obj.get_row_data(a)]
#-------------------------------------------------------------------------
#