diff --git a/ChangeLog b/ChangeLog index 35b534311..1723811ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2003-11-06 Alex Roitman + * src/gramps_main.py (back_pressed, fwd_pressed): Pass event to the + build_menu functions; (build_backhistmenu, build_fwdhistmenu): Use + event for popping the menu. + + * NEWS, TODO: catch up with the current CVS state. + + * src/Utils.py (history_broken, clearHistory_broken, wasHistory_broken): + Add functions. + * src/plugins/ReorderIds.py(__init__): Call Utils.history_broken upon + reordering. + * src/gramps_main.py (clear_history): Add function; + (redraw_histmenu, fwd_clicked, back_clicked): Clear history if catching + an exception (should be actually handled by reorder plugin, leaving here + just in case); + (bookmark_callback): Display warning if catching an exception. Should + never be reached if reorder properly handles broken history. + 2003-11-05 Tim Waugh * src/PlaceView.py (PlaceView.goto): Scroll to found item. diff --git a/NEWS b/NEWS index 7793661fc..8ff4b8ab5 100644 --- a/NEWS +++ b/NEWS @@ -8,8 +8,15 @@ Version 0.98.0 * When choosing parents, select the spouse of the first selected person to make picking a family quicker. * Instant preferences. +* FreeBSD compatibility. * People and Relationships can now have sources not associated with any event +* Report options (paper size, orientation, style, and filter) are kept + within the session. +* Substantial speedups in updating display in tree views. +* Children are enumerated in Family View. +* ZODB backend is removed. Reald database backend is being worked on and will + appear in post-1.0 releases. * Bugfixes. Version 0.9.5 -- the "Fix me up" release diff --git a/TODO b/TODO index 9ba8ab51d..3f653f4a1 100644 --- a/TODO +++ b/TODO @@ -12,7 +12,6 @@ * Startup tips. * Date calculator. See http://sourceforge.net/mailarchive/forum.php?thread_id=3252078&forum_id=1993 -* Save report options settings. * Add sequence number to childlist in family view * Add string substitutions for web page generation (name, report name, date, etc). diff --git a/src/Utils.py b/src/Utils.py index 76997cbe6..268c78844 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -18,6 +18,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# $Id$ + #------------------------------------------------------------------------- # # Standard python modules @@ -56,6 +58,7 @@ from gettext import gettext as _ # #------------------------------------------------------------------------- _modifiedFlag = 0 +_history_brokenFlag = 0 _autotime_val = 1 _autosave_fun = None _autosave_tim = None @@ -94,6 +97,10 @@ def clear_timer(): gtk.timeout_remove(_autosave_tim) _autosave_tim = None +def history_broken(): + global _history_brokenFlag + _history_brokenFlag = 1 + #------------------------------------------------------------------------- # # force_unicode @@ -116,6 +123,10 @@ def clearModified(): global _modifiedFlag _modifiedFlag = 0 +def clearHistory_broken(): + global _history_brokenFlag + _history_brokenFlag = 0 + #------------------------------------------------------------------------- # # Returns the modified flag @@ -124,6 +135,9 @@ def clearModified(): def wasModified(): return _modifiedFlag +def wasHistory_broken(): + return _history_brokenFlag + #------------------------------------------------------------------------- # # Short hand function to return either the person's name, or an empty diff --git a/src/gramps_main.py b/src/gramps_main.py index 8512088b3..850fd1351 100755 --- a/src/gramps_main.py +++ b/src/gramps_main.py @@ -350,6 +350,16 @@ class Gramps: self.topWindow.show() self.enable_toolbar(self.use_toolbar) + def clear_history(self): + self.history = [] + self.mhistory = [] + self.hindex = -1 + self.back.set_sensitive(0) + self.forward.set_sensitive(0) + self.backbtn.set_sensitive(0) + self.fwdbtn.set_sensitive(0) + self.redraw_histmenu() + def redraw_histmenu(self): """Create the history submenu of the Go menu""" @@ -415,14 +425,12 @@ class Gramps: self.back.set_sensitive(0) self.forward.set_sensitive(0) except: - self.history = [] - self.back.set_sensitive(0) - self.forward.set_sensitive(0) + self.clear_history self.gomenuitem.remove_submenu() self.gomenuitem.set_submenu(gomenu) - def build_backhistmenu(self): + def build_backhistmenu(self,event): """Builds and displays the menu with the back portion of the history""" if self.hindex > 0: backhistmenu = gtk.Menu() @@ -445,13 +453,13 @@ class Gramps: item.show() backhistmenu.append(item) num = num + 1 - backhistmenu.popup(None,None,None,0,0) + backhistmenu.popup(None,None,None,event.button,event.time) def back_pressed(self,obj,event): if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: - self.build_backhistmenu() + self.build_backhistmenu(event) - def build_fwdhistmenu(self): + def build_fwdhistmenu(self,event): """Builds and displays the menu with the forward portion of the history""" if self.hindex < len(self.history)-1: fwdhistmenu = gtk.Menu() @@ -473,11 +481,11 @@ class Gramps: item.show() fwdhistmenu.append(item) num = num + 1 - fwdhistmenu.popup(None,None,None,0,0) + fwdhistmenu.popup(None,None,None,event.button,event.time) def fwd_pressed(self,obj,event): if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: - self.build_fwdhistmenu() + self.build_fwdhistmenu(event) def set_buttons(self,val): self.report_menu.set_sensitive(val) @@ -509,7 +517,7 @@ class Gramps: self.fwdbtn.set_sensitive(1) self.forward.set_sensitive(1) except: - self.set_buttons(0) + self.clear_history else: self.backbtn.set_sensitive(0) self.back.set_sensitive(0) @@ -535,9 +543,7 @@ class Gramps: self.backbtn.set_sensitive(1) self.back.set_sensitive(1) except: - self.backbtn.set_sensitive(1) - self.back.set_sensitive(1) - self.set_buttons(0) + self.clear_history else: self.fwdbtn.set_sensitive(0) self.forward.set_sensitive(0) @@ -893,6 +899,9 @@ class Gramps: def import_tool_callback(self): Utils.modified() self.people_view.clear_person_tabs() + if Utils.wasHistory_broken(): + self.clear_history() + Utils.clearHistory_broken() if not self.active_person: self.change_active_person(self.find_initial_person()) self.goto_active_person() @@ -1743,8 +1752,16 @@ class Gramps: self.bookmarks.edit() def bookmark_callback(self,obj,person): - self.change_active_person(person) - self.update_display(0) + old_person = self.active_person + try: + self.change_active_person(person) + self.update_display(0) + except TypeError: + WarningDialog(_("Could Not Go to a Person"), + _("Either stale bookmark or broken history caused by IDs reorder.")) + self.clear_history() + self.change_active_person(old_person) + self.update_display(0) def on_default_person_activate(self,obj): if self.active_person: diff --git a/src/plugins/ReorderIds.py b/src/plugins/ReorderIds.py index 923da6429..b6de2af04 100644 --- a/src/plugins/ReorderIds.py +++ b/src/plugins/ReorderIds.py @@ -1,7 +1,7 @@ # # Gramps - a GTK+/GNOME based genealogy program # -# Copyright (C) 2000 Donald N. Allingham +# Copyright (C) 2000-2003 Donald N. Allingham # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,6 +18,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# $Id$ + """ Change id IDs of all the elements in the database to conform to the scheme specified in the database's prefix ids @@ -49,6 +51,7 @@ class ReorderIds: self.reorder(db.getSourceMap(),db.sprefix,db.buildSourceDisplay) self.reorder(db.getPlaceMap(),db.pprefix,db.buildPlaceDisplay) Utils.modified() + Utils.history_broken() callback(1) def reorder(self,data_map,prefix,update):