diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 6064f1e9a..000d101eb 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -22,6 +22,10 @@ * src/GrampsDb/_GrampsBSDDB.py (close): close reference_map tables. * src/ViewManager.py (quit): Add function to properly quit. + * src/DisplayState.py: Work out parent_window, correct close method. + * src/EventEdit.py: Use parent_window; get rid of parent; remove + unused code. + 2005-12-21 Richard Taylor * src/EditSource.py: fixed small mistake in display_references diff --git a/gramps2/src/DisplayState.py b/gramps2/src/DisplayState.py index 2a1997a8f..7993015b2 100644 --- a/gramps2/src/DisplayState.py +++ b/gramps2/src/DisplayState.py @@ -359,7 +359,7 @@ class ManagedWindow: def __init__(self,uistate,track,window_key,submenu_label,menu_label): """ Create child windows and add itself to menu, if not there already. - + The usage from derived classes is envisioned as follows: @@ -393,8 +393,28 @@ class ManagedWindow: self.menu_label = menu_label self.uistate = uistate self.track = self.uistate.gwm.add_item(track,self) + # Work out parent_window + if len(self.track) > 1: + # We don't belong to the lop level + if self.track[-1] > 0: + # If we are not the first in the group, + # then first in that same group is our parent + parent_item_track = self.track[:-1] + parent_item_track.append(0) + else: + # If we're first in the group, then our parent + # is the first in the group one level up + parent_item_track = self.track[:-2] + parent_item_track.append(0) - def close(self,obj=None): + # Based on the track, get item and then window object + self.parent_window = self.uistate.gwm.get_item_from_track( + parent_item_track).window + else: + # On the top level: we use gramps top window + self.parent_window = self.uistate.window + + def close(self,obj=None,obj2=None): """ Close itself. diff --git a/gramps2/src/EventEdit.py b/gramps2/src/EventEdit.py index 025350501..c2a803f8e 100644 --- a/gramps2/src/EventEdit.py +++ b/gramps2/src/EventEdit.py @@ -443,10 +443,6 @@ class EventRefEditor(DisplayState.ManagedWindow): self.state = state self.uistate = uistate self.referent = referent - #if self.parent.__dict__.has_key('child_windows'): - # self.win_parent = self.parent - #else: - # self.win_parent = self.parent.parent if event_ref: win_key = event_ref else: @@ -523,7 +519,7 @@ class EventRefEditor(DisplayState.ManagedWindow): "on_eer_help_clicked" : self.on_help_clicked, "on_eer_ok_clicked" : self.on_ok_clicked, "on_eer_cancel_clicked" : self.close, - "on_eer_delete_event" : self.on_delete_event, + "on_eer_delete_event" : self.close, }) if self.referent.__class__.__name__ == 'Person': @@ -610,51 +606,8 @@ class EventRefEditor(DisplayState.ManagedWindow): if self.event.get_media_list(): Utils.bold_label(self.gallery_label) - #self.add_itself_to_menu() - #try: - # self.window.set_transient_for(self.parent.window) - #except AttributeError: - # pass + self.window.set_transient_for(self.parent_window) self.window.show() - print "added track:", self.track - - def on_delete_event(self,obj,b): - #self.close_child_windows() - #self.remove_itself_from_menu() - self.close() - -# def close(self,obj): -# self.close_child_windows() -# self.remove_itself_from_menu() -# self.window.destroy() - - def close_child_windows(self): - for child_window in self.child_windows.values(): - child_window.close(None) - self.child_windows = {} - - def add_itself_to_menu(self): - self.win_parent.child_windows[self.win_key] = self - label = _('Event Reference') - self.parent_menu_item = gtk.MenuItem(label) - self.parent_menu_item.set_submenu(gtk.Menu()) - self.parent_menu_item.show() - self.win_parent.winsmenu.append(self.parent_menu_item) - self.winsmenu = self.parent_menu_item.get_submenu() - self.menu_item = gtk.MenuItem(self.title) - self.menu_item.connect("activate",self.present) - self.menu_item.show() - self.winsmenu.append(self.menu_item) - - def remove_itself_from_menu(self): - return - del self.win_parent.child_windows[self.win_key] - self.menu_item.destroy() - self.winsmenu.destroy() - self.parent_menu_item.destroy() - -# def present(self,obj): -# self.window.present() def on_help_clicked(self,obj): pass @@ -672,10 +625,11 @@ class EventRefEditor(DisplayState.ManagedWindow): eformat = self.preform.get_active() edesc = unicode(self.descr_field.get_text()) epriv = self.ev_privacy.get_active() + self.lists_changed = 0 self.update_event(etype,self.date,eplace_obj,edesc,enote,eformat, epriv,ecause) # event is a primary object, so its change has to be committed now - if self.parent.lists_changed: + if self.lists_changed: trans = self.db.transaction_begin() self.db.commit_event(self.event,trans) if self.event_added: @@ -700,27 +654,27 @@ class EventRefEditor(DisplayState.ManagedWindow): if place: if self.event.get_place_handle() != place.get_handle(): self.event.set_place_handle(place.get_handle()) - self.parent.lists_changed = 1 + self.lists_changed = 1 else: if self.event.get_place_handle(): self.event.set_place_handle("") - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_type() != the_type: self.event.set_type(the_type) - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_description() != desc: self.event.set_description(desc) - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_note() != note: self.event.set_note(note) - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_note_format() != format: self.event.set_note_format(format) - self.parent.lists_changed = 1 + self.lists_changed = 1 dobj = self.event.get_date_object() @@ -728,15 +682,15 @@ class EventRefEditor(DisplayState.ManagedWindow): if not dobj.is_equal(date): self.event.set_date_object(date) - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_cause() != cause: self.event.set_cause(cause) - self.parent.lists_changed = 1 + self.lists_changed = 1 if self.event.get_privacy() != priv: self.event.set_privacy(priv) - self.parent.lists_changed = 1 + self.lists_changed = 1 def on_switch_page(self,obj,a,page): buf = self.ev_note_field.get_buffer()