From 04d0822569fd572664d6686afa2448456fbebec1 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Fri, 23 Dec 2005 05:35:32 +0000 Subject: [PATCH] * src/AddrEdit.py: More window management * src/AttrEdit.py: More window management * src/DisplayState.py: added push_message * src/EditPerson.py: More window management * src/ListBox.py: More window management * src/NameEdit.py: More window management * src/Navigation.py: More window management * src/PeopleModel.py: More window management * src/PersonView.py: More window management * src/ViewManager.py: better handling of ui and action groups svn: r5623 --- ChangeLog | 12 +++++++ src/AddrEdit.py | 76 ++++++++++++----------------------------- src/AttrEdit.py | 83 ++++++++++++++------------------------------- src/DisplayState.py | 6 +++- src/EditPerson.py | 8 +++-- src/ListBox.py | 21 ++++++------ src/NameEdit.py | 36 ++++++-------------- src/Navigation.py | 9 +++-- src/PeopleModel.py | 4 +-- src/PersonView.py | 2 +- src/ViewManager.py | 8 +++-- 11 files changed, 104 insertions(+), 161 deletions(-) diff --git a/ChangeLog b/ChangeLog index 43fa21b3a..dc7410974 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-12-22 Don Allingham + * src/AddrEdit.py: More window management + * src/AttrEdit.py: More window management + * src/DisplayState.py: added push_message + * src/EditPerson.py: More window management + * src/ListBox.py: More window management + * src/NameEdit.py: More window management + * src/Navigation.py: More window management + * src/PeopleModel.py: More window management + * src/PersonView.py: More window management + * src/ViewManager.py: better handling of ui and action groups + 2005-12-22 Alex Roitman * test/RunAllTests.py: Change header. * src/EventEdit.py: Fix build_ methods. diff --git a/src/AddrEdit.py b/src/AddrEdit.py index 844458a51..07943c7bb 100644 --- a/src/AddrEdit.py +++ b/src/AddrEdit.py @@ -53,6 +53,7 @@ import RelLib import Sources import DateEdit import DateHandler +import DisplayState import Spell from WindowUtils import GladeIf @@ -62,11 +63,11 @@ from WindowUtils import GladeIf # AddressEditor class # #------------------------------------------------------------------------- -class AddressEditor: +class AddressEditor(DisplayState.ManagedWindow): """ Displays a dialog that allows the user to edit an address. """ - def __init__(self,parent,addr,callback,parent_window=None): + def __init__(self, dbstate, uistate, track, addr, callback): """ Displays the dialog box. @@ -74,19 +75,15 @@ class AddressEditor: addr - The address that is to be edited """ - self.parent = parent - if addr: - if self.parent.child_windows.has_key(addr): - self.parent.child_windows[addr].present(None) - return - else: - self.win_key = addr - else: - self.win_key = self - self.db = self.parent.db - self.addr = addr + self.db = dbstate.db + self.uistate = uistate + self.dbstate = dbstate self.callback = callback - self.child_windows = {} + self.addr = addr + + DisplayState.ManagedWindow.__init__(self, uistate, track, addr) + if self.already_exist: + return # Get the important widgets from the glade description self.top = gtk.glade.XML(const.dialogFile, "addr_edit","gramps") @@ -151,9 +148,11 @@ class AddressEditor: Utils.unbold_label(self.general_label) self.addr_date_obj = Date.Date() self.srcreflist = [] + self.addr = RelLib.Address() self.switch_page() self.sourcetab = Sources.SourceTab( + self.dbstate, self.uistate, self.track, self.srcreflist, self, self.top, self.window, self.slist, self.top.get_widget('add_src'), self.top.get_widget('edit_src'), self.top.get_widget('del_src'), self.db.readonly) @@ -164,57 +163,29 @@ class AddressEditor: self.addr_date_obj, self.addr_start, date_stat, self.window) self.gladeif.connect('addr_edit','delete_event',self.on_delete_event) - self.gladeif.connect('button122','clicked',self.close) + self.gladeif.connect('button122','clicked',self.close_window) self.gladeif.connect('button121','clicked',self.ok_clicked) okbtn = self.top.get_widget('button121') okbtn.set_sensitive(not self.db.readonly) self.gladeif.connect('button129','clicked',self.on_help_clicked) self.gladeif.connect('notebook2','switch_page',self.on_switch_page) - if parent_window: - self.window.set_transient_for(parent_window) - self.add_itself_to_menu() + self.window.set_transient_for(self.parent_window) self.window.show() def on_delete_event(self,obj,b): - self.close_child_windows() - self.remove_itself_from_menu() self.gladeif.close() + self.close() gc.collect() - def close(self,obj): - self.close_child_windows() - self.remove_itself_from_menu() + def close_window(self,obj): self.gladeif.close() + self.close() self.window.destroy() gc.collect() - 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.parent.child_windows[self.win_key] = self - label = _('Address') - self.parent_menu_item = gtk.MenuItem(label) - self.parent_menu_item.set_submenu(gtk.Menu()) - self.parent_menu_item.show() - self.parent.winsmenu.append(self.parent_menu_item) - self.winsmenu = self.parent_menu_item.get_submenu() - self.menu_item = gtk.MenuItem(_('Address Editor')) - self.menu_item.connect("activate",self.present) - self.menu_item.show() - self.winsmenu.append(self.menu_item) - - def remove_itself_from_menu(self): - del self.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 build_menu_names(self,obj): + return (_('Address'),_('Address Editor')) def on_help_clicked(self,obj): """Display the relevant portion of GRAMPS manual""" @@ -237,28 +208,23 @@ class AddressEditor: format = self.preform.get_active() priv = self.priv.get_active() - if self.addr == None: - self.addr = RelLib.Address() - self.parent.plist.append(self.addr) self.addr.set_source_reference_list(self.srcreflist) self.update(date_obj,street,city,state,country,postal,phone,note,format,priv) self.callback(self.addr) - self.close(obj) + self.close_window(obj) def check(self,get,set,data): """Compares a data item, updates if necessary, and sets the parents lists_changed flag""" if get() != data: set(data) - self.parent.lists_changed = 1 def update(self,date_obj,street,city,state,country,postal,phone,note,format,priv): """Compares the data items, and updates if necessary""" if not self.addr.get_date_object().is_equal(date_obj): self.addr.set_date_object(date_obj) - self.parent.lists_changed = 1 self.check(self.addr.get_street,self.addr.set_street,street) self.check(self.addr.get_country,self.addr.set_country,country) diff --git a/src/AttrEdit.py b/src/AttrEdit.py index 2e70fefe9..505a0f19a 100644 --- a/src/AttrEdit.py +++ b/src/AttrEdit.py @@ -56,6 +56,7 @@ import AutoComp import RelLib import Spell import GrampsDisplay +import DisplayState from QuestionDialog import WarningDialog from WindowUtils import GladeIf @@ -65,12 +66,11 @@ from WindowUtils import GladeIf # AttributeEditor class # #------------------------------------------------------------------------- -class AttributeEditor: +class AttributeEditor(DisplayState.ManagedWindow): """ Displays a dialog that allows the user to edit an attribute. """ - def __init__(self, parent, attrib, title, data_list, callback, - parent_window=None): + def __init__(self, state, uistate, track, attrib, title, data_list, callback): """ Displays the dialog box. @@ -80,21 +80,18 @@ class AttributeEditor: list - list of options for the pop down menu """ - self.parent = parent - if attrib: - if self.parent.child_windows.has_key(attrib): - self.parent.child_windows[attrib].present(None) - return - else: - self.win_key = attrib - else: - self.win_key = self - self.db = self.parent.db + self.db = state.db self.attrib = attrib self.callback = callback - self.child_windows = {} + self.track = track + self.uistate = uistate + self.state = state self.alist = data_list + DisplayState.ManagedWindow.__init__(self, uistate, track, attrib) + if self.already_exist: + return + self.top = gtk.glade.XML(const.dialogFile, "attr_edit","gramps") self.slist = self.top.get_widget("slist") self.value_field = self.top.get_widget("attr_value") @@ -121,6 +118,7 @@ class AttributeEditor: self.srcreflist = [] self.sourcetab = Sources.SourceTab( + self.state, self.uistate, self.track, self.srcreflist, self, self.top, self.window, self.slist, self.top.get_widget('add_src'), self.top.get_widget('edit_src'), self.top.get_widget('del_src'), self.db.readonly) @@ -132,7 +130,7 @@ class AttributeEditor: l = self.top.get_widget("title") Utils.set_titles(self.window,l,title,_('Attribute Editor')) - if attrib != None: + if attrib: self.type_selector.set_values(attrib.get_type()) self.value_field.set_text(attrib.get_value()) self.priv.set_active(attrib.get_privacy()) @@ -146,10 +144,12 @@ class AttributeEditor: self.flowed.set_active(True) else: Utils.unbold_label(self.notes_label) - + else: + self.attrib = RelLib.Attribute() + self.gladeif = GladeIf(self.top) self.gladeif.connect('attr_edit','delete_event', self.on_delete_event) - self.gladeif.connect('button116', 'clicked', self.close) + self.gladeif.connect('button116', 'clicked', self.close_window) self.gladeif.connect('button115', 'clicked', self.on_ok_clicked) self.gladeif.connect('button127', 'clicked', self.on_help_clicked) self.gladeif.connect('notebook', 'switch_page', self.on_switch_page) @@ -164,57 +164,30 @@ class AttributeEditor: self.flowed.set_sensitive(False) self.preform.set_sensitive(False) - if parent_window: - self.window.set_transient_for(parent_window) - self.add_itself_to_menu() self.update_note_page() + self.window.set_transient_for(self.parent_window) self.window.show() def on_delete_event(self,obj,b): - self.close_child_windows() - self.remove_itself_from_menu() self.gladeif.close() + self.close() gc.collect() - def close(self,obj): - self.close_child_windows() - self.remove_itself_from_menu() + def close_window(self,obj): self.gladeif.close() + self.close() self.window.destroy() gc.collect() - 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.parent.child_windows[self.win_key] = self - if not self.attrib: + def build_menu_names(self, attrib): + if not attrib: label = _("New Attribute") else: - label = self.attrib.get_type()[1] + label = attrib.get_type()[1] if not label.strip(): label = _("New Attribute") label = "%s: %s" % (_('Attribute'),label) - self.parent_menu_item = gtk.MenuItem(label) - self.parent_menu_item.set_submenu(gtk.Menu()) - self.parent_menu_item.show() - self.parent.winsmenu.append(self.parent_menu_item) - self.winsmenu = self.parent_menu_item.get_submenu() - self.menu_item = gtk.MenuItem(_('Attribute Editor')) - self.menu_item.connect("activate",self.present) - self.menu_item.show() - self.winsmenu.append(self.menu_item) - - def remove_itself_from_menu(self): - del self.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() + return (label, _('Attribute Editor')) def on_help_clicked(self,obj): """Display the relevant portion of GRAMPS manual""" @@ -243,20 +216,16 @@ class AttributeEditor: self.alist.append(attr_data[1]) self.alist.sort() - if self.attrib == None: - self.attrib = RelLib.Attribute() - self.parent.alist.append(self.attrib) self.attrib.set_source_reference_list(self.srcreflist) self.update(attr_data,value,note,format,priv) self.callback(self.attrib) - self.close(obj) + self.close_window(obj) def check(self,get,set,data): """Compares a data item, updates if necessary, and sets the parents lists_changed flag""" if get() != data: set(data) - self.parent.lists_changed = 1 def update(self,attr_data,value,note,format,priv): """Compares the data items, and updates if necessary""" diff --git a/src/DisplayState.py b/src/DisplayState.py index 0396df925..6b8101f1e 100644 --- a/src/DisplayState.py +++ b/src/DisplayState.py @@ -132,7 +132,7 @@ class History(GrampsDb.GrampsDBCallback): # #------------------------------------------------------------------------- -_win_top = '' +_win_top = '' _win_btm = '' DISABLED = -1 @@ -464,6 +464,10 @@ class DisplayState(GrampsDb.GrampsDBCallback): self.phistory = History() self.gwm = GrampsWindowManager(uimanager) + def push_message(self, text): + self.status_text(text) + gobject.timeout_add(5000,self.modify_statusbar) + def modify_statusbar(self,active=None): self.status.pop(self.status_id) if self.dbstate.active == None: diff --git a/src/EditPerson.py b/src/EditPerson.py index 27920a8d9..966036d3a 100644 --- a/src/EditPerson.py +++ b/src/EditPerson.py @@ -313,7 +313,7 @@ class EditPerson(DisplayState.ManagedWindow): self.person, self.addr_list, self.addr_label, [addr_add_btn, addr_edit_btn, addr_delete_btn]) - self.name_box = ListBox.NameListBox( state, uistate, self.track, + self.name_box = ListBox.NameListBox(state, uistate, self.track, self.person, self.name_list, self.names_label, [name_add_btn, name_edit_btn, name_delete_btn]) @@ -1030,6 +1030,10 @@ class EditPerson(DisplayState.ManagedWindow): changed = False name = self.person.get_primary_name() + for item in [ self.event_box, self.attr_box, self.addr_box, + self.name_box, self.url_box] : + if len(item.get_changed_objects()) > 0: + changed = True #TODO#if self.complete.get_active() != self.person.get_complete_flag(): # changed = True @@ -1366,7 +1370,7 @@ class EditPerson(DisplayState.ManagedWindow): self.pname.set_first_name(unicode(self.given.get_text())) self.pname.set_title(unicode(self.title.get_text())) - NameEdit.NameEditor(self, self.pname, self.update_name, self.window) + NameEdit.NameEditor(self.state, self.uistate, self.track, self.pname, self) def update_name(self,name): self.write_primary_name() diff --git a/src/ListBox.py b/src/ListBox.py index 4e3083e6a..2cfd188ff 100644 --- a/src/ListBox.py +++ b/src/ListBox.py @@ -265,16 +265,16 @@ class AttrListBox(ReorderListBox): def add(self,obj): """Brings up the AttributeEditor for a new attribute""" - AttrEdit.AttributeEditor(state, uistate, None, self.name, - self.attr_dict, + AttrEdit.AttributeEditor(self.state, self.uistate, self.track, + None, self.name, self.attr_dict, self.edit_callback) def update(self,obj): store,node = self.list_model.get_selected() if node: attr = self.list_model.get_object(node) - AttrEdit.AttributeEditor(state,uistate, attr, self.name, - self.attr_dict, + AttrEdit.AttributeEditor(self.state, self.uistate, self.track, + attr, self.name, self.attr_dict, self.edit_callback) def display_data(self,attr): @@ -451,7 +451,7 @@ class EventListBox(ReorderListBox): class NameListBox(ReorderListBox): - def __init__(self,state,uistate,track,person,obj,label,button_list): + def __init__(self, state, uistate, track, person, obj, label, button_list): surnames = state.db.get_surname_list() @@ -499,14 +499,15 @@ class NameListBox(ReorderListBox): self.data[index].set_suffix(value) def add(self,obj): - NameEdit.NameEditor(self.state, self.uistate, None, self.track) + NameEdit.NameEditor(self.state, self.uistate, self.track, + None, self.edit_callback) def update(self,obj): store,node = self.list_model.get_selected() if node: - NameEdit.NameEditor(self.state, self.uistate, + NameEdit.NameEditor(self.state, self.uistate, self.track, self.list_model.get_object(node), - self.track) + self.edit_callback) def display_data(self,name): has_note = name.get_note() @@ -565,14 +566,14 @@ class AddressListBox(ReorderListBox): self.data[index].set_country(value) def add(self,obj): - AddrEdit.AddressEditor(self.state,self.uistate, None, + AddrEdit.AddressEditor(self.state, self.uistate, self.track, None, self.edit_callback) def update(self,obj): store,node = self.list_model.get_selected() if node: item = self.list_model.get_object(node) - AddrEdit.AddressEditor(self.state,self.uistate, item, + AddrEdit.AddressEditor(self.state, self.uistate, self.track, item, self.edit_callback) def display_data(self,item): diff --git a/src/NameEdit.py b/src/NameEdit.py index 7a922c454..66faffe79 100644 --- a/src/NameEdit.py +++ b/src/NameEdit.py @@ -63,11 +63,12 @@ from WindowUtils import GladeIf #------------------------------------------------------------------------- class NameEditor(DisplayState.ManagedWindow): - def __init__(self,dbstate,uistate,name,track): + def __init__(self, dbstate, uistate, track, name, callback): self.db = dbstate.db self.uistate = uistate self.state = dbstate + self.callback = callback DisplayState.ManagedWindow.__init__(self, uistate, track, name) if self.already_exist: @@ -101,6 +102,7 @@ class NameEditor(DisplayState.ManagedWindow): else: self.srcreflist = [] self.date_obj = Date.Date() + self.name = RelLib.Name() self.date.set_text(DateHandler.displayer.display(self.date_obj)) @@ -158,7 +160,7 @@ class NameEditor(DisplayState.ManagedWindow): self.note_buffer = self.note_field.get_buffer() self.gladeif.connect('name_edit','delete_event',self.on_delete_event) - self.gladeif.connect('button119','clicked',self.close) + self.gladeif.connect('button119','clicked',self.close_window) self.gladeif.connect('button118','clicked',self.on_name_edit_ok_clicked) okbtn = self.top.get_widget('button118') okbtn.set_sensitive(not self.db.readonly) @@ -206,7 +208,8 @@ class NameEditor(DisplayState.ManagedWindow): def build_menu_names(self,name): if name: - submenu_label = _('%s: %s') % (_('Name',NameDisplay.displayer.display(name))) + ntext = NameDisplay.displayer.display_name(name) + submenu_label = _('%s: %s') % (_('Name'),ntext) else: submenu_label = _('New Name') menu_label = _('Name Editor') @@ -234,10 +237,12 @@ class NameEditor(DisplayState.ManagedWindow): def on_delete_event(self,*obj): self.gladeif.close() + self.close() gc.collect() - def close(self,*obj): + def close_window(self,*obj): self.gladeif.close() + self.close() self.window.destroy() gc.collect() @@ -265,10 +270,6 @@ class NameEditor(DisplayState.ManagedWindow): # if not mtype: # mtype = "Also Known As" - if self.name == None: - self.name = RelLib.Name() - self.parent.nlist.append(self.name) - self.name.set_date_object(self.date_obj) self.name.set_source_reference_list(self.srcreflist) @@ -278,20 +279,16 @@ class NameEditor(DisplayState.ManagedWindow): if self.name.get_display_as() != self.display_as.get_active(): self.name.set_display_as(self.display_as.get_active()) - self.parent.lists_changed = 1 prefix = unicode(self.prefix_field.get_text()) if self.name.get_surname_prefix() != prefix: self.name.set_surname_prefix(prefix) - self.parent.lists_changed = 1 if self.name.get_sort_as() != self.sort_as.get_active(): self.name.set_sort_as(self.sort_as.get_active()) - self.parent.lists_changed = 1 if not self.group_over.get_active(): self.name.set_group_as("") - self.parent.lists_changed = 1 elif self.name.get_group_as() != grp_as: if grp_as not in self.db.get_name_group_keys(): from QuestionDialog import QuestionDialog2 @@ -309,50 +306,39 @@ class NameEditor(DisplayState.ManagedWindow): self.db.set_name_group_mapping(srn,grp_as) else: self.name.set_group_as(grp_as) - self.parent.lists_changed = 1 self.update_name(first,last,suffix,patronymic,title,the_type,note,format,priv) - self.parent.lists_changed = 1 - - self.close(obj) + self.callback(self.name) + self.close_window(obj) def update_name(self,first,last,suffix,patronymic,title,the_type,note,format,priv): if self.name.get_first_name() != first: self.name.set_first_name(first) - self.parent.lists_changed = 1 if self.name.get_surname() != last: self.name.set_surname(last) - self.parent.lists_changed = 1 if self.name.get_suffix() != suffix: self.name.set_suffix(suffix) - self.parent.lists_changed = 1 if self.name.get_patronymic() != patronymic: self.name.set_patronymic(patronymic) - self.parent.lists_changed = 1 if self.name.get_title() != title: self.name.set_title(title) - self.parent.lists_changed = 1 if self.name.get_type() != the_type: self.name.set_type(the_type) - self.parent.lists_changed = 1 if self.name.get_note() != note: self.name.set_note(note) - self.parent.lists_changed = 1 if self.name.get_note_format() != format: self.name.set_note_format(format) - self.parent.lists_changed = 1 if self.name.get_privacy() != priv: self.name.set_privacy(priv) - self.parent.lists_changed = 1 def on_switch_page(self,obj,a,page): start = self.note_buffer.get_start_iter() diff --git a/src/Navigation.py b/src/Navigation.py index 4d0b43b67..60061835b 100644 --- a/src/Navigation.py +++ b/src/Navigation.py @@ -65,8 +65,9 @@ class BaseNavigation: """ Enables the UI and action groups """ - self.uistate.uimanager.insert_action_group(self.action_group, 1) - self.active = self.uistate.uimanager.add_ui_from_string(self.ui) + if self.active == DISABLED: + self.uistate.uimanager.insert_action_group(self.action_group, 1) + self.active = self.uistate.uimanager.add_ui_from_string(self.ui) def build_item_name(self,handle): """ @@ -81,9 +82,7 @@ class BaseNavigation: """ self.items = items - if self.active != DISABLED: - self.uistate.uimanager.remove_ui(self.active) - self.uistate.uimanager.remove_action_group(self.action_group) + self.disable() data = map(lambda x: '' % (self.title,x), range(0,len(items))) self.ui = _top + "".join(data) + _btm diff --git a/src/PeopleModel.py b/src/PeopleModel.py index 4521bc2dd..b9da6f21c 100644 --- a/src/PeopleModel.py +++ b/src/PeopleModel.py @@ -383,9 +383,9 @@ class PeopleModel(gtk.GenericTreeModel): return cgi.escape(place_title) for event_ref in data[_EVENT_COL]: + event = self.db.get_event_from_handle(event_ref.ref) etype = event.get_type()[0] if etype in [Event.BAPTISM, Event.CHRISTEN]: - event = self.db.get_event_from_handle(event_ref.ref) place_handle = event.get_place_handle() if place_handle: place_title = self.db.get_place_from_handle(place_handle).get_title() @@ -405,9 +405,9 @@ class PeopleModel(gtk.GenericTreeModel): return cgi.escape(place_title) for event_ref in data[_EVENT_COL]: + event = self.db.get_event_from_handle(event_ref.ref) etype = event.get_type()[0] if etype in [Event.BURIAL, Event.CREMATION]: - event = self.db.get_event_from_handle(event_ref.ref) place_handle = event.get_place_handle() if place_handle: place_title = self.db.get_place_from_handle(place_handle).get_title() diff --git a/src/PersonView.py b/src/PersonView.py index ef61839b1..ff5f47d15 100644 --- a/src/PersonView.py +++ b/src/PersonView.py @@ -284,7 +284,7 @@ class PersonView(PageView.PersonNavView): self.tree.scroll_to_cell(path,None,1,0.5,0) except KeyError: self.selection.unselect_all() - print "Person not currently available due to filter" + self.uistate.push_message(_("Active person not visible")) self.dbstate.active = p # disable the inactive flag diff --git a/src/ViewManager.py b/src/ViewManager.py index 993ad109a..e902efb29 100644 --- a/src/ViewManager.py +++ b/src/ViewManager.py @@ -392,7 +392,7 @@ class ViewManager: for mergeid in self.merge_ids: self.uimanager.remove_ui(mergeid) - + if self.active_page: groups = self.active_page.get_actions() for grp in groups: @@ -416,10 +416,12 @@ class ViewManager: ui = self.active_page.ui_definition() self.merge_ids = [self.uimanager.add_ui_from_string(ui)] - + for ui in self.active_page.additional_ui_definitions(): mergeid = self.uimanager.add_ui_from_string(ui) self.merge_ids.append(mergeid) + while gtk.events_pending(): + gtk.main_iteration() self.pages[num].change_page() @@ -717,7 +719,7 @@ class ViewManager: self.bookmarks.add(self.active_person.get_handle()) name = NameDisplay.displayer.display(self.active_person) self.status_text(_("%s has been bookmarked") % name) - gtk.timeout_add(5000,self.modify_statusbar) + gobject.timeout_add(5000,self.modify_statusbar) else: WarningDialog(_("Could Not Set a Bookmark"), _("A bookmark could not be set because "