* src/EditSource.py (display_references): Check for elapsed time
and return control to the main loop after 0.1 sec from the idle callback; convert callback to being able to store its state and continue from the middle. svn: r5366
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2005-11-06 Alex Roitman <shura@gramps-project.org>
|
||||||
|
* src/EditSource.py (display_references): Check for elapsed time
|
||||||
|
and return control to the main loop after 0.1 sec from the idle
|
||||||
|
callback; convert callback to being able to store its state and
|
||||||
|
continue from the middle.
|
||||||
|
|
||||||
2005-11-05 Alex Roitman <shura@gramps-project.org>
|
2005-11-05 Alex Roitman <shura@gramps-project.org>
|
||||||
* src/PluginMgr.py: Add the optional argument indicating the
|
* src/PluginMgr.py: Add the optional argument indicating the
|
||||||
unsupported status to all registrations.
|
unsupported status to all registrations.
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
import gc
|
import gc
|
||||||
|
import time
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@@ -190,10 +191,17 @@ class EditSource:
|
|||||||
self.top.set_transient_for(parent_window)
|
self.top.set_transient_for(parent_window)
|
||||||
self.add_itself_to_menu()
|
self.add_itself_to_menu()
|
||||||
self.top.show()
|
self.top.show()
|
||||||
|
self.person_list = []
|
||||||
|
self.family_list = []
|
||||||
|
self.event_list = []
|
||||||
|
self.place_list = []
|
||||||
|
self.source_list = []
|
||||||
|
self.media_list = []
|
||||||
if self.ref_not_loaded:
|
if self.ref_not_loaded:
|
||||||
self.ref_not_loaded = 0
|
self.ref_not_loaded = 0
|
||||||
Utils.temp_label(self.refs_label,self.top)
|
Utils.temp_label(self.refs_label,self.top)
|
||||||
gobject.idle_add(self.display_references)
|
self.cursor_type = None
|
||||||
|
gobject.idle_add(self.disp_references)
|
||||||
self.data_sel = self.datalist.get_selection()
|
self.data_sel = self.datalist.get_selection()
|
||||||
|
|
||||||
def on_add_data_clicked(self,widget):
|
def on_add_data_clicked(self,widget):
|
||||||
@@ -302,13 +310,108 @@ class EditSource:
|
|||||||
ImageSelect.GlobalMediaProperties(self.db,media,self)
|
ImageSelect.GlobalMediaProperties(self.db,media,self)
|
||||||
|
|
||||||
def display_references(self):
|
def display_references(self):
|
||||||
|
ct = time.time()
|
||||||
(person_list,family_list,event_list,
|
source_handle = self.source.get_handle()
|
||||||
place_list,source_list,media_list
|
|
||||||
) = Utils.get_source_referents(self.source.get_handle(),self.db)
|
|
||||||
|
|
||||||
any = person_list or family_list or event_list \
|
if not self.cursor_type:
|
||||||
or place_list or source_list or media_list
|
self.cursor_type = 'Person'
|
||||||
|
self.cursor = self.db.get_person_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Person':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.Person()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.person_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
self.cursor_type = 'Family'
|
||||||
|
self.cursor = self.db.get_family_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Family':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.Family()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.family_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
self.cursor_type = 'Event'
|
||||||
|
self.cursor = self.db.get_event_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Event':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.Event()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.event_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
self.cursor_type = 'Place'
|
||||||
|
self.cursor = self.db.get_place_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Place':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.Place()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.place_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
self.cursor_type = 'Source'
|
||||||
|
self.cursor = self.db.get_source_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Source':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.Source()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.source_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
self.cursor_type = 'Media'
|
||||||
|
self.cursor = self.db.get_media_cursor()
|
||||||
|
self.data = self.cursor.first()
|
||||||
|
|
||||||
|
if self.cursor_type == 'Media':
|
||||||
|
while self.data:
|
||||||
|
handle,val = self.data
|
||||||
|
obj = RelLib.MediaObject()
|
||||||
|
obj.unserialize(val)
|
||||||
|
if obj.has_source_reference(source_handle):
|
||||||
|
self.media_list.append(handle)
|
||||||
|
self.data = self.cursor.next()
|
||||||
|
if time.time() - ct > 0.1:
|
||||||
|
return True
|
||||||
|
self.cursor.close()
|
||||||
|
|
||||||
|
any = self.person_list or self.family_list or self.event_list \
|
||||||
|
or self.place_list or self.source_list or self.media_list
|
||||||
|
|
||||||
slist = self.top_window.get_widget('slist')
|
slist = self.top_window.get_widget('slist')
|
||||||
|
|
||||||
@@ -316,37 +419,37 @@ class EditSource:
|
|||||||
|
|
||||||
self.model = ListModel.ListModel(slist,titles,event_func=self.button_press)
|
self.model = ListModel.ListModel(slist,titles,event_func=self.button_press)
|
||||||
|
|
||||||
for handle in person_list:
|
for handle in self.person_list:
|
||||||
person = self.db.get_person_from_handle(handle)
|
person = self.db.get_person_from_handle(handle)
|
||||||
name = self.name_display(person)
|
name = self.name_display(person)
|
||||||
gramps_id = person.get_gramps_id()
|
gramps_id = person.get_gramps_id()
|
||||||
self.model.add([_("Person"),gramps_id,name],(0,handle))
|
self.model.add([_("Person"),gramps_id,name],(0,handle))
|
||||||
|
|
||||||
for handle in family_list:
|
for handle in self.family_list:
|
||||||
family = self.db.get_family_from_handle(handle)
|
family = self.db.get_family_from_handle(handle)
|
||||||
name = Utils.family_name(family,self.db)
|
name = Utils.family_name(family,self.db)
|
||||||
gramps_id = family.get_gramps_id()
|
gramps_id = family.get_gramps_id()
|
||||||
self.model.add([_("Family"),gramps_id,name],(1,handle))
|
self.model.add([_("Family"),gramps_id,name],(1,handle))
|
||||||
|
|
||||||
for handle in event_list:
|
for handle in self.event_list:
|
||||||
event = self.db.get_event_from_handle(handle)
|
event = self.db.get_event_from_handle(handle)
|
||||||
name = event.get_name()
|
name = event.get_name()
|
||||||
gramps_id = event.get_gramps_id()
|
gramps_id = event.get_gramps_id()
|
||||||
self.model.add([_("Event"),gramps_id,name],(2,handle))
|
self.model.add([_("Event"),gramps_id,name],(2,handle))
|
||||||
|
|
||||||
for handle in place_list:
|
for handle in self.place_list:
|
||||||
place = self.db.get_place_from_handle(handle)
|
place = self.db.get_place_from_handle(handle)
|
||||||
name = place.get_title()
|
name = place.get_title()
|
||||||
gramps_id = place.get_gramps_id()
|
gramps_id = place.get_gramps_id()
|
||||||
self.model.add([_("Place"),gramps_id,name],(3,handle))
|
self.model.add([_("Place"),gramps_id,name],(3,handle))
|
||||||
|
|
||||||
for handle in source_list:
|
for handle in self.source_list:
|
||||||
source = self.db.get_source_from_handle(handle)
|
source = self.db.get_source_from_handle(handle)
|
||||||
name = source.get_title()
|
name = source.get_title()
|
||||||
gramps_id = source.get_gramps_id()
|
gramps_id = source.get_gramps_id()
|
||||||
self.model.add([_("Source"),gramps_id,name],(4,handle))
|
self.model.add([_("Source"),gramps_id,name],(4,handle))
|
||||||
|
|
||||||
for handle in media_list:
|
for handle in self.media_list:
|
||||||
media = self.db.get_object_from_handle(handle)
|
media = self.db.get_object_from_handle(handle)
|
||||||
name = media.get_description()
|
name = media.get_description()
|
||||||
gramps_id = media.get_gramps_id()
|
gramps_id = media.get_gramps_id()
|
||||||
@@ -359,6 +462,14 @@ class EditSource:
|
|||||||
|
|
||||||
self.ref_not_loaded = 0
|
self.ref_not_loaded = 0
|
||||||
|
|
||||||
|
self.person_list = []
|
||||||
|
self.family_list = []
|
||||||
|
self.event_list = []
|
||||||
|
self.place_list = []
|
||||||
|
self.source_list = []
|
||||||
|
self.media_list = []
|
||||||
|
return False
|
||||||
|
|
||||||
def on_source_apply_clicked(self,obj):
|
def on_source_apply_clicked(self,obj):
|
||||||
|
|
||||||
title = unicode(self.title.get_text())
|
title = unicode(self.title.get_text())
|
||||||
@@ -414,6 +525,12 @@ class EditSource:
|
|||||||
elif page == 3 and self.ref_not_loaded:
|
elif page == 3 and self.ref_not_loaded:
|
||||||
self.ref_not_loaded = 0
|
self.ref_not_loaded = 0
|
||||||
Utils.temp_label(self.refs_label,self.top)
|
Utils.temp_label(self.refs_label,self.top)
|
||||||
|
self.person_list = []
|
||||||
|
self.family_list = []
|
||||||
|
self.event_list = []
|
||||||
|
self.place_list = []
|
||||||
|
self.source_list = []
|
||||||
|
self.media_list = []
|
||||||
gobject.idle_add(self.display_references)
|
gobject.idle_add(self.display_references)
|
||||||
text = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
text = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
||||||
self.notes_buffer.get_end_iter(),False))
|
self.notes_buffer.get_end_iter(),False))
|
||||||
|
Reference in New Issue
Block a user