GEDCOM improvements, enhanced LDS

svn: r631
This commit is contained in:
Don Allingham 2001-12-18 01:01:51 +00:00
parent dd0a85bf9f
commit 31375160e8
8 changed files with 1209 additions and 513 deletions

View File

@ -4339,10 +4339,30 @@
<ypad>0</ypad> <ypad>0</ypad>
</widget> </widget>
<widget>
<class>GtkVBox</class>
<name>vbox38</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkFrame</class>
<name>frame11</name>
<border_width>5</border_width>
<label>LDS Baptism</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget> <widget>
<class>GtkTable</class> <class>GtkTable</class>
<name>table28</name> <name>table29</name>
<rows>6</rows> <border_width>5</border_width>
<rows>3</rows>
<columns>3</columns> <columns>3</columns>
<homogeneous>False</homogeneous> <homogeneous>False</homogeneous>
<row_spacing>0</row_spacing> <row_spacing>0</row_spacing>
@ -4350,19 +4370,19 @@
<widget> <widget>
<class>GtkLabel</class> <class>GtkLabel</class>
<name>label249</name> <name>label256</name>
<label>LDS Baptism</label> <label>Date</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
<xalign>1</xalign> <xalign>1</xalign>
<yalign>0.5</yalign> <yalign>0.5</yalign>
<xpad>5</xpad> <xpad>0</xpad>
<ypad>5</ypad> <ypad>0</ypad>
<child> <child>
<left_attach>0</left_attach> <left_attach>0</left_attach>
<right_attach>1</right_attach> <right_attach>1</right_attach>
<top_attach>2</top_attach> <top_attach>0</top_attach>
<bottom_attach>3</bottom_attach> <bottom_attach>1</bottom_attach>
<xpad>0</xpad> <xpad>0</xpad>
<ypad>0</ypad> <ypad>0</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
@ -4375,21 +4395,49 @@
</widget> </widget>
<widget> <widget>
<class>GtkEntry</class> <class>GtkLabel</class>
<name>ldsbapdate</name> <name>label257</name>
<can_focus>True</can_focus> <label>Temple</label>
<editable>True</editable> <justify>GTK_JUSTIFY_CENTER</justify>
<text_visible>True</text_visible> <wrap>False</wrap>
<text_max_length>0</text_max_length> <xalign>1</xalign>
<text></text> <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child> <child>
<left_attach>1</left_attach> <left_attach>0</left_attach>
<right_attach>2</right_attach> <right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label262</name>
<label>Place</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>2</top_attach> <top_attach>2</top_attach>
<bottom_attach>3</bottom_attach> <bottom_attach>3</bottom_attach>
<xpad>5</xpad> <xpad>0</xpad>
<ypad>5</ypad> <ypad>0</ypad>
<xexpand>True</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
<yshrink>False</yshrink> <yshrink>False</yshrink>
@ -4408,12 +4456,12 @@
<use_arrows_always>False</use_arrows_always> <use_arrows_always>False</use_arrows_always>
<items></items> <items></items>
<child> <child>
<left_attach>2</left_attach> <left_attach>1</left_attach>
<right_attach>3</right_attach> <right_attach>2</right_attach>
<top_attach>2</top_attach> <top_attach>1</top_attach>
<bottom_attach>3</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>True</xexpand> <xexpand>True</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4441,22 +4489,48 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkEntry</class>
<name>label251</name> <name>ldsbapdate</name>
<label>Date</label> <can_focus>True</can_focus>
<justify>GTK_JUSTIFY_CENTER</justify> <editable>True</editable>
<wrap>False</wrap> <text_visible>True</text_visible>
<xalign>0.5</xalign> <text_max_length>0</text_max_length>
<yalign>0.5</yalign> <text></text>
<xpad>0</xpad>
<ypad>0</ypad>
<child> <child>
<left_attach>1</left_attach> <left_attach>1</left_attach>
<right_attach>2</right_attach> <right_attach>2</right_attach>
<top_attach>0</top_attach> <top_attach>0</top_attach>
<bottom_attach>1</bottom_attach> <bottom_attach>1</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkButton</class>
<name>button131</name>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_ldsbap_src_clicked</handler>
<object>editPerson</object>
<last_modification_time>Mon, 17 Dec 2001 00:27:40 GMT</last_modification_time>
</signal>
<label>Sources</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4467,22 +4541,47 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkButton</class>
<name>label252</name> <name>button128</name>
<label>Temple</label> <can_focus>True</can_focus>
<justify>GTK_JUSTIFY_CENTER</justify> <signal>
<wrap>False</wrap> <name>clicked</name>
<xalign>0.5</xalign> <handler>on_ldsbap_note_clicked</handler>
<yalign>0.5</yalign> <object>editPerson</object>
<xpad>0</xpad> <last_modification_time>Mon, 17 Dec 2001 00:27:46 GMT</last_modification_time>
<ypad>0</ypad> </signal>
<label>Note</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkOptionMenu</class>
<name>ldsbapstat</name>
<can_focus>True</can_focus>
<items>
</items>
<initial_choice>0</initial_choice>
<child> <child>
<left_attach>2</left_attach> <left_attach>2</left_attach>
<right_attach>3</right_attach> <right_attach>3</right_attach>
<top_attach>0</top_attach> <top_attach>0</top_attach>
<bottom_attach>1</bottom_attach> <bottom_attach>1</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4493,9 +4592,76 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkCombo</class>
<name>label253</name> <name>ldsbapplace</name>
<value_in_list>False</value_in_list>
<ok_if_empty>True</ok_if_empty>
<case_sensitive>False</case_sensitive>
<use_arrows>True</use_arrows>
<use_arrows_always>False</use_arrows_always>
<items></items>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
<widget>
<class>GtkEntry</class>
<child_name>GtkCombo:entry</child_name>
<name>entry6</name>
<can_focus>True</can_focus>
<signal>
<name>insert_text</name>
<handler>on_combo_insert_text</handler>
<object>bpcombo</object>
<last_modification_time>Thu, 18 Oct 2001 01:13:13 GMT</last_modification_time>
</signal>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
</widget>
</widget>
</widget>
</widget>
<widget>
<class>GtkFrame</class>
<name>frame12</name>
<border_width>5</border_width>
<label>Endowment</label> <label>Endowment</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkTable</class>
<name>table30</name>
<border_width>5</border_width>
<rows>3</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<widget>
<class>GtkLabel</class>
<name>label258</name>
<label>Date</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
<xalign>1</xalign> <xalign>1</xalign>
@ -4505,10 +4671,10 @@
<child> <child>
<left_attach>0</left_attach> <left_attach>0</left_attach>
<right_attach>1</right_attach> <right_attach>1</right_attach>
<top_attach>3</top_attach> <top_attach>0</top_attach>
<bottom_attach>4</bottom_attach> <bottom_attach>1</bottom_attach>
<xpad>5</xpad> <xpad>0</xpad>
<ypad>5</ypad> <ypad>0</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4519,21 +4685,49 @@
</widget> </widget>
<widget> <widget>
<class>GtkEntry</class> <class>GtkLabel</class>
<name>endowdate</name> <name>label260</name>
<can_focus>True</can_focus> <label>Temple</label>
<editable>True</editable> <justify>GTK_JUSTIFY_CENTER</justify>
<text_visible>True</text_visible> <wrap>False</wrap>
<text_max_length>0</text_max_length> <xalign>1</xalign>
<text></text> <yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child> <child>
<left_attach>1</left_attach> <left_attach>0</left_attach>
<right_attach>2</right_attach> <right_attach>1</right_attach>
<top_attach>3</top_attach> <top_attach>1</top_attach>
<bottom_attach>4</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>0</xpad>
<ypad>5</ypad> <ypad>0</ypad>
<xexpand>True</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label264</name>
<label>Place</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
<yshrink>False</yshrink> <yshrink>False</yshrink>
@ -4552,12 +4746,12 @@
<use_arrows_always>False</use_arrows_always> <use_arrows_always>False</use_arrows_always>
<items></items> <items></items>
<child> <child>
<left_attach>2</left_attach> <left_attach>1</left_attach>
<right_attach>3</right_attach> <right_attach>2</right_attach>
<top_attach>3</top_attach> <top_attach>1</top_attach>
<bottom_attach>4</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>True</xexpand> <xexpand>True</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4585,15 +4779,71 @@
</widget> </widget>
<widget> <widget>
<class>GtkHSeparator</class> <class>GtkEntry</class>
<name>hseparator8</name> <name>endowdate</name>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkOptionMenu</class>
<name>endowstat</name>
<can_focus>True</can_focus>
<items>
</items>
<initial_choice>0</initial_choice>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkButton</class>
<name>button132</name>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_ldsendow_src_clicked</handler>
<object>editPerson</object>
<last_modification_time>Mon, 17 Dec 2001 00:28:12 GMT</last_modification_time>
</signal>
<label>Sources</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child> <child>
<left_attach>2</left_attach> <left_attach>2</left_attach>
<right_attach>3</right_attach> <right_attach>3</right_attach>
<top_attach>1</top_attach> <top_attach>1</top_attach>
<bottom_attach>2</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>2</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4604,15 +4854,117 @@
</widget> </widget>
<widget> <widget>
<class>GtkHSeparator</class> <class>GtkButton</class>
<name>hseparator7</name> <name>button129</name>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_ldsendow_note_clicked</handler>
<object>editPerson</object>
<last_modification_time>Mon, 17 Dec 2001 00:27:55 GMT</last_modification_time>
</signal>
<label>Note</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkCombo</class>
<name>endowplace</name>
<value_in_list>False</value_in_list>
<ok_if_empty>True</ok_if_empty>
<case_sensitive>False</case_sensitive>
<use_arrows>True</use_arrows>
<use_arrows_always>False</use_arrows_always>
<items></items>
<child> <child>
<left_attach>1</left_attach> <left_attach>1</left_attach>
<right_attach>2</right_attach> <right_attach>2</right_attach>
<top_attach>1</top_attach> <top_attach>2</top_attach>
<bottom_attach>2</bottom_attach> <bottom_attach>3</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>2</ypad> <ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
<widget>
<class>GtkEntry</class>
<child_name>GtkCombo:entry</child_name>
<name>endowp</name>
<can_focus>True</can_focus>
<signal>
<name>insert_text</name>
<handler>on_combo_insert_text</handler>
<object>bpcombo</object>
<last_modification_time>Thu, 18 Oct 2001 01:13:13 GMT</last_modification_time>
</signal>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
</widget>
</widget>
</widget>
</widget>
<widget>
<class>GtkFrame</class>
<name>frame13</name>
<border_width>5</border_width>
<label>Sealed to Parents</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkTable</class>
<name>table31</name>
<border_width>5</border_width>
<rows>4</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<widget>
<class>GtkLabel</class>
<name>label259</name>
<label>Date</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4623,15 +4975,74 @@
</widget> </widget>
<widget> <widget>
<class>GtkHSeparator</class> <class>GtkLabel</class>
<name>hseparator6</name> <name>label261</name>
<label>Temple</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child> <child>
<left_attach>0</left_attach> <left_attach>0</left_attach>
<right_attach>1</right_attach> <right_attach>1</right_attach>
<top_attach>1</top_attach> <top_attach>1</top_attach>
<bottom_attach>2</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>0</xpad>
<ypad>2</ypad> <ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label255</name>
<label>Parents</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>3</top_attach>
<bottom_attach>4</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label265</name>
<label>Place</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>2</top_attach>
<bottom_attach>3</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4652,10 +5063,10 @@
<child> <child>
<left_attach>1</left_attach> <left_attach>1</left_attach>
<right_attach>2</right_attach> <right_attach>2</right_attach>
<top_attach>4</top_attach> <top_attach>0</top_attach>
<bottom_attach>5</bottom_attach> <bottom_attach>1</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>True</xexpand> <xexpand>True</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4665,6 +5076,29 @@
</child> </child>
</widget> </widget>
<widget>
<class>GtkOptionMenu</class>
<name>sealstat</name>
<can_focus>True</can_focus>
<items>
</items>
<initial_choice>0</initial_choice>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget> <widget>
<class>GtkCombo</class> <class>GtkCombo</class>
<name>sealtemple</name> <name>sealtemple</name>
@ -4675,13 +5109,13 @@
<use_arrows_always>False</use_arrows_always> <use_arrows_always>False</use_arrows_always>
<items></items> <items></items>
<child> <child>
<left_attach>2</left_attach> <left_attach>1</left_attach>
<right_attach>3</right_attach> <right_attach>2</right_attach>
<top_attach>4</top_attach> <top_attach>1</top_attach>
<bottom_attach>5</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>True</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
<yshrink>False</yshrink> <yshrink>False</yshrink>
@ -4708,22 +5142,24 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkButton</class>
<name>label254</name> <name>button133</name>
<label>Sealed to Parents</label> <can_focus>True</can_focus>
<justify>GTK_JUSTIFY_CENTER</justify> <signal>
<wrap>False</wrap> <name>clicked</name>
<xalign>1</xalign> <handler>on_ldsseal_src_clicked</handler>
<yalign>0.5</yalign> <object>editPerson</object>
<xpad>0</xpad> <last_modification_time>Mon, 17 Dec 2001 00:28:47 GMT</last_modification_time>
<ypad>0</ypad> </signal>
<label>Sources</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child> <child>
<left_attach>0</left_attach> <left_attach>2</left_attach>
<right_attach>1</right_attach> <right_attach>3</right_attach>
<top_attach>4</top_attach> <top_attach>1</top_attach>
<bottom_attach>5</bottom_attach> <bottom_attach>2</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4734,25 +5170,27 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkButton</class>
<name>label250</name> <name>button130</name>
<label>Ordinance</label> <can_focus>True</can_focus>
<justify>GTK_JUSTIFY_LEFT</justify> <signal>
<wrap>False</wrap> <name>clicked</name>
<xalign>0.5</xalign> <handler>on_ldsseal_note_clicked</handler>
<yalign>0.5</yalign> <object>editPerson</object>
<xpad>5</xpad> <last_modification_time>Mon, 17 Dec 2001 00:28:30 GMT</last_modification_time>
<ypad>5</ypad> </signal>
<label>Note</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child> <child>
<left_attach>0</left_attach> <left_attach>2</left_attach>
<right_attach>1</right_attach> <right_attach>3</right_attach>
<top_attach>0</top_attach> <top_attach>2</top_attach>
<bottom_attach>1</bottom_attach> <bottom_attach>3</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>True</xshrink> <xshrink>False</xshrink>
<yshrink>False</yshrink> <yshrink>False</yshrink>
<xfill>True</xfill> <xfill>True</xfill>
<yfill>False</yfill> <yfill>False</yfill>
@ -4767,12 +5205,12 @@
</items> </items>
<initial_choice>0</initial_choice> <initial_choice>0</initial_choice>
<child> <child>
<left_attach>2</left_attach> <left_attach>1</left_attach>
<right_attach>3</right_attach> <right_attach>2</right_attach>
<top_attach>5</top_attach> <top_attach>3</top_attach>
<bottom_attach>6</bottom_attach> <bottom_attach>4</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>False</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
@ -4783,29 +5221,47 @@
</widget> </widget>
<widget> <widget>
<class>GtkLabel</class> <class>GtkCombo</class>
<name>label255</name> <name>sealplace</name>
<label>Parents</label> <value_in_list>False</value_in_list>
<justify>GTK_JUSTIFY_CENTER</justify> <ok_if_empty>True</ok_if_empty>
<wrap>False</wrap> <case_sensitive>False</case_sensitive>
<xalign>1</xalign> <use_arrows>True</use_arrows>
<yalign>0.5</yalign> <use_arrows_always>False</use_arrows_always>
<xpad>0</xpad> <items></items>
<ypad>0</ypad>
<child> <child>
<left_attach>1</left_attach> <left_attach>1</left_attach>
<right_attach>2</right_attach> <right_attach>2</right_attach>
<top_attach>5</top_attach> <top_attach>2</top_attach>
<bottom_attach>6</bottom_attach> <bottom_attach>3</bottom_attach>
<xpad>5</xpad> <xpad>5</xpad>
<ypad>5</ypad> <ypad>3</ypad>
<xexpand>False</xexpand> <xexpand>True</xexpand>
<yexpand>False</yexpand> <yexpand>False</yexpand>
<xshrink>False</xshrink> <xshrink>False</xshrink>
<yshrink>False</yshrink> <yshrink>False</yshrink>
<xfill>True</xfill> <xfill>True</xfill>
<yfill>False</yfill> <yfill>False</yfill>
</child> </child>
<widget>
<class>GtkEntry</class>
<child_name>GtkCombo:entry</child_name>
<name>entry8</name>
<can_focus>True</can_focus>
<signal>
<name>insert_text</name>
<handler>on_combo_insert_text</handler>
<object>bpcombo</object>
<last_modification_time>Thu, 18 Oct 2001 01:13:13 GMT</last_modification_time>
</signal>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
</widget>
</widget>
</widget>
</widget> </widget>
</widget> </widget>

View File

@ -81,6 +81,7 @@ class EditPerson:
self.callback = callback self.callback = callback
self.path = db.getSavePath() self.path = db.getSavePath()
self.not_loaded = 1 self.not_loaded = 1
self.lds_not_loaded = 1
self.lists_changed = 0 self.lists_changed = 0
self.update_birth = 0 self.update_birth = 0
self.update_death = 0 self.update_death = 0
@ -124,6 +125,12 @@ class EditPerson:
"on_name_button_press" : self.aka_double_click, "on_name_button_press" : self.aka_double_click,
"on_name_list_select_row" : self.on_name_list_select_row, "on_name_list_select_row" : self.on_name_list_select_row,
"on_name_note_clicked" : self.on_name_note_clicked, "on_name_note_clicked" : self.on_name_note_clicked,
"on_ldsbap_note_clicked" : self.on_ldsbap_note_clicked,
"on_ldsendow_note_clicked" : self.on_ldsendow_note_clicked,
"on_ldsseal_note_clicked" : self.on_ldsseal_note_clicked,
"on_ldsbap_src_clicked" : self.on_ldsbap_source_clicked,
"on_ldsendow_src_clicked" : self.on_ldsendow_source_clicked,
"on_ldsseal_src_clicked" : self.on_ldsseal_source_clicked,
"on_name_source_clicked" : self.on_primary_name_source_clicked, "on_name_source_clicked" : self.on_primary_name_source_clicked,
"on_photolist_button_press_event" : self.gallery.on_photolist_button_press_event, "on_photolist_button_press_event" : self.gallery.on_photolist_button_press_event,
"on_photolist_select_icon" : self.gallery.on_photo_select_icon, "on_photolist_select_icon" : self.gallery.on_photo_select_icon,
@ -195,6 +202,12 @@ class EditPerson:
self.ldsseal_date = self.get_widget("sealdate") self.ldsseal_date = self.get_widget("sealdate")
self.ldsseal_temple = self.get_widget("sealtemple") self.ldsseal_temple = self.get_widget("sealtemple")
self.ldsseal_fam = self.get_widget("sealparents") self.ldsseal_fam = self.get_widget("sealparents")
self.ldsbapstat = self.get_widget("ldsbapstat")
self.ldssealstat = self.get_widget("sealstat")
self.ldsendowstat = self.get_widget("endowstat")
self.ldsbapplace = self.get_widget("ldsbapplace")
self.ldssealplace = self.get_widget("sealplace")
self.ldsendowplace = self.get_widget("endowplace")
self.elist = person.getEventList()[:] self.elist = person.getEventList()[:]
self.nlist = person.getAlternateNames()[:] self.nlist = person.getAlternateNames()[:]
@ -273,6 +286,7 @@ class EditPerson:
ord = person.getLdsBaptism() ord = person.getLdsBaptism()
self.ldsbap_temple.set_popdown_strings(_temple_names) self.ldsbap_temple.set_popdown_strings(_temple_names)
if ord: if ord:
self.bap_stat = ord.getStatus()
self.ldsbap_date.set_text(ord.getDate()) self.ldsbap_date.set_text(ord.getDate())
if ord.getTemple() != "": if ord.getTemple() != "":
name = const.lds_temple_to_abrev[ord.getTemple()] name = const.lds_temple_to_abrev[ord.getTemple()]
@ -280,11 +294,13 @@ class EditPerson:
name = "" name = ""
self.ldsbap_temple.entry.set_text(name) self.ldsbap_temple.entry.set_text(name)
else: else:
self.bap_stat = 0
self.ldsbap_temple.entry.set_text("") self.ldsbap_temple.entry.set_text("")
ord = person.getLdsEndowment() ord = person.getLdsEndowment()
self.ldsend_temple.set_popdown_strings(_temple_names) self.ldsend_temple.set_popdown_strings(_temple_names)
if ord: if ord:
self.end_stat = ord.getStatus()
self.ldsend_date.set_text(ord.getDate()) self.ldsend_date.set_text(ord.getDate())
if ord.getTemple() != "": if ord.getTemple() != "":
name = const.lds_temple_to_abrev[ord.getTemple()] name = const.lds_temple_to_abrev[ord.getTemple()]
@ -292,11 +308,13 @@ class EditPerson:
name = "" name = ""
self.ldsend_temple.entry.set_text(name) self.ldsend_temple.entry.set_text(name)
else: else:
self.end_stat = 0
self.ldsend_temple.entry.set_text("") self.ldsend_temple.entry.set_text("")
ord = person.getLdsSeal() ord = person.getLdsSeal()
self.ldsseal_temple.set_popdown_strings(_temple_names) self.ldsseal_temple.set_popdown_strings(_temple_names)
if ord: if ord:
self.seal_stat = ord.getStatus()
self.ldsseal_date.set_text(ord.getDate()) self.ldsseal_date.set_text(ord.getDate())
self.ldsfam = ord.getFamily() self.ldsfam = ord.getFamily()
if ord.getTemple() != "": if ord.getTemple() != "":
@ -305,6 +323,7 @@ class EditPerson:
name = "" name = ""
self.ldsseal_temple.entry.set_text(name) self.ldsseal_temple.entry.set_text(name)
else: else:
self.seal_stat = 0
self.ldsseal_temple.entry.set_text("") self.ldsseal_temple.entry.set_text("")
self.ldsfam = None self.ldsfam = None
@ -364,6 +383,10 @@ class EditPerson:
self.addr_list.connect('drag_data_get', self.ad_drag_data_get) self.addr_list.connect('drag_data_get', self.ad_drag_data_get)
self.addr_list.connect('drag_data_received', self.ad_drag_data_received) self.addr_list.connect('drag_data_received', self.ad_drag_data_received)
self.build_bap_menu()
self.build_seal_menu()
self.build_endow_menu()
# draw lists # draw lists
self.redraw_event_list() self.redraw_event_list()
self.redraw_attr_list() self.redraw_attr_list()
@ -372,6 +395,55 @@ class EditPerson:
self.redraw_url_list() self.redraw_url_list()
self.window.show() self.window.show()
def build_bap_menu(self):
menu = gtk.GtkMenu()
index = 0
for val in const.lds_baptism_index:
menuitem = gtk.GtkMenuItem(val)
menuitem.set_data("val",index)
menuitem.connect('activate',self.set_lds_bap)
menuitem.show()
menu.append(menuitem)
index = index + 1
self.ldsbapstat.set_menu(menu)
self.ldsbapstat.set_history(self.bap_stat)
def build_endow_menu(self):
menu = gtk.GtkMenu()
index = 0
for val in const.lds_baptism_index:
menuitem = gtk.GtkMenuItem(val)
menuitem.set_data("val",index)
menuitem.connect('activate',self.set_lds_endow)
menuitem.show()
menu.append(menuitem)
index = index + 1
self.ldsendowstat.set_menu(menu)
self.ldsendowstat.set_history(self.end_stat)
def build_seal_menu(self):
menu = gtk.GtkMenu()
index = 0
for val in const.lds_csealing_index:
menuitem = gtk.GtkMenuItem(val)
menuitem.set_data("val",index)
menuitem.connect('activate',self.set_lds_seal)
menuitem.show()
menu.append(menuitem)
index = index + 1
self.ldssealstat.set_menu(menu)
self.ldssealstat.set_history(self.seal_stat)
def set_lds_bap(self,obj):
self.bap_stat = obj.get_data("val")
def set_lds_endow(self,obj):
self.end_stat = obj.get_data("val")
def set_lds_seal(self,obj):
self.seal_stat = obj.get_data("val")
def ev_drag_data_received(self,widget,context,x,y,selection_data,info,time): def ev_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data: if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data exec 'data = %s' % selection_data.data
@ -706,6 +778,8 @@ class EditPerson:
d.set(date) d.set(date)
if compare_dates(d,ord.getDateObj()) != 0: if compare_dates(d,ord.getDateObj()) != 0:
changed = 1 changed = 1
elif ord.getStatus() != self.bap_stat:
changed = 1
elif ord.getTemple() != temple: elif ord.getTemple() != temple:
changed = 1 changed = 1
@ -724,6 +798,8 @@ class EditPerson:
d.set(date) d.set(date)
if compare_dates(d,ord.getDateObj()) != 0: if compare_dates(d,ord.getDateObj()) != 0:
changed = 1 changed = 1
elif ord.getStatus() != self.end_stat:
changed = 1
elif ord.getTemple() != temple: elif ord.getTemple() != temple:
changed = 1 changed = 1
@ -745,6 +821,8 @@ class EditPerson:
changed = 1 changed = 1
elif ord.getTemple() != temple: elif ord.getTemple() != temple:
changed = 1 changed = 1
elif ord.getStatus() != self.seal_stat:
changed = 1
elif ord.getFamily() != self.ldsfam: elif ord.getFamily() != self.ldsfam:
changed = 1 changed = 1
@ -1070,7 +1148,7 @@ class EditPerson:
else: else:
temple = "" temple = ""
ord = self.person.getLdsBaptism() ord = self.person.getLdsBaptism()
update_ord(self.person.setLdsBaptism,ord,date,temple) update_ord(self.person.setLdsBaptism,ord,date,temple,self.bap_stat)
date = self.ldsend_date.get_text() date = self.ldsend_date.get_text()
temple = self.ldsend_temple.entry.get_text() temple = self.ldsend_temple.entry.get_text()
@ -1079,7 +1157,7 @@ class EditPerson:
else: else:
temple = "" temple = ""
ord = self.person.getLdsEndowment() ord = self.person.getLdsEndowment()
update_ord(self.person.setLdsEndowment,ord,date,temple) update_ord(self.person.setLdsEndowment,ord,date,temple,self.end_stat)
date = self.ldsseal_date.get_text() date = self.ldsseal_date.get_text()
temple = self.ldsseal_temple.entry.get_text() temple = self.ldsseal_temple.entry.get_text()
@ -1105,6 +1183,9 @@ class EditPerson:
if ord.getTemple() != temple: if ord.getTemple() != temple:
ord.setTemple(temple) ord.setTemple(temple)
utils.modified() utils.modified()
if ord.getStatus() != self.seal_stat:
ord.setStatus(self.seal_stat)
utils.modified()
if ord.getFamily() != self.ldsfam: if ord.getFamily() != self.ldsfam:
ord.setFamily(self.ldsfam) ord.setFamily(self.ldsfam)
utils.modified() utils.modified()
@ -1122,6 +1203,54 @@ class EditPerson:
import NoteEdit import NoteEdit
NoteEdit.NoteEditor(self.pname) NoteEdit.NoteEditor(self.pname)
def on_ldsbap_source_clicked(self,obj):
import Sources
ord = self.person.getLdsBaptism()
if ord == None:
ord = LdsOrd()
self.person.setLdsBaptism(ord)
Sources.SourceSelector(self.pname.getSourceRefList(),self,src_changed)
def on_ldsbap_note_clicked(self,obj):
import NoteEdit
ord = self.person.getLdsBaptism()
if ord == None:
ord = LdsOrd()
self.person.setLdsBaptism(ord)
NoteEdit.NoteEditor(ord)
def on_ldsendow_source_clicked(self,obj):
import Sources
ord = self.person.getLdsEndowment()
if ord == None:
ord = LdsOrd()
self.person.setLdsEndowment(ord)
Sources.SourceSelector(self.pname.getSourceRefList(),self,src_changed)
def on_ldsendow_note_clicked(self,obj):
import NoteEdit
ord = self.person.getLdsEndowment()
if ord == None:
ord = LdsOrd()
self.person.setLdsEndowment(ord)
NoteEdit.NoteEditor(ord)
def on_ldsseal_source_clicked(self,obj):
import Sources
ord = self.person.getLdsSeal()
if ord == None:
ord = LdsOrd()
self.person.setLdsSeal(ord)
Sources.SourceSelector(self.pname.getSourceRefList(),self,src_changed)
def on_ldsseal_note_clicked(self,obj):
import NoteEdit
ord = self.person.getLdsSeal()
if ord == None:
ord = LdsOrd()
self.person.setLdsSeal(ord)
NoteEdit.NoteEditor(ord)
def load_person_image(self): def load_person_image(self):
photo_list = self.person.getPhotoList() photo_list = self.person.getPhotoList()
if len(photo_list) != 0: if len(photo_list) != 0:
@ -1141,9 +1270,29 @@ class EditPerson:
elif page == 6 and self.not_loaded: elif page == 6 and self.not_loaded:
self.not_loaded = 0 self.not_loaded = 0
self.gallery.load_images() self.gallery.load_images()
elif page == 8 and self.lds_not_loaded:
self.lds_not_loaded = 0
plist = self.db.getPlaceMap().values()
ord = self.person.getLdsBaptism()
if ord :
place = ord.getPlace()
else:
place = None
utils.attach_places(plist,self.ldsbapplace,place)
ord = self.person.getLdsSeal()
if ord :
place = ord.getPlace()
else:
place = None
utils.attach_places(plist,self.ldssealplace,place)
ord = self.person.getLdsEndowment()
if ord :
place = ord.getPlace()
else:
place = None
utils.attach_places(plist,self.ldsendowplace,place)
def update_ord(func,ord,date,temple,stat):
def update_ord(func,ord,date,temple):
if not ord: if not ord:
if (date or temple): if (date or temple):
ord = LdsOrd() ord = LdsOrd()
@ -1160,6 +1309,9 @@ def update_ord(func,ord,date,temple):
elif ord.getTemple() != temple: elif ord.getTemple() != temple:
ord.setTemple(temple) ord.setTemple(temple)
utils.modified() utils.modified()
elif ord.getStatus() != stat:
ord.setStatus(stat)
utils.modified()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #

View File

@ -136,6 +136,9 @@ class GrampsParser:
def start_temple(self,attrs): def start_temple(self,attrs):
self.ord.setTemple(u2l(attrs['val'])) self.ord.setTemple(u2l(attrs['val']))
def start_status(self,attrs):
self.ord.setStatus(int(u2l(attrs['val'])))
def start_sealed_to(self,attrs): def start_sealed_to(self,attrs):
id = u2l(attrs['ref']) id = u2l(attrs['ref'])
self.ord.setFamily(self.db.findFamilyNoMap(id)) self.ord.setFamily(self.db.findFamilyNoMap(id))
@ -318,6 +321,8 @@ class GrampsParser:
self.source_ref.setBase(source) self.source_ref.setBase(source)
if self.photo: if self.photo:
self.photo.addSourceRef(self.source_ref) self.photo.addSourceRef(self.source_ref)
elif self.ord:
self.ord.addSourceRef(self.source_ref)
elif self.object: elif self.object:
self.object.addSourceRef(self.source_ref) self.object.addSourceRef(self.source_ref)
elif self.event: elif self.event:
@ -628,6 +633,8 @@ class GrampsParser:
if self.address: if self.address:
self.address.setNote(note) self.address.setNote(note)
elif self.ord:
self.ord.setNote(note)
elif self.attribute: elif self.attribute:
self.attribute.setNote(note) self.attribute.setNote(note)
elif self.object: elif self.object:
@ -738,6 +745,7 @@ class GrampsParser:
"location" : (start_location,None), "location" : (start_location,None),
"lds_ord" : (start_lds_ord, stop_lds_ord), "lds_ord" : (start_lds_ord, stop_lds_ord),
"temple" : (start_temple, None), "temple" : (start_temple, None),
"status" : (start_status, None),
"sealed_to" : (start_sealed_to, None), "sealed_to" : (start_sealed_to, None),
"coord" : (start_coord,None), "coord" : (start_coord,None),
"pos" : (start_pos, None), "pos" : (start_pos, None),

View File

@ -87,17 +87,30 @@ class SourceNote:
"""Return in note instance, not just the text""" """Return in note instance, not just the text"""
return self.note return self.note
class LdsOrd: class LdsOrd(SourceNote):
"""LDS Ordinance support""" """LDS Ordinance support"""
def __init__(self,source=None): def __init__(self,source=None):
SourceNote.__init__(self,source)
if source: if source:
self.famc = source.famc self.famc = source.famc
self.date = Date(source.date) self.date = Date(source.date)
self.temple = source.temple self.temple = source.temple
self.status = source.status
self.place = source.place
else: else:
self.famc = None self.famc = None
self.date = None self.date = None
self.temple = "" self.temple = ""
self.status = 0
self.place = None
def setPlace(self,place):
"""sets the Place instance of the Event"""
self.place = place
def getPlace(self):
"""returns the Place instance of the Event"""
return self.place
def setFamily(self,family): def setFamily(self,family):
self.famc = family self.famc = family
@ -105,6 +118,12 @@ class LdsOrd:
def getFamily(self): def getFamily(self):
return self.famc return self.famc
def setStatus(self,val):
self.status = val
def getStatus(self):
return self.status
def setDate(self, date) : def setDate(self, date) :
"""attempts to sets the date of the LdsOrd instance""" """attempts to sets the date of the LdsOrd instance"""
if not self.date: if not self.date:

View File

@ -145,8 +145,14 @@ def dump_ordinance(g,name,ord,index=1):
write_date(g,dateobj,index+1) write_date(g,dateobj,index+1)
if ord.getTemple(): if ord.getTemple():
g.write('%s<temple val="%s"/>\n' % (sp2,fix(ord.getTemple()))) g.write('%s<temple val="%s"/>\n' % (sp2,fix(ord.getTemple())))
if ord.getStatus() != 0:
g.write('%s<status val="%d"/>\n' % (sp2,ord.getStatus()))
if ord.getFamily(): if ord.getFamily():
g.write('%s<sealed_to ref="%s"/>\n' % (sp2,fix(ord.getFamily().getId()))) g.write('%s<sealed_to ref="%s"/>\n' % (sp2,fix(ord.getFamily().getId())))
if ord.getNote() != "":
write_note(g,"note",ord.getNote(),index+1)
for s in ord.getSourceRefList():
dump_source_ref(g,s,index+1)
g.write('%s</lds_ord>\n' % sp) g.write('%s</lds_ord>\n' % sp)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------

View File

@ -213,7 +213,7 @@ personalConstantEvents = {
"Blessing" : "BLES", "Blessing" : "BLES",
"Burial" : "BURI", "Burial" : "BURI",
"Cause Of Death" : "CAUS", "Cause Of Death" : "CAUS",
"Ordination" : "ORID", "Ordination" : "ORDI",
"Census" : "CENS", "Census" : "CENS",
"Christening" : "CHR" , "Christening" : "CHR" ,
"Confirmation" : "CONF", "Confirmation" : "CONF",
@ -697,3 +697,43 @@ lds_temple_to_abrev = {
"WASHI": "Washington, D.C.", "WASHI": "Washington, D.C.",
"WA" : "Washington, D.C.", "WA" : "Washington, D.C.",
} }
lds_baptism_status = {
"<No Status>" : 0,
"Child" : 1,
"Cleared" : 2,
"Completed" : 3,
"Infant" : 4,
"Pre-1970" : 5,
"Qualified" : 6,
"Stillborn" : 7,
"Submitted" : 8,
"Uncleared" : 9,
}
lds_baptism_index = [
"<No Status>",
"Child",
"Cleared",
"Completed",
"Infant",
"Pre-1970",
"Qualified",
"Stillborn",
"Submitted",
"Uncleared",
]
lds_csealing_index = [
"<No Status>",
"BIC",
"Cleared",
"Completed",
"DNS",
"Pre-1970",
"Qualified",
"Stillborn",
"Submitted",
"Uncleared",
]

View File

@ -69,7 +69,8 @@ for val in const.familyConstantEvents.keys():
lineRE = re.compile(r"\s*(\d+)\s+(\S+)\s*(.*)$") lineRE = re.compile(r"\s*(\d+)\s+(\S+)\s*(.*)$")
headRE = re.compile(r"\s*(\d+)\s+HEAD") headRE = re.compile(r"\s*(\d+)\s+HEAD")
nameRegexp = re.compile(r"([\S\s]*\S)?\s*/([^/]+)?/\s*,?\s*([\S]+)?") nameRegexp= re.compile(r"/?([^/]*)(/([^/]*)(/([^/]*))?)?")
#nameRegexp = re.compile(r"([\S\s]*\S)?\s*/([^/]+)?/\s*,?\s*([\S]+)?")
calRegexp = re.compile(r"\s*@#D([^@]+)@\s*(.*)$") calRegexp = re.compile(r"\s*@#D([^@]+)@\s*(.*)$")
fromtoRegexp = re.compile(r"\s*FROM\s+@#D([^@]+)@\s*(.*)\s+TO\s+@#D([^@]+)@\s*(.*)$") fromtoRegexp = re.compile(r"\s*FROM\s+@#D([^@]+)@\s*(.*)\s+TO\s+@#D([^@]+)@\s*(.*)$")
@ -298,18 +299,18 @@ class GedcomParser:
elif matches[1] == "DATA" or matches[1] == "TEXT": elif matches[1] == "DATA" or matches[1] == "TEXT":
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
elif matches[1] == "TITL": elif matches[1] == "TITL":
title = matches[2] + self.parse_continue_data() title = matches[2] + self.parse_continue_data(level+1)
title = string.replace(title,'\n',' ') title = string.replace(title,'\n',' ')
self.source.setTitle(title) self.source.setTitle(title)
elif matches[1] == "AUTH": elif matches[1] == "AUTH":
self.source.setAuthor(matches[2] + self.parse_continue_data()) self.source.setAuthor(matches[2] + self.parse_continue_data(level+1))
elif matches[1] == "PUBL": elif matches[1] == "PUBL":
self.source.setPubInfo(matches[2] + self.parse_continue_data()) self.source.setPubInfo(matches[2] + self.parse_continue_data(level+1))
elif matches[1] == "OBJE": elif matches[1] == "OBJE":
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if matches[2] and matches[2][0] != "@": if matches[2] and matches[2][0] != "@":
note = matches[1] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
self.source.setNote(note) self.source.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -352,7 +353,7 @@ class GedcomParser:
self.parse_source(matches[1],1) self.parse_source(matches[1],1)
elif matches[2] == "REPO": elif matches[2] == "REPO":
self.ignore_sub_junk(1) self.ignore_sub_junk(1)
elif matches[2][0:4] == "NOTE": elif matches[2] == "NOTE":
if self.nmap.has_key(matches[1]): if self.nmap.has_key(matches[1]):
noteobj = self.nmap[matches[1]] noteobj = self.nmap[matches[1]]
else: else:
@ -360,9 +361,9 @@ class GedcomParser:
self.nmap[matches[1]] = noteobj self.nmap[matches[1]] = noteobj
text = matches[2][4:] text = matches[2][4:]
if text == "": if text == "":
noteobj.set(self.parse_continue_data()) noteobj.set(self.parse_continue_data(1))
else: else:
noteobj.set(text + self.parse_continue_data()) noteobj.set(text + self.parse_continue_data(1))
self.parse_note_data(1) self.parse_note_data(1)
elif matches[2] == "OBJE": elif matches[2] == "OBJE":
self.ignore_sub_junk(1) self.ignore_sub_junk(1)
@ -386,7 +387,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap) s = self.db.findSource(ref,self.smap)
source_ref.setBase(s) source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref) s.setTitle('Imported Source #%d' % self.localref)
s.setNote(matches[2] + self.parse_continue_data()) s.setNote(matches[2] + self.parse_continue_data(level+1))
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
source_ref.setBase(self.db.findSource(matches[2],self.smap)) source_ref.setBase(self.db.findSource(matches[2],self.smap))
@ -458,7 +459,7 @@ class GedcomParser:
self.parse_ord(ord,2) self.parse_ord(ord,2)
elif matches[1] == "ADDR": elif matches[1] == "ADDR":
self.addr = Address() self.addr = Address()
self.addr.setStreet(matches[2] + self.parse_continue_data()) self.addr.setStreet(matches[2] + self.parse_continue_data(1))
self.parse_address(self.addr,2) self.parse_address(self.addr,2)
elif matches[1] == "CHIL": elif matches[1] == "CHIL":
mrel,frel = self.parse_ftw_relations(2) mrel,frel = self.parse_ftw_relations(2)
@ -487,9 +488,13 @@ class GedcomParser:
self.barf(2) self.barf(2)
else: else:
self.parse_family_object(2) self.parse_family_object(2)
elif matches[1] == "_COMM":
note = string.strip(matches[2]) + self.parse_continue_data(1)
self.family.setNote(note)
self.ignore_sub_junk(2)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if matches[2] and matches[2][0] != "@": if matches[2] and matches[2][0] != "@":
note = matches[1] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(1)
self.family.setNote(note) self.family.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -524,13 +529,13 @@ class GedcomParser:
try: try:
names = nameRegexp.match(matches[2]).groups() names = nameRegexp.match(matches[2]).groups()
except: except:
names = (matches[2],"","") names = (matches[2],"","","","")
if names[0]: if names[0]:
name.setFirstName(names[0]) name.setFirstName(names[0])
if names[1]:
name.setSurname(names[1])
if names[2]: if names[2]:
name.setSuffix(names[2]) name.setSurname(names[2])
if names[4]:
name.setSuffix(names[4])
if name_cnt == 0: if name_cnt == 0:
self.person.setPrimaryName(name) self.person.setPrimaryName(name)
else: else:
@ -539,32 +544,31 @@ class GedcomParser:
self.parse_name(name,2) self.parse_name(name,2)
elif matches[1] == "_UID": elif matches[1] == "_UID":
self.person.setPafUid(matches[2]) self.person.setPafUid(matches[2])
elif matches[1] == "ALIA": elif matches[1] in ["ALIA","_ALIA"]:
aka = Name() aka = Name()
match = nameRegexp.match(matches[2]) try:
if match: names = nameRegexp.match(matches[2]).groups()
names = match.groups() except:
names = (matches[2],"","","","")
if names[0]: if names[0]:
aka.setFirstName(names[0]) aka.setFirstName(names[0])
if names[1]:
aka.setSurname(names[1])
if names[2]: if names[2]:
aka.setSuffix(names[2]) aka.setSurname(names[2])
else: if names[4]:
aka.setFirstName(matches[2]) aka.setSuffix(names[4])
self.person.addAlternateName(aka) self.person.addAlternateName(aka)
elif matches[1] == "OBJE": elif matches[1] == "OBJE":
if matches[2] and matches[2][0] == '@': if matches[2] and matches[2][0] == '@':
self.barf(2) self.barf(2)
else: else:
self.parse_person_object(2) self.parse_person_object(2)
elif matches[1] == "NOTE": elif matches[1] in ["NOTE","_COMM"]:
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = self.person.getNote() note = self.person.getNote()
if note == "": if note == "":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(1)
else: else:
note = "%s\n\n%s%s" % (note,matches[2],self.parse_continue_data()) note = "%s\n\n%s%s" % (note,matches[2],self.parse_continue_data(1))
self.person.setNote(note) self.person.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -620,7 +624,7 @@ class GedcomParser:
self.parse_residence(addr,2) self.parse_residence(addr,2)
elif matches[1] == "ADDR": elif matches[1] == "ADDR":
addr = Address() addr = Address()
addr.setStreet(matches[2] + self.parse_continue_data()) addr.setStreet(matches[2] + self.parse_continue_data(1))
self.parse_address(addr,2) self.parse_address(addr,2)
self.person.addAddress(addr) self.person.addAddress(addr)
elif matches[1] == "BIRT": elif matches[1] == "BIRT":
@ -697,7 +701,7 @@ class GedcomParser:
return note return note
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
self.parse_note_data(level+1) self.parse_note_data(level+1)
else: else:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
@ -719,7 +723,7 @@ class GedcomParser:
type = matches[1] type = matches[1]
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
self.parse_note_data(level+1) self.parse_note_data(level+1)
else: else:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
@ -740,7 +744,7 @@ class GedcomParser:
elif matches[1] == "FILE": elif matches[1] == "FILE":
file = matches[2] file = matches[2]
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
elif matches[1][0] == "_": elif matches[1][0] == "_":
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
elif int(matches[0]) < level: elif int(matches[0]) < level:
@ -782,7 +786,7 @@ class GedcomParser:
elif matches[1] == "FILE": elif matches[1] == "FILE":
file = matches[2] file = matches[2]
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
elif int(matches[0]) < level: elif int(matches[0]) < level:
self.backup() self.backup()
break break
@ -817,7 +821,7 @@ class GedcomParser:
elif matches[1] == "FILE": elif matches[1] == "FILE":
file = matches[2] file = matches[2]
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
elif int(matches[0]) < level: elif int(matches[0]) < level:
self.backup() self.backup()
break break
@ -848,7 +852,7 @@ class GedcomParser:
elif matches[1] == "DATE": elif matches[1] == "DATE":
address.setDateObj(self.extract_date(matches[2])) address.setDateObj(self.extract_date(matches[2]))
elif matches[1] == "ADDR": elif matches[1] == "ADDR":
address.setStreet(matches[2] + self.parse_continue_data()) address.setStreet(matches[2] + self.parse_continue_data(level+1))
self.parse_address(address,level+1) self.parse_address(address,level+1)
elif matches[1] in ["AGE","AGNC","CAUS","STAT","TEMP","OBJE","TYPE"]: elif matches[1] in ["AGE","AGNC","CAUS","STAT","TEMP","OBJE","TYPE"]:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
@ -864,7 +868,7 @@ class GedcomParser:
pass pass
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = matches[1] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
address.setNote(note) address.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -886,7 +890,7 @@ class GedcomParser:
return return
elif matches[1] in [ "ADDR", "ADR1", "ADR2" ]: elif matches[1] in [ "ADDR", "ADR1", "ADR2" ]:
val = address.getStreet() val = address.getStreet()
data = self.parse_continue_data() data = self.parse_continue_data(level+1)
if first == 0: if first == 0:
val = "%s %s" % (matches[2],data) val = "%s %s" % (matches[2],data)
first = 1 first = 1
@ -953,7 +957,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap) s = self.db.findSource(ref,self.smap)
source_ref.setBase(s) source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref) s.setTitle('Imported Source #%d' % self.localref)
s.setNote(matches[2] + self.parse_continue_data()) s.setNote(matches[2] + self.parse_continue_data(level+1))
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
source_ref.setBase(self.db.findSource(matches[2],self.smap)) source_ref.setBase(self.db.findSource(matches[2],self.smap))
@ -976,11 +980,11 @@ class GedcomParser:
event.setPlace(place) event.setPlace(place)
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
elif matches[1] == "CAUS": elif matches[1] == "CAUS":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
event.setCause(info) event.setCause(info)
self.parse_cause(event,level+1) self.parse_cause(event,level+1)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
if note == "": if note == "":
note = info note = info
else: else:
@ -993,6 +997,8 @@ class GedcomParser:
event.setDescription("%s%s" % (d, matches[2])) event.setDescription("%s%s" % (d, matches[2]))
elif matches[1] == "CONT": elif matches[1] == "CONT":
event.setDescription("%s\n%s" % (event.getDescription(),matches[2])) event.setDescription("%s\n%s" % (event.getDescription(),matches[2]))
elif matches[1] == "RELI":
self.ignore_sub_junk(level+1)
else: else:
self.barf(level+1) self.barf(level+1)
@ -1017,7 +1023,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap) s = self.db.findSource(ref,self.smap)
source_ref.setBase(s) source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref) s.setTitle('Imported Source #%d' % self.localref)
s.setNote(matches[2] + self.parse_continue_data()) s.setNote(matches[2] + self.parse_continue_data(1))
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
source_ref.setBase(self.db.findSource(matches[2],self.smap)) source_ref.setBase(self.db.findSource(matches[2],self.smap))
@ -1049,11 +1055,11 @@ class GedcomParser:
# eventually do something intelligent here # eventually do something intelligent here
pass pass
elif matches[1] == "CAUS": elif matches[1] == "CAUS":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
event.setCause(info) event.setCause(info)
self.parse_cause(event,level+1) self.parse_cause(event,level+1)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
if note == "": if note == "":
note = info note = info
else: else:
@ -1114,7 +1120,7 @@ class GedcomParser:
s = self.db.findSource(ref,self.smap) s = self.db.findSource(ref,self.smap)
source_ref.setBase(s) source_ref.setBase(s)
s.setTitle('Imported Source #%d' % self.localref) s.setTitle('Imported Source #%d' % self.localref)
s.setNote(matches[2] + self.parse_continue_data()) s.setNote(matches[2] + self.parse_continue_data(level+1))
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
source_ref.setBase(self.db.findSource(matches[2],self.smap)) source_ref.setBase(self.db.findSource(matches[2],self.smap))
@ -1128,7 +1134,7 @@ class GedcomParser:
elif matches[1] == "DATE": elif matches[1] == "DATE":
note = "%s\n\n" % ("Date : %s" % matches[2]) note = "%s\n\n" % ("Date : %s" % matches[2])
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
if note == "": if note == "":
note = info note = info
else: else:
@ -1160,10 +1166,10 @@ class GedcomParser:
elif matches[1] == "DATE": elif matches[1] == "DATE":
event.setDateObj(self.extract_date(matches[2])) event.setDateObj(self.extract_date(matches[2]))
elif matches[1] == "CAUS": elif matches[1] == "CAUS":
info = matches[2] + self.parse_continue_data() info = matches[2] + self.parse_continue_data(level+1)
event.setCause(info) event.setCause(info)
self.parse_cause(event,level+1) self.parse_cause(event,level+1)
elif matches[1] in ["TIME","AGE","AGNC","ADDR","STAT","TEMP","HUSB","WIFE","OBJE"]: elif matches[1] in ["TIME","AGE","AGNC","ADDR","STAT","TEMP","HUSB","WIFE","OBJE","_CHUR"]:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
elif matches[1] == "SOUR": elif matches[1] == "SOUR":
source_ref = SourceRef() source_ref = SourceRef()
@ -1172,7 +1178,7 @@ class GedcomParser:
ref = "gsr%d" % self.localref ref = "gsr%d" % self.localref
s = self.db.findSource(ref,self.smap) s = self.db.findSource(ref,self.smap)
source_ref.setBase(s) source_ref.setBase(s)
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
s.setTitle('Imported Source #%d' % self.localref) s.setTitle('Imported Source #%d' % self.localref)
s.setNote(note) s.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
@ -1193,7 +1199,7 @@ class GedcomParser:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = matches[1] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
event.setNote(note) event.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -1215,14 +1221,14 @@ class GedcomParser:
self.backup() self.backup()
return return
elif matches[1] == "PAGE": elif matches[1] == "PAGE":
source.setPage(matches[2] + self.parse_continue_data()) source.setPage(matches[2] + self.parse_continue_data(level+1))
elif matches[1] == "DATA": elif matches[1] == "DATA":
date,text = self.parse_source_data(level+1) date,text = self.parse_source_data(level+1)
d = Date.Date() d = Date.Date()
d.set(date) d.set(date)
source.setDate(d) source.setDate(d)
source.setText(text) source.setText(text)
elif matches[1] == "OBJE": elif matches[1] in ["OBJE","REFN","TEXT"]:
self.ignore_sub_junk(level+1) self.ignore_sub_junk(level+1)
elif matches[1] == "QUAY": elif matches[1] == "QUAY":
val = int(matches[2]) val = int(matches[2])
@ -1232,7 +1238,7 @@ class GedcomParser:
source.setConfidence(val) source.setConfidence(val)
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@": if not string.strip(matches[2]) or matches[2] and matches[2][0] != "@":
note = matches[1] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
source.setComments(note) source.setComments(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -1259,7 +1265,7 @@ class GedcomParser:
date = matches[2] date = matches[2]
elif matches[1] == "TEXT": elif matches[1] == "TEXT":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
else: else:
self.barf(level+1) self.barf(level+1)
@ -1271,15 +1277,18 @@ class GedcomParser:
if int(matches[0]) < level: if int(matches[0]) < level:
self.backup() self.backup()
return return
elif matches[1] == "ALIA": elif matches[1] in ["ALIA","_ALIA"]:
aka = Name() aka = Name()
try:
names = nameRegexp.match(matches[2]).groups() names = nameRegexp.match(matches[2]).groups()
except:
names = (matches[2],"","","","")
if names[0]: if names[0]:
aka.setFirstName(names[0]) aka.setFirstName(names[0])
if names[1]:
aka.setSurname(names[1])
if names[2]: if names[2]:
aka.setSuffix(names[2]) aka.setSurname(names[2])
if names[4]:
aka.setSuffix(names[4])
self.person.addAlternateName(aka) self.person.addAlternateName(aka)
elif matches[1] == "NPFX": elif matches[1] == "NPFX":
name.setTitle(matches[2]) name.setTitle(matches[2])
@ -1313,7 +1322,7 @@ class GedcomParser:
self.parse_source_reference(source_ref,level+1) self.parse_source_reference(source_ref,level+1)
elif matches[1][0:4] == "NOTE": elif matches[1][0:4] == "NOTE":
if matches[2] and matches[2][0] != "@": if matches[2] and matches[2][0] != "@":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(level+1)
name.setNote(note) name.setNote(note)
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -1380,7 +1389,7 @@ class GedcomParser:
date = self.parse_date(2) date = self.parse_date(2)
date.date = matches[2] date.date = matches[2]
elif matches[1] == "NOTE": elif matches[1] == "NOTE":
note = matches[2] + self.parse_continue_data() note = matches[2] + self.parse_continue_data(2)
elif matches[1][0] == "_": elif matches[1][0] == "_":
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
else: else:
@ -1460,12 +1469,15 @@ class GedcomParser:
elif matches[1] != "FORM": elif matches[1] != "FORM":
self.barf(level+1) self.barf(level+1)
def parse_continue_data(self): def parse_continue_data(self,level):
data = "" data = ""
while 1: while 1:
matches = self.get_next() matches = self.get_next()
if matches[1] == "CONC": if int(matches[0]) < level:
self.backup()
return data
elif matches[1] == "CONC":
if self.broken_conc: if self.broken_conc:
data = "%s %s" % (data,matches[2]) data = "%s %s" % (data,matches[2])
else: else:

View File

@ -222,6 +222,9 @@ def runTool(database,person,callback):
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class RelCalc: class RelCalc:
"""
Relationship calculator class.
"""
def __init__(self,database,person): def __init__(self,database,person):
self.person = person self.person = person