Warn on modified edit window when canceling or closing
svn: r284
This commit is contained in:
parent
b8aa714e9b
commit
b6368c5f0c
@ -16,6 +16,11 @@
|
|||||||
<class>GtkWindow</class>
|
<class>GtkWindow</class>
|
||||||
<name>editPerson</name>
|
<name>editPerson</name>
|
||||||
<has_focus>True</has_focus>
|
<has_focus>True</has_focus>
|
||||||
|
<signal>
|
||||||
|
<name>delete_event</name>
|
||||||
|
<handler>on_delete_event</handler>
|
||||||
|
<last_modification_time>Fri, 03 Aug 2001 01:42:42 GMT</last_modification_time>
|
||||||
|
</signal>
|
||||||
<title>Gramps - Edit Person</title>
|
<title>Gramps - Edit Person</title>
|
||||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||||
<position>GTK_WIN_POS_CENTER</position>
|
<position>GTK_WIN_POS_CENTER</position>
|
||||||
@ -198,6 +203,42 @@
|
|||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkCombo</class>
|
||||||
|
<name>bp_combo</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>1</top_attach>
|
||||||
|
<bottom_attach>2</bottom_attach>
|
||||||
|
<xpad>5</xpad>
|
||||||
|
<ypad>5</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>birthPlace</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<editable>True</editable>
|
||||||
|
<text_visible>True</text_visible>
|
||||||
|
<text_max_length>0</text_max_length>
|
||||||
|
<text></text>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
<widget>
|
<widget>
|
||||||
<class>GtkHBox</class>
|
<class>GtkHBox</class>
|
||||||
<name>hbox19</name>
|
<name>hbox19</name>
|
||||||
@ -211,7 +252,7 @@
|
|||||||
<xpad>0</xpad>
|
<xpad>0</xpad>
|
||||||
<ypad>0</ypad>
|
<ypad>0</ypad>
|
||||||
<xexpand>False</xexpand>
|
<xexpand>False</xexpand>
|
||||||
<yexpand>True</yexpand>
|
<yexpand>False</yexpand>
|
||||||
<xshrink>False</xshrink>
|
<xshrink>False</xshrink>
|
||||||
<yshrink>False</yshrink>
|
<yshrink>False</yshrink>
|
||||||
<xfill>True</xfill>
|
<xfill>True</xfill>
|
||||||
@ -256,42 +297,6 @@
|
|||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
<widget>
|
|
||||||
<class>GtkCombo</class>
|
|
||||||
<name>bp_combo</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>1</top_attach>
|
|
||||||
<bottom_attach>2</bottom_attach>
|
|
||||||
<xpad>5</xpad>
|
|
||||||
<ypad>5</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>birthPlace</name>
|
|
||||||
<can_focus>True</can_focus>
|
|
||||||
<editable>True</editable>
|
|
||||||
<text_visible>True</text_visible>
|
|
||||||
<text_max_length>0</text_max_length>
|
|
||||||
<text></text>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
@ -402,6 +407,42 @@
|
|||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkCombo</class>
|
||||||
|
<name>dp_combo</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>1</top_attach>
|
||||||
|
<bottom_attach>2</bottom_attach>
|
||||||
|
<xpad>5</xpad>
|
||||||
|
<ypad>5</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>deathPlace</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<editable>True</editable>
|
||||||
|
<text_visible>True</text_visible>
|
||||||
|
<text_max_length>0</text_max_length>
|
||||||
|
<text></text>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
<widget>
|
<widget>
|
||||||
<class>GtkHBox</class>
|
<class>GtkHBox</class>
|
||||||
<name>hbox20</name>
|
<name>hbox20</name>
|
||||||
@ -415,7 +456,7 @@
|
|||||||
<xpad>0</xpad>
|
<xpad>0</xpad>
|
||||||
<ypad>0</ypad>
|
<ypad>0</ypad>
|
||||||
<xexpand>False</xexpand>
|
<xexpand>False</xexpand>
|
||||||
<yexpand>True</yexpand>
|
<yexpand>False</yexpand>
|
||||||
<xshrink>False</xshrink>
|
<xshrink>False</xshrink>
|
||||||
<yshrink>False</yshrink>
|
<yshrink>False</yshrink>
|
||||||
<xfill>True</xfill>
|
<xfill>True</xfill>
|
||||||
@ -460,42 +501,6 @@
|
|||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
<widget>
|
|
||||||
<class>GtkCombo</class>
|
|
||||||
<name>dp_combo</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>1</top_attach>
|
|
||||||
<bottom_attach>2</bottom_attach>
|
|
||||||
<xpad>5</xpad>
|
|
||||||
<ypad>5</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>deathPlace</name>
|
|
||||||
<can_focus>True</can_focus>
|
|
||||||
<editable>True</editable>
|
|
||||||
<text_visible>True</text_visible>
|
|
||||||
<text_max_length>0</text_max_length>
|
|
||||||
<text></text>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
@ -147,42 +147,43 @@ class EditPerson:
|
|||||||
self.selectedIcon = -1
|
self.selectedIcon = -1
|
||||||
|
|
||||||
self.top_window.signal_autoconnect({
|
self.top_window.signal_autoconnect({
|
||||||
"on_death_note_clicked" : on_death_note_clicked,
|
"destroy_passed_object" : on_cancel_edit,
|
||||||
"on_death_source_clicked" : on_death_source_clicked,
|
"on_add_address_clicked" : on_add_address_clicked,
|
||||||
"on_name_note_clicked" : on_name_note_clicked,
|
"on_add_aka_clicked" : on_add_aka_clicked,
|
||||||
"on_name_source_clicked" : on_name_source_clicked,
|
"on_add_attr_clicked" : on_add_attr_clicked,
|
||||||
|
"on_add_url_clicked" : on_add_url_clicked,
|
||||||
|
"on_addphoto_clicked" : on_add_photo_clicked,
|
||||||
|
"on_address_list_select_row" : on_address_list_select_row,
|
||||||
|
"on_aka_delete_clicked" : on_aka_delete_clicked,
|
||||||
|
"on_aka_update_clicked" : on_aka_update_clicked,
|
||||||
|
"on_apply_person_clicked" : on_apply_person_clicked,
|
||||||
|
"on_attr_list_select_row" : on_attr_list_select_row,
|
||||||
"on_birth_note_clicked" : on_birth_note_clicked,
|
"on_birth_note_clicked" : on_birth_note_clicked,
|
||||||
"on_birth_source_clicked" : on_birth_source_clicked,
|
"on_birth_source_clicked" : on_birth_source_clicked,
|
||||||
|
"on_browse_clicked": on_browse_clicked,
|
||||||
|
"on_death_note_clicked" : on_death_note_clicked,
|
||||||
|
"on_death_source_clicked" : on_death_source_clicked,
|
||||||
|
"on_delete_address_clicked" : on_delete_address_clicked,
|
||||||
|
"on_delete_attr_clicked" : on_delete_attr_clicked,
|
||||||
|
"on_delete_event" : on_delete_event,
|
||||||
|
"on_delete_url_clicked" : on_delete_url_clicked,
|
||||||
|
"on_deletephoto_clicked" : on_delete_photo_clicked,
|
||||||
|
"on_editperson_switch_page" : on_switch_page,
|
||||||
"on_event_add_clicked" : on_event_add_clicked,
|
"on_event_add_clicked" : on_event_add_clicked,
|
||||||
"on_event_delete_clicked" : on_event_delete_clicked,
|
"on_event_delete_clicked" : on_event_delete_clicked,
|
||||||
"on_name_list_select_row" : on_name_list_select_row,
|
|
||||||
"on_browse_clicked": on_browse_clicked,
|
|
||||||
"on_web_list_select_row" : on_web_list_select_row,
|
|
||||||
"on_attr_list_select_row" : on_attr_list_select_row,
|
|
||||||
"on_address_list_select_row" : on_address_list_select_row,
|
|
||||||
"on_aka_update_clicked" : on_aka_update_clicked,
|
|
||||||
"on_aka_delete_clicked" : on_aka_delete_clicked,
|
|
||||||
"on_add_aka_clicked" : on_add_aka_clicked,
|
|
||||||
"on_update_url_clicked" : on_update_url_clicked,
|
|
||||||
"on_delete_url_clicked" : on_delete_url_clicked,
|
|
||||||
"on_add_attr_clicked" : on_add_attr_clicked,
|
|
||||||
"on_update_attr_clicked" : on_update_attr_clicked,
|
|
||||||
"on_delete_attr_clicked" : on_delete_attr_clicked,
|
|
||||||
"on_add_url_clicked" : on_add_url_clicked,
|
|
||||||
"on_update_address_clicked" : on_update_address_clicked,
|
|
||||||
"on_delete_address_clicked" : on_delete_address_clicked,
|
|
||||||
"on_add_address_clicked" : on_add_address_clicked,
|
|
||||||
"on_event_update_clicked" : on_event_update_clicked,
|
|
||||||
"on_event_select_row" : on_event_select_row,
|
"on_event_select_row" : on_event_select_row,
|
||||||
"on_editperson_switch_page" : on_switch_page,
|
"on_event_update_clicked" : on_event_update_clicked,
|
||||||
"destroy_passed_object" : utils.destroy_passed_object,
|
|
||||||
"on_makeprimary_clicked" : on_primary_photo_clicked,
|
"on_makeprimary_clicked" : on_primary_photo_clicked,
|
||||||
"on_photolist_select_icon" : on_photo_select_icon,
|
"on_name_list_select_row" : on_name_list_select_row,
|
||||||
|
"on_name_note_clicked" : on_name_note_clicked,
|
||||||
|
"on_name_source_clicked" : on_name_source_clicked,
|
||||||
"on_photolist_button_press_event" : on_photolist_button_press_event,
|
"on_photolist_button_press_event" : on_photolist_button_press_event,
|
||||||
"on_addphoto_clicked" : on_add_photo_clicked,
|
"on_photolist_select_icon" : on_photo_select_icon,
|
||||||
"on_deletephoto_clicked" : on_delete_photo_clicked,
|
|
||||||
"on_showsource_clicked" : on_showsource_clicked,
|
"on_showsource_clicked" : on_showsource_clicked,
|
||||||
"on_apply_person_clicked" : on_apply_person_clicked
|
"on_update_address_clicked" : on_update_address_clicked,
|
||||||
|
"on_update_attr_clicked" : on_update_attr_clicked,
|
||||||
|
"on_update_url_clicked" : on_update_url_clicked,
|
||||||
|
"on_web_list_select_row" : on_web_list_select_row,
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(const.surnames) > 0:
|
if len(const.surnames) > 0:
|
||||||
@ -502,6 +503,111 @@ class EditPerson:
|
|||||||
def update_addresses(self):
|
def update_addresses(self):
|
||||||
self.person.setAddressList(self.plist)
|
self.person.setAddressList(self.plist)
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# did_data_change
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def did_data_change(obj):
|
||||||
|
|
||||||
|
epo = obj.get_data(EDITPERSON)
|
||||||
|
person = epo.person
|
||||||
|
|
||||||
|
surname = epo.surname_field.get_text()
|
||||||
|
suffix = epo.suffix.get_text()
|
||||||
|
given = epo.given.get_text()
|
||||||
|
nick = epo.nick.get_text()
|
||||||
|
title = epo.title.get_text()
|
||||||
|
bdate = epo.bdate.get_text()
|
||||||
|
bplace = epo.bplace.get_text()
|
||||||
|
ddate = epo.ddate.get_text()
|
||||||
|
dplace = epo.dplace.get_text()
|
||||||
|
gender = epo.is_male.get_active()
|
||||||
|
text = epo.notes_field.get_chars(0,-1)
|
||||||
|
|
||||||
|
name = person.getPrimaryName()
|
||||||
|
birth = person.getBirth()
|
||||||
|
death = person.getDeath()
|
||||||
|
|
||||||
|
changed = 0
|
||||||
|
if suffix != name.getSuffix() or surname != name.getSurname():
|
||||||
|
changed = 1
|
||||||
|
if given != name.getFirstName() or nick != person.getNickName():
|
||||||
|
changed = 1
|
||||||
|
if title != name.getTitle():
|
||||||
|
changed = 1
|
||||||
|
|
||||||
|
newBirth = Event()
|
||||||
|
newBirth.set("Birth",bdate,bplace,"")
|
||||||
|
if newBirth.compare(birth):
|
||||||
|
changed = 1
|
||||||
|
|
||||||
|
newDeath = Event()
|
||||||
|
newDeath.set("Death",ddate,dplace,"")
|
||||||
|
if newDeath.compare(death):
|
||||||
|
changed = 1
|
||||||
|
|
||||||
|
if gender and person.getGender() == Person.female:
|
||||||
|
changed = 1
|
||||||
|
if not gender and person.getGender() == Person.male:
|
||||||
|
changed = 1
|
||||||
|
if text != person.getNote() or epo.events_changed:
|
||||||
|
changed = 1
|
||||||
|
if epo.names_changed or epo.urls_changed or \
|
||||||
|
epo.attr_changed or epo.addr_changed:
|
||||||
|
changed = 1
|
||||||
|
|
||||||
|
return changed
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# on_cancel_edit
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def on_cancel_edit(obj):
|
||||||
|
|
||||||
|
if did_data_change(obj):
|
||||||
|
global quit
|
||||||
|
q = _("Data was modified. Are you sure you want to abandon your changes?")
|
||||||
|
quit = obj
|
||||||
|
GnomeQuestionDialog(q,cancel_callback)
|
||||||
|
else:
|
||||||
|
utils.destroy_passed_object(obj)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def cancel_callback(a):
|
||||||
|
if a==0:
|
||||||
|
utils.destroy_passed_object(quit)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def save_callback(a):
|
||||||
|
if a==0:
|
||||||
|
save_person(quit)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def on_delete_event(obj,b):
|
||||||
|
obj.hide()
|
||||||
|
if did_data_change(obj):
|
||||||
|
global quit
|
||||||
|
q = _("Data was modified. Do you wish to save your changes?")
|
||||||
|
quit = obj
|
||||||
|
GnomeQuestionDialog(q,save_callback)
|
||||||
|
else:
|
||||||
|
utils.destroy_passed_object(obj)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# on_name_list_select_row - sets the row object attached to the passed
|
# on_name_list_select_row - sets the row object attached to the passed
|
||||||
@ -1102,6 +1208,15 @@ def on_name_changed(obj):
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def on_apply_person_clicked(obj):
|
def on_apply_person_clicked(obj):
|
||||||
|
save_person(obj)
|
||||||
|
utils.destroy_passed_object(obj)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
def save_person(obj):
|
||||||
epo = obj.get_data(EDITPERSON)
|
epo = obj.get_data(EDITPERSON)
|
||||||
person = epo.person
|
person = epo.person
|
||||||
|
|
||||||
@ -1216,8 +1331,7 @@ def on_apply_person_clicked(obj):
|
|||||||
epo.update_addresses()
|
epo.update_addresses()
|
||||||
if epo.addr_changed:
|
if epo.addr_changed:
|
||||||
utils.modified()
|
utils.modified()
|
||||||
|
|
||||||
utils.destroy_passed_object(obj)
|
|
||||||
epo.callback(epo)
|
epo.callback(epo)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user